Imported Upstream version 1.15 upstream/1.15
authorSuchang Woo <suchang.woo@samsung.com>
Wed, 2 Dec 2015 09:52:27 +0000 (18:52 +0900)
committerSuchang Woo <suchang.woo@samsung.com>
Wed, 2 Dec 2015 09:52:27 +0000 (18:52 +0900)
571 files changed:
.clcopying [new file with mode: 0644]
ABOUT-NLS [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
COPYING.LIB [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
FAQ [new file with mode: 0644]
GNUmakefile [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
Makefile.in [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
THANKS [new file with mode: 0644]
TODO [new file with mode: 0644]
aclocal.m4 [new file with mode: 0644]
build-aux/config.guess [new file with mode: 0755]
build-aux/config.rpath [new file with mode: 0755]
build-aux/config.sub [new file with mode: 0755]
build-aux/csharpcomp.sh.in [new file with mode: 0644]
build-aux/depcomp [new file with mode: 0755]
build-aux/gendocs.sh [new file with mode: 0644]
build-aux/gnupload [new file with mode: 0755]
build-aux/install-sh [new file with mode: 0755]
build-aux/link-warning.h [new file with mode: 0644]
build-aux/ltmain.sh [new file with mode: 0755]
build-aux/mdate-sh [new file with mode: 0755]
build-aux/missing [new file with mode: 0755]
build-aux/pmccabe.css [new file with mode: 0644]
build-aux/pmccabe2html [new file with mode: 0755]
build-aux/texinfo.tex [new file with mode: 0644]
build-aux/useless-if-before-free [new file with mode: 0755]
build-aux/vc-list-files [new file with mode: 0755]
cfg.mk [new file with mode: 0644]
config.h.in [new file with mode: 0644]
configure [new file with mode: 0755]
configure.ac [new file with mode: 0644]
contrib/README [new file with mode: 0644]
contrib/doxygen/Doxyfile.in [new file with mode: 0644]
contrib/doxygen/Doxyfile.orig [new file with mode: 0644]
contrib/doxygen/gdoc2doxygen [new file with mode: 0755]
contrib/idn-python/Makefile [new file with mode: 0644]
contrib/idn-python/README [new file with mode: 0644]
contrib/idn-python/idn.c [new file with mode: 0644]
contrib/idn-python/test.py [new file with mode: 0644]
contrib/java/ExampleIDNA.java [new file with mode: 0644]
contrib/java/IDNA.c [new file with mode: 0644]
contrib/java/IDNA.java [new file with mode: 0644]
contrib/java/Makefile.am [new file with mode: 0644]
contrib/java/README [new file with mode: 0644]
contrib/java/autogen.sh [new file with mode: 0755]
contrib/java/configure.ac [new file with mode: 0644]
contrib/web/idn.php [new file with mode: 0644]
csharp/AssemblyInfo.cs [new file with mode: 0644]
csharp/CombiningClass.cs [new file with mode: 0644]
csharp/Composition.cs [new file with mode: 0644]
csharp/DecompositionKeys.cs [new file with mode: 0644]
csharp/DecompositionMappings.cs [new file with mode: 0644]
csharp/IDNA.cs [new file with mode: 0644]
csharp/IDNAException.cs [new file with mode: 0644]
csharp/Makefile.am [new file with mode: 0644]
csharp/Makefile.in [new file with mode: 0644]
csharp/NFKC.cs [new file with mode: 0644]
csharp/Punycode.cs [new file with mode: 0644]
csharp/PunycodeException.cs [new file with mode: 0644]
csharp/RFC3454.cs [new file with mode: 0644]
csharp/Stringprep.cs [new file with mode: 0644]
csharp/StringprepException.cs [new file with mode: 0644]
csharp/generate/AssemblyInfo.cs [new file with mode: 0644]
csharp/generate/GenerateNFKC.cs [new file with mode: 0644]
csharp/generate/GenerateRFC3454.cs [new file with mode: 0644]
csharp/generate/HashSet.cs [new file with mode: 0644]
csharp/generate/Program.cs [new file with mode: 0644]
csharp/generate/Tokenizer.cs [new file with mode: 0644]
csharp/libidn.csproj [new file with mode: 0644]
csharp/libidn.csproj.user [new file with mode: 0644]
csharp/libidn.sln [new file with mode: 0644]
csharp/libidn.suo [new file with mode: 0644]
csharp/libidn_PPC.csdproj [new file with mode: 0644]
csharp/libidn_PPC.csdproj.user [new file with mode: 0644]
csharp/libidn_PPC.sln [new file with mode: 0644]
csharp/libidn_PPC.suo [new file with mode: 0644]
doc/Makefile.am [new file with mode: 0644]
doc/Makefile.gdoc [new file with mode: 0644]
doc/Makefile.gdoci [new file with mode: 0644]
doc/Makefile.in [new file with mode: 0644]
doc/components.fig [new file with mode: 0644]
doc/cyclo/Makefile.am [new file with mode: 0644]
doc/cyclo/Makefile.in [new file with mode: 0644]
doc/cyclo/cyclo-libidn.html [new file with mode: 0644]
doc/fdl-1.3.texi [new file with mode: 0644]
doc/gdoc [new file with mode: 0755]
doc/gpl-3.0.texi [new file with mode: 0644]
doc/idn.1 [new file with mode: 0644]
doc/java/Makefile.am [new file with mode: 0644]
doc/java/Makefile.in [new file with mode: 0644]
doc/java/about.html [new file with mode: 0644]
doc/java/alphaindex.html [new file with mode: 0644]
doc/java/deprecated.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/CombiningClass.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/Composition.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/DecompositionKeys.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/DecompositionMappings.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/IDNA.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/IDNAException.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/NFKC.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/Punycode.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/PunycodeException.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/RFC3454.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/Stringprep.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/StringprepException.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/classes.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/package-summary.html [new file with mode: 0644]
doc/java/gnu/inet/encoding/tree.html [new file with mode: 0644]
doc/java/index.html [new file with mode: 0644]
doc/java/package-list [new file with mode: 0644]
doc/java/resources/gjdoc.js [new file with mode: 0644]
doc/java/resources/gjdochtml-clean-color1.css [new file with mode: 0644]
doc/java/resources/gjdochtml-clean-layout.css [new file with mode: 0644]
doc/java/resources/inherit.png [new file with mode: 0644]
doc/java/serialized-form.html [new file with mode: 0644]
doc/lgpl-2.1.texi [new file with mode: 0644]
doc/libidn-components.eps [new file with mode: 0644]
doc/libidn-components.pdf [new file with mode: 0644]
doc/libidn-components.png [new file with mode: 0644]
doc/libidn.html [new file with mode: 0644]
doc/libidn.info [new file with mode: 0644]
doc/libidn.pdf [new file with mode: 0644]
doc/libidn.ps [new file with mode: 0644]
doc/libidn.texi [new file with mode: 0644]
doc/man/idn_free.3 [new file with mode: 0644]
doc/man/idna_strerror.3 [new file with mode: 0644]
doc/man/idna_to_ascii_4i.3 [new file with mode: 0644]
doc/man/idna_to_ascii_4z.3 [new file with mode: 0644]
doc/man/idna_to_ascii_8z.3 [new file with mode: 0644]
doc/man/idna_to_ascii_lz.3 [new file with mode: 0644]
doc/man/idna_to_unicode_44i.3 [new file with mode: 0644]
doc/man/idna_to_unicode_4z4z.3 [new file with mode: 0644]
doc/man/idna_to_unicode_8z4z.3 [new file with mode: 0644]
doc/man/idna_to_unicode_8z8z.3 [new file with mode: 0644]
doc/man/idna_to_unicode_8zlz.3 [new file with mode: 0644]
doc/man/idna_to_unicode_lzlz.3 [new file with mode: 0644]
doc/man/pr29_4.3 [new file with mode: 0644]
doc/man/pr29_4z.3 [new file with mode: 0644]
doc/man/pr29_8z.3 [new file with mode: 0644]
doc/man/pr29_strerror.3 [new file with mode: 0644]
doc/man/punycode_decode.3 [new file with mode: 0644]
doc/man/punycode_encode.3 [new file with mode: 0644]
doc/man/punycode_strerror.3 [new file with mode: 0644]
doc/man/stringprep.3 [new file with mode: 0644]
doc/man/stringprep_4i.3 [new file with mode: 0644]
doc/man/stringprep_4zi.3 [new file with mode: 0644]
doc/man/stringprep_check_version.3 [new file with mode: 0644]
doc/man/stringprep_convert.3 [new file with mode: 0644]
doc/man/stringprep_locale_charset.3 [new file with mode: 0644]
doc/man/stringprep_locale_to_utf8.3 [new file with mode: 0644]
doc/man/stringprep_profile.3 [new file with mode: 0644]
doc/man/stringprep_strerror.3 [new file with mode: 0644]
doc/man/stringprep_ucs4_nfkc_normalize.3 [new file with mode: 0644]
doc/man/stringprep_ucs4_to_utf8.3 [new file with mode: 0644]
doc/man/stringprep_unichar_to_utf8.3 [new file with mode: 0644]
doc/man/stringprep_utf8_nfkc_normalize.3 [new file with mode: 0644]
doc/man/stringprep_utf8_to_locale.3 [new file with mode: 0644]
doc/man/stringprep_utf8_to_ucs4.3 [new file with mode: 0644]
doc/man/stringprep_utf8_to_unichar.3 [new file with mode: 0644]
doc/man/tld_check_4.3 [new file with mode: 0644]
doc/man/tld_check_4t.3 [new file with mode: 0644]
doc/man/tld_check_4tz.3 [new file with mode: 0644]
doc/man/tld_check_4z.3 [new file with mode: 0644]
doc/man/tld_check_8z.3 [new file with mode: 0644]
doc/man/tld_check_lz.3 [new file with mode: 0644]
doc/man/tld_default_table.3 [new file with mode: 0644]
doc/man/tld_get_4.3 [new file with mode: 0644]
doc/man/tld_get_4z.3 [new file with mode: 0644]
doc/man/tld_get_table.3 [new file with mode: 0644]
doc/man/tld_get_z.3 [new file with mode: 0644]
doc/man/tld_strerror.3 [new file with mode: 0644]
doc/reference/Makefile.am [new file with mode: 0644]
doc/reference/Makefile.in [new file with mode: 0644]
doc/reference/html/ch01.html [new file with mode: 0644]
doc/reference/html/home.png [new file with mode: 0644]
doc/reference/html/index.html [new file with mode: 0644]
doc/reference/html/index.sgml [new file with mode: 0644]
doc/reference/html/left.png [new file with mode: 0644]
doc/reference/html/libidn-components.png [new file with mode: 0644]
doc/reference/html/libidn-idn-free.html [new file with mode: 0644]
doc/reference/html/libidn-idna.html [new file with mode: 0644]
doc/reference/html/libidn-pr29.html [new file with mode: 0644]
doc/reference/html/libidn-punycode.html [new file with mode: 0644]
doc/reference/html/libidn-stringprep.html [new file with mode: 0644]
doc/reference/html/libidn-tld.html [new file with mode: 0644]
doc/reference/html/libidn.devhelp [new file with mode: 0644]
doc/reference/html/libidn.devhelp2 [new file with mode: 0644]
doc/reference/html/right.png [new file with mode: 0644]
doc/reference/html/style.css [new file with mode: 0644]
doc/reference/html/up.png [new file with mode: 0644]
doc/reference/libidn-docs.sgml [new file with mode: 0644]
doc/reference/libidn-overrides.txt [new file with mode: 0644]
doc/reference/libidn-sections.txt [new file with mode: 0644]
doc/reference/libidn.types [new file with mode: 0644]
doc/reference/tmpl/idn-free.sgml [new file with mode: 0644]
doc/reference/tmpl/idna.sgml [new file with mode: 0644]
doc/reference/tmpl/intprops.sgml [new file with mode: 0644]
doc/reference/tmpl/libidn-unused.sgml [new file with mode: 0644]
doc/reference/tmpl/pr29.sgml [new file with mode: 0644]
doc/reference/tmpl/punycode.sgml [new file with mode: 0644]
doc/reference/tmpl/stringprep.sgml [new file with mode: 0644]
doc/reference/tmpl/tld.sgml [new file with mode: 0644]
doc/reference/tmpl/verify.sgml [new file with mode: 0644]
doc/reference/xml/api-index-deprecated.xml [new file with mode: 0644]
doc/reference/xml/api-index-full.xml [new file with mode: 0644]
doc/reference/xml/idn-free.xml [new file with mode: 0644]
doc/reference/xml/idna.xml [new file with mode: 0644]
doc/reference/xml/intprops.xml [new file with mode: 0644]
doc/reference/xml/pr29.xml [new file with mode: 0644]
doc/reference/xml/punycode.xml [new file with mode: 0644]
doc/reference/xml/stringprep.xml [new file with mode: 0644]
doc/reference/xml/tld.xml [new file with mode: 0644]
doc/reference/xml/verify.xml [new file with mode: 0644]
doc/specifications/BidiMirroring-3.2.0.txt [new file with mode: 0644]
doc/specifications/COPYING.UCD [new file with mode: 0644]
doc/specifications/CaseFolding-3.2.0.txt [new file with mode: 0644]
doc/specifications/CompositionExclusions-3.2.0.txt [new file with mode: 0644]
doc/specifications/LineBreak-3.2.0.txt [new file with mode: 0644]
doc/specifications/Makefile.am [new file with mode: 0644]
doc/specifications/Makefile.in [new file with mode: 0644]
doc/specifications/SpecialCasing-3.2.0.txt [new file with mode: 0644]
doc/specifications/UnicodeData-3.2.0.txt [new file with mode: 0644]
doc/specifications/rfc3454.txt [new file with mode: 0644]
doc/stamp-vti [new file with mode: 0644]
doc/texi/idn-free.c.texi [new file with mode: 0644]
doc/texi/idn_free.texi [new file with mode: 0644]
doc/texi/idna.c.texi [new file with mode: 0644]
doc/texi/idna_strerror.texi [new file with mode: 0644]
doc/texi/idna_to_ascii_4i.texi [new file with mode: 0644]
doc/texi/idna_to_ascii_4z.texi [new file with mode: 0644]
doc/texi/idna_to_ascii_8z.texi [new file with mode: 0644]
doc/texi/idna_to_ascii_lz.texi [new file with mode: 0644]
doc/texi/idna_to_unicode_44i.texi [new file with mode: 0644]
doc/texi/idna_to_unicode_4z4z.texi [new file with mode: 0644]
doc/texi/idna_to_unicode_8z4z.texi [new file with mode: 0644]
doc/texi/idna_to_unicode_8z8z.texi [new file with mode: 0644]
doc/texi/idna_to_unicode_8zlz.texi [new file with mode: 0644]
doc/texi/idna_to_unicode_lzlz.texi [new file with mode: 0644]
doc/texi/nfkc.c.texi [new file with mode: 0644]
doc/texi/pr29.c.texi [new file with mode: 0644]
doc/texi/pr29_4.texi [new file with mode: 0644]
doc/texi/pr29_4z.texi [new file with mode: 0644]
doc/texi/pr29_8z.texi [new file with mode: 0644]
doc/texi/pr29_strerror.texi [new file with mode: 0644]
doc/texi/punycode.c.texi [new file with mode: 0644]
doc/texi/punycode_decode.texi [new file with mode: 0644]
doc/texi/punycode_encode.texi [new file with mode: 0644]
doc/texi/punycode_strerror.texi [new file with mode: 0644]
doc/texi/strerror-idna.c.texi [new file with mode: 0644]
doc/texi/strerror-pr29.c.texi [new file with mode: 0644]
doc/texi/strerror-punycode.c.texi [new file with mode: 0644]
doc/texi/strerror-stringprep.c.texi [new file with mode: 0644]
doc/texi/strerror-tld.c.texi [new file with mode: 0644]
doc/texi/stringprep.c.texi [new file with mode: 0644]
doc/texi/stringprep.texi [new file with mode: 0644]
doc/texi/stringprep_4i.texi [new file with mode: 0644]
doc/texi/stringprep_4zi.texi [new file with mode: 0644]
doc/texi/stringprep_check_version.texi [new file with mode: 0644]
doc/texi/stringprep_convert.texi [new file with mode: 0644]
doc/texi/stringprep_locale_charset.texi [new file with mode: 0644]
doc/texi/stringprep_locale_to_utf8.texi [new file with mode: 0644]
doc/texi/stringprep_profile.texi [new file with mode: 0644]
doc/texi/stringprep_strerror.texi [new file with mode: 0644]
doc/texi/stringprep_ucs4_nfkc_normalize.texi [new file with mode: 0644]
doc/texi/stringprep_ucs4_to_utf8.texi [new file with mode: 0644]
doc/texi/stringprep_unichar_to_utf8.texi [new file with mode: 0644]
doc/texi/stringprep_utf8_nfkc_normalize.texi [new file with mode: 0644]
doc/texi/stringprep_utf8_to_locale.texi [new file with mode: 0644]
doc/texi/stringprep_utf8_to_ucs4.texi [new file with mode: 0644]
doc/texi/stringprep_utf8_to_unichar.texi [new file with mode: 0644]
doc/texi/tld.c.texi [new file with mode: 0644]
doc/texi/tld_check_4.texi [new file with mode: 0644]
doc/texi/tld_check_4t.texi [new file with mode: 0644]
doc/texi/tld_check_4tz.texi [new file with mode: 0644]
doc/texi/tld_check_4z.texi [new file with mode: 0644]
doc/texi/tld_check_8z.texi [new file with mode: 0644]
doc/texi/tld_check_lz.texi [new file with mode: 0644]
doc/texi/tld_default_table.texi [new file with mode: 0644]
doc/texi/tld_get_4.texi [new file with mode: 0644]
doc/texi/tld_get_4z.texi [new file with mode: 0644]
doc/texi/tld_get_table.texi [new file with mode: 0644]
doc/texi/tld_get_z.texi [new file with mode: 0644]
doc/texi/tld_strerror.texi [new file with mode: 0644]
doc/texi/toutf8.c.texi [new file with mode: 0644]
doc/texi/version.c.texi [new file with mode: 0644]
doc/texinfo.css [new file with mode: 0644]
doc/tld/Makefile.am [new file with mode: 0644]
doc/tld/Makefile.in [new file with mode: 0644]
doc/tld/README [new file with mode: 0644]
doc/tld/fr.tld [new file with mode: 0644]
doc/tld/no.tld [new file with mode: 0644]
doc/version.texi [new file with mode: 0644]
examples/Makefile.am [new file with mode: 0644]
examples/Makefile.in [new file with mode: 0644]
examples/README [new file with mode: 0644]
examples/example.c [new file with mode: 0644]
examples/example2.c [new file with mode: 0644]
examples/example3.c [new file with mode: 0644]
examples/example4.c [new file with mode: 0644]
examples/example5.c [new file with mode: 0644]
gl/Makefile.am [new file with mode: 0644]
gl/Makefile.in [new file with mode: 0644]
gl/errno.in.h [new file with mode: 0644]
gl/error.c [new file with mode: 0644]
gl/error.h [new file with mode: 0644]
gl/getopt.c [new file with mode: 0644]
gl/getopt.in.h [new file with mode: 0644]
gl/getopt1.c [new file with mode: 0644]
gl/getopt_int.h [new file with mode: 0644]
gl/gettext.h [new file with mode: 0644]
gl/intprops.h [new file with mode: 0644]
gl/m4/00gnulib.m4 [new file with mode: 0644]
gl/m4/autobuild.m4 [new file with mode: 0644]
gl/m4/csharp.m4 [new file with mode: 0644]
gl/m4/csharpcomp.m4 [new file with mode: 0644]
gl/m4/errno_h.m4 [new file with mode: 0644]
gl/m4/error.m4 [new file with mode: 0644]
gl/m4/extensions.m4 [new file with mode: 0644]
gl/m4/getopt.m4 [new file with mode: 0644]
gl/m4/gnulib-cache.m4 [new file with mode: 0644]
gl/m4/gnulib-common.m4 [new file with mode: 0644]
gl/m4/gnulib-comp.m4 [new file with mode: 0644]
gl/m4/include_next.m4 [new file with mode: 0644]
gl/m4/manywarnings.m4 [new file with mode: 0644]
gl/m4/pmccabe2html.m4 [new file with mode: 0644]
gl/m4/stdarg.m4 [new file with mode: 0644]
gl/m4/strerror.m4 [new file with mode: 0644]
gl/m4/string_h.m4 [new file with mode: 0644]
gl/m4/unistd_h.m4 [new file with mode: 0644]
gl/m4/version-etc.m4 [new file with mode: 0644]
gl/m4/warnings.m4 [new file with mode: 0644]
gl/progname.c [new file with mode: 0644]
gl/progname.h [new file with mode: 0644]
gl/stdarg.in.h [new file with mode: 0644]
gl/strerror.c [new file with mode: 0644]
gl/string.in.h [new file with mode: 0644]
gl/unistd.in.h [new file with mode: 0644]
gl/version-etc.c [new file with mode: 0644]
gl/version-etc.h [new file with mode: 0644]
gltests/Makefile.am [new file with mode: 0644]
gltests/Makefile.in [new file with mode: 0644]
gltests/test-errno.c [new file with mode: 0644]
gltests/test-strerror.c [new file with mode: 0644]
gltests/test-string.c [new file with mode: 0644]
gltests/test-unistd.c [new file with mode: 0644]
gltests/test-vc-list-files-cvs.sh [new file with mode: 0755]
gltests/test-vc-list-files-git.sh [new file with mode: 0755]
gtk-doc.make [new file with mode: 0644]
java/Makefile.am [new file with mode: 0644]
java/Makefile.in [new file with mode: 0644]
java/gnu/Makefile.am [new file with mode: 0644]
java/gnu/Makefile.in [new file with mode: 0644]
java/gnu/inet/Makefile.am [new file with mode: 0644]
java/gnu/inet/Makefile.in [new file with mode: 0644]
java/gnu/inet/encoding/CombiningClass.java [new file with mode: 0644]
java/gnu/inet/encoding/Composition.java [new file with mode: 0644]
java/gnu/inet/encoding/DecompositionKeys.java [new file with mode: 0644]
java/gnu/inet/encoding/DecompositionMappings.java [new file with mode: 0644]
java/gnu/inet/encoding/IDNA.java [new file with mode: 0644]
java/gnu/inet/encoding/IDNAException.java [new file with mode: 0644]
java/gnu/inet/encoding/Makefile.am [new file with mode: 0644]
java/gnu/inet/encoding/Makefile.in [new file with mode: 0644]
java/gnu/inet/encoding/NFKC.java [new file with mode: 0644]
java/gnu/inet/encoding/Punycode.java [new file with mode: 0644]
java/gnu/inet/encoding/PunycodeException.java [new file with mode: 0644]
java/gnu/inet/encoding/RFC3454.java [new file with mode: 0644]
java/gnu/inet/encoding/Stringprep.java [new file with mode: 0644]
java/gnu/inet/encoding/StringprepException.java [new file with mode: 0644]
java/libidn-1.15.jar [new file with mode: 0644]
java/misc/GenerateNFKC.java [new file with mode: 0644]
java/misc/GenerateRFC3454.java [new file with mode: 0644]
java/misc/Makefile.am [new file with mode: 0644]
java/misc/Makefile.in [new file with mode: 0644]
java/misc/TestIDNA.java [new file with mode: 0644]
java/misc/TestNFKC.java [new file with mode: 0644]
lib/Makefile.am [new file with mode: 0644]
lib/Makefile.in [new file with mode: 0644]
lib/gen-stringprep-tables.pl [new file with mode: 0755]
lib/gen-tld-tables.pl [new file with mode: 0755]
lib/gen-unicode-tables.pl [new file with mode: 0755]
lib/gl/Makefile.am [new file with mode: 0644]
lib/gl/Makefile.in [new file with mode: 0644]
lib/gl/c-ctype.c [new file with mode: 0644]
lib/gl/c-ctype.h [new file with mode: 0644]
lib/gl/c-strcase.h [new file with mode: 0644]
lib/gl/c-strcasecmp.c [new file with mode: 0644]
lib/gl/c-strncasecmp.c [new file with mode: 0644]
lib/gl/gettext.h [new file with mode: 0644]
lib/gl/iconv.in.h [new file with mode: 0644]
lib/gl/iconv_open-aix.gperf [new file with mode: 0644]
lib/gl/iconv_open-aix.h [new file with mode: 0644]
lib/gl/iconv_open-hpux.gperf [new file with mode: 0644]
lib/gl/iconv_open-hpux.h [new file with mode: 0644]
lib/gl/iconv_open-irix.gperf [new file with mode: 0644]
lib/gl/iconv_open-irix.h [new file with mode: 0644]
lib/gl/iconv_open-osf.gperf [new file with mode: 0644]
lib/gl/iconv_open-osf.h [new file with mode: 0644]
lib/gl/iconv_open.c [new file with mode: 0644]
lib/gl/m4/gnulib-cache.m4 [new file with mode: 0644]
lib/gl/m4/gnulib-comp.m4 [new file with mode: 0644]
lib/gl/m4/iconv_h.m4 [new file with mode: 0644]
lib/gl/m4/iconv_open.m4 [new file with mode: 0644]
lib/gl/m4/ld-output-def.m4 [new file with mode: 0644]
lib/gl/m4/ld-version-script.m4 [new file with mode: 0644]
lib/gl/m4/locale-fr.m4 [new file with mode: 0644]
lib/gl/m4/locale-tr.m4 [new file with mode: 0644]
lib/gl/m4/multiarch.m4 [new file with mode: 0644]
lib/gl/m4/stdbool.m4 [new file with mode: 0644]
lib/gl/m4/stdint.m4 [new file with mode: 0644]
lib/gl/m4/strverscmp.m4 [new file with mode: 0644]
lib/gl/m4/wchar.m4 [new file with mode: 0644]
lib/gl/stdbool.in.h [new file with mode: 0644]
lib/gl/stdint.in.h [new file with mode: 0644]
lib/gl/striconv.c [new file with mode: 0644]
lib/gl/striconv.h [new file with mode: 0644]
lib/gl/string.in.h [new file with mode: 0644]
lib/gl/strverscmp.c [new file with mode: 0644]
lib/gl/wchar.in.h [new file with mode: 0644]
lib/gltests/Makefile.am [new file with mode: 0644]
lib/gltests/Makefile.in [new file with mode: 0644]
lib/gltests/dummy.c [new file with mode: 0644]
lib/gltests/intprops.h [new file with mode: 0644]
lib/gltests/test-c-ctype.c [new file with mode: 0644]
lib/gltests/test-c-strcase.sh [new file with mode: 0755]
lib/gltests/test-c-strcasecmp.c [new file with mode: 0644]
lib/gltests/test-c-strncasecmp.c [new file with mode: 0644]
lib/gltests/test-iconv.c [new file with mode: 0644]
lib/gltests/test-stdbool.c [new file with mode: 0644]
lib/gltests/test-stdint.c [new file with mode: 0644]
lib/gltests/test-striconv.c [new file with mode: 0644]
lib/gltests/test-string.c [new file with mode: 0644]
lib/gltests/test-strverscmp.c [new file with mode: 0644]
lib/gltests/test-wchar.c [new file with mode: 0644]
lib/gltests/verify.h [new file with mode: 0644]
lib/gunibreak.h [new file with mode: 0644]
lib/gunicomp.h [new file with mode: 0644]
lib/gunidecomp.h [new file with mode: 0644]
lib/idn-free.c [new file with mode: 0644]
lib/idn-free.h [new file with mode: 0644]
lib/idna.c [new file with mode: 0644]
lib/idna.h [new file with mode: 0644]
lib/libidn.map [new file with mode: 0644]
lib/nfkc.c [new file with mode: 0644]
lib/pr29.c [new file with mode: 0644]
lib/pr29.h [new file with mode: 0644]
lib/profiles.c [new file with mode: 0644]
lib/punycode.c [new file with mode: 0644]
lib/punycode.h [new file with mode: 0644]
lib/rfc3454.c [new file with mode: 0644]
lib/strerror-idna.c [new file with mode: 0644]
lib/strerror-pr29.c [new file with mode: 0644]
lib/strerror-punycode.c [new file with mode: 0644]
lib/strerror-stringprep.c [new file with mode: 0644]
lib/strerror-tld.c [new file with mode: 0644]
lib/stringprep.c [new file with mode: 0644]
lib/stringprep.h [new file with mode: 0644]
lib/tld.c [new file with mode: 0644]
lib/tld.h [new file with mode: 0644]
lib/tlds.c [new file with mode: 0644]
lib/toutf8.c [new file with mode: 0644]
lib/version.c [new file with mode: 0644]
libc/README [new file with mode: 0644]
libc/example.c [new file with mode: 0644]
libc/getaddrinfo-idn.txt [new file with mode: 0644]
libidn.pc.in [new file with mode: 0644]
m4/ac_prog_jar.m4 [new file with mode: 0644]
m4/codeset.m4 [new file with mode: 0644]
m4/gettext.m4 [new file with mode: 0644]
m4/gtk-doc.m4 [new file with mode: 0644]
m4/iconv.m4 [new file with mode: 0644]
m4/intlmacosx.m4 [new file with mode: 0644]
m4/lib-ld.m4 [new file with mode: 0644]
m4/lib-link.m4 [new file with mode: 0644]
m4/lib-prefix.m4 [new file with mode: 0644]
m4/libtool.m4 [new file with mode: 0644]
m4/longlong.m4 [new file with mode: 0644]
m4/ltoptions.m4 [new file with mode: 0644]
m4/ltsugar.m4 [new file with mode: 0644]
m4/ltversion.m4 [new file with mode: 0644]
m4/lt~obsolete.m4 [new file with mode: 0644]
m4/nls.m4 [new file with mode: 0644]
m4/pkg.m4 [new file with mode: 0644]
m4/po.m4 [new file with mode: 0644]
m4/progtest.m4 [new file with mode: 0644]
m4/update-header-version.m4 [new file with mode: 0644]
m4/valgrind.m4 [new file with mode: 0644]
m4/visibility.m4 [new file with mode: 0644]
m4/wchar_t.m4 [new file with mode: 0644]
m4/wint_t.m4 [new file with mode: 0644]
maint.mk [new file with mode: 0644]
po/LINGUAS [new file with mode: 0644]
po/Makefile.in.in [new file with mode: 0644]
po/Makevars [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/Rules-quot [new file with mode: 0644]
po/boldquot.sed [new file with mode: 0644]
po/cs.gmo [new file with mode: 0644]
po/cs.po [new file with mode: 0644]
po/da.gmo [new file with mode: 0644]
po/da.po [new file with mode: 0644]
po/de.gmo [new file with mode: 0644]
po/de.po [new file with mode: 0644]
po/en@boldquot.gmo [new file with mode: 0644]
po/en@boldquot.header [new file with mode: 0644]
po/en@boldquot.po [new file with mode: 0644]
po/en@quot.gmo [new file with mode: 0644]
po/en@quot.header [new file with mode: 0644]
po/en@quot.po [new file with mode: 0644]
po/eo.gmo [new file with mode: 0644]
po/eo.po [new file with mode: 0644]
po/fi.gmo [new file with mode: 0644]
po/fi.po [new file with mode: 0644]
po/fr.gmo [new file with mode: 0644]
po/fr.po [new file with mode: 0644]
po/id.gmo [new file with mode: 0644]
po/id.po [new file with mode: 0644]
po/insert-header.sin [new file with mode: 0644]
po/it.gmo [new file with mode: 0644]
po/it.po [new file with mode: 0644]
po/ja.gmo [new file with mode: 0644]
po/ja.po [new file with mode: 0644]
po/libidn.pot [new file with mode: 0644]
po/nl.gmo [new file with mode: 0644]
po/nl.po [new file with mode: 0644]
po/pl.gmo [new file with mode: 0644]
po/pl.po [new file with mode: 0644]
po/quot.sed [new file with mode: 0644]
po/remove-potcdate.sin [new file with mode: 0644]
po/ro.gmo [new file with mode: 0644]
po/ro.po [new file with mode: 0644]
po/sr.gmo [new file with mode: 0644]
po/sr.po [new file with mode: 0644]
po/stamp-po [new file with mode: 0644]
po/vi.gmo [new file with mode: 0644]
po/vi.po [new file with mode: 0644]
po/zh_CN.gmo [new file with mode: 0644]
po/zh_CN.po [new file with mode: 0644]
src/Makefile.am [new file with mode: 0644]
src/Makefile.in [new file with mode: 0644]
src/idn.c [new file with mode: 0644]
src/idn.ggo [new file with mode: 0644]
src/idn_cmd.c [new file with mode: 0644]
src/idn_cmd.h [new file with mode: 0644]
src/idna.el [new file with mode: 0644]
src/punycode.el [new file with mode: 0644]
tests/Makefile.am [new file with mode: 0644]
tests/Makefile.in [new file with mode: 0644]
tests/tst_idna.c [new file with mode: 0644]
tests/tst_idna2.c [new file with mode: 0644]
tests/tst_nfkc.c [new file with mode: 0644]
tests/tst_pr29.c [new file with mode: 0644]
tests/tst_punycode.c [new file with mode: 0644]
tests/tst_strerror.c [new file with mode: 0644]
tests/tst_stringprep.c [new file with mode: 0644]
tests/tst_tld.c [new file with mode: 0644]
tests/tst_toutf8.c [new file with mode: 0644]
tests/utils.c [new file with mode: 0644]
tests/utils.h [new file with mode: 0644]
win32/include/ac-stdint.h [new file with mode: 0644]
win32/include/config.h [new file with mode: 0644]
win32/include/idn-int.h [new file with mode: 0644]
win32/include/stdbool.h [new file with mode: 0644]
win32/include/unistd.h [new file with mode: 0644]
win32/libidn.sln [new file with mode: 0644]
win32/libidn.vcproj [new file with mode: 0644]

diff --git a/.clcopying b/.clcopying
new file mode 100644 (file)
index 0000000..17a550c
--- /dev/null
@@ -0,0 +1,7 @@
+       -----
+
+       Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+
+       Copying and distribution of this file, with or without
+       modification, are permitted provided the copyright notice
+       and this notice are preserved.
diff --git a/ABOUT-NLS b/ABOUT-NLS
new file mode 100644 (file)
index 0000000..83bc72e
--- /dev/null
+++ b/ABOUT-NLS
@@ -0,0 +1,1068 @@
+1 Notes on the Free Translation Project
+***************************************
+
+Free software is going international!  The Free Translation Project is
+a way to get maintainers of free software, translators, and users all
+together, so that free software will gradually become able to speak many
+languages.  A few packages already provide translations for their
+messages.
+
+   If you found this `ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU `gettext' internally,
+itself available at your nearest GNU archive site.  But you do _not_
+need to install GNU `gettext' prior to configuring, installing or using
+this package with messages translated.
+
+   Installers will find here some useful hints.  These notes also
+explain how users should proceed for getting the programs to use the
+available translations.  They tell how people wanting to contribute and
+work on translations can contact the appropriate team.
+
+   When reporting bugs in the `intl/' directory or bugs which may be
+related to internationalization, you should tell about the version of
+`gettext' which is used.  The information can be found in the
+`intl/VERSION' file, in internationalized packages.
+
+1.1 Quick configuration advice
+==============================
+
+If you want to exploit the full power of internationalization, you
+should configure it using
+
+     ./configure --with-included-gettext
+
+to force usage of internationalizing routines provided within this
+package, despite the existence of internationalizing capabilities in the
+operating system where this package is being installed.  So far, only
+the `gettext' implementation in the GNU C library version 2 provides as
+many features (such as locale alias, message inheritance, automatic
+charset conversion or plural form handling) as the implementation here.
+It is also not possible to offer this additional functionality on top
+of a `catgets' implementation.  Future versions of GNU `gettext' will
+very likely convey even more functionality.  So it might be a good idea
+to change to GNU `gettext' as soon as possible.
+
+   So you need _not_ provide this option if you are using GNU libc 2 or
+you have installed a recent copy of the GNU gettext package with the
+included `libintl'.
+
+1.2 INSTALL Matters
+===================
+
+Some packages are "localizable" when properly installed; the programs
+they contain can be made to speak your own native language.  Most such
+packages use GNU `gettext'.  Other packages have their own ways to
+internationalization, predating GNU `gettext'.
+
+   By default, this package will be installed to allow translation of
+messages.  It will automatically detect whether the system already
+provides the GNU `gettext' functions.  If not, the included GNU
+`gettext' library will be used.  This library is wholly contained
+within this package, usually in the `intl/' subdirectory, so prior
+installation of the GNU `gettext' package is _not_ required.
+Installers may use special options at configuration time for changing
+the default behaviour.  The commands:
+
+     ./configure --with-included-gettext
+     ./configure --disable-nls
+
+will, respectively, bypass any pre-existing `gettext' to use the
+internationalizing routines provided within this package, or else,
+_totally_ disable translation of messages.
+
+   When you already have GNU `gettext' installed on your system and run
+configure without an option for your new package, `configure' will
+probably detect the previously built and installed `libintl.a' file and
+will decide to use this.  This might not be desirable.  You should use
+the more recent version of the GNU `gettext' library.  I.e. if the file
+`intl/VERSION' shows that the library which comes with this package is
+more recent, you should use
+
+     ./configure --with-included-gettext
+
+to prevent auto-detection.
+
+   The configuration process will not test for the `catgets' function
+and therefore it will not be used.  The reason is that even an
+emulation of `gettext' on top of `catgets' could not provide all the
+extensions of the GNU `gettext' library.
+
+   Internationalized packages usually have many `po/LL.po' files, where
+LL gives an ISO 639 two-letter code identifying the language.  Unless
+translations have been forbidden at `configure' time by using the
+`--disable-nls' switch, all available translations are installed
+together with the package.  However, the environment variable `LINGUAS'
+may be set, prior to configuration, to limit the installed set.
+`LINGUAS' should then contain a space separated list of two-letter
+codes, stating which languages are allowed.
+
+1.3 Using This Package
+======================
+
+As a user, if your language has been installed for this package, you
+only have to set the `LANG' environment variable to the appropriate
+`LL_CC' combination.  If you happen to have the `LC_ALL' or some other
+`LC_xxx' environment variables set, you should unset them before
+setting `LANG', otherwise the setting of `LANG' will not have the
+desired effect.  Here `LL' is an ISO 639 two-letter language code, and
+`CC' is an ISO 3166 two-letter country code.  For example, let's
+suppose that you speak German and live in Germany.  At the shell
+prompt, merely execute `setenv LANG de_DE' (in `csh'),
+`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
+This can be done from your `.login' or `.profile' file, once and for
+all.
+
+   You might think that the country code specification is redundant.
+But in fact, some languages have dialects in different countries.  For
+example, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The
+country code serves to distinguish the dialects.
+
+   The locale naming convention of `LL_CC', with `LL' denoting the
+language and `CC' denoting the country, is the one use on systems based
+on GNU libc.  On other systems, some variations of this scheme are
+used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
+locales supported by your system for your language by running the
+command `locale -a | grep '^LL''.
+
+   Not all programs have translations for all languages.  By default, an
+English message is shown in place of a nonexistent translation.  If you
+understand other languages, you can set up a priority list of languages.
+This is done through a different environment variable, called
+`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'
+for the purpose of message handling, but you still need to have `LANG'
+set to the primary language; this is required by other parts of the
+system libraries.  For example, some Swedish users who would rather
+read translations in German than English for when Swedish is not
+available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+
+   Special advice for Norwegian users: The language code for Norwegian
+bokma*l changed from `no' to `nb' recently (in 2003).  During the
+transition period, while some message catalogs for this language are
+installed under `nb' and some older ones under `no', it's recommended
+for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
+older translations are used.
+
+   In the `LANGUAGE' environment variable, but not in the `LANG'
+environment variable, `LL_CC' combinations can be abbreviated as `LL'
+to denote the language's main dialect.  For example, `de' is equivalent
+to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
+(Portuguese as spoken in Portugal) in this context.
+
+1.4 Translating Teams
+=====================
+
+For the Free Translation Project to be a success, we need interested
+people who like their own language and write it well, and who are also
+able to synergize with other translators speaking the same language.
+Each translation team has its own mailing list.  The up-to-date list of
+teams can be found at the Free Translation Project's homepage,
+`http://translationproject.org/', in the "Teams" area.
+
+   If you'd like to volunteer to _work_ at translating messages, you
+should become a member of the translating team for your own language.
+The subscribing address is _not_ the same as the list itself, it has
+`-request' appended.  For example, speakers of Swedish can send a
+message to `sv-request@li.org', having this message body:
+
+     subscribe
+
+   Keep in mind that team members are expected to participate
+_actively_ in translations, or at solving translational difficulties,
+rather than merely lurking around.  If your team does not exist yet and
+you want to start one, or if you are unsure about what to do or how to
+get started, please write to `coordinator@translationproject.org' to
+reach the coordinator for all translator teams.
+
+   The English team is special.  It works at improving and uniformizing
+the terminology in use.  Proven linguistic skills are praised more than
+programming skills, here.
+
+1.5 Available Packages
+======================
+
+Languages are not equally supported in all packages.  The following
+matrix shows the current state of internationalization, as of November
+2007.  The matrix shows, in regard of each package, for which languages
+PO files have been submitted to translation coordination, with a
+translation percentage of at least 50%.
+
+     Ready PO files       af am ar az be bg bs ca cs cy da de el en en_GB eo
+                        +----------------------------------------------------+
+     Compendium         |                      []       [] []        []      |
+     a2ps               |             []                [] [] []     []      |
+     aegis              |                                  ()                |
+     ant-phone          |                                  ()                |
+     anubis             |                                  []                |
+     ap-utils           |                                                    |
+     aspell             |                      [] []    [] []        []      |
+     bash               |                                                 [] |
+     bfd                |                                                    |
+     bibshelf           |                                  []                |
+     binutils           |                                                    |
+     bison              |                               [] []                |
+     bison-runtime      |                                  []                |
+     bluez-pin          | []                      []       [] []          [] |
+     cflow              |                               []                   |
+     clisp              |                               [] []    []          |
+     console-tools      |                         []       []                |
+     coreutils          |                []    [] []       []                |
+     cpio               |                                                    |
+     cpplib             |                      []       [] []                |
+     cryptonit          |                                  []                |
+     dialog             |                                                    |
+     diffutils          |                      [] []    [] [] []          [] |
+     doodle             |                                  []                |
+     e2fsprogs          |                         []       []                |
+     enscript           |                      []       [] []        []      |
+     fetchmail          |                      []       [] () []     []      |
+     findutils          |                []                                  |
+     findutils_stable   |                []    []       []                   |
+     flex               |                      []       [] []                |
+     fslint             |                                                    |
+     gas                |                                                    |
+     gawk               |                      []       [] []                |
+     gcal               |                      []                            |
+     gcc                |                                  []                |
+     gettext-examples   | []                   []          [] []          [] |
+     gettext-runtime    |             []       []       [] []             [] |
+     gettext-tools      |                      []          []                |
+     gip                |                []                                  |
+     gliv               |                []                []                |
+     glunarclock        |                []                                  |
+     gmult              | []                               []                |
+     gnubiff            |                                  ()                |
+     gnucash            |                      [] []       () ()     []      |
+     gnuedu             |                                                    |
+     gnulib             |                []                                  |
+     gnunet             |                                                    |
+     gnunet-gtk         |                                                    |
+     gnutls             |                                  []                |
+     gpe-aerial         |                         []       []                |
+     gpe-beam           |                         []       []                |
+     gpe-calendar       |                                                    |
+     gpe-clock          |                         []       []                |
+     gpe-conf           |                         []       []                |
+     gpe-contacts       |                                                    |
+     gpe-edit           |                         []                         |
+     gpe-filemanager    |                                                    |
+     gpe-go             |                         []                         |
+     gpe-login          |                         []       []                |
+     gpe-ownerinfo      |                         []       []                |
+     gpe-package        |                                                    |
+     gpe-sketchbook     |                         []       []                |
+     gpe-su             |                         []       []                |
+     gpe-taskmanager    |                         []       []                |
+     gpe-timesheet      |                         []                         |
+     gpe-today          |                         []       []                |
+     gpe-todo           |                                                    |
+     gphoto2            |                         []    [] []        []      |
+     gprof              |                               [] []                |
+     gpsdrive           |                                                    |
+     gramadoir          | []                               []                |
+     grep               |                         []                      [] |
+     gretl              |                                  ()                |
+     gsasl              |                                                    |
+     gss                |                                                    |
+     gst-plugins-bad    |                []             []                   |
+     gst-plugins-base   |                []             []                   |
+     gst-plugins-good   |                []    []       []                   |
+     gst-plugins-ugly   |                []             []                   |
+     gstreamer          | []             []    [] []    [] []        []      |
+     gtick              |                                  ()                |
+     gtkam              |             []          []    [] []                |
+     gtkorphan          |                []                []                |
+     gtkspell           |             []                   [] []          [] |
+     gutenprint         |                               []                   |
+     hello              |                []    []       [] []             [] |
+     herrie             |                                  []                |
+     hylafax            |                                                    |
+     idutils            |                               [] []                |
+     indent             |                      [] []       []             [] |
+     iso_15924          |                                                    |
+     iso_3166           |       []    [] [] [] [] [] [] [] [] []          [] |
+     iso_3166_2         |                                                    |
+     iso_4217           |                         []    [] []                |
+     iso_639            |                         []    [] []             [] |
+     jpilot             |                         []                         |
+     jtag               |                                                    |
+     jwhois             |                                                    |
+     kbd                |                         []    [] [] []             |
+     keytouch           |                      []          []                |
+     keytouch-editor    |                                  []                |
+     keytouch-keyboa... |                      []                            |
+     latrine            |                                  ()                |
+     ld                 |                               []                   |
+     leafpad            |                []    [] []       [] []             |
+     libc               |                      [] []    [] []                |
+     libexif            |                                  []                |
+     libextractor       |                                  []                |
+     libgpewidget       |                         []    [] []                |
+     libgpg-error       |                                  []                |
+     libgphoto2         |                               [] []                |
+     libgphoto2_port    |                               [] []                |
+     libgsasl           |                                                    |
+     libiconv           |                                  []             [] |
+     libidn             |                         []    []                [] |
+     lifelines          |                               [] ()                |
+     lilypond           |                                  []                |
+     lingoteach         |                                                    |
+     lprng              |                                                    |
+     lynx               |                      [] []    [] []                |
+     m4                 |                         []    [] [] []             |
+     mailfromd          |                                                    |
+     mailutils          |                      []                            |
+     make               |                               [] []                |
+     man-db             |                      []       [] []                |
+     minicom            |                         []    [] []                |
+     nano               |                []    []          []                |
+     opcodes            |                                  []                |
+     parted             |                         []       []                |
+     pilot-qof          |                                                    |
+     popt               |                         []    [] []                |
+     psmisc             |                []                                  |
+     pwdutils           |                                                    |
+     qof                |                                                    |
+     radius             |                      []                            |
+     recode             |             []       []       [] [] []          [] |
+     rpm                |                               []                   |
+     screem             |                                                    |
+     scrollkeeper       |          [] []       [] [] [] [] []        []      |
+     sed                |                      []          []             [] |
+     shared-mime-info   |                []    [] []    [] () []     []   [] |
+     sharutils          |                []    [] []    [] [] []             |
+     shishi             |                                                    |
+     skencil            |                               [] ()                |
+     solfege            |                                                    |
+     soundtracker       |                               [] []                |
+     sp                 |                                  []                |
+     system-tools-ba... |       []       [] [] [] []    [] [] []     []      |
+     tar                |                []                []                |
+     texinfo            |                               [] []             [] |
+     tin                |                                  ()        ()      |
+     tuxpaint           | []             []             [] []        []   [] |
+     unicode-han-tra... |                                                    |
+     unicode-transla... |                                                    |
+     util-linux         |                      [] []    [] []                |
+     util-linux-ng      |                      [] []    [] []                |
+     vorbis-tools       |                         []                         |
+     wastesedge         |                                  ()                |
+     wdiff              |                      []       [] []        []      |
+     wget               |                      [] []       []                |
+     xchat              |             [] []    [] []       [] []     []      |
+     xkeyboard-config   |                []                                  |
+     xpad               |                []             []           []      |
+                        +----------------------------------------------------+
+                          af am ar az be bg bs ca cs cy da de el en en_GB eo
+                           6  0  2  1  8 26  2 40 48  2 56 88 15  1  15   18
+
+                          es et eu fa fi fr  ga gl gu he hi hr hu id is it
+                        +--------------------------------------------------+
+     Compendium         | []          [] []  []                []          |
+     a2ps               |    []       [] []                             () |
+     aegis              |                                                  |
+     ant-phone          |                []                                |
+     anubis             |                []                                |
+     ap-utils           |             [] []                                |
+     aspell             |                []  []                         [] |
+     bash               | []                                               |
+     bfd                | []          []                                   |
+     bibshelf           | []                 []                         [] |
+     binutils           | []          [] []                                |
+     bison              | [] []          []  []                   []    [] |
+     bison-runtime      |    []          []  []                   []    [] |
+     bluez-pin          |             [] []  []                [] []       |
+     cflow              |                    []                            |
+     clisp              | []             []                                |
+     console-tools      |                                                  |
+     coreutils          | [] []       [] []  []                []          |
+     cpio               | []             []  []                            |
+     cpplib             | []             []                                |
+     cryptonit          |                []                                |
+     dialog             |       []           []                         [] |
+     diffutils          | []          [] []  [] []    []       [] []    [] |
+     doodle             |                    []                         [] |
+     e2fsprogs          | []             []                             [] |
+     enscript           |                []  []             []             |
+     fetchmail          | []                                               |
+     findutils          |    []              []                []          |
+     findutils_stable   |    []          []  []                []          |
+     flex               | []             []  []                            |
+     fslint             |                                                  |
+     gas                | []             []                                |
+     gawk               | []             []  []       []                () |
+     gcal               | []             []                                |
+     gcc                | []                                               |
+     gettext-examples   | []          [] []  []                [] []    [] |
+     gettext-runtime    | []          [] []  []                   []    [] |
+     gettext-tools      | []    []       []                             [] |
+     gip                | []    []       []  []                            |
+     gliv               |                ()                                |
+     glunarclock        |             []     []                []          |
+     gmult              |       []       []                             [] |
+     gnubiff            |                ()                             () |
+     gnucash            | ()             ()                    ()          |
+     gnuedu             | []                                               |
+     gnulib             | [] []              []                            |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                                  |
+     gnutls             |                                                  |
+     gpe-aerial         | []             []                                |
+     gpe-beam           | []             []                                |
+     gpe-calendar       |                                                  |
+     gpe-clock          | []          [] []                    []          |
+     gpe-conf           |                []                                |
+     gpe-contacts       | []             []                                |
+     gpe-edit           | []             []                    [] []       |
+     gpe-filemanager    | []                                               |
+     gpe-go             | []             []                    []          |
+     gpe-login          | []             []                    []          |
+     gpe-ownerinfo      | []          [] []                    [] []       |
+     gpe-package        | []                                               |
+     gpe-sketchbook     | []             []                                |
+     gpe-su             | []          [] []                    []          |
+     gpe-taskmanager    | []          [] []                                |
+     gpe-timesheet      | []             []  []                   []       |
+     gpe-today          | []          [] []  []                            |
+     gpe-todo           | []                                               |
+     gphoto2            | []          [] []                    []       [] |
+     gprof              | []          [] []  []                   []       |
+     gpsdrive           |    []                                            |
+     gramadoir          |                []  []                            |
+     grep               | []          []     []                            |
+     gretl              | []    []       []                             () |
+     gsasl              |                    []                   []       |
+     gss                |                []  []                            |
+     gst-plugins-bad    | []          []                       []       [] |
+     gst-plugins-base   | []          []                       []       [] |
+     gst-plugins-good   | []    []    []                       []       [] |
+     gst-plugins-ugly   | []          []                       []       [] |
+     gstreamer          |             []                       []       [] |
+     gtick              |             []     []                         [] |
+     gtkam              | []             []                    []       [] |
+     gtkorphan          |                []                             [] |
+     gtkspell           | []    []    [] []  []                []       [] |
+     gutenprint         |                                      []          |
+     hello              | [] [] [] [] [] []  [] []    []    [] [] []    [] |
+     herrie             |                    []                            |
+     hylafax            |                                                  |
+     idutils            |                []  []                [] []    [] |
+     indent             | [] [] []    [] []  [] []             [] []    [] |
+     iso_15924          |                []                                |
+     iso_3166           | [] [] []    [] []     [] [] [] [] [] [] []    [] |
+     iso_3166_2         |                []                                |
+     iso_4217           | [] []       [] []                    []       [] |
+     iso_639            | []       [] [] []  []                []          |
+     jpilot             | []             []                                |
+     jtag               |                []                                |
+     jwhois             | []             []                    [] []    [] |
+     kbd                | []             []                                |
+     keytouch           |                []  []                         [] |
+     keytouch-editor    |                    []                            |
+     keytouch-keyboa... |                    []                         [] |
+     latrine            |                    []                         [] |
+     ld                 | []          [] []  []                            |
+     leafpad            | []             []  []       []       []       [] |
+     libc               | []          [] []     []             []          |
+     libexif            | []                                               |
+     libextractor       |                    []                            |
+     libgpewidget       | []             []  []                [] []       |
+     libgpg-error       |                []                                |
+     libgphoto2         | []             []                             [] |
+     libgphoto2_port    |                []                             [] |
+     libgsasl           |                []  []                            |
+     libiconv           |    []       []     []                            |
+     libidn             |                []                             [] |
+     lifelines          |                ()                                |
+     lilypond           | []          [] []                                |
+     lingoteach         |                []                       []    [] |
+     lprng              |                                                  |
+     lynx               |    []                                []       [] |
+     m4                 |                []  [] []                []       |
+     mailfromd          |                                                  |
+     mailutils          | []             []                                |
+     make               | []          [] []  [] []    []    []    []       |
+     man-db             |                                               [] |
+     minicom            | []          [] []                    []          |
+     nano               | []    []       []  [] []             []       [] |
+     opcodes            | []          [] []  []                            |
+     parted             |                []                       []    [] |
+     pilot-qof          |                                                  |
+     popt               |                []  [] []                   []    |
+     psmisc             |                                      []       [] |
+     pwdutils           |                                                  |
+     qof                |                                         []       |
+     radius             | []             []                                |
+     recode             | []             []  [] []    []       [] []    [] |
+     rpm                |                []                       []       |
+     screem             |                                                  |
+     scrollkeeper       | []          []                       []          |
+     sed                | [] []          []  []                []          |
+     shared-mime-info   | []    []    [] []                    []       [] |
+     sharutils          | [] []       [] []  [] []             []       [] |
+     shishi             |                []                                |
+     skencil            | []             []                                |
+     solfege            |                                               [] |
+     soundtracker       | []             []                             [] |
+     sp                 |                []                                |
+     system-tools-ba... | []    []    [] []  []             [] [] []    [] |
+     tar                |    [] []    []     []                []          |
+     texinfo            |                []           []       []          |
+     tin                |    []          ()                                |
+     tuxpaint           |                    []                []          |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                []  []                            |
+     util-linux         | [] []       [] []                    [] []    [] |
+     util-linux-ng      | [] []       [] []                    [] []    [] |
+     vorbis-tools       |                                                  |
+     wastesedge         |                ()                                |
+     wdiff              | [] []          []  [] []             [] []    [] |
+     wget               |    []       [] []  []             [] [] []    [] |
+     xchat              | []          [] []        []    []    []       [] |
+     xkeyboard-config   | []          [] []                    []          |
+     xpad               | []                 []                []          |
+                        +--------------------------------------------------+
+                          es et eu fa fi fr  ga gl gu he hi hr hu id is it
+                          85 22 14  2 48 101 61 12  2  8  2  6 53 29  1 52
+
+                          ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl  nn
+                        +--------------------------------------------------+
+     Compendium         |                                           []     |
+     a2ps               |       ()                      []          []     |
+     aegis              |                                           ()     |
+     ant-phone          |                                           []     |
+     anubis             |                               []    []    []     |
+     ap-utils           |                               []                 |
+     aspell             |                            []             []     |
+     bash               |                                           []     |
+     bfd                |                                                  |
+     bibshelf           |                               []                 |
+     binutils           |                                                  |
+     bison              |                               []    []    []     |
+     bison-runtime      |                               []    []    []     |
+     bluez-pin          |          []                   []          []     |
+     cflow              |                                                  |
+     clisp              |                                           []     |
+     console-tools      |                                                  |
+     coreutils          |                                           []     |
+     cpio               |                                           []     |
+     cpplib             |                                           []     |
+     cryptonit          |                                           []     |
+     dialog             |                               []          []     |
+     diffutils          | []                            []          []     |
+     doodle             |                                                  |
+     e2fsprogs          |                                           []     |
+     enscript           |                                           []     |
+     fetchmail          | []                                        []     |
+     findutils          |                                           []     |
+     findutils_stable   |                                           []     |
+     flex               |       []                                  []     |
+     fslint             |                                                  |
+     gas                |                                                  |
+     gawk               | []                                        []     |
+     gcal               |                                                  |
+     gcc                |                                                  |
+     gettext-examples   | []                            []          []     |
+     gettext-runtime    | []    []                                  []     |
+     gettext-tools      | []    []                                         |
+     gip                |                               []          []     |
+     gliv               |                                           []     |
+     glunarclock        |                               []          []     |
+     gmult              | []                            []          []     |
+     gnubiff            |                                                  |
+     gnucash            | ()                                  () ()        |
+     gnuedu             |                                                  |
+     gnulib             | []                                        []     |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                                  |
+     gnutls             |                               []                 |
+     gpe-aerial         |                                           []     |
+     gpe-beam           |                                           []     |
+     gpe-calendar       | []                                               |
+     gpe-clock          | []    []                                  []     |
+     gpe-conf           | []    []                                  []     |
+     gpe-contacts       |       []                                         |
+     gpe-edit           | []    []                                  []     |
+     gpe-filemanager    | []    []                                         |
+     gpe-go             | []    []                                  []     |
+     gpe-login          | []    []                                  []     |
+     gpe-ownerinfo      | []                                        []     |
+     gpe-package        | []    []                                         |
+     gpe-sketchbook     |       []                                  []     |
+     gpe-su             | []    []                                  []     |
+     gpe-taskmanager    | []    [] []                               []     |
+     gpe-timesheet      |                                           []     |
+     gpe-today          | []                                        []     |
+     gpe-todo           | []                                               |
+     gphoto2            | []                                        []     |
+     gprof              |                               []                 |
+     gpsdrive           |                                           []     |
+     gramadoir          |                                           ()     |
+     grep               |             []                            []     |
+     gretl              |                                                  |
+     gsasl              |                                           []     |
+     gss                |                                                  |
+     gst-plugins-bad    |                                           []     |
+     gst-plugins-base   |                                           []     |
+     gst-plugins-good   |                                           []     |
+     gst-plugins-ugly   |                                           []     |
+     gstreamer          |                                           []     |
+     gtick              |                                           []     |
+     gtkam              | []                                        []     |
+     gtkorphan          |                                           []     |
+     gtkspell           |                            []             []     |
+     gutenprint         |                                           []     |
+     hello              | [] [] []                      []    []    []  [] |
+     herrie             |                                           []     |
+     hylafax            |                                                  |
+     idutils            |                                           []     |
+     indent             | []                                        []     |
+     iso_15924          |                                           []     |
+     iso_3166           | []    [] []       []    []          []    []  [] |
+     iso_3166_2         |                                           []     |
+     iso_4217           | []                []                      []     |
+     iso_639            | []                []                      []  [] |
+     jpilot             | ()                                        ()     |
+     jtag               |                                                  |
+     jwhois             |                                           []     |
+     kbd                |                                           []     |
+     keytouch           |                                           []     |
+     keytouch-editor    |                                           []     |
+     keytouch-keyboa... |                                                  |
+     latrine            |                                           []     |
+     ld                 |                                                  |
+     leafpad            | []                []                             |
+     libc               | []    []                                  []     |
+     libexif            |                                                  |
+     libextractor       |                                                  |
+     libgpewidget       |                                           []     |
+     libgpg-error       |                                                  |
+     libgphoto2         | []                                               |
+     libgphoto2_port    | []                                               |
+     libgsasl           |                                           []     |
+     libiconv           |                                           []     |
+     libidn             | []                                        []     |
+     lifelines          |                                           []     |
+     lilypond           |                                           []     |
+     lingoteach         |                                           []     |
+     lprng              |                                                  |
+     lynx               | []                                        []     |
+     m4                 | []                                        []     |
+     mailfromd          |                                                  |
+     mailutils          |                                                  |
+     make               | []    []                                  []     |
+     man-db             |                                                  |
+     minicom            | []                                               |
+     nano               |                               []    []    []     |
+     opcodes            |                                           []     |
+     parted             | []                                        []     |
+     pilot-qof          |                                                  |
+     popt               | []    []                                  []     |
+     psmisc             | []                                  []    []     |
+     pwdutils           |                                                  |
+     qof                |                                                  |
+     radius             |                                                  |
+     recode             |                                           []     |
+     rpm                | []    []                                         |
+     screem             | []                                               |
+     scrollkeeper       |                                     [] [] []  [] |
+     sed                | []                                        []     |
+     shared-mime-info   | []    []          []          []    []    []  [] |
+     sharutils          | []                                        []     |
+     shishi             |                                                  |
+     skencil            |                                                  |
+     solfege            |                                     ()        () |
+     soundtracker       |                                                  |
+     sp                 | ()                                               |
+     system-tools-ba... | []    []          []                      []     |
+     tar                | []          []                            []     |
+     texinfo            |                                     []    []     |
+     tin                |                                                  |
+     tuxpaint           |                                     ()    []  [] |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                                                  |
+     util-linux         | []                                        []     |
+     util-linux-ng      | []                                        []     |
+     vorbis-tools       |                                                  |
+     wastesedge         |                                           []     |
+     wdiff              |                               []    []           |
+     wget               | []                                        []     |
+     xchat              | []    []                []                []     |
+     xkeyboard-config   |    [] []                                  []     |
+     xpad               |       []                      []          []     |
+                        +--------------------------------------------------+
+                          ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl  nn
+                          51  2 25  3  2  0  6  0  2  2 20  0 11  1 103  6
+
+                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv  ta
+                        +--------------------------------------------------+
+     Compendium         |          []  []      []       []          []     |
+     a2ps               |       ()     []      [] []       []    [] []     |
+     aegis              |                      () ()                       |
+     ant-phone          |                      []                   []     |
+     anubis             |       []             [] []                       |
+     ap-utils           |       ()                                         |
+     aspell             |                      [] []    []                 |
+     bash               |       []                      []                 |
+     bfd                |                                                  |
+     bibshelf           |                                           []     |
+     binutils           |                         []    []                 |
+     bison              |       []     []      [] []                []     |
+     bison-runtime      |       []     []      []          []       []     |
+     bluez-pin          |       []     []   [] [] []    [] []    [] []     |
+     cflow              |       []                                         |
+     clisp              |                         []                       |
+     console-tools      |                         []                       |
+     coreutils          |       []                []       []       []     |
+     cpio               |       []                []                []     |
+     cpplib             |                                           []     |
+     cryptonit          |              []                           []     |
+     dialog             |                                           []     |
+     diffutils          |       []     []      [] []             [] []     |
+     doodle             |                                     []    []     |
+     e2fsprogs          |       []                                  []     |
+     enscript           |              []      [] []       []       []     |
+     fetchmail          |       []                []          []           |
+     findutils          |       [] []                               []     |
+     findutils_stable   |       [] []          []       [] []       []     |
+     flex               |       []     []      [] []                []     |
+     fslint             |                                           []     |
+     gas                |                                                  |
+     gawk               |       []     []      []                   []     |
+     gcal               |                                           []     |
+     gcc                |                                        [] []     |
+     gettext-examples   |       [] []          [] []    [] []    [] []     |
+     gettext-runtime    |       [] []          [] []    [] []    [] []     |
+     gettext-tools      |       []             [] []    [] []    [] []     |
+     gip                |                   []          []       [] []     |
+     gliv               |       []     []      [] []    []          []     |
+     glunarclock        |              []      [] []    []       [] []     |
+     gmult              |                   [] []                [] []     |
+     gnubiff            |                      ()                   []     |
+     gnucash            |       ()                                  []     |
+     gnuedu             |                                                  |
+     gnulib             |       []                         []       []     |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                           []     |
+     gnutls             |       []                                  []     |
+     gpe-aerial         |          []  []      [] []       []    [] []     |
+     gpe-beam           |          []  []      [] []       []    [] []     |
+     gpe-calendar       |                         []       []    [] []     |
+     gpe-clock          |          []  []      [] []    [] []    [] []     |
+     gpe-conf           |          []  []      [] []    [] []       []     |
+     gpe-contacts       |                      [] []       []    [] []     |
+     gpe-edit           |       [] []  []      [] []    [] []    [] []     |
+     gpe-filemanager    |                                  []       []     |
+     gpe-go             |       []     []      [] []    [] []    [] []     |
+     gpe-login          |          []  []      [] []    [] []    [] []     |
+     gpe-ownerinfo      |          []  []      [] []    [] []    [] []     |
+     gpe-package        |                                  []       []     |
+     gpe-sketchbook     |          []  []      [] []    [] []    [] []     |
+     gpe-su             |          []  []      [] []    [] []    [] []     |
+     gpe-taskmanager    |          []  []      [] []    [] []    [] []     |
+     gpe-timesheet      |          []  []      [] []    [] []    [] []     |
+     gpe-today          |          []  []      [] []    [] []    [] []     |
+     gpe-todo           |                         []       []    [] []     |
+     gphoto2            |    [] []             []       []       [] []     |
+     gprof              |              []      []                   []     |
+     gpsdrive           |                         []                []     |
+     gramadoir          |                               []          []     |
+     grep               |       []                      [] []       []     |
+     gretl              |       [] []  []                                  |
+     gsasl              |       []                               [] []     |
+     gss                |       []             []       []          []     |
+     gst-plugins-bad    |       []     []                           []     |
+     gst-plugins-base   |       []                                  []     |
+     gst-plugins-good   |       []                                  []     |
+     gst-plugins-ugly   |       []     []                           []     |
+     gstreamer          |       []                            [] [] []     |
+     gtick              |                         []                       |
+     gtkam              |    [] []     []         []                []     |
+     gtkorphan          |                                           []     |
+     gtkspell           |              []   [] [] []    [] []    [] []     |
+     gutenprint         |                                           []     |
+     hello              |       []     []      [] []    [] []    [] []     |
+     herrie             |       []                []                []     |
+     hylafax            |                                                  |
+     idutils            |       []     []      [] []                []     |
+     indent             |       []     []      [] []    []       [] []     |
+     iso_15924          |                                                  |
+     iso_3166           |    [] [] []  []      [] [] [] [] [] [] [] []  [] |
+     iso_3166_2         |                                                  |
+     iso_4217           |       [] []             [] []    []    [] []     |
+     iso_639            |       []                [] [] [] []    [] []     |
+     jpilot             |                                                  |
+     jtag               |                               []                 |
+     jwhois             |       []     []      []                   []     |
+     kbd                |       []             []                   []     |
+     keytouch           |                                           []     |
+     keytouch-editor    |                                           []     |
+     keytouch-keyboa... |                                           []     |
+     latrine            |                                                  |
+     ld                 |                                           []     |
+     leafpad            |       [] []             []    []          []  [] |
+     libc               |       []                []    []          []     |
+     libexif            |       []                      []                 |
+     libextractor       |                      []                   []     |
+     libgpewidget       |       [] []  []      []       [] []    [] []     |
+     libgpg-error       |       []             []                   []     |
+     libgphoto2         |       []                                         |
+     libgphoto2_port    |       []                []                []     |
+     libgsasl           |       []             []                [] []     |
+     libiconv           |                                  []    [] []     |
+     libidn             |       []                               [] ()     |
+     lifelines          |       []                                  []     |
+     lilypond           |                                                  |
+     lingoteach         |              []                                  |
+     lprng              |       []                                         |
+     lynx               |              []         []                []     |
+     m4                 |       []     []      [] []                []     |
+     mailfromd          |       []                                         |
+     mailutils          |       []                []                []     |
+     make               |       []     []         []                []     |
+     man-db             |       []             [] []                []     |
+     minicom            |       []     []      [] []                []     |
+     nano               |              []      [] []                []     |
+     opcodes            |                      []                   []     |
+     parted             |       []                                         |
+     pilot-qof          |                                                  |
+     popt               |       [] []             []                []     |
+     psmisc             |       []                                  []     |
+     pwdutils           |       []                                  []     |
+     qof                |              []                           []     |
+     radius             |       []                []                       |
+     recode             |       [] []  []      [] []       []       []     |
+     rpm                |       [] []             []                []     |
+     screem             |                                                  |
+     scrollkeeper       |       []             [] []    []    [] [] []     |
+     sed                |       [] []  []      [] []    [] []    [] []     |
+     shared-mime-info   |       [] []  []                     [] [] []     |
+     sharutils          |       []                []             [] []     |
+     shishi             |       []                                         |
+     skencil            |          []  []                           []     |
+     solfege            |              []                                  |
+     soundtracker       |                               []          []     |
+     sp                 |                                                  |
+     system-tools-ba... |    [] [] []  []      []             [] [] []  [] |
+     tar                |       []                []       []       []     |
+     texinfo            |       []             [] []                []     |
+     tin                |                         ()                       |
+     tuxpaint           |       [] []                      [] [] [] []     |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                                                  |
+     util-linux         |              []         []       []       []     |
+     util-linux-ng      |              []         []       []       []     |
+     vorbis-tools       |                         []                       |
+     wastesedge         |                                                  |
+     wdiff              |       []     []      [] []    [] []       []     |
+     wget               |          []             []    []          []     |
+     xchat              |    []                   []    [] [] [] [] []     |
+     xkeyboard-config   |                               [] []       []     |
+     xpad               |                               [] []       []     |
+                        +--------------------------------------------------+
+                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv  ta
+                           0  5 77 31  53    4 58 72  3 45 46  9 45 122  3
+
+                          tg th tk tr uk ven vi  wa xh zh_CN zh_HK zh_TW zu
+                        +---------------------------------------------------+
+     Compendium         |          []        []         []          []      | 19
+     a2ps               |          [] []     []                             | 19
+     aegis              |                    []                             |  1
+     ant-phone          |          []        []                             |  6
+     anubis             |          [] []     []                             | 11
+     ap-utils           |             ()     []                             |  4
+     aspell             |             []     []  []                         | 16
+     bash               |          []                                       |  6
+     bfd                |                                                   |  2
+     bibshelf           |                    []                             |  7
+     binutils           |          [] []     []                     []      |  9
+     bison              |          [] []     []                     []      | 20
+     bison-runtime      |             []     []         []          []      | 18
+     bluez-pin          |          [] []     []  []     []          []      | 28
+     cflow              |             []     []                             |  5
+     clisp              |                                                   |  9
+     console-tools      |          []        []                             |  5
+     coreutils          |          [] []     []                             | 18
+     cpio               |          [] []     []         []                  | 11
+     cpplib             |          [] []     []         []          []      | 12
+     cryptonit          |                    []                             |  6
+     dialog             |                    []  []     []                  |  9
+     diffutils          |          [] []     []         []          []      | 29
+     doodle             |                    []                             |  6
+     e2fsprogs          |          []        []                             | 10
+     enscript           |          [] []     []                             | 16
+     fetchmail          |          []        []                             | 12
+     findutils          |          [] []     []                             | 11
+     findutils_stable   |          [] []     []                     []      | 18
+     flex               |          []        []                             | 15
+     fslint             |                    []                             |  2
+     gas                |          []                                       |  3
+     gawk               |          []        []         []                  | 16
+     gcal               |          []                                       |  5
+     gcc                |          []                   []          []      |  7
+     gettext-examples   |          [] []     []         []    []    []      | 29
+     gettext-runtime    |          [] []     []         []    []    []      | 28
+     gettext-tools      |          [] []     []         []          []      | 20
+     gip                |                    []                     []      | 13
+     gliv               |          []        []                             | 11
+     glunarclock        |                    []  []                 []      | 15
+     gmult              |          []        []         []          []      | 16
+     gnubiff            |                    []                             |  2
+     gnucash            |          () []                                    |  5
+     gnuedu             |                    []                             |  2
+     gnulib             |                    []                             | 10
+     gnunet             |                                                   |  0
+     gnunet-gtk         |          []        []                             |  3
+     gnutls             |                                                   |  4
+     gpe-aerial         |                    []         []                  | 14
+     gpe-beam           |                    []         []                  | 14
+     gpe-calendar       |                    []  []                         |  7
+     gpe-clock          |          []        []  []     []                  | 21
+     gpe-conf           |                    []  []     []                  | 16
+     gpe-contacts       |                    []         []                  | 10
+     gpe-edit           |          []        []  []     []          []      | 22
+     gpe-filemanager    |                    []  []                         |  7
+     gpe-go             |          []        []  []     []                  | 19
+     gpe-login          |          []        []  []     []          []      | 21
+     gpe-ownerinfo      |          []        []         []          []      | 21
+     gpe-package        |                    []                             |  6
+     gpe-sketchbook     |          []        []                             | 16
+     gpe-su             |          []        []  []     []                  | 21
+     gpe-taskmanager    |          []        []  []     []                  | 21
+     gpe-timesheet      |          []        []         []          []      | 18
+     gpe-today          |          []        []  []     []          []      | 21
+     gpe-todo           |                    []  []                         |  8
+     gphoto2            |             []     []         []          []      | 21
+     gprof              |          []        []                             | 13
+     gpsdrive           |                    []                             |  5
+     gramadoir          |                    []                             |  7
+     grep               |                    []                             | 12
+     gretl              |                                                   |  6
+     gsasl              |                    []         []          []      |  9
+     gss                |                    []                             |  7
+     gst-plugins-bad    |             []     []         []                  | 13
+     gst-plugins-base   |             []     []                             | 11
+     gst-plugins-good   |             []     []         []    []    []      | 16
+     gst-plugins-ugly   |             []     []         []                  | 13
+     gstreamer          |          [] []     []                             | 18
+     gtick              |             []     []                             |  7
+     gtkam              |                    []                             | 16
+     gtkorphan          |                    []                             |  7
+     gtkspell           |             []     []  []     []    []    []      | 27
+     gutenprint         |                                                   |  4
+     hello              |          [] []     []         []          []      | 38
+     herrie             |          []        []                             |  8
+     hylafax            |                                                   |  0
+     idutils            |          []        []                             | 15
+     indent             |          [] []     []         []          []      | 28
+     iso_15924          |                    []         []                  |  4
+     iso_3166           |    [] [] [] []     []  []     []    []    []      | 54
+     iso_3166_2         |                    []         []                  |  4
+     iso_4217           |    []    []        []         []    []            | 24
+     iso_639            |             []     []  []     []    []            | 26
+     jpilot             |          [] []     []         []                  |  7
+     jtag               |                    []                             |  3
+     jwhois             |          []        []                     []      | 13
+     kbd                |          [] []     []                             | 13
+     keytouch           |                    []                             |  8
+     keytouch-editor    |                    []                             |  5
+     keytouch-keyboa... |                    []                             |  5
+     latrine            |          []        []                             |  5
+     ld                 |          []        []         []          []      | 10
+     leafpad            |          [] []     []         []          []      | 24
+     libc               |          []                   []          []      | 19
+     libexif            |                    []                             |  5
+     libextractor       |                    []                             |  5
+     libgpewidget       |                    []  []     []                  | 20
+     libgpg-error       |                    []                             |  6
+     libgphoto2         |             []     []                             |  9
+     libgphoto2_port    |             []     []                     []      | 11
+     libgsasl           |                    []                             |  8
+     libiconv           |                    []  []                         | 11
+     libidn             |                    []         []                  | 11
+     lifelines          |                                                   |  4
+     lilypond           |                    []                             |  6
+     lingoteach         |                    []                             |  6
+     lprng              |                    []                             |  2
+     lynx               |          [] []     []                             | 15
+     m4                 |                    []         []          []      | 18
+     mailfromd          |             []     []                             |  3
+     mailutils          |             []     []                             |  8
+     make               |          []        []         []                  | 20
+     man-db             |                    []                             |  9
+     minicom            |                    []                             | 14
+     nano               |                    []         []          []      | 20
+     opcodes            |          []        []                             | 10
+     parted             |          [] []                            []      | 11
+     pilot-qof          |                    []                             |  1
+     popt               |          []        []         []          []      | 18
+     psmisc             |                    []         []                  | 10
+     pwdutils           |                    []                             |  3
+     qof                |                    []                             |  4
+     radius             |             []     []                             |  7
+     recode             |          []        []         []                  | 25
+     rpm                |          [] []     []                     []      | 13
+     screem             |                    []                             |  2
+     scrollkeeper       |          [] []     []                     []      | 26
+     sed                |          []        []         []          []      | 23
+     shared-mime-info   |             []     []         []                  | 29
+     sharutils          |          []        []                     []      | 23
+     shishi             |                    []                             |  3
+     skencil            |                    []                             |  7
+     solfege            |                    []                             |  3
+     soundtracker       |          []        []                             |  9
+     sp                 |          []                                       |  3
+     system-tools-ba... |    []    [] []     []     []  []          []      | 38
+     tar                |          [] []     []                             | 17
+     texinfo            |          []        []         []                  | 15
+     tin                |                                                   |  1
+     tuxpaint           |                    []  []                 []      | 19
+     unicode-han-tra... |                                                   |  0
+     unicode-transla... |                                                   |  2
+     util-linux         |          [] []     []                             | 20
+     util-linux-ng      |          [] []     []                             | 20
+     vorbis-tools       |             []     []                             |  4
+     wastesedge         |                                                   |  1
+     wdiff              |          []        []                             | 23
+     wget               |          []        []                     []      | 20
+     xchat              |             []     []         []          []      | 29
+     xkeyboard-config   |          [] []     []                             | 14
+     xpad               |                    []         []          []      | 15
+                        +---------------------------------------------------+
+       76 teams           tg th tk tr uk ven vi  wa xh zh_CN zh_HK zh_TW zu
+      163 domains          0  3  1 74 51  0  143 21  1  57     7    45    0  2036
+
+   Some counters in the preceding matrix are higher than the number of
+visible blocks let us expect.  This is because a few extra PO files are
+used for implementing regional variants of languages, or language
+dialects.
+
+   For a PO file in the matrix above to be effective, the package to
+which it applies should also have been internationalized and
+distributed as such by its maintainer.  There might be an observable
+lag between the mere existence a PO file and its wide availability in a
+distribution.
+
+   If November 2007 seems to be old, you may fetch a more recent copy
+of this `ABOUT-NLS' file on most GNU archive sites.  The most
+up-to-date matrix with full percentage details can be found at
+`http://translationproject.org/extra/matrix.html'.
+
+1.6 Using `gettext' in new packages
+===================================
+
+If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU `gettext' in your
+package.  Of course you have to respect the GNU Library General Public
+License which covers the use of the GNU `gettext' library.  This means
+in particular that even non-free programs can use `libintl' as a shared
+library, whereas only free software can use `libintl' as a static
+library or use modified versions of `libintl'.
+
+   Once the sources are changed appropriately and the setup can handle
+the use of `gettext' the only thing missing are the translations.  The
+Free Translation Project is also available for packages which are not
+developed inside the GNU project.  Therefore the information given above
+applies also for every other Free Software Project.  Contact
+`coordinator@translationproject.org' to make the `.pot' files available
+to the translation teams.
+
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..23fd350
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,496 @@
+Libidn AUTHORS -- Information about the authors.
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+See the end for copying conditions.
+
+Simon Josefsson <simon@josefsson.org>
+Designed and implemented libidn.
+
+Thomas Jacob <jacob@internet24.de>
+Contributed TLD support.
+
+Oliver Hitz <oliver@net-track.ch>
+Contributed Java implementation.
+
+Alexander Gnauck <gnauck@ag-software.de>
+Contributed C# port.
+
+Adam Strzelecki <ono@java.pl>
+Contributed Windows Visual Studio project files.
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+URL: http://josefsson.org/key.txt
+Comment: This 0xB565716F key is used to sign releases of Libidn.
+
+mKsEPNUHKwEFALqJSBHn6Qk5ex138kwymxA3idCFoTi5Q6mVooEVVaYVfeDG+5uV
+T5rhTFDfDcT9SO0eIlfKOraSRnVEHyDDH2PAgJFxyneFELcmLUQ66D+m8z+ziGro
+6bcDSBBDMRkHIX6/kH/vnevjqivIld+j8WTcVX+SArcKyzgQ58uMTrfQdLqzh6D9
+sE/838+ZPZkabmKKWMVWccoaUbWGYOcNwO0ABim0JVNpbW9uIEpvc2Vmc3NvbiA8
+c2ltb25Aam9zZWZzc29uLm9yZz6I+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgEC
+F4AiGGRuczpzaW1vbi5qb3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCSGH5iQUJDRh0
+XgAKCRDtoh6UtWVxb3QMBQCLIUgX2OGZ+AUH2qdYEyI43Ecv7/2wZzTH/IDF5H5t
+RS0wGmpzvp/pR7EzRKz7WhH8fHco7xIPsJjm2qgCWKEe+aVwRWyynYjfz9U6eVnf
+wtLfnE09nWrc9jy+VxSgDEZKPa0k/AtTFjoq4h/GpHOlOjPtVcv3WHDtk39w8a1w
+y0xcq5H1faERDLERWbulvD+1E+e/BKYp/7E2GAOtfSFziEYEExECAAYFAj1Y8sIA
+CgkQV5Mp08AbKiJmNwCgkgjjuS5TcZq4rVBWNYu1VwQlJWYAoJZf+pBNBvzT9xOg
+Hcs1cAMwT4FHiEwEExECAAwFAj1esHUFgwFXijYACgkQvLvElXGKklZXlwCfTWSl
+L2/3q5Od3zBVMKVHgpTo4asAnAtw7vVEIwp9pPuy1oKjTB/obqltiEYEExECAAYF
+AkEAyoIACgkQntdYP8FOsoK0XQCfRN1QBVk7/eu4YbFQBqH463dcHx4AoMp2QurM
+RXFDImswJ1Wi9K65dq66iEYEExECAAYFAkD/P4YACgkQlv+ZxCXA7Au9KACfYKMn
+MPmlbZDi5/Le4mcLCUlQ+SsAn2qOQ14l/ellraqWXbvacCJkOyNpiEwEEhECAAwF
+AkDgVz0FgwCTtOwACgkQyIHdR0rnq0csrwCgtL27/ndpjew28bGVYU9tBmIg2GUA
+oKFFKKHvJB2pVjRkRL4DjohSdIrkiEYEExECAAYFAkJJAYsACgkQj8NyXz1o1joW
+fwCgtb8mtlI8rg52vT5DRU+Ct3NuDfEAoL7IX823ezbe7HVegheirf3q7zmKiKIE
+EAECAAwFAkJG+cEFgwDmsQ4ACgkQv9buWFf3fwmuCwQAtAopBWKTnll1t4lFnR+C
+mvXdqui6g/MhMVjGlnGaxzKfdlXIDT3i6VEMQk639rCLUxNB5YiQZZm7aABg1dwt
+f10mFQUkm9dt4d852cu6ytmljXLJ4NIQFrhZQUrxvh8s8j41oN/hcwyLaX+FLI0G
+6Jehz0m0nPlEQf0sJ/4oCuqITAQTEQIADAUCQklECgWDABPOSgAKCRBmvnH/Z0ho
+g9kYAJ0QKz8Gt/kc7Q9Y/Ahh/wZO6vaQ9QCggcgpRYoJ6g1QXYWdTO/Hxve4Lu+I
+TAQQEQIADAUCQk2CtQWDAOAoGgAKCRA7jqQfgvYSQDh8AJ43bDTlK1p/aLXxJ2/1
+pFrHWFvncACgvVli4V9P6pVhP9p+H3APtQ+URVSJASIEEwECAAwFAkJhOZ0FgwDM
+cTIACgkQC3gy83PWLUFxowf/YLAopAmpU94kKSC4ECFsLXDivJ4LCOxgqZ0u7Fgi
+QgwWK1miJJnW9gME5vE/jMHlsjGwUKJDC3SfbgjOJj31ivrGIh4od8+zU0bwlwoJ
+ppDF/5cbzBheUiCsz+BVBZs8ii4OahnoELUzXbyVZITkMztmn/2+7DYXqqf1tCTy
+wIR/hQzFp6W7GNT/I73Ksz/cKop4jzxE5whkl+5NMBk9VYhfa2X49/S65nwXg4ii
+BPQN0UrhN0ZvrF+uKX6oVlOX+30CrPyT8FkcRk1AOhUpqblk2M2DblOebgxfF1ZV
+jXNNN/0fZhy4iTbYSggndO5PIybKMkMogVtO07F/8lvtC4hMBBMRAgAMBQJC2LCN
+BYMAVPpCAAoJEBhZ0B9ne6Hs7fEAn145gLDePrbxrfwN2dG5+IuvpvtYAJ4oRmRy
+hxwpwahGE+5281z2VTrQ9YhMBBMRAgAMBQJC2LCxBYMAVPoeAAoJEIHC9+viE7aS
+7sAAnRYuXokAy66xi04YD1ODtssYFw7nAJ4lqshFVn7NR5yznu0tioYLFwyc54hM
+BBMRAgAMBQJC2LDRBYMAVPn+AAoJEGtw7Nldw/Rz2iEAoJFrzoYjkR5ANZYbeX/o
+zQecQCmAAJwNCoPySmaxrwO6BiUd11bO80bPxYkCIgQTAQIADAUCQtiw8QWDAFT5
+3gAKCRCq4+bOZqFEaF90D/9xV8ua/ezhWOu5ADgHE1yeWMWQsecIx9TA5QVQg8pp
+jA3E2REe/lJbCweVhwfvSmuvuymRQw71cIdmqF1dz9R8mb62N1r07DcPxibhtHi4
+poENxIHqvEbtOR17Y6Ql4DW4PjK1ut9y2y58HK6XTiqCtbg43jEcbXk1r9qLJl2L
+gopYJQ1KJCwfn+DCVadRA2FgVclMGUGIdiiTwp12+E/70oYoMzLwm+7MUgbJUpRL
+ytsc5frhT91iX2lPoeylAHAQ0681WiawvexlqtAPto9Gjbtnw32oSOqIJcbbMhN8
+G87pkvBhk5wXfVM7kyutBFhIHcQFGeuGkZpgeXt40NcUJffn+KOfeXzgdQwmwNlo
+9K0arxNpIukgugvVeNtsKj1gtW7IkYcLmvlDyShz/cytguNEU+1W0ZeG73Tjphs8
+mCSlCKVcNWcy2l7z/DvB3VPibac525/Sw1ZIq7DShRHHv8x02/658LEW7gSvvZ4j
+3yuZSNgL2lgPzaYoQo+8ysHK9dqViVBXAHIwVZTmXptb5zxQcHtFUnR51IDSAfBG
+d7gjU5NJNfKKngLjDJy56nmJGMw/+13F5XFcjGPC9t6ZKoQud712K8TRIczWgGMn
+gkahyTl4KIwPxVzWnUN0IkcsO/5yO3JudWzzYB6r1QomCSAAA+uirstJwVtBWsCA
+54hGBBARAgAGBQJC8krrAAoJEG74r8KGV0rKoI4An0CQA/3wPCxskfqLhvN69ViN
+c9GhAJwMR5Nl4q7Y4c5j9BOG+9Yxaom2OYhMBBMRAgAMBQJC8cBwBYMAO+pfAAoJ
+ECmqKFIzPnwjCzsAmgIwd1uJC2Ka3bIgTCJukFjCcdWRAJ47P2tLKEcvatuPnnPT
+yWYuXGTBqIhGBBARAgAGBQJD+NOYAAoJEOFd2FexXDfRRVoAnj+kNh2yJiIAI9JE
+Vccgdv8cdElgAJ9jZHFa4KIdIsdGQZ5G4qS0YkHwKojYBBMBAgAiAhsDBAsHAwID
+FQIDAxYCAQIeAQIXgAUCPr1HRAUJAtWOGQAKCRDtoh6UtWVxb3F2BP9Whe+ArZn6
+WlbpHF+37Rqr+KmXL2fLI0b+phneaieRvACsOmPD3jDpvxz/xVf8s49SJ2+a23Ia
+iCA8Boyws9sBxn5N+yWhdYYjfDbH3JUOQz7BKN/9o8EAYuU8pmQtEN0q4+QiNsU0
+a8qLAV3qmEOwLfkB4z4H+aDZxe/p7vIYP4QmzTn3ZQ0mYR5mxpc52pF82KVyNWWJ
+vmcirPwKSckEiNgEEwECACICGwMECwcDAgMVAgMDFgIBAh4BAheABQI/pCtUBQkD
+vHImAAoJEO2iHpS1ZXFvPREE/j3fX+cLxCCZNTjMhThGFujiT7ty4x1jVc91J6QO
+A+Jp+78NIIeyg3JTeR3WIv7/WFNzLKJXJEEcga+0ViPjoLfvGsHMAnwXqPYAxu1c
+DY4jId0bCYgoVlnfF9gwOWxebtotLpCiuXGL/168zEAXWJpPg6r2MfPhAKUJ9G8q
+52OOWJW3cObxoZ2gyXjuWOFtygZ1vUAqP/8UGeZNdajHD5uI2AQTAQIAIgIbAwQL
+BwMCAxUCAwMWAgECHgECF4AFAkCGvikFCQSfBP4ACgkQ7aIelLVlcW9oqwT/a2nW
+kFFy1q16WURE8vp+Tqu6i4r5mTdyHjbhQeZh5Pub5DEJiFuWXxE73JVrnNozacQb
+Vbsnn54B4Xv6tuEDMxaTXSjreDY6D08urM8A0gnUHCAOwxtmepm9wxk/l3WAXWwz
+QoQaqZ2PSPFGW4Epk8+JwWKoLv1O2i9NbycGEccF9rr6I12319Vzk+P4P3FOgCwa
+dAQHSGS3Y6hlLm/RGIjYBBMBAgAiAhsDBAsHAwIDFQIDAxYCAQIeAQIXgAUCQW/E
+VgUJBYgLKQAKCRDtoh6UtWVxb8gUBP9Oiapzi+7qCcpj8Yy55jQvgpXkhe9g5DuT
+lRiHYjP5vTvXJNF7pDOOPj1pSUxumC3viv/pxUaWKp3tSOjsT0ZVgy4ah6rUdjyy
+bLAOAiPmAP3ryStzURF5/RnQbbzrSGZJRfeQIxY2871hWg241/wslRtNpsxYSPCI
+PHMVB4SSFYzzbKRgUU7SXsVQYBAlRU644UE+dB+b17slv1xvagOUiNgEEwECACIF
+Aj0lzz0CGwMFCQHhM4AECwcDAgMVAgMDFgIBAh4BAheAAAoJEO2iHpS1ZXFvt3ME
+/ijwFJCSNoY1AfCEm3AX6vRKUbjiy0MdemsqajXF6awcbIaeCwk3wVr9JOs1usu2
+/AQQDvz0sf/hEv6c3sMTYspD6+QzrRMUVbLm0fp+pRZKyaW1tO+/JIoOl8qsOwod
+kXPQ7CYFvSZhhkxdUwVOa6UtL6kOdCjQAy7DDQTzdcC/GxHQNVUNF5KcBWC7LMN6
+iAt0dAFEMaQz4t37CHq+DCyI+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgECF4Ai
+GGRuczpzaW1vbi5qb3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCQkBc0AUJBlijpAAK
+CRDtoh6UtWVxb9EIBP4pk/ztQF+XV5L4krXEmbjAsGb9C+I+4OoRUY/mWDvNAjGp
+pkhFD+8Q3oQvg+1dcPsJ5rQHSXgA2w1bOsTknK9DamyY35LHd9T0ZSllXOUX9q3Q
+eKiDBYc2KB35ZtxKNIA4Lt5qDgYbSgtlERxDY94BCSy4YApdwATei3O32t5IoR+B
+roeIr+w+zn9mVulkn3pRXByYDX/scxcTtWwRL+UNiPsEEwECAEUCGwMECwcDAgMV
+AgMDFgIBAh4BAheAIhhkbnM6c2ltb24uam9zZWZzc29uLm9yZz90eXBlPUNFUlQF
+AkMVrNEFCQcvRSYACgkQ7aIelLVlcW+ahgUAnWORH5p6Cdk/zhen4sUwwnzsFyAO
+Z7vaVPrQPq58Czl2FymLm5kJgsGXH8b6KLxVMo8hjTZnsm+zO6XTLXsnnK7nXk70
+gBJ0AAM0XGlG53qDvvQmq3RkfFMHuSmxL+zL8pXTmnywIlEpgDHPVKbPKF3c508H
+FEPKFnDjuyRwPgq3q2mhC/qYYBRvw9hjjeRCqDTdC5wHuWLzs5MCLeG+3YhGBBAR
+AgAGBQJEc4b8AAoJEAixI47drUe278gAn15puEaeLjlpaTndlvxT+LAH/951AJ9b
+0Hlo7Py6F9c1liLsMNWNDnyvZ4j7BBMBAgBFAhsDBAsHAwIDFQIDAxYCAQIeAQIX
+gCIYZG5zOnNpbW9uLmpvc2Vmc3Nvbi5vcmc/dHlwZT1DRVJUBQJD8ykBBQkIC2/U
+AAoJEO2iHpS1ZXFvrF0FAJLVqSWQ2fYNGCvBH4xRS4n2LruzdubmzNuCIZrc75M+
+RfTvYeHwCNDY8H+PggYuXMT8armHvFvyL7jln864M9LTX4TwROrqKlkNgOkfxdSg
+Oz4QE9RHxxooF1GMl1yhxCoumixYE5w0z0LGYRKy/Xzd3+VMcUaFXvEqY6Q+cnQo
+qChCvKRmsIFhF4b4SAqzRePdx6U3PBpC4FbIlkQkpbaIRgQQEQIABgUCRYwLkgAK
+CRApqihSMz58I53iAJ47ZGEOrZrMqV6WKmfKa8+5907zeQCeI9LFETr1SK3IHx/7
+S7RlQhoqAzeI+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgECF4AiGGRuczpzaW1v
+bi5qb3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCRObocwUJCP8vSAAKCRDtoh6UtWVx
+b9fhBQCRE0dBfP855Vv2fPCzIxnu1I0GM9BjmAC4uMNdW6o7I4yQMXNYpP8RdxDz
+PTon1JYQZqQW77EdqtwjFeguScudF8+85I2FtKDmzl0NNubmX6ckxdCbuUmOk2Vu
+H0IQ8O0f1htk0h4dQB97YA8zu9AtqyASkdCDbRC7RgoaeUaV7N7v8RM3KpEJm6pc
+eQT1DLqOQIFAp/cDa76xXK2Xrd4IiGsEEBECACsFAkXhdvUFgwKHjGMeGmh0dHA6
+Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1YbgMAnj34VvAwJhWn
+Z79fbgSY9O7CIBJFAKCJEs0DbASutepLJhiysH3J61b5D4hGBBARAgAGBQJF4sLA
+AAoJEKrPs4YhG27v90UAoKBHaY3RXOkwk5YL58jSYoOWltJ/AKDTwdKSURBZ3RTe
+GkriWGZRy2sfd4kCHAQQAQIABgUCReGU9AAKCRAmSeYoxdNNBWHAD/4+/J4V7cM1
+dMrr6rpaggfgRa7d121f4n+KVn69fmxBr6vMkGP+8Aor4xMGvkL6HYJvOMRK752H
+wXij7TM0HdGqU0S6cisOXiS/LOPQOayz6HuvliIhJeyDF4wfI358ZH8gVTKTn+1l
+tqWmggd8KVbU2pEvNte+lD0VIxK0wrUT0nFEYoJsDlTUVpnmM4PxP8TwoIRwo/h9
+NnL8zeh+5sj0D5tZW4DsTC1AVPH1WYUN4aY2lv49twDh63oXbzXZQ+xKWJeiByao
+DeEOFtouwTb7RbmDBB1i0aeb7gWCryUiHD4p2zf+R+4ikcwcG0LzR7DC3WFdlPnb
+NII/G31ZDacpPqkk5S3LL2jIXKhpD15ilbXGjkqsBAkOJpO7rehVbxEGUfGh+2TZ
+cCvLHeh9ckgjimFlZywk230H/tkQJpnHaTOmhNbBbowUkIdCjTBLkqyW99sM2heD
+kmkYh9jJTj2BLVED4HrgyMp+dXGeDM7nVGDCPfbaFTTz6It+ODndAC2Q0d0N59Sz
+x2Xb8LYfngezdhV0q0GgGXl+vh9zvZnpHV7Bef6ABTq0IOQri83IZv3HlyBeK6KP
+JTx+ll32ByQ8JcMuAAaVqWXI914J/fD9bvsTzJNQsPEa8yBta22Ww+jcnHBBhAbU
+Kfw5FKNDrqYr4VGY9+am80YmnIRQIt7Fu4hGBBARAgAGBQJF4fboAAoJEE1EwCDF
+wFuuzREAn11W3gtaynmEAcxw/WxLdndmL0mmAKCsf55yO8kTmKoohRXpfo+jn4HB
+XYhGBBARAgAGBQJF4gz4AAoJEFUVYHaRYekRxxwAmwVy1T7YQQtP7xXNdM+EVUxL
+nteTAJ9AzaxlVV4dO/OZTG9QDbqztagH54hGBBARAgAGBQJF4grQAAoJEMfZMCWd
+/6rUv38An3mkvCWcxGKhN6/PgQ2+W4zpFQPDAKCxweB0Xh/TQDjQ/dSaoj/BccNK
+LIhGBBARAgAGBQJF4hFCAAoJEOVE3gebfDKNJ4sAn3owtLwwEWtpw9VQxTc66cmd
+oFqPAJ4r2z3VgRa/Ns/uWMxV0Zlee/f2M4hGBBARAgAGBQJF4i3gAAoJEHZJQAVJ
+ruv2v54AoJCl4M0ClZrwxyTkOXJs7xeQjtDtAJ485636UH2u71nZdIyGTMqQkszm
+BohGBBARAgAGBQJF4sNEAAoJEH5OpU/Qq0B1NE8AoOJY9VXq8PPDDPjRPaJLahjO
+ykz+AKDN3jXgHvqD26euQ1ksEBc8Vn6zF4hMBBARAgAMBQJF4sR8BYMChj7cAAoJ
+EHMcr9NTwaMv9/EAn35hATWBiY7ra8Z2bjy+GZ4eSLQmAKDX1GfInkT57/rzmpkx
+n+IQlikCMIhGBBARAgAGBQJF4s6iAAoJENoZYjcCOz9PA5IAoIZucQg6PaqLETbG
+ch/y2UM6BhZ2AJ92fj8dOvoKNxn9Rh4UcTSSiPXNDohGBBARAgAGBQJF4eL3AAoJ
+EHhn1Tx0eTXduhcAn2LWbAgZcRRU7PJtIO3zqsIm6keDAKCeZgrQaUd1GSNW4AzZ
+LuT/XXiWW4kCHAQQAQIABgUCReLO2gAKCRBSIlPD1yc5gYUMD/0ah8KqI6rjyi7p
+WqPPcPKy9ZCnPJv2JJllu1wx4dqRZnUVA3rmHAUpzQp7HsfMXWLgjxOnUEvzjZkP
+PamYnczdE65l5M8zah1WNjfR8Vk4/XaeolVXe3a5R8Vxj27QRa+T5yEHprb5hPo4
+uFWkPlJgJd+qcXCIc28135QngN5uRRQK4NnM/oTtv2nv15L4M4qiH6V+We5IW+Tj
+t74O0mSEekg1bB/XKlF/XcgyO8rEZgqwufZ4cHbzWYXw3C+CKkhDSDItGUw9HesO
+u1FS+Mf/Js4+/kFjW8ZJPFO+A2z3gYTDzaXGq2zlvbqw1gYId5pbukVM6PRqQrlq
+tI2Kza7/CY85b+DVU9Zwe/Hr+yYnEJdG+eWkshmB0mIXgQlSaf/sglsAncrmxA/g
+m5IxaE3TIRW/mtizuCUwq+gigIUEANAsNwR5a/RAekc8aNaO1cSj8izlGqrl6cuQ
+5jyizUJB5AcOV4CUDiazITOasbt4+xx9MTsciqWIkMLYRloVuqXgsoKOTxTT6Zq+
+lPEGRyYds7OEdaXHWPO0OJ2ZPCagb3OvqxJc123Xf7XXySGkGXzZgoA6D4BwIB0b
+5WQFq8722b0tJPktH2a5clKJio3SMir1bpPT6b/CM/Mrk3kIFKJpmvEBYrKTCfhJ
+nDI2GJ4Z/f6rUDhiyQ5yj5Rop2zot4hGBBARAgAGBQJF4vk5AAoJEItKxIGsHnFe
+eYYAnRbZnnFoSrbo5E908zFdUPwfVfUoAJ9Dgo1WuGHPD+89PSqsyMshK1qavIhG
+BBARAgAGBQJF4y0kAAoJELOx+BoCeHiA9a0An0E0Zyjequ/iRSSB+YolhRqc87tp
+AJ9PeRbv8Ce1TY6qCoyIO76zYScX5YhGBBARAgAGBQJF40D2AAoJEDiaVjzCcqEm
+vrkAnimr8D1OTH8O8+E3A2VOoxLhG8PTAJ93AR9hPTBxVBY+TqzapQz12ROtjohG
+BBARAgAGBQJF40DdAAoJEB9/MmoS7vYqmnUAnjcrUSIjc8jjfdxLhJES9yDBTP/g
+AJ9ZSpKAG4kvVjZqcSBhudGIw2NkQokBHAQQAQIABgUCReM6egAKCRDo4GL2DcsE
+MZKUB/9bQd/kyhettf5FPhSPgtVgZanF2kI0WnDWUGXbbn8vLs7GNGsb6eyuUDEM
+kL/f6xtVHNPC44HarRbawhph/m0P25KQlaHX4120gdYzPR7mnUMk9g7P2ycNrcND
+730oJMS3f8FBhe9fnt4adPU8mp5fgU2zTsdVHpa2zUVZHNh84iuEoxoZJEWEyHHJ
+ke/avbbc/G6JmMD+8vOV8nKHbuzNOAfA09kPJWAPcfR/grCpEMZ8SkB9F4FvPEjU
+2HxeFKx1vWNTamkr6ygUVlX7bBwLCe9p+7ue1rMeKOMsJF7UnAkOthEC2IeyhPn1
+gyErrjYzQOX+3+YPCSO73fBxSG6liEYEEBECAAYFAkXjS5cACgkQKJz/wOY81tb5
+TwCeLd//hOBTT9hnSkZFuxLso9J3cToAoKnsSW/csdFyRJLh024CqSzu3/QXiEYE
+ExECAAYFAkXjRMAACgkQjCXuDw3At9aUHQCglgCi6nNiupwbEfwEsvd4MRYVzGsA
+niDj36LSv47TIbmUQJlR/qiNJ+phiEYEEBECAAYFAkXjVQEACgkQmEvTgKxfcAxE
+EACgmX4IGrSutcvAs9Pfr6JYEE3hdsYAn1yLt/tyLO9laWWhLKhNH7MPHc0xiEYE
+EBECAAYFAkXjT0YACgkQIae1O4AJae8N+ACfXCp09XmUQQ/xvA4LipoTAoyqX+oA
+n3aZHFSOKENXaHthrpt0FFaPVNEJiEYEEBECAAYFAkXjfaMACgkQzxI0fJaL1Yct
+2gCdEw43ra6oy0cwLX+zwRzTXazKQn0An0FuDnGs6J5+x6hlK3MFjyfRYZc5iEYE
+EBECAAYFAkXkGvoACgkQZDZDYQnzQCR0eACfWdtadQLH9Bbi/YPOcheMmavmCrUA
+n1fBKs46WOq7jppufBXwcncegfxHiEYEEBECAAYFAkXlgbQACgkQeQ6MlGH/2qvD
+yQCffMAMRUHCPKIbbz59BVNmgpyvSmYAnRMspmLYF0gk0xfHoIFaS3nwt3DgiQIc
+BBABAgAGBQJF6Vo/AAoJEFeTDasLhrBnakQP/1Z460aR3KyxrCrEcDJ/Vzf7vsbq
+1DQnmoRuIgpKmR87N3qRLb2p94ffRYYxlWcFj1jiYT3Wq2bxjHyCZPgcAM2bQuuJ
+MFxQo2xgwobyNqesIafgdbMjdUEAVy+NTyJfdmM3I57lkrleGz6lk9ojMLoIDa/t
+R1C+uoLuSWMj0Xk/nCT+WnN3/xqZyPIa+i6MN8fuI6Nsa/C1jiNw2FnZy721hl+P
+1Bhx+i9aiXCR0qz/3AOAOz25F0OXNKKdzOgdo5mCkelbUaey4gPpvb2oZ30rh6VT
+elOOlGU6WbEO3DQBuOGAxJ1Ux801przITs1923bZU8EPyfDZyZWINkpl7M4En4bq
+GKQkjTIfE8GrSSCp9rsLg1siK38yMYodegSzSJ7ZWWGlyuKvrim1eQw8svSzRphs
+ujaDJG8Oy3Dlc3qBbA/CGx1OtyML5G/w5C5b2Wz/BkMgHnOfOJSVjGlJJrxGyydR
+qThibZ88yRcZ8130COubR4Rr2I+TD+FZLhGtzQGia4gDQ9QG5td6LS5yLPc3Y52N
+cwWsbMHWzLTQ2k3O7PcsetRPLpduiq1eZUZZveY0MSjH+uH3xzp6qfj9I4FDtK6e
+pHQ0F9Dw8kK9qBAhiqrKxsUUbalx5Pup0gIkzNe1vzjByS2P/j2VMhbinhG5FZl0
+O2mPcIXHeHlAJdGCiEYEEBECAAYFAkXt5LkACgkQMGnpIbeahxy4RwCggxD0dEmG
+z7ipFrmwbIGTxuxIS+IAoKfxzxjiT2m3AEvfkL/xNuqgenPViEYEEBECAAYFAkXk
+wVwACgkQcLIDITr1nRa4rQCfZvrXaoYQ8TeX/lhuJfmsPb7kIRcAniKy+cTGNExR
+mZutFX/OcnatDZExiEYEEBECAAYFAkXqoaAACgkQL5UVCKrmAi7oEwCgu/2cheN4
+mU+yFFIG6HmLrbeIc5IAoI2I4eLWJdmLpJleOYgF7CtTGIKxiEYEEBECAAYFAkX/
+bGMACgkQOpD/wRQI1/HBUwCglcM0b6fl1oP8iofWeovuhSk4+5sAmQHrgf2pbqFW
+1oTBNS60dNQjA7VdiEYEEBECAAYFAka12CoACgkQXeJJllsDWKIizACgqk7R3Bhn
+GgzraKbcP9qSMhbYBr8An2Xah3bURySnK2QBDx4GzNM/vCTqiEYEEBECAAYFAkdZ
+tOwACgkQcgQ2cL3l8e4/XACg2opaihfpMLeOKb2bNSD7cLpI3N0An2A2r+PcOgUD
+t3qIIZ8i24HAhBnSiEYEEBECAAYFAkdZt8kACgkQ4Q56CecvefrAfgCfU/NbkK4w
+CiFMyviXo/F8tOEGyqkAnAgNaSmDzLkYZxHlM0SXosfHfV9diEYEExECAAYFAkda
+cyUACgkQaGtW3WCKJJsOKwCeLKhorr01GCKnXR8QaGvImLVOm98AoJpyR9WMJ0cs
+X+CuEdzGJDTlD8pxiEYEEBECAAYFAkddIIAACgkQt5wosOl/hW0OtwCgposF7nuk
+dTQ1nsQd1AGHb0CkQzYAn06bBOKMXsPcN2VvMiO2hiv9FLhniHoEExECADoFAkdc
+k2IzGmh0dHA6Ly93d3cuaGVucmlrbm9yZHN0cm9tLm5ldC9zaWduLXBvbGljeS0y
+MDA2LTEwAAoJEOdekMA5zDPbZ9IAnRTxxJl2Rtv1ZbnGsOuPJ6musP+5AJ9b8b3Y
+9BL7PRHzWgQjzALVVXRrdIhGBBARAgAGBQJHXR/KAAoJEPG6TB7RyLqP7nYAn048
+cLE/iNKJFxl/RwkY9VcRedkrAJ9+Y6u67OnG6HneUhzqGvMDbaGmAohGBBARAgAG
+BQJHXYVBAAoJEIUGW1nVLdGnUJ0AnjF43FY5SwhcW2JmuPVu1YnWfrwwAJ990zkv
+mIQtRCrxMzMgThz4jVaoEIhGBBARAgAGBQJHXAvSAAoJEO2/HhEm8iS4g2YAoMWb
+nnF/sbeM8+WToKO0nnoJrXVAAJ9iX3wXtSwAqrK+3X5imRfXGTxh8ohGBBMRAgAG
+BQJHXuTeAAoJEIXCJ+WlVzjy4fQAoKz8piSTCDPkv0qeNq0bdoDs9mOxAJ4lO8Hp
+GDqjYheaAvKG7tFZ1fsZjIj7BBMBAgBFAhsDBAsHAwIDFQIDAxYCAQIeAQIXgCIY
+ZG5zOnNpbW9uLmpvc2Vmc3Nvbi5vcmc/dHlwZT1DRVJUBQJF1dVYBQkLk/wtAAoJ
+EO2iHpS1ZXFvjEQE/1HviHOOSHv0ZuOd+H6SVlkwnhmx4g6fpyeeOa49lywggMBL
+8zddB/928PMYFQQ+pvYmECkOK+O6sVO2NkubopZwE/hUjt5sc0XTYQ9Lvxp40N/K
+UR8fSR5FvLQSWYGYRDXkK3t3Cta83ZeJk2IK43DpgVoFWMN6x69DlRGTyRWbB2Vd
+RvSZz3ZKp86p5cnwMT++K+pNxq+eY0UJorLRj+SIRgQQEQIABgUCSES5dgAKCRBQ
+LE8plp8qHbO7AKCPmi7Ri8FKIY/Wf9Ksa2NFDxUnRwCcCdAwwG67ZmplFNtZlVDW
+wFEcvT+IRgQSEQIABgUCSFlvKwAKCRAk0yv5qpXDSUwfAJ0TPD78S3J8UvoziG+b
+TCLTlPz1XwCgnWlV3PBKvOxuGSAdm/DOMlY1ogKJAaAEEAECAAYFAkkGvzkACgkQ
+Ke5YuZaGUXFYtgwgx9yOo8cCR2a0d/0J8Ux8wAnjLI8m68BCiKW6HmAzXx/mNX2e
+zicSEyqcvv4q5XdpvSrcA2kmlREBpu7mmnyerUuWWsTLMbi9clXaKRZ6yQJQBbrR
+YwrXtzdFziHqFjw+hC19uVXlPhXYa/8YL6aCO4JUlzWWgVF8xHupfRTIeXuGLkC+
+sWww2VmSm8Fg0FBG9jpIt4wYxNMI77so4szE/hoFQSdRtY1lC18jjluNiygGNQQP
+n7r5OKwrK9hX1gGZA2tGYVX0ZoYASRPZcUUzaYPH5cZ86SAg15zzroVD4etmk/2i
+I4sdzR9PyKr0zUp5FNSAFRey6avPAhaTNsyVDRiKmK3PnZF9H9HaRLJJnQEcvevN
+04Vg10VW/O3zCFMFi8zuxUP6ygoDdWZT9jR4wbzVEyFY7AUwXnStDd39p3oamTb9
+XtlngTJjmVBZIOlap4vmKsm0t2xviaxto6uR+656Ya49+SoXp+u5+dGDT2o0kFlN
+aC5r9zovItqdDYUHtn7DsIhGBBARAgAGBQJJZyWPAAoJEEc46iFldJl61+EAn1jp
+iTpjqq/l1oKwJQYDB0WsqGd+AKDEiDHvrN46b58gzQKdVbs472bFS7QhU2ltb24g
+Sm9zZWZzc29uIDxqYXNAZXh0dW5kby5jb20+iPsEEwECAEUCGwMECwcDAgMVAgMD
+FgIBAh4BAheAIhhkbnM6c2ltb24uam9zZWZzc29uLm9yZz90eXBlPUNFUlQFAkhh
++YkFCQ0YdF4ACgkQ7aIelLVlcW8+HgT7B4+yIgD+sx23Ax7ARwTI0qZ9x1G9tJYs
+lXKQnvoEgxRN7aAECsOaTwhP5rfzJ1thftd8f4yYgO0p9O4axkyZOOyURVJfQcJz
+2ENpuFml1K8jOlvZKziliTLJMKfQxmp3vdMJkxf8e0zDRwZPfA+2nV90WPtO8fsh
+4wORz+8JI9xlzEm5WlG+CrMdwooavGg73wh4XRctrnMQGnQm024d4ohGBBMRAgAG
+BQI9WPK/AAoJEFeTKdPAGyoiF/cAn0dqzIl3Ss2QfeWnAOWEkODC0MsoAJ9Tb+zN
++kgKH0f+91o6pT6VQEPn0YhMBBMRAgAMBQI9XrB1BYMBV4o2AAoJELy7xJVxipJW
+GZ0AnjlyM5hKGecjlTcoKYWJlMDjf0vCAJ99oFg8mkzKasg3CREHi3Y3Fu26EohG
+BBMRAgAGBQJBAMp9AAoJEJ7XWD/BTrKC96AAn1wDNEETZX6vDoCYdUGpV8NUiyWV
+AKCgKBgAABm+xdRzvY2ytKMCCPLLHohGBBMRAgAGBQJA/z93AAoJEJb/mcQlwOwL
+W7EAoLqAEMsXFUj3ScAXDYcvQaR+5lN7AKDPPs/9tixtWkuHbW9SPuaUfDizQYhM
+BBIRAgAMBQJA4Fc9BYMAk7TsAAoJEMiB3UdK56tHYAgAoKntYOktDGj5H5u9hfIq
+E9YIayhHAJ9PdLPDyKM6C01fd002zQe/eapsj4hGBBMRAgAGBQJCSQGQAAoJEI/D
+cl89aNY667EAoKu5aEpTLn2dplFPPc7+ojRJc+vVAKDcmOrKUKjImZWIh+Y/vJLw
+OHYi84hMBBIRAgAMBQJCHfAjBYMAPyIxAAoJEBgoK2tFOUoBYsoAnjEtckRH/Rlp
+C18blWLwEYDTSgw7AKClQUzPgy9KNf3j7/MsP/Emrl4+SIiiBBABAgAMBQJCRvnB
+BYMA5rEOAAoJEL/W7lhX938JlPID/iBCDWspuyuxVL2VrgpHSXB7IQhlQZUzqiPW
+AdQk2PCzXUR6fI60VwWRWTgzwM4h/9WaIkkI7IE4PPAVKcSy0oCR2TqobjzFpS8G
+ulrMrShk5LhQp2fppJhynuy1Z40iq/Dqz+8uToRbXVam+XYIvUiHitmrLNV6PvRF
+mW3KPr/ziEwEExECAAwFAkJJRAoFgwATzkoACgkQZr5x/2dIaIODCwCfeOCIoJAc
+Eve7QmdisnrXOunbns8An1paC2kNbYfcWeO4XOnHeglPVw5HiEwEEBECAAwFAkJN
+grUFgwDgKBoACgkQO46kH4L2EkAE0gCgz5vROEPqn8VQJZ3D6dFhXQISjaoAoL5B
+pboL6ZlwUEUjHoB8bJGQTxIQiQEiBBMBAgAMBQJCYTmdBYMAzHEyAAoJEAt4MvNz
+1i1B9gYH/RhzAgmG9+PZuuvOeRMj5CZpVURiOUIupt+640ZrwIy/mgUhWKAGMlCn
+n08r907CfJfmwELKGkVOsG5+7nPy8KCVEwclxY+6zzqCE8cekmt1T9Z2HV4wrWqy
+po80E2FNXFsHylGxAN30oLOIKXfNNZegttRfg20pj/AmzrRm+tjb9VMdQl4lp9q/
+FVMuQFVmdFQ+Kr8cSBhp+fEdLy8SguYBhYnbPSXTISXdUh0NJhZGafzaTTp28NgN
+LX4WhbKXUAKAxIzh06/X7NDwFAa7eWHD9lvojWfSj3zdnO9O6f97xK0j8UGQqFwZ
+pzdiwOcHjSFVmZyriT1HskORcB/aKz6ITAQTEQIADAUCQtiwjQWDAFT6QgAKCRAY
+WdAfZ3uh7EFLAJ9i5//07JhKiC/23C7bfFc/NpaowgCfWuU2y7lDqePoeNxdgiY6
+1AS+wiuITAQTEQIADAUCQtiwsQWDAFT6HgAKCRCBwvfr4hO2krnFAJ9HH3oo/o/H
+Y1Oowz5v7a0By+fyqACeMkgMrMlUPFN32fjmN132Clz31SiITAQTEQIADAUCQtiw
+0QWDAFT5/gAKCRBrcOzZXcP0c2EfAJ9Yy1Y0/98TlNF3fU1dTjd/asSXrQCg+hqH
+o0R2g1ztigaEJ6xlYKfcFVCJAiIEEwECAAwFAkLYsPEFgwBU+d4ACgkQquPmzmah
+RGijYQ/5AQ2INhVisCJEjJc9CmVqABcKDvblFqq2xe8/IMGSpThlvYL3BdDj2KMr
+8tPeF63anbRvCNiain2IKWj6+4xVN1YmmNTK/MED6sX3JripbAn2Yw8SmmB8eFSk
+4guSFyeILjHk5as208d6502S5tEnsnoZkA3yD02nFXokgDNFixxM9HzyOcGCASu6
+A2UMkiLZUUgjiZiKuUxBlRG/QeeyKXs1uDtFsEahOocPE05+6bjBx3U6yPD0snaD
+wMEkZlMVfKdhC+GWIE01K7c79Jk3huz3c1PWHNkxdzlycBE9aGpHtDzS4a4msg6n
+VZb7NYdhdShCAKLbjCl0XfAolESpZ2oY+3lrbdyFYq/D3aAc0QLU9/iZvBEt9sf0
+3V0PCg7dcD7P9HpCzHCM8gCEluoFYvurrVKU71FzEP4P7EGV49mK0U0owTRT+lph
+OIT3NYdybiZtAW8FwdHPIxOtGBBndAB0iYDznb62vQHjbzFOnZ+nNE7NW6FdN+Q7
+02YU7VAG/ZAHP0+aLjQ8JvILKKG+xNNlBUX4TCKNGao+QZ9pgtEAp0m/T/C9Qumw
+G2RBV3v1K5x/niga/mDGKYUyFlmfwkmYScAWlQxQi86q/WfzoqxC0hCSgnBtFcsa
+IoEHx5h+gkYzPSuCJidq+a6+BSk98PPBrrcbPcqWVulxIUPU49mIRgQQEQIABgUC
+QvJK7gAKCRBu+K/ChldKysP9AJ495oiNOr+Yzim0SbesMCyDQOzekQCfaXXwvuCW
+fkjKtMPXDtzShhLCddqITAQTEQIADAUCQvHAcAWDADvqXwAKCRApqihSMz58I3+f
+AKCKbs82jshhd4NisvXVfb6hAgTbNQCeI0VNu2cKL8v4c5yEfavqPnriI6CIRgQQ
+EQIABgUCQ/jTlgAKCRDhXdhXsVw30bs2AJ9o4wcGaqejXyEWTPnD0BVqLGpzCACf
+YGRrmV6jhnERw2KNVcFCuyoPGp2IRgQQEQIABgUCQ/jTmAAKCRDhXdhXsVw30UVa
+AJ4/pDYdsiYiACPSRFXHIHb/HHRJYACfY2RxWuCiHSLHRkGeRuKktGJB8CqI2AQT
+AQIAIgIbAwQLBwMCAxUCAwMWAgECHgECF4AFAj69R0YFCQLVjhkACgkQ7aIelLVl
+cW8Y2QT+PjSaIJj37ijex+wJ/HBLkyydqWYVZhuTPTVMLst6DQModRBj3Xi7UYlg
+g7lJ6tRxarVuF/eYW6Zv4jx5FePxKLBeAG+H4FRQH+ogIXeBlDx41X7L25wjSxxP
+hQ4CwBNMmSKckD84LdQiPrygbX8JQLsJ08XuTzDG7740d0RotqxizGhYP0QJTD67
+VvffoQ0gLtB5chw7Pc9osT1+j4yizojYBBMBAgAiAhsDBAsHAwIDFQIDAxYCAQIe
+AQIXgAUCP6QrUQUJA7xyJgAKCRDtoh6UtWVxbwueBP4uh9ZEOuSjt2n5OpfuAabl
+srRzhlgPfluBMfjHNynEFsGjn81l81TCqStRln7wDUj95ZufSi3YvoYSFG1jffGM
+k/k2trgINtT3kxaGkfns6dykBuV7Ki2wWqdJkTe1ibyai+RCqt+J1ldSUuHdfQZ5
+wALPJQRb4Hqi7M29azFHcfxbMLf3yGYyBuKC7eBVNVaR58UTFK6r0CX3T7eGuk8b
+iNgEEwECACICGwMECwcDAgMVAgMDFgIBAh4BAheABQJAhr4rBQkEnwT+AAoJEO2i
+HpS1ZXFvkxgE/2ZfCBqYKIe3SDM0tOVNrIeSZuVNUyn2xoqRKK4VomvTI1eMShfG
+a0twPVlBB5xXHt06yRbwjobJykmDc/Hmteel+FVWOcehnXq8T22gLENlEM0CUZel
+losNwFwdnWGOHGZs/B4BVCh2pzsCra6di7MKCznZDOHX3TBLoqVHjWzCldxtwc6Y
+7fAsEtrLVos4+0JvjQoYYgHQyril5ywHYs+I2AQTAQIAIgIbAwQLBwMCAxUCAwMW
+AgECHgECF4AFAkFvxFQFCQWICykACgkQ7aIelLVlcW/xbgT8CO3clOxFv4L9gsJt
+xe6lRUISlvmjoiQigmw8PIQwGfTCRYA5oK4Mja47+1PzbqzY1AlEi3JyFpIQMDCp
+RhkhfHGjOVH2vap3aGXxSFr8JGM0SO1Z5+88uNo9N7RAi4koaykIy+GYKypoyF9U
+LGj5QL/bUYgzLLG8etNasmE/Dl88mEXhY3wuPwaeIEbcv/HDHBymbv7VplP/3Vht
+ANfOz4jYBBMBAgAiBQI81QcrAhsDBQkB4TOABAsHAwIDFQIDAxYCAQIeAQIXgAAK
+CRDtoh6UtWVxb4jyBP0arTNzMTakDhO8BCE03d0iru6sCFJ2qQeh4UAFXy8KZ5yb
+tWJxFT/Q7xn0uXKujJ99cXhuy7icDR13wWkRKG20IjKiNv9yzQaNR36+m58mjZu1
+UDnGVm2PT9bELYmKTVoumi44QWgU5lgq5KZfWhsA5BQEqS5tp9k4CBBg36JCwjYx
+HfnWxymA1hSyMKPmgmPm6aFd+Lv9d3h5oTVs9TBOiPsEEwECAEUCGwMECwcDAgMV
+AgMDFgIBAh4BAheAIhhkbnM6c2ltb24uam9zZWZzc29uLm9yZz90eXBlPUNFUlQF
+AkJAXM8FCQZYo6QACgkQ7aIelLVlcW8t8wT5AdyhUlQzcWoLN/934mFm8zk7TC1n
+moHE7v3euwTumyABwdUh7l/ztBk20Ontmaue6DIGELrsfYWtAqvyWqwi8ptpLOOu
+jzJShC2zBVJ5/86uGpKASqzTwCJ9rrqyjBPVlY7XzWbgEILtqg1Gi/Hwe7LQ/5jV
+nZu08D667pS9kuHaIqow/73nOWg0c0dlaigblMcVCXRF0Im3JvIOYumf64j7BBMB
+AgBFAhsDBAsHAwIDFQIDAxYCAQIeAQIXgCIYZG5zOnNpbW9uLmpvc2Vmc3Nvbi5v
+cmc/dHlwZT1DRVJUBQJDFazSBQkHL0UmAAoJEO2iHpS1ZXFv+CkE/iKshcx+BSBC
+2d5EK24Dww6sBDPNF4P5mqLCMfa2VbGeWZffVQlGgJeLfTt2mtIAGRoCyaUazWjj
+206K41Of7G0ZVFeCyfPyjBtKFlwNLrjMWz7kAGtLtXF/bKns4Mr3lB8KXJKiOTj5
+uFI9m+b5emAMDXJyQG3Dna/WRcegpI+urrnR0PdZhYBvYPPY6ggctLsXtfL3E/be
+s1XLsyLWzSOIRgQQEQIABgUCRHOG/AAKCRAIsSOO3a1Htu/IAJ9eabhGni45aWk5
+3Zb8U/iwB//edQCfW9B5aOz8uhfXNZYi7DDVjQ58r2eIRgQQEQIABgUCRHOHAAAK
+CRAIsSOO3a1Htl+5AJ9kk3l8sdO9tAL/pGpaMuwwXG0PTwCgnh7vrRtASYmhSeT5
+RS/c+2E3+iqI+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgECF4AiGGRuczpzaW1v
+bi5qb3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCQ/Mo/wUJCAtv1AAKCRDtoh6UtWVx
+b5wvBP9pt+ced/OUwn6QQVC28XSEj+Q2XE5TPTt9C/l2Z59ZRVQBQ0HrO2bSyX0L
+RlGM0j6ANddBu3JKvGJizeOofvrVdXBHVDQv/qavmfoW/sBk3Vy/c9nBmFx+GMlE
+zxWIKgL3oBRKVEG9gKT/bTn5zZQLt4Lu+BlATeADNUlUjncggKSXXp3uYQghWqZQ
+HrEs3tk0NwzBxYPW97DmtYcjSNaQiEYEEBECAAYFAkWMC44ACgkQKaooUjM+fCOM
+QwCfU8bBrk75aSt+Pw/6RRus0NtDieMAnA0cD0TCoCFX+K6cYyR5erJhHgRKiPsE
+EwECAEUCGwMECwcDAgMVAgMDFgIBAh4BAheAIhhkbnM6c2ltb24uam9zZWZzc29u
+Lm9yZz90eXBlPUNFUlQFAkTm6HUFCQj/L0gACgkQ7aIelLVlcW+BZAT/bQQwknXn
+Ub9eaIXx+aSbAeoO5gcowyFzlgcinaUyHu6J/1ogOwilkoQPsxhgRE6A/unk3Zac
+kvBrzpN2mw9YnVGRC+Nc9queRWKFhBfKNUFwMCcpVIy1IjCR/fAz1xlV4kpJ5QQX
+5bPe8TYUqfKRS6hfWRvBZd0SUuC1s15IyqgKq9RZEQnq7GOzyQvMbSBeRkrb4Guv
+ZIdwdbR+qD2PmYhrBBARAgArBQJF4Xb1BYMCh4xjHhpodHRwOi8vd3d3LmNhY2Vy
+dC5vcmcvY3BzLnBocAAKCRDSuw0BZdD9WCItAKCI+or/qR6qhFzWBjh7ONW2Fwt1
+ugCeMPkV8gI+AYho8zb7scqP8WtxIkeIRgQQEQIABgUCReLCxgAKCRCqz7OGIRtu
+72ivAKDtzjXOLx6LXja+Cdbjv7GiP77jAwCg+BUnbBlNA3DFM2cCMfh0++FHMUaJ
+AhwEEAECAAYFAkXhlPkACgkQJknmKMXTTQWJcA//VxD2KKHU+4JCnMHMAtLQx36/
+MlBwqGGjVX4+ZAgj9zz3dtOP9oYeH+U5XQCW0byVbqnyYdDW0w5uUctpKtxOtRS3
+jCRmzPD2avfpW2jneg7ylfjeIQnn3Elkt1sxu3QiSfvFxFgw4GfJGIs0/nfhO54q
+OGX5+oMitavJiNC60hGJ7g+ToEZOmNXkWS1s93Szf88Oby5u6xtRoqYOxLnj6kA5
+iPYSl10yz+opirrlCmxh9swjv73F8uuiebCOiJMuMNnQNg/+gkBlP5TUDCq7HCin
+iNn10PCO1BTxqJg4rDtZca8+UEPs9Vcep3CObuYqzYxxRWD5bKu7ReCYMlV9ebE6
+bABzAQCV4ZBPX/AtWMbLTSpz/RdCbXM6iuGxRdW1aGhOR9CKfDjS33aAXprPUJeg
+YLxskDPeJ+q02FZ5YcsfTzvSy4RfJFPwaZT3APPnDzZAddMbiuPMzPKr60qIQf0B
+1KOOh99ydj3THRY2TOCqs7TiQtg7DzhPC+lmQTAnLzF3kzk3aCj5nEbXjwChfms1
+B1jnnKQJF0iiux8ycGVsja0Fo1xIuaeVoxLlBhQYBZhpW84uwC2Cyo84xwxbwQ52
+9nWVsy7bMD3Sv3RDHKFZb2VEI6WNAM4RLjujRUOsYnBzM/et5r2rNbhVYZpXXI09
+tn9buCCkvvqcxDJSleqIRgQQEQIABgUCReH26AAKCRBNRMAgxcBbrpgLAKCrw3g0
+BerwcZrA0A0QMml9oWc/NQCdHxDZHRXDlJKb3rWsk1rIj1KvZsSIRgQQEQIABgUC
+ReIM+gAKCRBVFWB2kWHpEaBgAKC5Hgg9nq2Mc2yUo4mtYn55TZ0mzwCfUuZjRjp5
+i0wGMRjlSQIAFwLWbcSIRgQQEQIABgUCReIK1AAKCRDH2TAlnf+q1ICMAJwKvons
+J370KWFzEUD0BxUNUOKCFgCgm1I9hRBVJVOnBc5z6iDJ1M3NgM+IRgQQEQIABgUC
+ReIRQwAKCRDlRN4Hm3wyjd+9AJ9f4xN5fLgv1M67WOBPBcwdaWr48ACeLBOOMDGv
+AYncekiZ8tqSxWMYnGeIRgQQEQIABgUCReIt4gAKCRB2SUAFSa7r9u8/AKC9UtDG
+VMlgcW9Ki3UAbWg5zhA8AwCgxXoak8y2uBiNVwVpzO/ub63ist6IRgQQEQIABgUC
+ReJbVQAKCRBbk8AvnkqcneUJAJ9CJwzNxH++BgxHoBCYvQslevEaMwCeOwpQrG+K
++1hgmCaKZbBR77xnVhqIRgQQEQIABgUCReLDRgAKCRB+TqVP0KtAdYQiAJ96HcY6
+xRsnPcfCgmngWFz3DOJzeACg3O1etKwnXm24bRYRM3cPLsNkx9+ITAQQEQIADAUC
+ReLEfAWDAoY+3AAKCRBzHK/TU8GjLyPGAKDH0Z5QNF9UMFgUhXvGR18mV+IQMACg
+kM+uL0ZjSu/vXGwM6RQqLWsPoYuIRgQQEQIABgUCReHi+gAKCRB4Z9U8dHk13TUW
+AKDRPfQWIu8+rVajQ56tvufZsfMUqgCfd6bVey/0wlxFH3BuKaB4maUoMzuIRgQQ
+EQIABgUCReLOogAKCRDaGWI3Ajs/Ty+8AJ9hnkGZ3J5dGL1ITHm67C5zuphwmACe
+PnZ5O5xlhXIeI+D8+z1JGpEmr02JAhwEEAECAAYFAkXizuIACgkQUiJTw9cnOYFl
+Vw//aP6Sev9OcDLXyyja3Ml3q/EXe0deIgZxLunLJcv9irSnrbg/fh2yZxognbSL
+BMdBURA2QK123awXUej7Jughn1SnULvi2/OqI5+prBV4Qx0rU9BomwEQE+vWHS/0
+qFmc0w+IzooBC0PXhVI9tTvPq/vKMrbSLiBlxqw6EkysfcRgHIIexpPNB9kMD4Yb
+oTvTHXOSxpthY3h0ehOhnReiw67CQG30CMQXdPp01uvH8656F3CA5LGhTv+T+rGA
+cJ8SFiShjF+cXWOlI7DtCFfjhL/D9S9Ug2SWMigoz4YE+at01SGzs0ahijF/cjfW
+68TG/mBxBXF5uY3rRU07f929ks2oMy+l9npVPwcDvKsYHwNovtN4M5wS5UWpgX6k
+I4ZPPV+nnan2FUqNCcZI9+pUsyOvEIjsdZkGXLgyL5WaN31DhZNz9yMWGJOaNHlR
+pdDm8dPXpnPPoXFKm7O3hyamSW1mjKaMPG2PMigClH1KfnK5kY2D/G+z1fk5kM5E
+s+H+zPySxDMsp3IvwE+kdAIFlqla/Y+6IQ2mbAbaRzzzOrB12+YpNfkCbPmpQZMP
+3cu1YIgdJ/Z+urdE0nSepHf+ygL7Wus6afUP5GWFFNe2BSJR/6Fcd2r+PV7DU/uh
+hbAu6yqEQJU3/X4GDwwzvxxQyR79C+JYpeog5/gAzdWa+2mIRgQQEQIABgUCReL5
+OwAKCRCLSsSBrB5xXsftAJ4meBeaphMXBIfSN9x/4hrUOUChqQCePhSTUe3w9oQm
+xG/m81i3weQ1Pu+IRgQQEQIABgUCReMiqAAKCRDTo3AErk0c1Ck2AKCXjF9YJz1S
+n4yr3Ahdlzjha4ZWlACg32/5EOg2CP9Is9qqM7Nmp2OHABOIRgQQEQIABgUCReMt
+KgAKCRCzsfgaAnh4gFQBAJwIWxxZqJ0YaHcHuhUmpO0jw3hcSgCeMO97CZ/WW9+k
+to47ZzmIJq34CyiIRgQQEQIABgUCReNA9wAKCRA4mlY8wnKhJl9sAJ4vjcPCWTFt
+o3R8bmFfdhMjbzF2dACglEwOiSd/ZglLVxKUoActs5QKY8qIRgQQEQIABgUCReNA
+3QAKCRAffzJqEu72KqXCAKCsQKKlQ/u95XZE5laDGvEhoEXM2QCeJMg7cxbPm7MV
+PO6q9UJwGyQuO72JARwEEAECAAYFAkXjOnoACgkQ6OBi9g3LBDHt7Qf+O59RTNft
+jDuxfaIVU3iwIgVs8nXeSb/vn5brc1EfpaEGdNrXPWHvDy/u6ARZ386G5F4dz3Eb
+4kugaA+/P4p0pPImRmeiRRgcyvpATdEF+/Y787dhkl/fVs6/ojLx7Bq5LpOxHs9S
+ZIjhxXkdPzS06T0dpzV2iDVbGUz1mZL8uyQF0em1zldoiswzF08go4koWeErXtZA
+y0Khu5up8sDISaUWnm2VDHrFLdr8PFzpUv8Z34e+XNiiVoP989dE6Gx2qgBhmR/p
+rxY54JCxMh/esvTRLjf9cze3t1PI80mK/kmp2zsVIsd1SIdw+fjzYd4ZzDi4gA8n
+64Tlv5gldGn5DIhGBBARAgAGBQJF40uXAAoJECic/8DmPNbWs4IAn0vpU3ALdg8y
+T0aq4qQJdX1oVi5bAJ9EVqkfOkE6WqPIaA5pnodCaTIddIhGBBMRAgAGBQJF40TI
+AAoJEIwl7g8NwLfW7wgAnjB0msHMLIjZvK8oSH0kWpPxmiCGAKDKaUqkSvY0y87I
+izLQYijodqQvDIhGBBARAgAGBQJF41UFAAoJEJhL04CsX3AMMy8AoNI1odP+fQA6
+h4CLWjaEK1qndHhlAKDNY25jsLzqCcJn0JqQaNN3gkvNx4hGBBARAgAGBQJF409I
+AAoJECGntTuACWnvwD8An2FF/JEayVKOL++9YbNLXpBVeRxaAJ44hot3GOOSS2OI
+ZZ9L/nw4ZRiHWohGBBARAgAGBQJF432jAAoJEM8SNHyWi9WHevAAn2TcTFyH84jO
+pejOmDSTrK30xQx1AJ46kGnM5mgIVuqSDrl/1R4PmrYN44hGBBARAgAGBQJF5Br+
+AAoJEGQ2Q2EJ80AkeQwAniuGytBx5JvGcFJV5NBliOGfxhs0AJ0be5jI/yWjK/bn
+88x2wmNp3mcA44kCHAQQAQIABgUCRelaTgAKCRBXkw2rC4awZ/WXD/0dhSb4vKuX
+0H6Z3EyvlehYrjZUKjv8tT+B0OWmvexuUEC6VtaPGdV0bHIWIi7AjijTgtwRDsT6
+qLg+N8wfAzfGloCKz7BAiF2Ugap/X0JwbEXq0OgSzJ0LU5fsHBMj9Bb2pHVmZVqy
+lJppuhMSnQ4paEctfq3Ls0UJslNhGtflAE6iIassIpZqI8aZfBtC6AWHk7AsUl/M
+Q4GlxkmNmVNJoBQt8h7DEK02AOqwBLYrHNSyqBlmjz90Cd3q8Mnsh1d702+NJZF2
+IuGjqSAv5E2aWNCZQ2zkoMhOGTlqPslEzIhb7G/a0I222px8DtAzYX8pKA0zLV+4
+W06pLOrbqiPEOBCPE4wt8t/jNrt0bVg3hrL6Sf+3AYpgDG3LXErhGbEcPTsORUeQ
+MWcGtaLfKCs29Bln5WBVgeiJADv3t7w4EMFBj5gVlHauNbDzip4q9+i3B4Wjmbqk
+7HOpfmxliOKEIX6aKE9SfecJXta7A1potO8pg0LlezufjN72y3PSUIa0VnqdMAVy
+YXMYUPuvATlFr0qWfzwql5d/J7zNigFzXCW0iBlv5gqTpoqJ+byZr2RUdtC/Q2ym
+WP4/cAcScFrR4anDnfiOqBeOGQBy7ceYd4DWd38PBU+fn4Z9rn8HfIRlJ3y2Ci7n
+Lswbbp38GLgYYwq2tjNoxuGr/4+vb8c3y4hGBBARAgAGBQJF5YG2AAoJEHkOjJRh
+/9qrW5QAniwa6vfWlEt1H8oeUOjJCyp7Ad4GAJ44QWVps5BWoeNpJWcS3m4cIFYE
+XYhGBBARAgAGBQJF7eS5AAoJEDBp6SG3moccZusAnRbuB1slbRLAebBjUhTlyvgS
+dsibAJ0V/NfekMsvwX6e6my5KBTFY4WyuohGBBARAgAGBQJF5MFdAAoJEHCyAyE6
+9Z0W5t8AoLgQz3ZhGe/hzwQ2bBTMeV12AyzhAJ0QWg/BHvHseBde5/14a+V8pt0S
+XYhGBBARAgAGBQJF6qGjAAoJEC+VFQiq5gIukCUAn2UXazhZrEHLvZH0c56N2LdN
+HYI6AJ4zZnN8vY09pgpA6p7+YGQfnjuyBohGBBARAgAGBQJF/2xwAAoJEDqQ/8EU
+CNfxSUEAoIDQQMHKQdtsKlcQKL3du2kBeaj+AJ0WEKNgRh8NgrcnppW2TpOygvQq
+M4hGBBARAgAGBQJGtdgxAAoJEF3iSZZbA1iisQsAoJ4LWFLNtSwDA4bNi+qIAHIV
+kEsbAKCW86SWOi3QcT/cZ+edMZdqTTXeRohGBBARAgAGBQJHWbTuAAoJEHIENnC9
+5fHuRb8An2E3kaGysE5hsrKBfkIBlco2Sb2IAJ91er1Yq2k8VOpUsBie/dysvgsY
+h4hGBBARAgAGBQJHWbfMAAoJEOEOegnnL3n6TYwAn2rA+SuEU9y0LUzxr55/wc6a
+yG+MAJ0TsyBrQBwA5tj9xg27dqvkZy+RYohGBBMRAgAGBQJHWnMlAAoJEGhrVt1g
+iiSbLcoAnRgf744XS2aZvXzXpdkvqJo8QDZ1AJ0aBMP918C88Tf5Nd1sEIg+t39h
+dohGBBARAgAGBQJHXSCAAAoJELecKLDpf4VtzC4AoNG5vj9Xz/ivXays7uOd6aqh
+apRBAKCMpQuXSYePOXDCEkiGG+YDtoe5mYh6BBMRAgA6BQJHXJNiMxpodHRwOi8v
+d3d3LmhlbnJpa25vcmRzdHJvbS5uZXQvc2lnbi1wb2xpY3ktMjAwNi0xMAAKCRDn
+XpDAOcwz24k0AJ9w0cJxnrwcMg54QvEMBVRyzo6F7QCdFuoMj3ByIWu9jc0GFN/l
+mtaunTmIRgQQEQIABgUCR10fzgAKCRDxukwe0ci6jyVQAJ9HJNsQX1RMDlyAL2H4
+qLUwAMwLBQCgoJh3gK9IlKwumCAmrFEaHnFaCYGIRgQQEQIABgUCR12FRAAKCRCF
+BltZ1S3Rp+JpAKCVJ804T2GWfoudSI5lwDU6q+8rNQCfaQ5ZQTVuknSdPx/3yt6P
+THWvz6uIRgQQEQIABgUCR1wL0gAKCRDtvx4RJvIkuBPaAJoCJkH84G+jEOHa1esT
+tRaxpD9oOACgrPWwsOEz4bI7qFSy8JzoMxOvhD2IRgQTEQIABgUCR17k3gAKCRCF
+wiflpVc48tQkAJ9da/TKCdBij+Pm93rPUpp2Rslq9wCgpxkJ5YNrYCawocyfaQPe
+xsHZKLKI+wQTAQIARQIbAwQLBwMCAxUCAwMWAgECHgECF4AiGGRuczpzaW1vbi5q
+b3NlZnNzb24ub3JnP3R5cGU9Q0VSVAUCRdXVWAUJC5P8LQAKCRDtoh6UtWVxb+g0
+BPsGdj6i1tbGnqe5fZopOeeZdWxVdLUNYVcs+mUbACnpvat2Wubyl2PUGxev0niY
+tME90aZwmrti3tKvD2j8tveP0upxlgEhA/XTyhQw5CgMCDGDGWf0RLQK5xEBsWuu
+N4gV5n1Yzdx6ijieZwNJfE4dOLOM4OCPkaaE29Ji0TVX/BnESBPWz3W/R00FjDdc
+/l14eBO5OlmyQV/zAKT+R0tBiEYEEBECAAYFAkhEuXgACgkQUCxPKZafKh3VQACf
+Z4TvFfZObRwlO4YzzrL8NOBgRY4AnAtBNv5Ga2Ou5KluhzgdD4cc/hP2iEYEEhEC
+AAYFAkhZbysACgkQJNMr+aqVw0kuhgCeNPeCzZhmsiNdL5etbxUZzVbTXe4AoKim
+F9wyQGMYF0eQNQ1a8Nx7q4YmiQGgBBABAgAGBQJJBr85AAoJECnuWLmWhlFxEi8M
+IKg/RbKdVmffG2ZlujO/WqRbQ7ZaMN1HkrGze2LfW8rkehV/5DKKLRT0BH84nbpF
+yOPVM4FHv3vm82fh0yDDnx6ewFlGgGc7ovmLjHDltI78OytEFmKt/O7SM3vjytz1
+//Xt9rtlaWDrhA2tnMEQ39xA7ArxtypRywhc5103Fun+51ZUSgGGzJlkUKam8/kA
+8b6D0U+x3ZwZcBzLfBW+P6gnec2vZEogPxxukYPrtLbRE2ZrUG0U1RubUXu76fn4
+turIB3aZ4vFdCY3al/xBIkg6J5lW1dzRc+vY8Tf9pn3/gKxygE61Im07/b8pAKLJ
+BEcuomzIn+lWS4np3O4h6HrVOFSQW//4xK55iU7F9nVmpQAwmj291Sl7Kswp0sf4
+NDJ5zuo4iDFoRUKjvtecG7s1dRBT10Damkqvq1PICsQN650oThQaDw+VDimL1hVR
+wOUdzUIz+AkK5SRzP6De3nhuYxMpSbxpxCOQuYGP5bUhB23RjgJwWeqr24RIZGqb
+END9otGIRQQQEQIABgUCSWcljwAKCRBHOOohZXSZeiUYAJdfCtm1Aij3dVLTBpyI
+S1lk5iYrAJ4qXN9eQAJwFC28VZguU+VVCPg2z7irBDzVB3sBBQDY9NqhPxE2QUOV
+ftQI4H29pEXGtf503uXpA747QyDt1V2Mi0SdppiQn6vgtd5wjjseiCxQYTFF0NgZ
+PQOrtpnwaQLhQo9dzerYpZDeJvfCPeqcIabchf8jbj3J1gsDNDJaoxbT3AsHm/GE
++LjKN63gVMZaa1hSUbMNvv7pVmKVhFO3LS+EUXhxVeU7ZH6+A/EUy9RzujxYYOdD
+eLJYCLORAAYpiMUEGAECAA8CGwwFAkhh+S0FCQ0Yc7IACgkQ7aIelLVlcW9LSAUA
+nPC0ji8ajhdj4yW3ZRChT+H7hxPdp3id0Xzhuem/DiWT3a6eeQeSadpByGF1H0Ta
+mT7buYfQgLsa9YkxRIf95jNPWCJkrg8lOaKfAO0+piehqCFly1jvHJ4nZ2hcdhtQ
+q5C/JRPygfPJoUhcnbEfR09WekY/HXhC5XF5s2+PRK+RvFtqhpxCO+0hbCCTQZum
+0QlrJUwh5bu/cJ003Dza17iOBEQcLesBBADmhtD1sFupeGfp1H+G37V8mngf47Bs
+BS93RI+3mZjNdq9Mx4+yYUCWvW12SLD2EbaBiKColY2e0K9qG8LS8kEZfyPSy+K/
+vBUW28YbQhe4Dn3g7T/Q18JrNNyWPk9vVhOlnQQ9trXTW2xYCAHPXGVgHs4fDwz9
+AaymqwCu36twBQAgzc7kYYjFBBgBAgAPAhsgBQJGin6LBQkDXUaFAAoJEO2iHpS1
+ZXFvaq0FAKnvHI9bxEJtNFmWwq7gBDGXv9TrioNx3wCETQ6n6V8JIO4vV8XydmA1
+ujPSHY/7Ptw99+SZ25NQqGBuE98STKODH6EVyXGAvha66dzJTYHQDCG0EO+esDzO
+fvrISFa37JfFl0Ju9SaHqnwTxrYxvo/Sd3alC8vJARd7IzuZoSZXZNBYz9RPbC8o
+bTsEEmR1IcrP2IPtOXX7sViW37sU/w64jgREHC7SAQQArB4IoJfse8rCqRNkVzYm
+btxvzzrtyl3LrluNgS7N4rTOLgCQeUJ8lgqEr2h3KEZ8PjGBWNYww3rj/MnX64jv
+/Ybq9XxJc/vkFBRYT1ISqGszeFc3P0KTXnVahF5xG4MaQ6mhy4PgMq3/NETdPH+T
+J+I3OL//KOa0MpGjwmtnGrsAILXz8IeJAZIEGAECAA8CGwIFAkaKfpsFCQNdRZ4A
+18ALIAQZAQIANAUCRPM4Ey0UgAAAAAAVAA9wa2EtYWRkcmVzc0BnbnVwZy5vcmdq
+YXNAZXh0dW5kby5jb20ACgkQpycTyKq7H3t8KAP/YWnPIkW4kfAWU5E93P/0R9DH
+a1ly7zP3JWbpm7Lxe+2ESOJwPn3GWSn3h+Ty+3UhOIsqIEM0ISQ+SPAG/ltaghcT
+/XUWnUtolcb6YUVBcjQt58wpxRWZwEfwQR58aTfJHBDDHXWTq58N9YoalwTCFSvi
+F/UzyHAysp3dBje77/AJEO2iHpS1ZXFvxkgE/3SuuiloOcwou8I1zZ/5n4T7Bx0l
+BZ8Q42Ct1t99+U4zhC4WJ83ESQPdvAhk7Y2urmuINQYn+tFN+NzVfNPT2hiFNflq
+1+AzkZwO3lqh3OakC+LVeFSEmPxrgyXBisELaB8W4Kk90tklUcmI6DS5NCVSHk/W
+2l/cMJurV9JuZ/ILLZmjWS01ruDRD6gze8EnpFUZ7In5jgDM/YRLIphINq+4jgRE
+HC8JAQQAxCLemYxwWqGwXBUqMX74GTQULkvtSc82sXWixyrhPNyaxYKuAvlKO0nk
+XGEAwS/YMC4m+gJ7iTiskG9iWPfoXPK5S81AjRX7NA8B34BAb5rJbW2eHypOLQ99
+MUUBYzuNLLqpwBZTeumoaz7DgoIHNpMpD4x/Irw1mX83xNhQ6F8AIKatOU2IxQQY
+AQIADwIbDAUCRop+pAUJA11FZwAKCRDtoh6UtWVxbzeQBP9/43ouNUZ9/pT8lKzv
+d15XHdZ2Kp9Brx2SmerUdDTZbETd3T/eSHAQxJcrwRXeCJg/O//8ZmTg2G/+hf9S
+jD/OfCkZKVVe1sm1T7nErj9jWlO8+OuWryWE5eCLJb5W3Yk7WDdoeUcj3pKtFyml
+DFlI0Sq4scHvyb6LPLxXzbb4ViyjXTH0eIh7rQ1SlWOF0fwQzb0Sk+LPRDJ8VX+Q
+YY0j
+=UQzw
+-----END PGP PUBLIC KEY BLOCK-----
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/COPYING.LIB b/COPYING.LIB
new file mode 100644 (file)
index 0000000..8add30a
--- /dev/null
@@ -0,0 +1,504 @@
+                 GNU LESSER GENERAL PUBLIC LICENSE
+                      Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+                 GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+\f
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+\f
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                           NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..0c75787
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,11967 @@
+2009-06-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.15.
+
+2009-06-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2009-06-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2009-06-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2009-06-05  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4, gl/m4/version-etc.m4, gl/version-etc.c: 
+       Update gnulib files.
+
+2009-06-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, java/misc/GenerateNFKC.java,
+       java/misc/GenerateRFC3454.java, java/misc/TestIDNA.java,
+       java/misc/TestNFKC.java: Fix some java warnings.
+
+2009-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, lib/Makefile.am: Check stack usage in library.
+
+2009-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/manywarnings.m4: Update gnulib files.
+
+2009-05-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, lib/idna.c: Use c_strcasecmp instead of strcasecmp.
+       Reported by Guenter Knauf <gk@gknw.de>.
+
+2009-05-28  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk, configure.ac, examples/Makefile.am, lib/Makefile.am,
+       src/Makefile.am, tests/Makefile.am: Improve warning handling.
+
+2009-05-28  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gnupload: Update gnulib files.
+
+2009-05-27  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/include_next.m4, lib/gl/m4/include_next.m4: Update gnulib
+       files.
+
+2009-05-20  Simon Josefsson <simon@josefsson.org>
+
+       * m4/pkg.m4: Add.
+
+2009-05-20  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gnupload, gltests/test-vc-list-files-git.sh, maint.mk: 
+       Update gnulib files.
+
+2009-05-11  Simon Josefsson <simon@josefsson.org>
+
+       * gtk-doc.make: Fix syntax-check.
+
+2009-05-11  Simon Josefsson <simon@josefsson.org>
+
+       * gtk-doc.make, m4/gtk-doc.m4: Upgrade gtk-doc files.
+
+2009-05-08  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gnupload, gl/m4/errno_h.m4, gl/m4/gnulib-comp.m4,
+       lib/gl/Makefile.am, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/multiarch.m4, maint.mk: Update gnulib files.
+
+2009-05-08  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Make -Werror more optional.
+
+2009-05-07  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fix.
+
+2009-05-05  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fix.
+
+2009-05-05  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Add.
+
+2009-05-03  Simon Josefsson <simon@josefsson.org>
+
+       * gl/gettext.h, lib/gl/Makefile.am, lib/gl/gettext.h,
+       lib/gl/m4/wchar.m4, lib/gl/wchar.in.h, maint.mk: Update gnulib
+       files.
+
+2009-04-27  Simon Josefsson <simon@josefsson.org>
+
+       * maint.mk: Update gnulib files.
+
+2009-04-27  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/vc-list-files, lib/gl/m4/lib-link.m4,
+       lib/gl/m4/lib-prefix.m4, maint.mk: Update gnulib files.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version: Add.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * .x-sc_makefile-check~, .x-sc_makefile_check~, .x-sc_space_tab~: 
+       rm.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * .x-sc_avoid_if_before_free, .x-sc_makefile-check~,
+       .x-sc_makefile_check, .x-sc_makefile_check~, gltests/Makefile.am,
+       java/Makefile.am, java/misc/Makefile.am, maint.mk: Fix
+       syntax-checks.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Fix for modern git.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/useless-if-before-free, build-aux/vc-list-files,
+       gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4,
+       gltests/Makefile.am, gltests/test-vc-list-files-cvs.sh,
+       gltests/test-vc-list-files-git.sh: Add modules, for syntax-check.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Fix warnings.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * .x-sc_the_the, cfg.mk, configure.ac: Syntax check fixes.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * .x-sc_error_message_uppercase, .x-sc_file_system,
+       .x-sc_prohibit_atoi_atof, cfg.mk, contrib/idn-python/Makefile,
+       contrib/idn-python/idn.c, contrib/idn-python/test.py, gl/getopt1.c,
+       lib/nfkc.c, lib/version.c, m4/valgrind.m4, src/idn.c: Syntax check
+       fixes.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * .x-sc_space_tab, .x-sc_space_tab~, NEWS, gtk-doc.make,
+       m4/valgrind.m4: Syntax check fixes.
+
+2009-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * .x-sc_avoid_if_before_free, .x-sc_cast_of_alloca_return_value,
+       lib/stringprep.c, maint.mk: Update gnulib files.
+
+2009-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2009-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs_template, maint.mk: Update gnulib files.
+
+2009-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/libidn.texi: Improve texinfo section names.
+
+2009-04-17  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: AM_PROG_GCJ needs to be called unconditionally.
+       Sigh.  Otherwise you get this error: conditional "am__fastdepGCJ"
+       was never defined.
+
+2009-04-14  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, m4/ac_prog_javac.m4, m4/ac_prog_javac_works.m4,
+       m4/ac_prog_javadoc.m4: Fix java detection.
+
+2009-04-14  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h: Bump version.
+
+2009-04-14  Simon Josefsson <simon@josefsson.org>
+
+       * java/misc/TestIDNA.java: Don't use assert keyword to avoid
+       compilation error.
+
+2009-04-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2009-04-14  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gendocs.sh, doc/gendocs_template, doc/lgpl-2.1.texi,
+       lib/gl/m4/ld-version-script.m4, maint.mk: Update gnulib files.
+
+2009-04-03  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2009-04-03  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.14.
+
+2009-04-03  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac, lib/Makefile.am, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/ld-output-def.m4: Use --output-def.
+
+2009-04-03  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4: Update gnulib files.
+
+2009-04-01  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: Assume locale.h.
+
+2009-03-25  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Copy cyclo chart to webdir.
+
+2009-03-25  Simon Josefsson <simon@josefsson.org>
+
+       * gl/unistd.in.h: Update gnulib files.
+
+2009-03-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2009-03-23  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2009-03-23  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_toutf8.c: Don't crash in memcmp if
+       stringprep_utf8_to_locale returns NULL.  Reported by Dagobert
+       Michelsen <dam@opencsw.org> in
+       <http://thread.gmane.org/gmane.comp.gnu.libidn.general/192>.
+
+2009-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, build-aux/gnupload, maint.mk: Update gnulib files.
+
+2009-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac, lib/stringprep.h: Bump version.
+
+2009-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2009-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.13.
+
+2009-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add credits.
+
+2009-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Don't use warnings unless we are using GCC.
+
+2009-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2009-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2009-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gnupload: Update gnulib files.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Clarify.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, lib/punycode.h, lib/tld.h: Namespace discussion.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, lib/gl/Makefile.am: Update gnulib files.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idn-free.h: Fix.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idn-free.c, lib/idn-free.h, lib/pr29.c, lib/pr29.h: Finish API
+       visibility markup.  Now passes self tests.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.h, lib/profiles.c, lib/punycode.c, lib/punycode.h,
+       lib/stringprep.h, lib/tld.c: Mark visibility of API functions.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Ignore decorators.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Improve decorators.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Add symbol visibility markup.
+
+2009-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am, lib/gl/m4/visibility.m4: Update gnulib files.
+
+2009-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * m4/linker-script.m4: Remove.
+
+2009-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am, lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/visibility.m4: Use visibility
+       module.
+
+2009-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2009-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Typo.
+
+2009-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: More debug info.
+
+2009-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Debug output about version script.
+
+2009-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, lib/Makefile.am, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/ld-version-script.m4: Use gnulib ld-version-script module.
+       Re-add use of -export-symbols-regex for other platforms.
+
+2009-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/libidn.map: Add license.  Use v1.0 in name.
+
+2009-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/libidn.map: Add.
+
+2009-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac, lib/Makefile.am, m4/linker-script.m4: Use a
+       linker version script.
+
+2009-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-common.m4, gl/m4/stdarg.m4,
+       lib/gl/m4/gnulib-common.m4, lib/gl/m4/stdint.m4, lib/gl/stdint.in.h: 
+       Update gnulib files.
+
+2009-02-24  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/include_next.m4, lib/gl/m4/include_next.m4: Update gnulib
+       files.
+
+2009-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: Don't remove idn_cmd.c and idn_cmd.h on
+       distclean, use maintainer-clean instead.  Reported by "Sisyphus"
+       <sisyphus1@optusnet.com.au> in
+       <http://thread.gmane.org/gmane.comp.gnu.libidn.general/178>.
+
+2009-02-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, doc/Makefile.am, doc/libidn.texi,
+       doc/reference/Makefile.am, doc/reference/libidn-docs.sgml,
+       lib/idn-free.c, lib/nfkc.c: Document the idn_free function.
+
+2009-02-09  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h: Bump version.
+
+2009-02-09  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Drop emit_bug_reporting_address, it is now provided by
+       gnulib version-etc.
+
+2009-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gnupload, gl/m4/00gnulib.m4, gl/m4/extensions.m4,
+       gl/m4/gnulib-common.m4, gl/m4/gnulib-comp.m4,
+       gl/m4/pmccabe2html.m4, gl/version-etc.c, gl/version-etc.h,
+       lib/gl/m4/00gnulib.m4, lib/gl/m4/extensions.m4,
+       lib/gl/m4/gnulib-common.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/locale-fr.m4: Update gnulib files.
+
+2009-01-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2009-01-23  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2009-01-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.12.
+
+2009-01-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2009-01-23  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update PGP key.
+
+2009-01-23  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Sync with TP.
+
+2009-01-23  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Sync with TP.
+
+2009-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/libidn.texi, src/idn.c, src/idn.ggo: idn: Add new
+       --no-tld to resolve broken --tld parameter.  Reported by Christian
+       Hammers <ch@lathspell.de> in
+       http://thread.gmane.org/gmane.comp.gnu.libidn.general/162
+
+2009-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Fix.
+
+2009-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Use gdoc's -pkg-name.
+
+2009-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Add -pkg-name parameter.
+
+2009-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/errno_h.m4, gl/m4/gnulib-common.m4, gl/m4/gnulib-comp.m4,
+       gl/unistd.in.h, gltests/test-unistd.c, lib/gl/m4/gnulib-common.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/multiarch.m4: Update gnulib
+       files.
+
+2009-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Cleanup.
+
+2009-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Bump copyright years.
+
+2009-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Update --help output per new GNU coding standards.
+
+2009-01-19  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/unistd_h.m4, gl/unistd.in.h: Update gnulib
+       files.
+
+2009-01-19  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Bump copyright years for man pages.
+
+2009-01-17  Simon Josefsson <simon@josefsson.org>
+
+       * : Touch.
+
+2009-01-17  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update PGP key.
+
+2009-01-17  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/README, csharp/IDNA.cs, csharp/IDNAException.cs,
+       csharp/Makefile.am, csharp/NFKC.cs, csharp/Punycode.cs,
+       csharp/PunycodeException.cs, csharp/Stringprep.cs,
+       csharp/StringprepException.cs, csharp/generate/AssemblyInfo.cs,
+       csharp/generate/GenerateNFKC.cs,
+       csharp/generate/GenerateRFC3454.cs, csharp/generate/HashSet.cs,
+       csharp/generate/Program.cs, csharp/generate/Tokenizer.cs,
+       doc/Makefile.am, doc/Makefile.gdoci, doc/cyclo/Makefile.am,
+       doc/gdoc, doc/java/Makefile.am, doc/libidn.texi,
+       doc/tld/Makefile.am, doc/tld/README, examples/Makefile.am,
+       examples/README, examples/example.c, examples/example2.c,
+       examples/example3.c, examples/example4.c, examples/example5.c,
+       java/Makefile.am, java/gnu/inet/encoding/IDNA.java,
+       java/gnu/inet/encoding/IDNAException.java,
+       java/gnu/inet/encoding/Makefile.am,
+       java/gnu/inet/encoding/NFKC.java,
+       java/gnu/inet/encoding/Punycode.java,
+       java/gnu/inet/encoding/PunycodeException.java,
+       java/gnu/inet/encoding/Stringprep.java,
+       java/gnu/inet/encoding/StringprepException.java,
+       java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java,
+       java/misc/Makefile.am, java/misc/TestIDNA.java,
+       java/misc/TestNFKC.java, lib/Makefile.am,
+       lib/gen-stringprep-tables.pl, lib/gen-tld-tables.pl,
+       lib/gen-unicode-tables.pl, lib/idn-free.c, lib/idn-free.h,
+       lib/idna.c, lib/idna.h, lib/nfkc.c, lib/pr29.c, lib/pr29.h,
+       lib/profiles.c, lib/punycode.c, lib/punycode.h,
+       lib/strerror-idna.c, lib/strerror-pr29.c, lib/strerror-punycode.c,
+       lib/strerror-stringprep.c, lib/strerror-tld.c, lib/stringprep.c,
+       lib/stringprep.h, lib/tld.c, lib/tld.h, lib/toutf8.c,
+       lib/version.c, libc/README, src/Makefile.am, src/idn.c,
+       src/idn.ggo, src/idna.el, src/punycode.el, tests/Makefile.am,
+       tests/tst_idna.c, tests/tst_idna2.c, tests/tst_nfkc.c,
+       tests/tst_pr29.c, tests/tst_punycode.c, tests/tst_strerror.c,
+       tests/tst_stringprep.c, tests/tst_tld.c, tests/tst_toutf8.c,
+       tests/utils.c, tests/utils.h: Bump copyright years.
+
+2009-01-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/override/lib/stdint.in.h.diff, lib/gl/stdint.in.h: Update
+       gnulib files.
+
+2009-01-17  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/csharp.m4, gl/m4/csharpcomp.m4, gl/m4/errno_h.m4,
+       gl/m4/gnulib-common.m4, gl/progname.c, gl/strerror.c,
+       lib/gl/m4/codeset.m4, lib/gl/m4/gnulib-common.m4,
+       lib/gl/m4/iconv.m4, lib/gl/m4/iconv_open.m4, lib/gl/m4/lib-ld.m4,
+       lib/gl/m4/lib-link.m4, lib/gl/m4/locale-fr.m4,
+       lib/gl/m4/locale-tr.m4, lib/gl/m4/longlong.m4,
+       lib/gl/m4/stdbool.m4, lib/gl/m4/stdint.m4, lib/gl/m4/strverscmp.m4,
+       lib/gl/m4/wchar_t.m4, lib/gl/m4/wint_t.m4,
+       lib/gl/override/lib/stdint.in.h.diff, lib/gl/stdint.in.h,
+       lib/gl/wchar.in.h: Update gnulib files.
+
+2009-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gendocs.sh, doc/gendocs_template, gl/Makefile.am,
+       gl/m4/errno_h.m4, gl/m4/extensions.m4, gl/m4/gnulib-cache.m4,
+       gl/m4/gnulib-comp.m4, gl/unistd.in.h, gl/version-etc.c,
+       gltests/Makefile.am, lib/gl/Makefile.am, lib/gl/m4/codeset.m4,
+       lib/gl/m4/extensions.m4, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconv.m4,
+       lib/gl/m4/lib-link.m4, lib/gl/m4/locale-fr.m4,
+       lib/gl/m4/multiarch.m4, lib/gl/m4/stdint.m4, lib/gl/m4/wchar.m4,
+       lib/gl/m4/wchar_t.m4, lib/gl/m4/wint_t.m4, lib/gl/stdint.in.h,
+       lib/gl/wchar.in.h, lib/gltests/Makefile.am: Update gnulib files.
+
+2009-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/override/lib/stdint.in.h.diff: Update.
+
+2008-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Fix comment.
+
+2008-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Fix warning initialization.
+
+2008-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Add warning flag.
+
+2008-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/manywarnings.m4, lib/nfkc.c, maint.mk: Update gnulib files.
+       Fix warning.
+
+2008-12-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix java jar path.
+
+2008-12-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, java/gnu/inet/encoding/CombiningClass.java,
+       java/gnu/inet/encoding/Composition.java,
+       java/gnu/inet/encoding/DecompositionKeys.java,
+       java/gnu/inet/encoding/DecompositionMappings.java,
+       java/gnu/inet/encoding/IDNAException.java,
+       java/gnu/inet/encoding/NFKC.java,
+       java/gnu/inet/encoding/Punycode.java,
+       java/gnu/inet/encoding/PunycodeException.java,
+       java/gnu/inet/encoding/RFC3454.java,
+       java/gnu/inet/encoding/StringprepException.java,
+       java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java: Improve
+       JavaDoc output.
+
+2008-12-02  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/manywarnings.m4: Update gnulib files.
+
+2008-12-02  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, doc/gendocs_template, gl/Makefile.am,
+       gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/include_next.m4,
+       gl/m4/warnings.m4, lib/gl/m4/include_next.m4, lib/gl/stdint.in.h,
+       maint.mk: Update gnulib files.
+
+2008-11-29  Simon Josefsson <simon@josefsson.org>
+
+       * gl/override/doc/gendocs_template.diff: Fix
+
+2008-11-29  Simon Josefsson <simon@josefsson.org>
+
+       * gl/override/doc/gendocs_template.diff: Fix javadoc pointer.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Rewrite warning initializations.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/warnings.m4: Update gnulib files.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk, configure.ac: Simplify warning handling.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, gl/m4/warnings.m4: Make configure slightly faster.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk, configure.ac: Disable -Wunreachable-code.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, gl/override/lib/progname.h.diff, gl/progname.h,
+       lib/toutf8.c: Fix warnings.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk, examples/example3.c, examples/example4.c,
+       examples/example5.c, src/Makefile.am: Fix warnings.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk, tests/tst_nfkc.c, tests/tst_pr29.c, tests/utils.h: Fix
+       warnings.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk, gl/gettext.h, gl/override/lib/gettext.h.diff,
+       lib/gl/gettext.h, lib/gl/override/lib/gettext.h.diff: Fix vla
+       warnings.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk, lib/idna.c, lib/nfkc.c: Fix warnings.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, gl/m4/warnings.m4: Make it easier to read warning
+       settings.
+
+2008-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gnupload: Update gnulib files.
+
+2008-11-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-11-13  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Fix warning.
+
+2008-11-13  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk, configure.ac, examples/example.c, tests/tst_strerror.c,
+       tests/tst_tld.c: Enable warnings.  Fix warnings.
+
+2008-11-13  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Fix warnings.
+
+2008-11-12  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.pc.in: Add URL field.
+
+2008-11-12  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, m4/update-header-version.m4, m4/valgrind.m4: Use
+       external macros for shared operations.
+
+2008-11-12  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Remove linker script message.
+
+2008-11-12  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4: Update gnulib files.
+
+2008-11-12  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, build-aux/pmccabe2html, cfg.mk, configure.ac,
+       gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4,
+       gl/m4/warnings.m4: Update gnulib files.  Use warnings module.
+
+2008-11-12  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Neatify.
+
+2008-11-04  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Use GFDLv1.3+ as license.
+
+2008-11-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/Makefile.am, doc/fdl-1.3.texi, doc/fdl.texi,
+       doc/libidn.texi, gl/Makefile.am, gl/m4/gnulib-cache.m4,
+       gl/m4/gnulib-comp.m4, gl/m4/include_next.m4, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/include_next.m4,
+       lib/gl/m4/strdup.m4, lib/gl/strdup.c, maint.mk: Update gnulib files.
+       Use GFDLv1.3+ for manual.
+
+2008-11-03  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/IDNA.java,
+       java/gnu/inet/encoding/Punycode.java: Fix Javadoc comments on
+       important classes.
+
+2008-10-30  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: The -DLIBIDN_BUILDING Windows hack is no longer
+       needed.
+
+2008-10-29  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/doxygen/Doxyfile.in: Disable man pages.
+
+2008-10-29  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/doxygen/Doxyfile.in: Fix typo.
+
+2008-10-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, contrib/doxygen/Doxyfile.in, contrib/doxygen/Doxyfile.orig: 
+       Modernize doxygen configuration.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Use coverage rules from gnulib.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * maint.mk: Update gnulib files.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac, lib/stringprep.h: Bump versions.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.11.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/texinfo.css: Use white background.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * gltests/Makefile.am, lib/gltests/Makefile.am: Update gnulib files.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Sync with gnutls.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Generalize coverage rules.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_tld.c: Increase code coverage.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_pr29.c: Increase code coverage.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, tests/Makefile.am, tests/tst_idna.c, tests/tst_strerror.c,
+       tests/tst_toutf8.c: Increase code coverage in self-tests.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_strerror.c: Increase code coverage.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_stringprep.c: Increase code coverage.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Fix web-coverage rule.
+
+2008-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Fix release target.  Add web-coverage targets.
+
+2008-10-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-10-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, gltests/Makefile.am, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/strdup.m4, lib/gl/strdup.c, lib/gltests/Makefile.am: 
+       Revert gnulib avoid of strdup.
+
+2008-10-27  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Add coverage rules.
+
+2008-10-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, csharp/IDNA.cs, csharp/IDNAException.cs,
+       csharp/Makefile.am, csharp/NFKC.cs, csharp/Punycode.cs,
+       csharp/PunycodeException.cs, csharp/Stringprep.cs,
+       csharp/StringprepException.cs, csharp/generate/AssemblyInfo.cs,
+       csharp/generate/GenerateNFKC.cs,
+       csharp/generate/GenerateRFC3454.cs, csharp/generate/HashSet.cs,
+       csharp/generate/Program.cs, csharp/generate/Tokenizer.cs: Re-add
+       lost copyright headers for C# port.
+
+2008-10-27  Simon Josefsson <simon@josefsson.org>
+
+       * gl/unistd.in.h: Update gnulib files.
+
+2008-10-22  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Re-license under GPLv3.
+
+2008-10-22  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Replace - with \- in man page output in more places.
+
+2008-10-22  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Reduce code duplication.
+
+2008-10-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-10-22  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Use GPLv3.  Clarify copyright and license.  Use GAP for
+       man page license.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Fix mingw32 rule.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/version.c: Use STRINGPREP_VERSION instead of PACKAGE_VERSION
+       for MSVS builds.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Change win32 files.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * win32/include/config.h: Extracted from gen-win32-headers.pl.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * win32/include/Wild.pm: Rm.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, lib/idna.h, lib/stringprep.h,
+       win32/include/gen-win32-headers.pl, win32/libidn.vcproj: Avoid perl
+       dependency on Windows.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h: Cleanups, preparing for Win32 fixes.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.h: Cleanups, preparing for Win32 fixes.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Fix last commit.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * FAQ, configure.ac, lib/Makefile.am, lib/stringprep.h,
+       lib/stringprep.h.in: Don't use substition for stringprep.h header
+       file.
+
+2008-10-21  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/errno.in.h, gl/m4/gnulib-common.m4,
+       gl/m4/unistd_h.m4, gl/stdarg.in.h, gl/string.in.h, gl/unistd.in.h,
+       lib/gl/iconv.in.h, lib/gl/m4/gnulib-common.m4, lib/gl/stdint.in.h,
+       lib/gl/string.in.h, lib/gl/wchar.in.h: Update gnulib files.
+
+2008-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/pmccabe2html: Update gnulib files.
+
+2008-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/cyclo/Makefile.am: Update gnulib files.
+
+2008-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac, doc/Makefile.am, doc/cyclo/Makefile.am,
+       doc/prmgt/Makefile.am: Rename doc/prmgt/ to doc/cyclo/.
+
+2008-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, gl/Makefile.am, gl/m4/unistd_h.m4, gl/unistd.in.h: 
+       Update gnulib files.
+
+2008-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/prmgt/Makefile.am: Fix.
+
+2008-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Add prmgt/.
+
+2008-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/prmgt/Makefile, doc/prmgt/Makefile.am~,
+       doc/prmgt/Makefile.in, doc/prmgt/libidn-cyclo.html,
+       doc/prmgt/pmccabe.css: Remove accidentally added files.
+
+2008-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/pmccabe.css, build-aux/pmccabe2html,
+       gl/m4/pmccabe2html.m4: Update gnulib files.
+
+2008-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, doc/prmgt/Makefile, doc/prmgt/Makefile.am,
+       doc/prmgt/Makefile.am~, doc/prmgt/Makefile.in,
+       doc/prmgt/libidn-cyclo.html, doc/prmgt/pmccabe.css, gl/Makefile.am,
+       gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: Use pmccabe2html.
+
+2008-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/errno.in.h, gl/m4/unistd_h.m4, gl/strerror.c,
+       gl/unistd.in.h, lib/gl/c-ctype.h: Update gnulib files.
+
+2008-09-30  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/unistd_h.m4, gl/unistd.in.h,
+       lib/gl/m4/iconv_h.m4, lib/gl/m4/iconv_open.m4, lib/gl/m4/wchar.m4: 
+       Update gnulib files.
+
+2008-09-29  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Need AC_CONFIG_MACRO_DIR too, to avoid libtool
+       warnings, sigh.
+
+2008-09-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-09-26  Simon Josefsson <simon@josefsson.org>
+
+       * po/eo.po.in, po/fr.po.in: Sync with TP.
+
+2008-09-26  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-cache.m4, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-cache.m4: Update gnulib files.
+
+2008-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, doc/reference/Makefile.am: Enable automake warnings.
+
+2008-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * README: Say 'or later' wrt licenses.
+
+2008-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/texinfo.css: Improve cosmetics.
+
+2008-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/texinfo.css: Minor cosmetic fixes.
+
+2008-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Add AC_COPYRIGHT.
+
+2008-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, cfg.mk, configure.ac, examples/Makefile.am,
+       lib/Makefile.am, src/Makefile.am, tests/Makefile.am: Support a
+       WARN_CFLAGS to trigger compiler warnings.
+
+2008-09-22  Simon Josefsson <simon@josefsson.org>
+
+       * : Touch.
+
+2008-09-18  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/doxygen/gdoc2doxygen, lib/gen-stringprep-tables.pl,
+       lib/gen-tld-tables.pl, lib/gen-unicode-tables.pl: Remove final
+       references to GPLv2.
+
+2008-09-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/malloc.m4,
+       lib/gl/m4/stdlib_h.m4, lib/gl/m4/strdup.m4, lib/gl/m4/unistd_h.m4,
+       lib/gl/malloc.c, lib/gl/stdlib.in.h, lib/gl/strdup.c,
+       lib/gl/unistd.in.h, lib/gltests/Makefile.am,
+       lib/gltests/test-stdlib.c, lib/gltests/test-unistd.c: Assume strdup.
+
+2008-09-18  Simon Josefsson <simon@josefsson.org>
+
+       * gl/errno.in.h, gl/m4/errno_h.m4, gltests/test-errno.c: Add.
+
+2008-09-18  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-comp.m4, gl/m4/strerror.m4,
+       gl/strerror.c, gltests/Makefile.am, gltests/test-strerror.c: Update
+       gnulib files.
+
+2008-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/config.rpath, gl/m4/include_next.m4,
+       lib/gl/m4/include_next.m4: Update gnulib files.
+
+2008-09-02  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/include_next.m4, gl/stdarg.in.h,
+       gl/string.in.h, gl/unistd.in.h, lib/gl/Makefile.am,
+       lib/gl/iconv.in.h, lib/gl/m4/include_next.m4,
+       lib/gl/m4/lib-link.m4, lib/gl/m4/lib-prefix.m4, lib/gl/stdint.in.h,
+       lib/gl/stdlib.in.h, lib/gl/string.in.h, lib/gl/unistd.in.h,
+       lib/gl/wchar.in.h: Update gnulib files.
+
+2008-08-29  Simon Josefsson <simon@josefsson.org>
+
+       * maint.mk: Update gnulib files.
+
+2008-08-29  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Don't store negativa values in a size_t.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.sgml: Sync.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Improve.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.sgml: Sync.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Mention krb5 profile.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, doc/reference/libidn-docs.sgml: Add "or later"
+       clauses when talking about license versions Suggested by
+       karl@freefriends.org (Karl Berry).
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, cfg.mk: Move maintainer targets from Makefile.am to
+       cfg.mk.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Use git2cl directly.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Typo.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Split release target.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Generalize release target.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Create a copy of released files.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Copy all of javadoc.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix typo.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Dist more.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.10.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * win32/include/gen-win32-headers.pl: Declare strverscmp.
+
+2008-08-27  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Fix warnings.
+
+2008-08-26  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Remove freshmeat-submit template, no longer used.
+
+2008-08-26  Simon Josefsson <simon@josefsson.org>
+
+       * .clcopying, .cvscopying, .cvsusers, Makefile.am: Rename
+       .cvscopying to .clcopying.
+
+2008-08-26  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile: Update gnulib files.
+
+2008-08-26  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gunibreak.h, lib/gunicomp.h, lib/gunidecomp.h: Add generated
+       files because perl 5.10 breaks gen-unicode-tables.pl.
+
+2008-08-26  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/id.po.in: Sync with TP.
+
+2008-08-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, src/idn.c, src/idn.ggo: idn: accept -n as short form
+       for --nfkc.  Before '-k' was used as the short form, but all
+       documentation has said '-n'.  We now accept both short forms, and -n
+       remains the documented short form.  Reported by John McGowan
+       <jmcgowan@inch.com> in
+
+       <http://lists.gnu.org/archive/html/help-libidn/2008-08/msg00000.html>.
+
+2008-08-21  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/autobuild.m4, gl/m4/string_h.m4,
+       gl/string.in.h, lib/gl/Makefile.am, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/string_h.m4, lib/gl/m4/strverscmp.m4, lib/gl/string.in.h,
+       lib/gl/strverscmp.h, lib/gltests/Makefile.am,
+       lib/gltests/test-strverscmp.c, lib/version.c: Update gnulib files.
+
+2008-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Don't try to add tar in www dir.
+
+2008-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, gl/Makefile.am, gl/m4/autobuild.m4,
+       gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, m4/autobuild.m4: Update
+       gnulib files.
+
+2008-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * README: Fix URLs.
+
+2008-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix URLs.
+
+2008-08-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Don't put releases in www directory, after discussion
+       with Savannah admins.
+
+2008-08-06  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, build-aux/gnupload, gl/m4/gnulib-comp.m4,
+       lib/gl/m4/gnulib-comp.m4: Update gnulib files.
+
+2008-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/cs.po.in, po/it.po.in, po/nl.po.in, po/pl.po.in,
+       po/vi.po.in, po/zh_CN.po.in: Sync with TP.
+
+2008-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2008-07-01  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2008-07-01  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac: Add gltests/ directories.
+
+2008-07-01  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2008-07-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.9.
+
+2008-07-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-07-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2008-07-01  Simon Josefsson <simon@josefsson.org>
+
+       * po/cs.po.in, po/nl.po.in, po/pl.po.in, po/vi.po.in: Sync with TP.
+
+2008-07-01  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, gl/Makefile.am, gl/m4/gnulib-cache.m4,
+       gl/m4/gnulib-comp.m4, gl/m4/gnulib-tool.m4, gltests/Makefile.am,
+       gltests/test-strerror.c, gltests/test-string.c,
+       gltests/test-unistd.c, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/gnulib-tool.m4, lib/gl/m4/locale-fr.m4,
+       lib/gl/m4/locale-tr.m4, lib/gl/m4/wchar_t.m4, lib/gl/m4/wint_t.m4,
+       lib/gltests/Makefile.am, lib/gltests/dummy.c,
+       lib/gltests/intprops.h, lib/gltests/test-c-ctype.c,
+       lib/gltests/test-c-strcase.sh, lib/gltests/test-c-strcasecmp.c,
+       lib/gltests/test-c-strncasecmp.c, lib/gltests/test-iconv.c,
+       lib/gltests/test-stdbool.c, lib/gltests/test-stdint.c,
+       lib/gltests/test-stdlib.c, lib/gltests/test-striconv.c,
+       lib/gltests/test-string.c, lib/gltests/test-unistd.c,
+       lib/gltests/test-wchar.c, lib/gltests/verify.h: Update gnulib files.
+
+2008-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, csharp/generate/Tokenizer.cs: Work around C# compiler bug.
+
+2008-06-17  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, doc/gendocs_template: Update gnulib files.
+
+2008-06-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/rfc3454.txt: Remove more text.
+
+2008-06-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Drop invariant sections.
+
+2008-05-30  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/stdbool.in.h, maint.mk: Update gnulib files.
+
+2008-05-19  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-common.m4, gl/m4/gnulib-comp.m4,
+       lib/gl/m4/gnulib-common.m4, lib/gl/m4/gnulib-comp.m4: Update gnulib
+       files.
+
+2008-05-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-05-12  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/string_h.m4, gl/string.in.h,
+       lib/gl/Makefile.am, lib/gl/m4/stdlib_h.m4, lib/gl/m4/string_h.m4,
+       lib/gl/stdlib.in.h, lib/gl/string.in.h: Update gnulib files.
+
+2008-04-28  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gendocs.sh: Update gnulib files.
+
+2008-04-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-04-28  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: Use singularis STRING.  Suggested by Benno
+       Schulenberg <coordinator@translationproject.org>.
+
+2008-04-28  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Don't gettext error code.
+
+2008-04-28  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Don't gettextize debug messages.
+
+2008-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, src/idn.c: idn: fix error message when NFKC fails.
+       Reported by Benno Schulenberg <coordinator@translationproject.org>.
+
+2008-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2008-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2008-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.8.
+
+2008-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/extensions.m4, gl/m4/getopt.m4, gl/m4/gnulib-common.m4,
+       gl/m4/gnulib-comp.m4, gl/m4/strerror.m4, lib/gl/m4/extensions.m4,
+       lib/gl/m4/gnulib-common.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/stdint.m4, lib/gl/wchar.in.h: Update gnulib files.
+
+2008-04-13  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2008-04-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-04-13  Simon Josefsson <simon@josefsson.org>
+
+       * po/nl.po.in: Sync with TP.
+
+2008-04-13  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, cfg.mk, po/Makevars, po/cs.po, po/cs.po.in,
+       po/da.po, po/da.po.in, po/de.po, po/de.po.in, po/eo.po,
+       po/eo.po.in, po/fi.po, po/fi.po.in, po/fr.po, po/fr.po.in,
+       po/it.po, po/it.po.in, po/ja.po, po/ja.po.in, po/nl.po,
+       po/nl.po.in, po/pl.po, po/pl.po.in, po/ro.po, po/ro.po.in,
+       po/rw.po, po/rw.po.in, po/sr.po, po/sr.po.in, po/vi.po,
+       po/vi.po.in, po/zh_CN.po, po/zh_CN.po.in: Move translations to
+       *.po.in to avoid merge conflicts.  This allows us to avoid
+       --no-location as well.
+
+2008-04-10  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2008-04-10  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.7.
+
+2008-04-10  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/include_next.m4, lib/gl/m4/include_next.m4,
+       lib/gl/m4/stdint.m4: Update gnulib files.
+
+2008-04-07  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, build-aux/gnupload: Update gnulib files.
+
+2008-04-02  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, NEWS, win32/include/unistd.h: Need dummy unistd.h for
+       native Win32 builds.  Reported by Adam Strzelecki <ono@java.pl>.
+
+2008-04-01  Simon Josefsson <simon@josefsson.org>
+
+       * lib/strerror-idna.c, lib/strerror-pr29.c,
+       lib/strerror-punycode.c, lib/strerror-stringprep.c,
+       lib/strerror-tld.c: Fix syntax-check warnings.
+
+2008-04-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Mention idn --nfkc.
+
+2008-04-01  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, lib/gl/Makefile.am, lib/gl/m4/stdlib_h.m4,
+       lib/gl/stdlib.in.h, lib/gl/wchar.in.h: Update gnulib files.
+
+2008-03-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, src/idn.c, src/idn.ggo: Add --nfkc parameter to idn tool.
+
+2008-03-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Need @menu for Windows installation @node.
+
+2008-03-25  Simon Josefsson <simon@josefsson.org>
+
+       * cfg.mk: Need config.rpath workaround here.
+
+2008-03-25  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, build-aux/GNUmakefile, build-aux/maint.mk,
+       gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4,
+       lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4, maint.mk: Update
+       gnulib files, reverts local GNUmakefile hack.
+
+2008-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/GNUmakefile: Update gnulib files.
+
+2008-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Make windows installation instructions a separate
+       node, for easy referencing.
+
+2008-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2008-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/GNUmakefile, cfg.mk, maint-cfg.mk: Update gnulib files.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.6.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * README: Note that libidn is a GNU project.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am, doc/reference/tmpl/libidn-unused.sgml,
+       gtk-doc.make: Update GTK-DOC build system.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Dist Visual Studio files.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Sync with TP.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Sync with TP.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * win32/include/Wild.pm, win32/include/ac-stdint.h,
+       win32/include/gen-win32-headers.pl, win32/include/idn-int.h,
+       win32/include/stdbool.h: Add license statements on files.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS, NEWS, THANKS, doc/libidn.texi, win32/include/Wild.pm,
+       win32/include/ac-stdint.h, win32/include/gen-win32-headers.pl,
+       win32/include/idn-int.h, win32/include/stdbool.h, win32/libidn.sln,
+       win32/libidn.vcproj: Add native Visual Studio port, contributed by
+       Adam Strzelecki.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Doc fix.  Clarify difference between domain label and
+       domain name.
+
+2008-03-18  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4,
+       lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4: Update gnulib files.
+
+2008-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, gl/Makefile.am, gl/m4/gnulib-comp.m4,
+       gl/m4/include_next.m4, gl/m4/stdarg.m4, gl/stdarg.in.h,
+       lib/gl/Makefile.am, lib/gl/m4/absolute-header.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/include_next.m4,
+       lib/gl/m4/lib-link.m4: Update gnulib files.
+
+2008-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/rfc3454.txt: Remove non-free portions of RFC,
+       leaving un-copyrightable material.  Also add some quotes from
+       earlier e-mails about licensing on this.
+
+2008-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gendocs.sh, gl/getopt.c: Bump versions.
+
+2008-02-25  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/unistd_h.m4, gl/unistd.in.h,
+       lib/gl/Makefile.am, lib/gl/m4/unistd_h.m4, lib/gl/unistd.in.h: 
+       Update gnulib files.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Bump.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix release target.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.5.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Sync with TP.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Sync with TP.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix charset info.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, examples/example.c, examples/example3.c,
+       examples/example4.c, examples/example5.c: Fix encoding.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4, lib/gl/stdint.in.h: 
+       Update gnulib files.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add link.
+
+2008-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, lib/gl/override/lib/stdint.in.h.diff: Don't include
+       wchar.h, we don't need it.  Reported by Mike Frysinger
+       <vapier@gentoo.org>, see
+       <http://thread.gmane.org/gmane.comp.gnu.libidn.general/118>.
+
+2008-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, Makefile.am, maint-cfg.mk: Brace expansion is not
+       POSIX portable.
+
+2008-02-03  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gnupload: Update gnulib files.
+
+2008-01-24  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/fi.po: Sync with TP.
+
+2008-01-24  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Sync with TP.
+
+2008-01-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: 
+       Update gnulib files.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/announce-gen: Update gnulib files.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Back-port from josefsson.org.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix markup.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Mention v1.0 as milestone.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * po/it.po: Sync with TP.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix markup.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add 'On Label Separators' section.  Add
+       @documentencoding.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, maint-cfg.mk: Re-add config.rpath hack.
+
+2008-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/announce-gen, build-aux/config.rpath,
+       build-aux/gendocs.sh, gl/Makefile.am, gl/error.h,
+       gl/m4/string_h.m4, gl/string.in.h, lib/gl/Makefile.am,
+       lib/gl/m4/string_h.m4, lib/gl/string.in.h: Update gnulib files.
+
+2008-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * po/eo.po: Sync with TP.
+
+2008-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2008-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * po/cs.po, po/nl.po, po/pl.po, po/vi.po: Sync with TP.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.4.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Typos.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: 
+       Update gnulib files.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * gl/progname.c, gl/progname.h: Add progname gnulib module.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix --help and --version
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am, src/idn.c: Fix --help and --version
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am, src/idn.c: Use gnulib version-etc for --version.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Bump copyright years.
+
+2008-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Add 2008 to copyright years.
+
+2008-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Nicify --version output by changing AC_INIT project
+       name.
+
+2008-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/dummy.c, gl/m4/gnulib-cache.m4,
+       gl/m4/gnulib-comp.m4, gl/m4/stdarg.m4, gl/version-etc.c,
+       gl/version-etc.h: Add version-etc gnulib module.
+
+2008-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2008-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/string_h.m4, gl/m4/unistd_h.m4,
+       gl/string.in.h, gl/unistd.in.h, lib/gl/Makefile.am,
+       lib/gl/m4/stdlib_h.m4, lib/gl/m4/string_h.m4,
+       lib/gl/m4/unistd_h.m4, lib/gl/stdlib.in.h, lib/gl/string.in.h,
+       lib/gl/unistd.in.h: Update gnulib files.
+
+2008-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2008-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/fi.po, po/nl.po, po/vi.po: Sync with TP.
+
+2007-12-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-12-20  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Use .exe suffix for C# tool, required by Mono.
+
+2007-12-20  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gnupload, gl/m4/gnulib-comp.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/stdint.in.h: Update gnulib files.
+
+2007-12-20  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Generalize.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Don't copy *.sig until it exists.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.3.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Reorder release target.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Reorder.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, maint-cfg.mk: Remove config.rpath hack.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gendocs.sh, doc/fdl.texi, doc/gendocs_template,
+       doc/gpl-3.0.texi, gl/Makefile.am, gl/m4/csharpcomp.m4,
+       gl/m4/strerror.m4, gl/m4/string_h.m4, gl/m4/unistd_h.m4,
+       gl/string.in.h, gl/unistd.in.h, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconv.m4,
+       lib/gl/m4/lib-link.m4, lib/gl/m4/longlong.m4,
+       lib/gl/m4/stdlib_h.m4, lib/gl/m4/string_h.m4,
+       lib/gl/m4/unistd_h.m4, lib/gl/stdlib.in.h, lib/gl/string.in.h,
+       lib/gl/unistd.in.h: Update gnulib files.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/m4/ulonglong.m4: Update gnulib files.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Use gettext 0.17.
+
+2007-10-29  Simon Josefsson <simon@josefsson.org>
+
+       * gl/gettext.h, gl/string.in.h, gl/unistd.in.h: Update gnulib files.
+
+2007-10-29  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-cache.m4, lib/gl/stdint.in.h, lib/gl/stdlib.in.h: 
+       Update gnulib files.
+
+2007-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/maint.mk, gl/m4/gnulib-common.m4, gl/strerror.c,
+       lib/gl/m4/gnulib-common.m4, lib/gl/m4/ulonglong.m4,
+       lib/gl/stdbool.in.h, lib/gl/stdint.in.h: Update gnulib files.
+
+2007-10-19  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/Makefile.am, lib/gl/iconv.in.h, lib/gl/iconv_open.c,
+       lib/gl/m4/iconv_h.m4, lib/gl/m4/iconv_open.m4,
+       lib/gl/m4/longlong.m4, lib/gl/m4/ulonglong.m4: Update gnulib files.
+
+2007-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Fix.
+
+2007-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2007-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/cs.po: Sync with TP.
+
+2007-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/intprops.h, gl/m4/gnulib-comp.m4,
+       gl/m4/strerror.m4, gl/strerror.c, gl/string.in.h,
+       lib/gl/string.in.h: Update gnulib files.
+
+2007-10-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-10-08  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Typo.
+
+2007-10-08  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix install section.
+
+2007-10-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-10-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2007-10-08  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/dummy.c, gl/error.c, gl/error.h, gl/getopt.c,
+       gl/getopt.in.h, gl/getopt1.c, gl/getopt_int.h, gl/gettext.h,
+       gl/m4/gnulib-cache.m4, gl/strerror.c, gl/string.in.h,
+       gl/unistd.in.h: Use GPLv3 in top-level gnulib files.
+
+2007-10-08  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/csharpcomp.sh.in, gl/Makefile.am, gl/dummy.c,
+       gl/error.c, gl/error.h, gl/getopt.c, gl/getopt.in.h, gl/getopt1.c,
+       gl/getopt_.h, gl/getopt_int.h, gl/m4/gnulib-comp.m4, gl/strerror.c,
+       gl/string.in.h, gl/string_.h, gl/unistd.in.h, gl/unistd_.h,
+       lib/gl/Makefile.am, lib/gl/iconv.in.h, lib/gl/iconv_.h,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/stdint.m4, lib/gl/stdbool.in.h,
+       lib/gl/stdbool_.h, lib/gl/stdint.in.h, lib/gl/stdint_.h,
+       lib/gl/stdlib.in.h, lib/gl/stdlib_.h, lib/gl/string.in.h,
+       lib/gl/string_.h, lib/gl/unistd.in.h, lib/gl/unistd_.h,
+       lib/gl/wchar.in.h, lib/gl/wchar_.h: Update gnulib files.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix git-tag -l in release target.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.2.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Remove README-alpha.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Also upload to ftp.gnu.org.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Re-order to avoid autoreconf warning.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Remove sv.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Sync with TP.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Remove (not part of translation project).
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/csharpcomp.m4, gl/m4/gnulib-comp.m4,
+       lib/gl/Makefile.am, lib/gl/m4/absolute-header.m4,
+       lib/gl/m4/extensions.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/string_h.m4, lib/gl/m4/strverscmp.m4, lib/gl/string_.h: 
+       Update gnulib files.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/extensions.m4, gl/m4/strerror.m4, gl/m4/string_h.m4,
+       gl/strerror.c, gl/string_.h, lib/gl/m4/malloc.m4,
+       lib/gl/m4/stdlib_h.m4, lib/gl/m4/unistd_h.m4, lib/gl/malloc.c,
+       lib/gl/stdlib_.h, lib/gl/unistd_.h: Update gnulib files.
+
+2007-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, build-aux/.cvsignore, contrib/doxygen/.cvsignore,
+       contrib/java/.cvsignore, csharp/.cvsignore, doc/.cvsignore,
+       doc/java/.cvsignore, doc/java/gnu/inet/encoding/.cvsignore,
+       doc/java/resources/.cvsignore, doc/man/.cvsignore,
+       doc/reference/.cvsignore, doc/reference/tmpl/.cvsignore,
+       doc/specifications/.cvsignore, doc/tld/.cvsignore,
+       examples/.cvsignore, gl/.cvsignore, java/.cvsignore,
+       java/gnu/.cvsignore, java/gnu/inet/.cvsignore,
+       java/gnu/inet/encoding/.cvsignore, java/misc/.cvsignore,
+       lib/.cvsignore, lib/gl/.cvsignore, libc/.cvsignore, m4/.cvsignore,
+       po/.cvsignore, src/.cvsignore, tests/.cvsignore: Remove unused
+       .cvsignore's.
+
+2007-09-01  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2007-09-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.1.
+
+2007-09-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-09-01  Simon Josefsson <simon@josefsson.org>
+
+       * po/nl.po: Sync with TP.
+
+2007-09-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Wrap.
+
+2007-09-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2007-09-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-09-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-08-31  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Drop gnits mode.
+
+2007-08-31  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Define LIBIDN_BUILDING, for Windows hack in
+       stringprep.h.in.  Inspired by report and patch by "Christian
+       Ehrlicher" <Ch.Ehrlicher@gmx.de>, see
+
+       <http://lists.gnu.org/archive/html/help-libidn/2007-08/msg00003.html>.
+
+2007-08-31  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h.in: Mark variables with __declspec(import) on
+       Windows.  Inspired by report and patch by "Christian Ehrlicher"
+       <Ch.Ehrlicher@gmx.de>, see
+
+       <http://lists.gnu.org/archive/html/help-libidn/2007-08/msg00003.html>.
+
+2007-08-31  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Avoid using #include_next in idn-int.h when
+       looking for stdint.h.  Reported by Remko van der Vossen
+       <wich@stack.nl> in
+       <http://thread.gmane.org/gmane.comp.gnu.libidn.general/65>, this
+       tiny patch was suggested by Bruno Haible in
+       <http://permalink.gmane.org/gmane.comp.lib.gnulib.bugs/10602>.
+
+2007-08-31  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/GNUmakefile, build-aux/maint.mk, lib/gl/m4/stdint.m4: 
+       Update gnulib files.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Generated.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.sgml: Fix.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.sgml: Sync with libidn.texi.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix intro.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix gpl/lgpl filenames.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 1.0.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update PGP key.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: Update license to GPLv3.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.sgml: Update, sync with libidn.texi.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Clarify license versions.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * examples/example.c, examples/example2.c, examples/example3.c,
+       examples/example4.c, examples/example5.c: Relicense examples/* to
+       GPLv3.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c, src/idn.ggo, src/idna.el, src/punycode.el,
+       tests/tst_idna.c, tests/tst_idna2.c, tests/tst_nfkc.c,
+       tests/tst_pr29.c, tests/tst_punycode.c, tests/tst_strerror.c,
+       tests/tst_stringprep.c, tests/tst_tld.c, tests/utils.c,
+       tests/utils.h: Relicense src/ and tests/ stuff to GPLv3.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, contrib/java/Makefile.am,
+       doc/Makefile.am, doc/java/Makefile.am,
+       doc/specifications/Makefile.am, doc/tld/Makefile.am,
+       examples/Makefile.am, src/Makefile.am, tests/Makefile.am: Relicense
+       Makefile.am and configure.ac to GPLv3.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * README: Clarify licenses.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * COPYING: Use GPLv3.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/include_next.m4: Update gnulib files.
+
+2007-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, build-aux/announce-gen, build-aux/config.rpath,
+       build-aux/gendocs.sh, build-aux/gnupload, build-aux/maint.mk,
+       doc/fdl.texi, doc/gendocs_template, doc/gpl-3.0.texi, doc/gpl.texi,
+       doc/lgpl-2.1.texi, doc/lgpl.texi, doc/libidn.texi, gl/Makefile.am,
+       gl/error.c, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4,
+       gl/m4/unistd_h.m4, gl/override/doc/gpl.texi.diff,
+       gl/override/doc/lgpl.texi.diff, gl/unistd_.h, lib/gl/Makefile.am,
+       lib/gl/iconv_.h, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconv_h.m4,
+       lib/gl/m4/include_next.m4, lib/gl/m4/stdint.m4,
+       lib/gl/m4/string_h.m4, lib/gl/m4/wchar.m4, lib/gl/stdint_.h,
+       lib/gl/string_.h, lib/gl/wchar_.h: Update gnulib files.
+
+2007-06-04  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2007-05-31  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * .cvscopying: Add year 2007.
+
+2007-05-31  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * ChangeLog: Generated.
+
+2007-05-31  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * NEWS: Version 0.6.14.
+
+2007-05-31  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * NEWS: Add.
+
+2007-05-31  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * NEWS: Add.
+
+2007-05-31  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * README-alpha: Cvs to git changes.
+
+2007-05-31  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * Makefile.am: Use git instead of cvs.
+
+2007-05-31  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2007-05-31  Simon Josefsson <jas@mocca.josefsson.org>
+
+       * NEWS: Add.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po,
+       po/vi.po, po/zh_CN.po: Generated.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.13.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Install libidn-components.png in infodir, fixes
+       broken image in the info manual.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am, doc/reference/libidn-docs.sgml: Fix
+       image filename.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/.cvsignore: [no log message]
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am, doc/libidn.texi: Rename @image files so that they
+       are prefixed with $PROJECT, so they can be installed in $infodir
+       without collisions.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * po/pl.po, po/vi.po: Sync with TP.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs_template, gl/Makefile.am, gl/m4/unistd_h.m4,
+       gl/override/doc/gendocs_template,
+       gl/override/doc/gendocs_template.diff, gl/unistd_.h,
+       lib/gl/Makefile.am, lib/gl/iconv_.h, lib/gl/m4/iconv.m4,
+       lib/gl/m4/stdint.m4, lib/gl/stdint_.h, lib/gl/string_.h,
+       lib/gl/wchar_.h: Update.
+
+2007-05-30  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2007-05-30  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-05-30  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Typo.
+
+2007-05-30  Simon Josefsson <simon@josefsson.org>
+
+       * README: Clarify license of C# port.
+
+2007-05-30  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Clarify license of java/csharp implementation.
+
+2007-04-25  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2007-04-25  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.12.
+
+2007-04-25  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2007-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2007-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * java/misc/Makefile.am: Use AM_JAVACFLAGS instead of JAVACFLAGS.
+       See
+
+       <http://ftp.gnu.org/gnu/Manuals/automake-1.7.2/html_node/automake_78.html>.Tiny patch from Petteri Räty <betelgeuse@gentoo.org>.
+
+2007-04-19  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/.cvsignore: [no log message]
+
+2007-04-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-04-19  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/gendocs.sh, gl/dummy.c, gl/m4/gnulib-comp.m4,
+       lib/gl/.cvsignore, lib/gl/Makefile.am, lib/gl/iconv_.h,
+       lib/gl/iconv_open-aix.gperf, lib/gl/iconv_open-hpux.gperf,
+       lib/gl/iconv_open-irix.gperf, lib/gl/iconv_open-osf.gperf,
+       lib/gl/iconv_open.c, lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconv.m4,
+       lib/gl/m4/iconv_h.m4, lib/gl/m4/iconv_open.m4, lib/gl/m4/stdint.m4,
+       lib/gl/stdbool_.h, lib/gl/string_.h, lib/gl/wchar_.h: Update.
+
+2007-04-02  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Fix typo.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.6.11.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.6.10.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.6.9.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po,
+       po/vi.po, po/zh_CN.po: Generated.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.11.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Fix path to csharpcomp.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Dist more.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Fix tests.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: fix
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/.cvsignore: [no log message]
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/generate/GenerateNFKC.cs: Fix typo.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/generate/GenerateNFKC.cs: Don't wait for newline from user
+       (breaks batch usage).  Fix typo.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/generate/GenerateRFC3454.cs: Don't wait for return from
+       user (breaks batch usage).
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/generate/GenerateRFC3454.cs: Fix namespace.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/IDNA.cs, csharp/IDNAException.cs, csharp/NFKC.cs,
+       csharp/Punycode.cs, csharp/PunycodeException.cs,
+       csharp/Stringprep.cs, csharp/StringprepException.cs,
+       csharp/libidn.cmbx, csharp/libidn.csproj,
+       csharp/libidn.csproj.user, csharp/libidn.prjx, csharp/libidn.sln: 
+       Update, from Alexander Gnauck <gnauck@ag-software.de>.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/CombiningClass.cs, csharp/Composition.cs,
+       csharp/DecompositionKeys.cs, csharp/DecompositionMappings.cs,
+       csharp/RFC3454.cs: Remove.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Generate generated files.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/generate/GenerateRFC3454.cs: AppendLine isn't supported by
+       cscc, use Append+\n.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am, csharp/generate/AssemblyInfo.cs,
+       csharp/generate/GenerateNFKC.cs,
+       csharp/generate/GenerateRFC3454.cs, csharp/generate/HashSet.cs,
+       csharp/generate/Program.cs, csharp/generate/Tokenizer.cs: Add code
+       to generate tables, from Alexander Gnauck <gnauck@ag-software.de>.
+
+2007-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * gl/dummy.c, gl/getopt_.h, lib/gl/stdint_.h: Update.
+
+2007-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2007-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2007-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Revert.
+
+2007-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/string.h: Update.
+
+2007-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * build-aux/.cvsignore, doc/.cvsignore, gl/.cvsignore,
+       lib/gl/.cvsignore: [no log message]
+
+2007-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, csharp/Makefile.am: Update gnulib.
+
+2007-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, announce-gen, build-aux/GNUmakefile,
+       build-aux/announce-gen, build-aux/config.rpath,
+       build-aux/csharpcomp.sh.in, build-aux/gendocs.sh,
+       build-aux/gnupload, build-aux/link-warning.h, build-aux/maint.mk,
+       csharpcomp.sh.in, gendocs.sh, gl/Makefile.am,
+       gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/unistd_h.m4,
+       gl/unistd_.h, gnupload, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/string_h.m4, lib/gl/string_.h, maint-cfg.mk, maint.mk: 
+       Update.
+
+2007-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Use build-aux.
+
+2007-02-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-klensin-idnabis-issues-01.txt: Add.
+
+2007-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/Makefile.am, lib/gl/m4/string_h.m4, lib/gl/string_.h: 
+       Update.
+
+2007-02-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-02-05  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/Makefile.am, lib/gl/c-ctype.c, lib/gl/c-ctype.h,
+       lib/gl/c-strcase.h, lib/gl/c-strcasecmp.c, lib/gl/c-strncasecmp.c,
+       lib/gl/iconvme.c, lib/gl/iconvme.h, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/iconvme.m4,
+       lib/gl/m4/stdbool.m4, lib/gl/stdbool_.h, lib/gl/striconv.c,
+       lib/gl/striconv.h, lib/gl/string.h, lib/toutf8.c: Update.
+
+2007-02-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-02-05  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/unistd_h.m4, lib/gl/Makefile.am, lib/gl/iconvme.c,
+       lib/gl/m4/extensions.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/strdup.m4, lib/gl/m4/string_h.m4, lib/gl/strdup.c,
+       lib/gl/strdup.h, lib/gl/string_.h: Update.
+
+2007-01-25  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/absolute-header.m4, gl/m4/gnulib-common.m4,
+       gl/m4/gnulib-comp.m4, gl/m4/unistd_h.m4, gl/unistd_.h,
+       lib/gl/Makefile.am, lib/gl/m4/gnulib-common.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/lib-link.m4,
+       lib/gl/m4/stdint.m4, lib/gl/m4/wchar.m4, lib/gl/stdint_.h,
+       lib/gl/wchar_.h: Update.
+
+2007-01-04  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2007-01-04  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po,
+       po/vi.po, po/zh_CN.po: Generated.
+
+2007-01-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.10.
+
+2007-01-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2007-01-04  Simon Josefsson <simon@josefsson.org>
+
+       * FAQ, NEWS, README, README-alpha, THANKS, TODO, configure.ac,
+       contrib/README, contrib/doxygen/gdoc2doxygen,
+       contrib/java/Makefile.am, contrib/java/README,
+       csharp/CombiningClass.cs, csharp/Composition.cs,
+       csharp/DecompositionKeys.cs, csharp/DecompositionMappings.cs,
+       csharp/IDNA.cs, csharp/IDNAException.cs, csharp/Makefile.am,
+       csharp/NFKC.cs, csharp/Punycode.cs, csharp/PunycodeException.cs,
+       csharp/RFC3454.cs, csharp/Stringprep.cs,
+       csharp/StringprepException.cs, doc/Makefile.am, doc/Makefile.gdoci,
+       doc/gdoc, doc/libidn.texi, doc/specifications/Makefile.am,
+       doc/tld/Makefile.am, doc/tld/README, examples/Makefile.am,
+       examples/README, examples/example.c, examples/example2.c,
+       examples/example3.c, examples/example4.c, examples/example5.c,
+       java/Makefile.am, java/gnu/inet/encoding/CombiningClass.java,
+       java/gnu/inet/encoding/Composition.java,
+       java/gnu/inet/encoding/DecompositionKeys.java,
+       java/gnu/inet/encoding/DecompositionMappings.java,
+       java/gnu/inet/encoding/IDNA.java,
+       java/gnu/inet/encoding/IDNAException.java,
+       java/gnu/inet/encoding/Makefile.am,
+       java/gnu/inet/encoding/NFKC.java,
+       java/gnu/inet/encoding/Punycode.java,
+       java/gnu/inet/encoding/PunycodeException.java,
+       java/gnu/inet/encoding/RFC3454.java,
+       java/gnu/inet/encoding/Stringprep.java,
+       java/gnu/inet/encoding/StringprepException.java,
+       java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java,
+       java/misc/Makefile.am, java/misc/TestIDNA.java,
+       java/misc/TestNFKC.java, lib/Makefile.am,
+       lib/gen-stringprep-tables.pl, lib/gen-tld-tables.pl,
+       lib/gen-unicode-tables.pl, lib/idn-free.c, lib/idn-free.h,
+       lib/idna.c, lib/idna.h, lib/nfkc.c, lib/pr29.c, lib/pr29.h,
+       lib/profiles.c, lib/punycode.c, lib/punycode.h,
+       lib/strerror-idna.c, lib/strerror-pr29.c, lib/strerror-punycode.c,
+       lib/strerror-stringprep.c, lib/strerror-tld.c, lib/stringprep.c,
+       lib/stringprep.h.in, lib/tld.c, lib/tld.h, lib/toutf8.c,
+       lib/version.c, libidn.pc.in, maint-cfg.mk, po/POTFILES.in,
+       src/Makefile.am, src/idn.c, src/idn.ggo, src/idna.el,
+       src/punycode.el, tests/Makefile.am, tests/tst_idna.c,
+       tests/tst_idna2.c, tests/tst_nfkc.c, tests/tst_pr29.c,
+       tests/tst_punycode.c, tests/tst_strerror.c, tests/tst_stringprep.c,
+       tests/tst_tld.c, tests/utils.c, tests/utils.h: Bump copyright years
+       (also add older years which I forgot to add earlier).
+
+2007-01-04  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update PGP key.
+
+2007-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * announce-gen, gl/Makefile.am, gl/m4/gnulib-cache.m4,
+       gl/m4/gnulib-comp.m4, lib/gl/Makefile.am,
+       lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4,
+       lib/gl/m4/lib-link.m4: Update.
+
+2006-12-28  Simon Josefsson <simon@josefsson.org>
+
+       * announce-gen, gl/Makefile.am, gl/m4/gnulib-cache.m4,
+       gl/m4/gnulib-comp.m4: Add.
+
+2006-12-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/iconvme.c, lib/gl/m4/lib-link.m4, lib/gl/m4/stdint.m4,
+       lib/gl/strdup.h: Update.
+
+2006-12-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-suignard-stringprep-bis-00.txt: Add.
+
+2006-12-10  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2006-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2006-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2006-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.9.
+
+2006-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * m4/.cvsignore: [no log message]
+
+2006-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * m4/codeset.m4, m4/iconv.m4, m4/lib-link.m4: Remove.
+
+2006-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump tool versions.
+
+2006-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/gettext.h, lib/gl/Makefile.am,
+       lib/gl/gettext.h, lib/gl/m4/stdint.m4: Update.
+
+2006-11-16  Simon Josefsson <simon@josefsson.org>
+
+       * java/misc/TestIDNA.java: Re-add test, with fixed code that doesn't
+       use Java 1.5 syntax.  Suggested by "Stephane Mikaty"
+       <mikaty@ecircle-ag.com>.
+
+2006-11-16  Simon Josefsson <simon@josefsson.org>
+
+       * java/misc/TestIDNA.java: Revert (didn't compile).
+
+2006-11-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2006-11-15  Simon Josefsson <simon@josefsson.org>
+
+       * java/misc/TestIDNA.java: New self-test to test for ToIDNA
+       regression regarding non-ascii dot-delimiters.  Tiny patch from
+       "Stephane Mikaty" <mikaty@ecircle-ag.com>.
+
+2006-11-15  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/IDNA.java: Fix non-ascii dot in strings,
+       tiny patch from "Stephane Mikaty" <mikaty@ecircle-ag.com>.
+
+2006-11-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-11-15  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/getopt_.h, gl/gettext.h, gl/m4/gnulib-comp.m4,
+       gnupload, lib/gl/Makefile.am, lib/gl/gettext.h,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/lib-link.m4,
+       lib/gl/m4/longlong.m4, lib/gl/stdint_.h: Update.
+
+2006-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2006-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/gettext.h, gl/m4/gnulib-comp.m4,
+       lib/gl/Makefile.am, lib/gl/gettext.h, lib/gl/iconvme.c,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/lib-link.m4, lib/gl/stdint_.h: 
+       Update.
+
+2006-10-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-faltstrom-idnabis-tables-01.txt: Add.
+
+2006-10-20  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-faltstrom-idnabis-tables-00.txt,
+       doc/specifications/draft-klensin-idnabis-issues-00.txt: Add.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po,
+       po/vi.po, po/zh_CN.po: Generated.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.8.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, src/idn.c: Assume locale.h and setlocale.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, lib/Makefile.am: Build lib/gl/ earlier.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/.cvsignore: [no log message]
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Build gl/ first.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am, lib/gl/Makefile.am,
+       lib/gl/m4/absolute-header.m4, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/longlong.m4,
+       lib/gl/m4/stdint.m4, lib/gl/m4/ulonglong.m4, lib/gl/stdint_.h,
+       po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po,
+       po/vi.po, po/zh_CN.po: Add stdint module to lib/.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/absolute-header.m4, gl/m4/gnulib-cache.m4,
+       gl/m4/gnulib-comp.m4, gl/m4/longlong.m4, gl/m4/stdint.m4,
+       gl/m4/strdup.m4, gl/m4/ulonglong.m4, gl/stdint_.h, gl/strdup.c,
+       gl/strdup.h: Remove.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Ignore all of lib/gl/.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Move libtool init, to avoid warnings.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/Makefile.am, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/strverscmp.m4,
+       lib/gl/strverscmp.c, lib/gl/strverscmp.h: Add strverscmp.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/version.c: Rewrite using strverscmp, to fix some corner-cases.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am, lib/gl/Makefile.am, lib/gl/gettext.h,
+       lib/gl/m4/gnulib-cache.m4, lib/gl/m4/gnulib-comp.m4, lib/iconvme.c,
+       lib/iconvme.h: Use iconvme from gnulib.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Ignore strdup.h.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gl/.cvsignore: [no log message]
+
+2006-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, gl/Makefile.am, gl/gettext.h,
+       gl/m4/gnulib-comp.m4, gl/m4/longlong.m4, gl/m4/stdint.m4,
+       gl/m4/ulonglong.m4, gl/stdint_.h, gl/strdup.c, gnupload,
+       lib/Makefile.am, lib/gl/Makefile.am, lib/gl/iconvme.c,
+       lib/gl/iconvme.h, lib/gl/m4/gnulib-cache.m4,
+       lib/gl/m4/gnulib-comp.m4, lib/gl/m4/gnulib-tool.m4,
+       lib/gl/m4/iconv.m4, lib/gl/m4/iconvme.m4, lib/gl/m4/lib-ld.m4,
+       lib/gl/m4/lib-link.m4, lib/gl/m4/lib-prefix.m4,
+       lib/gl/m4/strdup.m4, lib/gl/strdup.c, lib/gl/strdup.h: Separate
+       gnulib directories.  Also update gnulib files.
+
+2006-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-alvestrand-idna-bidi-00.txt: Add.
+
+2006-10-14  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/rfc4713.txt: Add.
+
+2006-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/rfc4690.txt: Add.
+
+2006-09-27  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2006-09-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4, gl/override/doc/gpl.texi.diff,
+       gl/override/doc/lgpl.texi.diff, gl/override/gpl.texi.diff,
+       gl/override/lgpl.texi.diff: Update.
+
+2006-09-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gpl.texi, doc/lgpl.texi, gl/override/gpl.texi.diff,
+       gl/override/lgpl.texi.diff: Update.
+
+2006-09-14  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/error.c, gl/getopt.c, gl/getopt1.c,
+       gl/strdup.c: Update.
+
+2006-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2006-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.7.
+
+2006-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2006-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4, gl/m4/onceonly_2_57.m4: Update.
+
+2006-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2006-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: For C99 stdint.h platforms, create a dummy
+       idn-int.h that include stdint.h, reported by Paul Howarth
+       <paul@city-fan.org>.
+
+2006-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2006-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2006-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Move the index to the end.
+
+2006-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix refs.
+
+2006-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/fdl.texi, doc/gpl.texi, doc/lgpl.texi, doc/libidn.texi,
+       gl/Makefile.am, gl/m4/gnulib-comp.m4: Update.
+
+2006-09-04  Simon Josefsson <simon@josefsson.org>
+
+       * doc/fdl.texi, doc/gpl.texi, doc/lgpl.texi: Update.
+
+2006-09-04  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2006-09-04  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am, doc/gpl.texi, doc/lgpl.texi, doc/libidn.texi,
+       gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: Add
+       lgpl and gpl from gnulib.
+
+2006-08-30  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Use gnupload from gnulib.
+
+2006-08-30  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4,
+       gnupload: Update.
+
+2006-08-30  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/error.c, gl/m4/gnulib-cache.m4,
+       gl/m4/stdint.m4, gl/stdint_.h: Update.
+
+2006-08-28  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/stdint.m4,
+       gl/stdint_.h: Update.
+
+2006-08-23  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2006-08-23  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po,
+       po/vi.po, po/zh_CN.po: Generated.
+
+2006-08-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.6.
+
+2006-08-23  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/longlong.m4: Update.
+
+2006-08-23  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-comp.m4, gl/m4/strdup.m4,
+       gl/m4/strerror_r.m4: Update.
+
+2006-08-23  Simon Josefsson <simon@josefsson.org>
+
+       * gl/override/doc/gendocs_template: Add.
+
+2006-08-19  Simon Josefsson <simon@josefsson.org>
+
+       * gl/error.c, gl/m4/gnulib-comp.m4: Update.
+
+2006-08-09  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2006-08-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-08-09  Simon Josefsson <simon@josefsson.org>
+
+       * csharpcomp.sh.in, gendocs.sh, gl/Makefile.am, gl/error.c,
+       gl/error.h, gl/gettext.h, gl/m4/csharpcomp.m4,
+       gl/m4/gnulib-comp.m4, gl/m4/onceonly_2_57.m4, gl/m4/stdint.m4,
+       gl/stdint_.h: Update.
+
+2006-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix.
+
+2006-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh, gl/Makefile.am, gl/m4/gnulib-cache.m4,
+       gl/m4/gnulib-comp.m4: Update.
+
+2006-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * doc/fdl.texi, gl/Makefile.am, gl/m4/absolute-header.m4,
+       gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/stdint.m4: 
+       Update.
+
+2006-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix texi2dvi -I's.
+
+2006-07-10  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/absolute-header.m4, gl/m4/getopt.m4, gl/m4/gnulib-comp.m4,
+       gl/m4/onceonly_2_57.m4: Update.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * gl/.cvsignore: [no log message]
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac, gl/Makefile.am, gl/m4/absolute-header.m4,
+       gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/longlong.m4,
+       gl/m4/stdint.m4, gl/stdint_.h, lib/Makefile.am,
+       m4/ax_create_stdint_h.m4, po/da.po, po/de.po, po/eo.po, po/fr.po,
+       po/it.po, po/ja.po, po/nl.po, po/pl.po, po/ro.po, po/rw.po,
+       po/sr.po, po/sv.po, po/vi.po, po/zh_CN.po: Use gnulib stdint module
+       instead of AX_CREATE_STDINT_H.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump version.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix gendocs.sh run.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po,
+       po/vi.po, po/zh_CN.po: Generated.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.5.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Update.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/doxygen/Doxyfile.in, contrib/doxygen/Doxyfile.orig: Update
+       to doxygen 1.4.7.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Need libintl too, for gettext, reported by Kirill
+       Ponomarew <krion@voodoo.bawue.com>.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * gl/getopt.c: Update.
+
+2006-07-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/ja.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po,
+       po/vi.po, po/zh_CN.po: Generated.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.4.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Fix valgrind test.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Check if running valgrind works.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Need -I for texi2dvi too.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix paths.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/man/.cvsignore: Add.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/onceonly_2_57.m4: Update.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am: Simplify valgrind usage.
+
+2006-07-06  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Check for valgrind.
+
+2006-06-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Use GNU-style warnings.
+
+2006-06-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Fix man output, sync.
+
+2006-06-22  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Use AC_LIBTOOL_WIN32_DLL.
+
+2006-06-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-iab-idn-nextsteps-06.txt: Add.
+
+2006-06-10  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/ja.po: Sync with TP.
+
+2006-06-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/rfc4518.txt: Add.
+
+2006-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4: Update.
+
+2006-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4: Update.
+
+2006-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4: Update.
+
+2006-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: When printing size_t, use %lu and cast the value to
+       unsigned long, based on report from Joe Orton <jorton@redhat.com>.
+
+2006-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, po/zh_CN.po: Sync
+       with TP.
+
+2006-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * lib/strerror-idna.c, lib/strerror-pr29.c,
+       lib/strerror-punycode.c, lib/strerror-stringprep.c,
+       lib/strerror-tld.c: Include config.h, to make NLS work, tiny patch
+       from Joe Orton <jorton@redhat.com>.
+
+2006-05-16  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: 
+       Update.
+
+2006-05-05  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/.cvsignore, doc/java/resources/.cvsignore: [no log
+       message]
+
+2006-05-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-05-04  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am: Run tests under valgrind, if present.
+
+2006-04-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Typo.
+
+2006-04-26  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/strerror_r.m4: Update.
+
+2006-04-17  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-iab-idn-nextsteps-05.txt: Add.
+
+2006-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix title.
+
+2006-03-11  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fix.
+
+2006-03-11  Simon Josefsson <simon@josefsson.org>
+
+       * maint-cfg.mk: fix
+
+2006-03-11  Simon Josefsson <simon@josefsson.org>
+
+       * gtk-doc.make: Add.
+
+2006-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-farah-adntf-adns-guidelines-01.txt: Add.
+
+2006-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2006-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2006-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Typo.
+
+2006-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Generated.
+
+2006-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.3.
+
+2006-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac, po/da.po, po/de.po, po/eo.po, po/fr.po,
+       po/it.po, po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po,
+       po/sv.po, po/vi.po, po/zh_CN.po: Bump versions.
+
+2006-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-comp.m4, gl/m4/unistd_h.m4,
+       gl/unistd_.h, maint.mk: Update.
+
+2006-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/getopt.c, gl/m4/gnulib-comp.m4,
+       gl/m4/unistd_h.m4, gl/unistd_.h, maint.mk: Update.
+
+2006-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-iab-idn-nextsteps-04.txt: Add.
+
+2006-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po,
+       po/nl.po, po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2006-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix update-po rule.
+
+2006-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * maint.mk: Update.
+
+2006-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * maint.mk: Update.
+
+2006-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * examples/example3.c, examples/example4.c, lib/nfkc.c: Doc fix.
+
+2006-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c, lib/nfkc.c, lib/stringprep.c, lib/toutf8.c,
+       lib/version.c, src/idn.c, tests/tst_idna.c, tests/tst_idna2.c,
+       tests/tst_nfkc.c, tests/tst_pr29.c, tests/tst_punycode.c,
+       tests/tst_strerror.c, tests/tst_stringprep.c, tests/tst_tld.c,
+       tests/utils.c: Stylistic fix.
+
+2006-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * gl/getopt.c, maint.mk: Update.
+
+2006-03-03  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, examples/Makefile.am, lib/Makefile.am,
+       src/Makefile.am, tests/Makefile.am: Remove indent.
+
+2006-02-17  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-iab-idn-nextsteps-03.txt: Add.
+
+2006-02-16  Simon Josefsson <simon@josefsson.org>
+
+       * maint-cfg.mk: Fix.
+
+2006-02-16  Simon Josefsson <simon@josefsson.org>
+
+       * maint-cfg.mk: Fix.
+
+2006-02-16  Simon Josefsson <simon@josefsson.org>
+
+       * maint-cfg.mk: Fix.
+
+2006-02-16  Simon Josefsson <simon@josefsson.org>
+
+       * maint-cfg.mk: Fix.  Add mingw32 target.
+
+2006-02-15  Simon Josefsson <simon@josefsson.org>
+
+       * maint.mk: Update.
+
+2006-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, Makefile.cfg, Makefile.maint, gl/m4/gnulib-comp.m4,
+       maint-cfg.mk, maint.mk: Rename.
+
+2006-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.cfg: Fix.
+
+2006-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.cfg: Fix.
+
+2006-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.cfg: Fix.
+
+2006-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.cfg: Fix.
+
+2006-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Remove.
+
+2006-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, Makefile.cfg, Makefile.maint: Add.
+
+2006-02-11  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile, Makefile.maint, csharpcomp.sh.in, gl/Makefile.am,
+       gl/csharpcomp.sh.in, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: 
+       Update gnulib.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.6.2.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix includes, for make dist.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix -I's again, for make dist.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix @verbatiminclude's, for make dist.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix -I's, for make dist.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Add -I for examples.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * .cvscopying: Fix years.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Generated.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.2.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/sr.po, po/vi.po: Update.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, po/zh_CN.po: Sync
+       with TP.
+
+2006-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * gl/csharpcomp.sh.in, gl/getopt.c, gl/m4/getopt.m4,
+       gl/m4/gnulib-tool.m4: Update.
+
+2006-02-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-02-03  Simon Josefsson <simon@josefsson.org>
+
+       * java/misc/Makefile.am: Fix objdir != srcdir, tiny patch from
+       Bernard Leak <bernard@brenda-arkle.demon.co.uk>.
+
+2006-02-03  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2006-02-03  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/Makefile.am, java/Makefile.am: Fix objdir != srcdir, tiny
+       patch from Bernard Leak <bernard@brenda-arkle.demon.co.uk>.
+
+2006-01-27  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, po/zh_CN.po: Sync
+       with TP.
+
+2006-01-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2006-01-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix 'make distcheck'.
+
+2006-01-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2006-01-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-ldapbis-strprep-07.txt: Add.
+
+2006-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.6.1.
+
+2006-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2006-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.1.
+
+2006-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2006-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2006-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix mingw32 builds.
+
+2006-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am: Fix make check on mingw32.
+
+2006-01-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-xdlee-idn-cdnadmin-06.txt: Add.
+
+2006-01-11  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-cache.m4: Update.
+
+2006-01-11  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am, doc/libidn.texi: Fix copyright years.
+
+2006-01-11  Simon Josefsson <simon@josefsson.org>
+
+       * README, README-alpha: Add.
+
+2006-01-11  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update PGP key.
+
+2006-01-11  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Fix path to csharpcomp.sh.
+
+2006-01-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2006-01-11  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, gl/.cvsignore: [no log message]
+
+2006-01-11  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Fix.
+
+2006-01-11  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: 
+       Update.
+
+2006-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-cache.m4, gl/m4/gnulib-tool.m4: Update.
+
+2006-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/csharpcomp.sh.in, gl/m4/gnulib-cache.m4,
+       gl/m4/gnulib-comp.m4: Update.
+
+2006-01-09  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_idna2.c: Print USC4 code point numbers too.
+
+2005-12-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/rfc4290.txt: Add.
+
+2005-12-22  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-iab-idn-nextsteps-01.txt: Add.
+
+2005-12-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.6.0.
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump version.
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Generated.
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.6.0.
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Csharp test is in gnulib now, remove it.
+
+2005-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-iab-idn-nextsteps-00.txt: Add.
+
+2005-12-02  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/vi.po, po/zh_CN.po: Sync
+       with TP.
+
+2005-12-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add C# notes.
+
+2005-12-02  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Fix message.
+
+2005-12-02  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/csharpcomp.sh.in, gl/m4/csharp.m4,
+       gl/m4/csharpcomp.m4, gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4,
+       m4/csharp.m4, m4/csharpcomp.m4: Use csharpcomp-script from gnulib.
+
+2005-12-02  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Don't specify any C# compile flags (fixes
+       distcheck).
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/rw.po, po/zh_CN.po: Sync with TP.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Dist MSVS stuff.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/libidn.csproj, csharp/libidn.csproj.user,
+       csharp/libidn.sln, csharp/libidn_PPC.csdproj,
+       csharp/libidn_PPC.csdproj.user, csharp/libidn_PPC.sln: Add MSVSC
+       project files.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/CombiningClass.cs, csharp/Composition.cs,
+       csharp/DecompositionKeys.cs, csharp/DecompositionMappings.cs,
+       csharp/IDNA.cs, csharp/IDNAException.cs, csharp/NFKC.cs,
+       csharp/Punycode.cs, csharp/PunycodeException.cs, csharp/RFC3454.cs,
+       csharp/Stringprep.cs, csharp/StringprepException.cs: Use GPL for the
+       port.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/.cvsignore, gl/.cvsignore: [no log message]
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, csharp/Makefile.am: Fix csharpcomp location.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, gl/csharpcomp.sh.in: Add.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, csharp/Makefile.am: Fix.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Fix message.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Fix.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * m4/csharp.m4, m4/csharpcomp.m4: Add.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Add C# tests.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Remove.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Fix.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * .cvscopying: Add 2005.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Add.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS, THANKS: Add.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Use gnulib, for csharpcomp.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/Makefile.am: Add.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac: C# fixes.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * csharp/AssemblyInfo.cs, csharp/CombiningClass.cs,
+       csharp/Composition.cs, csharp/DecompositionKeys.cs,
+       csharp/DecompositionMappings.cs, csharp/IDNA.cs,
+       csharp/IDNAException.cs, csharp/NFKC.cs, csharp/Punycode.cs,
+       csharp/PunycodeException.cs, csharp/RFC3454.cs,
+       csharp/Stringprep.cs, csharp/StringprepException.cs: Add C# port,
+       from Alexander Gnauck <gnauck@ag-software.de>.
+
+2005-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump version.
+
+2005-11-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2005-11-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2005-11-04  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Use -no-undefined for libtool, for cygwin, tiny
+       patch from "Yaakov S (Cygwin Ports)"
+       <yselkowitz@users.sourceforge.net>.
+
+2005-10-26  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po: Add.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * lib/pr29.c: (pr29_8z): Fix memory leak.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Add.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Generated.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Mention Suse on IBM OpenPower.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Fix.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.20.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Add.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-10-23  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Install pr29.h.
+
+2005-10-22  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4: Update.
+
+2005-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * gl/getopt_.h: Update.
+
+2005-10-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-ldapbis-strprep-06.txt: Add.
+
+2005-09-22  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-comp.m4: Update.
+
+2005-09-20  Simon Josefsson <simon@josefsson.org>
+
+       * gl/getopt1.c: Update.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4: Update.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Use gnupload.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.5.19.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Update.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.19.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Update.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/Makevars: Use --no-location, to minimize CVS diff's.
+
+2005-09-19  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/tmpl/.cvsignore: [no log message]
+
+2005-09-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/tmpl/libidn-unused.sgml: Add (to fix gtk-doc
+       makefile bug).
+
+2005-09-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/Makefile.am: Fix dependency.
+
+2005-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * : Update.
+
+2005-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix wget usage.
+
+2005-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/vi.po: Sync with TP.
+
+2005-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Sync with TP.
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * m4/gtk-doc.m4: Update.
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/Makefile.am: Fix dependencies.
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/.cvsignore, doc/java/gnu/inet/encoding/.cvsignore,
+       doc/java/resources/.cvsignore: [no log message]
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/.cvsignore: [no log message]
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: Call gjdoc directly.
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha, configure.ac: Replace javadoc with gjdoc.
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/Makefile.am: Dist files generated by gjdoc instead.
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-09-10  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: Use HAVE_LOCALE_H.
+
+2005-09-10  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-09-10  Simon Josefsson <simon@josefsson.org>
+
+       * m4/codeset.m4: Update.
+
+2005-09-10  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2005-09-10  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix header/setlocale checks.
+
+2005-09-10  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Check for locale.h.
+
+2005-09-10  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix setlocale test.
+
+2005-09-10  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Check for setlocale.
+
+2005-09-09  Simon Josefsson <simon@josefsson.org>
+
+       * m4/codeset.m4: Add.
+
+2005-09-09  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: Use modern nl_langinfo test.
+
+2005-09-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Simplify nl_langinfo test.
+
+2005-09-09  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix #include's.
+
+2005-09-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Let's assume unistd.h and errno.h (in fact, we
+       already did in the source code and nobody complained).
+
+2005-09-09  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update PGP key.
+
+2005-09-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-09-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, gl/Makefile.am, gl/m4/codeset.m4, gl/m4/getopt.m4,
+       gl/m4/gettext.m4, gl/m4/glibc2.m4, gl/m4/glibc21.m4,
+       gl/m4/gnulib-cache.m4, gl/m4/gnulib-comp.m4, gl/m4/gnulib-tool.m4,
+       gl/m4/gnulib.m4, gl/m4/iconv.m4, gl/m4/intdiv0.m4, gl/m4/intmax.m4,
+       gl/m4/inttypes-pri.m4, gl/m4/inttypes.m4, gl/m4/inttypes_h.m4,
+       gl/m4/isc-posix.m4, gl/m4/lcmessage.m4, gl/m4/lib-ld.m4,
+       gl/m4/lib-link.m4, gl/m4/lib-prefix.m4, gl/m4/longdouble.m4,
+       gl/m4/longlong.m4, gl/m4/nls.m4, gl/m4/onceonly_2_57.m4,
+       gl/m4/po.m4, gl/m4/printf-posix.m4, gl/m4/progtest.m4,
+       gl/m4/signed.m4, gl/m4/size_max.m4, gl/m4/stdint_h.m4,
+       gl/m4/strdup.m4, gl/m4/uintmax_t.m4, gl/m4/ulonglong.m4,
+       gl/m4/wchar_t.m4, gl/m4/wint_t.m4, gl/m4/xsize.m4: Update gnulib.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * README: Fix typo.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Add.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Generated.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.18.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Link to help-libidn.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * README: Add.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib.m4: Update.
+
+2005-07-16  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Simplify.
+
+2005-07-15  Simon Josefsson <simon@josefsson.org>
+
+       * gl/.cvsignore: [no log message]
+
+2005-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-bakleh-reg-adm-acg-apu-01.txt: Add.
+
+2005-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ax_create_stdint_h.m4: Use 'sed 1q' instead of 'head -n 1',
+       more portable.
+
+2005-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Add 2005 to man page copyrights.
+
+2005-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ax_create_stdint_h.m4: Fix head usage (really!!).
+
+2005-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Fix license.
+
+2005-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2005-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ax_create_stdint_h.m4: Fix use of head.
+
+2005-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ax_create_stdint_h.m4: New upstream release.
+
+2005-06-14  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/pl.po,
+       po/ro.po, po/sr.po, po/vi.po: Sync with TP.
+
+2005-06-14  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/doxygen/gdoc2doxygen: Fix address in license.
+
+2005-06-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2005-06-12  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: fix
+
+2005-06-12  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ax_create_stdint_h.m4: Turn 'head -1' into 'head -n -1', tiny
+       patch from Carsten Lohrke <current@myrealbox.com>.
+
+2005-06-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, po/nl.po: Add.
+
+2005-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.5.17.
+
+2005-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2005-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/vi.po,
+       po/zh_CN.po: Generated.
+
+2005-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.17.
+
+2005-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/lgpl.texi: Fix sectioning.
+
+2005-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2005-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/dummy.c, gl/gettext.h, gl/m4/getopt.m4,
+       gl/m4/gettext.m4, gl/m4/glibc2.m4, gl/m4/gnulib.m4,
+       gl/m4/intdiv0.m4, gl/m4/intmax.m4, gl/m4/inttypes-pri.m4,
+       gl/m4/inttypes.m4, gl/m4/isc-posix.m4, gl/m4/lcmessage.m4,
+       gl/m4/lib-link.m4, gl/m4/lib-prefix.m4, gl/m4/nls.m4, gl/m4/po.m4,
+       gl/m4/printf-posix.m4, gl/m4/progtest.m4, gl/m4/strdup.m4: Sync with
+       gnulib.
+
+2005-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS, COPYING, COPYING.LIB, FAQ, Makefile.am, README, TODO,
+       configure.ac, contrib/README, contrib/java/Makefile.am,
+       doc/Makefile.am, doc/Makefile.gdoci, doc/fdl.texi, doc/gdoc,
+       doc/gendocs.sh, doc/gendocs_template, doc/java/Makefile.am,
+       doc/lgpl.texi, doc/specifications/Makefile.am, doc/tld/Makefile.am,
+       examples/Makefile.am, examples/example.c, examples/example2.c,
+       examples/example3.c, examples/example4.c, examples/example5.c,
+       gl/dummy.c, gl/error.c, gl/error.h, gl/getopt.c, gl/getopt1.c,
+       gl/getopt_.h, gl/getopt_int.h, gl/gettext.h, gl/strdup.c,
+       gl/strdup.h, java/Makefile.am,
+       java/gnu/inet/encoding/CombiningClass.java,
+       java/gnu/inet/encoding/Composition.java,
+       java/gnu/inet/encoding/DecompositionKeys.java,
+       java/gnu/inet/encoding/DecompositionMappings.java,
+       java/gnu/inet/encoding/IDNA.java,
+       java/gnu/inet/encoding/IDNAException.java,
+       java/gnu/inet/encoding/Makefile.am,
+       java/gnu/inet/encoding/NFKC.java,
+       java/gnu/inet/encoding/Punycode.java,
+       java/gnu/inet/encoding/PunycodeException.java,
+       java/gnu/inet/encoding/RFC3454.java,
+       java/gnu/inet/encoding/Stringprep.java,
+       java/gnu/inet/encoding/StringprepException.java,
+       java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java,
+       java/misc/Makefile.am, java/misc/TestIDNA.java,
+       java/misc/TestNFKC.java, lib/Makefile.am,
+       lib/gen-stringprep-tables.pl, lib/gen-tld-tables.pl,
+       lib/gen-unicode-tables.pl, lib/iconvme.c, lib/iconvme.h,
+       lib/idn-free.c, lib/idn-free.h, lib/idna.c, lib/idna.h, lib/nfkc.c,
+       lib/pr29.c, lib/pr29.h, lib/profiles.c, lib/punycode.c,
+       lib/punycode.h, lib/strerror-idna.c, lib/strerror-pr29.c,
+       lib/strerror-punycode.c, lib/strerror-stringprep.c,
+       lib/strerror-tld.c, lib/stringprep.c, lib/stringprep.h.in,
+       lib/tld.c, lib/tld.h, lib/toutf8.c, lib/version.c, libc/example.c,
+       libidn.pc.in, src/Makefile.am, src/idn.c, src/idn.ggo, src/idna.el,
+       src/punycode.el, tests/Makefile.am, tests/tst_idna.c,
+       tests/tst_idna2.c, tests/tst_nfkc.c, tests/tst_pr29.c,
+       tests/tst_punycode.c, tests/tst_strerror.c, tests/tst_stringprep.c,
+       tests/tst_tld.c, tests/utils.c, tests/utils.h: Update FSF address in
+       license.  Fix copyrights.
+
+2005-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-05-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-klensin-reg-guidelines-08.txt: Add.
+
+2005-05-12  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/rw.po, po/sr.po, po/zh_CN.po: Sync with TP.
+
+2005-05-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2005-05-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2005-05-08  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.5.16.
+
+2005-05-06  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2005-05-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.16.
+
+2005-05-06  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/rw.po, po/sr.po, po/sv.po, po/zh_CN.po: Sync with TP.
+
+2005-05-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-05-05  Simon Josefsson <simon@josefsson.org>
+
+       * lib/pr29.c: Use 'const' for static data, tiny patch from Joe Orton
+       <jorton@redhat.com>.
+
+2005-04-16  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po: Sync with TP.
+
+2005-04-15  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2005-04-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-04-15  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/sr.po, po/vi.po: Sync with TP.
+
+2005-04-06  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/rw.po, po/zh_CN.po: Sync with TP.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/sr.po, po/sv.po, po/vi.po, po/zh_CN.po: 
+       Generated.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.15.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * lib/iconvme.c: Sync with libc; fix license and fix arithmetic
+       overflow.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * lib/iconvme.h: Fix license.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/sr.po, po/sv.po, po/vi.po, po/zh_CN.po: 
+       Generated.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.14.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Ramblings.
+
+2005-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/sr.po, po/sv.po, po/vi.po: Sync with TP.
+
+2005-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, po/LINGUAS, po/zh_CN.po: Add.
+
+2005-03-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/rfc4013.txt: Add.
+
+2005-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idn-free.c: Include the specification first, to verify it is
+       standalone.  Doc fix.
+
+2005-02-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-ldapbis-dn-16.txt: Add.
+
+2005-02-16  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2005-02-16  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Reorder chronologically.
+
+2005-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-02-11  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-ldapbis-strprep-05.txt: Add.
+
+2005-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Sort (should be sorted chronologically..).
+
+2005-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2005-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, po/LINGUAS, po/vi.po: Add.
+
+2005-01-30  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Fix last commit, reported by Linus Nordberg
+       <linus@nordberg.se>.
+
+2005-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Fix srcdir != objdir when bootstrapping from CVS,
+       patch from Linus Nordberg <linus@nordberg.se> (tiny change).
+
+2005-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fix.
+
+2005-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Remove hack, fixed in gtk-doc CVS.
+
+2005-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: 0.5.13.
+
+2005-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2005-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/it.po, po/nl.po,
+       po/pl.po, po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2005-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.13.
+
+2005-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/dummy.c, gl/m4/gnulib.m4: Update.
+
+2005-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Need dummy gnulib module again.
+
+2005-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/iconvme.c, lib/iconvme.h: Add.
+
+2005-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, gl/Makefile.am, gl/iconvme.c, gl/iconvme.h,
+       gl/m4/gnulib.m4, gl/m4/iconvme.m4, lib/Makefile.am: Move iconvme to
+       lib, since linking gnulib in lib doesn't work due to program_name
+       symbol.
+
+2005-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * gl/m4/codeset.m4, gl/m4/error.m4, gl/m4/getopt.m4,
+       gl/m4/glibc21.m4, gl/m4/iconv.m4, gl/m4/inttypes_h.m4,
+       gl/m4/lib-ld.m4, gl/m4/lib-link.m4, gl/m4/lib-prefix.m4,
+       gl/m4/longdouble.m4, gl/m4/longlong.m4, gl/m4/signed.m4,
+       gl/m4/size_max.m4, gl/m4/stdint_h.m4, gl/m4/strdup.m4,
+       gl/m4/strerror_r.m4, gl/m4/uintmax_t.m4, gl/m4/ulonglong.m4,
+       gl/m4/wchar_t.m4, gl/m4/wint_t.m4, gl/m4/xsize.m4: Update.
+
+2005-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Typo.
+
+2005-01-27  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2005-01-27  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add, reported by Simon Walter
+       <simon@nethinks.com>.
+
+2005-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-01-17  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Sync with TP.
+
+2005-01-17  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Remove.
+
+2005-01-17  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/Makefile.am, java/misc/Makefile.am: Define
+       JAVAROOT unconditionally, because automake barf otherwise.
+
+2005-01-16  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Add.
+
+2005-01-16  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Add.
+
+2005-01-16  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2005-01-16  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Mention gettext requirement, suggested by Linus
+       Nordberg <linus@nordberg.se>.
+
+2005-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Warn strongly about missing iconv.
+
+2005-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/dummy.c, gl/m4/gnulib.m4: Update.
+
+2005-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: No need to use dummy gnulib module, no system has
+       iconvme.
+
+2005-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Link with gnulib (only LGPL files).
+
+2005-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: Use iconv_string from gnulib.
+
+2005-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, gl/Makefile.am, gl/iconvme.c, gl/iconvme.h,
+       gl/m4/gnulib.m4, gl/m4/iconvme.m4: Add iconvme from gnulib.
+
+2005-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Add copyright for year 2005.
+
+2005-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2005-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Update.
+
+2005-01-01  Simon Josefsson <simon@josefsson.org>
+
+       * gl/error.c: Update.
+
+2005-01-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2005-01-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, po/LINGUAS, po/it.po: Add.
+
+2004-12-04  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Add.
+
+2004-12-04  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-12-04  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-12-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.12.
+
+2004-12-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-12-04  Simon Josefsson <simon@josefsson.org>
+
+       * gl/getopt_.h, gl/m4/getopt.m4: Update.
+
+2004-12-01  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/Stringprep.java: Doc fix, from Oliver Hitz
+       <oliver@net-track.ch>.
+
+2004-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-bartosiewicz-idn-pltld-08.txt: Add.
+
+2004-11-29  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: More PR29.
+
+2004-11-23  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2004-11-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-11-22  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-11-22  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/Stringprep.java: Fixed two bugs:
+       allowUnassigned not respected properly, buggy prohibited code points
+       check.  Argument checks added.  RFC3920 nodeprep and resourceprep
+       added, suggested by Matt Tucker.  Convenience methods with
+       allowUnassigned set to false added.  From Oliver Hitz
+       <oliver@net-track.ch>.
+
+2004-11-22  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/RFC3454.java,
+       java/misc/GenerateRFC3454.java: Add table C.1.1 and C.2.1, from
+       Oliver Hitz <oliver@net-track.ch>.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Make sure all man pages follow 'foo -- purpose of foo'
+       format, even if there is no purpose description available, from
+       Shishi.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Add.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Sync with TP.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.11.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Add 'DO NOT MODIFY' warning to generated man pages.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Doc fix.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c, lib/strerror-punycode.c: Doc fix.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c, lib/pr29.c, lib/strerror-idna.c, lib/strerror-pr29.c,
+       lib/strerror-stringprep.c, lib/strerror-tld.c, lib/stringprep.c,
+       lib/tld.c, lib/toutf8.c, lib/version.c: Doc fix.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: For man pages, don't use line breaking formatting codes
+       ("\n.I foo\n") but rather inline commands ("\fIfoo\fP").
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.c: Doc fix.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Skip leading whitespace in function purpose.  Print
+       function purpose in man pages, if available.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-11-21  Simon Josefsson <simon@josefsson.org>
+
+       * gl/getopt.c, gl/getopt1.c, gl/getopt_.h, gl/getopt_int.h,
+       gl/m4/getopt.m4: Update.
+
+2004-11-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ekrema-smldn-00.txt: Add.
+
+2004-11-17  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-klensin-reg-guidelines-05.txt: Add.
+
+2004-11-16  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/Description.txt,
+       doc/specifications/IDNConnect.html, doc/specifications/testbed.html: 
+       Add.
+
+2004-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/pr-29.html: Update.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Fix.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.10.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_pr29.c: No need for stringprep.h.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * examples/example2.c, libc/example.c, tests/tst_idna.c,
+       tests/tst_idna2.c, tests/tst_nfkc.c, tests/tst_punycode.c,
+       tests/tst_stringprep.c: Cosmetic fix.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * tests/utils.c: Typo.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Sync with TP.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Simplify EXTRA_DIST.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Use Libtool's -export-symbols-regex.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-klensin-reg-guidelines-04.txt,
+       doc/specifications/draft-xdlee-idn-cdnadmin-02.txt: Add.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c, lib/nfkc.c, lib/profiles.c, lib/punycode.c,
+       lib/toutf8.c, lib/version.c: Cosmetic fix.
+
+2004-11-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Add copyright header for me.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Add.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fix.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * FAQ: Add.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update PGP key.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-sasl-anon-04.txt: Add.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po: Generated.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix release target.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.9.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Sync with TP.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/.cvsignore: [no log message]
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am, doc/reference/libidn.types: Simplify.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix SUBDIRS order, because GTK-DOC need
+       components.png.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Fix.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Fix.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh, doc/gendocs_template: Update.
+
+2004-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Support -include, from GnuTLS.
+
+2004-10-27  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c: Doc fix.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Fix man output.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * lib/strerror-stringprep.c, lib/stringprep.c, lib/tld.c: Doc fix.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c, lib/pr29.c, lib/punycode.c, lib/strerror-idna.c,
+       lib/strerror-pr29.c, lib/strerror-punycode.c, lib/tld.c: Doc fix.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Use @code, not @var, for constants in texinfo output.
+       Fix newlines in man output.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Use # instead of & for types.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am, doc/reference/libidn-docs.sgml: Add
+       image.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Run gtkdocize.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/sv.po: Sync with TP.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: (update-po): Fix.
+
+2004-10-25  Simon Josefsson <simon@josefsson.org>
+
+       * : Add.
+
+2004-10-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn.types: Fix.
+
+2004-10-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-10-24  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: (DISTCHECK_CONFIGURE_FLAGS): Add --enable-gtk-doc.
+
+2004-10-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/reference/Makefile.am, doc/reference/libidn-docs.sgml,
+       doc/reference/libidn-docs.tmpl: Align GTK-DOC build infrastructure
+       with GTK-DOC official recommendations.
+
+2004-10-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/.cvsignore: [no log message]
+
+2004-10-24  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/ro.po,
+       po/sr.po: Sync with TP.
+
+2004-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/getopt.m4: Update.
+
+2004-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * po/pl.po: Sync with TP.
+
+2004-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Update.
+
+2004-10-13  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Update.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * README: Fix.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * README: Fix.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * README: Improve readability.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.8.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-unicode-tables.pl: Add coment to generated files to say
+       that they are generated, reported by "Gisle Vanem" <giva@bgnett.no>.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/Makefile.am: Distribute
+       BidiMirroring-3.2.0.txt, reported by "Gisle Vanem" <giva@bgnett.no>.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.7.
+
+2004-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-10-11  Simon Josefsson <simon@josefsson.org>
+
+       * po/fr.po: Generated.
+
+2004-10-11  Simon Josefsson <simon@josefsson.org>
+
+       * po/fr.po: Sync with TP.
+
+2004-10-05  Simon Josefsson <simon@josefsson.org>
+
+       * gl/error.c: Update Gnulib.
+
+2004-10-04  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-10-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Use EXIT_SUCCESS and EXIT_FAILURE.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update PGP key.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.6.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * examples/example.c, examples/example3.c, examples/example4.c,
+       examples/example5.c: Use *strerror.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, examples/Makefile.am: Fix indent.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, libidn.fms: Fix.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Reorder.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Don't link with gnulib.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: Revert, don't use strdup.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/strerror-idna.c: Simplify translation strings.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Typo.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.h, lib/pr29.c, lib/pr29.h, lib/profiles.c, lib/toutf8.c,
+       src/idn.c, tests/tst_pr29.c, tests/tst_stringprep.c: Indent.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Use error.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, gl/Makefile.am, gl/error.c, gl/error.h,
+       gl/m4/error.m4, gl/m4/gnulib.m4, gl/m4/strerror_r.m4: Add error from
+       gnulib (slightly modified to avoid unlocked-io.h).
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am, tests/tst_strerror.c: Add.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * tests/.cvsignore: [no log message]
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: (DEFS): Add LOCALEDIR.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/strerror-idna.c, lib/strerror-pr29.c,
+       lib/strerror-punycode.c, lib/strerror-stringprep.c,
+       lib/strerror-tld.c: Setup gettext properly.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * po/POTFILES.in: Add.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: Fix.
+
+2004-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/Makefile.am, doc/libidn.texi, lib/Makefile.am,
+       lib/idna.h, lib/pr29.h, lib/punycode.h, lib/strerror-idna.c,
+       lib/strerror-pr29.c, lib/strerror-punycode.c,
+       lib/strerror-stringprep.c, lib/strerror-tld.c, lib/stringprep.h.in,
+       lib/tld.c, lib/tld.h, src/idn.c: Add idna_strerror, pr29_strerror,
+       punycode_strerror, stringprep_strerror, and tld_strerror, suggested
+       by Daniel Stenberg <daniel@haxx.se>.  Make idn.c use them.  Rename
+       TLD_NOTLD to TLD_NO_TLD.
+
+2004-09-29  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/dummy.c, gl/m4/gnulib.m4: Update.
+
+2004-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/m4/gnulib.m4: Update.
+
+2004-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am, gl/dummy.c, gl/getopt.c, gl/getopt1.c,
+       gl/getopt_.h, gl/getopt_int.h, gl/gettext.h, gl/m4/codeset.m4,
+       gl/m4/gettext.m4, gl/m4/glibc21.m4, gl/m4/gnulib.m4,
+       gl/m4/iconv.m4, gl/m4/intdiv0.m4, gl/m4/intmax.m4,
+       gl/m4/inttypes-pri.m4, gl/m4/inttypes.m4, gl/m4/inttypes_h.m4,
+       gl/m4/isc-posix.m4, gl/m4/lcmessage.m4, gl/m4/lib-ld.m4,
+       gl/m4/lib-link.m4, gl/m4/lib-prefix.m4, gl/m4/longdouble.m4,
+       gl/m4/longlong.m4, gl/m4/nls.m4, gl/m4/po.m4,
+       gl/m4/printf-posix.m4, gl/m4/progtest.m4, gl/m4/signed.m4,
+       gl/m4/size_max.m4, gl/m4/stdint_h.m4, gl/m4/strdup.m4,
+       gl/m4/uintmax_t.m4, gl/m4/ulonglong.m4, gl/m4/wchar_t.m4,
+       gl/m4/wint_t.m4, gl/m4/xsize.m4, gl/strdup.c, gl/strdup.h,
+       src/gettext.h: Use new GNULib.
+
+2004-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Specify gl_LGPL for new gnulib-tool.
+
+2004-09-26  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2004-09-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, NEWS, configure.ac, gl/.cvsignore, gl/Makefile.am,
+       gl/dummy.c, gl/getopt.c, gl/getopt1.c, gl/getopt_.h,
+       gl/getopt_int.h, gl/m4/getopt.m4, gl/m4/gnulib.m4,
+       gl/m4/onceonly_2_57.m4, gl/m4/strdup.m4, gl/strdup.c, gl/strdup.h,
+       lib/Makefile.am, lib/toutf8.c, src/Makefile.am, src/getopt.c,
+       src/getopt1.c, src/getopt_.h, src/getopt_int.h, tests/Makefile.am: 
+       Use Lesser GNULib.
+
+2004-09-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-bakleh-reg-adm-acg-apu-00.txt: Add.
+
+2004-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Add.
+
+2004-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Clean more.
+
+2004-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.5.
+
+2004-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/.cvsignore: [no log message]
+
+2004-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: (POURL): Fix.
+
+2004-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Sync with TP.
+
+2004-09-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-09-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-09-05  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: (g_utf8_skip): Hide variable, using "static".
+
+2004-09-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Move.  Fix ack.
+
+2004-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-farah-adntf-adns-guidelines-00.txt: Add.
+
+2004-08-23  Simon Josefsson <simon@josefsson.org>
+
+       * m4/autobuild.m4: Update.
+
+2004-08-18  Simon Josefsson <simon@josefsson.org>
+
+       * README: Fix.
+
+2004-08-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2004-08-17  Simon Josefsson <simon@josefsson.org>
+
+       * README: Add.
+
+2004-08-17  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump version.
+
+2004-08-10  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Shut up 'uno' by fixing array boundary.
+
+2004-08-08  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Fix.
+
+2004-08-08  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.fms: Add.
+
+2004-08-07  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-08-07  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-08-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.4.
+
+2004-08-06  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Sync with TP.
+
+2004-08-06  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix.
+
+2004-08-06  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix.
+
+2004-08-06  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix.
+
+2004-08-06  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: (update-po): Add.
+
+2004-08-06  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po,
+       po/sr.po: Sync with TP.
+
+2004-08-05  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump version.
+
+2004-08-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-08-05  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po: Update.
+
+2004-08-05  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-08-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.3.
+
+2004-08-05  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-08-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-08-05  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-08-05  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix crash, tiny patch by Andreas Schwab reported by
+       Stephan Kulow <coolo@suse.de>.
+
+2004-08-01  Simon Josefsson <simon@josefsson.org>
+
+       * lib/pr29.c: Use PR29_* error mnemonics, instead of hard coded
+       integers.
+
+2004-08-01  Simon Josefsson <simon@josefsson.org>
+
+       * lib/pr29.c: Cosmetic fix.
+
+2004-07-29  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/COPYING.UCD: Add.
+
+2004-07-29  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/COPYING.UCD: Update.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh, doc/gendocs_template: Update.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Bump version.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.2.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump version.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-07-14  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: (install-jar): Make DESTDIR compatible, patch from Oliver Hitz
+       <oliver@net-track.ch> based on report by Benjamin Reed
+       <ranger@befunk.com>.
+
+2004-07-13  Simon Josefsson <simon@josefsson.org>
+
+       * libc/example.c: Doc fix.
+
+2004-07-13  Simon Josefsson <simon@josefsson.org>
+
+       * libc/example.c: Use setlocale, reported by Robert Scheck
+       <libidn@robert-scheck.de>.
+
+2004-07-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-hoffman-pkix-stringmatch-00.txt: Add.
+
+2004-07-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-07-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Mention pr29.h.
+
+2004-07-09  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-07-09  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-07-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.1.
+
+2004-07-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Use autobuild.
+
+2004-07-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, m4/autobuild.m4: Add.
+
+2004-07-09  Simon Josefsson <simon@josefsson.org>
+
+       * examples/example.c, examples/example2.c, examples/example3.c,
+       examples/example4.c: Call setlocale to make iconv work, reported by
+       Robert Scheck <libidn@robert-scheck.de>.
+
+2004-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, src/getopt.c, src/getopt1.c: Update getopt.
+
+2004-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, tests/.cvsignore: [no log message]
+
+2004-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2004-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * examples/.cvsignore, src/.cvsignore: [no log message]
+
+2004-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * src/.cvsignore: [no log message]
+
+2004-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * src/getopt_int.h: Add.
+
+2004-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, src/Makefile.am, src/getopt.c, src/getopt.h,
+       src/getopt1.c, src/getopt_.h: Update getopt module.  Now work on,
+       e.g., uClibc systems which uses GNU Libc header files, but do not
+       implement getopt_long.
+
+2004-06-29  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-06-29  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/eo.po, po/fr.po, po/nl.po, po/pl.po,
+       po/ro.po, po/sr.po, po/sv.po: Generated.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.5.0.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/.cvsignore: [no log message]
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * lib/pr29.c: Fix.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Fix.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: (HTML_OBJECTS): Add libidn-pr29.html.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.tmpl: Add PR29.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/.cvsignore: [no log message]
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * lib/pr29.c: Add doc.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Don't use wildcards for GDOC_SRC.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * lib/pr29.c: Use 'static'.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * lib/pr29.h: Typo.
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * tests/.cvsignore: [no log message]
+
+2004-06-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/libidn.texi, lib/Makefile.am, lib/pr29.c, lib/pr29.h,
+       tests/Makefile.am, tests/tst_pr29.c: Add PR29 functions.
+
+2004-06-25  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/HangulSyllableType-4.0.1.txt: Add.
+
+2004-06-25  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/DerivedCombiningClass-3.2.0.txt: Add.
+
+2004-06-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-06-12  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/eo.po: Add Esperanto translation, from Edmund
+       GRIMLEY EVANS <edmundo@rano.org>, via the translation project.
+
+2004-06-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-06-11  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix release target.
+
+2004-06-11  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-06-11  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po,
+       po/sr.po, po/sv.po: Generated.
+
+2004-06-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.9.
+
+2004-06-11  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: Work around automake limitation (cannot have
+       instal-data-local target in a conditional).
+
+2004-06-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-ldapbis-dn-14.txt,
+       doc/specifications/draft-ietf-ldapbis-strprep-04.txt: Add.
+
+2004-06-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Cosmetic fix, sync with libc.
+
+2004-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: Create libidn.jar link.
+
+2004-06-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-bakke-iscsi-stringprep-00.txt,
+       doc/specifications/draft-hoffman-stringprep-00.txt,
+       doc/specifications/draft-hoffman-stringprep-01.txt,
+       doc/specifications/draft-hoffman-stringprep-02.txt,
+       doc/specifications/draft-hoffman-stringprep-03.txt,
+       doc/specifications/draft-hoffman-stringprep-04.txt,
+       doc/specifications/draft-hoffman-stringprep-05.txt,
+       doc/specifications/draft-hoffman-stringprep-06.txt,
+       doc/specifications/draft-hoffman-stringprep-07.txt,
+       doc/specifications/draft-ietf-idn-nameprep-00.txt,
+       doc/specifications/draft-ietf-idn-nameprep-01.txt,
+       doc/specifications/draft-ietf-idn-nameprep-02.txt,
+       doc/specifications/draft-ietf-idn-nameprep-03.txt,
+       doc/specifications/draft-ietf-idn-nameprep-04.txt,
+       doc/specifications/draft-ietf-idn-nameprep-05.txt,
+       doc/specifications/draft-ietf-idn-nameprep-06.txt,
+       doc/specifications/draft-ietf-idn-nameprep-07.txt,
+       doc/specifications/draft-ietf-idn-nameprep-08.txt,
+       doc/specifications/draft-ietf-idn-nameprep-09.txt,
+       doc/specifications/draft-ietf-idn-nameprep-10.txt,
+       doc/specifications/draft-ietf-idn-nameprep-11.txt,
+       doc/specifications/draft-ietf-ips-iscsi-string-prep-00.txt,
+       doc/specifications/draft-ietf-ips-iscsi-string-prep-01.txt,
+       doc/specifications/draft-ietf-ips-iscsi-string-prep-02.txt,
+       doc/specifications/draft-ietf-ips-iscsi-string-prep-03.txt,
+       doc/specifications/draft-ietf-ldapbis-strprep-03.txt,
+       doc/specifications/draft-ietf-xmpp-core-18.txt,
+       doc/specifications/draft-ietf-xmpp-core-19.txt,
+       doc/specifications/draft-ietf-xmpp-core-20.txt,
+       doc/specifications/draft-ietf-xmpp-core-21.txt,
+       doc/specifications/draft-ietf-xmpp-core-22.txt,
+       doc/specifications/draft-ietf-xmpp-core-23.txt,
+       doc/specifications/draft-ietf-xmpp-core-24.txt,
+       doc/specifications/draft-zeilenga-ldapbis-strmatch-00.txt,
+       doc/specifications/draft-zeilenga-ldapbis-strmatch-01.txt: Add.
+
+2004-06-03  Simon Josefsson <simon@josefsson.org>
+
+       * java/.cvsignore: [no log message]
+
+2004-06-03  Simon Josefsson <simon@josefsson.org>
+
+       * java/misc/Makefile.am: Use versioned *.jar.
+
+2004-06-02  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: Versionize *.jar filename.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/Makefile.am: Dist HTMLs.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs_template: Add JavaDoc links.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Copy javadoc files.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/.cvsignore: [no log message]
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/.cvsignore: [no log message]
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/java/Makefile.am: Fix.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: Add javadoc.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: Distribute libidn.jar, suggested by Oliver Hitz.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ac_prog_javadoc.m4: Add.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am, doc/java/Makefile.am: Add java/.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Build doc/java/Makefile.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Find javadoc.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po,
+       po/sr.po, po/sv.po: Generated.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.8.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * java/misc/Makefile.am: Don't use GNU make specific 'override',
+       from Oliver Hitz.
+
+2004-06-01  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/Makefile.am, java/misc/Makefile.am: Dist
+       *.java, suggested by Oliver Hitz.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * README: Fix.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.7.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po,
+       po/sr.po, po/sv.po: Generated.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Markup fix.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: (Java API): Fix.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Markup fixes.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am, java/README.UNICODE, java/README.html: Remove
+       (moved to doc/libidn.texi).
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: (Introduction): Mention Java port.  (Downloading and Installing):
+       Mention --enable-java.  (Java API): Add, taken from java/README.html
+       and java/README.UNICODE by Oliver Hitz.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: Revert, I don't want to require gcj for CVS
+       builds.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: Dist libidn.jar (this seem to be the norm among
+       Java libraries?).
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/.cvsignore, java/misc/.cvsignore: [no log
+       message]
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am: Build more.
+
+2004-05-31  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, java/Makefile.am, java/README.UNICODE,
+       java/README.html, java/gnu/inet/encoding/CombiningClass.java,
+       java/gnu/inet/encoding/Composition.java,
+       java/gnu/inet/encoding/DecompositionKeys.java,
+       java/gnu/inet/encoding/DecompositionMappings.java,
+       java/gnu/inet/encoding/IDNA.java,
+       java/gnu/inet/encoding/IDNAException.java,
+       java/gnu/inet/encoding/Makefile.am,
+       java/gnu/inet/encoding/NFKC.java,
+       java/gnu/inet/encoding/Punycode.java,
+       java/gnu/inet/encoding/PunycodeException.java,
+       java/gnu/inet/encoding/RFC3454.java,
+       java/gnu/inet/encoding/Stringprep.java,
+       java/gnu/inet/encoding/StringprepException.java,
+       java/misc/GenerateNFKC.java, java/misc/GenerateRFC3454.java,
+       java/misc/Makefile.am, java/misc/TestIDNA.java,
+       java/misc/TestNFKC.java: Improve JAVA port, from Oliver Hitz
+       <oliver@net-track.ch>.
+
+2004-05-26  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fixes.
+
+2004-05-25  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fix.
+
+2004-05-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-05-24  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-05-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.6.
+
+2004-05-24  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po,
+       po/sr.po, po/sv.po: Generated.
+
+2004-05-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-05-24  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: (include_HEADERS): Install idn-free.h, reported by Daniel Stenberg
+       <daniel-curl@haxx.se>.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/pr-29.html: Update.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.5.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po,
+       po/sr.po, po/sv.po: Generated.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Bump copyright years on man pages.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump so version.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: (HIGNORE): Add idn-free.h.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep): Move declaration of temporary variable to start of
+       scope.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: (idna_to_unicode_4z4z): There was no double free, remove my
+       modification.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: (idna_to_ascii_4i, idna_to_unicode_4z4z): Fix memory leak when
+       memory allocation fails.  From Ulrich Drepper <drepper@redhat.com>,
+       but modified to fix double free and incorrect 'if' condition.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep): Fix memory leak when memory allocation fails.  From
+       Ulrich Drepper <drepper@redhat.com>.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Doc fix.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Back port of (some) changes by Ulrich Drepper
+       <drepper@redhat.com>.  (idna_to_unicode_internal): Fix memory leaks when memory allocation
+       fails.  Deallocate utf8in on failure.  (idna_to_unicode_44i): Don't free, done in idna_to_unicode_internal.  (idna_to_ascii_4z): Fix memory leak when memory allocation fails.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-05-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am, lib/idn-free.c, lib/idn-free.h: Add idn_free,
+       suggested by "Gisle Vanem" <gvanem@broadpark.no>.
+
+2004-04-30  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-04-30  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: (idna_to_ascii_lz): Doc fix, reported by Joe Orton
+       <jorton@redhat.com>.
+
+2004-04-30  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_nfkc.c: Add NFKC test vectors from pr-29.html.  Fix
+       debug output.
+
+2004-04-30  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/pr-29.html: Add.
+
+2004-04-30  Simon Josefsson <simon@josefsson.org>
+
+       * tests/utils.c: Fix ucs4print debugging output.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/specifications/draft-ietf-sasl-saslprep-09.txt: Add.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_stringprep.c: Update SASLPrep test vectors.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.4.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/ro.po,
+       po/sr.po, po/sv.po: Generated.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am: Use -no-install to avoid libtool wrapper
+       script, tiny patch from Joe Orton <jorton@redhat.com>.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/stringprep-profiles: Update.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/specifications/rfc3722.txt: Add.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_stringprep.c: Add iSCSI test vectors to catch recent
+       bugs.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c: (stringprep_iscsi_prohibit): For start==0, use end!=1.
+
+2004-04-29  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c: (stringprep_iscsi): Add C_1_1, C_2_1, and C_7 (after reading newly
+       published RFC 3722).
+
+2004-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-04-24  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/ro.po: Add, by Laurentiu Buzdugan <lbuz@rolix.org>
+       via translation project.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: Rename variable to avoid silly shadowing warnings.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * tests/.cvsignore: [no log message]
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am: Move utils.c and utils.h into a separate
+       library.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * tests/.cvsignore: [no log message]
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am, tests/tst_idna.c, tests/tst_idna2.c,
+       tests/tst_nfkc.c, tests/tst_punycode.c, tests/tst_stringprep.c,
+       tests/tst_tld.c, tests/utils.c, tests/utils.h: Split out common
+       stuff into utils.c and utils.h.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_nfkc.c: Fix warnings.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Require modern autoconf.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: Indent.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/de.po, po/fr.po, po/nl.po, po/pl.po, po/sr.po,
+       po/sv.po: Generated.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.3.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: (Tld_table): Mark "name" and "version" as const.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_stringprep.c: Add SASLprep test vectors (would catch the
+       C.2.1 bug).
+
+2004-04-22  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep_find_character_in_table): Fix end-of-table test, to
+       handle valid uses of start=0 (as in table C.2.1).
+
+2004-04-21  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update PGP key.
+
+2004-04-18  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-04-18  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.pc.in: Drop -R lib flag, suggested by Martin Waitz
+       <tali@debian.org>.
+
+2004-04-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-costello-rfc3492bis-02.txt: Add.
+
+2004-04-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/rfc3743.txt: Add.
+
+2004-04-14  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-hoffman-rfc3454bis-02.txt,
+       doc/specifications/draft-hoffman-rfc3490bis-02.txt,
+       doc/specifications/draft-hoffman-rfc3491bis-01.txt: Add.
+
+2004-04-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-sasl-saslprep-08.txt: Add.
+
+2004-04-11  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fix versions.
+
+2004-04-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-04-09  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/nl.po: Add, from Elros Cyriatan
+       <cyriatan@fastmail.fm> via Translation Project.
+
+2004-04-05  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/idn-python/idn.c: Use new API, tiny patch from "Gisle
+       Vanem" <giva@bgnett.no>.
+
+2004-03-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-03-28  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/de.po: Add German translation, from Roland Illig
+       <roland.illig@gmx.de> via translation project.
+
+2004-03-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-sasl-saslprep-07.txt: Add.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: Use TAB instead of \t, suggested by Jørgen
+       Thomsen <jth@jth.net>.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * po/da.po, po/fr.po, po/pl.po, po/sr.po, po/sv.po: Generated.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.2.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Inform about Java.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo-idn.txt: Update.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, libc/Banner, libc/Makefile, libc/README,
+       libc/Versions, libc/configure, libc/getaddrinfo.c, libc/idn-stub.c,
+       libc/libc.patch, libc/libidn.texi, libc/netdb.h: Remove most of libc
+       stuff (has been integrated in libc CVS).
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * README, java/Makefile.am: Fix.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * COPYING: Add.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/libidn.texi: Fix.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS, THANKS: Add.
+
+2004-03-20  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * java/Makefile.am, java/gnu/inet/encoding/Makefile.am,
+       java/gnu/inet/encoding/Punycode.java,
+       java/gnu/inet/encoding/PunycodeException.java: Fix.
+
+2004-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ac_prog_jar.m4, m4/ac_prog_javac.m4, m4/ac_prog_javac_works.m4: 
+       Add, from GNU Autoconf Macro Archive.
+
+2004-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/.cvsignore: [no log message]
+
+2004-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/PunycodeException.java: Add, from Oliver
+       Hitz <oliver@net-track.ch>.
+
+2004-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * java/gnu/inet/encoding/Makefile.am: (noinst_JAVA): Only include Punycode*.java for now.
+
+2004-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, java/Makefile.am,
+       java/gnu/Makefile.am, java/gnu/inet/Makefile.am,
+       java/gnu/inet/encoding/Makefile.am,
+       java/gnu/inet/encoding/Punycode.java: Add infrastructure for Java
+       code, and add Punycode, from Oliver Hitz <oliver@net-track.ch>.
+
+2004-03-19  Simon Josefsson <simon@josefsson.org>
+
+       * java/.cvsignore, java/gnu/.cvsignore, java/gnu/inet/.cvsignore,
+       java/gnu/inet/encoding/.cvsignore, m4/.cvsignore: [no log message]
+
+2004-03-16  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-16  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-03-16  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/da.po: Add, from Morten Bo Johansen
+       <mojo@mbjnet.dk> via Translation Project.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * po/pl.po: Update.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * po/.cvsignore: [no log message]
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS: Add.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Fix.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS, doc/libidn.texi: Ack Unicode, Inc.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/Makefile.am: Dist COPYING.UCD.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/COPYING.UCD: Add.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/fr.po: Add, from Michel Robitaille
+       <robitail@IRO.UMontreal.CA> via Translation Project.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-03-14  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/sr.po: Add, from Aleksandar Jelenak
+       <jelenak@netlinkplus.net> via Translation Project.
+
+2004-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/no.tld: Add URLs.
+
+2004-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/Makefile.am: Add no.tld.
+
+2004-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/no.tld: Add, from Thomas Jacob <jacob@internet24.de>.
+
+2004-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Fix.
+
+2004-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, src/idn.ggo: Add.
+
+2004-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Fix.
+
+2004-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * po/LINGUAS, po/pl.po: Add Polish translation, from Jakub Bogusz
+       <qboosh@pld-linux.org>.
+
+2004-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-sasl-saslprep-06.txt: Add.
+
+2004-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Build lib/ before po/.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Generated.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.1.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_tld.c: Fix warning.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Generated.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: (idn_LDADD): Add LTLIBINTL.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Generated.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Fix.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Cosmetic fix.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Add.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Translation markup.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/.cvsignore: [no log message]
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/.cvsignore: [no log message]
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Fix.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Gettextiscate.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/sv.po: Add.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, m4/.cvsignore, po/.cvsignore: [no log message]
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am, src/gettext.h: Add gettext.h.  Define LOCALEDIR
+       (for gettext).
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * po/Makevars: Add.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, m4/.cvsignore, po/.cvsignore: [no log message]
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * config.rpath, m4/lib-ld.m4, m4/lib-prefix.m4: Remove, added by
+       gettextize.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, po/LINGUAS, po/POTFILES.in: 
+       Gettextiscate.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix IDNA_DLOPEN_ERROR.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: (stringprep_convert): Don't copy input.  Check for malloc failures.
+       From Ulrich Drepper <drepper@redhat.com>, via libidn integration in
+       libc.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Invoke setlocale (LC_ALL, "").
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: (stringprep_locale_charset_slow): Remove.  (stringprep_locale_charset) [_LIBC]: Define to nl_langinfo(CODESET).  (stringprep_locale_charset) [!_LIBC]: Don't cache charset.  Remove
+       broken setlocale hack.  All based on discussion with Ulrich Drepper
+       <drepper@redhat.com>, during libidn integration in libc.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: (Idna_rc): Doc fix IDNA_DLOPEN_ERROR.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Fix warning, tiny patch by Ulrich Drepper
+       <drepper@redhat.com> from libidn integration in libc.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.h: (Idna_rc): Add IDNA_DLOPEN_ERROR error code, for libidn part of
+       libc.
+
+2004-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h.in: (Stringprep_profiles): Mark 'name' as 'const'.  Tiny patch to libidn
+       in libc by Ulrich Drepper <drepper@redhat.com>.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Dist libc/idn-stub.c and libc/libidn.texi.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * libc/libc.patch: Update, from libc-alpha post.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * libc/idn-stub.c, libc/libidn.texi: Add, from libc-alpha post.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * libc/Makefile: Sync libc-alpha post.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README, libc/example.c: Update.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo.c, libc/netdb.h: Sync.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Fix comment.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fix version requirements.
+
+2004-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fix texinfo requirement.
+
+2004-03-05  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-03-05  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c: (stringprep_saslprep): Fix typo; make sure non-ASCII space
+       characters are prohibited.
+
+2004-03-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, doc/tld/README: Mention tldchk.berlios.de,
+       suggested by Thomas Jacob <jacob@internet24.de>.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Don't install tld.h if --disable-tld.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-sasl-anon-01.txt,
+       doc/specifications/draft-ietf-sasl-anon-02.txt,
+       doc/specifications/draft-ietf-sasl-anon-03.txt,
+       doc/specifications/draft-ietf-sasl-saslprep-05.txt: Add.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.4.0.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: Always include errno.h (C89).
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, src/idn.c: Indent.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * README: Mention TLD.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Handle draft-hoffman-idn-reg-*.txt tables
+       better.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/fr.tld: Add headers.  Fix typos and comments.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/fr.tld: Add copying conditions.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/fr.tld: Add, from Stephane Bortzmeyer <bortzmeyer@nic.fr>.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Don't document Tld_table* for now.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: (_tld_checkchar): Use new Tld_table API.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: (Tld_table): Change valid definition.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Use new API.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2004-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Improve Troubleshooting.
+
+2004-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Cosmetic fix.
+
+2004-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: (tld_check_4): Don't write to NULL errpos, from Thomas Jacob
+       <jacob@internet24.de>.
+
+2004-02-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Typo.
+
+2004-02-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Use hex in output.
+
+2004-02-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Add comment.
+
+2004-02-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Parse tables conforming to
+       draft-hoffman-idn-reg.
+
+2004-02-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-hoffman-idn-reg-00.txt,
+       doc/specifications/draft-hoffman-idn-reg-01.txt,
+       doc/specifications/draft-hoffman-idn-reg-02.txt: Add.
+
+2004-02-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix typos.
+
+2004-02-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix autoconf stuff, suggested by Stephane
+       Bortzmeyer <bortzmeyer@nic.fr>.
+
+2004-02-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Doc fix.
+
+2004-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Fix.  Indent.
+
+2004-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: (tld_get_z): Allocate correct amount, from Thomas Jacob
+       <jacob@internet24.de>.
+
+2004-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * examples/README: Fix title.
+
+2004-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * examples/README: Add.
+
+2004-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * examples/example5.c: Fix warning.
+
+2004-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix TLD debug.
+
+2004-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: TLD check correct string.
+
+2004-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Fix warning.
+
+2004-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * examples/Makefile.am: TLD fix.
+
+2004-02-10  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Fix include, from Thomas Jacob
+       <jacob@internet24.de>.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Mention example5.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Sync libidn text.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.tmpl: Sync text.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix introduction.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, tests/tst_tld.c: Typo.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: TLD fixes.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add example 5.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: (_tld_checkchar): Binary search, from jacob@internet24.de.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Remove.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, lib/tld.h: Indent.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Whitespace.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Doc fix.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl, lib/tld.c, lib/tld.h: Hide tld_tables.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/libidn.texi, lib/tld.c, lib/tld.h: (tld_get_z): Support any charset (renamed from tld_get_8z).
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, lib/tld.c, lib/tld.h: Typo.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Typo.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/libidn.texi: Add.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, lib/tld.h: (tld_get_8z): Add.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * examples/.cvsignore: [no log message]
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * examples/Makefile.am, examples/example5.c: Add.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Doc fix.
+
+2004-02-08  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c, lib/tld.h, src/idn.c, tests/tst_tld.c: Indent.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: Fix indent.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/README: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/README: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/README: Rewrite.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Fix "include".
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, lib/tld.c, lib/tld.h, src/idn.c, tests/tst_tld.c: 
+       Rename TLD_ILLEGAL to TLD_INVALID.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, lib/tld.c, lib/tld.h: Rename TLD_ILLEGAL to
+       TLD_INVALID.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Update idn command line.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.ggo: Move around.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.ggo: Fix stringprep profiles.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: TLD typo.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.ggo: Make --tld the default.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Support --tld.  Make sure output is hold in "p".  Fix
+       error messages.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.ggo: TLD fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Typos.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Doc fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Typo.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, lib/tld.h: Doc fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_tld.c: Use new API.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, lib/tld.h: (tld_default_table): Add.  (tld_get_table): Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Typo.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, lib/tld.h: Typo.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, lib/tld.h: Revert.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, lib/tld.h: Change semantics if tld_get_table.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl, lib/tld.c, lib/tld.h: Typo.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Typos.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_tld.c: Use new API.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Rename tld_check_*.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Rename tld_check_*.  Doc fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, lib/tld.h: Rename tld_gettld_* to tld_get_*.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Use new API.  (tld_get_table): Rewrite.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Use new API.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Fix Tld_table.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Reorder.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_tld.c: Use new API.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c, lib/tld.h: Don't export tld_checkchar.  Rename
+       tld_finddomain to tld_get_table.  Fixes.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_tld.c: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c, lib/punycode.c, lib/stringprep.c, lib/tld.c,
+       lib/tld.h: Indent.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix acks.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.tmpl: Update.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/.cvsignore: [no log message]
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/components.fig: Add TLD.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Update introduction.  Add TLD.  Fix autoconf
+       example.  Remove Kerberos 5 macro documentation.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Doc fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am, doc/reference/libidn-docs.tmpl: Add
+       TLD.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am, tests/Makefile.am: Make it possible to exclude
+       TLD.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Add --disable-tld.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Build doc/tld/Makefile.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/.cvsignore, tests/.cvsignore: [no log message]
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am: Add tst_tld.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.ggo: Add --tld.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_tld.c: Add.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl, lib/tld.h: Fix Tld_table.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: TLD code fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/.cvsignore: [no log message]
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: TLD fixes.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: TLD typos.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: TLD fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.c: Add, from Thomas Jacob <jacob@internet24.de>.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Fixes.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/tld.h: Add, from Thomas Jacob <jacob@internet24.de>.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: TLD fixes.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-tld-tables.pl: Print to stdout.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: TLD fixes.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Add tld/.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/Makefile.am: Fix.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/README: Add copying conditions.
+
+2004-02-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/tld/Makefile.am, doc/tld/README, lib/Makefile.am,
+       lib/gen-tld-tables.pl: Add, from Thomas Jacob <jacob@internet24.de>.
+
+2004-02-04  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Typo.
+
+2004-02-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/components.fig: Fix.
+
+2004-02-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2004-02-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/components.fig: Add.
+
+2004-02-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/.cvsignore: [no log message]
+
+2004-02-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Build components.pdf too.
+
+2004-02-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am, doc/libidn.texi: Add components.fig.
+
+2004-01-31  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2004-01-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix, reported by nisse@lysator.liu.se (Niels
+       Möller).
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix release target.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Upstream sync.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.3.7.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Add release target.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * .cvscopying, autogen.sh: Fix.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version, GNUmakefile, Makefile.am, Makefile.cfg,
+       Makefile.maint, announce-gen: Remove ugly maintainance hacks.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Typo.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Update copyright years.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2004-01-22  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, src/idn.ggo: Mention '--'.
+
+2004-01-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/stringprep-profiles: Add.
+
+2004-01-21  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php, doc/libidn.texi, src/idn.ggo,
+       tests/tst_stringprep.c: Fix iSCSI profile name.
+
+2004-01-21  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c: Add alias 'iSCSI'.
+
+2004-01-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/fdl.texi, doc/libidn.texi: Use FDL 1.2.
+
+2004-01-18  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix warning.
+
+2004-01-14  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Don't use AC_LIBTOOL_TAGS, too experimental.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix idn.1 depends.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Dist texinfo.css.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs_template: Sync with texinfo.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs_template: Remove DocBook.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, doc/Makefile.am: Remove DocBook stuff.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am, doc/libidn.css, doc/texinfo.css: Rename
+       libidn.css to texinfo.css.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.css: Fix.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.css: Fix.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Use CSS for HTML.
+
+2004-01-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.css: Add.
+
+2004-01-06  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo-idn.txt: Add.
+
+2004-01-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2004-01-06  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version: .
+
+2004-01-06  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2004-01-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.3.6.
+
+2004-01-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-01-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix license header.
+
+2004-01-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2004-01-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, m4/ax_create_stdint_h.m4: Fix, to use ax_...
+       verbatim from upstream.
+
+2004-01-01  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ac_compile_check_sizeof.m4: Remove (not used by ax_... any
+       more).
+
+2004-01-01  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ax_create_stdint_h.m4: Apply local fixes.
+
+2004-01-01  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ax_create_stdint_h.m4: Sync with upstream version 1.4.
+
+2003-12-30  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-12-30  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Allow autoconf 2.57.
+
+2003-12-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Encode file in ASCII.
+
+2003-12-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Replace non-ASCII with Texinfo accents.
+
+2003-12-16  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS, doc/libidn.texi: Add Troubleshooting discussion for idn
+       tool.  Suggested by "Jan-Hendrik Heuing" <jh@netfielders.de> and Kai
+       Schaetzl <kai@conactive.com>.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Pass data on command line.  Update error
+       enum's.  Fix.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Remove (see doc/libidn.texi instead).
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * README: Fix.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version: .
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.3.5.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/.cvsignore: [no log message]
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Use @finalout.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Remove DocBook HTML targets (I'm tired of
+       updating the random filenames in the Makefile).
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Set charset cookie.  Use @section instead of
+       @majorheading for DocBook.  Add real examples to idn section.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Sync with Texinfo CVS.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-12-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Update DocBook HTML target.
+
+2003-12-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS, doc/libidn.texi, lib/idna.c, lib/idna.h: Rename
+       IDNA_CONTAINS_LDH to IDNA_CONTAINS_NON_LDH.  Reported by Graydon
+       Hoare <graydon@redhat.com>.
+
+2003-12-10  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Check for autoconf 2.59 and automake 1.8.
+
+2003-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Mention versions.
+
+2003-12-04  Simon Josefsson <simon@josefsson.org>
+
+       * README: Fix.
+
+2003-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-faltstrom-unicode-synchronisation-00.txt: 
+       Add.
+
+2003-11-27  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-11-27  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, src/Makefile.am, src/idn.ggo, src/idn.ggo.in: 
+       Simplify gengetopt building.  Use AM_CPPFLAGS, not *_CPPFLAGS.
+
+2003-11-27  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Print instructions.  Suggested by Kai Schaetzl
+       <kai@conactive.com>.
+
+2003-11-26  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo-idn.txt: Typo.
+
+2003-11-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-11-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Update Invoking idn.
+
+2003-11-26  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c, src/idn.ggo.in: Make -a the default.
+
+2003-11-26  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Update Invoking idn.
+
+2003-11-26  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-11-26  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am, src/idn.c: Support strings passed on command line
+       instead of on stdin.  Suggested by Kai Schaetzl <kai@conactive.com>.
+
+2003-11-26  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo-idn.txt: Add todo.
+
+2003-11-25  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Disable fortran etc libtool checks.
+
+2003-11-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Add --docbook.
+
+2003-11-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Sync with texinfo.
+
+2003-11-20  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix GREETING.
+
+2003-11-11  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: TeX improvements.  From Nikos Mavroyanopoulos
+       <nmav@gnutls.org>.
+
+2003-11-11  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Use AM_MAKEINFOHTMLFLAGS (with CVS automake)
+       instead of explicit libidn.html target.
+
+2003-11-10  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/rfc2279.txt, doc/specifications/rfc3629.txt: 
+       Add.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, doc/.cvsignore: [no log message]
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Update DocBook HTML destinations.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/html/.cvsignore: Remove.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Remove unused ps_TEXINFOS and pdf_TEXINFOS.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Remove example source code to texinfo conversion
+       (@verbatiminclude is used directly on the source code instead).
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Use @verbatiminclude for examples.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * examples/Makefile.am, src/Makefile.am, tests/Makefile.am: Use
+       *_CPPFLAGS instead of obsolete INCLUDES.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Replace AM_CONFIG_HEADER with AC_CONFIG_HEADERS.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Autoupdate suggested changes: quote AC_INIT
+       parameters, and replace AC_TRY_RUN with AC_RUN_IFELSE.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Enable warnings.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * m4/.cvsignore: [no log message]
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: Use automake 1.7a idiom for elisp files.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, m4/Makefile.am: Remove m4/ as it is not
+       needed with automake 1.7a.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Use proper -o directory for gendocs.sh.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version: .
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.3.4.
+
+2003-11-09  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c, lib/stringprep.c: Fix memory leak.
+
+2003-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Remove libtool bug workaround.
+
+2003-11-05  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-josefsson-idn-test-vectors.xml: Fix.
+
+2003-11-05  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-josefsson-idn-test-vectors.xml: Fix date.
+
+2003-11-05  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-josefsson-idn-test-vectors.xml: Fix bad
+       UTF-8.
+
+2003-11-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Mkdir HTML.
+
+2003-11-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Cleanup.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * m4/Makefile.am: Dist gtk-doc.m4.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update expiry date on PGP key.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * m4/.cvsignore: [no log message]
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/.cvsignore: [no log message]
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.sgml, doc/reference/libidn-docs.tmpl: 
+       Rename.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Use my old cleaned up Makefile.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Don't break on first 'make'.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Make 'dist' work.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * reference/.cvsignore, reference/Makefile.am,
+       reference/libidn-docs.tmpl: Remove (replaced by doc/reference/).
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/libidn-docs.sgml: Add.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/.cvsignore: [no log message]
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/reference/Makefile.am: Add, based on GTK-DOC example
+       Makefile.am.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Add reference/.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Remove GTK-DOC subdir reference/ (moved to doc/).
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Build GTK-DOC Makefile in doc/reference instead of
+       reference/.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Use GTK_DOC_CHECK macro for gtk-doc checks.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * m4/gtk-doc.m4: Add.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Use GTK-DOC conditional.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: Rebuild Makefile after rebuilding
+       Makefile.gdoc.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Set GDOC_MAN_EXTRA_ARGS.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: Add GDOC_TEXI_EXTRA_ARGS, GDOC_MAN_EXTRA_ARGS.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: GDOC framework cleanup.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: Create texinfo for whole sources files too.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: Add -man parameters (move to Makefile.am?).
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Just touch doc/Makefile.gdoc.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: Mark Makefile.gdoc as BUILT_SOURCES.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Bootstrap doc/Makefile.gdoc.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: (Makefile.gdoc): Depend on ../configure for bootstrapping.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/.cvsignore: [no log message]
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/.cvsignore: [no log message]
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/man/.cvsignore, doc/man/Makefile.am: Remove.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: Mkdir.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Update docbook HTMLs.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Use gdoc @include's.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Don't build in man/.  Build idn.1 man page here.
+       Move man page dist targets from man/.  Use Makefile.gdoci to
+       generate man pages and texinfo.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.gdoci: Add, initial version.
+
+2003-11-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Don't generate doc/man/Makefile.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Move unicode utility functions from stringprep to
+       own chapter.  Replace API documentation with @include'd GDOC
+       generated version.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Generate more API manuals with gdoc.  Replace
+       phony libidn-db.html with real targets.  Update libidn-db.html
+       files.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/.cvsignore, doc/html/.cvsignore: [no log message]
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Don't use @code for @deftypefun function name.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.c: (punycode_encode): Rename parameter to match punycode.h (and more
+       importantly, to make gdoc function properly).
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Doc fixes.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: (dump_function): Handle parameters that look like 'char *foo[]'.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix rule expansions.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Dist gdoc and generated API texi's.  Generate API
+       doc.  Fix dependencies.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Sync from GSSLib.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Mention more tools.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Fix doc generating commands.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Fix HTML dir move.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Fix outdir rm.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Fix outdir rm.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh: Don't remove $outdir (might contain CVS/).
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh, doc/gendocs_template: TAR fixes.  Add
+       DocBook/Doxygen/GTK-DOC.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gendocs.sh, doc/gendocs_template: Add (taken from Texinfo
+       CVS).
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/.cvsignore, doc/html/.cvsignore: [no log message]
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Add docbook targets.
+
+2003-10-31  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Look for docbook tools.
+
+2003-10-29  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Dist libc/getaddrinfo-idn.txt.
+
+2003-10-29  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Add AC_CONFIG_AUX_DIR(.) for broken CVS libtoolize.
+
+2003-10-29  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-sasl-saslprep-04.txt: Add.
+
+2003-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-ldapbis-strprep-02.txt: Add.
+
+2003-10-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-costello-rfc3492bis-01.txt: Add.
+
+2003-10-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-ips-iscsi-string-prep-06.txt: Add.
+
+2003-10-24  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/IDNstatement.txt,
+       doc/specifications/draft-hoffman-rfc3490bis-01.txt: Add.
+
+2003-10-24  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Fix.
+
+2003-10-19  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/idn-python/README: Add.
+
+2003-10-19  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/README: Fix.
+
+2003-10-19  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-stringprep-tables.pl: Add warning in comment.
+
+2003-10-19  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo-idn.txt: Character set fixes.
+
+2003-10-19  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo-idn.txt: Fix.
+
+2003-10-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2003-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Add comment.
+
+2003-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2003-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version: .
+
+2003-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.3.3.
+
+2003-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-18  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: Revert to old elisp automake idiom.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h.in: (struct Stringprep_table, struct
+       Stringprep_profiles): Use 'const'.  (stringprep_4i, stringprep_4zi, stringprep, stringprep_profile):
+       Likewise.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep_find_character_in_table): Mark parameter as 'const'.  (stringprep_find_string_in_table): Likewise.  (stringprep_apply_table_to_string): Likewise.  (stringprep_4i, stringprep_4zi_1, stringprep_4zi, stringprep):
+       Likewise.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep_profile): Fix warning.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_idna.c, tests/tst_punycode.c: Fix warnings.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_idna.c, tests/tst_idna2.c, tests/tst_nfkc.c,
+       tests/tst_punycode.c, tests/tst_stringprep.c: Indent.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Remove stringprep_generic documentation.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Remove stringprep_generic.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-stringprep-tables.pl: Mark table elements as 'const'.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep_apply_table_to_string): Remove 'name' parameter.  (stringprep_4i): Likewise.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c: (stringprep_profiles): Remove "generic".  Indent.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h.in: (struct Stringprep_table): Remove 'name'.  (stringprep_profiles, stringprep_rfc3454_A_1,stringprep_rfc3454_B_1) (stringprep_rfc3454_B_2, stringprep_rfc3454_B_3) (stringprep_rfc3454_C_1_1, stringprep_rfc3454_C_1_2) (stringprep_rfc3454_C_2_1, stringprep_rfc3454_C_2_2) (stringprep_rfc3454_C_3, stringprep_rfc3454_C_4) (stringprep_rfc3454_C_5, stringprep_rfc3454_C_6) (stringprep_rfc3454_C_7, stringprep_rfc3454_C_8) (stringprep_rfc3454_C_9, stringprep_rfc3454_D_1) (stringprep_rfc3454_D_2) (stringprep_nameprep) (stringprep_saslprep, stringprep_plain,stringprep_trace) (stringprep_kerberos5) (stringprep_xmpp_nodeprep, stringprep_xmpp_resourceprep) (stringprep_xmpp_nodeprep_prohibit) (stringprep_iscsi): Mark as 'const'.  (stringprep_generic, stringprep_generic): Remove.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.h, lib/stringprep.h.in, tests/tst_stringprep.c: 
+       Indent.
+
+2003-10-17  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Fix memory leak.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/gdoc: Fix #include for man pages.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Sync 'idn -h'.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-stringprep-tables.pl, lib/idna.c, lib/nfkc.c,
+       lib/profiles.c, lib/punycode.c, lib/stringprep.c, lib/toutf8.c,
+       lib/version.c, src/idn.c, tests/tst_idna.c, tests/tst_idna2.c,
+       tests/tst_nfkc.c, tests/tst_stringprep.c: Include cleanup.  We
+       assume C89, use <...> for headers we use, and use "..." for headers
+       we implement.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: Fix gengetopt building.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.ggo.in: Use less negations for --quiet, reported by Oden
+       Eriksson <oden.eriksson@kvikkjokk.net>.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: Fix gengetopt built source files.  Use new
+       automake Emacs Lisp targets.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Use current version number in examples.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Update so version.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.h: Include parameter names in prototypes, for
+       GTK-DOC.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Doc fix.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix typo.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_idna.c, tests/tst_punycode.c: Fix.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/internal.h: Removed.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c, tests/tst_nfkc.c, tests/tst_stringprep.c: Make
+       #include's explicit.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_idna.c, tests/tst_idna2.c, tests/tst_punycode.c: Make
+       #include's explicit.  Fix warnings.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Remove internal.h.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Doc fix.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c, lib/stringprep.c, lib/toutf8.c, lib/version.c: 
+       Make #include's explicit.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Make #include's explicit.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Fix.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Make #include's explicit.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.h: Fix typo.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.c: Sync with latest draft, but change return types to
+       'int' to be backwards compatible.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.h: Sync with latest draft, but change return types to
+       'int' to be backwards compatible.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, lib/internal.h: Remove DMALLOC stuff.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Fix warnings.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Typo.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_stringprep.c: Simplify debug prints.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: (idna_to_unicode_internal): Handle reallocating larger utf8in after
+       stringprep error STRINGPREP_TOO_SMALL_BUFFER.  (idna_to_unicode_44i): Let new logic in idna_to_unicode_internal()
+       replace BUFSIZ alloc.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep_profile): Loop around stringprep return
+       STRINGPREP_TOO_SMALL_BUFFER and increase buffer size.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep): Check return value from stringprep_ucs4_to_utf8.
+       Don't use goto.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep): Loop around stringprep_4i error
+       STRINGPREP_TOO_SMALL_BUFFER and increase buffer size.  (stringprep_apply_table_to_string): Don't dereference possibly
+       unallocated memory just to do pointer arithmetic.
+
+2003-10-16  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Check malloc return value.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Check malloc return code.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Doc fox.  Add stringprep_4i and stringprep_4zi.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Doc fix.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * doc/man/Makefile.am: Add stringprep_4i.3, stringprep_4zi.3.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Doc fix.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h.in: (stringprep_4i, stringprep_4zi): Add.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep1): Don't zero terminate.  Rename to stringprep_4i and
+       export it.  (stringprep_4zi_1): Add.  Calls stringprep_4i, then zero terminate.  (stringprep_4zi): Add.  New API.  (stringprep): Use stringprep_4zi_1.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Fix typo.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: (stringprep): Split core part into stringprep1.  (stringprep1): New, simplified version of core part.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Remove generic.  Add trace.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Print UCS-4 instead of UTF-8 in debug output for
+       --stringprep.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-15  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix UCS-4 output in --stringprep.  Print debug output
+       even with --idna-to-ascii.  Fix error message.
+
+2003-10-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo-idn.txt: Clarify alternative approaches.
+
+2003-10-11  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo-idn.txt: Fix.
+
+2003-10-11  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo-idn.txt: Add.
+
+2003-10-10  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Revert typo.
+
+2003-10-10  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Fix so version comment (matches libtool manual).
+
+2003-10-09  Simon Josefsson <simon@josefsson.org>
+
+       * FAQ: Fix.
+
+2003-10-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-09  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.ggo.in: Remove 'generic' (should not be exposed).  Add
+       'trace'.
+
+2003-10-09  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-hoffman-rfc3454bis-01.txt: Add.
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Fix doxygen generation.
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version: .
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.3.2.
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Remove --rsyncable for now, Debian (stable) gzip
+       do not support it.
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * GNUmakefile: TAR_OPTION crashes tar in Debian, comment out for
+       now.
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Doc fix.
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * m4/Makefile.am, m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: 
+       Add.
+
+2003-10-07  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-hoffman-rfc3490bis-00.txt,
+       doc/specifications/draft-hoffman-rfc3491bis-00.txt: Add.
+
+2003-10-06  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-costello-rfc3492bis-00.txt,
+       doc/specifications/draft-hoffman-rfc3454bis-00.txt: Add.
+
+2003-10-06  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c, lib/stringprep.h.in: (stringprep_profile): Mark 'in' as 'const'.
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c: Fix comment.
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c, lib/stringprep.h.in: Add trace profile (SASL
+       ANONYMOS).
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Cosmetic fixes.
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Fix.
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version: .
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * announce-gen: Perl 5.8.1 fix.
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.3.1.
+
+2003-10-02  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-unicode-tables.pl, lib/nfkc.c: Fix NFKC, from Noah Levitt
+       <nlevitt@columbia.edu> via bugzilla.gnome.org bug 123421.
+
+2003-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2003-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add.
+
+2003-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_idna2.c: Indent.
+
+2003-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Fix.
+
+2003-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix indent target.
+
+2003-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am, tests/Makefile.am: Add indent rule.
+
+2003-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c, lib/nfkc.c, lib/punycode.h: Indent.
+
+2003-09-28  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Fix.  Add indent target.
+
+2003-09-26  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: Fix Hangul patch.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_idna2.c: Fix typo.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/BidiMirroring-3.2.0.txt, lib/Makefile.am,
+       lib/gen-unicode-tables.pl, lib/nfkc.c: Sync with GLIB for Unicode
+       stuff.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.h: Fix typo.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_idna2.c: Update test vectors.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix debug messages.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: (DOTP): New.  (idna_to_unicode_4z4z): Use it.  (idna_to_ascii_4z): Use it. Make root label handling explicit.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * lib/nfkc.c: (decompose_hangul, combine_hangul): New.  (combine, _g_utf8_normalize_wc): Use them.  Adds support for
+       algorithmic composition of Hangul Syllables, adapted from a patch
+       written by Noah Levitt <nlevitt@columbia.edu> for GLIB, discussed in
+       <http://bugzilla.gnome.org/show_bug.cgi?id=100456> and available
+       from <http://bugzilla.gnome.org/showattachment.cgi?attach_id=18915>.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_idna2.c: Fix.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am, tests/tst_idna2.c: Add.
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * tests/.cvsignore: [no log message]
+
+2003-09-25  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: (idna_to_ascii_4z): Output "" instead of "." on input "".  (Some
+       religions claim "" should fail though.)
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Doc fix.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * src/punycode.el: (punycode-shutdown): New.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * src/idna.el: (idna-to-ascii-parameters, idna-to-unicode-parameters): Add
+       --usestd3asciirules.  (idna-shutdown): New.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Fix.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Fix.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version: .
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.3.0.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Fix.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/draft-ietf-sasl-saslprep-03.txt: Add.
+
+2003-09-23  Simon Josefsson <simon@josefsson.org>
+
+       * libc/Makefile, libc/README: Fix.
+
+2003-09-22  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-09-22  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c: (stringprep_saslprep): Prohibit inappropriate for canonical
+       representation characters.
+
+2003-09-14  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Dist libc/Banner.
+
+2003-09-14  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Create idna.h without dependency on idn-int.h.
+
+2003-09-14  Simon Josefsson <simon@josefsson.org>
+
+       * tests/tst_stringprep.c: Fix memory leak.
+
+2003-09-14  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix memory leaks.
+
+2003-09-14  Simon Josefsson <simon@josefsson.org>
+
+       * src/idn.c: Fix greeting message.
+
+2003-09-14  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Copy Banner.
+
+2003-09-14  Simon Josefsson <simon@josefsson.org>
+
+       * libc/Banner: Add.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.c: Cast.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/internal.h: Fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/internal.h: Simplify #include mess.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Remove cruft.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Remove dummy.c.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Doc fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, lib/punycode.c, lib/stringprep.c: Doc fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Doc fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Doc fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.c, lib/stringprep.c: Doc fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.c: Doc fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.h: Fix RFC compatibility.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.h: Typedef Punycode_status.  Use 'int' instead of
+       'enum' for return codes.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.c: Use 'int' instead of 'enum' for return code.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/profiles.c, lib/stringprep.h.in: Rename stringprep_generic_*
+       to stringprep_rfc3454_*.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/.cvsignore: [no log message]
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Rename stringprep_generic.c to rfc3454.c.  Add to
+       BUILT_SOURCES.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/gen-stringprep-tables.pl: Write to rfc3454.c.  Rename
+       variables to stringprep_rfc3454_* from stringprep_generic_*.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * reference/dummy.c: Remove, merged into ../lib/*.c.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/punycode.c: Doc fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c: Fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/man/Makefile.am: Fix update-api.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c, lib/stringprep.c: Doc fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h.in: Indent.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.c: Use 'int' instead of 'enum's.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/stringprep.h.in: Typedef Stringprep_rc,
+       Stringprep_profile_flags, and Stringprep_profile_steps.  Use 'int'
+       instead of 'enum's (i.e., revert 0.2.3 changes).
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am, lib/obsolete.c: Remove obsolete.c.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am, lib/idna.h, lib/stringprep_generic.h,
+       lib/stringprep_iscsi.h, lib/stringprep_kerberos5.h,
+       lib/stringprep_nameprep.h, lib/stringprep_plain.h,
+       lib/stringprep_xmpp.h: Remove obsolete headers.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c, lib/obsolete.c: Use int instead of enum's.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.h: Typedef Idna_rc and Idna_flags.  Use int instead of
+       enum's.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Fix path to sources.  Fix HIGNORE.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Workaround -I problem.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/libc.patch: Against glibc 2.3.2.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * m4/Makefile.am, m4/memset.m4, m4/onceonly_2_57.m4, m4/strdup.m4: 
+       Remove unused m4's.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * src/getopt.c, src/getopt.h, src/getopt1.c: Add (from gl/).
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/idna.c, lib/toutf8.c: Don't use strdup.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, gl/.cvsignore, gl/Makefile.am, gl/getopt.c,
+       gl/getopt.h, gl/getopt1.c, gl/m4/.cvsignore, gl/m4/Makefile.am,
+       gl/m4/memset.m4, gl/m4/onceonly_2_57.m4, gl/m4/strdup.m4,
+       gl/memset.c, gl/strdup.c, src/Makefile.am: Remove gl/.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am: Fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Remove checks for memset and strdup; we assume C89,
+       so memset exists, and we no longer use strdup.  Remove gl/.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Ported to Mac OS X / Darwin.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * gl/.cvsignore: [no log message]
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am: Use libtool.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * examples/Makefile.am, src/Makefile.am, tests/Makefile.am: Make
+       LDADD libtool friendly.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac, doc/Makefile.am, doc/gdoc,
+       doc/man/.cvsignore, doc/man/Makefile.am: Build man pages.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/idna-ace-prefix.txt, idna-ace-prefix.txt: Move.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Fix.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/Versions: Typo.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * lib/internal.h: [_LIBC]: Define ICONV_CONST.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo.c: Use modern API.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/Versions: Export modern API.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Update.
+
+2003-09-12  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo.c: GLIBC 2.3.2 sync.
+
+2003-09-02  Simon Josefsson <simon@josefsson.org>
+
+       * libc/getaddrinfo.c, libc/libc.patch: Revert.
+
+2003-08-26  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Update key.
+
+2003-08-26  Simon Josefsson <simon@josefsson.org>
+
+       * examples/Makefile.am, examples/README: Add examples/README.
+
+2003-08-26  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fixes.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix cvs2cl parameters.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, gl/Makefile.am, lib/Makefile.am: Use $() instead of
+       @@.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Do some tests that work.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.cfg: Fix URL.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Bump versions.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix cvs2cl parameters.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Ignore errors on www update.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/doxygen/Doxyfile.in: Update paths.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version: .
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * announce-gen: Revert.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.maint: Fix.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.2.3.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * .cvscopying: Add tabs, for Makefile.maint check.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Replace release target with Makefile.maint etc.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * .prev-version, GNUmakefile, Makefile.cfg, Makefile.maint,
+       announce-gen: Add.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * examples/example3.c: Doc fix.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2003-08-25  Simon Josefsson <simon@josefsson.org>
+
+       * examples/example4.c: Really call ToUnicode instead of ToASCII.
+       Reported by Trond Haugen <trond.haugen@uninett.no>.
+
+2003-08-21  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add port.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * gl/Makefile.am: Dist getopt.h.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am: Link with gl stuff.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * lib/toutf8.c: Fix warning message.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Group portability stuff together.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * src/Makefile.am, tests/Makefile.am: Fix -I paths.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Distcheck fixes.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * examples/Makefile.am: Fix paths.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Fix paths (for distcheck).
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix directory build order, for gtk-doc.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Update paths to source code.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am, lib/idna.c, lib/obsolete.c: Move obsolete
+       functions into separate file.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Fixes.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Build doc after src, for help2man on idn.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * lib/Makefile.am: Add EXTRA_DISTs.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Add gl, lib, src, tests and examples to SUBDIRS.  Add
+       gl/m4 to ACLOCAL_AMFLAGS.  Remove rules that are moved into lib/,
+       src/, tests/ and examples/.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Split up files into sub-directories.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * gdoc: Move gdoc to doc/.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * doc/specifications/.cvsignore, gl/.cvsignore, gl/m4/.cvsignore,
+       lib/.cvsignore, src/.cvsignore, tests/.cvsignore: [no log message]
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * examples/.cvsignore, lib/.cvsignore: [no log message]
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * CaseFolding-3.2.0.txt, CompositionExclusions-3.2.0.txt,
+       LineBreak-3.2.0.txt, SpecialCasing-3.2.0.txt,
+       UnicodeData-3.2.0.txt, doc/Makefile.am, doc/gdoc,
+       doc/specifications/CaseFolding-3.2.0.txt,
+       doc/specifications/CompositionExclusions-3.2.0.txt,
+       doc/specifications/LineBreak-3.2.0.txt,
+       doc/specifications/Makefile.am,
+       doc/specifications/SpecialCasing-3.2.0.txt,
+       doc/specifications/UnicodeData-3.2.0.txt,
+       doc/specifications/draft-ietf-ips-iscsi-string-prep-04.txt,
+       doc/specifications/draft-ietf-ips-iscsi-string-prep-05.txt,
+       doc/specifications/draft-ietf-krb-wg-utf8-profile-01.txt,
+       doc/specifications/draft-ietf-ldapbis-dn-11.txt,
+       doc/specifications/draft-ietf-ldapbis-strprep-00.txt,
+       doc/specifications/draft-ietf-ldapbis-strprep-01.txt,
+       doc/specifications/draft-ietf-sasl-anon-00.txt,
+       doc/specifications/draft-ietf-sasl-saslprep-00.txt,
+       doc/specifications/draft-ietf-sasl-saslprep-01.txt,
+       doc/specifications/draft-ietf-sasl-saslprep-02.txt,
+       doc/specifications/draft-ietf-xmpp-nodeprep-01.txt,
+       doc/specifications/draft-ietf-xmpp-nodeprep-02.txt,
+       doc/specifications/draft-ietf-xmpp-nodeprep-03.txt,
+       doc/specifications/draft-ietf-xmpp-resourceprep-01.txt,
+       doc/specifications/draft-ietf-xmpp-resourceprep-02.txt,
+       doc/specifications/draft-ietf-xmpp-resourceprep-03.txt,
+       doc/specifications/draft-josefsson-idn-test-vectors-00.txt,
+       doc/specifications/draft-josefsson-idn-test-vectors.xml,
+       doc/specifications/draft-zeilenga-ldapbis-strmatch-02.txt,
+       doc/specifications/draft-zeilenga-ldapbis-strprep-00.txt,
+       doc/specifications/rfc3454.txt, doc/specifications/rfc3490.txt,
+       doc/specifications/rfc3491.txt, doc/specifications/rfc3492.txt,
+       draft-ietf-ips-iscsi-string-prep-04.txt,
+       draft-ietf-ips-iscsi-string-prep-05.txt,
+       draft-ietf-krb-wg-utf8-profile-01.txt,
+       draft-ietf-ldapbis-dn-11.txt, draft-ietf-ldapbis-strprep-00.txt,
+       draft-ietf-ldapbis-strprep-01.txt, draft-ietf-sasl-anon-00.txt,
+       draft-ietf-sasl-saslprep-00.txt, draft-ietf-sasl-saslprep-01.txt,
+       draft-ietf-sasl-saslprep-02.txt, draft-ietf-xmpp-nodeprep-01.txt,
+       draft-ietf-xmpp-nodeprep-02.txt, draft-ietf-xmpp-nodeprep-03.txt,
+       draft-ietf-xmpp-resourceprep-01.txt,
+       draft-ietf-xmpp-resourceprep-02.txt,
+       draft-ietf-xmpp-resourceprep-03.txt,
+       draft-josefsson-idn-test-vectors-00.txt,
+       draft-josefsson-idn-test-vectors.xml,
+       draft-zeilenga-ldapbis-strmatch-02.txt,
+       draft-zeilenga-ldapbis-strprep-00.txt, rfc3454.txt, rfc3490.txt,
+       rfc3491.txt, rfc3492.txt: Move documentation and specifications into
+       doc/ and doc/specifications/.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * getopt.c, getopt.h, getopt1.c, gl/Makefile.am, gl/getopt.c,
+       gl/getopt.h, gl/getopt1.c, gl/m4/Makefile.am, gl/m4/memset.m4,
+       gl/m4/onceonly_2_57.m4, gl/m4/strdup.m4, gl/memset.c, gl/strdup.c,
+       memset.c, strdup.c: Move portability utilities into gl/.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * gen-stringprep-tables.pl, gen-unicode-tables.pl, idna.c, idna.h,
+       internal.h, lib/Makefile.am, lib/gen-stringprep-tables.pl,
+       lib/gen-unicode-tables.pl, lib/idna.c, lib/idna.h, lib/internal.h,
+       lib/nfkc.c, lib/profiles.c, lib/punycode.c, lib/punycode.h,
+       lib/stringprep.c, lib/stringprep.h.in, lib/stringprep_generic.h,
+       lib/stringprep_iscsi.h, lib/stringprep_kerberos5.h,
+       lib/stringprep_nameprep.h, lib/stringprep_plain.h,
+       lib/stringprep_xmpp.h, lib/toutf8.c, lib/version.c, nfkc.c,
+       profiles.c, punycode.c, punycode.h, stringprep.c, stringprep.h.in,
+       stringprep_generic.h, stringprep_iscsi.h, stringprep_kerberos5.h,
+       stringprep_nameprep.h, stringprep_plain.h, stringprep_xmpp.h,
+       toutf8.c, version.c: Move library into lib/.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * tests/Makefile.am, tests/tst_idna.c, tests/tst_nfkc.c,
+       tests/tst_punycode.c, tests/tst_stringprep.c, tst_idna.c,
+       tst_nfkc.c, tst_punycode.c, tst_stringprep.c: Move tests into
+       tests/.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * idn.c, idn.ggo.in, idna.el, punycode.el, src/Makefile.am,
+       src/idn.c, src/idn.ggo.in, src/idna.el, src/punycode.el: Move
+       applications into src/.
+
+2003-08-20  Simon Josefsson <simon@josefsson.org>
+
+       * example.c, example2.c, example3.c, example4.c,
+       examples/Makefile.am, examples/example.c, examples/example2.c,
+       examples/example3.c, examples/example4.c: Move examples into
+       examples/.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * TODO: Add.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * nfkc.c: Fix doc.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c: Remove unused function.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * idn.c: Fix warnings.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, doc/libidn.texi, reference/dummy.c: Add.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c, idna.h: Use enum types where appropriate.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Doc fixes.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.h.in: Fix.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Use enum/size_t/ssize_t where appropriate.  Doc fix.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.h.in: Replace int with proper enum, where appropriate.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Typo.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add FreeBSD 4.8.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.2.2.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix release target.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix release target.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, TODO: Add.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.c: Typo.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.h: Indent.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.h: Revert to RFC code: use punycode_status.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.c: Revert to RFC code: use punycode_uint and enum
+       punycode_status.  However, we do continue to use size_t to promote
+       use of sizeof() by application writers.  We return
+       punycode_bad_input if a size_t value exceeds the largest
+       punycode_uint, since the code presumably cannot handle that.  If
+       size_t is smaller than punycode_uint, it seems unlikely that an
+       application could be able to pass a string that is longer than
+       SIZE_MAX anyway, but should it happen the worst that occur is that
+       the punycode code will only see the beginning of the string, which
+       isn't unreasonable on a platform with a small SIZE_MAX.
+
+2003-08-13  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.h: Define and use punycode_uint.
+
+2003-08-08  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c: (stringprep_locale_charset): Improve docstring.
+
+2003-08-01  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-ips-iscsi-string-prep-05.txt: Add.
+
+2003-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Replace gnudist with gnuftp.
+
+2003-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, THANKS: Add.
+
+2003-07-31  Simon Josefsson <simon@josefsson.org>
+
+       * idn.c: Encode -u output in locale charset, suggested by Adam M.
+       Costello.
+
+2003-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * memset.c: Rewrite to get LGPL code.
+
+2003-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * strdup.c: Revert, to get LGPL code.
+
+2003-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Install but don't distribute idn-int.h.
+
+2003-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * m4/.cvsignore: [no log message]
+
+2003-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, m4/Makefile.am: Dist m4's.
+
+2003-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, m4/memset.m4, m4/onceonly_2_57.m4,
+       m4/strdup.m4, strdup.c: Replace AC_REPLACE_OBJ with gnulib.
+
+2003-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2003-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-07-11  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Use BUILT_SOURCES for idn_cmd.* and idn-int.h, and
+       don't include idn-int.h in the distribution.
+
+2003-07-08  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-07-08  Simon Josefsson <simon@josefsson.org>
+
+       * m4/ax_create_stdint_h.m4: Look in sys/types.h too, for cygwin.
+
+2003-07-05  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE, doc/libidn.texi: Don't use () when talking about the
+       name of a function.
+
+2003-07-04  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-07-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.2.1.
+
+2003-07-04  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Create idn_cmd.* in srcdir.
+
+2003-07-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-07-04  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2003-07-04  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-07-04  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Fix last commit.
+
+2003-07-04  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-07-04  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Handle empty labels, tiny patch based on suggestion by
+       Marcos Sanz/Denic <sanz@denic.de>.
+
+2003-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Ignore .cvs*.
+
+2003-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Add legal information to ChangeLog.
+
+2003-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * .cvscopying: Add.
+
+2003-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c, tst_punycode.c: Indent.
+
+2003-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c: (stringprep_convert): Use ICONV_CONST.  Tiny patch suggested by
+       Robert Norris <rob@cataclysm.cx>.
+
+2003-07-02  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-ldapbis-dn-11.txt, draft-ietf-ldapbis-strprep-01.txt: 
+       Add.
+
+2003-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Gengetopt 2.10 or later is required.
+
+2003-06-24  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Don't distclean idn_cmd.*, just maintainer-clean
+       them.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.2.0.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Distclean idn-int.h (really!).
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Install and distclean idn-int.h properly.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Distclean idn-int.h.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Remove idn-int.h.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Add woody armv4l.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump so version.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Tested on debian-sparc64.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Ignore idn-int.h.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Build e.g. idn before doc/idn.1 is built.
+
+2003-06-19  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi, punycode.c, punycode.h: GTK-DOC doesn't like enum
+       return types.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Copy manual from right place.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/.cvsignore: [no log message]
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, tst_oidna.c: Remove obsolete test (we break backwards
+       compatibility).
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/libidn.texi: Fix.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * idn.c, idna.c, nfkc.c, profiles.c, stringprep.c, toutf8.c,
+       tst_idna.c, tst_oidna.c, tst_stringprep.c: Indent.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * idn.c, tst_punycode.c: Fix typo.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, tst_opunycode.c, tst_ostringprep.c: Not needed (new
+       API backwards compatible).
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * tst_punycode.c, tst_stringprep.c: Use uint32_t instead of unsigned
+       long.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * example2.c: Revert to RFC, but use uint32_t and size_t.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * idna.h: Revert last change.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Fixes.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * idna.h: Remove old interfaces.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * example3.c, example4.c, idn.c: Use modern API.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c: Fix warnings.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Use uint32_t instead of unsigned long.  New functions
+       idna_to_ascii_4i, idna_to_unicode_44i, idna_to_ascii_4z,
+       idna_to_ascii_8z, idna_to_ascii_lz, idna_to_unicode_4z4z,
+       idna_to_unicode_8z4z, idna_to_unicode_8z8z, idna_to_unicode_8zlz,
+       idna_to_unicode_lzlz.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c, tst_oidna.c: Fix.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * idna.h: Fix.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * idna.h: Include stddef.h and idn-int.h.  Add IDNA flags.  Add new
+       IDNA entry points.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump version.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Change unsigned long to uint32_t.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.h.in: Change unsigned long to uint32_t.  Fix enum
+       definitions.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * internal.h: Remove inttypes/stdint, idn-int.h is used now.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * tst_oidna.c, tst_opunycode.c, tst_ostringprep.c: Add old API
+       tests.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * doc/Makefile.am: Fix.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, doc/.cvsignore, doc/Makefile.am,
+       doc/fdl.texi, doc/lgpl.texi, doc/libidn.texi, fdl.texi, lgpl.texi,
+       libidn.texi: Move manual to doc/.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Don't use gdoc.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * nfkc.c: Use uint32_t instead of unsigned long.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Get m4's from m4/.  Add tst_o*'s.  Regenerate
+       ChangeLog only for releases.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * gen-unicode-tables.pl: Include internal.h for uint32_t and use it.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.c: Change unsigned long to uint32_t.  Use enum
+       punycode_status return type.  Sync with RFC (after indent).
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.h: Include stddef and idn-int.h.  Add RFC compatibility
+       enum punycode_status elements.  Change return type to enum
+       punycode_status.  Use uint32_t instead of unsigned long.
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-06-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, iconv.m4,
+       m4/ac_compile_check_sizeof.m4, m4/ax_create_stdint_h.m4,
+       m4/iconv.m4: New idn-int.h for portable fixed size integers.  Create
+       m4/ and move iconv.m4 to it.
+
+2003-06-12  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Remove GNU make specific idiom.
+
+2003-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.1.15.
+
+2003-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump version.
+
+2003-06-07  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c, tst_idna.c, tst_stringprep.c: Remove DRAFT stuff
+       (moved to separate branch).
+
+2003-06-06  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add. Fix.
+
+2003-06-06  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Handle non-zero terminated inputs.  Tiny patch suggested
+       by Thiago Macieira.
+
+2003-06-06  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-xmpp-nodeprep-03.txt,
+       draft-ietf-xmpp-resourceprep-03.txt: Add.
+
+2003-06-04  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-06-04  Simon Josefsson <simon@josefsson.org>
+
+       * nfkc.c: Check array bounds, tiny patch from Joe Hildebrand.
+
+2003-06-02  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-05-28  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-ldapbis-strprep-00.txt: Add.
+
+2003-05-28  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-sasl-saslprep-02.txt: Add.
+
+2003-05-10  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-05-10  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.1.14.
+
+2003-05-10  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-05-10  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/README: Add.
+
+2003-05-10  Simon Josefsson <simon@josefsson.org>
+
+       * idna.el, punycode.el: Bind process-environment correctly.
+
+2003-05-09  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Copy doxygen docs.
+
+2003-05-09  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-ldapbis-dn-10.txt: Unrealted, mistakenly added.
+
+2003-05-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-05-09  Simon Josefsson <simon@josefsson.org>
+
+       * draft-josefsson-idn-test-vectors.xml: Add UTF-8 tests.
+
+2003-05-09  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.el: Use process-environment instead of utility env.
+       Default values of punycode-program, punycode-to-ascii-parameters,
+       punycode-to-unicode-parameters changed, and punycode-environment
+       added.  Use separate error strings.  Handle when idn is not
+       installed.
+
+2003-05-09  Simon Josefsson <simon@josefsson.org>
+
+       * idna.el: Use process-environment instead of utility env.  Default
+       values of idna-program, idna-to-ascii-parameters,
+       idna-to-unicode-parameters changed, and idna-environment added.  Use
+       separate error strings.
+
+2003-05-09  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Update Emacs Lisp API.  Fix toc.
+
+2003-05-09  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-05-07  Simon Josefsson <simon@josefsson.org>
+
+       * idna.el: Handle when idn is not installed.
+
+2003-05-06  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-ldapbis-dn-10.txt, draft-ietf-sasl-saslprep-01.txt,
+       draft-zeilenga-ldapbis-strprep-00.txt: Add.
+
+2003-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix NEWS entry of last release (API/ABI compatibility).
+
+2003-04-23  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-xmpp-nodeprep-02.txt,
+       draft-ietf-xmpp-resourceprep-02.txt: Add.
+
+2003-04-20  Simon Josefsson <simon@josefsson.org>
+
+       * draft-josefsson-idn-test-vectors-00.txt: Add.
+
+2003-04-16  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Mention devices it runs on.
+
+2003-03-28  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Fix bad UTF-8.  Self test for bad UTF-8.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * draft-josefsson-idn-test-vectors.xml: Text fixes.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c, tst_stringprep.c: Fix -DDRAFT output.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Dist contrib/doxygen/.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Mention doxygen.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Build contrib/doxygen/Doxyfile.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/doxygen/Doxyfile.orig: Add unmodified doxygen
+       configuration file, for future "diff"s.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/doxygen/Doxyfile.in: Use PDF hyperlinks.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * gdoc: Add -doxygen.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * internal.h: Add \mainpage for doxygen.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/README: Mention doxygen.
+
+2003-03-26  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/doxygen/.cvsignore, contrib/doxygen/Doxyfile.in,
+       contrib/doxygen/gdoc2doxygen: Add doxygen template.
+
+2003-03-23  Simon Josefsson <simon@josefsson.org>
+
+       * FAQ: Fix.
+
+2003-03-23  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2003-03-23  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Ignore draft.*xml in ChangeLog.
+
+2003-03-23  Simon Josefsson <simon@josefsson.org>
+
+       * idn.c: Fix debug prints.
+
+2003-03-22  Simon Josefsson <simon@josefsson.org>
+
+       * draft-josefsson-idn-test-vectors.xml: Fix sec cons.
+
+2003-03-22  Simon Josefsson <simon@josefsson.org>
+
+       * draft-josefsson-idn-test-vectors.xml: Cosmetic fixes.
+
+2003-03-22  Simon Josefsson <simon@josefsson.org>
+
+       * draft-josefsson-idn-test-vectors.xml: Add IDNA stuff.  Ack
+       punycode.
+
+2003-03-22  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c, tst_stringprep.c: Fixes for -DDRAFT.
+
+2003-03-22  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c: Support -DDRAFT.
+
+2003-03-22  Simon Josefsson <simon@josefsson.org>
+
+       * draft-josefsson-idn-test-vectors.xml: Editorial fixes.  Sync
+       stringprep table.  Fix references.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.1.13.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Sync ANNOUNCE.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump so version.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Add lingos.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/java/README: Doc fix.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Dist Java stuff.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/java/README: Doc fix.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Mention Java API.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/README: Add java/.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/java/.cvsignore, contrib/java/ExampleIDNA.java,
+       contrib/java/IDNA.c, contrib/java/IDNA.java,
+       contrib/java/Makefile.am, contrib/java/README,
+       contrib/java/autogen.sh, contrib/java/configure.ac: Add JAVA API
+       proof of concept.
+
+2003-03-13  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Tested on more platforms.
+
+2003-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c, tst_stringprep.c: Fix mem leak.
+
+2003-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c: Fix mem leak.
+
+2003-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Ignore errors instead of using missing for gengetopt.
+
+2003-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Ignore errors instead of using missing for
+       gengetopt.  Bump version.
+
+2003-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Add platform.
+
+2003-03-12  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Spec update.
+
+2003-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Cvs2cl ignore contrib.
+
+2003-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Use cvs2cl's new --FSF.
+
+2003-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Text fix.
+
+2003-03-10  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Text fixes.  Remove ASCII incompatible
+       encodings.
+
+2003-03-09  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Use UTF-8 by default.  Text fixes.  Change
+       ascii and sjis charsets.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Don't reset data.  Use iconv charsets.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Cleanup.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix text.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix charset.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix text.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Make charset selection clearer.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix HTML, based on Martin Duerst's
+       suggestions.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Use valid HTML.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Add.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * example2.c, punycode.c, punycode.h: Sync with RFC.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * draft-zeilenga-ldapbis-strmatch-02.txt: Add.
+
+2003-03-08  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-idn-idna-14.txt, draft-ietf-idn-nameprep-11.txt,
+       draft-ietf-idn-punycode-03.txt, rfc3490.txt, rfc3491.txt,
+       rfc3492.txt: Replace drafts with RFCs.
+
+2003-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Mention more prereqs.
+
+2003-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Remove gtk-doc trigger for obsolete functions.
+
+2003-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Move appendix last.  Cleanup @copying.
+
+2003-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Dist FAQ and contrib/web/idn.php.
+
+2003-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * README: Add.  Move todo list to TODO.
+
+2003-03-07  Simon Josefsson <simon@josefsson.org>
+
+       * TODO: Add, taken from README.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: ANNOUNCE sync.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Cleanup.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * FAQ: Update questions and answers.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * FAQ: Moved faq from file README.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * README: Move faq to file FAQ.  Add donation info.  Update todo's.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Security fix.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add forgotten 0.1.12 items.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Typo.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Add debug.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-ips-iscsi-string-prep-03.txt,
+       draft-ietf-krb-wg-utf8-profile-00.txt: Remove.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.1.12.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Remove stringprep_*.h.  Document stringprep in idn.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Fix ace.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Add errors.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Support stringprep.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Ignore gengetopt errors.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-xmpp-nodeprep-00.txt,
+       draft-ietf-xmpp-resourceprep-00.txt: Remove.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * idn.c, idn.ggo.in: Add -s and -p for stringprep.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Mention stringprep API changes.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c, stringprep.c, stringprep.h.in, tst_stringprep.c: Add
+       stringprep_profile().
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Cosmetic fix.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, example.c, internal.h, profiles.c, reference/Makefile.am,
+       reference/libidn-docs.tmpl, stringprep.h.in, stringprep_generic.h,
+       stringprep_iscsi.h, stringprep_kerberos5.h, stringprep_nameprep.h,
+       stringprep_plain.h, stringprep_xmpp.h: Deprecate stringprep_*.h.
+
+2003-03-06  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-ips-iscsi-string-prep-04.txt,
+       draft-ietf-krb-wg-utf8-profile-01.txt: Add.
+
+2003-03-04  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Fixup.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix typo.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Reorder.  Add errors.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Add examples.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix ct.  Add example.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Add example.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Examples.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fix typos.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Move examples to bottom.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Add examples.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Bug reporting.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Fixes.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Charset fixes.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Mention idn.php.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/README: Add.
+
+2003-03-02  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/web/idn.php: Add.
+
+2003-03-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Check for gengetopt.
+
+2003-03-01  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Use GENGETOPT.
+
+2003-03-01  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add glibc 2.3.2.
+
+2003-03-01  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump version.
+
+2003-03-01  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README, libc/Versions, libc/getaddrinfo.c, libc/libc.patch: 
+       Update to libc 2.3.2.
+
+2003-02-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Copying conditions.
+
+2003-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Add SASLprep.
+
+2003-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.h.in: Add SASL profile.
+
+2003-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Test SASL profile.
+
+2003-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Don't byte compile elisp.  Cleanup EXTRA_DIST.
+
+2003-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * idn.ggo.in: Add copyright.
+
+2003-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-sasl-saslprep-00.txt: Add.
+
+2003-02-27  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Don't ack self.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Cleanup extra dist.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Make idn.c depend on idn_cmd.*.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Ignore getopt.h.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * idna.el, punycode.el: Doc fix.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Reorder acks.  Add function and variable index.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * fdl.texi, lgpl.texi: Fix TOC.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.1.11.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Distcheck fixes.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Document Emacs API.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.  Look for help2man.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Build idn.1 man page.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Document idn.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * idna.el: Mention todo.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Build idna.el.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * idna.el: Elisp interface for IDNA.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.el: Add keywords.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.el: Fix doc.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Add automake elisp check.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Add punycode.el.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.el: Elisp interface for punycode.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix gengetopt invocation.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * idn.c: Print help on usage error.  Minor cleanup.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * idn.ggo.in: Fix package/version name.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * idn.ggo.in: Shorten line <80ch.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * getopt.c, getopt.h, getopt1.c: Add.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Link with getopt if system doesn't have
+       getopt_long().  Build idn.ggo.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Build idn.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * idn.ggo.in: Add command line option specification for idn.c.
+
+2003-02-26  Simon Josefsson <simon@josefsson.org>
+
+       * idn.c: Add command line interface to library.
+
+2003-02-25  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-xmpp-nodeprep-01.txt,
+       draft-ietf-xmpp-resourceprep-01.txt: Add.
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: NFKC XMPP resourceprep.
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: NFKC XMPP nodeprep.
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.1.10.
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Distribute libidn-stringprep-iscsi.html.
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Doc fix.
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, idna.c, idna.h: Deprecate idna_*_to_ace() and
+       idna_*ace_to_*().  Add idna_to_ascii_from_*() and
+       idna_to_unicode_*_from_*().
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Make release project independent.
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE, Makefile.am, README, internal.h, libidn.texi,
+       profiles.c, reference/dummy.c, reference/libidn-docs.tmpl,
+       stringprep_iscsi.h, tst_stringprep.c: Add iSCSI profile.
+
+2003-02-21  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Distribute contrib/*.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/README: Describe contents of contrib/.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * contrib/idn-python/Makefile, contrib/idn-python/README,
+       contrib/idn-python/idn.c, contrib/idn-python/test.py: Add Stephane
+       Bortzmeyer's python interface.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Install punycode.h.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Install idna.h, tiny patch from Stephane Bortzmeyer.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.1.9.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * reference/libidn-docs.tmpl: Include stringprep_plain.sgml.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Add libidn-stringprep-plain.html.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * reference/.cvsignore: [no log message]
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Fix last commit.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Mention stringprep_plain.h.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * reference/dummy.c: Add stringprep_plain.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Don't case fold XMPP resources.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Really fix XMPP definition.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Add stringprep_plain.h.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump versions.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Sync ANNOUNCE.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Mention SASL "plain".
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Remove broken XMPP tests.  Add SASL test.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-sasl-anon-00.txt: Add.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * internal.h: Include stringprep_plain.h.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Add stringprep_plain for SASL ANONYMOUS plain profile.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Fix XMPP definition.
+
+2003-02-20  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep_plain.h: New file.
+
+2003-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add.
+
+2003-02-19  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Don't normalize or map ASCII space for XMPP nodeprep.
+       Tiny patch from Travis Shirk <TShirk@jabber.com>.
+
+2003-02-18  Simon Josefsson <simon@josefsson.org>
+
+       * README: Add.
+
+2003-02-15  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Make sure decoded punycode data is zero terminated.
+
+2003-02-15  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c: Fix memory leak.
+
+2003-02-15  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Fix memory leaks.  Waste less memory.
+
+2003-02-15  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Fix memory leak.
+
+2003-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Fix.
+
+2003-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * nfkc.c: Fix typo.
+
+2003-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Fix maplen calculation.
+
+2003-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Fix gcc warnings.
+
+2003-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c, stringprep.h.in: Change STRINGPREP_MAX_MAP_CHARS to
+       4 to waste less space.
+
+2003-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Version 0.1.8.
+
+2003-02-14  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: GTK-DOC fix.
+
+2003-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Update port status.
+
+2003-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Use = instead of == as test operator.
+
+2003-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * example2.c, stringprep.c: Use size_t for string lengths.
+
+2003-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * example2.c: Revert missing-noreturn fix.
+
+2003-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Use size_t for string lengths.
+
+2003-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac: Condition GTK-DOC and disable by
+       default.
+
+2003-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * reference/.cvsignore: [no log message]
+
+2003-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * reference/tmpl/.cvsignore: Remove.
+
+2003-02-13  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, reference/Makefile.am, reference/libidn-docs.sgml,
+       reference/libidn-docs.tmpl, reference/libidn.types,
+       reference/tmpl/idna.sgml, reference/tmpl/punycode.sgml,
+       reference/tmpl/stringprep.sgml,
+       reference/tmpl/stringprep_generic.sgml,
+       reference/tmpl/stringprep_kerberos5.sgml,
+       reference/tmpl/stringprep_nameprep.sgml,
+       reference/tmpl/stringprep_xmpp.sgml: Cleanup gtk-doc build.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Zero terminate XMPP array.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Bump version (both shared library and package).
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Add.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * example.c, example2.c, gen-unicode-tables.pl, idna.c, internal.h,
+       nfkc.c, punycode.c, stringprep.c, stringprep.h.in, toutf8.c,
+       tst_idna.c, tst_nfkc.c, tst_punycode.c, tst_stringprep.c: Fix CFLAGS
+       warnings.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * example3.c, example4.c: Fix CFLAGS warnings.  Use official IDNA
+       ACE prefix.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Cleanups for including as appendix in draft.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * draft-josefsson-idn-test-vectors.xml: Add preliminary version.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Don't optimize prohibited output tables (better trace
+       logs).
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: More self tests.  More debug info.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: More debug output.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * : Official results.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Improve release target.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Add release target.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Version 0.1.7.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c: Fix IDNA ACE prefix.
+
+2003-02-12  Simon Josefsson <simon@josefsson.org>
+
+       * idna.h: Use official IDNA prefix.
+
+2003-02-11  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-02-11  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Add upload target.
+
+2003-02-11  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c: Use new IDNA ACE prefix.
+
+2003-02-11  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: Update.
+
+2003-02-11  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Version 0.1.6.
+
+2003-02-11  Simon Josefsson <simon@josefsson.org>
+
+       * : Add my computation.
+
+2003-02-11  Simon Josefsson <simon@josefsson.org>
+
+       * idna.h: Chose IDNA prefix based on my computation.
+
+2003-02-09  Simon Josefsson <simon@josefsson.org>
+
+       * internal.h: Fix header.
+
+2003-02-09  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.h.in: Fix.
+
+2003-02-09  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-ips-iscsi-string-prep-03.txt: Add.
+
+2003-02-09  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Indent.
+
+2003-02-09  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Don't run configure.
+
+2003-02-09  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix cvs2cl.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * README: Fix.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * reference/libidn-docs.sgml: Reorder.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * reference/libidn-docs.sgml: Reorder.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Add build instructions.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Fix.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * reference/tmpl/stringprep_xmpp.sgml: Generated.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi, reference/dummy.c: Add XMPP.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * reference/libidn-docs.sgml: Include xmpp.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, reference/tmpl/stringprep_xmpp.sgml: Add.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * reference/libidn-docs.sgml: Update (from ANNOUNCE).
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c: Use table C.8 for bidi prohibited instead of C.9.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, draft-ietf-xmpp-nodeprep-00.txt,
+       draft-ietf-xmpp-resourceprep-00.txt, internal.h, profiles.c,
+       stringprep_xmpp.h, tst_stringprep.c: Support XMPP.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * draft-ietf-krb-wg-utf8-profile-00.txt: Add.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Fix.
+
+2003-02-07  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep_generic.h, stringprep_kerberos5.h,
+       stringprep_nameprep.h: Name fix.
+
+2003-02-05  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Fix.
+
+2003-01-31  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c, tst_punycode.c: Indent.
+
+2003-01-31  Simon Josefsson <simon@josefsson.org>
+
+       * tst_punycode.c: Indent.
+
+2003-01-31  Simon Josefsson <simon@josefsson.org>
+
+       * example3.c, example4.c, idna.c, stringprep.c, toutf8.c,
+       tst_idna.c, tst_punycode.c: Indent.
+
+2003-01-30  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Fix.
+
+2003-01-30  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Typo.
+
+2003-01-29  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Mention libc.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Typo.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Really ignore netdb.h.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Release 0.1.5.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Dist libc/*.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Ignore netdb.h.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Fix.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Fix.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * libc/README: Add.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, libc/.cvsignore, libc/Makefile, libc/README, libc/Versions,
+       libc/configure, libc/example.c, libc/getaddrinfo.c,
+       libc/libc.patch, libc/netdb.h: Libidn as libc add-on.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c, idna.h: Return new error code IDNA_ICONV_ERROR instead of
+       crashing when character set conversion fails.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c: Fix prototype.  Move unused parameter unless
+       LOCALE_WORKS.
+
+2003-01-28  Simon Josefsson <simon@josefsson.org>
+
+       * internal.h: Work from within GNU Libc.
+
+2003-01-27  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add ack.
+
+2003-01-27  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Point to THANKS for more acks.
+
+2003-01-27  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Fix possible memory corruption.  Noncopyrightable patch
+       from Waldo Bastian <bastian@kde.org>.
+
+2003-01-27  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-01-20  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Change bug email address.
+
+2003-01-18  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Generate ChangeLog with --no-times.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog, NEWS, configure.ac: Release 0.1.4.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c: Fix functions on bad platforms.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Add comment.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c: Test step 5 in ToASCII.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c, idna.h: Fix ToASCII().
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Fix copyright.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Fix dir entry.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Use automake's ps and pdf texinfo targets.  Remove
+       txt texinfo target.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: EXTRA_DIST lgplg.texi.  Disable GTK-DOC for distcheck
+       builds (doesn't work).
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: Add uninstall target.  Fix distcheck
+       builds.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * lgpl.texi, libidn.texi: Add acknowledgements, lgpl.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, example.c, example2.c, idna.c, idna.h,
+       libidn.texi, nfkc.c, profiles.c, punycode.c, punycode.h,
+       stringprep.c, stringprep.h.in, toutf8.c, tst_idna.c, tst_nfkc.c,
+       tst_punycode.c, tst_stringprep.c, version.c: Comment cleanup.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, reference/dummy.c: Improve texinfo manual.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Add doc.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.texi: Add.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * README: Remove API documentation.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Release 0.1.3.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, Makefile.am, fdl.texi, gdoc, libidn.texi: Add texinfo
+       manual.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * example2.c: Fix for texinfiscation.
+
+2003-01-15  Simon Josefsson <simon@josefsson.org>
+
+       * nfkc.c: Doc fixes.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Add.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Release 0.1.2.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * example4.c, reference/tmpl/idna.sgml: Fix.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, Makefile.am, example3.c, example4.c, idna.c, idna.h,
+       stringprep.h.in, toutf8.c: IDNA high-level API.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * reference/tmpl/idna.sgml, reference/tmpl/stringprep.sgml: Add.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Release 0.1.1.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am: dist dummy.c.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Run configure.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * reference/tmpl/.cvsignore, reference/tmpl/idna.sgml,
+       reference/tmpl/punycode.sgml, reference/tmpl/stringprep.sgml,
+       reference/tmpl/stringprep_generic.sgml,
+       reference/tmpl/stringprep_kerberos5.sgml,
+       reference/tmpl/stringprep_nameprep.sgml: Fix.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am, reference/tmpl/idna.sgml,
+       reference/tmpl/punycode.sgml, reference/tmpl/stringprep.sgml,
+       reference/tmpl/stringprep_generic.sgml,
+       reference/tmpl/stringprep_kerberos5.sgml,
+       reference/tmpl/stringprep_nameprep.sgml: Add templates.  Don't parse
+       internal.h
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * reference/libidn-docs.sgml: Add ANNOUNCE text.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * reference/dummy.c: Add.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c, version.c: Doc fix.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c, stringprep.c: Doc fix.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * nfkc.c, stringprep.c, version.c: Add GTK-DOC documentation.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * reference/Makefile.am, reference/dummy.c: Dummy GTK-DOC C file
+       with documentation for #define macros.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.h.in: GTK-DOC fixes.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c: Add GTK-DOC documentation.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * reference/.cvsignore: [no log message]
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * punycode.c: Add GTK-DOC documentation.
+
+2003-01-08  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, reference/Makefile.am,
+       reference/libidn-docs.sgml, reference/libidn.types: Add API
+       Reference Manual.
+
+2003-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2003-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Release 0.1.0.
+
+2003-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Fix ChangeLog in distcheck.
+
+2003-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * README, README-alpha: Fix.
+
+2003-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, idna.h: Add.
+
+2003-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * tst_idna.c: Check idna_to_unicode().
+
+2003-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * idna.c: Fix.
+
+2003-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * tst_punycode.c: Check decoding.
+
+2003-01-05  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Add.
+
+2003-01-04  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Fix.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Rename.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Fix.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Build IDNA.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Rename.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE, NEWS: Fix.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, README, idna.c, idna.h, internal.h, tst_idna.c: Add
+       unfinished old IDNA stuff.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.pc.in: Rename and fix.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * README: Rename.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS, draft-ietf-idn-idna-14.txt,
+       draft-ietf-idn-nameprep-11.txt: Add.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, THANKS, configure.ac: Rename.
+
+2003-01-03  Simon Josefsson <simon@josefsson.org>
+
+       * libidn.pc.in, libstringprep.pc.in: Rename libstringprep.pc.in to
+       libidn.pc.in.
+
+2003-01-02  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, draft-hoffman-stringprep-07.txt,
+       gen-stringprep-tables.pl, rfc3454.txt: Use rfc3454.txt instead of
+       draft-hoffman-stringprep-07.txt.
+
+2002-12-26  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Fix.
+
+2002-12-26  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Cleanup.
+
+2002-12-26  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Initiate name change for savannah project registration.
+
+2002-12-26  Simon Josefsson <simon@josefsson.org>
+
+       * tst_punycode.c: Fixes.
+
+2002-12-26  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Fix.
+
+2002-12-26  Simon Josefsson <simon@josefsson.org>
+
+       * README-alpha: Add.
+
+2002-12-26  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Fix.
+
+2002-12-26  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Fix.
+
+2002-12-19  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, Makefile.am, NEWS, configure.ac,
+       draft-ietf-idn-punycode-03.txt, example.c, example2.c, internal.h,
+       nfkc.c, punycode.c, punycode.h, stringprep.c, stringprep.h.in,
+       tst_punycode.c: Add punycode.  Use "unsigned long" for Unicode code
+       points.  Copying condition fixes.  Fixes.
+
+2002-12-14  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Make sure ChangeLog is regenerated.
+
+2002-12-13  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-12-13  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-12-13  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Release 0.0.8.
+
+2002-12-13  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS, Makefile.am, NEWS, README, THANKS, configure.ac,
+       internal.h, libstringprep.pc.in, strdup.c, stringprep.c,
+       stringprep_generic.h, stringprep_kerberos5.h,
+       stringprep_nameprep.h, toutf8.c, tst_nfkc.c, tst_stringprep.c: 
+       Portability fixes.
+
+2002-12-13  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Link with libiconv.
+
+2002-12-10  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Don't use uint32_t in one odd place.
+
+2002-12-10  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: [no log message]
+
+2002-12-10  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Flawfinder.
+
+2002-12-10  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c: Fix.
+
+2002-12-10  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.h.in: Remove comma on last enum entry.
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * tst_nfkc.c: Fix memory leak.
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Suggest dmalloc.
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac, internal.h, stringprep.c: Use dmalloc.  Fix memory
+       leak when bidi fails.
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Check version.
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Release 0.0.7 (version 0.0.6 was abandoned).
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Release 0.0.6.
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Check all upper string case mapping.
+
+2002-12-09  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Apply table until it can't be applied any longer.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Add nameprep vector.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * example.c: Cosmetic fix.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Fix printf() format warnings.  Fix bidi table for
+       loop (affected only nameprep).
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS: Release 0.0.5.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac: Add memset.c, an AC_LIBOBJ.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * memset.c: An AC_LIBOBJ, from gnulib.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c, stringprep.c, stringprep.h.in: Indent.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * README: Use new types.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c, stringprep.c, stringprep.h.in, tst_stringprep.c: 
+       Fixes.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * profiles.c, stringprep.c, tst_stringprep.c: Fix bidi code and add
+       self tests.
+
+2002-12-07  Simon Josefsson <simon@josefsson.org>
+
+       * gen-stringprep-tables.pl, profiles.c, stringprep.c,
+       stringprep.h.in, stringprep_generic.h, stringprep_kerberos5.h,
+       stringprep_nameprep.h, tst_stringprep.c: Clean up internal profiling
+       definitions.
+
+2002-12-06  Simon Josefsson <simon@josefsson.org>
+
+       * example.c: Fix typo.
+
+2002-12-06  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-12-06  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: Release 0.0.4.
+
+2002-12-06  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, README, profiles.c, stringprep.c, stringprep.h.in,
+       stringprep_nameprep.h, tst_stringprep.c: Add unassigned code point
+       handling, and self test.
+
+2002-12-06  Simon Josefsson <simon@josefsson.org>
+
+       * tst_stringprep.c: Don't modify constant string during debug.
+
+2002-12-05  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-12-05  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Don't use *_fast().
+
+2002-12-05  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Don't use $< (GNU specific).
+
+2002-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: Portability fixes.
+
+2002-12-03  Simon Josefsson <simon@josefsson.org>
+
+       * internal.h, nfkc.c, stringprep.c, toutf8.c, tst_nfkc.c,
+       tst_stringprep.c, version.c: Simplify the #include-mess. (NULL
+       wasn't found on alpha-unknown-netbsd1.6)
+
+2002-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Add --enable-maintainer-mode.
+
+2002-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2002-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog, config.rpath: [no log message]
+
+2002-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Release 0.0.3.
+
+2002-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, configure.ac, strdup.c: Add replacement strdup.c for
+       system's without it.  Increment shared library version.  Trim
+       autoconf tests.
+
+2002-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * README: Added copying conditions.  Added more API documentation.
+
+2002-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * THANKS: Add copying conditions.
+
+2002-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * AUTHORS: Add copying conditions and public key.
+
+2002-11-30  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am, example.c, nfkc.c, stringprep.h.in, tst_stringprep.c: 
+       Export stringprep_utf8_to_unichar.  Rename stringprep_utf8_to_ucs4_fast to stringprep_utf8_to_ucs4 to
+       clean up API (old entry maintained for binary backwards
+       compatibility though).  Indent.  Add sign make target.
+
+2002-11-29  Simon Josefsson <simon@josefsson.org>
+
+       * nfkc.c, profiles.c, toutf8.c: indent
+
+2002-11-29  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: improve debugging output
+
+2002-11-29  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: pass CFLAGS directly
+
+2002-11-14  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore: [no log message]
+
+2002-11-14  Simon Josefsson <simon@josefsson.org>
+
+       * configure.ac: AC_PROG_RANLIB obsoleted by libtool.
+
+2002-11-14  Simon Josefsson <simon@josefsson.org>
+
+       * autogen.sh: Use autoreconf.
+
+2002-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * example.c: improve comment
+
+2002-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * Makefile.am: add dependency
+
+2002-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * NEWS, configure.ac: Release 0.0.2.
+
+2002-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * toutf8.c: Remove unused variable.
+
+2002-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.c: Fix memory leak.
+
+2002-11-07  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, Makefile.am, tst_nfkc.c, tst_stringprep.c: Add NFKC
+       self test.
+
+2002-11-06  Simon Josefsson <simon@josefsson.org>
+
+       * stringprep.h.in, toutf8.c: Cosmetic fixes.
+
+2002-11-06  Simon Josefsson <simon@josefsson.org>
+
+       * ANNOUNCE: Add.
+
+2002-11-06  Simon Josefsson <simon@josefsson.org>
+
+       * README: Explain why GLIB is not used.
+
+2002-11-06  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-11-06  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog, Makefile.am, README: Build fixes.
+
+2002-11-06  Simon Josefsson <simon@josefsson.org>
+
+       * .cvsignore, Makefile.am, NEWS, README, THANKS, autogen.sh,
+       configure.ac, example.c, iconv.m4, libstringprep.pc.in, profiles.c,
+       stringprep.h.in, stringprep_generic.h, stringprep_kerberos5.h,
+       stringprep_nameprep.h, toutf8.c: Add example.  Add toutf8.c.  Check
+       if OS has locale functions.  Add -R to pkg-config info file.  Moved
+       profile variables to profile.c from header files.
+
+2002-11-06  Simon Josefsson <simon@josefsson.org>
+
+       * ChangeLog: [no log message]
+
+2002-11-05  Simon Josefsson <simon@josefsson.org>
+
+       * Initial version.
+
+       -----
+
+       Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+
+       Copying and distribution of this file, with or without
+       modification, are permitted provided the copyright notice
+       and this notice are preserved.
diff --git a/FAQ b/FAQ
new file mode 100644 (file)
index 0000000..e48d4e2
--- /dev/null
+++ b/FAQ
@@ -0,0 +1,46 @@
+Libidn FAQ -- Anticipated Frequently Asked Questions.
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+See the end for copying conditions.
+
+Q#1: Why doesn't Libidn use a separate library for the Unicode
+     operations?
+
+A#1: Separate libraries (Glib, QT, libiconv) seldom mark the
+     Unicode tables with the corresponding Unicode version they
+     implement, nor do they provide a interface where a specific
+     version can be requested.  This violates the stringprep
+     specification which requires that a specific version must be
+     used.  Also, some of these third party libraries depend on
+     non-portable behavior (e.g. threads).
+
+Q#2: Why do Libidn include several stringprep profiles?  They waste
+     space!
+
+A#2: The stringprep profiles included are usually derived from the
+     generic stringprep tables, and doesn't waste more than say a few
+     hundred bytes (see profiles.c).  The Unicode normalization tables
+     and the generic stringprep tables are roughly equivalent in size,
+     although the latter tables can surely be compressed much further.
+     They occupy about 100 kilobytes on typical platforms.  However,
+     if in the future several large Stringprep profiles are added,
+     configure options will be added to help reduce size.
+
+Q#3: I thought GNU was encouraging libraries to be licensed under the GPL?
+
+A#3: The reasoning for this was for libraries that provide unique
+     functionality to encourage more free programs.  Since there are
+     several IDN libraries out there, using the GPL for Libidn would
+     only encourage people not to use Libidn which would not help the
+     spread of free software.
+
+Q#4: How do I add a new stringprep profile?
+
+A#4: Add the profile definition to profiles.c, export the symbol and
+     optionally add a CPP macro in stringprep.h (and document it in
+     stringprep.c).  If you want to add self tests, do it through
+     tst_stringprep.c.  Mention it in NEWS.
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/GNUmakefile b/GNUmakefile
new file mode 100644 (file)
index 0000000..33eb3aa
--- /dev/null
@@ -0,0 +1,127 @@
+# Having a separate GNUmakefile lets me `include' the dynamically
+# generated rules created via cfg.mk (package-local configuration)
+# as well as maint.mk (generic maintainer rules).
+# This makefile is used only if you run GNU Make.
+# It is necessary if you want to build targets usually of interest
+# only to the maintainer.
+
+# Copyright (C) 2001, 2003, 2006-2009 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Systems where /bin/sh is not the default shell need this.  The $(shell)
+# command below won't work with e.g. stock DOS/Windows shells.
+ifeq ($(wildcard /bin/s[h]),/bin/sh)
+SHELL = /bin/sh
+else
+# will be used only with the next shell-test line, then overwritten
+# by a configured-in value
+SHELL = sh
+endif
+
+# If the user runs GNU make but has not yet run ./configure,
+# give them a diagnostic.
+_have-Makefile := $(shell test -f Makefile && echo yes)
+ifeq ($(_have-Makefile),yes)
+
+# Make tar archive easier to reproduce.
+export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
+
+# Allow the user to add to this in the Makefile.
+ALL_RECURSIVE_TARGETS =
+
+include Makefile
+
+# Some projects override e.g., _autoreconf here.
+-include $(srcdir)/cfg.mk
+include $(srcdir)/maint.mk
+
+# Allow cfg.mk to override these.
+_build-aux ?= build-aux
+_autoreconf ?= autoreconf
+
+# Ensure that $(VERSION) is up to date for dist-related targets, but not
+# for others: rerunning autoreconf and recompiling everything isn't cheap.
+_have-git-version-gen := \
+  $(shell test -f $(srcdir)/$(_build-aux)/git-version-gen && echo yes)
+ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL))
+  _is-dist-target ?= $(filter-out %clean, \
+    $(filter maintainer-% dist% alpha beta major,$(MAKECMDGOALS)))
+  _is-install-target ?= $(filter-out %check, $(filter install%,$(MAKECMDGOALS)))
+  ifneq (,$(_is-dist-target)$(_is-install-target))
+    _curr-ver := $(shell cd $(srcdir) \
+                   && $(_build-aux)/git-version-gen .tarball-version)
+    ifneq ($(_curr-ver),$(VERSION))
+      ifeq ($(_curr-ver),UNKNOWN)
+        $(info WARNING: unable to verify if $(VERSION) is the correct version)
+      else
+        ifneq (,$(_is-install-target))
+          # GNU Coding Standards state that 'make install' should not cause
+          # recompilation after 'make all'.  But as long as changing the version
+          # string alters config.h, the cost of having 'make all' always have an
+          # up-to-date version is prohibitive.  So, as a compromise, we merely
+          # warn when installing a version string that is out of date; the user
+          # should run 'autoreconf' (or something like 'make distcheck') to
+          # fix the version, 'make all' to propagate it, then 'make install'.
+          $(info WARNING: version string $(VERSION) is out of date;)
+          $(info run '$(MAKE) _version' to fix it)
+        else
+          $(info INFO: running autoreconf for new version string: $(_curr-ver))
+          _dummy := $(shell $(MAKE) $(AM_MAKEFLAGS) _version)
+        endif
+      endif
+    endif
+  endif
+endif
+
+.PHONY: _version
+_version:
+       cd $(srcdir) && rm -rf autom4te.cache .version && $(_autoreconf)
+
+else
+
+.DEFAULT_GOAL := abort-due-to-no-makefile
+srcdir = .
+
+# The package can override .DEFAULT_GOAL to run actions like autoreconf.
+-include ./cfg.mk
+include ./maint.mk
+
+ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile)
+$(MAKECMDGOALS): abort-due-to-no-makefile
+endif
+
+abort-due-to-no-makefile:
+       @echo There seems to be no Makefile in this directory.   1>&2
+       @echo "You must run ./configure before running \`make'." 1>&2
+       @exit 1
+
+endif
+
+# Tell version 3.79 and up of GNU make to not build goals in this
+# directory in parallel, in case someone tries to build multiple
+# targets, and one of them can cause a recursive target to be invoked.
+
+# Only set this if Automake doesn't provide it.
+AM_RECURSIVE_TARGETS ?= $(RECURSIVE_TARGETS:-recursive=) \
+  $(RECURSIVE_CLEAN_TARGETS:-recursive=) \
+  dist distcheck tags ctags
+
+ALL_RECURSIVE_TARGETS += $(AM_RECURSIVE_TARGETS)
+
+ifneq ($(word 2, $(MAKECMDGOALS)), )
+ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), )
+.NOTPARALLEL:
+endif
+endif
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..2550dab
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,302 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  6. Often, you can also type `make uninstall' to remove the installed
+     files again.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *Note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..c7f7cbe
--- /dev/null
@@ -0,0 +1,44 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+SUBDIRS = gl lib/gl lib po src doc gltests lib/gltests tests examples  \
+       java csharp
+
+EXTRA_DIST = cfg.mk maint.mk .clcopying
+
+ACLOCAL_AMFLAGS = -I m4 -I gl/m4 -I lib/gl/m4
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+
+EXTRA_DIST += FAQ libc/README libc/getaddrinfo-idn.txt libc/example.c  \
+       contrib/README contrib/idn-python/README                        \
+       contrib/idn-python/Makefile contrib/idn-python/idn.c            \
+       contrib/idn-python/test.py contrib/web/idn.php                  \
+       contrib/java/README contrib/java/autogen.sh                     \
+       contrib/java/configure.ac contrib/java/Makefile.am              \
+       contrib/java/ExampleIDNA.java contrib/java/IDNA.java            \
+       contrib/java/IDNA.c contrib/doxygen/Doxyfile.in                 \
+       contrib/doxygen/Doxyfile.orig contrib/doxygen/gdoc2doxygen
+
+# Visual Studio project files.
+EXTRA_DIST += win32/libidn.sln win32/libidn.vcproj                     \
+       win32/include/unistd.h win32/include/idn-int.h                  \
+       win32/include/stdbool.h win32/include/ac-stdint.h               \
+       win32/include/config.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libidn.pc
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..e957bd0
--- /dev/null
@@ -0,0 +1,1112 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+       $(srcdir)/libidn.pc.in \
+       $(top_srcdir)/build-aux/csharpcomp.sh.in \
+       $(top_srcdir)/configure \
+       $(top_srcdir)/contrib/doxygen/Doxyfile.in ABOUT-NLS AUTHORS \
+       COPYING COPYING.LIB ChangeLog INSTALL NEWS THANKS TODO \
+       build-aux/config.guess build-aux/config.rpath \
+       build-aux/config.sub build-aux/depcomp build-aux/install-sh \
+       build-aux/ltmain.sh build-aux/mdate-sh build-aux/missing \
+       build-aux/texinfo.tex
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = csharpcomp.sh libidn.pc contrib/doxygen/Doxyfile
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
+DATA = $(pkgconfig_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d "$(distdir)" \
+    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr "$(distdir)"; }; }
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = gl lib/gl lib po src doc gltests lib/gltests tests examples  \
+       java csharp
+
+
+# Visual Studio project files.
+EXTRA_DIST = cfg.mk maint.mk .clcopying FAQ libc/README \
+       libc/getaddrinfo-idn.txt libc/example.c contrib/README \
+       contrib/idn-python/README contrib/idn-python/Makefile \
+       contrib/idn-python/idn.c contrib/idn-python/test.py \
+       contrib/web/idn.php contrib/java/README \
+       contrib/java/autogen.sh contrib/java/configure.ac \
+       contrib/java/Makefile.am contrib/java/ExampleIDNA.java \
+       contrib/java/IDNA.java contrib/java/IDNA.c \
+       contrib/doxygen/Doxyfile.in contrib/doxygen/Doxyfile.orig \
+       contrib/doxygen/gdoc2doxygen win32/libidn.sln \
+       win32/libidn.vcproj win32/include/unistd.h \
+       win32/include/idn-int.h win32/include/stdbool.h \
+       win32/include/ac-stdint.h win32/include/config.h
+ACLOCAL_AMFLAGS = -I m4 -I gl/m4 -I lib/gl/m4
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libidn.pc
+all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+       @:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+       @if test ! -f $@; then \
+         rm -f stamp-h1; \
+         $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+       else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+       @rm -f stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+       rm -f stamp-h1
+       touch $@
+
+distclean-hdr:
+       -rm -f config.h stamp-h1
+csharpcomp.sh: $(top_builddir)/config.status $(top_srcdir)/build-aux/csharpcomp.sh.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+libidn.pc: $(top_builddir)/config.status $(srcdir)/libidn.pc.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+contrib/doxygen/Doxyfile: $(top_builddir)/config.status $(top_srcdir)/contrib/doxygen/Doxyfile.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool config.lt
+install-pkgconfigDATA: $(pkgconfig_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
+       @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+       done
+
+uninstall-pkgconfigDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       $(am__remove_distdir)
+
+dist-lzma: distdir
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__remove_distdir)
+
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+       $(am__remove_distdir)
+
+dist-tarZ: distdir
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__remove_distdir)
+
+dist-shar: distdir
+       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+       $(am__remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__remove_distdir)
+
+dist dist-all: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lzma*) \
+         unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       esac
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
+       chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @$(am__cd) '$(distuninstallcheck_dir)' \
+       && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+       distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgconfigDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-pkgconfigDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+       ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am am--refresh check check-am clean clean-generic \
+       clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
+       dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+       distcheck distclean distclean-generic distclean-hdr \
+       distclean-libtool distclean-tags distcleancheck distdir \
+       distuninstallcheck dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-pkgconfigDATA install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am uninstall-pkgconfigDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..6a59799
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,1275 @@
+Libidn NEWS -- History of user-visible changes.                 -*- outline -*-
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+See the end for copying conditions.
+
+* Version 1.15 (released 2009-06-08)
+
+** libidn: Use c_strcasecmp instead of strcasecmp.
+For portability to NetWare CLIB.  The specification requires a ASCII
+comparison, so it is also more appropriate to use c_strcasecmp.
+Reported by Guenter Knauf <gk@gknw.de>.
+
+** java: Fix some Java compiler warnings.
+
+** doc: Improved sections for the info manual.
+We now follow the advice given by the texinfo manual on which
+directory categories to use.  In particular, libidn moved from the
+'GNU Libraries' section to the 'Software libraries' and 'Invoking idn'
+moved from 'GNU utilities' to 'Localization'.
+
+** New configure parameters to set packaging specific information.
+The parameters are --with-packager, --with-packager-version, and
+--with-packager-bug-reports.  See
+<http://article.gmane.org/gmane.comp.lib.gnulib.bugs/17791> for more
+details.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.14 (released 2009-04-03)
+
+** libidn: Install a libidn-*.def file when building under MinGW.
+The file is useful if you develop programs in Visual Studio that links
+to libidn.
+
+** tests/tst_toutf8: Don't crash if stringprep_utf8_to_locale returns NULL.
+Reported by Dagobert Michelsen <dam@opencsw.org> in
+<http://thread.gmane.org/gmane.comp.gnu.libidn.general/192>.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.13 (released 2009-03-06)
+
+** libidn: Use a LD version script on platforms where it is supported.
+Currently only GNU LD and the Solaris linker supports it.  This helps
+Debian package tools to produce better dependencies.  Before we used
+Libtool -export-symbols-regex that created an anonymous version tag.
+Libidn uses -export-symbols-regex if the system does not support LD
+version scripts, but that only affect symbol visibility.
+
+** libidn: Compiled with -fvisibility=hidden by default if supported.
+Currently only GCC supports it for ELF targets.  This hides internal
+symbols and has other advantages, see
+<http://gcc.gnu.org/wiki/Visibility>.
+
+** libidn: Compiled with warning flags only when GCC is used.
+This avoids the problem that some flags confuse non-GCC compilers, for
+example -fdiagnostics-show-option.  Reported by
+jens.rehsack@bayerbbs.com.
+
+** doc: The idn_free function is now documented.
+Suggested by "Sisyphus" <sisyphus1@optusnet.com.au>.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.12 (released 2009-01-23)
+
+** idn: New parameter --no-tld to deprecate the old parameter --tld.
+The new parameter --no-tld disable TLD checking of the input string.
+The --tld parameter was broken; it behaved opposite to its documented
+behaviour.  To avoid confusion over what --tld means, we decided to
+deprecate it.  Now --tld is not printed in the idn --help output, but
+will continue to work as before.
+
+** doc: Modernize doxygen configuration.
+
+** doc: Change license on the manual to GFDLv1.3+.
+
+** doc: Improve JavaDoc output.
+
+** Update gnulib files and translations.
+
+** Build with more warnings.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.11 (released 2008-10-28)
+
+** libidn: New WARN_CFLAGS configure variable.
+It is used internally to add -Werror and other warnings flags, to
+catch coding mistakes before releases.
+
+** Win32: Perl is no longer required to build Libidn in Visual Studio.
+
+** Win32: Functions in idna.h are also exported.
+Reported by Adam Strzelecki <adam.strzelecki@java.pl>.
+
+** doc: Included cyclomatic code complexity charts of the library code.
+See doc/cyclo/.
+
+** tests: Add more self-tests to get more self-test code coverage.
+
+** tests: New 'make coverage' command to generate code coverage reports.
+The output is created in doc/coverage/.  Requires the LCOV tools.  See
+http://www.gnu.org/software/libidn/coverage/ for a pre-generated copy.
+
+** Clarify copyright and license for gdoc, man pages, and C# port.
+
+** Update gnulib files and translations.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.10 (released 2008-08-27)
+
+** idn: accept -n as short form for --nfkc.
+Before '-k' was used as the short form, but all documentation has said
+'-n'.  We now accept both short forms, and -n remains the documented
+short form.  Reported by John McGowan <jmcgowan@inch.com> in
+<http://lists.gnu.org/archive/html/help-libidn/2008-08/msg00000.html>.
+
+** Fix compiler warnings.
+
+** Update gnulib files.
+
+** Update translations.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.9 (released 2008-07-01)
+
+** idn: fix error message when NFKC fails, and some other translation fixes.
+Reported by Benno Schulenberg <coordinator@translationproject.org>.
+
+** C# Libidn.dll: Work around bug that cause a failure during C# compilation.
+See <https://bugzilla.novell.com/show_bug.cgi?id=372483>.
+
+** Remove more non-free text from doc/specifications/rfc3454.txt.
+The remaining data tables are not copyrightable.
+
+** Update gnulib files, and include gnulib self-tests.
+
+** Update translations.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.8 (released 2008-04-23)
+
+** Translations files not stored directly in git to avoid merge conflicts.
+This allows us to avoid use of --no-location which makes the
+translation teams happier.
+
+** Update gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.7 (released 2008-04-10)
+
+** idn: new parameter --nfkc to process string with Unicode v3.2 NFKC.
+
+** Minor build fix for native Win32 builds.
+
+** Update gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.6 (released 2008-03-19)
+
+** Add native Windows Visual Studio project files.
+Contributed by Adam Strzelecki <ono@java.pl>.
+
+** Remove non-free portions of RFC 3454 in doc/specifications/rfc3454.txt.
+
+** Update gnulib files.
+
+** Doc fixes in IDNA to clarify that some functions operate on
+** just one domain labels and some operate on domain name (which
+** can contain several domain labels).
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.5 (released 2008-02-19)
+
+** Don't include wchar.h in idn-int.h.
+Fixes problems on uClibc systems which lack a wchar.h.  Reported by
+Mike Frysinger <vapier@gentoo.org>, see
+<http://thread.gmane.org/gmane.comp.gnu.libidn.general/118>.
+
+** Added appendix 'On Label Separators' to the manual.
+Thanks to Erik van der Poel <erikv@google.com> for bringing the issue
+to our attention and for discussing the matter.  See
+<http://thread.gmane.org/gmane.comp.gnu.libidn.general/96>.
+
+** Improved rendering of non-ASCII in the info manual.
+Done by adding a @documentencoding UTF-8.  This affect how the
+examples are encoded, the files examples/*.c are now encoded using
+UTF-8 instead of a mix of ISO-8859-1 and ISO-8859-15.
+
+** Fix non-portable use of brace expansion in makefiles.
+
+** Update translations.
+
+** Update gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.4 (released 2008-01-09)
+
+** Fixes to make the C# port compile under Mono.
+
+** Update gnulib files.
+
+** Improve idn --version and --help output to conform to GNU standards.
+This also enables translations of --help output.
+
+** Update translations.
+Added Finish translation, thanks to Jorma Karvonen.  Updated Dutch and
+Vietnamese.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.3 (released 2007-12-11)
+
+** Some hints on Windows installation in the manual.
+
+** Update translations.
+Added Czech translation, thanks to Petr Pisar.
+
+** Use gettext 0.17.
+
+** Update gnulib files.
+Top-level gnulib files are now distributed under GPLv3+.  (The gnulib
+files used by the core library are still under LGPLv2.1+.)
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.2 (released 2007-10-01)
+
+** Development git tree moved to savannah.
+See <https://savannah.gnu.org/projects/libidn/>.
+
+** Update gnulib files.
+Including mono detection fixes.
+
+** Update translations.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.1 (released 2007-09-01)
+
+** Fix compilation error in idn-int.h.
+The error would typically be 'error: no include path in which to
+search for stdint.h'.  Reported by Remko van der Vossen
+<wich@stack.nl>, see
+<http://thread.gmane.org/gmane.comp.gnu.libidn.general/65> and
+<http://bugs.sourcemage.org/show_bug.cgi?id=13857>.
+
+** Declare external variables with __declspec(import) for Windows.
+Apparently this is required for variables in DLL's on Windows.  This
+is enabled if __DECLSPEC_SUPPORTED is defined (MinGW), or if _MSC_VER
+and_DLL is defined (MSVC).
+
+** Update gnulib files.
+
+** Update translations.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 1.0 (released 2007-07-31)
+
+** Command-line tools, examples, etc are now licensed under GPL version 3.
+The library is still licensed under LGPL v2.1 for compatibility
+reasons (it is included in glibc).
+
+** Updated documentation as per license change.
+
+** Update gnulib files.
+
+** Update translations.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.14 (released 2007-05-31)
+
+** Libidn is now developed using Git instead of CVS.
+A public git mirror is available from
+<http://repo.or.cz/w/libidn.git>.  If you have pulled from this
+repository before this release, you need to erase your clone because
+it has been re-generated from scratch.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.13 (released 2007-05-31)
+
+** Documentation fixes.
+Clarify that the C# and Java libraries are licensed under the LGPL.
+Earlier, some places incorrectly said that these were licensed under
+the GPL.  If you encounter other places that still suggest that GPL
+applies to the C# and Java library, please let me know.
+
+** Updated Polish and Vietnamese translations.
+Thanks to Jakub Bogusz <qboosh@pld-linux.org> and Clytie Siddall
+<clytie@riverland.net.au>.
+
+** Install images for the manual in $infodir.
+This fixes the broken image in the info manual.  Image files will be
+called libidn-*.png to avoid namespace collisions with images from
+other info manuals.
+
+** Update gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.12 (released 2007-04-25)
+
+** Use AM_JAVACFLAGS instead of JAVACFLAGS in java/misc/Makefile.am.
+Reported by Petteri Räty <betelgeuse@gentoo.org>.
+
+** Update gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.11 (released 2007-03-13)
+
+** Update of the C# Libidn port, by Alexander Gnauck.
+The code has been refactored and the namespace has been modified to
+comply with .NET naming conventions.  An IDNA bug was fixed.
+
+** Update gnulib files.
+We now use the "striconv" module instead of the "iconvme", which
+causes a slight increase of code size (from 303kb to 319kb with
+debugging symbols on i386).  The reason is the use of a new locale
+independent strcasecmp, which may cause faster operation in some
+locales where, e.g., "ASCII" and "ascii" are not treated as the same.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.10 (released 2007-01-04)
+
+** Corrected year in copyright notices.
+
+** Update gnulib files.
+Including the code to convert strings between different encodings
+(noted in case this introduces problems).
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.9 (released 2006-11-30)
+
+** The Java code is fixed to properly translate any non-ASCII dot into '.'.
+Reported and fixed by "Stephane Mikaty" <mikaty@ecircle-ag.com>.
+
+** Update gnulib files.
+
+** Bump tool versions to autoconf 2.61, automake 1.10, and gettext 0.16.
+
+** Old versions of iconv.m4, codeset.m4 and lib-link.m4 removed from m4/.
+Modern versions are part of gnulib.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.8 (released 2006-10-18)
+
+** The gnulib directory is separated into two directories.
+One gnulib directory (lib/gl/) for the LGPL library in lib/, and one
+gnulib directory (gl/) for the GPL tools in src/.  This allows the
+GPL'd tools to use more gnulib modules than before, since earlier all
+gnulib files had to be LGPL.
+
+** Update gnulib files.
+
+** Some minor cleanups, like assuming locale.h and setlocale().
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.7 (released 2006-09-13)
+
+** Fix build failure of idn-int.h on C99 platforms.
+Reported by Paul Howarth <paul@city-fan.org>.
+
+** The manual includes the GPL license, for the command-line tools.
+
+** The function, variable and concept index is moved to the end of the manual.
+
+** Update gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.6 (released 2006-08-23)
+
+** Instead of AX_CREATE_STDINT_H, use the stdint gnulib module, for idn-int.h.
+This solves building on some HPPA systems.  Note that the generated
+idn-int.h is specific to the build environment that libidn was built
+under, and is not generally usable by any other compiler (if any) on
+the host.  This was true before too.
+
+** Update gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.5 (released 2006-06-07)
+
+** Link the library with external libintl, for gettext.
+This fixes building on FreeBSD, reported by Kirill Ponomarew
+<krion@voodoo.bawue.com>.
+
+** Update doxygen config file to version 1.4.7.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.4 (released 2006-06-07)
+
+** Fix translation of error messages.
+Thanks to Joe Orton <jorton@redhat.com>.
+
+** Fix warnings on 64-bit platforms.
+Thanks to Joe Orton <jorton@redhat.com>.
+
+** The tests are run under valgrind, if it is installed.
+Use --disable-valgrind-tests to unconditionally disable this.  It is
+disabled by default for cross compiles.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.3 (released 2006-03-08)
+
+** Fixes for the build environment.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.2 (released 2006-02-07)
+
+** Fix objdir != srcdir builds for the Java documentation.
+Thanks to Bernard Leak <bernard@brenda-arkle.demon.co.uk>.
+
+** Update of gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.1 (released 2006-01-20)
+
+** Make it possible to cross-compile to mingw32.
+You can build Libidn for Windows by invoking `./configure
+--host=i586-mingw32msvc' (or similar).
+
+** Minor changes in how the C# code is built.
+
+** Update of gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.6.0 (released 2005-12-03)
+
+** A C# port of Libidn has been contributed by Alexander Gnauck.
+The port resides in the csharp/ directory.  Configure will build it if
+a working C# compiler can be found.  Mono's "mcs" compiler is known to
+work (available in Debian in the "mono-mcs" package), but PNET's
+"cscc" compiler should also work (available in Debian in the "pnet"
+package).  The port is licensed under the GPL.  Some Microsoft Visual
+Studio project files are also present in the csharp/ directory, which
+may be useful when building the port under Windows.  The C# API is
+currently not documented, improvements are gratefully accepted.
+
+** Support shared libraries on Cygwin and Mingw32, thanks to Yaakov S.
+
+** Fix memory leak.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.20 (released 2005-10-23)
+
+** The header file pr29.h is now installed by 'make install'.
+
+** Translation updates.
+
+** Update of gnulib files.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.19 (released 2005-09-19)
+
+** The test for setlocale and nl_langinfo has now been separated.
+The autoconf script now test for locale.h, setlocale and
+nl_langinfo(CODESET) independently.
+
+** Gnulib updates, fixes for getopt.
+
+** Java manuals in doc/java/ are now generated by Gjdoc from GNU Classpath.
+
+** Kaffe is used to link the pre-built libidn-*.jar file.
+
+** Translation updates.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.18 (released 2005-07-16)
+
+** The macro AX_CREATE_STDINT_H that is used to create idn-int.h
+** has been updated.
+
+** Fix use of 'head -1' in configure script (should be 'head -n -1'),
+** thanks to Carsten Lohrke.
+
+** Announce the help-libidn mailing list in documentation and README.
+
+** Translation updates.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.17 (released 2005-05-26)
+
+** The gnulib portability files were updated.
+
+** The license template in files were updated with the new address.
+
+** Translation updated.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.16 (released 2005-05-06)
+
+** Mark static PR29 data tables as 'const', thanks to Joe Orton.
+
+** Kinyarwanda translations added, thanks to Steve Murphy.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.15 (released 2005-03-19)
+
+** Improvements to code to convert data between character sets.
+The license template was changed to the LGPL, from the GPL template
+that was mistakenly used in the previous two releases.  Document here
+that cleaning up this code has solved memory allocation and arithmetic
+overflow problems.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.14 (released 2005-03-19)
+
+** Building for srcdir != objdir from CVS now work, thanks to Linus Nordberg.
+
+** Simplified Chinese translations added, thanks to Meng Jie.
+
+** Vietnamese translation added, thanks to Clytie Siddall.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.13 (released 2005-01-29)
+
+** The code to convert data between character encodings have been cleaned up.
+The stringprep_convert function has been added to gnulib, under the
+name iconv_string, and is now used by libidn.  This should not have
+any user-visible consequences, though.
+
+** It is now possible to bootstrap with unmodified Automake installations.
+
+** Italian translation added, thanks to Marco Colombo.
+
+** Swedish translation updated.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.12 (released 2004-12-04)
+
+** Java code now support the XMPP NodePrep and ResourcePrep profiles.
+
+** Bug fixes and improvements to Java code.
+The allowUnassigned flag is now respected properly.  The prohibited
+code points check now works.  Arguments are now checked.  Convenience
+method with allowUnassigned set to false was added.
+
+** Update getopt from gnulib.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.11 (released 2004-11-21)
+
+** Fix formatting of man pages, based on warnings from Doclifter.
+
+** Update of gnulib files to fix potential getopt problem on ELF systems.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.10 (released 2004-11-08)
+
+** Libtool's -export-symbols-regex is now used to only export official APIs.
+Before, applications might accidentally access internal functions.
+Note that this is not supported on all platforms, so you must still
+make sure you are not using undocumented symbols in Libidn.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.9 (released 2004-11-07)
+
+** Align GTK-DOC build infrastructure with GTK-DOC official recommendations.
+This mean that you can now browse the Libidn API manual using Devhelp.
+
+** Update of gnulib files to fix potential problem in getopt on BSD.
+
+** Documentation improvements.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.8 (released 2004-10-12)
+
+** BidiMirroring-3.2.0.txt is now included, not only the generated source code.
+This allow builds to succeed after 'make realclean'.
+
+** Generated files now have consistent 'DO NOT EDIT!' comments.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.7 (released 2004-10-12)
+
+** Shared library version incremented, because new APIs were added.
+This was forgotten in the last release.
+
+** French translation updated.
+
+** Minor bug fixes.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.6 (released 2004-10-02)
+
+** Added functions to convert return codes to human readable text.
+
+** Now using GNULib in command line front end (src/) for portability code.
+See <http://www.gnu.org/software/gnulib/> for more information on
+GNULib.  This should make the code easier to read and maintain.
+
+** API and ABI is backwards compatible with the previous version.
+idna_strerror: ADD.
+pr29_strerror: ADD.
+punycode_strerror: ADD.
+stringprep_strerror: ADD.
+tld_strerror: ADD.
+TLD_NO_TLD: ADD.  Replaces TLD_NOTLD.
+TLD_NOTLD: DEPRECATED.  Use TLD_NO_TLD instead.
+
+* Version 0.5.5 (released 2004-09-13)
+
+** Hide accidentally exported variable g_utf8_skip, by marking it as static.
+
+** Various fixes.
+
+** API and ABI is backwards compatible with the previous version.
+g_utf8_skip: REMOVED.  (But never meant to be used.)
+
+* Version 0.5.4 (released 2004-08-08)
+
+** Translation updates.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.3 (released 2004-08-05)
+
+** Fix crash in `idn --tld' command line tool.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.2 (released 2004-07-14)
+
+** Java "make install" rules are now DESTDIR compatible.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.1 (released 2004-07-09)
+
+** Cross compile builds should work.
+It should work for any sane cross compile target, but the only tested
+platform is uClibc/uClinux on Motorola Coldfire.
+
+** The example programs now correctly invoke `setlocale (LC_ALL, "")'.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.5.0 (released 2004-06-26)
+
+** Functions to detect "normalization problem sequences" as per PR-29 added.
+See the new chapter "PR29 Functions" in the manual
+(doc/libidn.{ps,pdf,html}) for more information and the background
+story.  An external link that discuss the problem is
+<http://www.unicode.org/review/pr-29.html>.
+
+** More translations.
+Added Esperanto (by Edmund GRIMLEY EVANS).
+
+** API and ABI is backwards compatible with the previous version.
+pr29.h: ADD.  Prototypes for PR29 types and functions.
+pr29_4, pr29_4z, pr29_8z: ADD.  New API entry points for PR29 functions.
+Pr29_rc: ADD.  New error code enum type for PR29 functions.
+
+* Version 0.4.9 (released 2004-06-11)
+
+** The Java library (java/libidn-*.jar) is included in the distribution.
+
+** JavaDoc manuals (doc/javadoc/) are included.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.4.8 (released 2004-06-01)
+
+** The Java source code is actually included in the distribution.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.4.7 (released 2004-05-31)
+
+** The Java port should now be functional, contributed by Oliver Hitz.
+See the new section "Java API" in the manual for more information.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.4.6 (released 2004-05-24)
+
+** The header file idn-free.h is actually installed by 'make install'.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.4.5 (released 2004-05-21)
+
+** In IDNA ToUnicode, a `free' on a stale pointer fixed by Ulrich Drepper.
+
+** Several memory leaks fixed by Ulrich Drepper.
+
+** Added more SASLPrep and NFKC test vectors.
+
+** Automake 1.8.4 is used.
+
+** API and ABI is backwards compatible with the previous version.
+idn_free: ADD.  Wrapper around system `free'.
+idn-free.h: ADD.  Prototype for `idn_free'.
+                See idn-free.h for discussion.  The interface is
+                currently not documented.  Comments and feedback is
+                appreciated.
+
+* Version 0.4.4 (released 2004-04-29)
+
+** Fixed two bugs in iSCSI definition, syncing with newly published RFC 3722.
+The first bug was an omission of prohibiting the characters in C.1.1,
+C.1.2 and C.7 (space characters and characters that are inappropriate
+for canonical representation).  The second was a bug in the definition
+of the table, causing the entire table to be skipped, of the special
+prohibited output character table defined in RFC 3722 (see section 6,
+the characters in the table are various ASCII characters and U+3002).
+
+** A few test vectors for iSCSI were added.
+
+** The self tests are linked with libtool -no-install to avoid wrapper script.
+
+** Separated self test utilities into a separate library, shared by all tests.
+
+** More translations.
+Added Romanian (by Laurentiu Buzdugan).
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.4.3 (released 2004-04-22)
+
+** Fixed a bug in table processing code to prohibit control characters.
+The problem was that the code used a code point of 0 to indicate end
+of table, but if (as for table C.2.1) a range starts with 0, this
+logic would fail.  The end-of-table test is now that both the start
+and end code points of the range is 0.  Table C.2.1 is responsible for
+prohibiting non-ASCII control characters, i.e. ASCII 0-31 and 127.
+Before, libidn silently accepted such strings without complaining.
+
+** A few test vectors for SASLprep were added.
+
+** The pkg-config script no longer include a -R parameter.
+
+** More translations.
+Added Dutch (by Elros Cyriatan), and German (by Roland Illig).
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.4.2 (released 2004-03-20)
+
+** A Punycode implementation in Java was added, by Oliver Hitz.
+Eventually hopefully a StringPrep, Nameprep and IDNA implementation
+will be added as well.  Currently you need to specify --enable-java to
+enable the Java interface.  The Java sources (below java/) are
+compiled into byte-code (not native code) into a JAR library.
+
+** More translations.
+Added Danish (by Morten Bo Johansen), French (by Michel Robitaille),
+Polish (by Jakub Bogusz), and Serbian (by Aleksandar Jelenak).
+
+** Norwegian TLD table added, by Thomas Jacob.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.4.1 (released 2004-03-08)
+
+** The user messages from the command line utility are now translated.
+Currently English and Swedish is supported.
+
+** Logic of stringprep_locale_charset modified.
+Future versions will use, in order, $CHARSET iff defined, nl_langinfo
+(CODESET) iff working, or fall back to returning "ASCII".  Earlier it
+attempted to guess the system locale, in contrast with the current
+application's locale, via some setlocale save/set/reset magic.  This
+change may require you to invoke setlocale() in your application,
+which is (should be) required for non-ASCII to work anyway.  Based on
+discussion with Ulrich Drepper.
+
+** The command-line utility now invoke setlocale (LC_ALL, "") at startup.
+
+** Fixed SASLprep tables to prohibit non-ASCII space in output.
+Non-ASCII space has always been mapped to ASCII space, so it is not
+clear this really have any effect, but the specification require it.
+
+** Building Libidn as part of GLIBC has been updated.
+Refer to libc/README for more information.  Incidentally, GLIBC in CVS
+now include a copy of Libidn.
+
+** API and ABI is backwards compatible with the previous version.
+IDNA_DLOPEN_ERROR: ADD.  Only used internally by Libidn in libc.
+
+* Version 0.4.0 (released 2004-02-28)
+
+** Support for TLD restrictions on IDN strings, contributed by Thomas Jacob.
+Many TLDs restrict the set of characters that can be used, from the
+full Unicode 3.2 range that is normally available.  This contribution
+make it possible for you to test strings for TLD conformance locally.
+The code can be disabled by --disable-tld.  If enabled (the default),
+the new API "tld.h" is installed which can be used to check a string
+for conformance to TLD specific rules.  This add a new self test, and
+a new chapter in the manual.  People responsible for maintaining TLD
+tables are hereby encouraged to contribute them (under reasonable
+licensing terms) for inclusion in future versions of Libidn.  Be
+warned that the API for TLD checking may change throughout the 0.4.x
+series as we get feedback on it.
+
+** Kerberos 5 stringprep profile macro is no longer documented.
+The macro itself will probably be removed in the future, if the
+specification is dropped from the Kerberos WG agenda.
+
+** API and ABI is backwards compatible with the previous version.
+stringprep_kerberos5: DEPRECATED.
+Tld_table_element:
+Tld_table:
+Tld_rc: ADD.  New data types.
+tld_get_4:
+tld_get_4z:
+tld_get_z: ADD.  New functions to extract TLD from string.
+tld_get_table:
+tld_default_table: ADD.  New functions to get TLD table from TLD name.
+tld_check_4t:
+tld_check_4tz: ADD.  New function to provide core TLD operations.
+tld_check_4:
+tld_check_4z:
+tld_check_8z:
+tld_check_lz: ADD.  New functions that combine all TLD operations in one call.
+
+* Version 0.3.7 (released 2004-01-22)
+
+** The command line parameter '--' idiom is documented.
+
+** The iSCSI stringprep profile now recognized as "iSCSI".
+The earlier name "ISCSIprep" is still recognized, for backwards
+compatibility.
+
+** DocBook manuals no longer included (the tools are too unstable).
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.3.6 (released 2004-01-06)
+
+** The manual now contain a troubleshooting section for the command line tool.
+
+** The PHP interface pass the string directly on the command line.
+
+** The macro that create 'idn-int.h' has been updated to latest version.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.3.5 (released 2003-12-15)
+
+** The program 'idn' accepts input strings directly on the command line.
+
+** The program 'idn' defaults to --idna-to-ascii if no parameter is given.
+
+** The program 'idn' now print user instructions before waiting for input.
+
+** DocBook HTML output not included any longer.
+The reason is that the filenames generated by docbook2html appear to
+be rather random, so it is difficult to maintain the Makefile.am rules
+for them.
+
+** Autoconf 2.59, automake 1.8 and libtool from CVS is used.
+
+** API and ABI is backwards compatible with the previous version.
+IDNA_CONTAINS_NON_LDH: ADD.  Same integer value as IDNA_CONTAINS_LDH.
+IDNA_CONTAINS_LDH: DEPRECATED.  LDH (letter-digits-hyphens) characters
+                are not an error, but non-LDH characters are, when
+                IDNA_USE_STD3_ASCII_RULES is used.  The logic of the
+                mnemonic name of this error constant was reversed.
+
+* Version 0.3.4 (released 2003-11-09)
+
+** DocBook manuals in XML, PDF, PostScript, ASCII and HTML formats included.
+
+* Version 0.3.3 (released 2003-10-18)
+
+** Fixed list of Stringprep profiles in 'idn --help' and 'idn.php'.
+
+** Fixed debug information in 'idn'.
+
+** Internal improvements.
+Leads to reduced heap memory usage.  Simplified inter-dependency among
+files in lib/* to make it easier to copy them into your project.
+
+** Debugging stringprep profile 'generic' removed.
+
+** Punycode implementation updated to rfc3492bis-00.
+
+** API and ABI is backwards compatible with the previous version.
+stringprep_4i: NEW.
+stringprep_4zi: NEW.
+stringprep: CHANGED. 'profile' is marked as 'const'.
+stringprep_profile: CHANGED. 'profile' is marked as 'const'.
+stringprep_generic: REMOVED. Never meant for public use.
+
+* Version 0.3.2 (released 2003-10-07)
+
+** SASL ANONYMOUS stringprep profile "trace" added.
+It is equivalent to the already supported "plain" SASL ANONYMOUS
+stringprep profile, except for the name.
+
+** API and ABI is backwards compatible with the previous version.
+The 'in' parameter to stringprep_profile was changed from 'char*' to
+'const char*'.
+
+* Version 0.3.1 (released 2003-10-02)
+
+** Fixed handling of implicit and explicit zero-length root labels in ToASCII.
+
+** Fixed support for Hangul Syllables during Unicode NFKC normalization.
+
+** Fixed Unicode NFKC normalization of (some) BMP code points.
+This was done by syncing the NFKC code with latest GLIB, and may have
+fixed other bugs in the earlier versions of the updated functions.
+
+** Added more IDNA test vectors.
+
+** Emacs Lisp IDNA implementation now set the UseSTD3ASCIIRules flag.
+This is the appropriate setting for mail-related uses of IDNA.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.3.0 (released 2003-09-23)
+
+** Ported to Mac OS X.
+
+** Gnulib code removed, we now assume a C89 compatible environment.
+
+** Building libidn as a libc add-on now works again.
+
+** Man pages for all public API functions are included.
+
+** Fixed bug in SASLprep profile.
+
+** API and ABI is NOT backwards compatible with the previous version.
+All previously labeled (since 0.1.x) obsolete functions have been dropped.
+The use of 'enum' types instead of 'int' added in 0.2.3 reverted, it
+confused documentation generators and wasn't all that common practice.
+
+* Version 0.2.3 (released 2003-08-26)
+
+** Example 4 was the same as example 3, now changed to demo ToUnicode.
+
+** Documentation improvements.
+
+** Prototype cleanups.
+The proper enum types (Stringprep_rc, Idna_rc, etc) are now used in
+several places where plain int where used before.  String lengths are
+handled by (s)size_t instead of int.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.2.2 (released 2003-08-13)
+
+** Fixed problem with strings longer than 4GB in punycode functions.
+The punycode code cannot handle strings longer than 4GB.  The code now
+return PUNYCODE_BAD_INPUT on too long input, instead of failing in an
+unknown way.
+
+** The "idn --idna-to-unicode" command now output locale encoded strings.
+
+** Build fixes, bug fixes.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.2.1 (released 2003-07-04)
+
+** Don't reject zero-length trailing labels as in, e.g., "www.example.org.".
+The IDNA RFC is not clear on this topic, zero-length labels in general
+are forbidden by the ToASCII algorithm in section 4.1 step 8, but the
+terminology section define, inside a parenthesis, that the zero-length
+root label is in fact not considered a label at all in IDNA.
+
+** Bug fixes.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.2.0 (released 2003-06-19)
+
+** Unicode code point data is now uint32_t, defined in "idn-int.h".
+A header file "idn-int.h" is generated and installed to make sure the
+"uint32_t" data type is available on all platforms.  The reason for
+this change is that on 64-bit platforms, the application was required
+to convert 32 bit integers (which is how Unicode code points are
+typically represented) into 64 bit integers before calling libidn
+functions.
+
+** New idna_*() functions have improved flags handling.
+The allowunassigned and usestd3asciirules parameters were collapsed
+into a flags parameter, that can take on the IDNA_ALLOW_UNASSIGNED and
+IDNA_USE_STD3_ASCII_RULES values.  This allows for easier extensions
+to support, e.g., Unicode 4.0 or RFC 952 ASCII rules checking.  Note
+that the old entry points are unmodified (in this regard), and new
+entry points with this modification were added.
+
+** The manual was moved into a separate directory doc/.
+
+** Bugfixes.
+
+** API and ABI is not backwards compatible.
+In punycode.h and stringprep.h the "unsigned long" data type was
+changed into "uint32_t", which cause a API and ABI missmatch.  For
+idna.h, the old entry points that used "unsigned long" still exist,
+and new entry points that uses "uint32_t" was added.  To update your
+application, you probably only need to change "unsigned long" to
+"uint32_t".  As a result of these changes, the shared object version
+has been increased.
+
+* Version 0.1.15 (released 2003-06-07)
+
+** Bugfixes.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.1.14 (released 2003-05-10)
+
+** Experimental documentation generation in contrib/doxygen/.
+Simply invoke "doxygen" in that directory and it should build the
+documentation.
+
+** Lisp API bug fixes.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.1.13 (released 2003-03-13)
+
+** Unfinished Java *.class files implementing the libidn API.
+See the contrib/java/ directory.  It is implemented using the Java
+Native Interface, and light initial testing indicate interoperability
+between GCJ, IBM's JDK and Sun's JDK.
+
+** Building is now silent when gengetopt is not present.
+
+** Bug fixes.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.1.12 (released 2003-03-06)
+
+** Building libidn doesn't require gengetopt.
+Warnings are still printed though.  Gengetopt will be replaced by argp
+eventually.
+
+** Command line tool "idn" supports stringprep too.
+
+** New stringprep API entry point: stringprep_profile().
+It takes a name of the stringprep profile as an argument instead of
+the stringprep table structure.
+
+** stringprep_*.h are deprecated and will be removed in the future.
+All symbols have been moved to stringprep.h.  The reasons are that (1)
+the files typically only defined one CPP macro and exported one symbol
+definition, which is wasteful as it generates too much work in the
+manual, and (2) using one header file for all profiles allows easier
+access to all stringprep profiles during runtime.  Note that the files
+are still installed, but they only #include stringprep.h now, for
+backwards compatibility.
+
+** GNU Libc add-on build instructions updated to GNU Libc 2.3.2.
+
+** SASLprep stringprep profile added.
+
+** An online interface to libidn written in PHP added to contrib/web/.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.1.11 (released 2003-02-26)
+
+** Command line application "idn" is included.
+A simple wrapper around the library that allows you to invoke punycode
+encoding/decoding and IDNA ToASCII/ToUnicode on the command line.
+
+** Emacs Lisp interface for punycode and IDNA included.
+See punycode.el and idna.el.
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.1.10 (released 2003-02-21)
+
+** idna_*_to_ace() and idna_*ace_to_*() are deprecated in favor of
+** idna_to_ascii_from_*() and idna_to_unicode_*_from_*() respectively.
+The reason was that the old interfaces did not accept the
+AllowUnassigned and UseSTD3ASCIIRules flags.  Note that the old
+functions are not removed, but will be in the future.
+
+** IPS iSCSI stringprep profile added.
+
+** A new contrib/ directory added.
+Currently it contains a Python interface to Libidn, contributed by
+Stephane Bortzmeyer.
+
+** idna.h and punycode.h are now installed by "make install".
+
+** API and ABI is backwards compatible with the previous version.
+
+* Version 0.1.9 (released 2003-02-20)
+
+** SASL ANONYMOUS "plain" stringprep profile added.
+
+** XMPP nodeprep profile fixed.
+
+** API and ABI is backwards compatible with the previous version.
+For future releases, the NEWS entry will specifically mention whether
+the C header API or library ABI backwards compatibility is affected.
+
+* Version 0.1.8 (released 2003-02-14)
+
+** Portability fixes.
+This includes not building the API Reference Manual with GTK-DOC by
+default, if you want it use configure parameter --enable-gtk-doc after
+making sure your gtkdoc-mkdb accept the --tmpl-dir parameter.
+
+** The type for string length variables is now (s)size_t.
+Unfortunately this means binary shared library binary backwards
+compatible is lost.
+
+** New nameprep test vectors.
+
+* Version 0.1.7 (released 2003-02-12)
+
+** Uses official IDNA ACE prefix.
+
+* Version 0.1.6 (released 2003-02-11)
+
+** Uses tentative IDNA ACE prefix.
+
+** Added XMPP Node/Resource Identifiers stringprep profiles.
+
+** Fixed prohibited character checks for bidi.
+
+* Version 0.1.5 (released 2003-01-28)
+
+** The library can now be built as part of GNU Libc.
+This is experimental and only tested against GNU Libc version 2.3.1.
+See the libc/ directory, and libc/README in particular.
+
+** Bug fixes.
+
+* Version 0.1.4 (released 2003-01-15)
+
+** Documentation fixes.
+
+** Portability fixes.
+
+** Bug fixes.
+
+* Version 0.1.3 (released 2003-01-15)
+
+** Added texinfo manual.
+
+* Version 0.1.2 (released 2003-01-08)
+
+** Added high-level IDNA API.
+
+** Added example3.c and example4.c demonstrating the high-level IDNA API.
+
+* Version 0.1.1 (released 2003-01-08)
+
+** Added documentation using GTK-DOC.
+
+** The obsolete stringprep_utf8_to_ucs4_fast API entry point was removed.
+By accident it was never removed in 0.1.0.
+
+* Version 0.1.0 (released 2003-01-05)
+
+** Official GNU project.
+
+** Renamed from libstringprep to libidn.
+
+** Supports punycode and IDNA.  Caveat emptor: I don't use it myself.
+
+** Uses "unsigned long" for Unicode code points instead of "long".
+Long is guaranteed to be at least 32 bits by C standards so it is
+always sufficiently large, no need to use uint32_t and the like.
+
+** The obsolete stringprep_utf8_to_ucs4_fast API entry point was removed.
+
+* Version 0.0.8 (released 2002-12-13)
+
+** Portability fixes (now works under Cygwin on Windows 2000).
+
+** Bug fixes.
+
+* Version 0.0.7 (released 2002-12-09)
+
+** Apply all tables to entire strings, not just first hit.
+
+** Fix bidi infloop.
+
+* Version 0.0.5 (released 2002-12-07)
+
+** Fix prohibited characters handling.
+
+** Fix bidi.
+
+** Renamed type (struct) stringprep_table_element to Stringprep_table_element.
+
+** Renamed type stringprep_profile to Stringprep_profile.
+
+** Renamed type (struct) stringprep_table to Stringprep_table.
+
+** Added more self-tests.
+
+* Version 0.0.4 (released 2002-12-06)
+
+** Add unassigned code point handling, including self test cases.
+
+** Portability fixes.
+
+* Version 0.0.3 (released 2002-11-30)
+
+** Exported utility function `stringprep_utf8_to_unichar', complementary
+to existing `stringprep_unichar_to_utf8'.
+
+** Renamed `stringprep_utf8_to_ucs4_fast' to `stringprep_utf8_to_ucs4' to
+clean up API. The old entry point is maintained for binary backwards
+compatibility though.
+
+** The distribution is from now on signed using GnuPG.
+
+** Bug fixes.
+
+* Version 0.0.2 (released 2002-11-07)
+
+** NFKC self test.
+
+** Bug fixes.
+
+* Version 0.0.1 (released 2002-11-06)
+
+** Add utility functions stringprep_locale_charset(), stringprep_convert() 
+and stringprep_locale_to_utf8 () that can be used to convert text from
+system's locale into UTF-8, which should be done before invoking
+stringprep().  The functions requires iconv() in the operating system.
+
+** An example program (example.c) that illustrates how libstringprep can be
+used is included.
+
+** The pkg-config --libs output should now include necessary -R options.
+
+* Version 0.0.0 (released 2002-11-05)
+
+** Initial release
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..bc3fa9b
--- /dev/null
+++ b/README
@@ -0,0 +1,32 @@
+Libidn README -- Important introductory notes.
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+See the end for copying conditions.
+
+Libidn is a package for internationalized string handling based on the
+Stringprep, Punycode, IDNA and TLD specifications.  Libidn is a GNU
+project.
+
+Read INSTALL for installation instructions, and doc/libidn.* for the
+manual in various formats (including Info, HTML, PostScript, and PDF).
+
+The C library (libidn.a), C# library (Libidn.dll) and Java library
+(libidn-*.jar) are licensed under the GNU Lesser General Public
+License version 2.1 or later.  See the file COPYING.LIB.
+
+The command line tool, self tests, examples, and other auxilliary
+files, are licensed under the GNU General Public License version 3.0
+or later.  See the file COPYING.
+
+Libidn will not be stable without your help.  Report bugs, proof read
+the manual, or make a monetary donation.
+
+If you need help to use Libidn, or wish to help others, you are
+invited to join our mailing list help-libidn@gnu.org, see
+<http://lists.gnu.org/mailman/listinfo/help-libidn>.
+
+For more information, see <http://www.gnu.org/software/libidn/>.
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/THANKS b/THANKS
new file mode 100644 (file)
index 0000000..add6340
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,97 @@
+Libidn THANKS -- Acknowledgements.
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+See the end for copying conditions.
+
+The punycode code was taken from the IETF IDN Punycode specification,
+by Adam M. Costello.  The TLD code was contributed by Thomas Jacob.
+The Java implementation was contributed by Oliver Hitz.  The C#
+implementation was contributed by Alexander Gnauck.  The Unicode
+tables were provided by Unicode, Inc.  Some functions for dealing with
+Unicode (see nfkc.c and toutf8.c) are borrowed from GLib downloaded
+from www.gtk.org.
+
+Suggestions, bug reports, patches, translations, test vectors or other
+contributions were also received from or written by the people
+mentioned below.  If you have contributed and aren't mentioned here,
+please let us know!
+
+Stephane Bortzmeyer
+Seungho Lee
+Waldo Bastian
+Travis Shirk
+Hugo Salgado H.
+Leonard Stiles
+Ryan M. Golbeck
+Joe Hildebrand
+Thiago Macieira
+Ienup Sung
+Wim Lewis
+Robert Norris
+Patrik Wallstrom
+Marcos Sanz
+Gerrit P. Haase
+Adam M. Costello
+Trond Haugen
+Marco d'Itri
+Arkadiusz Miskiewicz
+Noah Levitt
+Paul Hoffman / JDNA
+Oden Eriksson
+Kai Schaetzl
+Graydon Hoare
+Jan-Hendrik Heuing
+Chris Moore
+Niels Möller
+Thomas Jacob
+Ulrich Drepper
+Jakub Bogusz
+Aleksandar Jelenak
+Michel Robitaille
+Morten Bo Johansen
+Oliver Hitz
+Jørgen Thomsen
+Roland Illig
+Elros Cyriatan
+Martin Waitz
+Laurentiu Buzdugan
+Joe Orton
+Daniel Stenberg
+Gisle Vanem
+Robert Scheck
+Benjamin Reed
+Edmund GRIMLEY EVANS
+Stephan Kulow
+Andreas Schwab
+Eric S. Raymond
+Matt Tucker
+Marco Colombo
+Linus Nordberg
+Simon Walter
+Clytie Siddall
+Meng Jie
+Carsten Lohrke
+Wim Lewis
+Yaakov S
+Alexander Gnauck
+Bernard Leak
+Kirill Ponomarew
+Paul Howarth
+Stephane Mikaty
+Petteri Räty
+Petr Pisar
+Christian Ehrlicher
+Remko van der Vossen
+Erik van der Poel
+Mike Frysinger
+Adam Strzelecki
+Benno Schulenberg
+John McGowan
+Sisyphus
+Jens Rehsack <jens.rehsack@bayerbbs.com>
+Dagobert Michelsen <dam@opencsw.org>
+Guenter Knauf <gk@gknw.de>
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..92af868
--- /dev/null
+++ b/TODO
@@ -0,0 +1,21 @@
+Libidn TODO -- Future directions.
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+See the end for copying conditions.
+
+If you like to start working on anything, please let me know so work
+duplication can be avoided.
+
+  - Optimize stringprep for speed, the table searching is slow (but
+    does it matter?).
+  - Optimize for size?  The stringprep tables can be compressed _alot_
+    (most map entries are simply zeroes).
+  - Port applications to use libidn.
+  - Include more stringprep profiles.
+  - Improve IDN tool.
+  - Reimplement punycode without string length restrictions.
+  - Reject invalid Unicode data.
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644 (file)
index 0000000..60360fd
--- /dev/null
@@ -0,0 +1,1076 @@
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63b],,
+[m4_warning([this file was generated for autoconf 2.63b.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.11], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Check for Java compiler.                                  -*- Autoconf -*-
+# For now we only handle the GNU compiler.
+
+# Copyright (C) 1999, 2000, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([AM_PROG_GCJ],[
+AC_CHECK_PROGS(GCJ, gcj, gcj)
+test -z "$GCJ" && AC_MSG_ERROR([no acceptable gcj found in \$PATH])
+if test "x${GCJFLAGS-unset}" = xunset; then
+   GCJFLAGS="-g -O2"
+fi
+AC_SUBST(GCJFLAGS)
+_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(GCJ)])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                 [_AM_DEPENDENCIES(CC)],
+                 [define([AC_PROG_CC],
+                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                 [_AM_DEPENDENCIES(CXX)],
+                 [define([AC_PROG_CXX],
+                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES(OBJC)],
+                 [define([AC_PROG_OBJC],
+                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+# 2006  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# AM_PATH_LISPDIR
+# ---------------
+AC_DEFUN([AM_PATH_LISPDIR],
+[AC_PREREQ([2.60])dnl
+ # If set to t, that means we are running in a shell under Emacs.
+ # If you have an Emacs named "t", then use the full path.
+ test x"$EMACS" = xt && EMACS=
+ AC_CHECK_PROGS([EMACS], [emacs xemacs], [no])
+ AC_ARG_VAR([EMACS], [the Emacs editor command])
+ AC_ARG_VAR([EMACSLOADPATH], [the Emacs library search path])
+ AC_ARG_WITH([lispdir],
+ [  --with-lispdir          override the default lisp directory],
+ [ lispdir="$withval"
+   AC_MSG_CHECKING([where .elc files should go])
+   AC_MSG_RESULT([$lispdir])],
+ [
+ AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [
+   if test $EMACS != "no"; then
+     if test x${lispdir+set} != xset; then
+  # If $EMACS isn't GNU Emacs or XEmacs, this can blow up pretty badly
+  # Some emacsen will start up in interactive mode, requiring C-x C-c to exit,
+  #  which is non-obvious for non-emacs users.
+  # Redirecting /dev/null should help a bit; pity we can't detect "broken"
+  #  emacsen earlier and avoid running this altogether.
+  AC_RUN_LOG([$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' </dev/null >conftest.out])
+       am_cv_lispdir=`sed -n \
+       -e 's,/$,,' \
+       -e '/.*\/lib\/x*emacs\/site-lisp$/{s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;}' \
+       -e '/.*\/share\/x*emacs\/site-lisp$/{s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;}' \
+       conftest.out`
+       rm conftest.out
+     fi
+   fi
+   test -z "$am_cv_lispdir" && am_cv_lispdir='${datadir}/emacs/site-lisp'
+  ])
+  lispdir="$am_cv_lispdir"
+])
+AC_SUBST([lispdir])
+])# AM_PATH_LISPDIR
+
+AU_DEFUN([ud_PATH_LISPDIR], [AM_PATH_LISPDIR])
+
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([lib/gl/m4/gnulib-comp.m4])
+m4_include([lib/gl/m4/iconv_h.m4])
+m4_include([lib/gl/m4/iconv_open.m4])
+m4_include([lib/gl/m4/ld-output-def.m4])
+m4_include([lib/gl/m4/ld-version-script.m4])
+m4_include([lib/gl/m4/locale-fr.m4])
+m4_include([lib/gl/m4/locale-tr.m4])
+m4_include([lib/gl/m4/multiarch.m4])
+m4_include([lib/gl/m4/stdbool.m4])
+m4_include([lib/gl/m4/stdint.m4])
+m4_include([lib/gl/m4/strverscmp.m4])
+m4_include([lib/gl/m4/wchar.m4])
+m4_include([gl/m4/00gnulib.m4])
+m4_include([gl/m4/autobuild.m4])
+m4_include([gl/m4/csharp.m4])
+m4_include([gl/m4/csharpcomp.m4])
+m4_include([gl/m4/errno_h.m4])
+m4_include([gl/m4/error.m4])
+m4_include([gl/m4/extensions.m4])
+m4_include([gl/m4/getopt.m4])
+m4_include([gl/m4/gnulib-common.m4])
+m4_include([gl/m4/gnulib-comp.m4])
+m4_include([gl/m4/include_next.m4])
+m4_include([gl/m4/manywarnings.m4])
+m4_include([gl/m4/pmccabe2html.m4])
+m4_include([gl/m4/stdarg.m4])
+m4_include([gl/m4/strerror.m4])
+m4_include([gl/m4/string_h.m4])
+m4_include([gl/m4/unistd_h.m4])
+m4_include([gl/m4/version-etc.m4])
+m4_include([gl/m4/warnings.m4])
+m4_include([m4/ac_prog_jar.m4])
+m4_include([m4/codeset.m4])
+m4_include([m4/gettext.m4])
+m4_include([m4/gtk-doc.m4])
+m4_include([m4/iconv.m4])
+m4_include([m4/intlmacosx.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/libtool.m4])
+m4_include([m4/longlong.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
+m4_include([m4/nls.m4])
+m4_include([m4/pkg.m4])
+m4_include([m4/po.m4])
+m4_include([m4/progtest.m4])
+m4_include([m4/update-header-version.m4])
+m4_include([m4/valgrind.m4])
+m4_include([m4/visibility.m4])
+m4_include([m4/wchar_t.m4])
+m4_include([m4/wint_t.m4])
diff --git a/build-aux/config.guess b/build-aux/config.guess
new file mode 100755 (executable)
index 0000000..da83314
--- /dev/null
@@ -0,0 +1,1561 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
+
+timestamp='2009-04-27'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           sh5el) machine=sh5le-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep __ELF__ >/dev/null
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       # Debian GNU/NetBSD machines have a different userland, and
+       # thus, need a distinct triplet. However, they do not need
+       # kernel version information, so it can be replaced with a
+       # suitable tag, in the style of linux-gnu.
+       case "${UNAME_VERSION}" in
+           Debian*)
+               release='-gnu'
+               ;;
+           *)
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               ;;
+       esac
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit ;;
+    *:OpenBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+       exit ;;
+    *:ekkoBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       exit ;;
+    *:SolidBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+       exit ;;
+    macppc:MirBSD:*:*)
+       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    *:MirBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    alpha:OSF1:*:*)
+       case $UNAME_RELEASE in
+       *4.0)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+               ;;
+       *5.*)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               ;;
+       esac
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+       # types through head -n 1, so we only detect the type of CPU 0.
+       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+       case "$ALPHA_CPU_TYPE" in
+           "EV4 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "EV4.5 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "LCA4 (21066/21068)")
+               UNAME_MACHINE="alpha" ;;
+           "EV5 (21164)")
+               UNAME_MACHINE="alphaev5" ;;
+           "EV5.6 (21164A)")
+               UNAME_MACHINE="alphaev56" ;;
+           "EV5.6 (21164PC)")
+               UNAME_MACHINE="alphapca56" ;;
+           "EV5.7 (21164PC)")
+               UNAME_MACHINE="alphapca57" ;;
+           "EV6 (21264)")
+               UNAME_MACHINE="alphaev6" ;;
+           "EV6.7 (21264A)")
+               UNAME_MACHINE="alphaev67" ;;
+           "EV6.8CB (21264C)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8AL (21264B)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8CX (21264D)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.9A (21264/EV69A)")
+               UNAME_MACHINE="alphaev69" ;;
+           "EV7 (21364)")
+               UNAME_MACHINE="alphaev7" ;;
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
+       # A Pn.n version is a patched version.
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       exit ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit ;;
+    *:z/VM:*:*)
+       echo s390-ibm-zvmoe
+       exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+       exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+       echo arm-unknown-riscos
+       exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit ;;
+    DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7; exit ;;
+       esac ;;
+    s390x:SunOS:*:*)
+       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+       eval $set_cc_for_build
+       SUN_ARCH="i386"
+       # If there is a compiler, see if it is configured for 64-bit objects.
+       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+       # This test works for both compilers.
+       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_64BIT_ARCH >/dev/null
+           then
+               SUN_ARCH="x86_64"
+           fi
+       fi
+       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+       echo m68k-apple-machten${UNAME_RELEASE}
+       exit ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #if defined (host_mips) && defined (MIPSEB)
+       #if defined (SYSTYPE_SYSV)
+         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_SVR4)
+         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+       #endif
+       #endif
+         exit (-1);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c &&
+         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+         SYSTEM_NAME=`$dummy $dummyarg` &&
+           { echo "$SYSTEM_NAME"; exit; }
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit ;;
+    Motorola:*:4.3:PL8-*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+           else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
+       fi
+       exit ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+               then
+                       echo "$SYSTEM_NAME"
+               else
+                       echo rs6000-ibm-aix3.2.5
+               fi
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit ;;
+    *:AIX:*:[456])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+               IBM_ARCH=rs6000
+       else
+               IBM_ARCH=powerpc
+       fi
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+               {
+               case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+               case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+               case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+                   switch (bits)
+                       {
+                       case 64: puts ("hppa2.0w"); break;
+                       case 32: puts ("hppa2.0n"); break;
+                       default: puts ("hppa2.0"); break;
+                       } break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+                   puts ("hppa2.0"); break;
+              #endif
+               default: puts ("hppa1.0"); break;
+               }
+                  exit (0);
+              }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   test -z "$HP_ARCH" && HP_ARCH=hppa
+               fi ;;
+       esac
+       if [ ${HP_ARCH} = "hppa2.0w" ]
+       then
+           eval $set_cc_for_build
+
+           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+           # generating 64-bit code.  GNU and HP use different nomenclature:
+           #
+           # $ CC_FOR_BUILD=cc ./config.guess
+           # => hppa2.0w-hp-hpux11.23
+           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+           # => hppa64-hp-hpux11.23
+
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+               grep __LP64__ >/dev/null
+           then
+               HP_ARCH="hppa2.0w"
+           else
+               HP_ARCH="hppa64"
+           fi
+       fi
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+               { echo "$SYSTEM_NAME"; exit; }
+       echo unknown-hitachi-hiuxwe2
+       exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    *:UNICOS/mp:*:*)
+       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:FreeBSD:*:*)
+       case ${UNAME_MACHINE} in
+           pc98)
+               echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           amd64)
+               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           *)
+               echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+       esac
+       exit ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit ;;
+    *:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit ;;
+    i*:windows32*:*)
+       # uname -m includes "-pc" on this system.
+       echo ${UNAME_MACHINE}-mingw32
+       exit ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit ;;
+    *:Interix*:[3456]*)
+       case ${UNAME_MACHINE} in
+           x86)
+               echo i586-pc-interix${UNAME_RELEASE}
+               exit ;;
+           EM64T | authenticamd | genuineintel)
+               echo x86_64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+           IA64)
+               echo ia64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+       esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+       echo i${UNAME_MACHINE}-pc-mks
+       exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i586-pc-interix
+       exit ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+       echo x86_64-unknown-cygwin
+       exit ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    *:GNU:*:*)
+       # the GNU system
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit ;;
+    *:GNU/*:*:*)
+       # other systems with GNU libc and userland
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+       exit ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit ;;
+    arm*:Linux:*:*)
+       eval $set_cc_for_build
+       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_EABI__
+       then
+           echo ${UNAME_MACHINE}-unknown-linux-gnu
+       else
+           echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+       fi
+       exit ;;
+    avr32*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    cris:Linux:*:*)
+       echo cris-axis-linux-gnu
+       exit ;;
+    crisv32:Linux:*:*)
+       echo crisv32-axis-linux-gnu
+       exit ;;
+    frv:Linux:*:*)
+       echo frv-unknown-linux-gnu
+       exit ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m32r*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    mips:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips
+       #undef mipsel
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mipsel
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+           /^CPU/{
+               s: ::g
+               p
+           }'`"
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+       ;;
+    mips64:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips64
+       #undef mips64el
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mips64el
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips64
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+           /^CPU/{
+               s: ::g
+               p
+           }'`"
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+       ;;
+    or32:Linux:*:*)
+       echo or32-unknown-linux-gnu
+       exit ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+       objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit ;;
+    padre:Linux:*:*)
+       echo sparc-unknown-linux-gnu
+       exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit ;;
+    sh64*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    vax:Linux:*:*)
+       echo ${UNAME_MACHINE}-dec-linux-gnu
+       exit ;;
+    x86_64:Linux:*:*)
+       echo x86_64-unknown-linux-gnu
+       exit ;;
+    xtensa*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    i*86:Linux:*:*)
+       # The BFD linker knows what the default object file format is, so
+       # first see if it will tell us. cd to the root directory to prevent
+       # problems with other programs or directories called `ld' in the path.
+       # Set LC_ALL=C to ensure ld outputs messages in English.
+       ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+                        | sed -ne '/supported targets:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported targets: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_targets" in
+         elf32-i386)
+               TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+               ;;
+         a.out-i386-linux)
+               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+               exit ;;
+         "")
+               # Either a pre-BFD a.out linker (linux-gnuoldld) or
+               # one that does not give us useful --help.
+               echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+               exit ;;
+       esac
+       # Determine whether the default compiler is a.out or elf
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #ifdef __ELF__
+       # ifdef __GLIBC__
+       #  if __GLIBC__ >= 2
+       LIBC=gnu
+       #  else
+       LIBC=gnulibc1
+       #  endif
+       # else
+       LIBC=gnulibc1
+       # endif
+       #else
+       #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+       LIBC=gnu
+       #else
+       LIBC=gnuaout
+       #endif
+       #endif
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+           /^LIBC/{
+               s: ::g
+               p
+           }'`"
+       test x"${LIBC}" != x && {
+               echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+               exit
+       }
+       test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+       ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
+       echo i386-sequent-sysv4
+       exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit ;;
+    i*86:syllable:*:*)
+       echo ${UNAME_MACHINE}-pc-syllable
+       exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit ;;
+    i*86:*:5:[678]*)
+       # UnixWare 7.x, OpenUNIX and OpenServer 6.
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i586.
+       # Note: whatever this is, it MUST be the same as what config.sub
+       # prints for the "djgpp" host, or else GDB configury will decide that
+       # this is a cross-build.
+       echo i586-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+       echo m68k-convergent-sysv
+       exit ;;
+    M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit ;;
+    M68*:*:R3V[5678]*:*)
+       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+       OS_REL='.3'
+       test -r /etc/.relid \
+           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit ;;
+    *:*:*:FTX*)
+       # From seanf@swdc.stratus.com.
+       echo i860-stratus-sysv4
+       exit ;;
+    i*86:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo ${UNAME_MACHINE}-stratus-vos
+       exit ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+        exit ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit ;;
+    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
+       echo i586-pc-haiku
+       exit ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-6:SUPER-UX:*:*)
+       echo sx6-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-7:SUPER-UX:*:*)
+       echo sx7-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8:SUPER-UX:*:*)
+       echo sx8-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8R:SUPER-UX:*:*)
+       echo sx8r-nec-superux${UNAME_RELEASE}
+       exit ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Darwin:*:*)
+       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+       case $UNAME_PROCESSOR in
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+       echo nse-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+       exit ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit ;;
+    *:*VMS:*:*)
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       case "${UNAME_MACHINE}" in
+           A*) echo alpha-dec-vms ; exit ;;
+           I*) echo ia64-dec-vms ; exit ;;
+           V*) echo vax-dec-vms ; exit ;;
+       esac ;;
+    *:XENIX:*:SysV)
+       echo i386-pc-xenix
+       exit ;;
+    i*86:skyos:*:*)
+       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+       exit ;;
+    i*86:rdos:*:*)
+       echo ${UNAME_MACHINE}-pc-rdos
+       exit ;;
+    i*86:AROS:*:*)
+       echo ${UNAME_MACHINE}-pc-aros
+       exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+         ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+       { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    c34*)
+       echo c34-convex-bsd
+       exit ;;
+    c38*)
+       echo c38-convex-bsd
+       exit ;;
+    c4*)
+       echo c4-convex-bsd
+       exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
new file mode 100755 (executable)
index 0000000..85c2f20
--- /dev/null
@@ -0,0 +1,672 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+#   Copyright 1996-2008 Free Software Foundation, Inc.
+#   Taken from GNU libtool, 2001
+#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+#   This file is free software; the Free Software Foundation gives
+#   unlimited permission to copy and/or distribute it, with or without
+#   modifications, as long as this notice is preserved.
+#
+# The first argument passed to this file is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+#   than 256 bytes, otherwise the compiler driver will dump core. The only
+#   known workaround is to choose shorter directory names for the build
+#   directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+  wl='-Wl,'
+else
+  case "$host_os" in
+    aix*)
+      wl='-Wl,'
+      ;;
+    darwin*)
+      case $cc_basename in
+        xlc*)
+          wl='-Wl,'
+          ;;
+      esac
+      ;;
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      ;;
+    hpux9* | hpux10* | hpux11*)
+      wl='-Wl,'
+      ;;
+    irix5* | irix6* | nonstopux*)
+      wl='-Wl,'
+      ;;
+    newsos6)
+      ;;
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+        ecc*)
+          wl='-Wl,'
+          ;;
+        icc* | ifort*)
+          wl='-Wl,'
+          ;;
+        lf95*)
+          wl='-Wl,'
+          ;;
+        pgcc | pgf77 | pgf90)
+          wl='-Wl,'
+          ;;
+        ccc*)
+          wl='-Wl,'
+          ;;
+        como)
+          wl='-lopt='
+          ;;
+        *)
+          case `$CC -V 2>&1 | sed 5q` in
+            *Sun\ C*)
+              wl='-Wl,'
+              ;;
+          esac
+          ;;
+      esac
+      ;;
+    osf3* | osf4* | osf5*)
+      wl='-Wl,'
+      ;;
+    rdos*)
+      ;;
+    solaris*)
+      wl='-Wl,'
+      ;;
+    sunos4*)
+      wl='-Qoption ld '
+      ;;
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      wl='-Wl,'
+      ;;
+    sysv4*MP*)
+      ;;
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      wl='-Wl,'
+      ;;
+    unicos*)
+      wl='-Wl,'
+      ;;
+    uts4*)
+      ;;
+  esac
+fi
+
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # Set some defaults for GNU ld with shared library support. These
+  # are reset later if shared libraries are not supported. Putting them
+  # here allows them to be overridden if necessary.
+  # Unlike libtool, we use -rpath here, not --rpath, since the documented
+  # option of GNU ld is called -rpath, not --rpath.
+  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+  case "$host_os" in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+        ld_shlibs=no
+      fi
+      ;;
+    amigaos*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we cannot use
+      # them.
+      ld_shlibs=no
+      ;;
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    cygwin* | mingw* | pw32* | cegcc*)
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      ;;
+    gnu* | linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    netbsd*)
+      ;;
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+        ld_shlibs=no
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+          ld_shlibs=no
+          ;;
+        *)
+          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+          else
+            ld_shlibs=no
+          fi
+          ;;
+      esac
+      ;;
+    sunos4*)
+      hardcode_direct=yes
+      ;;
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+  esac
+  if test "$ld_shlibs" = no; then
+    hardcode_libdir_flag_spec=
+  fi
+else
+  case "$host_os" in
+    aix3*)
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes; then
+        # Neither direct hardcoding nor static linking is supported with a
+        # broken collect2.
+        hardcode_direct=unsupported
+      fi
+      ;;
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+        # On IA64, the linker does run time linking by default, so we don't
+        # have to do anything special.
+        aix_use_runtimelinking=no
+      else
+        aix_use_runtimelinking=no
+        # Test if we are trying to use run time linking or normal
+        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+        # need to do runtime linking.
+        case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+          for ld_flag in $LDFLAGS; do
+            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+              aix_use_runtimelinking=yes
+              break
+            fi
+          done
+          ;;
+        esac
+      fi
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      if test "$GCC" = yes; then
+        case $host_os in aix4.[012]|aix4.[012].*)
+          collect2name=`${CC} -print-prog-name=collect2`
+          if test -f "$collect2name" && \
+            strings "$collect2name" | grep resolve_lib_name >/dev/null
+          then
+            # We have reworked collect2
+            :
+          else
+            # We have old collect2
+            hardcode_direct=unsupported
+            hardcode_minus_L=yes
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_libdir_separator=
+          fi
+          ;;
+        esac
+      fi
+      # Begin _LT_AC_SYS_LIBPATH_AIX.
+      echo 'int main () { return 0; }' > conftest.c
+      ${CC} ${LDFLAGS} conftest.c -o conftest
+      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      if test -z "$aix_libpath"; then
+        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      fi
+      if test -z "$aix_libpath"; then
+        aix_libpath="/usr/lib:/lib"
+      fi
+      rm -f conftest.c conftest
+      # End _LT_AC_SYS_LIBPATH_AIX.
+      if test "$aix_use_runtimelinking" = yes; then
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+      else
+        if test "$host_cpu" = ia64; then
+          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+        else
+          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        fi
+      fi
+      ;;
+    amigaos*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+    bsdi[45]*)
+      ;;
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      libext=lib
+      ;;
+    darwin* | rhapsody*)
+      hardcode_direct=no
+      if test "$GCC" = yes ; then
+        :
+      else
+        case $cc_basename in
+          xlc*)
+            ;;
+          *)
+            ld_shlibs=no
+            ;;
+        esac
+      fi
+      ;;
+    dgux*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+    freebsd2.2*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    freebsd2*)
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    freebsd* | dragonfly*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    hpux9*)
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      ;;
+    hpux10*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        hardcode_direct=yes
+        # hardcode_minus_L: Not really in the search PATH,
+        # but as the default location of the library.
+        hardcode_minus_L=yes
+      fi
+      ;;
+    hpux11*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct=no
+            ;;
+          *)
+            hardcode_direct=yes
+            # hardcode_minus_L: Not really in the search PATH,
+            # but as the default location of the library.
+            hardcode_minus_L=yes
+            ;;
+        esac
+      fi
+      ;;
+    irix5* | irix6* | nonstopux*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    netbsd*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    newsos6)
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+        hardcode_direct=yes
+        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        else
+          case "$host_os" in
+            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+              hardcode_libdir_flag_spec='-R$libdir'
+              ;;
+            *)
+              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+              ;;
+          esac
+        fi
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      ;;
+    osf3*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    osf4* | osf5*)
+      if test "$GCC" = yes; then
+        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+        # Both cc and cxx compiler support -rpath directly
+        hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+    solaris*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      ;;
+    sunos4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    sysv4)
+      case $host_vendor in
+        sni)
+          hardcode_direct=yes # is this really true???
+          ;;
+        siemens)
+          hardcode_direct=no
+          ;;
+        motorola)
+          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+          ;;
+      esac
+      ;;
+    sysv4.3*)
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+        ld_shlibs=yes
+      fi
+      ;;
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      ;;
+    sysv5* | sco3.2v5* | sco5v6*)
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
+      ;;
+    uts4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    *)
+      ld_shlibs=no
+      ;;
+  esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec=      # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+  aix3*)
+    library_names_spec='$libname.a'
+    ;;
+  aix[4-9]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  amigaos*)
+    library_names_spec='$libname.a'
+    ;;
+  beos*)
+    library_names_spec='$libname$shrext'
+    ;;
+  bsdi[45]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  cygwin* | mingw* | pw32* | cegcc*)
+    shrext=.dll
+    library_names_spec='$libname.dll.a $libname.lib'
+    ;;
+  darwin* | rhapsody*)
+    shrext=.dylib
+    library_names_spec='$libname$shrext'
+    ;;
+  dgux*)
+    library_names_spec='$libname$shrext'
+    ;;
+  freebsd1*)
+    ;;
+  freebsd* | dragonfly*)
+    case "$host_os" in
+      freebsd[123]*)
+        library_names_spec='$libname$shrext$versuffix' ;;
+      *)
+        library_names_spec='$libname$shrext' ;;
+    esac
+    ;;
+  gnu*)
+    library_names_spec='$libname$shrext'
+    ;;
+  hpux9* | hpux10* | hpux11*)
+    case $host_cpu in
+      ia64*)
+        shrext=.so
+        ;;
+      hppa*64*)
+        shrext=.sl
+        ;;
+      *)
+        shrext=.sl
+        ;;
+    esac
+    library_names_spec='$libname$shrext'
+    ;;
+  interix[3-9]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  irix5* | irix6* | nonstopux*)
+    library_names_spec='$libname$shrext'
+    case "$host_os" in
+      irix5* | nonstopux*)
+        libsuff= shlibsuff=
+        ;;
+      *)
+        case $LD in
+          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+          *) libsuff= shlibsuff= ;;
+        esac
+        ;;
+    esac
+    ;;
+  linux*oldld* | linux*aout* | linux*coff*)
+    ;;
+  linux* | k*bsd*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  knetbsd*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  netbsd*)
+    library_names_spec='$libname$shrext'
+    ;;
+  newsos6)
+    library_names_spec='$libname$shrext'
+    ;;
+  nto-qnx*)
+    library_names_spec='$libname$shrext'
+    ;;
+  openbsd*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  os2*)
+    libname_spec='$name'
+    shrext=.dll
+    library_names_spec='$libname.a'
+    ;;
+  osf3* | osf4* | osf5*)
+    library_names_spec='$libname$shrext'
+    ;;
+  rdos*)
+    ;;
+  solaris*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sunos4*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  sysv4 | sysv4.3*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv4*MP*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    library_names_spec='$libname$shrext'
+    ;;
+  uts4*)
+    library_names_spec='$libname$shrext'
+    ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/build-aux/config.sub b/build-aux/config.sub
new file mode 100755 (executable)
index 0000000..a39437d
--- /dev/null
@@ -0,0 +1,1686 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
+
+timestamp='2009-04-17'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis | -knuth | -cray)
+               os=
+               basic_machine=$1
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco6)
+               os=-sco5v6
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5v6*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | am33_2.0 \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+       | bfin \
+       | c4x | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | fido | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k | iq2000 \
+       | lm32 \
+       | m32c | m32r | m32rle | m68000 | m68k | m88k \
+       | maxq | mb | microblaze | mcore | mep | metag \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64octeon | mips64octeonel \
+       | mips64orion | mips64orionel \
+       | mips64r5900 | mips64r5900el \
+       | mips64vr | mips64vrel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mips64vr5900 | mips64vr5900el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | moxie \
+       | mt \
+       | msp430 \
+       | nios | nios2 \
+       | ns16k | ns32k \
+       | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+       | pyramid \
+       | score \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+       | spu | strongarm \
+       | tahoe | thumb | tic4x | tic80 | tron \
+       | v850 | v850e \
+       | we32k \
+       | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | z8k | z80)
+               basic_machine=$basic_machine-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12)
+               # Motorola 68HC11/12.
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+       ms1)
+               basic_machine=mt-unknown
+               ;;
+
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* | avr32-* \
+       | bfin-* | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+       | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* | iq2000-* \
+       | lm32-* \
+       | m32c-* | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64octeon-* | mips64octeonel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64r5900-* | mips64r5900el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mips64vr5900-* | mips64vr5900el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipstx39-* | mipstx39el-* \
+       | mmix-* \
+       | mt-* \
+       | msp430-* \
+       | nios-* | nios2-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+       | pyramid-* \
+       | romp-* | rs6000-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+       | sparclite-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+       | tahoe-* | thumb-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+       | tron-* \
+       | v850-* | v850e-* | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+       | xstormy16-* | xtensa*-* \
+       | ymp-* \
+       | z8k-* | z80-*)
+               ;;
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       abacus)
+               basic_machine=abacus-unknown
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amd64-*)
+               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aros)
+               basic_machine=i386-pc
+               os=-aros
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       blackfin)
+               basic_machine=bfin-unknown
+               os=-linux
+               ;;
+       blackfin-*)
+               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+        cegcc)
+               basic_machine=arm-unknown
+               os=-cegcc
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       craynv)
+               basic_machine=craynv-cray
+               os=-unicosmp
+               ;;
+       cr16)
+               basic_machine=cr16-unknown
+               os=-elf
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       crisv32 | crisv32-* | etraxfs*)
+               basic_machine=crisv32-axis
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       crx)
+               basic_machine=crx-unknown
+               os=-elf
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       dicos)
+               basic_machine=i686-pc
+               os=-dicos
+               ;;
+       djgpp)
+               basic_machine=i586-pc
+               os=-msdosdjgpp
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m68knommu)
+               basic_machine=m68k-unknown
+               os=-linux
+               ;;
+       m68knommu-*)
+               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
+       mingw32ce)
+               basic_machine=arm-unknown
+               os=-mingw32ce
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       ms1-*)
+               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       openrisc | openrisc-*)
+               basic_machine=or32-unknown
+               ;;
+       os400)
+               basic_machine=powerpc-ibm
+               os=-os400
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       parisc)
+               basic_machine=hppa-unknown
+               os=-linux
+               ;;
+       parisc-*)
+               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pc98)
+               basic_machine=i386-pc
+               ;;
+       pc98-*)
+               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-ibm
+               ;;
+       ppc)    basic_machine=powerpc-unknown
+               ;;
+       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rdos)
+               basic_machine=i386-pc
+               os=-rdos
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
+               ;;
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
+               ;;
+       sde)
+               basic_machine=mipsisa32-sde
+               os=-elf
+               ;;
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sh5el)
+               basic_machine=sh5le-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       tic54x | c54x*)
+               basic_machine=tic54x-unknown
+               os=-coff
+               ;;
+       tic55x | c55x*)
+               basic_machine=tic55x-unknown
+               os=-coff
+               ;;
+       tic6x | c6x*)
+               basic_machine=tic6x-unknown
+               os=-coff
+               ;;
+       tile*)
+               basic_machine=tile-unknown
+               os=-linux-gnu
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       tpf)
+               basic_machine=s390x-ibm
+               os=-tpf
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       xbox)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       z80-*-coff)
+               basic_machine=z80-unknown
+               os=-sim
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       mmix)
+               basic_machine=mmix-knuth
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
+               ;;
+       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+       # -solaris* is a basic system type, with this one exception.
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+             | -kopensolaris* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* | -aros* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+             | -openbsd* | -solidbsd* \
+             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* | -cegcc* \
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto-qnx*)
+               ;;
+       -nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -linux-dietlibc)
+               os=-linux-dietlibc
+               ;;
+       -linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+        -os400*)
+               os=-os400
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -syllable*)
+               os=-syllable
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+        -tpf*)
+               os=-tpf
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -aros*)
+               os=-aros
+               ;;
+       -kaos*)
+               os=-kaos
+               ;;
+       -zvmoe)
+               os=-zvmoe
+               ;;
+       -dicos*)
+               os=-dicos
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+        score-*)
+               os=-elf
+               ;;
+        spu-*)
+               os=-elf
+               ;;
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+        c4x-* | tic4x-*)
+               os=-coff
+               ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+       pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               # This also exists in the configure program, but was not the
+               # default.
+               # os=-sunos4
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+        mep-*)
+               os=-elf
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-haiku)
+               os=-haiku
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-knuth)
+               os=-mmixware
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-next )
+               os=-nextstep
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+       *-gould)
+               os=-sysv
+               ;;
+       *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+       *-sgi)
+               os=-irix
+               ;;
+       *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -aix*)
+                               vendor=ibm
+                               ;;
+                       -beos*)
+                               vendor=be
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -os400*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -tpf*)
+                               vendor=ibm
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/csharpcomp.sh.in b/build-aux/csharpcomp.sh.in
new file mode 100644 (file)
index 0000000..69e7eb7
--- /dev/null
@@ -0,0 +1,158 @@
+#!/bin/sh
+# Compile a C# program.
+
+# Copyright (C) 2003-2006 Free Software Foundation, Inc.
+# Written by Bruno Haible <bruno@clisp.org>, 2003.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This uses the same choices as csharpcomp.c, but instead of relying on the
+# environment settings at run time, it uses the environment variables
+# present at configuration time.
+#
+# This is a separate shell script, because the various C# compilers have
+# different command line options.
+#
+# Usage: /bin/sh csharpcomp.sh [OPTION] SOURCE.cs ... RES.resource ...
+# Options:
+#   -o PROGRAM.exe  or  -o LIBRARY.dll
+#                     set the output assembly name
+#   -L DIRECTORY      search for C# libraries also in DIRECTORY
+#   -l LIBRARY        reference the C# library LIBRARY.dll
+#   -O                optimize
+#   -g                generate debugging information
+
+# func_tmpdir
+# creates a temporary directory.
+# Sets variable
+# - tmp             pathname of freshly created temporary directory
+func_tmpdir ()
+{
+  # Use the environment variable TMPDIR, falling back to /tmp. This allows
+  # users to specify a different temporary directory, for example, if their
+  # /tmp is filled up or too small.
+  : ${TMPDIR=/tmp}
+  {
+    # Use the mktemp program if available. If not available, hide the error
+    # message.
+    tmp=`(umask 077 && mktemp -d -q "$TMPDIR/gtXXXXXX") 2>/dev/null` &&
+    test -n "$tmp" && test -d "$tmp"
+  } ||
+  {
+    # Use a simple mkdir command. It is guaranteed to fail if the directory
+    # already exists.  $RANDOM is bash specific and expands to empty in shells
+    # other than bash, ksh and zsh.  Its use does not increase security;
+    # rather, it minimizes the probability of failure in a very cluttered /tmp
+    # directory.
+    tmp=$TMPDIR/gt$$-$RANDOM
+    (umask 077 && mkdir "$tmp")
+  } ||
+  {
+    echo "$0: cannot create a temporary directory in $TMPDIR" >&2
+    { (exit 1); exit 1; }
+  }
+}
+
+sed_quote_subst='s/\([|&;<>()$`"'"'"'*?[#~=%   \\]\)/\\\1/g'
+options_cscc=
+options_mcs=
+options_csc="-nologo"
+sources=
+while test $# != 0; do
+  case "$1" in
+    -o)
+      case "$2" in
+        *.dll)
+          options_cscc="$options_cscc -shared"
+          options_mcs="$options_mcs -target:library"
+          options_csc="$options_csc -target:library"
+          ;;
+        *.exe)
+          options_csc="$options_csc -target:exe"
+          ;;
+      esac
+      options_cscc="$options_cscc -o "`echo "$2" | sed -e "$sed_quote_subst"`
+      options_mcs="$options_mcs -out:"`echo "$2" | sed -e "$sed_quote_subst"`
+      options_csc="$options_csc -out:"`echo "$2" | sed -e "$sed_quote_subst"`
+      shift
+      ;;
+    -L)
+      options_cscc="$options_cscc -L "`echo "$2" | sed -e "$sed_quote_subst"`
+      options_mcs="$options_mcs -lib:"`echo "$2" | sed -e "$sed_quote_subst"`
+      options_csc="$options_csc -lib:"`echo "$2" | sed -e "$sed_quote_subst"`
+      shift
+      ;;
+    -l)
+      options_cscc="$options_cscc -l "`echo "$2" | sed -e "$sed_quote_subst"`
+      options_mcs="$options_mcs -reference:"`echo "$2" | sed -e "$sed_quote_subst"`
+      options_csc="$options_csc -reference:"`echo "$2" | sed -e "$sed_quote_subst"`".dll"
+      shift
+      ;;
+    -O)
+      options_cscc="$options_cscc -O"
+      options_csc="$options_csc -optimize+"
+      ;;
+    -g)
+      options_cscc="$options_cscc -g"
+      options_mcs="$options_mcs -debug"
+      options_csc="$options_csc -debug+"
+      ;;
+    -*)
+      echo "csharpcomp: unknown option '$1'" 1>&2
+      exit 1
+      ;;
+    *.resources)
+      options_cscc="$options_cscc -fresources="`echo "$1" | sed -e "$sed_quote_subst"`
+      options_mcs="$options_mcs -resource:"`echo "$1" | sed -e "$sed_quote_subst"`
+      options_csc="$options_csc -resource:"`echo "$1" | sed -e "$sed_quote_subst"`
+      ;;
+    *.cs)
+      sources="$sources "`echo "$1" | sed -e "$sed_quote_subst"`
+      ;;
+    *)
+      echo "csharpcomp: unknown type of argument '$1'" 1>&2
+      exit 1
+      ;;
+  esac
+  shift
+done
+
+if test -n "@HAVE_CSCC@"; then
+  test -z "$CSHARP_VERBOSE" || echo cscc $options_cscc $sources
+  exec cscc $options_cscc $sources
+else
+  if test -n "@HAVE_MCS@"; then
+    # mcs prints it errors and warnings to stdout, not stderr. Furthermore it
+    # adds a useless line "Compilation succeeded..." at the end. Correct both.
+    sed_drop_success_line='${
+/^Compilation succeeded/d
+}'
+    func_tmpdir
+    trap 'rm -rf "$tmp"' 1 2 3 15
+    test -z "$CSHARP_VERBOSE" || echo mcs $options_mcs $sources
+    mcs $options_mcs $sources > "$tmp"/mcs.err
+    result=$?
+    sed -e "$sed_drop_success_line" < "$tmp"/mcs.err >&2
+    rm -rf "$tmp"
+    exit $result
+  else
+    if test -n "@HAVE_CSC@"; then
+      test -z "$CSHARP_VERBOSE" || echo csc $options_csc $sources
+      exec csc $options_csc $sources
+    else
+      echo 'C# compiler not found, try installing pnet, then reconfigure' 1>&2
+      exit 1
+    fi
+  fi
+fi
diff --git a/build-aux/depcomp b/build-aux/depcomp
new file mode 100755 (executable)
index 0000000..df8eea7
--- /dev/null
@@ -0,0 +1,630 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
+# Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u="sed s,\\\\\\\\,/,g"
+   depmode=msvisualcpp
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
+    echo >> "$depfile"
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[     ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${
+              s/^ *//
+              s/ \\*$//
+              s/$/:/
+              p
+            }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::     \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/gendocs.sh b/build-aux/gendocs.sh
new file mode 100644 (file)
index 0000000..a1ed4b4
--- /dev/null
@@ -0,0 +1,361 @@
+#!/bin/sh
+# gendocs.sh -- generate a GNU manual in many formats.  This script is
+#   mentioned in maintain.texi.  See the help message below for usage details.
+
+scriptversion=2009-04-08.09
+
+# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License,
+# or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Original author: Mohit Agarwal.
+# Send bug reports and any other correspondence to bug-texinfo@gnu.org.
+
+prog=`basename "$0"`
+srcdir=`pwd`
+
+scripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh"
+templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template"
+
+: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="}
+: ${MAKEINFO="makeinfo"}
+: ${TEXI2DVI="texi2dvi -t @finalout"}
+: ${DVIPS="dvips"}
+: ${DOCBOOK2HTML="docbook2html"}
+: ${DOCBOOK2PDF="docbook2pdf"}
+: ${DOCBOOK2PS="docbook2ps"}
+: ${DOCBOOK2TXT="docbook2txt"}
+: ${GENDOCS_TEMPLATE_DIR="."}
+: ${TEXI2HTML="texi2html"}
+unset CDPATH
+unset use_texi2html
+
+version="gendocs.sh $scriptversion
+
+Copyright 2009 Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING."
+
+usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE
+
+Generate various output formats from PACKAGE.texinfo (or .texi or .txi) source.
+See the GNU Maintainers document for a more extensive discussion:
+  http://www.gnu.org/prep/maintain_toc.html
+
+Options:
+  -o OUTDIR   write files into OUTDIR, instead of manual/.
+  --email ADR use ADR as contact in generated web pages.
+  --docbook   convert to DocBook too (xml, txt, html, pdf and ps).
+  --html ARG  pass indicated ARG to makeinfo or texi2html for HTML targets.
+  --texi2html use texi2html to generate HTML targets.
+  --help      display this help and exit successfully.
+  --version   display version information and exit successfully.
+
+Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\"
+
+Typical sequence:
+  cd PACKAGESOURCE/doc
+  wget \"$scripturl\"
+  wget \"$templateurl\"
+  $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\"
+
+Output will be in a new subdirectory \"manual\" (by default, use -o OUTDIR
+to override).  Move all the new files into your web CVS tree, as
+explained in the Web Pages node of maintain.texi.
+
+Please use the --email ADDRESS option to specify your bug-reporting
+address in the generated HTML pages.
+
+MANUAL-TITLE is included as part of the HTML <title> of the overall
+manual/index.html file.  It should include the name of the package being
+documented.  manual/index.html is created by substitution from the file
+$GENDOCS_TEMPLATE_DIR/gendocs_template.  (Feel free to modify the
+generic template for your own purposes.)
+
+If you have several manuals, you'll need to run this script several
+times with different MANUAL values, specifying a different output
+directory with -o each time.  Then write (by hand) an overall index.html
+with links to them all.
+
+If a manual's Texinfo sources are spread across several directories,
+first copy or symlink all Texinfo sources into a single directory.
+(Part of the script's work is to make a tar.gz of the sources.)
+
+You can set the environment variables MAKEINFO, TEXI2DVI, and DVIPS to
+control the programs that get executed, and GENDOCS_TEMPLATE_DIR to
+control where the gendocs_template file is looked for.  (With --docbook,
+the environment variables DOCBOOK2HTML, DOCBOOK2PDF, DOCBOOK2PS, and
+DOCBOOK2TXT are also respected.)
+
+By default, makeinfo is run in the default (English) locale, since
+that's the language of most Texinfo manuals.  If you happen to have a
+non-English manual and non-English web site, see the SETLANG setting
+in the source.
+
+Email bug reports or enhancement requests to bug-texinfo@gnu.org.
+"
+
+calcsize()
+{
+  size=`ls -ksl $1 | awk '{print $1}'`
+  echo $size
+}
+
+MANUAL_TITLE=
+PACKAGE=
+EMAIL=webmasters@gnu.org  # please override with --email
+htmlarg=
+outdir=manual
+
+while test $# -gt 0; do
+  case $1 in
+    --email) shift; EMAIL=$1;;
+    --help) echo "$usage"; exit 0;;
+    --version) echo "$version"; exit 0;;
+    -o) shift; outdir=$1;;
+    --docbook) docbook=yes;;
+    --html) shift; htmlarg=$1;;
+    --texi2html) use_texi2html=1;;
+    -*)
+      echo "$0: Unknown option \`$1'." >&2
+      echo "$0: Try \`--help' for more information." >&2
+      exit 1;;
+    *)
+      if test -z "$PACKAGE"; then
+        PACKAGE=$1
+      elif test -z "$MANUAL_TITLE"; then
+        MANUAL_TITLE=$1
+      else
+        echo "$0: extra non-option argument \`$1'." >&2
+        exit 1
+      fi;;
+  esac
+  shift
+done
+
+if test -s "$srcdir/$PACKAGE.texinfo"; then
+  srcfile=$srcdir/$PACKAGE.texinfo
+elif test -s "$srcdir/$PACKAGE.texi"; then
+  srcfile=$srcdir/$PACKAGE.texi
+elif test -s "$srcdir/$PACKAGE.txi"; then
+  srcfile=$srcdir/$PACKAGE.txi
+else
+  echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2
+  exit 1
+fi
+
+if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then
+  echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2
+  echo "$0: it is available from $templateurl." >&2
+  exit 1
+fi
+
+case $outdir in
+  /*) dotdot_outdir="$outdir";;
+  *) dotdot_outdir="../$outdir";;
+esac
+
+echo Generating output formats for $srcfile
+
+cmd="$SETLANG $MAKEINFO -o $PACKAGE.info \"$srcfile\""
+echo "Generating info files... ($cmd)"
+eval "$cmd"
+mkdir -p $outdir/
+tar czf $outdir/$PACKAGE.info.tar.gz $PACKAGE.info*
+info_tgz_size=`calcsize $outdir/$PACKAGE.info.tar.gz`
+# do not mv the info files, there's no point in having them available
+# separately on the web.
+
+cmd="${TEXI2DVI} \"$srcfile\""
+echo "Generating dvi ... ($cmd)"
+eval "$cmd"
+
+# now, before we compress dvi:
+echo Generating postscript...
+${DVIPS} $PACKAGE -o
+gzip -f -9 $PACKAGE.ps
+ps_gz_size=`calcsize $PACKAGE.ps.gz`
+mv $PACKAGE.ps.gz $outdir/
+
+# compress/finish dvi:
+gzip -f -9 $PACKAGE.dvi
+dvi_gz_size=`calcsize $PACKAGE.dvi.gz`
+mv $PACKAGE.dvi.gz $outdir/
+
+cmd="${TEXI2DVI} --pdf \"$srcfile\""
+echo "Generating pdf ... ($cmd)"
+eval "$cmd"
+pdf_size=`calcsize $PACKAGE.pdf`
+mv $PACKAGE.pdf $outdir/
+
+cmd="$SETLANG $MAKEINFO -o $PACKAGE.txt --no-split --no-headers \"$srcfile\""
+echo "Generating ASCII... ($cmd)"
+eval "$cmd"
+ascii_size=`calcsize $PACKAGE.txt`
+gzip -f -9 -c $PACKAGE.txt >$outdir/$PACKAGE.txt.gz
+ascii_gz_size=`calcsize $outdir/$PACKAGE.txt.gz`
+mv $PACKAGE.txt $outdir/
+
+html_split()
+{
+  opt="--split=$1 $htmlarg --node-files"
+  cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\""
+  echo "Generating html by $1... ($cmd)"
+  eval "$cmd"
+  split_html_dir=$PACKAGE.html
+  (
+    cd ${split_html_dir} || exit 1
+    ln -sf ${PACKAGE}.html index.html
+    tar -czf $dotdot_outdir/${PACKAGE}.html_$1.tar.gz -- *.html
+  )
+  eval html_$1_tgz_size=`calcsize $outdir/${PACKAGE}.html_$1.tar.gz`
+  rm -f $outdir/html_$1/*.html
+  mkdir -p $outdir/html_$1/
+  mv ${split_html_dir}/*.html $outdir/html_$1/
+  rmdir ${split_html_dir}
+}
+
+if test -z "$use_texi2html"; then
+  opt="--no-split --html -o $PACKAGE.html $htmlarg"
+  cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
+  echo "Generating monolithic html... ($cmd)"
+  rm -rf $PACKAGE.html  # in case a directory is left over
+  eval "$cmd"
+  html_mono_size=`calcsize $PACKAGE.html`
+  gzip -f -9 -c $PACKAGE.html >$outdir/$PACKAGE.html.gz
+  html_mono_gz_size=`calcsize $outdir/$PACKAGE.html.gz`
+  mv $PACKAGE.html $outdir/
+
+  cmd="$SETLANG $MAKEINFO --html -o $PACKAGE.html $htmlarg \"$srcfile\""
+  echo "Generating html by node... ($cmd)"
+  eval "$cmd"
+  split_html_dir=$PACKAGE.html
+  (
+   cd ${split_html_dir} || exit 1
+   tar -czf $dotdot_outdir/${PACKAGE}.html_node.tar.gz -- *.html
+  )
+  html_node_tgz_size=`calcsize $outdir/${PACKAGE}.html_node.tar.gz`
+  rm -f $outdir/html_node/*.html
+  mkdir -p $outdir/html_node/
+  mv ${split_html_dir}/*.html $outdir/html_node/
+  rmdir ${split_html_dir}
+else
+  cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $htmlarg \"$srcfile\""
+  echo "Generating monolithic html... ($cmd)"
+  rm -rf $PACKAGE.html  # in case a directory is left over
+  eval "$cmd"
+  html_mono_size=`calcsize $PACKAGE.html`
+  gzip -f -9 -c $PACKAGE.html >$outdir/$PACKAGE.html.gz
+  html_mono_gz_size=`calcsize $outdir/$PACKAGE.html.gz`
+  mv $PACKAGE.html $outdir/
+
+  html_split node
+  html_split chapter
+  html_split section
+fi
+
+echo Making .tar.gz for sources...
+srcfiles=`ls *.texinfo *.texi *.txi *.eps 2>/dev/null`
+tar cvzfh $outdir/$PACKAGE.texi.tar.gz $srcfiles
+texi_tgz_size=`calcsize $outdir/$PACKAGE.texi.tar.gz`
+
+if test -n "$docbook"; then
+  cmd="$SETLANG $MAKEINFO -o - --docbook \"$srcfile\" > ${srcdir}/$PACKAGE-db.xml"
+  echo "Generating docbook XML... $(cmd)"
+  eval "$cmd"
+  docbook_xml_size=`calcsize $PACKAGE-db.xml`
+  gzip -f -9 -c $PACKAGE-db.xml >$outdir/$PACKAGE-db.xml.gz
+  docbook_xml_gz_size=`calcsize $outdir/$PACKAGE-db.xml.gz`
+  mv $PACKAGE-db.xml $outdir/
+
+  cmd="${DOCBOOK2HTML} -o $split_html_db_dir ${outdir}/$PACKAGE-db.xml"
+  echo "Generating docbook HTML... ($cmd)"
+  eval "$cmd"
+  split_html_db_dir=html_node_db
+  (
+    cd ${split_html_db_dir} || exit 1
+    tar -czf $dotdot_outdir/${PACKAGE}.html_node_db.tar.gz -- *.html
+  )
+  html_node_db_tgz_size=`calcsize $outdir/${PACKAGE}.html_node_db.tar.gz`
+  rm -f $outdir/html_node_db/*.html
+  mkdir -p $outdir/html_node_db
+  mv ${split_html_db_dir}/*.html $outdir/html_node_db/
+  rmdir ${split_html_db_dir}
+
+  cmd="${DOCBOOK2TXT} ${outdir}/$PACKAGE-db.xml"
+  echo "Generating docbook ASCII... ($cmd)"
+  eval "$cmd"
+  docbook_ascii_size=`calcsize $PACKAGE-db.txt`
+  mv $PACKAGE-db.txt $outdir/
+
+  cmd="${DOCBOOK2PS} ${outdir}/$PACKAGE-db.xml"
+  echo "Generating docbook PS... $(cmd)"
+  eval "$cmd"
+  gzip -f -9 -c $PACKAGE-db.ps >$outdir/$PACKAGE-db.ps.gz
+  docbook_ps_gz_size=`calcsize $outdir/$PACKAGE-db.ps.gz`
+  mv $PACKAGE-db.ps $outdir/
+
+  cmd="${DOCBOOK2PDF} ${outdir}/$PACKAGE-db.xml"
+  echo "Generating docbook PDF... ($cmd)"
+  eval "$cmd"
+  docbook_pdf_size=`calcsize $PACKAGE-db.pdf`
+  mv $PACKAGE-db.pdf $outdir/
+fi
+
+echo "Writing index file..."
+if test -z "$use_texi2html"; then
+   CONDS="/%%IF  *HTML_SECTION%%/,/%%ENDIF  *HTML_SECTION%%/d;\
+          /%%IF  *HTML_CHAPTER%%/,/%%ENDIF  *HTML_CHAPTER%%/d"
+else
+   CONDS="/%%ENDIF.*%%/d;/%%IF  *HTML_SECTION%%/d;/%%IF  *HTML_CHAPTER%%/d"
+fi
+curdate=`$SETLANG date '+%B %d, %Y'`
+sed \
+   -e "s!%%TITLE%%!$MANUAL_TITLE!g" \
+   -e "s!%%EMAIL%%!$EMAIL!g" \
+   -e "s!%%PACKAGE%%!$PACKAGE!g" \
+   -e "s!%%DATE%%!$curdate!g" \
+   -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \
+   -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \
+   -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \
+   -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \
+   -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \
+   -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \
+   -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \
+   -e "s!%%PDF_SIZE%%!$pdf_size!g" \
+   -e "s!%%PS_GZ_SIZE%%!$ps_gz_size!g" \
+   -e "s!%%ASCII_SIZE%%!$ascii_size!g" \
+   -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \
+   -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \
+   -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \
+   -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \
+   -e "s!%%DOCBOOK_PS_GZ_SIZE%%!$docbook_ps_gz_size!g" \
+   -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \
+   -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \
+   -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \
+   -e "s,%%SCRIPTURL%%,$scripturl,g" \
+   -e "s!%%SCRIPTNAME%%!$prog!g" \
+   -e "$CONDS" \
+$GENDOCS_TEMPLATE_DIR/gendocs_template >$outdir/index.html
+
+echo "Done, see $outdir/ subdirectory for new files."
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/gnupload b/build-aux/gnupload
new file mode 100755 (executable)
index 0000000..002cee3
--- /dev/null
@@ -0,0 +1,412 @@
+#!/bin/sh
+# Sign files and upload them.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Originally written by Alexandre Duret-Lutz <adl@gnu.org>.
+
+set -e
+
+GPG='gpg --batch --no-tty'
+conffile=.gnuploadrc
+to=
+dry_run=false
+symlink_files=
+delete_files=
+delete_symlinks=
+collect_var=
+dbg=
+
+usage="Usage: $0 [OPTIONS]... [COMMAND] FILES... [[COMMAND] FILES...]
+
+Sign all FILES, and upload them to selected destinations, according to
+<http://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html>.
+
+Commands:
+  --delete                 delete FILES from destination
+  --symlink                create symbolic links
+  --rmsymlink              remove symbolic links
+  --                       treat the remaining arguments as files to upload
+
+Options:
+  --help                   print this help text and exit
+  --to DEST                specify one destination for FILES
+                           (multiple --to options are allowed)
+  --user NAME              sign with key NAME
+  --symlink-regex[=EXPR]   use sed script EXPR to compute symbolic link names
+  --dry-run                do nothing, show what would have been done
+  --version                output version information and exit
+
+If --symlink-regex is given without EXPR, then the link target name
+is created by replacing the version information with \`-latest', e.g.:
+
+  foo-1.3.4.tar.gz -> foo-latest.tar.gz
+
+Recognized destinations are:
+  alpha.gnu.org:DIRECTORY
+  savannah.gnu.org:DIRECTORY
+  savannah.nongnu.org:DIRECTORY
+  ftp.gnu.org:DIRECTORY
+                           build directive files and upload files by FTP
+  download.gnu.org.ua:{alpha|ftp}/DIRECTORY
+                           build directive files and upload files by SFTP
+  [user@]host:DIRECTORY    upload files with scp
+
+Options and commands are applied in order.  If the file $conffile exists
+in the current working directory, its contents are prepended to the
+actual command line options.  Use this to keep your defaults.  Comments
+(#) and empty lines in $conffile are allowed.
+
+Examples:
+1. Upload automake-1.8.2b.tar.gz and automake-1.8.2b.tar.bz2 to two sites:
+  gnupload --to sources.redhat.com:~ftp/pub/automake \\
+           --to alpha.gnu.org:automake \\
+           automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
+
+2. Same as above, but also create symbolic links to automake-latest.tar.*:
+  gnupload --to sources.redhat.com:~ftp/pub/automake \\
+           --to alpha.gnu.org:automake \\
+           --symlink-regex \\
+           automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
+
+3. Symlink automake-1.8.2b.tar.gz to automake-latest.tar.gz and
+automake-1.8.2b.tar.bz2 to automake-latest.tar.bz2 on both sites:
+
+  gnupload --to sources.redhat.com:~ftp/pub/automake \\
+           --to alpha.gnu.org:automake \\
+           --symlink automake-1.8.2b.tar.gz automake-latest.tar.gz \\
+                     automake-1.8.2b.tar.bz2 automake-latest.tar.bz2
+
+4. Delete automake-1.8.2a.tar.gz and .bz2, remove symlink
+automake-latest.tar.gz and upload automake-1.8.2b.tar.gz:
+
+  gnupload --to sources.redhat.com:~ftp/pub/automake \\
+           --to alpha.gnu.org:automake \\
+           --delete automake-1.8.2a.tar.gz automake-1.8.2a.tar.bz2 \\
+           --rmsymlink automake-latest.tar.gz \\
+           -- \\
+           automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
+
+Report bugs to <bug-automake@gnu.org>.
+Send patches to <automake-patches@gnu.org>."
+
+# Read local configuration file
+if test -r "$conffile"; then
+  echo "$0: Reading configuration file $conffile"
+  eval set x "`sed 's/#.*$//;/^$/d' \"$conffile\" | tr '\012\015' '  '` \"\$@\""
+  shift
+fi
+
+while test -n "$1"; do
+  case $1 in
+  -*)
+    collect_var=
+    case $1 in
+    --help)
+      echo "$usage"
+      exit $?
+      ;;
+    --to)
+      if test -z "$2"; then
+        echo "$0: Missing argument for --to" 1>&2
+        exit 1
+      else
+        to="$to $2"
+        shift
+      fi
+      ;;
+    --user)
+      if test -z "$2"; then
+        echo "$0: Missing argument for --user" 1>&2
+        exit 1
+      else
+        GPG="$GPG --local-user $2"
+        shift
+      fi
+      ;;
+    --delete)
+      collect_var=delete_files
+      ;;
+    --rmsymlink)
+      collect_var=delete_symlinks
+      ;;
+    --symlink-regex=*)
+      symlink_expr=`expr "$1" : '[^=]*=\(.*\)'`
+      ;;
+    --symlink-regex)
+      symlink_expr='s|-[0-9][0-9\.]*\(-[0-9][0-9]*\)\{0,1\}\.|-latest.|'
+      ;;
+    --symlink)
+      collect_var=symlink_files
+      ;;
+    --dry-run|-n)
+      dry_run=:
+      ;;
+    --version)
+      echo "gnupload $scriptversion"
+      exit $?
+      ;;
+    --)
+      shift
+      break
+      ;;
+    -*)
+      echo "$0: Unknown option \`$1', try \`$0 --help'" 1>&2
+      exit 1
+      ;;
+    esac
+    ;;
+  *)
+    if test -z "$collect_var"; then
+      break
+    else
+      eval "$collect_var=\"\$$collect_var $1\""
+    fi
+    ;;
+  esac
+  shift
+done
+
+dprint()
+{
+  echo "Running $*..."
+}
+
+if $dry_run; then
+  dbg=dprint
+fi
+
+if test -z "$to"; then
+  echo "$0: Missing destination sites" >&2
+  exit 1
+fi
+
+if test -n "$symlink_files"; then
+  x=`echo "$symlink_files" | sed 's/[^ ]//g;s/  //g'`
+  if test -n "$x"; then
+    echo "$0: Odd number of symlink arguments" >&2
+    exit 1
+  fi
+fi
+
+if test $# = 0; then
+  if test -z "${symlink_files}${delete_files}${delete_symlinks}"; then
+    echo "$0: No file to upload" 1>&2
+    exit 1
+  fi
+else
+  # Make sure all files exist.  We don't want to ask
+  # for the passphrase if the script will fail.
+  for file
+  do
+    if test ! -f $file; then
+      echo "$0: Cannot find \`$file'" 1>&2
+      exit 1
+    elif test -n "$symlink_expr"; then
+      linkname=`echo $file | sed "$symlink_expr"`
+      if test -z "$linkname"; then
+        echo "$0: symlink expression produces empty results" >&2
+        exit 1
+      elif test "$linkname" = $file; then
+        echo "$0: symlink expression does not alter file name" >&2
+        exit 1
+      fi
+    fi
+  done
+fi
+
+# Make sure passphrase is not exported in the environment.
+unset passphrase
+
+# Reset PATH to be sure that echo is a built-in.  We will later use
+# `echo $passphrase' to output the passphrase, so it is important that
+# it is a built-in (third-party programs tend to appear in `ps'
+# listings with their arguments...).
+# Remember this script runs with `set -e', so if echo is not built-in
+# it will exit now.
+PATH=/empty echo -n "Enter GPG passphrase: "
+stty -echo
+read -r passphrase
+stty echo
+echo
+
+if test $# -ne 0; then
+  for file
+  do
+    echo "Signing $file..."
+    rm -f $file.sig
+    echo "$passphrase" | $dbg $GPG --passphrase-fd 0 -ba -o $file.sig $file
+  done
+fi
+
+
+# mkdirective DESTDIR BASE FILE STMT
+# Arguments: See upload, below
+mkdirective ()
+{
+  stmt="$4"
+  if test -n "$3"; then
+    stmt="
+filename: $3$stmt"
+  fi
+
+  cat >${2}.directive<<EOF
+version: 1.1
+directory: $1
+comment: gnupload v. $scriptversion$stmt
+EOF
+  if $dry_run; then
+    echo "File ${2}.directive:"
+    cat ${2}.directive
+    echo "File ${2}.directive:" | sed 's/./-/g'
+  fi
+}
+
+mksymlink ()
+{
+  while test $# -ne 0
+  do
+    echo "symlink: $1 $2"
+    shift
+    shift
+  done
+}
+
+# upload DEST DESTDIR BASE FILE STMT FILES
+# Arguments:
+#  DEST     Destination site;
+#  DESTDIR  Destination directory;
+#  BASE     Base name for the directive file;
+#  FILE     Name of the file to distribute (may be empty);
+#  STMT     Additional statements for the directive file;
+#  FILES    List of files to upload.
+upload ()
+{
+  dest=$1
+  destdir=$2
+  base=$3
+  file=$4
+  stmt=$5
+  files=$6
+
+  rm -f $base.directive $base.directive.asc
+  case $dest in
+    alpha.gnu.org:*)
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg ncftpput ftp-upload.gnu.org /incoming/alpha $files $base.directive.asc
+      ;;
+    ftp.gnu.org:*)
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg ncftpput ftp-upload.gnu.org /incoming/ftp $files $base.directive.asc
+      ;;
+    savannah.gnu.org:*)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg ncftpput savannah.gnu.org /incoming/savannah/$destdir $files
+      ;;
+    savannah.nongnu.org:*)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files
+      ;;
+    download.gnu.org.ua:alpha/*|download.gnu.org.ua:ftp/*)
+      destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'`
+      destdir_topdir=`echo "$destdir" | sed 's,/.*,,'`
+      mkdirective "$destdir_p1" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      for f in $files $base.directive.asc
+      do
+        echo put $f
+      done | $dbg sftp -b - puszcza.gnu.org.ua:/incoming/$destdir_topdir
+      ;;
+    /*)
+      dest_host=`echo "$dest" | sed 's,:.*,,'`
+      mkdirective "$destdir" "$base" "$file" "$stmt"
+      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      $dbg cp $files $base.directive.asc $dest_host
+      ;;
+    *)
+      if test -z "$files"; then
+        echo "$0: warning: standalone directives not applicable for $dest" >&2
+      fi
+      $dbg scp $files $dest
+      ;;
+  esac
+  rm -f $base.directive $base.directive.asc
+}
+
+#####
+# Process any standalone directives
+stmt=
+if test -n "$symlink_files"; then
+  stmt="$stmt
+`mksymlink $symlink_files`"
+fi
+
+for file in $delete_files
+do
+  stmt="$stmt
+archive: $file"
+done
+
+for file in $delete_symlinks
+do
+  stmt="$stmt
+rmsymlink: $file"
+done
+
+if test -n "$stmt"; then
+  for dest in $to
+  do
+    destdir=`echo $dest | sed 's/[^:]*://'`
+    upload "$dest" "$destdir" "`hostname`-$$" "" "$stmt"
+  done
+fi
+
+# Process actual uploads
+for dest in $to
+do
+  for file
+  do
+    echo "Uploading $file to $dest..."
+    stmt=
+    files="$file $file.sig"
+    destdir=`echo $dest | sed 's/[^:]*://'`
+    if test -n "$symlink_expr"; then
+      linkname=`echo $file | sed "$symlink_expr"`
+      stmt="$stmt
+symlink: $file $linkname
+symlink: $file.sig $linkname.sig"
+    fi
+    upload "$dest" "$destdir" "$file" "$file" "$stmt" "$files"
+  done
+done
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/install-sh b/build-aux/install-sh
new file mode 100755 (executable)
index 0000000..6781b98
--- /dev/null
@@ -0,0 +1,520 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2009-04-28.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""       $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+       shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+       case $mode in
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
+       shift;;
+
+    -o) chowncmd="$chownprog $2"
+       shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+       shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)        shift
+       break;;
+
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  trap '(exit $?); exit' 1 2 13 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dst_arg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+       echo "$0: $dst_arg: Is a directory" >&2
+       exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # With -d, create the new directory with the user-specified mode.
+       # Otherwise, rely on $mkdir_umask.
+       if test -n "$dir_arg"; then
+         mkdir_mode=-m$mode
+       else
+         mkdir_mode=
+       fi
+
+       posix_mkdir=false
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+           then
+             if test -z "$dir_arg" || {
+                  # Check for POSIX incompatibilities with -m.
+                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                  # other-writeable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+       /*) prefix='/';;
+       -*) prefix='./';;
+       *)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+       test -z "$d" && continue
+
+       prefix=$prefix$d
+       if test -d "$prefix"; then
+         prefixes=
+       else
+         if $posix_mkdir; then
+           (umask=$mkdir_umask &&
+            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+           # Don't fail if two instances are running concurrently.
+           test -d "$prefix" || exit 1
+         else
+           case $prefix in
+             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+             *) qprefix=$prefix;;
+           esac
+           prefixes="$prefixes '$qprefix'"
+         fi
+       fi
+       prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+       # Don't fail if two instances are running concurrently.
+       (umask $mkdir_umask &&
+        eval "\$doit_exec \$mkdirprog $prefixes") ||
+         test -d "$dstdir" || exit 1
+       obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+       # Now remove or move aside any old file at destination location.
+       # We try this two ways since rm can't unlink itself on some
+       # systems and the destination file might be busy for other
+       # reasons.  In this case, the final cleanup might fail but the new
+       # file should still install successfully.
+       {
+         test ! -f "$dst" ||
+         $doit $rmcmd -f "$dst" 2>/dev/null ||
+         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+         } ||
+         { echo "$0: cannot unlink or rename $dst" >&2
+           (exit 1); exit 1
+         }
+       } &&
+
+       # Now rename the file to the real destination.
+       $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/link-warning.h b/build-aux/link-warning.h
new file mode 100644 (file)
index 0000000..fda0194
--- /dev/null
@@ -0,0 +1,28 @@
+/* GL_LINK_WARNING("literal string") arranges to emit the literal string as
+   a linker warning on most glibc systems.
+   We use a linker warning rather than a preprocessor warning, because
+   #warning cannot be used inside macros.  */
+#ifndef GL_LINK_WARNING
+  /* This works on platforms with GNU ld and ELF object format.
+     Testing __GLIBC__ is sufficient for asserting that GNU ld is in use.
+     Testing __ELF__ guarantees the ELF object format.
+     Testing __GNUC__ is necessary for the compound expression syntax.  */
+# if defined __GLIBC__ && defined __ELF__ && defined __GNUC__
+#  define GL_LINK_WARNING(message) \
+     GL_LINK_WARNING1 (__FILE__, __LINE__, message)
+#  define GL_LINK_WARNING1(file, line, message) \
+     GL_LINK_WARNING2 (file, line, message)  /* macroexpand file and line */
+#  define GL_LINK_WARNING2(file, line, message) \
+     GL_LINK_WARNING3 (file ":" #line ": warning: " message)
+#  define GL_LINK_WARNING3(message) \
+     ({ static const char warning[sizeof (message)]            \
+          __attribute__ ((__unused__,                          \
+                          __section__ (".gnu.warning"),                \
+                          __aligned__ (1)))                    \
+          = message "\n";                                      \
+        (void)0;                                               \
+     })
+# else
+#  define GL_LINK_WARNING(message) ((void) 0)
+# endif
+#endif
diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh
new file mode 100755 (executable)
index 0000000..b36c4ad
--- /dev/null
@@ -0,0 +1,8406 @@
+# Generated from ltmain.m4sh.
+
+# ltmain.sh (GNU libtool) 2.2.6
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+#     --config             show all configuration variables
+#     --debug              enable verbose shell tracing
+# -n, --dry-run            display commands without modifying any files
+#     --features           display basic configuration information and exit
+#     --mode=MODE          use operation mode MODE
+#     --preserve-dup-deps  don't remove duplicate dependency libraries
+#     --quiet, --silent    don't print informational messages
+#     --tag=TAG            use configuration variables from tag TAG
+# -v, --verbose            print informational messages (default)
+#     --version            print version information
+# -h, --help               print short or long help message
+#
+# MODE must be one of the following:
+#
+#       clean              remove files from the build directory
+#       compile            compile a source file into a libtool object
+#       execute            automatically set library path, then run a program
+#       finish             complete the installation of libtool libraries
+#       install            install libraries or executables
+#       link               create a library or an executable
+#       uninstall          remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+#       host-triplet:  $host
+#       shell:         $SHELL
+#       compiler:              $LTCC
+#       compiler flags:                $LTCFLAGS
+#       linker:                $LD (gnu? $with_gnu_ld)
+#       $progname:             (GNU libtool) 2.2.6
+#       automake:              $automake_version
+#       autoconf:              $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=2.2.6
+TIMESTAMP=""
+package_revision=1.3012
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# NLS nuisances: We save the old values to restore during execute mode.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+          save_$lt_var=\$$lt_var
+          $lt_var=C
+         export $lt_var
+         lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+         lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+       fi"
+done
+
+$lt_unset CDPATH
+
+
+
+
+
+: ${CP="cp -f"}
+: ${ECHO="echo"}
+: ${EGREP="/usr/bin/grep -E"}
+: ${FGREP="/usr/bin/grep -F"}
+: ${GREP="/usr/bin/grep"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SED="/opt/local/bin/gsed"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77     # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS="  $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+# Generated shell functions inserted here.
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+# In the unlikely event $progname began with a '-', it would play havoc with
+# func_echo (imagine progname=-n), so we prepend ./ in that case:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+case $progname in
+  -*) progname=./$progname ;;
+esac
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=$func_dirname_result
+     progdir=`cd "$progdir" && pwd`
+     progpath="$progdir/$progname"
+     ;;
+  *)
+     save_IFS="$IFS"
+     IFS=:
+     for progdir in $PATH; do
+       IFS="$save_IFS"
+       test -x "$progdir/$progname" && break
+     done
+     IFS="$save_IFS"
+     test -n "$progdir" || progdir=`pwd`
+     progpath="$progdir/$progname"
+     ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+    $ECHO "$progname${mode+: }$mode: $*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $opt_verbose && func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+
+    # bash bug again:
+    :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    func_error ${1+"$@"}
+    func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information."  ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    my_directory_path="$1"
+    my_dir_list=
+
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+      # Protect directory names starting with `-'
+      case $my_directory_path in
+        -*) my_directory_path="./$my_directory_path" ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$my_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+       # list incase some portion of path contains whitespace.
+        my_dir_list="$my_directory_path:$my_dir_list"
+
+        # If the last portion added has no slash in it, the list is done
+        case $my_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
+      done
+      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
+
+      save_mkdir_p_IFS="$IFS"; IFS=':'
+      for my_dir in $my_dir_list; do
+       IFS="$save_mkdir_p_IFS"
+        # mkdir can fail with a `File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$my_dir" 2>/dev/null || :
+      done
+      IFS="$save_mkdir_p_IFS"
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$my_directory_path" || \
+        func_fatal_error "Failed to create \`$1'"
+    fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$opt_dry_run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+        save_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$my_tmpdir"
+        umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+    fi
+
+    $ECHO "X$my_tmpdir" | $Xsed
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+    case $1 in
+      *[\\\`\"\$]*)
+       func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
+      *)
+        func_quote_for_eval_unquoted_result="$1" ;;
+    esac
+
+    case $func_quote_for_eval_unquoted_result in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and and variable
+      # expansion for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+        ;;
+      *)
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+    esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    case $1 in
+      *[\\\`\"]*)
+       my_arg=`$ECHO "X$1" | $Xsed \
+           -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        my_arg="$1" ;;
+    esac
+
+    case $my_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        my_arg="\"$my_arg\""
+        ;;
+    esac
+
+    func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$my_cmd"
+      my_status=$?
+      if test "$my_status" -eq 0; then :; else
+       eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+           $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+       eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
+        s/^# //
+       s/^# *$//
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+        p
+     }' < "$progpath"
+     exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $SED -n '/^# Usage:/,/# -h/ {
+        s/^# //
+       s/^# *$//
+       s/\$progname/'$progname'/
+       p
+    }' < "$progpath"
+    $ECHO
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
+}
+
+# func_help
+# Echo long help message to standard output and exit.
+func_help ()
+{
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+        s/^# //
+       s/^# *$//
+       s*\$progname*'$progname'*
+       s*\$host*'"$host"'*
+       s*\$SHELL*'"$SHELL"'*
+       s*\$LTCC*'"$LTCC"'*
+       s*\$LTCFLAGS*'"$LTCFLAGS"'*
+       s*\$LD*'"$LD"'*
+       s/\$with_gnu_ld/'"$with_gnu_ld"'/
+       s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+       s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+       p
+     }' < "$progpath"
+    exit $?
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    func_error "missing argument for $1"
+    exit_cmd=exit
+}
+
+exit_cmd=:
+
+
+
+
+
+# Check that we have a working $ECHO.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
+  # Yippee, $ECHO works!
+  :
+else
+  # Restart under the correct shell, and then maybe $ECHO will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+# $mode is unset
+nonopt=
+execute_dlfiles=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+opt_dry_run=false
+opt_duplicate_deps=false
+opt_silent=false
+opt_debug=:
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+    re_begincf='^# ### BEGIN LIBTOOL'
+    re_endcf='^# ### END LIBTOOL'
+
+    # Default configuration.
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+    done
+
+    exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+    $ECHO "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $ECHO "enable shared libraries"
+    else
+      $ECHO "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $ECHO "enable static libraries"
+    else
+      $ECHO "disable static libraries"
+    fi
+
+    exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+  # Global variable:
+  tagname="$1"
+
+  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+  sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+  # Validate tagname.
+  case $tagname in
+    *[!-_A-Za-z0-9,/]*)
+      func_fatal_error "invalid tag name: $tagname"
+      ;;
+  esac
+
+  # Don't test for the "default" C tag, as we know it's
+  # there but not specially marked.
+  case $tagname in
+    CC) ;;
+    *)
+      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+       taglist="$taglist $tagname"
+
+       # Evaluate the configuration.  Be careful to quote the path
+       # and the sed script, to avoid splitting on whitespace, but
+       # also don't use non-portable quotes within backquotes within
+       # quotes we have to do it in 2 steps:
+       extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+       eval "$extractedcf"
+      else
+       func_error "ignoring unknown tag $tagname"
+      fi
+      ;;
+  esac
+}
+
+# Parse options once, thoroughly.  This comes as soon as possible in
+# the script to make things like `libtool --version' happen quickly.
+{
+
+  # Shorthand for --mode=foo, only valid as the first argument
+  case $1 in
+  clean|clea|cle|cl)
+    shift; set dummy --mode clean ${1+"$@"}; shift
+    ;;
+  compile|compil|compi|comp|com|co|c)
+    shift; set dummy --mode compile ${1+"$@"}; shift
+    ;;
+  execute|execut|execu|exec|exe|ex|e)
+    shift; set dummy --mode execute ${1+"$@"}; shift
+    ;;
+  finish|finis|fini|fin|fi|f)
+    shift; set dummy --mode finish ${1+"$@"}; shift
+    ;;
+  install|instal|insta|inst|ins|in|i)
+    shift; set dummy --mode install ${1+"$@"}; shift
+    ;;
+  link|lin|li|l)
+    shift; set dummy --mode link ${1+"$@"}; shift
+    ;;
+  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+    shift; set dummy --mode uninstall ${1+"$@"}; shift
+    ;;
+  esac
+
+  # Parse non-mode specific arguments:
+  while test "$#" -gt 0; do
+    opt="$1"
+    shift
+
+    case $opt in
+      --config)                func_config                                     ;;
+
+      --debug)         preserve_args="$preserve_args $opt"
+                       func_echo "enabling shell trace mode"
+                       opt_debug='set -x'
+                       $opt_debug
+                       ;;
+
+      -dlopen)         test "$#" -eq 0 && func_missing_arg "$opt" && break
+                       execute_dlfiles="$execute_dlfiles $1"
+                       shift
+                       ;;
+
+      --dry-run | -n)  opt_dry_run=:                                   ;;
+      --features)       func_features                                  ;;
+      --finish)                mode="finish"                                   ;;
+
+      --mode)          test "$#" -eq 0 && func_missing_arg "$opt" && break
+                       case $1 in
+                         # Valid mode arguments:
+                         clean)        ;;
+                         compile)      ;;
+                         execute)      ;;
+                         finish)       ;;
+                         install)      ;;
+                         link)         ;;
+                         relink)       ;;
+                         uninstall)    ;;
+
+                         # Catch anything else as an error
+                         *) func_error "invalid argument for $opt"
+                            exit_cmd=exit
+                            break
+                            ;;
+                       esac
+
+                       mode="$1"
+                       shift
+                       ;;
+
+      --preserve-dup-deps)
+                       opt_duplicate_deps=:                            ;;
+
+      --quiet|--silent)        preserve_args="$preserve_args $opt"
+                       opt_silent=:
+                       ;;
+
+      --verbose| -v)   preserve_args="$preserve_args $opt"
+                       opt_silent=false
+                       ;;
+
+      --tag)           test "$#" -eq 0 && func_missing_arg "$opt" && break
+                       preserve_args="$preserve_args $opt $1"
+                       func_enable_tag "$1"    # tagname is set here
+                       shift
+                       ;;
+
+      # Separate optargs to long options:
+      -dlopen=*|--mode=*|--tag=*)
+                       func_opt_split "$opt"
+                       set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
+                       shift
+                       ;;
+
+      -\?|-h)          func_usage                                      ;;
+      --help)          opt_help=:                                      ;;
+      --version)       func_version                                    ;;
+
+      -*)              func_fatal_help "unrecognized option \`$opt'"   ;;
+
+      *)               nonopt="$opt"
+                       break
+                       ;;
+    esac
+  done
+
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # don't eliminate duplications in $postdeps and $predeps
+      opt_duplicate_compiler_generated_deps=:
+      ;;
+    *)
+      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
+      ;;
+  esac
+
+  # Having warned about all mis-specified options, bail out if
+  # anything was wrong.
+  $exit_cmd $EXIT_FAILURE
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+  if test "$package_revision" != "$macro_revision"; then
+    if test "$VERSION" != "$macro_version"; then
+      if test -z "$macro_version"; then
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      fi
+    else
+      cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+    fi
+
+    exit $EXIT_MISMATCH
+  fi
+}
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+$opt_help || {
+  # Sanity checks first:
+  func_check_version_match
+
+  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+    func_fatal_configuration "not configured to build any kind of library"
+  fi
+
+  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
+
+
+  # Darwin sucks
+  eval std_shrext=\"$shrext_cmds\"
+
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    func_error "unrecognized option \`-dlopen'"
+    $ECHO "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$progname --help --mode=$mode' for more information."
+}
+
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs.  To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway.  Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+    lalib_p=no
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+       for lalib_p_l in 1 2 3 4
+       do
+           read lalib_p_line
+           case "$lalib_p_line" in
+               \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+           esac
+       done
+       exec 0<&5 5<&-
+    fi
+    test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_ltwrapper_scriptname_result=""
+    if func_ltwrapper_executable_p "$1"; then
+       func_dirname_and_basename "$1" "" "."
+       func_stripname '' '.exe' "$func_basename_result"
+       func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+    fi
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+    $opt_debug
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$save_ifs
+      eval cmd=\"$cmd\"
+      func_show_eval "$cmd" "${2-:}"
+    done
+    IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+    $opt_debug
+    case $1 in
+    */* | *\\*)        . "$1" ;;
+    *)         . "./$1" ;;
+    esac
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    $opt_debug
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+        func_quote_for_eval "$arg"
+       CC_quoted="$CC_quoted $func_quote_for_eval_result"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+       for z in $available_tags; do
+         if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+           # Evaluate the configuration.
+           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+           CC_quoted=
+           for arg in $CC; do
+             # Double-quote args containing other shell metacharacters.
+             func_quote_for_eval "$arg"
+             CC_quoted="$CC_quoted $func_quote_for_eval_result"
+           done
+           case "$@ " in
+             " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
+             # The compiler in the base compile command matches
+             # the one in the tagged configuration.
+             # Assume this is the tagged configuration we want.
+             tagname=$z
+             break
+             ;;
+           esac
+         fi
+       done
+       # If $tagname still isn't set, then no tagged configuration
+       # was found and let the user know that the "--tag" command
+       # line option must be used.
+       if test -z "$tagname"; then
+         func_echo "unable to infer tagged configuration"
+         func_fatal_error "specify a tag with \`--tag'"
+#      else
+#        func_verbose "using $tagname tagged configuration"
+       fi
+       ;;
+      esac
+    fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+    write_libobj=${1}
+    if test "$build_libtool_libs" = yes; then
+      write_lobj=\'${2}\'
+    else
+      write_lobj=none
+    fi
+
+    if test "$build_old_libs" = yes; then
+      write_oldobj=\'${3}\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "${write_libobj}"
+    }
+}
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+    $opt_debug
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+    pie_flag=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+       # do not "continue".  Instead, add this to base_compile
+       lastarg="$arg"
+       arg_mode=normal
+       ;;
+
+      target )
+       libobj="$arg"
+       arg_mode=normal
+       continue
+       ;;
+
+      normal )
+       # Accept any command-line options.
+       case $arg in
+       -o)
+         test -n "$libobj" && \
+           func_fatal_error "you cannot specify \`-o' more than once"
+         arg_mode=target
+         continue
+         ;;
+
+       -pie | -fpie | -fPIE)
+          pie_flag="$pie_flag $arg"
+         continue
+         ;;
+
+       -shared | -static | -prefer-pic | -prefer-non-pic)
+         later="$later $arg"
+         continue
+         ;;
+
+       -no-suppress)
+         suppress_opt=no
+         continue
+         ;;
+
+       -Xcompiler)
+         arg_mode=arg  #  the next one goes into the "base_compile" arg list
+         continue      #  The current "srcfile" will either be retained or
+         ;;            #  replaced later.  I would guess that would be a bug.
+
+       -Wc,*)
+         func_stripname '-Wc,' '' "$arg"
+         args=$func_stripname_result
+         lastarg=
+         save_ifs="$IFS"; IFS=','
+         for arg in $args; do
+           IFS="$save_ifs"
+           func_quote_for_eval "$arg"
+           lastarg="$lastarg $func_quote_for_eval_result"
+         done
+         IFS="$save_ifs"
+         func_stripname ' ' '' "$lastarg"
+         lastarg=$func_stripname_result
+
+         # Add the arguments to base_compile.
+         base_compile="$base_compile $lastarg"
+         continue
+         ;;
+
+       *)
+         # Accept the current argument as the source file.
+         # The previous "srcfile" becomes the current argument.
+         #
+         lastarg="$srcfile"
+         srcfile="$arg"
+         ;;
+       esac  #  case $arg
+       ;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      func_quote_for_eval "$lastarg"
+      base_compile="$base_compile $func_quote_for_eval_result"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      func_fatal_error "you must specify an argument for -Xcompile"
+      ;;
+    target)
+      func_fatal_error "you must specify a target with \`-o'"
+      ;;
+    *)
+      # Get the name of the library object.
+      test -z "$libobj" && {
+       func_basename "$srcfile"
+       libobj="$func_basename_result"
+      }
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    case $libobj in
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
+    esac
+
+    case $libobj in
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+    *)
+      func_fatal_error "cannot determine name of library object from \`$libobj'"
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -shared)
+       test "$build_libtool_libs" != yes && \
+         func_fatal_configuration "can not build a shared library"
+       build_old_libs=no
+       continue
+       ;;
+
+      -static)
+       build_libtool_libs=no
+       build_old_libs=yes
+       continue
+       ;;
+
+      -prefer-pic)
+       pic_mode=yes
+       continue
+       ;;
+
+      -prefer-non-pic)
+       pic_mode=no
+       continue
+       ;;
+      esac
+    done
+
+    func_quote_for_eval "$libobj"
+    test "X$libobj" != "X$func_quote_for_eval_result" \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'   &()|`$[]' \
+      && func_warning "libobj name \`$libobj' may not contain shell special characters."
+    func_dirname_and_basename "$obj" "/" ""
+    objname="$func_basename_result"
+    xdir="$func_dirname_result"
+    lobj=${xdir}$objdir/$objname
+
+    test -z "$base_compile" && \
+      func_fatal_help "you must specify a compilation command"
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+       func_echo "Waiting for $lockfile to be removed"
+       sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+       $ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $opt_dry_run || $RM $removelist
+       exit $EXIT_FAILURE
+      fi
+      removelist="$removelist $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
+    fi
+
+    $opt_dry_run || $RM $removelist
+    removelist="$removelist $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    func_quote_for_eval "$srcfile"
+    qsrcfile=$func_quote_for_eval_result
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+       command="$base_compile $qsrcfile $pic_flag"
+      else
+       # Don't build PIC code
+       command="$base_compile $qsrcfile"
+      fi
+
+      func_mkdir_p "$xdir$objdir"
+
+      if test -z "$output_obj"; then
+       # Place PIC objects in $objdir
+       command="$command -o $lobj"
+      fi
+
+      func_show_eval_locale "$command" \
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $opt_dry_run || $RM $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+       func_show_eval '$MV "$output_obj" "$lobj"' \
+         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+       suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+       # Don't build PIC code
+       command="$base_compile $qsrcfile$pie_flag"
+      else
+       command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+       command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      func_show_eval_locale "$command" \
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $opt_dry_run || $RM $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+       func_show_eval '$MV "$output_obj" "$obj"' \
+         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+    fi
+
+    $opt_dry_run || {
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+      # Unlock the critical section if it was locked
+      if test "$need_locks" != no; then
+       removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+test "$mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
+
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -shared           do not build a \`.o' file suitable for static linking
+  -static           only build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+        ;;
+
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode \`$mode'"
+        ;;
+    esac
+
+    $ECHO
+    $ECHO "Try \`$progname --help' for more information about other modes."
+
+    exit $?
+}
+
+  # Now that we've collected a possible --mode arg, show help if necessary
+  $opt_help && func_mode_help
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $opt_debug
+    # The first argument is the command name.
+    cmd="$nonopt"
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      test -f "$file" \
+       || func_fatal_help "\`$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$file" \
+         || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+       # Read the libtool library.
+       dlname=
+       library_names=
+       func_source "$file"
+
+       # Skip this library if it cannot be dlopened.
+       if test -z "$dlname"; then
+         # Warn if it was a shared library.
+         test -n "$library_names" && \
+           func_warning "\`$file' was not linked with \`-export-dynamic'"
+         continue
+       fi
+
+       func_dirname "$file" "" "."
+       dir="$func_dirname_result"
+
+       if test -f "$dir/$objdir/$dlname"; then
+         dir="$dir/$objdir"
+       else
+         if test ! -f "$dir/$dlname"; then
+           func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+         fi
+       fi
+       ;;
+
+      *.lo)
+       # Just add the directory containing the .lo file.
+       func_dirname "$file" "" "."
+       dir="$func_dirname_result"
+       ;;
+
+      *)
+       func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+       continue
+       ;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+       eval "$shlibpath_var=\"\$dir\""
+      else
+       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+       # Do a test to see if this is really a libtool program.
+       if func_ltwrapper_script_p "$file"; then
+         func_source "$file"
+         # Transform arg to wrapped name.
+         file="$progdir/$program"
+       elif func_ltwrapper_executable_p "$file"; then
+         func_ltwrapper_scriptname "$file"
+         func_source "$func_ltwrapper_scriptname_result"
+         # Transform arg to wrapped name.
+         file="$progdir/$program"
+       fi
+       ;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      func_quote_for_eval "$file"
+      args="$args $func_quote_for_eval_result"
+    done
+
+    if test "X$opt_dry_run" = Xfalse; then
+      if test -n "$shlibpath_var"; then
+       # Export the shlibpath_var.
+       eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+       eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+             else
+               $lt_unset $lt_var
+             fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+       eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+       $ECHO "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $opt_debug
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+       libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+       if test -n "$finish_cmds"; then
+         # Do each command in the finish commands.
+         func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+       fi
+       if test -n "$finish_eval"; then
+         # Do the single finish_eval.
+         eval cmds=\"$finish_eval\"
+         $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+       $cmds"
+       fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_silent && exit $EXIT_SUCCESS
+
+    $ECHO "X----------------------------------------------------------------------" | $Xsed
+    $ECHO "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $ECHO "   $libdir"
+    done
+    $ECHO
+    $ECHO "If you ever happen to want to link against installed libraries"
+    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
+    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $ECHO "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $ECHO "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $ECHO "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $ECHO "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $ECHO "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $ECHO
+
+    $ECHO "See any operating system documentation about shared libraries for"
+    case $host in
+      solaris2.[6789]|solaris2.1[0-9])
+        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+       $ECHO "pages."
+       ;;
+      *)
+        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
+        ;;
+    esac
+    $ECHO "X----------------------------------------------------------------------" | $Xsed
+    exit $EXIT_SUCCESS
+}
+
+test "$mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $opt_debug
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
+      # Aesthetically quote it.
+      func_quote_for_eval "$nonopt"
+      install_prog="$func_quote_for_eval_result "
+      arg=$1
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    func_quote_for_eval "$arg"
+    install_prog="$install_prog$func_quote_for_eval_result"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+       files="$files $dest"
+       dest=$arg
+       continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f)
+       case " $install_prog " in
+       *[\\\ /]cp\ *) ;;
+       *) prev=$arg ;;
+       esac
+       ;;
+      -g | -m | -o)
+       prev=$arg
+       ;;
+      -s)
+       stripme=" -s"
+       continue
+       ;;
+      -*)
+       ;;
+      *)
+       # If the previous option needed an argument, then skip it.
+       if test -n "$prev"; then
+         prev=
+       else
+         dest=$arg
+         continue
+       fi
+       ;;
+      esac
+
+      # Aesthetically quote the argument.
+      func_quote_for_eval "$arg"
+      install_prog="$install_prog $func_quote_for_eval_result"
+    done
+
+    test -z "$install_prog" && \
+      func_fatal_help "you must specify an install program"
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prev' option requires an argument"
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+       func_fatal_help "no file or destination specified"
+      else
+       func_fatal_help "you must specify a destination"
+      fi
+    fi
+
+    # Strip any trailing slash from the destination.
+    func_stripname '' '/' "$dest"
+    dest=$func_stripname_result
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      func_dirname_and_basename "$dest" "" "."
+      destdir="$func_dirname_result"
+      destname="$func_basename_result"
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files; shift
+      test "$#" -gt 1 && \
+       func_fatal_help "\`$dest' is not a directory"
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+       case $file in
+       *.lo) ;;
+       *)
+         func_fatal_help "\`$destdir' must be an absolute directory name"
+         ;;
+       esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+       # Do the static libraries later.
+       staticlibs="$staticlibs $file"
+       ;;
+
+      *.la)
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$file" \
+         || func_fatal_help "\`$file' is not a valid libtool archive"
+
+       library_names=
+       old_library=
+       relink_command=
+       func_source "$file"
+
+       # Add the libdir to current_libdirs if it is the destination.
+       if test "X$destdir" = "X$libdir"; then
+         case "$current_libdirs " in
+         *" $libdir "*) ;;
+         *) current_libdirs="$current_libdirs $libdir" ;;
+         esac
+       else
+         # Note the libdir as a future libdir.
+         case "$future_libdirs " in
+         *" $libdir "*) ;;
+         *) future_libdirs="$future_libdirs $libdir" ;;
+         esac
+       fi
+
+       func_dirname "$file" "/" ""
+       dir="$func_dirname_result"
+       dir="$dir$objdir"
+
+       if test -n "$relink_command"; then
+         # Determine the prefix the user has applied to our future dir.
+         inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
+
+         # Don't allow the user to place us outside of our expected
+         # location b/c this prevents finding dependent libraries that
+         # are installed to the same prefix.
+         # At present, this check doesn't affect windows .dll's that
+         # are installed into $libdir/../bin (currently, that works fine)
+         # but it's something to keep an eye on.
+         test "$inst_prefix_dir" = "$destdir" && \
+           func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+         if test -n "$inst_prefix_dir"; then
+           # Stick the inst_prefix_dir data into the link command.
+           relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+         else
+           relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
+         fi
+
+         func_warning "relinking \`$file'"
+         func_show_eval "$relink_command" \
+           'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+       fi
+
+       # See the names of the shared library.
+       set dummy $library_names; shift
+       if test -n "$1"; then
+         realname="$1"
+         shift
+
+         srcname="$realname"
+         test -n "$relink_command" && srcname="$realname"T
+
+         # Install the shared library and build the symlinks.
+         func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
+             'exit $?'
+         tstripme="$stripme"
+         case $host_os in
+         cygwin* | mingw* | pw32* | cegcc*)
+           case $realname in
+           *.dll.a)
+             tstripme=""
+             ;;
+           esac
+           ;;
+         esac
+         if test -n "$tstripme" && test -n "$striplib"; then
+           func_show_eval "$striplib $destdir/$realname" 'exit $?'
+         fi
+
+         if test "$#" -gt 0; then
+           # Delete the old symlinks, and create new ones.
+           # Try `ln -sf' first, because the `ln' binary might depend on
+           # the symlink we replace!  Solaris /bin/ln does not understand -f,
+           # so we also need to try rm && ln -s.
+           for linkname
+           do
+             test "$linkname" != "$realname" \
+               && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+           done
+         fi
+
+         # Do each command in the postinstall commands.
+         lib="$destdir/$realname"
+         func_execute_cmds "$postinstall_cmds" 'exit $?'
+       fi
+
+       # Install the pseudo-library for information purposes.
+       func_basename "$file"
+       name="$func_basename_result"
+       instname="$dir/$name"i
+       func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+       # Maybe install the static library, too.
+       test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+       ;;
+
+      *.lo)
+       # Install (i.e. copy) a libtool object.
+
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         func_basename "$file"
+         destfile="$func_basename_result"
+         destfile="$destdir/$destfile"
+       fi
+
+       # Deduce the name of the destination old-style object file.
+       case $destfile in
+       *.lo)
+         func_lo2o "$destfile"
+         staticdest=$func_lo2o_result
+         ;;
+       *.$objext)
+         staticdest="$destfile"
+         destfile=
+         ;;
+       *)
+         func_fatal_help "cannot copy a libtool object to \`$destfile'"
+         ;;
+       esac
+
+       # Install the libtool object if requested.
+       test -n "$destfile" && \
+         func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+       # Install the old object if enabled.
+       if test "$build_old_libs" = yes; then
+         # Deduce the name of the old-style object file.
+         func_lo2o "$file"
+         staticobj=$func_lo2o_result
+         func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+       fi
+       exit $EXIT_SUCCESS
+       ;;
+
+      *)
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         func_basename "$file"
+         destfile="$func_basename_result"
+         destfile="$destdir/$destfile"
+       fi
+
+       # If the file is missing, and there is a .exe on the end, strip it
+       # because it is most likely a libtool script we actually want to
+       # install
+       stripped_ext=""
+       case $file in
+         *.exe)
+           if test ! -f "$file"; then
+             func_stripname '' '.exe' "$file"
+             file=$func_stripname_result
+             stripped_ext=".exe"
+           fi
+           ;;
+       esac
+
+       # Do a test to see if this is really a libtool program.
+       case $host in
+       *cygwin* | *mingw*)
+           if func_ltwrapper_executable_p "$file"; then
+             func_ltwrapper_scriptname "$file"
+             wrapper=$func_ltwrapper_scriptname_result
+           else
+             func_stripname '' '.exe' "$file"
+             wrapper=$func_stripname_result
+           fi
+           ;;
+       *)
+           wrapper=$file
+           ;;
+       esac
+       if func_ltwrapper_script_p "$wrapper"; then
+         notinst_deplibs=
+         relink_command=
+
+         func_source "$wrapper"
+
+         # Check the variables that should have been set.
+         test -z "$generated_by_libtool_version" && \
+           func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+         finalize=yes
+         for lib in $notinst_deplibs; do
+           # Check to see that each library is installed.
+           libdir=
+           if test -f "$lib"; then
+             func_source "$lib"
+           fi
+           libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+           if test -n "$libdir" && test ! -f "$libfile"; then
+             func_warning "\`$lib' has not been installed in \`$libdir'"
+             finalize=no
+           fi
+         done
+
+         relink_command=
+         func_source "$wrapper"
+
+         outputname=
+         if test "$fast_install" = no && test -n "$relink_command"; then
+           $opt_dry_run || {
+             if test "$finalize" = yes; then
+               tmpdir=`func_mktempdir`
+               func_basename "$file$stripped_ext"
+               file="$func_basename_result"
+               outputname="$tmpdir/$file"
+               # Replace the output file specification.
+               relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+               $opt_silent || {
+                 func_quote_for_expand "$relink_command"
+                 eval "func_echo $func_quote_for_expand_result"
+               }
+               if eval "$relink_command"; then :
+                 else
+                 func_error "error: relink \`$file' with the above command before installing it"
+                 $opt_dry_run || ${RM}r "$tmpdir"
+                 continue
+               fi
+               file="$outputname"
+             else
+               func_warning "cannot relink \`$file'"
+             fi
+           }
+         else
+           # Install the binary that we compiled earlier.
+           file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+         fi
+       fi
+
+       # remove .exe since cygwin /usr/bin/install will append another
+       # one anyway
+       case $install_prog,$host in
+       */usr/bin/install*,*cygwin*)
+         case $file:$destfile in
+         *.exe:*.exe)
+           # this is ok
+           ;;
+         *.exe:*)
+           destfile=$destfile.exe
+           ;;
+         *:*.exe)
+           func_stripname '' '.exe' "$destfile"
+           destfile=$func_stripname_result
+           ;;
+         esac
+         ;;
+       esac
+       func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+       $opt_dry_run || if test -n "$outputname"; then
+         ${RM}r "$tmpdir"
+       fi
+       ;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      func_basename "$file"
+      name="$func_basename_result"
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+       func_show_eval "$old_striplib $oldlib" 'exit $?'
+      fi
+
+      # Do each command in the postinstall commands.
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+    done
+
+    test -n "$future_libdirs" && \
+      func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+    $opt_debug
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+       my_dlsyms="${my_outputname}S.c"
+      else
+       func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
+
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+       # Discover the nlist of each of the dlfiles.
+       nlist="$output_objdir/${my_outputname}.nm"
+
+       func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+       # Parse the name list into a source file.
+       func_verbose "creating $output_objdir/$my_dlsyms"
+
+       $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+       if test "$dlself" = yes; then
+         func_verbose "generating symbol list for \`$output'"
+
+         $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+         # Add our own program objects to the symbol list.
+         progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+         for progfile in $progfiles; do
+           func_verbose "extracting global C symbols from \`$progfile'"
+           $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+         done
+
+         if test -n "$exclude_expsyms"; then
+           $opt_dry_run || {
+             eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+           }
+         fi
+
+         if test -n "$export_symbols_regex"; then
+           $opt_dry_run || {
+             eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+           }
+         fi
+
+         # Prepare the list of exported symbols
+         if test -z "$export_symbols"; then
+           export_symbols="$output_objdir/$outputname.exp"
+           $opt_dry_run || {
+             $RM $export_symbols
+             eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+             case $host in
+             *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+               ;;
+             esac
+           }
+         else
+           $opt_dry_run || {
+             eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+             eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+             case $host in
+               *cygwin | *mingw* | *cegcc* )
+                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+                 ;;
+             esac
+           }
+         fi
+       fi
+
+       for dlprefile in $dlprefiles; do
+         func_verbose "extracting global C symbols from \`$dlprefile'"
+         func_basename "$dlprefile"
+         name="$func_basename_result"
+         $opt_dry_run || {
+           eval '$ECHO ": $name " >> "$nlist"'
+           eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+         }
+       done
+
+       $opt_dry_run || {
+         # Make sure we have at least an empty file.
+         test -f "$nlist" || : > "$nlist"
+
+         if test -n "$exclude_expsyms"; then
+           $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+           $MV "$nlist"T "$nlist"
+         fi
+
+         # Try sorting and uniquifying the output.
+         if $GREP -v "^: " < "$nlist" |
+             if sort -k 3 </dev/null >/dev/null 2>&1; then
+               sort -k 3
+             else
+               sort +2
+             fi |
+             uniq > "$nlist"S; then
+           :
+         else
+           $GREP -v "^: " < "$nlist" > "$nlist"S
+         fi
+
+         if test -f "$nlist"S; then
+           eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+         else
+           $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
+         fi
+
+         $ECHO >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+"
+         case $host in
+         *cygwin* | *mingw* | *cegcc* )
+           $ECHO >> "$output_objdir/$my_dlsyms" "\
+/* DATA imports from DLLs on WIN32 con't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs.  */"
+           lt_dlsym_const= ;;
+         *osf5*)
+           echo >> "$output_objdir/$my_dlsyms" "\
+/* This system does not cope well with relocations in const data */"
+           lt_dlsym_const= ;;
+         *)
+           lt_dlsym_const=const ;;
+         esac
+
+         $ECHO >> "$output_objdir/$my_dlsyms" "\
+extern $lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+$lt_dlsym_const lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+  { \"$my_originator\", (void *) 0 },"
+
+         case $need_lib_prefix in
+         no)
+           eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+           ;;
+         *)
+           eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+           ;;
+         esac
+         $ECHO >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+       } # !$opt_dry_run
+
+       pic_flag_for_symtable=
+       case "$compile_command " in
+       *" -static "*) ;;
+       *)
+         case $host in
+         # compiling the symbol table file with pic_flag works around
+         # a FreeBSD bug that causes programs to crash when -lm is
+         # linked before any other PIC object.  But we must not use
+         # pic_flag when linking with -static.  The problem exists in
+         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+         *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+           pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+         *-*-hpux*)
+           pic_flag_for_symtable=" $pic_flag"  ;;
+         *)
+           if test "X$my_pic_p" != Xno; then
+             pic_flag_for_symtable=" $pic_flag"
+           fi
+           ;;
+         esac
+         ;;
+       esac
+       symtab_cflags=
+       for arg in $LTCFLAGS; do
+         case $arg in
+         -pie | -fpie | -fPIE) ;;
+         *) symtab_cflags="$symtab_cflags $arg" ;;
+         esac
+       done
+
+       # Now compile the dynamic symbol file.
+       func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+       # Clean up the generated files.
+       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+       # Transform the symbol file into the correct name.
+       symfileobj="$output_objdir/${my_outputname}S.$objext"
+       case $host in
+       *cygwin* | *mingw* | *cegcc* )
+         if test -f "$output_objdir/$my_outputname.def"; then
+           compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+           finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+         else
+           compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+           finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+         fi
+         ;;
+       *)
+         compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+         finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
+         ;;
+       esac
+       ;;
+      *)
+       func_fatal_error "unknown suffix for \`$my_dlsyms'"
+       ;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
+
+      # Nullify the symbol file.
+      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+    fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+  $opt_debug
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 |
+       $SED -n -e '
+           1,100{
+               / I /{
+                   s,.*,import,
+                   p
+                   q
+               }
+           }'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
+
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $opt_debug
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+       [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+       *) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib="$func_basename_result"
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+       *" $my_xlib_u "*)
+         func_arith $extracted_serial + 1
+         extracted_serial=$func_arith_result
+         my_xlib_u=lt$extracted_serial-$my_xlib ;;
+       *) break ;;
+       esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
+
+      func_mkdir_p "$my_xdir"
+
+      case $host in
+      *-darwin*)
+       func_verbose "Extracting $my_xabs"
+       # Do not bother doing anything if just a dry run
+       $opt_dry_run || {
+         darwin_orig_dir=`pwd`
+         cd $my_xdir || exit $?
+         darwin_archive=$my_xabs
+         darwin_curdir=`pwd`
+         darwin_base_archive=`basename "$darwin_archive"`
+         darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+         if test -n "$darwin_arches"; then
+           darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+           darwin_arch=
+           func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+           for darwin_arch in  $darwin_arches ; do
+             func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+             cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+             cd "$darwin_curdir"
+             $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+           done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+           darwin_file=
+           darwin_files=
+           for darwin_file in $darwin_filelist; do
+             darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+             $LIPO -create -output "$darwin_file" $darwin_files
+           done # $darwin_filelist
+           $RM -rf unfat-$$
+           cd "$darwin_orig_dir"
+         else
+           cd $darwin_orig_dir
+           func_extract_an_archive "$my_xdir" "$my_xabs"
+         fi # $darwin_arches
+       } # !$opt_dry_run
+       ;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+       ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+
+    func_extract_archives_result="$my_oldobjs"
+}
+
+
+
+# func_emit_wrapper_part1 [arg=no]
+#
+# Emit the first part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part1 ()
+{
+       func_emit_wrapper_part1_arg1=no
+       if test -n "$1" ; then
+         func_emit_wrapper_part1_arg1=$1
+       fi
+
+       $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    ECHO=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$ECHO works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$ECHO will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+       $ECHO "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+"
+}
+# end: func_emit_wrapper_part1
+
+# func_emit_wrapper_part2 [arg=no]
+#
+# Emit the second part of a libtool wrapper script on stdout.
+# For more information, see the description associated with
+# func_emit_wrapper(), below.
+func_emit_wrapper_part2 ()
+{
+       func_emit_wrapper_part2_arg1=no
+       if test -n "$1" ; then
+         func_emit_wrapper_part2_arg1=$1
+       fi
+
+       $ECHO "\
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+       if test "$fast_install" = yes; then
+         $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
+
+         $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+       $ECHO \"\$relink_command_output\" >&2
+       $RM \"\$progdir/\$file\"
+       exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+       else
+         $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+       fi
+
+       $ECHO "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+       # Export our shlibpath_var if we have one.
+       if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+         $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+       fi
+
+       # fixup the dll searchpath if we need to.
+       if test -n "$dllsearchpath"; then
+         $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+       fi
+
+       $ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+       case $host in
+       # Backslashes separate directories on plain windows
+       *-*-mingw | *-*-os2* | *-cegcc*)
+         $ECHO "\
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+         ;;
+
+       *)
+         $ECHO "\
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+         ;;
+       esac
+       $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+    fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
+# end: func_emit_wrapper_part2
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+       func_emit_wrapper_arg1=no
+       if test -n "$1" ; then
+         func_emit_wrapper_arg1=$1
+       fi
+
+       # split this up so that func_emit_cwrapperexe_src
+       # can call each part independently.
+       func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
+       func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
+}
+
+
+# func_to_host_path arg
+#
+# Convert paths to host format when used with build tools.
+# Intended for use with "native" mingw (where libtool itself
+# is running under the msys shell), or in the following cross-
+# build environments:
+#    $build          $host
+#    mingw (msys)    mingw  [e.g. native]
+#    cygwin          mingw
+#    *nix + wine     mingw
+# where wine is equipped with the `winepath' executable.
+# In the native mingw case, the (msys) shell automatically
+# converts paths for any non-msys applications it launches,
+# but that facility isn't available from inside the cwrapper.
+# Similar accommodations are necessary for $host mingw and
+# $build cygwin.  Calling this function does no harm for other
+# $host/$build combinations not listed above.
+#
+# ARG is the path (on $build) that should be converted to
+# the proper representation for $host. The result is stored
+# in $func_to_host_path_result.
+func_to_host_path ()
+{
+  func_to_host_path_result="$1"
+  if test -n "$1" ; then
+    case $host in
+      *mingw* )
+        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+        case $build in
+          *mingw* ) # actually, msys
+            # awkward: cmd appends spaces to result
+            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
+              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          *cygwin* )
+            func_to_host_path_tmp1=`cygpath -w "$1"`
+            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          * )
+            # Unfortunately, winepath does not exit with a non-zero
+            # error code, so we are forced to check the contents of
+            # stdout. On the other hand, if the command is not
+            # found, the shell will set an exit code of 127 and print
+            # *an error message* to stdout. So we must check for both
+            # error code of zero AND non-empty stdout, which explains
+            # the odd construction:
+            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
+            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
+              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
+                $SED -e "$lt_sed_naive_backslashify"`
+            else
+              # Allow warning below.
+              func_to_host_path_result=""
+            fi
+            ;;
+        esac
+        if test -z "$func_to_host_path_result" ; then
+          func_error "Could not determine host path corresponding to"
+          func_error "  '$1'"
+          func_error "Continuing, but uninstalled executables may not work."
+          # Fallback:
+          func_to_host_path_result="$1"
+        fi
+        ;;
+    esac
+  fi
+}
+# end: func_to_host_path
+
+# func_to_host_pathlist arg
+#
+# Convert pathlists to host format when used with build tools.
+# See func_to_host_path(), above. This function supports the
+# following $build/$host combinations (but does no harm for
+# combinations not listed here):
+#    $build          $host
+#    mingw (msys)    mingw  [e.g. native]
+#    cygwin          mingw
+#    *nix + wine     mingw
+#
+# Path separators are also converted from $build format to
+# $host format. If ARG begins or ends with a path separator
+# character, it is preserved (but converted to $host format)
+# on output.
+#
+# ARG is a pathlist (on $build) that should be converted to
+# the proper representation on $host. The result is stored
+# in $func_to_host_pathlist_result.
+func_to_host_pathlist ()
+{
+  func_to_host_pathlist_result="$1"
+  if test -n "$1" ; then
+    case $host in
+      *mingw* )
+        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+        # Remove leading and trailing path separator characters from
+        # ARG. msys behavior is inconsistent here, cygpath turns them
+        # into '.;' and ';.', and winepath ignores them completely.
+        func_to_host_pathlist_tmp2="$1"
+        # Once set for this call, this variable should not be
+        # reassigned. It is used in tha fallback case.
+        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
+          $SED -e 's|^:*||' -e 's|:*$||'`
+        case $build in
+          *mingw* ) # Actually, msys.
+            # Awkward: cmd appends spaces to result.
+            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
+            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
+              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
+            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          *cygwin* )
+            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
+            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
+              $SED -e "$lt_sed_naive_backslashify"`
+            ;;
+          * )
+            # unfortunately, winepath doesn't convert pathlists
+            func_to_host_pathlist_result=""
+            func_to_host_pathlist_oldIFS=$IFS
+            IFS=:
+            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
+              IFS=$func_to_host_pathlist_oldIFS
+              if test -n "$func_to_host_pathlist_f" ; then
+                func_to_host_path "$func_to_host_pathlist_f"
+                if test -n "$func_to_host_path_result" ; then
+                  if test -z "$func_to_host_pathlist_result" ; then
+                    func_to_host_pathlist_result="$func_to_host_path_result"
+                  else
+                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
+                  fi
+                fi
+              fi
+              IFS=:
+            done
+            IFS=$func_to_host_pathlist_oldIFS
+            ;;
+        esac
+        if test -z "$func_to_host_pathlist_result" ; then
+          func_error "Could not determine the host path(s) corresponding to"
+          func_error "  '$1'"
+          func_error "Continuing, but uninstalled executables may not work."
+          # Fallback. This may break if $1 contains DOS-style drive
+          # specifications. The fix is not to complicate the expression
+          # below, but for the user to provide a working wine installation
+          # with winepath so that path translation in the cross-to-mingw
+          # case works properly.
+          lt_replace_pathsep_nix_to_dos="s|:|;|g"
+          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
+            $SED -e "$lt_replace_pathsep_nix_to_dos"`
+        fi
+        # Now, add the leading and trailing path separators back
+        case "$1" in
+          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
+            ;;
+        esac
+        case "$1" in
+          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
+            ;;
+        esac
+        ;;
+    esac
+  fi
+}
+# end: func_to_host_pathlist
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+       cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "$SHELL $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+           cat <<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+# define setmode _setmode
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+#  define HAVE_SETENV
+#  ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+#  endif
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+#ifdef _MSC_VER
+# define S_IXUSR _S_IEXEC
+# define stat _stat
+# ifndef _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+       (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifdef __CYGWIN__
+# define FOPEN_WB "wb"
+#endif
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#undef LTWRAPPER_DEBUGPRINTF
+#if defined DEBUGWRAPPER
+# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
+static void
+ltwrapper_debugprintf (const char *fmt, ...)
+{
+    va_list args;
+    va_start (args, fmt);
+    (void) vfprintf (stderr, fmt, args);
+    va_end (args);
+}
+#else
+# define LTWRAPPER_DEBUGPRINTF(args)
+#endif
+
+const char *program_name = NULL;
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_opt_process_env_set (const char *arg);
+void lt_opt_process_env_prepend (const char *arg);
+void lt_opt_process_env_append (const char *arg);
+int lt_split_name_value (const char *arg, char** name, char** value);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+
+static const char *script_text_part1 =
+EOF
+
+           func_emit_wrapper_part1 yes |
+               $SED -e 's/\([\\"]\)/\\\1/g' \
+                    -e 's/^/  "/' -e 's/$/\\n"/'
+           echo ";"
+           cat <<EOF
+
+static const char *script_text_part2 =
+EOF
+           func_emit_wrapper_part2 yes |
+               $SED -e 's/\([\\"]\)/\\\1/g' \
+                    -e 's/^/  "/' -e 's/$/\\n"/'
+           echo ";"
+
+           cat <<EOF
+const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+           if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_pathlist "$temp_rpath"
+             cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
+EOF
+           else
+             cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+           fi
+
+           if test -n "$dllsearchpath"; then
+              func_to_host_pathlist "$dllsearchpath:"
+             cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
+EOF
+           else
+             cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+           fi
+
+           if test "$fast_install" = yes; then
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+           else
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+           fi
+
+
+           cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
+
+static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+
+static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
+static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
+  /* argument is putenv-style "foo=bar", value of foo is set to bar */
+
+static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
+static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
+  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
+
+static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
+static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
+  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  intptr_t rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
+  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
+
+  /* very simple arg parsing; don't want to rely on getopt */
+  for (i = 1; i < argc; i++)
+    {
+      if (strcmp (argv[i], dumpscript_opt) == 0)
+       {
+EOF
+           case "$host" in
+             *mingw* | *cygwin* )
+               # make stdout use "unix" line endings
+               echo "          setmode(1,_O_BINARY);"
+               ;;
+             esac
+
+           cat <<"EOF"
+         printf ("%s", script_text_part1);
+         printf ("%s", script_text_part2);
+         return 0;
+       }
+    }
+
+  newargz = XMALLOC (char *, argc + 1);
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal ("Couldn't find %s", argv[0]);
+  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
+                         tmp_pathspec));
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
+                         actual_cwrapper_path));
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
+                         target_name));
+EOF
+
+           cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+                   strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+           cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+           case $host_os in
+             mingw*)
+           cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+       *p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+       *p = '/';
+      }
+  }
+EOF
+           ;;
+           esac
+
+           cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
+        {
+          if (argv[i][env_set_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_set_opt_len + 1;
+              lt_opt_process_env_set (p);
+            }
+          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_set (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_set_opt);
+          continue;
+        }
+      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
+        {
+          if (argv[i][env_prepend_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_prepend_opt_len + 1;
+              lt_opt_process_env_prepend (p);
+            }
+          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_prepend_opt);
+          continue;
+        }
+      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
+        {
+          if (argv[i][env_append_opt_len] == '=')
+            {
+              const char *p = argv[i] + env_append_opt_len + 1;
+              lt_opt_process_env_append (p);
+            }
+          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
+            {
+              lt_opt_process_env_append (argv[++i]); /* don't copy */
+            }
+          else
+            lt_fatal ("%s missing required argument", env_append_opt);
+          continue;
+        }
+      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal ("Unrecognized option in %s namespace: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
+  for (i = 0; i < newargc; i++)
+    {
+      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
+    }
+
+EOF
+
+           case $host_os in
+             mingw*)
+               cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
+      return 127;
+    }
+  return rval;
+EOF
+               ;;
+             *)
+               cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+               ;;
+           esac
+
+           cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+                         string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
+                         path ? (*path ? path : "EMPTY!") : "NULL!"));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
+
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
+
+  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
+                         path ? (*path ? path : "EMPTY!") : "NULL!"));
+  if ((!path) || (!*path))
+    return 0;
+
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char *concat_name;
+
+  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
+                         wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+       return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+       {
+         concat_name = xstrdup (wrapper);
+         if (check_executable (concat_name))
+           return concat_name;
+         XFREE (concat_name);
+       }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+    }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+       has_slash = 1;
+       break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+       {
+         for (p = path; *p; p = p_next)
+           {
+             const char *q;
+             size_t p_len;
+             for (q = p; *q; q++)
+               if (IS_PATH_SEPARATOR (*q))
+                 break;
+             p_len = q - p;
+             p_next = (*q == '\0' ? q : q + 1);
+             if (p_len == 0)
+               {
+                 /* empty path: current directory */
+                 if (getcwd (tmp, LT_PATHMAX) == NULL)
+                   lt_fatal ("getcwd failed");
+                 tmp_len = strlen (tmp);
+                 concat_name =
+                   XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+                 memcpy (concat_name, tmp, tmp_len);
+                 concat_name[tmp_len] = '/';
+                 strcpy (concat_name + tmp_len + 1, wrapper);
+               }
+             else
+               {
+                 concat_name =
+                   XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+                 memcpy (concat_name, p, p_len);
+                 concat_name[p_len] = '/';
+                 strcpy (concat_name + p_len + 1, wrapper);
+               }
+             if (check_executable (concat_name))
+               return concat_name;
+             XFREE (concat_name);
+           }
+       }
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
+                             tmp_pathspec));
+      if (lstat (tmp_pathspec, &s) == 0)
+       {
+         if (S_ISLNK (s.st_mode) != 0)
+           {
+             has_symlinks = 1;
+             break;
+           }
+
+         /* search backwards for last DIR_SEPARATOR */
+         p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+         while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+           p--;
+         if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+           {
+             /* no more DIR_SEPARATORS left */
+             break;
+           }
+         *p = '\0';
+       }
+      else
+       {
+         char *errstr = strerror (errno);
+         lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
+       }
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal ("Could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert (str != NULL);
+  assert (pat != NULL);
+
+  len = strlen (str);
+  patlen = strlen (pat);
+
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (strcmp (str, pat) == 0)
+       *str = '\0';
+    }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char *mode,
+              const char *message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
+                          (name ? name : "<NULL>"),
+                          (value ? value : "<NULL>")));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    int len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      int orig_value_len = strlen (orig_value);
+      int add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
+
+int
+lt_split_name_value (const char *arg, char** name, char** value)
+{
+  const char *p;
+  int len;
+  if (!arg || !*arg)
+    return 1;
+
+  p = strchr (arg, (int)'=');
+
+  if (!p)
+    return 1;
+
+  *value = xstrdup (++p);
+
+  len = strlen (arg) - strlen (*value);
+  *name = XMALLOC (char, len);
+  strncpy (*name, arg, len-1);
+  (*name)[len - 1] = '\0';
+
+  return 0;
+}
+
+void
+lt_opt_process_env_set (const char *arg)
+{
+  char *name = NULL;
+  char *value = NULL;
+
+  if (lt_split_name_value (arg, &name, &value) != 0)
+    {
+      XFREE (name);
+      XFREE (value);
+      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
+    }
+
+  lt_setenv (name, value);
+  XFREE (name);
+  XFREE (value);
+}
+
+void
+lt_opt_process_env_prepend (const char *arg)
+{
+  char *name = NULL;
+  char *value = NULL;
+  char *new_value = NULL;
+
+  if (lt_split_name_value (arg, &name, &value) != 0)
+    {
+      XFREE (name);
+      XFREE (value);
+      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
+    }
+
+  new_value = lt_extend_str (getenv (name), value, 0);
+  lt_setenv (name, new_value);
+  XFREE (new_value);
+  XFREE (name);
+  XFREE (value);
+}
+
+void
+lt_opt_process_env_append (const char *arg)
+{
+  char *name = NULL;
+  char *value = NULL;
+  char *new_value = NULL;
+
+  if (lt_split_name_value (arg, &name, &value) != 0)
+    {
+      XFREE (name);
+      XFREE (value);
+      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
+    }
+
+  new_value = lt_extend_str (getenv (name), value, 1);
+  lt_setenv (name, new_value);
+  XFREE (new_value);
+  XFREE (name);
+  XFREE (value);
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                          (name ? name : "<NULL>"),
+                          (value ? value : "<NULL>")));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[len-1] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                          (name ? name : "<NULL>"),
+                          (value ? value : "<NULL>")));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args=$nonopt
+    base_compile="$nonopt $@"
+    compile_command=$nonopt
+    finalize_command=$nonopt
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+    new_inherited_linker_flags=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    weak_libs=
+    single_module="${wl}-single_module"
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -shared)
+       test "$build_libtool_libs" != yes && \
+         func_fatal_configuration "can not build a shared library"
+       build_old_libs=no
+       break
+       ;;
+      -all-static | -static | -static-libtool-libs)
+       case $arg in
+       -all-static)
+         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+           func_warning "complete static linking is impossible in this configuration"
+         fi
+         if test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=yes
+         ;;
+       -static)
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=built
+         ;;
+       -static-libtool-libs)
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=yes
+         ;;
+       esac
+       build_libtool_libs=no
+       build_old_libs=yes
+       break
+       ;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+       case $prev in
+       output)
+         func_append compile_command " @OUTPUT@"
+         func_append finalize_command " @OUTPUT@"
+         ;;
+       esac
+
+       case $prev in
+       dlfiles|dlprefiles)
+         if test "$preload" = no; then
+           # Add the symbol object into the linking commands.
+           func_append compile_command " @SYMFILE@"
+           func_append finalize_command " @SYMFILE@"
+           preload=yes
+         fi
+         case $arg in
+         *.la | *.lo) ;;  # We handle these cases below.
+         force)
+           if test "$dlself" = no; then
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         self)
+           if test "$prev" = dlprefiles; then
+             dlself=yes
+           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+             dlself=yes
+           else
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         *)
+           if test "$prev" = dlfiles; then
+             dlfiles="$dlfiles $arg"
+           else
+             dlprefiles="$dlprefiles $arg"
+           fi
+           prev=
+           continue
+           ;;
+         esac
+         ;;
+       expsyms)
+         export_symbols="$arg"
+         test -f "$arg" \
+           || func_fatal_error "symbol file \`$arg' does not exist"
+         prev=
+         continue
+         ;;
+       expsyms_regex)
+         export_symbols_regex="$arg"
+         prev=
+         continue
+         ;;
+       framework)
+         case $host in
+           *-*-darwin*)
+             case "$deplibs " in
+               *" $qarg.ltframework "*) ;;
+               *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+                  ;;
+             esac
+             ;;
+         esac
+         prev=
+         continue
+         ;;
+       inst_prefix)
+         inst_prefix_dir="$arg"
+         prev=
+         continue
+         ;;
+       objectlist)
+         if test -f "$arg"; then
+           save_arg=$arg
+           moreargs=
+           for fil in `cat "$save_arg"`
+           do
+#            moreargs="$moreargs $fil"
+             arg=$fil
+             # A libtool-controlled object.
+
+             # Check to see that this really is a libtool object.
+             if func_lalib_unsafe_p "$arg"; then
+               pic_object=
+               non_pic_object=
+
+               # Read the .lo file
+               func_source "$arg"
+
+               if test -z "$pic_object" ||
+                  test -z "$non_pic_object" ||
+                  test "$pic_object" = none &&
+                  test "$non_pic_object" = none; then
+                 func_fatal_error "cannot find name of object for \`$arg'"
+               fi
+
+               # Extract subdirectory from the argument.
+               func_dirname "$arg" "/" ""
+               xdir="$func_dirname_result"
+
+               if test "$pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 pic_object="$xdir$pic_object"
+
+                 if test "$prev" = dlfiles; then
+                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+                     dlfiles="$dlfiles $pic_object"
+                     prev=
+                     continue
+                   else
+                     # If libtool objects are unsupported, then we need to preload.
+                     prev=dlprefiles
+                   fi
+                 fi
+
+                 # CHECK ME:  I think I busted this.  -Ossama
+                 if test "$prev" = dlprefiles; then
+                   # Preload the old-style object.
+                   dlprefiles="$dlprefiles $pic_object"
+                   prev=
+                 fi
+
+                 # A PIC object.
+                 func_append libobjs " $pic_object"
+                 arg="$pic_object"
+               fi
+
+               # Non-PIC object.
+               if test "$non_pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 non_pic_object="$xdir$non_pic_object"
+
+                 # A standard non-PIC object
+                 func_append non_pic_objects " $non_pic_object"
+                 if test -z "$pic_object" || test "$pic_object" = none ; then
+                   arg="$non_pic_object"
+                 fi
+               else
+                 # If the PIC object exists, use it instead.
+                 # $xdir was prepended to $pic_object above.
+                 non_pic_object="$pic_object"
+                 func_append non_pic_objects " $non_pic_object"
+               fi
+             else
+               # Only an error if not doing a dry-run.
+               if $opt_dry_run; then
+                 # Extract subdirectory from the argument.
+                 func_dirname "$arg" "/" ""
+                 xdir="$func_dirname_result"
+
+                 func_lo2o "$arg"
+                 pic_object=$xdir$objdir/$func_lo2o_result
+                 non_pic_object=$xdir$func_lo2o_result
+                 func_append libobjs " $pic_object"
+                 func_append non_pic_objects " $non_pic_object"
+               else
+                 func_fatal_error "\`$arg' is not a valid libtool object"
+               fi
+             fi
+           done
+         else
+           func_fatal_error "link input file \`$arg' does not exist"
+         fi
+         arg=$save_arg
+         prev=
+         continue
+         ;;
+       precious_regex)
+         precious_files_regex="$arg"
+         prev=
+         continue
+         ;;
+       release)
+         release="-$arg"
+         prev=
+         continue
+         ;;
+       rpath | xrpath)
+         # We need an absolute path.
+         case $arg in
+         [\\/]* | [A-Za-z]:[\\/]*) ;;
+         *)
+           func_fatal_error "only absolute run-paths are allowed"
+           ;;
+         esac
+         if test "$prev" = rpath; then
+           case "$rpath " in
+           *" $arg "*) ;;
+           *) rpath="$rpath $arg" ;;
+           esac
+         else
+           case "$xrpath " in
+           *" $arg "*) ;;
+           *) xrpath="$xrpath $arg" ;;
+           esac
+         fi
+         prev=
+         continue
+         ;;
+       shrext)
+         shrext_cmds="$arg"
+         prev=
+         continue
+         ;;
+       weak)
+         weak_libs="$weak_libs $arg"
+         prev=
+         continue
+         ;;
+       xcclinker)
+         linker_flags="$linker_flags $qarg"
+         compiler_flags="$compiler_flags $qarg"
+         prev=
+         func_append compile_command " $qarg"
+         func_append finalize_command " $qarg"
+         continue
+         ;;
+       xcompiler)
+         compiler_flags="$compiler_flags $qarg"
+         prev=
+         func_append compile_command " $qarg"
+         func_append finalize_command " $qarg"
+         continue
+         ;;
+       xlinker)
+         linker_flags="$linker_flags $qarg"
+         compiler_flags="$compiler_flags $wl$qarg"
+         prev=
+         func_append compile_command " $wl$qarg"
+         func_append finalize_command " $wl$qarg"
+         continue
+         ;;
+       *)
+         eval "$prev=\"\$arg\""
+         prev=
+         continue
+         ;;
+       esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+       if test -n "$link_static_flag"; then
+         # See comment for -static flag below, for more details.
+         func_append compile_command " $link_static_flag"
+         func_append finalize_command " $link_static_flag"
+       fi
+       continue
+       ;;
+
+      -allow-undefined)
+       # FIXME: remove this flag sometime in the future.
+       func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+       ;;
+
+      -avoid-version)
+       avoid_version=yes
+       continue
+       ;;
+
+      -dlopen)
+       prev=dlfiles
+       continue
+       ;;
+
+      -dlpreopen)
+       prev=dlprefiles
+       continue
+       ;;
+
+      -export-dynamic)
+       export_dynamic=yes
+       continue
+       ;;
+
+      -export-symbols | -export-symbols-regex)
+       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+         func_fatal_error "more than one -exported-symbols argument is not allowed"
+       fi
+       if test "X$arg" = "X-export-symbols"; then
+         prev=expsyms
+       else
+         prev=expsyms_regex
+       fi
+       continue
+       ;;
+
+      -framework)
+       prev=framework
+       continue
+       ;;
+
+      -inst-prefix-dir)
+       prev=inst_prefix
+       continue
+       ;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+       case $with_gcc/$host in
+       no/*-*-irix* | /*-*-irix*)
+         func_append compile_command " $arg"
+         func_append finalize_command " $arg"
+         ;;
+       esac
+       continue
+       ;;
+
+      -L*)
+       func_stripname '-L' '' "$arg"
+       dir=$func_stripname_result
+       if test -z "$dir"; then
+         if test "$#" -gt 0; then
+           func_fatal_error "require no space between \`-L' and \`$1'"
+         else
+           func_fatal_error "need path for \`-L' option"
+         fi
+       fi
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         absdir=`cd "$dir" && pwd`
+         test -z "$absdir" && \
+           func_fatal_error "cannot determine absolute directory name of \`$dir'"
+         dir="$absdir"
+         ;;
+       esac
+       case "$deplibs " in
+       *" -L$dir "*) ;;
+       *)
+         deplibs="$deplibs -L$dir"
+         lib_search_path="$lib_search_path $dir"
+         ;;
+       esac
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+         testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+         case :$dllsearchpath: in
+         *":$dir:"*) ;;
+         ::) dllsearchpath=$dir;;
+         *) dllsearchpath="$dllsearchpath:$dir";;
+         esac
+         case :$dllsearchpath: in
+         *":$testbindir:"*) ;;
+         ::) dllsearchpath=$testbindir;;
+         *) dllsearchpath="$dllsearchpath:$testbindir";;
+         esac
+         ;;
+       esac
+       continue
+       ;;
+
+      -l*)
+       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
+           # These systems don't actually have a C or math library (as such)
+           continue
+           ;;
+         *-*-os2*)
+           # These systems don't actually have a C library (as such)
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+           # Do not include libc due to us having libc/libc_r.
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C and math libraries are in the System framework
+           deplibs="$deplibs System.ltframework"
+           continue
+           ;;
+         *-*-sco3.2v5* | *-*-sco5v6*)
+           # Causes problems with __ctype
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+           # Compiler inserts libc in the correct place for threads to work
+           test "X$arg" = "X-lc" && continue
+           ;;
+         esac
+       elif test "X$arg" = "X-lc_r"; then
+        case $host in
+        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+          # Do not include libc_r directly, use -pthread flag.
+          continue
+          ;;
+        esac
+       fi
+       deplibs="$deplibs $arg"
+       continue
+       ;;
+
+      -module)
+       module=yes
+       continue
+       ;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot)
+       compiler_flags="$compiler_flags $arg"
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+       prev=xcompiler
+       continue
+       ;;
+
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+       compiler_flags="$compiler_flags $arg"
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+       case "$new_inherited_linker_flags " in
+           *" $arg "*) ;;
+           * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
+       esac
+       continue
+       ;;
+
+      -multi_module)
+       single_module="${wl}-multi_module"
+       continue
+       ;;
+
+      -no-fast-install)
+       fast_install=no
+       continue
+       ;;
+
+      -no-install)
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+         # The PATH hackery in wrapper scripts is required on Windows
+         # and Darwin in order for the loader to find any dlls it needs.
+         func_warning "\`-no-install' is ignored for $host"
+         func_warning "assuming \`-no-fast-install' instead"
+         fast_install=no
+         ;;
+       *) no_install=yes ;;
+       esac
+       continue
+       ;;
+
+      -no-undefined)
+       allow_undefined=no
+       continue
+       ;;
+
+      -objectlist)
+       prev=objectlist
+       continue
+       ;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+       prev=precious_regex
+       continue
+       ;;
+
+      -release)
+       prev=release
+       continue
+       ;;
+
+      -rpath)
+       prev=rpath
+       continue
+       ;;
+
+      -R)
+       prev=xrpath
+       continue
+       ;;
+
+      -R*)
+       func_stripname '-R' '' "$arg"
+       dir=$func_stripname_result
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         func_fatal_error "only absolute run-paths are allowed"
+         ;;
+       esac
+       case "$xrpath " in
+       *" $dir "*) ;;
+       *) xrpath="$xrpath $dir" ;;
+       esac
+       continue
+       ;;
+
+      -shared)
+       # The effects of -shared are defined in a previous loop.
+       continue
+       ;;
+
+      -shrext)
+       prev=shrext
+       continue
+       ;;
+
+      -static | -static-libtool-libs)
+       # The effects of -static are defined in a previous loop.
+       # We used to do the same as -all-static on platforms that
+       # didn't have a PIC flag, but the assumption that the effects
+       # would be equivalent was wrong.  It would break on at least
+       # Digital Unix and AIX.
+       continue
+       ;;
+
+      -thread-safe)
+       thread_safe=yes
+       continue
+       ;;
+
+      -version-info)
+       prev=vinfo
+       continue
+       ;;
+
+      -version-number)
+       prev=vinfo
+       vinfo_number=yes
+       continue
+       ;;
+
+      -weak)
+        prev=weak
+       continue
+       ;;
+
+      -Wc,*)
+       func_stripname '-Wc,' '' "$arg"
+       args=$func_stripname_result
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+         arg="$arg $wl$func_quote_for_eval_result"
+         compiler_flags="$compiler_flags $func_quote_for_eval_result"
+       done
+       IFS="$save_ifs"
+       func_stripname ' ' '' "$arg"
+       arg=$func_stripname_result
+       ;;
+
+      -Wl,*)
+       func_stripname '-Wl,' '' "$arg"
+       args=$func_stripname_result
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+         arg="$arg $wl$func_quote_for_eval_result"
+         compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
+         linker_flags="$linker_flags $func_quote_for_eval_result"
+       done
+       IFS="$save_ifs"
+       func_stripname ' ' '' "$arg"
+       arg=$func_stripname_result
+       ;;
+
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
+
+      -Xlinker)
+       prev=xlinker
+       continue
+       ;;
+
+      -XCClinker)
+       prev=xcclinker
+       continue
+       ;;
+
+      # -msg_* for osf cc
+      -msg_*)
+       func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+       ;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* pass through architecture-specific
+      # compiler args for GCC
+      # -F/path gives path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+      # @file GCC response files
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+        func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        compiler_flags="$compiler_flags $arg"
+        continue
+        ;;
+
+      # Some other compiler flag.
+      -* | +*)
+        func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+       ;;
+
+      *.$objext)
+       # A standard object.
+       objs="$objs $arg"
+       ;;
+
+      *.lo)
+       # A libtool-controlled object.
+
+       # Check to see that this really is a libtool object.
+       if func_lalib_unsafe_p "$arg"; then
+         pic_object=
+         non_pic_object=
+
+         # Read the .lo file
+         func_source "$arg"
+
+         if test -z "$pic_object" ||
+            test -z "$non_pic_object" ||
+            test "$pic_object" = none &&
+            test "$non_pic_object" = none; then
+           func_fatal_error "cannot find name of object for \`$arg'"
+         fi
+
+         # Extract subdirectory from the argument.
+         func_dirname "$arg" "/" ""
+         xdir="$func_dirname_result"
+
+         if test "$pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           pic_object="$xdir$pic_object"
+
+           if test "$prev" = dlfiles; then
+             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+               dlfiles="$dlfiles $pic_object"
+               prev=
+               continue
+             else
+               # If libtool objects are unsupported, then we need to preload.
+               prev=dlprefiles
+             fi
+           fi
+
+           # CHECK ME:  I think I busted this.  -Ossama
+           if test "$prev" = dlprefiles; then
+             # Preload the old-style object.
+             dlprefiles="$dlprefiles $pic_object"
+             prev=
+           fi
+
+           # A PIC object.
+           func_append libobjs " $pic_object"
+           arg="$pic_object"
+         fi
+
+         # Non-PIC object.
+         if test "$non_pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           non_pic_object="$xdir$non_pic_object"
+
+           # A standard non-PIC object
+           func_append non_pic_objects " $non_pic_object"
+           if test -z "$pic_object" || test "$pic_object" = none ; then
+             arg="$non_pic_object"
+           fi
+         else
+           # If the PIC object exists, use it instead.
+           # $xdir was prepended to $pic_object above.
+           non_pic_object="$pic_object"
+           func_append non_pic_objects " $non_pic_object"
+         fi
+       else
+         # Only an error if not doing a dry-run.
+         if $opt_dry_run; then
+           # Extract subdirectory from the argument.
+           func_dirname "$arg" "/" ""
+           xdir="$func_dirname_result"
+
+           func_lo2o "$arg"
+           pic_object=$xdir$objdir/$func_lo2o_result
+           non_pic_object=$xdir$func_lo2o_result
+           func_append libobjs " $pic_object"
+           func_append non_pic_objects " $non_pic_object"
+         else
+           func_fatal_error "\`$arg' is not a valid libtool object"
+         fi
+       fi
+       ;;
+
+      *.$libext)
+       # An archive.
+       deplibs="$deplibs $arg"
+       old_deplibs="$old_deplibs $arg"
+       continue
+       ;;
+
+      *.la)
+       # A libtool-controlled library.
+
+       if test "$prev" = dlfiles; then
+         # This library was specified with -dlopen.
+         dlfiles="$dlfiles $arg"
+         prev=
+       elif test "$prev" = dlprefiles; then
+         # The library was specified with -dlpreopen.
+         dlprefiles="$dlprefiles $arg"
+         prev=
+       else
+         deplibs="$deplibs $arg"
+       fi
+       continue
+       ;;
+
+      # Some other compiler argument.
+      *)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+       ;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+      fi
+    done # argument parsing loop
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prevarg' option requires an argument"
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    func_basename "$output"
+    outputname="$func_basename_result"
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    func_dirname "$output" "/" ""
+    output_objdir="$func_dirname_result$objdir"
+    # Create the object directory.
+    func_mkdir_p "$output_objdir"
+
+    # Determine the type of output
+    case $output in
+    "")
+      func_fatal_help "you must specify an output file"
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if $opt_duplicate_deps ; then
+       case "$libs " in
+       *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+       esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if $opt_duplicate_compiler_generated_deps; then
+       for pre_post_dep in $predeps $postdeps; do
+         case "$pre_post_deps " in
+         *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+         esac
+         pre_post_deps="$pre_post_deps $pre_post_dep"
+       done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+
+    case $linkmode in
+    lib)
+       passes="conv dlpreopen link"
+       for file in $dlfiles $dlprefiles; do
+         case $file in
+         *.la) ;;
+         *)
+           func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+           ;;
+         esac
+       done
+       ;;
+    prog)
+       compile_deplibs=
+       finalize_deplibs=
+       alldeplibs=no
+       newdlfiles=
+       newdlprefiles=
+       passes="conv scan dlopen dlpreopen link"
+       ;;
+    *)  passes="conv"
+       ;;
+    esac
+
+    for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test "$linkmode,$pass" = "lib,link"; then
+       ## FIXME: Find the place where the list is rebuilt in the wrong
+       ##        order, and fix it there properly
+        tmp_deplibs=
+       for deplib in $deplibs; do
+         tmp_deplibs="$deplib $tmp_deplibs"
+       done
+       deplibs="$tmp_deplibs"
+      fi
+
+      if test "$linkmode,$pass" = "lib,link" ||
+        test "$linkmode,$pass" = "prog,scan"; then
+       libs="$deplibs"
+       deplibs=
+      fi
+      if test "$linkmode" = prog; then
+       case $pass in
+       dlopen) libs="$dlfiles" ;;
+       dlpreopen) libs="$dlprefiles" ;;
+       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+       esac
+      fi
+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+       # Collect and forward deplibs of preopened libtool libs
+       for lib in $dlprefiles; do
+         # Ignore non-libtool-libs
+         dependency_libs=
+         case $lib in
+         *.la) func_source "$lib" ;;
+         esac
+
+         # Collect preopened libtool deplibs, except any this library
+         # has declared as weak libs
+         for deplib in $dependency_libs; do
+            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
+           case " $weak_libs " in
+           *" $deplib_base "*) ;;
+           *) deplibs="$deplibs $deplib" ;;
+           esac
+         done
+       done
+       libs="$dlprefiles"
+      fi
+      if test "$pass" = dlopen; then
+       # Collect dlpreopened libraries
+       save_deplibs="$deplibs"
+       deplibs=
+      fi
+
+      for deplib in $libs; do
+       lib=
+       found=no
+       case $deplib in
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           compiler_flags="$compiler_flags $deplib"
+           if test "$linkmode" = lib ; then
+               case "$new_inherited_linker_flags " in
+                   *" $deplib "*) ;;
+                   * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+               esac
+           fi
+         fi
+         continue
+         ;;
+       -l*)
+         if test "$linkmode" != lib && test "$linkmode" != prog; then
+           func_warning "\`-l' is ignored for archives/objects"
+           continue
+         fi
+         func_stripname '-l' '' "$deplib"
+         name=$func_stripname_result
+         if test "$linkmode" = lib; then
+           searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+         else
+           searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+         fi
+         for searchdir in $searchdirs; do
+           for search_ext in .la $std_shrext .so .a; do
+             # Search the libtool library
+             lib="$searchdir/lib${name}${search_ext}"
+             if test -f "$lib"; then
+               if test "$search_ext" = ".la"; then
+                 found=yes
+               else
+                 found=no
+               fi
+               break 2
+             fi
+           done
+         done
+         if test "$found" != yes; then
+           # deplib doesn't seem to be a libtool library
+           if test "$linkmode,$pass" = "prog,link"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         else # deplib is a libtool library
+           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+           # We need to do some special things here, and not later.
+           if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+             case " $predeps $postdeps " in
+             *" $deplib "*)
+               if func_lalib_p "$lib"; then
+                 library_names=
+                 old_library=
+                 func_source "$lib"
+                 for l in $old_library $library_names; do
+                   ll="$l"
+                 done
+                 if test "X$ll" = "X$old_library" ; then # only static version available
+                   found=no
+                   func_dirname "$lib" "" "."
+                   ladir="$func_dirname_result"
+                   lib=$ladir/$old_library
+                   if test "$linkmode,$pass" = "prog,link"; then
+                     compile_deplibs="$deplib $compile_deplibs"
+                     finalize_deplibs="$deplib $finalize_deplibs"
+                   else
+                     deplibs="$deplib $deplibs"
+                     test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+                   fi
+                   continue
+                 fi
+               fi
+               ;;
+             *) ;;
+             esac
+           fi
+         fi
+         ;; # -l
+       *.ltframework)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           deplibs="$deplib $deplibs"
+           if test "$linkmode" = lib ; then
+               case "$new_inherited_linker_flags " in
+                   *" $deplib "*) ;;
+                   * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+               esac
+           fi
+         fi
+         continue
+         ;;
+       -L*)
+         case $linkmode in
+         lib)
+           deplibs="$deplib $deplibs"
+           test "$pass" = conv && continue
+           newdependency_libs="$deplib $newdependency_libs"
+           func_stripname '-L' '' "$deplib"
+           newlib_search_path="$newlib_search_path $func_stripname_result"
+           ;;
+         prog)
+           if test "$pass" = conv; then
+             deplibs="$deplib $deplibs"
+             continue
+           fi
+           if test "$pass" = scan; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           func_stripname '-L' '' "$deplib"
+           newlib_search_path="$newlib_search_path $func_stripname_result"
+           ;;
+         *)
+           func_warning "\`-L' is ignored for archives/objects"
+           ;;
+         esac # linkmode
+         continue
+         ;; # -L
+       -R*)
+         if test "$pass" = link; then
+           func_stripname '-R' '' "$deplib"
+           dir=$func_stripname_result
+           # Make sure the xrpath contains only unique directories.
+           case "$xrpath " in
+           *" $dir "*) ;;
+           *) xrpath="$xrpath $dir" ;;
+           esac
+         fi
+         deplibs="$deplib $deplibs"
+         continue
+         ;;
+       *.la) lib="$deplib" ;;
+       *.$libext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         case $linkmode in
+         lib)
+           # Linking convenience modules into shared libraries is allowed,
+           # but linking other static libraries is non-portable.
+           case " $dlpreconveniencelibs " in
+           *" $deplib "*) ;;
+           *)
+             valid_a_lib=no
+             case $deplibs_check_method in
+               match_pattern*)
+                 set dummy $deplibs_check_method; shift
+                 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+                 if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
+                   | $EGREP "$match_pattern_regex" > /dev/null; then
+                   valid_a_lib=yes
+                 fi
+               ;;
+               pass_all)
+                 valid_a_lib=yes
+               ;;
+             esac
+             if test "$valid_a_lib" != yes; then
+               $ECHO
+               $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+               $ECHO "*** I have the capability to make that library automatically link in when"
+               $ECHO "*** you link to this library.  But I can only do this if you have a"
+               $ECHO "*** shared version of the library, which you do not appear to have"
+               $ECHO "*** because the file extensions .$libext of this argument makes me believe"
+               $ECHO "*** that it is just a static archive that I should not use here."
+             else
+               $ECHO
+               $ECHO "*** Warning: Linking the shared library $output against the"
+               $ECHO "*** static library $deplib is not portable!"
+               deplibs="$deplib $deplibs"
+             fi
+             ;;
+           esac
+           continue
+           ;;
+         prog)
+           if test "$pass" != link; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           continue
+           ;;
+         esac # linkmode
+         ;; # *.$libext
+       *.lo | *.$objext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+         elif test "$linkmode" = prog; then
+           if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+             # If there is no dlopen support or we're linking statically,
+             # we need to preload.
+             newdlprefiles="$newdlprefiles $deplib"
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             newdlfiles="$newdlfiles $deplib"
+           fi
+         fi
+         continue
+         ;;
+       %DEPLIBS%)
+         alldeplibs=yes
+         continue
+         ;;
+       esac # case $deplib
+
+       if test "$found" = yes || test -f "$lib"; then :
+       else
+         func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+       fi
+
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$lib" \
+         || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+       func_dirname "$lib" "" "."
+       ladir="$func_dirname_result"
+
+       dlname=
+       dlopen=
+       dlpreopen=
+       libdir=
+       library_names=
+       old_library=
+       inherited_linker_flags=
+       # If the library was installed with an old release of libtool,
+       # it will not redefine variables installed, or shouldnotlink
+       installed=yes
+       shouldnotlink=no
+       avoidtemprpath=
+
+
+       # Read the .la file
+       func_source "$lib"
+
+       # Convert "-framework foo" to "foo.ltframework"
+       if test -n "$inherited_linker_flags"; then
+         tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
+         for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+           case " $new_inherited_linker_flags " in
+             *" $tmp_inherited_linker_flag "*) ;;
+             *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+           esac
+         done
+       fi
+       dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+       if test "$linkmode,$pass" = "lib,link" ||
+          test "$linkmode,$pass" = "prog,scan" ||
+          { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+         test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+         test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+       fi
+
+       if test "$pass" = conv; then
+         # Only check for convenience libraries
+         deplibs="$lib $deplibs"
+         if test -z "$libdir"; then
+           if test -z "$old_library"; then
+             func_fatal_error "cannot find name of link library for \`$lib'"
+           fi
+           # It is a libtool convenience library, so add in its objects.
+           convenience="$convenience $ladir/$objdir/$old_library"
+           old_convenience="$old_convenience $ladir/$objdir/$old_library"
+         elif test "$linkmode" != prog && test "$linkmode" != lib; then
+           func_fatal_error "\`$lib' is not a convenience library"
+         fi
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           deplibs="$deplib $deplibs"
+           if $opt_duplicate_deps ; then
+             case "$tmp_libs " in
+             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+             esac
+           fi
+           tmp_libs="$tmp_libs $deplib"
+         done
+         continue
+       fi # $pass = conv
+
+
+       # Get the name of the library we link against.
+       linklib=
+       for l in $old_library $library_names; do
+         linklib="$l"
+       done
+       if test -z "$linklib"; then
+         func_fatal_error "cannot find name of link library for \`$lib'"
+       fi
+
+       # This library was specified with -dlopen.
+       if test "$pass" = dlopen; then
+         if test -z "$libdir"; then
+           func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+         fi
+         if test -z "$dlname" ||
+            test "$dlopen_support" != yes ||
+            test "$build_libtool_libs" = no; then
+           # If there is no dlname, no dlopen support or we're linking
+           # statically, we need to preload.  We also need to preload any
+           # dependent libraries so libltdl's deplib preloader doesn't
+           # bomb out in the load deplibs phase.
+           dlprefiles="$dlprefiles $lib $dependency_libs"
+         else
+           newdlfiles="$newdlfiles $lib"
+         fi
+         continue
+       fi # $pass = dlopen
+
+       # We need an absolute path.
+       case $ladir in
+       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+       *)
+         abs_ladir=`cd "$ladir" && pwd`
+         if test -z "$abs_ladir"; then
+           func_warning "cannot determine absolute directory name of \`$ladir'"
+           func_warning "passing it literally to the linker, although it might fail"
+           abs_ladir="$ladir"
+         fi
+         ;;
+       esac
+       func_basename "$lib"
+       laname="$func_basename_result"
+
+       # Find the relevant object directory and library name.
+       if test "X$installed" = Xyes; then
+         if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           func_warning "library \`$lib' was moved."
+           dir="$ladir"
+           absdir="$abs_ladir"
+           libdir="$abs_ladir"
+         else
+           dir="$libdir"
+           absdir="$libdir"
+         fi
+         test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+       else
+         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           dir="$ladir"
+           absdir="$abs_ladir"
+           # Remove this search path later
+           notinst_path="$notinst_path $abs_ladir"
+         else
+           dir="$ladir/$objdir"
+           absdir="$abs_ladir/$objdir"
+           # Remove this search path later
+           notinst_path="$notinst_path $abs_ladir"
+         fi
+       fi # $installed = yes
+       func_stripname 'lib' '.la' "$laname"
+       name=$func_stripname_result
+
+       # This library was specified with -dlpreopen.
+       if test "$pass" = dlpreopen; then
+         if test -z "$libdir" && test "$linkmode" = prog; then
+           func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+         fi
+         # Prefer using a static library (so that no silly _DYNAMIC symbols
+         # are required to link).
+         if test -n "$old_library"; then
+           newdlprefiles="$newdlprefiles $dir/$old_library"
+           # Keep a list of preopened convenience libraries to check
+           # that they are being used correctly in the link pass.
+           test -z "$libdir" && \
+               dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
+         # Otherwise, use the dlname, so that lt_dlopen finds it.
+         elif test -n "$dlname"; then
+           newdlprefiles="$newdlprefiles $dir/$dlname"
+         else
+           newdlprefiles="$newdlprefiles $dir/$linklib"
+         fi
+       fi # $pass = dlpreopen
+
+       if test -z "$libdir"; then
+         # Link the convenience library
+         if test "$linkmode" = lib; then
+           deplibs="$dir/$old_library $deplibs"
+         elif test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$dir/$old_library $compile_deplibs"
+           finalize_deplibs="$dir/$old_library $finalize_deplibs"
+         else
+           deplibs="$lib $deplibs" # used for prog,scan pass
+         fi
+         continue
+       fi
+
+
+       if test "$linkmode" = prog && test "$pass" != link; then
+         newlib_search_path="$newlib_search_path $ladir"
+         deplibs="$lib $deplibs"
+
+         linkalldeplibs=no
+         if test "$link_all_deplibs" != no || test -z "$library_names" ||
+            test "$build_libtool_libs" = no; then
+           linkalldeplibs=yes
+         fi
+
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           case $deplib in
+           -L*) func_stripname '-L' '' "$deplib"
+                newlib_search_path="$newlib_search_path $func_stripname_result"
+                ;;
+           esac
+           # Need to link against all dependency_libs?
+           if test "$linkalldeplibs" = yes; then
+             deplibs="$deplib $deplibs"
+           else
+             # Need to hardcode shared library paths
+             # or/and link against static libraries
+             newdependency_libs="$deplib $newdependency_libs"
+           fi
+           if $opt_duplicate_deps ; then
+             case "$tmp_libs " in
+             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+             esac
+           fi
+           tmp_libs="$tmp_libs $deplib"
+         done # for deplib
+         continue
+       fi # $linkmode = prog...
+
+       if test "$linkmode,$pass" = "prog,link"; then
+         if test -n "$library_names" &&
+            { { test "$prefer_static_libs" = no ||
+                test "$prefer_static_libs,$installed" = "built,yes"; } ||
+              test -z "$old_library"; }; then
+           # We need to hardcode the library path
+           if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+             # Make sure the rpath contains only unique directories.
+             case "$temp_rpath:" in
+             *"$absdir:"*) ;;
+             *) temp_rpath="$temp_rpath$absdir:" ;;
+             esac
+           fi
+
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) compile_rpath="$compile_rpath $absdir"
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) finalize_rpath="$finalize_rpath $libdir"
+             esac
+             ;;
+           esac
+         fi # $linkmode,$pass = prog,link...
+
+         if test "$alldeplibs" = yes &&
+            { test "$deplibs_check_method" = pass_all ||
+              { test "$build_libtool_libs" = yes &&
+                test -n "$library_names"; }; }; then
+           # We only need to search for static libraries
+           continue
+         fi
+       fi
+
+       link_static=no # Whether the deplib will be linked statically
+       use_static_libs=$prefer_static_libs
+       if test "$use_static_libs" = built && test "$installed" = yes; then
+         use_static_libs=no
+       fi
+       if test -n "$library_names" &&
+          { test "$use_static_libs" = no || test -z "$old_library"; }; then
+         case $host in
+         *cygwin* | *mingw* | *cegcc*)
+             # No point in relinking DLLs because paths are not encoded
+             notinst_deplibs="$notinst_deplibs $lib"
+             need_relink=no
+           ;;
+         *)
+           if test "$installed" = no; then
+             notinst_deplibs="$notinst_deplibs $lib"
+             need_relink=yes
+           fi
+           ;;
+         esac
+         # This is a shared library
+
+         # Warn about portability, can't link against -module's on some
+         # systems (darwin).  Don't bleat about dlopened modules though!
+         dlopenmodule=""
+         for dlpremoduletest in $dlprefiles; do
+           if test "X$dlpremoduletest" = "X$lib"; then
+             dlopenmodule="$dlpremoduletest"
+             break
+           fi
+         done
+         if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+           $ECHO
+           if test "$linkmode" = prog; then
+             $ECHO "*** Warning: Linking the executable $output against the loadable module"
+           else
+             $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+           fi
+           $ECHO "*** $linklib is not portable!"
+         fi
+         if test "$linkmode" = lib &&
+            test "$hardcode_into_libs" = yes; then
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) compile_rpath="$compile_rpath $absdir"
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) finalize_rpath="$finalize_rpath $libdir"
+             esac
+             ;;
+           esac
+         fi
+
+         if test -n "$old_archive_from_expsyms_cmds"; then
+           # figure out the soname
+           set dummy $library_names
+           shift
+           realname="$1"
+           shift
+           libname=`eval "\\$ECHO \"$libname_spec\""`
+           # use dlname if we got it. it's perfectly good, no?
+           if test -n "$dlname"; then
+             soname="$dlname"
+           elif test -n "$soname_spec"; then
+             # bleh windows
+             case $host in
+             *cygwin* | mingw* | *cegcc*)
+               func_arith $current - $age
+               major=$func_arith_result
+               versuffix="-$major"
+               ;;
+             esac
+             eval soname=\"$soname_spec\"
+           else
+             soname="$realname"
+           fi
+
+           # Make a new name for the extract_expsyms_cmds to use
+           soroot="$soname"
+           func_basename "$soroot"
+           soname="$func_basename_result"
+           func_stripname 'lib' '.dll' "$soname"
+           newlib=libimp-$func_stripname_result.a
+
+           # If the library has no export list, then create one now
+           if test -f "$output_objdir/$soname-def"; then :
+           else
+             func_verbose "extracting exported symbol list from \`$soname'"
+             func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+           fi
+
+           # Create $newlib
+           if test -f "$output_objdir/$newlib"; then :; else
+             func_verbose "generating import library for \`$soname'"
+             func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+           fi
+           # make sure the library variables are pointing to the new library
+           dir=$output_objdir
+           linklib=$newlib
+         fi # test -n "$old_archive_from_expsyms_cmds"
+
+         if test "$linkmode" = prog || test "$mode" != relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           lib_linked=yes
+           case $hardcode_action in
+           immediate | unsupported)
+             if test "$hardcode_direct" = no; then
+               add="$dir/$linklib"
+               case $host in
+                 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+                 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+                 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+                   *-*-unixware7*) add_dir="-L$dir" ;;
+                 *-*-darwin* )
+                   # if the lib is a (non-dlopened) module then we can not
+                   # link against it, someone is ignoring the earlier warnings
+                   if /usr/bin/file -L $add 2> /dev/null |
+                        $GREP ": [^:]* bundle" >/dev/null ; then
+                     if test "X$dlopenmodule" != "X$lib"; then
+                       $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+                       if test -z "$old_library" ; then
+                         $ECHO
+                         $ECHO "*** And there doesn't seem to be a static archive available"
+                         $ECHO "*** The link will probably fail, sorry"
+                       else
+                         add="$dir/$old_library"
+                       fi
+                     elif test -n "$old_library"; then
+                       add="$dir/$old_library"
+                     fi
+                   fi
+               esac
+             elif test "$hardcode_minus_L" = no; then
+               case $host in
+               *-*-sunos*) add_shlibpath="$dir" ;;
+               esac
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = no; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           relink)
+             if test "$hardcode_direct" = yes &&
+                test "$hardcode_direct_absolute" = no; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = yes; then
+               add_dir="-L$dir"
+               # Try looking first in the location we're being installed to.
+               if test -n "$inst_prefix_dir"; then
+                 case $libdir in
+                   [\\/]*)
+                     add_dir="$add_dir -L$inst_prefix_dir$libdir"
+                     ;;
+                 esac
+               fi
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = yes; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           *) lib_linked=no ;;
+           esac
+
+           if test "$lib_linked" != yes; then
+             func_fatal_configuration "unsupported hardcode properties"
+           fi
+
+           if test -n "$add_shlibpath"; then
+             case :$compile_shlibpath: in
+             *":$add_shlibpath:"*) ;;
+             *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+             esac
+           fi
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+             test -n "$add" && compile_deplibs="$add $compile_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+             if test "$hardcode_direct" != yes &&
+                test "$hardcode_minus_L" != yes &&
+                test "$hardcode_shlibpath_var" = yes; then
+               case :$finalize_shlibpath: in
+               *":$libdir:"*) ;;
+               *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+               esac
+             fi
+           fi
+         fi
+
+         if test "$linkmode" = prog || test "$mode" = relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           # Finalize command for both is simple: just hardcode it.
+           if test "$hardcode_direct" = yes &&
+              test "$hardcode_direct_absolute" = no; then
+             add="$libdir/$linklib"
+           elif test "$hardcode_minus_L" = yes; then
+             add_dir="-L$libdir"
+             add="-l$name"
+           elif test "$hardcode_shlibpath_var" = yes; then
+             case :$finalize_shlibpath: in
+             *":$libdir:"*) ;;
+             *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+             esac
+             add="-l$name"
+           elif test "$hardcode_automatic" = yes; then
+             if test -n "$inst_prefix_dir" &&
+                test -f "$inst_prefix_dir$libdir/$linklib" ; then
+               add="$inst_prefix_dir$libdir/$linklib"
+             else
+               add="$libdir/$linklib"
+             fi
+           else
+             # We cannot seem to hardcode it, guess we'll fake it.
+             add_dir="-L$libdir"
+             # Try looking first in the location we're being installed to.
+             if test -n "$inst_prefix_dir"; then
+               case $libdir in
+                 [\\/]*)
+                   add_dir="$add_dir -L$inst_prefix_dir$libdir"
+                   ;;
+               esac
+             fi
+             add="-l$name"
+           fi
+
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+           fi
+         fi
+       elif test "$linkmode" = prog; then
+         # Here we assume that one of hardcode_direct or hardcode_minus_L
+         # is not unsupported.  This is valid on all known static and
+         # shared platforms.
+         if test "$hardcode_direct" != unsupported; then
+           test -n "$old_library" && linklib="$old_library"
+           compile_deplibs="$dir/$linklib $compile_deplibs"
+           finalize_deplibs="$dir/$linklib $finalize_deplibs"
+         else
+           compile_deplibs="-l$name -L$dir $compile_deplibs"
+           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+         fi
+       elif test "$build_libtool_libs" = yes; then
+         # Not a shared library
+         if test "$deplibs_check_method" != pass_all; then
+           # We're trying link a shared library against a static one
+           # but the system doesn't support it.
+
+           # Just print a warning and add the library to dependency_libs so
+           # that the program can be linked against the static library.
+           $ECHO
+           $ECHO "*** Warning: This system can not link to static lib archive $lib."
+           $ECHO "*** I have the capability to make that library automatically link in when"
+           $ECHO "*** you link to this library.  But I can only do this if you have a"
+           $ECHO "*** shared version of the library, which you do not appear to have."
+           if test "$module" = yes; then
+             $ECHO "*** But as you try to build a module library, libtool will still create "
+             $ECHO "*** a static module, that should work as long as the dlopening application"
+             $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
+             if test -z "$global_symbol_pipe"; then
+               $ECHO
+               $ECHO "*** However, this would only work if libtool was able to extract symbol"
+               $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+               $ECHO "*** not find such a program.  So, this module is probably useless."
+               $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+             fi
+             if test "$build_old_libs" = no; then
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         else
+           deplibs="$dir/$old_library $deplibs"
+           link_static=yes
+         fi
+       fi # link shared/static library?
+
+       if test "$linkmode" = lib; then
+         if test -n "$dependency_libs" &&
+            { test "$hardcode_into_libs" != yes ||
+              test "$build_old_libs" = yes ||
+              test "$link_static" = yes; }; then
+           # Extract -R from dependency_libs
+           temp_deplibs=
+           for libdir in $dependency_libs; do
+             case $libdir in
+             -R*) func_stripname '-R' '' "$libdir"
+                  temp_xrpath=$func_stripname_result
+                  case " $xrpath " in
+                  *" $temp_xrpath "*) ;;
+                  *) xrpath="$xrpath $temp_xrpath";;
+                  esac;;
+             *) temp_deplibs="$temp_deplibs $libdir";;
+             esac
+           done
+           dependency_libs="$temp_deplibs"
+         fi
+
+         newlib_search_path="$newlib_search_path $absdir"
+         # Link against this library
+         test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+         # ... and its dependency_libs
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           newdependency_libs="$deplib $newdependency_libs"
+           if $opt_duplicate_deps ; then
+             case "$tmp_libs " in
+             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+             esac
+           fi
+           tmp_libs="$tmp_libs $deplib"
+         done
+
+         if test "$link_all_deplibs" != no; then
+           # Add the search paths of all dependency libraries
+           for deplib in $dependency_libs; do
+             case $deplib in
+             -L*) path="$deplib" ;;
+             *.la)
+               func_dirname "$deplib" "" "."
+               dir="$func_dirname_result"
+               # We need an absolute path.
+               case $dir in
+               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+               *)
+                 absdir=`cd "$dir" && pwd`
+                 if test -z "$absdir"; then
+                   func_warning "cannot determine absolute directory name of \`$dir'"
+                   absdir="$dir"
+                 fi
+                 ;;
+               esac
+               if $GREP "^installed=no" $deplib > /dev/null; then
+               case $host in
+               *-*-darwin*)
+                 depdepl=
+                 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+                 if test -n "$deplibrary_names" ; then
+                   for tmp in $deplibrary_names ; do
+                     depdepl=$tmp
+                   done
+                   if test -f "$absdir/$objdir/$depdepl" ; then
+                     depdepl="$absdir/$objdir/$depdepl"
+                     darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+                     compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+                     linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
+                     path=
+                   fi
+                 fi
+                 ;;
+               *)
+                 path="-L$absdir/$objdir"
+                 ;;
+               esac
+               else
+                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+                 test -z "$libdir" && \
+                   func_fatal_error "\`$deplib' is not a valid libtool archive"
+                 test "$absdir" != "$libdir" && \
+                   func_warning "\`$deplib' seems to be moved"
+
+                 path="-L$absdir"
+               fi
+               ;;
+             esac
+             case " $deplibs " in
+             *" $path "*) ;;
+             *) deplibs="$path $deplibs" ;;
+             esac
+           done
+         fi # link_all_deplibs != no
+       fi # linkmode = lib
+      done # for deplib in $libs
+      if test "$pass" = link; then
+       if test "$linkmode" = "prog"; then
+         compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+         finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+       else
+         compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+       fi
+      fi
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+       # Link the dlpreopened libraries before other libraries
+       for deplib in $save_deplibs; do
+         deplibs="$deplib $deplibs"
+       done
+      fi
+      if test "$pass" != dlopen; then
+       if test "$pass" != conv; then
+         # Make sure lib_search_path contains only unique directories.
+         lib_search_path=
+         for dir in $newlib_search_path; do
+           case "$lib_search_path " in
+           *" $dir "*) ;;
+           *) lib_search_path="$lib_search_path $dir" ;;
+           esac
+         done
+         newlib_search_path=
+       fi
+
+       if test "$linkmode,$pass" != "prog,link"; then
+         vars="deplibs"
+       else
+         vars="compile_deplibs finalize_deplibs"
+       fi
+       for var in $vars dependency_libs; do
+         # Add libraries to $var in reverse order
+         eval tmp_libs=\"\$$var\"
+         new_libs=
+         for deplib in $tmp_libs; do
+           # FIXME: Pedantically, this is the right thing to do, so
+           #        that some nasty dependency loop isn't accidentally
+           #        broken:
+           #new_libs="$deplib $new_libs"
+           # Pragmatically, this seems to cause very few problems in
+           # practice:
+           case $deplib in
+           -L*) new_libs="$deplib $new_libs" ;;
+           -R*) ;;
+           *)
+             # And here is the reason: when a library appears more
+             # than once as an explicit dependence of a library, or
+             # is implicitly linked in more than once by the
+             # compiler, it is considered special, and multiple
+             # occurrences thereof are not removed.  Compare this
+             # with having the same library being listed as a
+             # dependency of multiple other libraries: in this case,
+             # we know (pedantically, we assume) the library does not
+             # need to be listed more than once, so we keep only the
+             # last copy.  This is not always right, but it is rare
+             # enough that we require users that really mean to play
+             # such unportable linking tricks to link the library
+             # using -Wl,-lname, so that libtool does not consider it
+             # for duplicate removal.
+             case " $specialdeplibs " in
+             *" $deplib "*) new_libs="$deplib $new_libs" ;;
+             *)
+               case " $new_libs " in
+               *" $deplib "*) ;;
+               *) new_libs="$deplib $new_libs" ;;
+               esac
+               ;;
+             esac
+             ;;
+           esac
+         done
+         tmp_libs=
+         for deplib in $new_libs; do
+           case $deplib in
+           -L*)
+             case " $tmp_libs " in
+             *" $deplib "*) ;;
+             *) tmp_libs="$tmp_libs $deplib" ;;
+             esac
+             ;;
+           *) tmp_libs="$tmp_libs $deplib" ;;
+           esac
+         done
+         eval $var=\"$tmp_libs\"
+       done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+       case " $predeps $postdeps $compiler_lib_search_path " in
+       *" $i "*)
+         i=""
+         ;;
+       esac
+       if test -n "$i" ; then
+         tmp_libs="$tmp_libs $i"
+       fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+    fi
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       func_warning "\`-dlopen' is ignored for archives"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       func_warning "\`-l' and \`-L' are ignored for archives" ;;
+      esac
+
+      test -n "$rpath" && \
+       func_warning "\`-rpath' is ignored for archives"
+
+      test -n "$xrpath" && \
+       func_warning "\`-R' is ignored for archives"
+
+      test -n "$vinfo" && \
+       func_warning "\`-version-info/-version-number' is ignored for archives"
+
+      test -n "$release" && \
+       func_warning "\`-release' is ignored for archives"
+
+      test -n "$export_symbols$export_symbols_regex" && \
+       func_warning "\`-export-symbols' is ignored for archives"
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+       func_stripname 'lib' '.la' "$outputname"
+       name=$func_stripname_result
+       eval shared_ext=\"$shrext_cmds\"
+       eval libname=\"$libname_spec\"
+       ;;
+      *)
+       test "$module" = no && \
+         func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+       if test "$need_lib_prefix" != no; then
+         # Add the "lib" prefix for modules if required
+         func_stripname '' '.la' "$outputname"
+         name=$func_stripname_result
+         eval shared_ext=\"$shrext_cmds\"
+         eval libname=\"$libname_spec\"
+       else
+         func_stripname '' '.la' "$outputname"
+         libname=$func_stripname_result
+       fi
+       ;;
+      esac
+
+      if test -n "$objs"; then
+       if test "$deplibs_check_method" != pass_all; then
+         func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+       else
+         $ECHO
+         $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+         $ECHO "*** objects $objs is not portable!"
+         libobjs="$libobjs $objs"
+       fi
+      fi
+
+      test "$dlself" != no && \
+       func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test "$#" -gt 1 && \
+       func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+      install_libdir="$1"
+
+      oldlibs=
+      if test -z "$rpath"; then
+       if test "$build_libtool_libs" = yes; then
+         # Building a libtool convenience library.
+         # Some compilers have problems with a `.al' extension so
+         # convenience libraries should have the same extension an
+         # archive normally would.
+         oldlibs="$output_objdir/$libname.$libext $oldlibs"
+         build_libtool_libs=convenience
+         build_old_libs=yes
+       fi
+
+       test -n "$vinfo" && \
+         func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+       test -n "$release" && \
+         func_warning "\`-release' is ignored for convenience libraries"
+      else
+
+       # Parse the version information argument.
+       save_ifs="$IFS"; IFS=':'
+       set dummy $vinfo 0 0 0
+       shift
+       IFS="$save_ifs"
+
+       test -n "$7" && \
+         func_fatal_help "too many parameters to \`-version-info'"
+
+       # convert absolute version numbers to libtool ages
+       # this retains compatibility with .la files and attempts
+       # to make the code below a bit more comprehensible
+
+       case $vinfo_number in
+       yes)
+         number_major="$1"
+         number_minor="$2"
+         number_revision="$3"
+         #
+         # There are really only two kinds -- those that
+         # use the current revision as the major version
+         # and those that subtract age and use age as
+         # a minor version.  But, then there is irix
+         # which has an extra 1 added just for fun
+         #
+         case $version_type in
+         darwin|linux|osf|windows|none)
+           func_arith $number_major + $number_minor
+           current=$func_arith_result
+           age="$number_minor"
+           revision="$number_revision"
+           ;;
+         freebsd-aout|freebsd-elf|sunos)
+           current="$number_major"
+           revision="$number_minor"
+           age="0"
+           ;;
+         irix|nonstopux)
+           func_arith $number_major + $number_minor
+           current=$func_arith_result
+           age="$number_minor"
+           revision="$number_minor"
+           lt_irix_increment=no
+           ;;
+         esac
+         ;;
+       no)
+         current="$1"
+         revision="$2"
+         age="$3"
+         ;;
+       esac
+
+       # Check that each of the things are valid numbers.
+       case $current in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "CURRENT \`$current' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
+         ;;
+       esac
+
+       case $revision in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "REVISION \`$revision' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
+         ;;
+       esac
+
+       case $age in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "AGE \`$age' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
+         ;;
+       esac
+
+       if test "$age" -gt "$current"; then
+         func_error "AGE \`$age' is greater than the current interface number \`$current'"
+         func_fatal_error "\`$vinfo' is not valid version information"
+       fi
+
+       # Calculate the version variables.
+       major=
+       versuffix=
+       verstring=
+       case $version_type in
+       none) ;;
+
+       darwin)
+         # Like Linux, but with the current version available in
+         # verstring for coding it into the library header
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix="$major.$age.$revision"
+         # Darwin ld doesn't like 0 for these options...
+         func_arith $current + 1
+         minor_current=$func_arith_result
+         xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+         ;;
+
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current"
+         ;;
+
+       irix | nonstopux)
+         if test "X$lt_irix_increment" = "Xno"; then
+           func_arith $current - $age
+         else
+           func_arith $current - $age + 1
+         fi
+         major=$func_arith_result
+
+         case $version_type in
+           nonstopux) verstring_prefix=nonstopux ;;
+           *)         verstring_prefix=sgi ;;
+         esac
+         verstring="$verstring_prefix$major.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$revision
+         while test "$loop" -ne 0; do
+           func_arith $revision - $loop
+           iface=$func_arith_result
+           func_arith $loop - 1
+           loop=$func_arith_result
+           verstring="$verstring_prefix$major.$iface:$verstring"
+         done
+
+         # Before this point, $major must not contain `.'.
+         major=.$major
+         versuffix="$major.$revision"
+         ;;
+
+       linux)
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix="$major.$age.$revision"
+         ;;
+
+       osf)
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix=".$current.$age.$revision"
+         verstring="$current.$age.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$age
+         while test "$loop" -ne 0; do
+           func_arith $current - $loop
+           iface=$func_arith_result
+           func_arith $loop - 1
+           loop=$func_arith_result
+           verstring="$verstring:${iface}.0"
+         done
+
+         # Make executables depend on our current version.
+         verstring="$verstring:${current}.0"
+         ;;
+
+       qnx)
+         major=".$current"
+         versuffix=".$current"
+         ;;
+
+       sunos)
+         major=".$current"
+         versuffix=".$current.$revision"
+         ;;
+
+       windows)
+         # Use '-' rather than '.', since we only want one
+         # extension on DOS 8.3 filesystems.
+         func_arith $current - $age
+         major=$func_arith_result
+         versuffix="-$major"
+         ;;
+
+       *)
+         func_fatal_configuration "unknown library version type \`$version_type'"
+         ;;
+       esac
+
+       # Clear the version info if we defaulted, and they specified a release.
+       if test -z "$vinfo" && test -n "$release"; then
+         major=
+         case $version_type in
+         darwin)
+           # we can't check for "0.0" in archive_cmds due to quoting
+           # problems, so we reset it completely
+           verstring=
+           ;;
+         *)
+           verstring="0.0"
+           ;;
+         esac
+         if test "$need_version" = no; then
+           versuffix=
+         else
+           versuffix=".0.0"
+         fi
+       fi
+
+       # Remove version info from name if versioning should be avoided
+       if test "$avoid_version" = yes && test "$need_version" = no; then
+         major=
+         versuffix=
+         verstring=""
+       fi
+
+       # Check to see if the archive will have undefined symbols.
+       if test "$allow_undefined" = yes; then
+         if test "$allow_undefined_flag" = unsupported; then
+           func_warning "undefined symbols not allowed in $host shared libraries"
+           build_libtool_libs=no
+           build_old_libs=yes
+         fi
+       else
+         # Don't allow undefined symbols.
+         allow_undefined_flag="$no_undefined_flag"
+       fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      libobjs="$libobjs $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
+      if test "$mode" != relink; then
+       # Remove our outputs, but don't remove object files since they
+       # may have been created when compiling PIC objects.
+       removelist=
+       tempremovelist=`$ECHO "$output_objdir/*"`
+       for p in $tempremovelist; do
+         case $p in
+           *.$objext | *.gcno)
+              ;;
+           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+              if test "X$precious_files_regex" != "X"; then
+                if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+                then
+                  continue
+                fi
+              fi
+              removelist="$removelist $p"
+              ;;
+           *) ;;
+         esac
+       done
+       test -n "$removelist" && \
+         func_show_eval "${RM}r \$removelist"
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+       oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+       # Transform .lo files to .o files.
+       oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #        lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
+      #        deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
+      #        dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       temp_xrpath=
+       for libdir in $xrpath; do
+         temp_xrpath="$temp_xrpath -R$libdir"
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_rpath="$finalize_rpath $libdir" ;;
+         esac
+       done
+       if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+         dependency_libs="$temp_xrpath $dependency_libs"
+       fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+       case " $dlprefiles $dlfiles " in
+       *" $lib "*) ;;
+       *) dlfiles="$dlfiles $lib" ;;
+       esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+       case "$dlprefiles " in
+       *" $lib "*) ;;
+       *) dlprefiles="$dlprefiles $lib" ;;
+       esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+       if test -n "$rpath"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
+           # these systems don't actually have a c library (as such)!
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C library is in the System framework
+           deplibs="$deplibs System.ltframework"
+           ;;
+         *-*-netbsd*)
+           # Don't link with libc until the a.out ld.so is fixed.
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+           # Do not include libc due to us having libc/libc_r.
+           ;;
+         *-*-sco3.2v5* | *-*-sco5v6*)
+           # Causes problems with __ctype
+           ;;
+         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+           # Compiler inserts libc in the correct place for threads to work
+           ;;
+         *)
+           # Add libc to deplibs on all other systems if necessary.
+           if test "$build_libtool_need_lc" = "yes"; then
+             deplibs="$deplibs -lc"
+           fi
+           ;;
+         esac
+       fi
+
+       # Transform deplibs into only deplibs that can be linked in shared.
+       name_save=$name
+       libname_save=$libname
+       release_save=$release
+       versuffix_save=$versuffix
+       major_save=$major
+       # I'm not sure if I'm treating the release correctly.  I think
+       # release should show up in the -l (ie -lgmp5) so we don't want to
+       # add it in twice.  Is that correct?
+       release=""
+       versuffix=""
+       major=""
+       newdeplibs=
+       droppeddeps=no
+       case $deplibs_check_method in
+       pass_all)
+         # Don't check for shared/static.  Everything works.
+         # This might be a little naive.  We might want to check
+         # whether the library exists or not.  But this is on
+         # osf3 & osf4 and I'm not really sure... Just
+         # implementing what was already the behavior.
+         newdeplibs=$deplibs
+         ;;
+       test_compile)
+         # This code stresses the "libraries are programs" paradigm to its
+         # limits. Maybe even breaks it.  We compile a program, linking it
+         # against the deplibs as a proxy for the library.  Then we can check
+         # whether they linked in statically or dynamically with ldd.
+         $opt_dry_run || $RM conftest.c
+         cat > conftest.c <<EOF
+         int main() { return 0; }
+EOF
+         $opt_dry_run || $RM conftest
+         if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+           ldd_output=`ldd conftest`
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                 case " $predeps $postdeps " in
+                 *" $i "*)
+                   newdeplibs="$newdeplibs $i"
+                   i=""
+                   ;;
+                 esac
+               fi
+               if test -n "$i" ; then
+                 libname=`eval "\\$ECHO \"$libname_spec\""`
+                 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                 set dummy $deplib_matches; shift
+                 deplib_match=$1
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                   newdeplibs="$newdeplibs $i"
+                 else
+                   droppeddeps=yes
+                   $ECHO
+                   $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                   $ECHO "*** I have the capability to make that library automatically link in when"
+                   $ECHO "*** you link to this library.  But I can only do this if you have a"
+                   $ECHO "*** shared version of the library, which I believe you do not have"
+                   $ECHO "*** because a test_compile did reveal that the linker did not use it for"
+                   $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
+                 fi
+               fi
+               ;;
+             *)
+               newdeplibs="$newdeplibs $i"
+               ;;
+             esac
+           done
+         else
+           # Error occurred in the first compile.  Let's try to salvage
+           # the situation: Compile a separate program for each library.
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               $opt_dry_run || $RM conftest
+               if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+                 ldd_output=`ldd conftest`
+                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                   case " $predeps $postdeps " in
+                   *" $i "*)
+                     newdeplibs="$newdeplibs $i"
+                     i=""
+                     ;;
+                   esac
+                 fi
+                 if test -n "$i" ; then
+                   libname=`eval "\\$ECHO \"$libname_spec\""`
+                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                   set dummy $deplib_matches; shift
+                   deplib_match=$1
+                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                     newdeplibs="$newdeplibs $i"
+                   else
+                     droppeddeps=yes
+                     $ECHO
+                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                     $ECHO "*** I have the capability to make that library automatically link in when"
+                     $ECHO "*** you link to this library.  But I can only do this if you have a"
+                     $ECHO "*** shared version of the library, which you do not appear to have"
+                     $ECHO "*** because a test_compile did reveal that the linker did not use this one"
+                     $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
+                   fi
+                 fi
+               else
+                 droppeddeps=yes
+                 $ECHO
+                 $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+                 $ECHO "*** make it link in!  You will probably need to install it or some"
+                 $ECHO "*** library that it depends on before this library will be fully"
+                 $ECHO "*** functional.  Installing it before continuing would be even better."
+               fi
+               ;;
+             *)
+               newdeplibs="$newdeplibs $i"
+               ;;
+             esac
+           done
+         fi
+         ;;
+       file_magic*)
+         set dummy $deplibs_check_method; shift
+         file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+         for a_deplib in $deplibs; do
+           case $a_deplib in
+           -l*)
+             func_stripname -l '' "$a_deplib"
+             name=$func_stripname_result
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 newdeplibs="$newdeplibs $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval "\\$ECHO \"$libname_spec\""`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 for potent_lib in $potential_libs; do
+                     # Follow soft links.
+                     if ls -lLd "$potent_lib" 2>/dev/null |
+                        $GREP " -> " >/dev/null; then
+                       continue
+                     fi
+                     # The statement above tries to avoid entering an
+                     # endless loop below, in case of cyclic links.
+                     # We might still enter an endless loop, since a link
+                     # loop can be closed while we follow links,
+                     # but so what?
+                     potlib="$potent_lib"
+                     while test -h "$potlib" 2>/dev/null; do
+                       potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+                       case $potliblink in
+                       [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+                       *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+                       esac
+                     done
+                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+                        $SED -e 10q |
+                        $EGREP "$file_magic_regex" > /dev/null; then
+                       newdeplibs="$newdeplibs $a_deplib"
+                       a_deplib=""
+                       break 2
+                     fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               $ECHO
+               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+               $ECHO "*** I have the capability to make that library automatically link in when"
+               $ECHO "*** you link to this library.  But I can only do this if you have a"
+               $ECHO "*** shared version of the library, which you do not appear to have"
+               $ECHO "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+               else
+                 $ECHO "*** with $libname and none of the candidates passed a file format test"
+                 $ECHO "*** using a file magic. Last file checked: $potlib"
+               fi
+             fi
+             ;;
+           *)
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+             ;;
+           esac
+         done # Gone through all deplibs.
+         ;;
+       match_pattern*)
+         set dummy $deplibs_check_method; shift
+         match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+         for a_deplib in $deplibs; do
+           case $a_deplib in
+           -l*)
+             func_stripname -l '' "$a_deplib"
+             name=$func_stripname_result
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 newdeplibs="$newdeplibs $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval "\\$ECHO \"$libname_spec\""`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 for potent_lib in $potential_libs; do
+                   potlib="$potent_lib" # see symlink-check above in file_magic test
+                   if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
+                      $EGREP "$match_pattern_regex" > /dev/null; then
+                     newdeplibs="$newdeplibs $a_deplib"
+                     a_deplib=""
+                     break 2
+                   fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               $ECHO
+               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+               $ECHO "*** I have the capability to make that library automatically link in when"
+               $ECHO "*** you link to this library.  But I can only do this if you have a"
+               $ECHO "*** shared version of the library, which you do not appear to have"
+               $ECHO "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+               else
+                 $ECHO "*** with $libname and none of the candidates passed a file format test"
+                 $ECHO "*** using a regex pattern. Last file checked: $potlib"
+               fi
+             fi
+             ;;
+           *)
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+             ;;
+           esac
+         done # Gone through all deplibs.
+         ;;
+       none | unknown | *)
+         newdeplibs=""
+         tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
+             -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
+         if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+           for i in $predeps $postdeps ; do
+             # can't use Xsed below, because $i might contain '/'
+             tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
+           done
+         fi
+         if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[      ]//g' |
+            $GREP . >/dev/null; then
+           $ECHO
+           if test "X$deplibs_check_method" = "Xnone"; then
+             $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
+           else
+             $ECHO "*** Warning: inter-library dependencies are not known to be supported."
+           fi
+           $ECHO "*** All declared inter-library dependencies are being dropped."
+           droppeddeps=yes
+         fi
+         ;;
+       esac
+       versuffix=$versuffix_save
+       major=$major_save
+       release=$release_save
+       libname=$libname_save
+       name=$name_save
+
+       case $host in
+       *-*-rhapsody* | *-*-darwin1.[012])
+         # On Rhapsody replace the C library with the System framework
+         newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+         ;;
+       esac
+
+       if test "$droppeddeps" = yes; then
+         if test "$module" = yes; then
+           $ECHO
+           $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
+           $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+           $ECHO "*** a static module, that should work as long as the dlopening"
+           $ECHO "*** application is linked with the -dlopen flag."
+           if test -z "$global_symbol_pipe"; then
+             $ECHO
+             $ECHO "*** However, this would only work if libtool was able to extract symbol"
+             $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
+             $ECHO "*** not find such a program.  So, this module is probably useless."
+             $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
+           fi
+           if test "$build_old_libs" = no; then
+             oldlibs="$output_objdir/$libname.$libext"
+             build_libtool_libs=module
+             build_old_libs=yes
+           else
+             build_libtool_libs=no
+           fi
+         else
+           $ECHO "*** The inter-library dependencies that have been dropped here will be"
+           $ECHO "*** automatically added whenever a program is linked with this library"
+           $ECHO "*** or is declared to -dlopen it."
+
+           if test "$allow_undefined" = no; then
+             $ECHO
+             $ECHO "*** Since this library must not contain undefined symbols,"
+             $ECHO "*** because either the platform does not support them or"
+             $ECHO "*** it was explicitly requested with -no-undefined,"
+             $ECHO "*** libtool will only create a static version of it."
+             if test "$build_old_libs" = no; then
+               oldlibs="$output_objdir/$libname.$libext"
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         fi
+       fi
+       # Done checking deplibs!
+       deplibs=$newdeplibs
+      fi
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+       *-*-darwin*)
+         newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+         new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+         deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+         ;;
+      esac
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+       case " $new_libs " in
+       *" -L$path/$objdir "*) ;;
+       *)
+         case " $deplibs " in
+         *" -L$path/$objdir "*)
+           new_libs="$new_libs -L$path/$objdir" ;;
+         esac
+         ;;
+       esac
+      done
+      for deplib in $deplibs; do
+       case $deplib in
+       -L*)
+         case " $new_libs " in
+         *" $deplib "*) ;;
+         *) new_libs="$new_libs $deplib" ;;
+         esac
+         ;;
+       *) new_libs="$new_libs $deplib" ;;
+       esac
+      done
+      deplibs="$new_libs"
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+       if test "$hardcode_into_libs" = yes; then
+         # Hardcode the library paths
+         hardcode_libdirs=
+         dep_rpath=
+         rpath="$finalize_rpath"
+         test "$mode" != relink && rpath="$compile_rpath$rpath"
+         for libdir in $rpath; do
+           if test -n "$hardcode_libdir_flag_spec"; then
+             if test -n "$hardcode_libdir_separator"; then
+               if test -z "$hardcode_libdirs"; then
+                 hardcode_libdirs="$libdir"
+               else
+                 # Just accumulate the unique libdirs.
+                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                   ;;
+                 *)
+                   hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+                   ;;
+                 esac
+               fi
+             else
+               eval flag=\"$hardcode_libdir_flag_spec\"
+               dep_rpath="$dep_rpath $flag"
+             fi
+           elif test -n "$runpath_var"; then
+             case "$perm_rpath " in
+             *" $libdir "*) ;;
+             *) perm_rpath="$perm_rpath $libdir" ;;
+             esac
+           fi
+         done
+         # Substitute the hardcoded libdirs into the rpath.
+         if test -n "$hardcode_libdir_separator" &&
+            test -n "$hardcode_libdirs"; then
+           libdir="$hardcode_libdirs"
+           if test -n "$hardcode_libdir_flag_spec_ld"; then
+             eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+           else
+             eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+           fi
+         fi
+         if test -n "$runpath_var" && test -n "$perm_rpath"; then
+           # We should set the runpath_var.
+           rpath=
+           for dir in $perm_rpath; do
+             rpath="$rpath$dir:"
+           done
+           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+         fi
+         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+       fi
+
+       shlibpath="$finalize_shlibpath"
+       test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+       if test -n "$shlibpath"; then
+         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+       fi
+
+       # Get the real and link names of the library.
+       eval shared_ext=\"$shrext_cmds\"
+       eval library_names=\"$library_names_spec\"
+       set dummy $library_names
+       shift
+       realname="$1"
+       shift
+
+       if test -n "$soname_spec"; then
+         eval soname=\"$soname_spec\"
+       else
+         soname="$realname"
+       fi
+       if test -z "$dlname"; then
+         dlname=$soname
+       fi
+
+       lib="$output_objdir/$realname"
+       linknames=
+       for link
+       do
+         linknames="$linknames $link"
+       done
+
+       # Use standard objects if they are pic
+       test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+       test "X$libobjs" = "X " && libobjs=
+
+       delfiles=
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+         export_symbols="$output_objdir/$libname.uexp"
+         delfiles="$delfiles $export_symbols"
+       fi
+
+       orig_export_symbols=
+       case $host_os in
+       cygwin* | mingw* | cegcc*)
+         if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+           # exporting using user supplied symfile
+           if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+             # and it's NOT already a .def file. Must figure out
+             # which of the given symbols are data symbols and tag
+             # them as such. So, trigger use of export_symbols_cmds.
+             # export_symbols gets reassigned inside the "prepare
+             # the list of exported symbols" if statement, so the
+             # include_expsyms logic still works.
+             orig_export_symbols="$export_symbols"
+             export_symbols=
+             always_export_symbols=yes
+           fi
+         fi
+         ;;
+       esac
+
+       # Prepare the list of exported symbols
+       if test -z "$export_symbols"; then
+         if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+           func_verbose "generating symbol list for \`$libname.la'"
+           export_symbols="$output_objdir/$libname.exp"
+           $opt_dry_run || $RM $export_symbols
+           cmds=$export_symbols_cmds
+           save_ifs="$IFS"; IFS='~'
+           for cmd in $cmds; do
+             IFS="$save_ifs"
+             eval cmd=\"$cmd\"
+             func_len " $cmd"
+             len=$func_len_result
+             if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+               func_show_eval "$cmd" 'exit $?'
+               skipped_export=false
+             else
+               # The command line is too long to execute in one step.
+               func_verbose "using reloadable object file for export list..."
+               skipped_export=:
+               # Break out early, otherwise skipped_export may be
+               # set to false by a later but shorter cmd.
+               break
+             fi
+           done
+           IFS="$save_ifs"
+           if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
+       fi
+
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         tmp_export_symbols="$export_symbols"
+         test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+         $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+       fi
+
+       if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+         # The given exports_symbols file has to be filtered, so filter it.
+         func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+         # FIXME: $output_objdir/$libname.filter potentially contains lots of
+         # 's' commands which not all seds can handle. GNU sed should be fine
+         # though. Also, the filter scales superlinearly with the number of
+         # global variables. join(1) would be nice here, but unfortunately
+         # isn't a blessed tool.
+         $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+         delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+         export_symbols=$output_objdir/$libname.def
+         $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+       fi
+
+       tmp_deplibs=
+       for test_deplib in $deplibs; do
+         case " $convenience " in
+         *" $test_deplib "*) ;;
+         *)
+           tmp_deplibs="$tmp_deplibs $test_deplib"
+           ;;
+         esac
+       done
+       deplibs="$tmp_deplibs"
+
+       if test -n "$convenience"; then
+         if test -n "$whole_archive_flag_spec" &&
+           test "$compiler_needs_object" = yes &&
+           test -z "$libobjs"; then
+           # extract the archives, so we have objects to list.
+           # TODO: could optimize this to just extract one archive.
+           whole_archive_flag_spec=
+         fi
+         if test -n "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+           test "X$libobjs" = "X " && libobjs=
+         else
+           gentop="$output_objdir/${outputname}x"
+           generated="$generated $gentop"
+
+           func_extract_archives $gentop $convenience
+           libobjs="$libobjs $func_extract_archives_result"
+           test "X$libobjs" = "X " && libobjs=
+         fi
+       fi
+
+       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+         eval flag=\"$thread_safe_flag_spec\"
+         linker_flags="$linker_flags $flag"
+       fi
+
+       # Make a backup of the uninstalled library when relinking
+       if test "$mode" = relink; then
+         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+       fi
+
+       # Do each of the archive commands.
+       if test "$module" = yes && test -n "$module_cmds" ; then
+         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+           eval test_cmds=\"$module_expsym_cmds\"
+           cmds=$module_expsym_cmds
+         else
+           eval test_cmds=\"$module_cmds\"
+           cmds=$module_cmds
+         fi
+       else
+         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+           eval test_cmds=\"$archive_expsym_cmds\"
+           cmds=$archive_expsym_cmds
+         else
+           eval test_cmds=\"$archive_cmds\"
+           cmds=$archive_cmds
+         fi
+       fi
+
+       if test "X$skipped_export" != "X:" &&
+          func_len " $test_cmds" &&
+          len=$func_len_result &&
+          test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         :
+       else
+         # The command line is too long to link in one step, link piecewise
+         # or, if using GNU ld and skipped_export is not :, use a linker
+         # script.
+
+         # Save the value of $output and $libobjs because we want to
+         # use them later.  If we have whole_archive_flag_spec, we
+         # want to use save_libobjs as it was before
+         # whole_archive_flag_spec was expanded, because we can't
+         # assume the linker understands whole_archive_flag_spec.
+         # This may have to be revisited, in case too many
+         # convenience libraries get linked in and end up exceeding
+         # the spec.
+         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+         fi
+         save_output=$output
+         output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
+
+         # Clear the reloadable object creation command queue and
+         # initialize k to one.
+         test_cmds=
+         concat_cmds=
+         objlist=
+         last_robj=
+         k=1
+
+         if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+           output=${output_objdir}/${output_la}.lnkscript
+           func_verbose "creating GNU ld script: $output"
+           $ECHO 'INPUT (' > $output
+           for obj in $save_libobjs
+           do
+             $ECHO "$obj" >> $output
+           done
+           $ECHO ')' >> $output
+           delfiles="$delfiles $output"
+         elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+           output=${output_objdir}/${output_la}.lnk
+           func_verbose "creating linker input file list: $output"
+           : > $output
+           set x $save_libobjs
+           shift
+           firstobj=
+           if test "$compiler_needs_object" = yes; then
+             firstobj="$1 "
+             shift
+           fi
+           for obj
+           do
+             $ECHO "$obj" >> $output
+           done
+           delfiles="$delfiles $output"
+           output=$firstobj\"$file_list_spec$output\"
+         else
+           if test -n "$save_libobjs"; then
+             func_verbose "creating reloadable object files..."
+             output=$output_objdir/$output_la-${k}.$objext
+             eval test_cmds=\"$reload_cmds\"
+             func_len " $test_cmds"
+             len0=$func_len_result
+             len=$len0
+
+             # Loop over the list of objects to be linked.
+             for obj in $save_libobjs
+             do
+               func_len " $obj"
+               func_arith $len + $func_len_result
+               len=$func_arith_result
+               if test "X$objlist" = X ||
+                  test "$len" -lt "$max_cmd_len"; then
+                 func_append objlist " $obj"
+               else
+                 # The command $test_cmds is almost too long, add a
+                 # command to the queue.
+                 if test "$k" -eq 1 ; then
+                   # The first file doesn't have a previous command to add.
+                   eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+                 else
+                   # All subsequent reloadable object files will link in
+                   # the last one created.
+                   eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
+                 fi
+                 last_robj=$output_objdir/$output_la-${k}.$objext
+                 func_arith $k + 1
+                 k=$func_arith_result
+                 output=$output_objdir/$output_la-${k}.$objext
+                 objlist=$obj
+                 func_len " $last_robj"
+                 func_arith $len0 + $func_len_result
+                 len=$func_arith_result
+               fi
+             done
+             # Handle the remaining objects by creating one last
+             # reloadable object file.  All subsequent reloadable object
+             # files will link in the last one created.
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+             if test -n "$last_robj"; then
+               eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+             fi
+             delfiles="$delfiles $output"
+
+           else
+             output=
+           fi
+
+           if ${skipped_export-false}; then
+             func_verbose "generating symbol list for \`$libname.la'"
+             export_symbols="$output_objdir/$libname.exp"
+             $opt_dry_run || $RM $export_symbols
+             libobjs=$output
+             # Append the command to create the export file.
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+             if test -n "$last_robj"; then
+               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+             fi
+           fi
+
+           test -n "$save_libobjs" &&
+             func_verbose "creating a temporary reloadable object file: $output"
+
+           # Loop through the commands generated above and execute them.
+           save_ifs="$IFS"; IFS='~'
+           for cmd in $concat_cmds; do
+             IFS="$save_ifs"
+             $opt_silent || {
+                 func_quote_for_expand "$cmd"
+                 eval "func_echo $func_quote_for_expand_result"
+             }
+             $opt_dry_run || eval "$cmd" || {
+               lt_exit=$?
+
+               # Restore the uninstalled library and exit
+               if test "$mode" = relink; then
+                 ( cd "$output_objdir" && \
+                   $RM "${realname}T" && \
+                   $MV "${realname}U" "$realname" )
+               fi
+
+               exit $lt_exit
+             }
+           done
+           IFS="$save_ifs"
+
+           if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
+
+          if ${skipped_export-false}; then
+           if test -n "$export_symbols" && test -n "$include_expsyms"; then
+             tmp_export_symbols="$export_symbols"
+             test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+             $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
+           fi
+
+           if test -n "$orig_export_symbols"; then
+             # The given exports_symbols file has to be filtered, so filter it.
+             func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+             # FIXME: $output_objdir/$libname.filter potentially contains lots of
+             # 's' commands which not all seds can handle. GNU sed should be fine
+             # though. Also, the filter scales superlinearly with the number of
+             # global variables. join(1) would be nice here, but unfortunately
+             # isn't a blessed tool.
+             $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+             delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+             export_symbols=$output_objdir/$libname.def
+             $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+           fi
+         fi
+
+         libobjs=$output
+         # Restore the value of output.
+         output=$save_output
+
+         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+           test "X$libobjs" = "X " && libobjs=
+         fi
+         # Expand the library linking commands again to reset the
+         # value of $libobjs for piecewise linking.
+
+         # Do each of the archive commands.
+         if test "$module" = yes && test -n "$module_cmds" ; then
+           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+             cmds=$module_expsym_cmds
+           else
+             cmds=$module_cmds
+           fi
+         else
+           if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+             cmds=$archive_expsym_cmds
+           else
+             cmds=$archive_cmds
+           fi
+         fi
+       fi
+
+       if test -n "$delfiles"; then
+         # Append the command to remove temporary files to $cmds.
+         eval cmds=\"\$cmds~\$RM $delfiles\"
+       fi
+
+       # Add any objects from preloaded convenience libraries
+       if test -n "$dlprefiles"; then
+         gentop="$output_objdir/${outputname}x"
+         generated="$generated $gentop"
+
+         func_extract_archives $gentop $dlprefiles
+         libobjs="$libobjs $func_extract_archives_result"
+         test "X$libobjs" = "X " && libobjs=
+       fi
+
+       save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         eval cmd=\"$cmd\"
+         $opt_silent || {
+           func_quote_for_expand "$cmd"
+           eval "func_echo $func_quote_for_expand_result"
+         }
+         $opt_dry_run || eval "$cmd" || {
+           lt_exit=$?
+
+           # Restore the uninstalled library and exit
+           if test "$mode" = relink; then
+             ( cd "$output_objdir" && \
+               $RM "${realname}T" && \
+               $MV "${realname}U" "$realname" )
+           fi
+
+           exit $lt_exit
+         }
+       done
+       IFS="$save_ifs"
+
+       # Restore the uninstalled library and exit
+       if test "$mode" = relink; then
+         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+         if test -n "$convenience"; then
+           if test -z "$whole_archive_flag_spec"; then
+             func_show_eval '${RM}r "$gentop"'
+           fi
+         fi
+
+         exit $EXIT_SUCCESS
+       fi
+
+       # Create links to the real library.
+       for linkname in $linknames; do
+         if test "$realname" != "$linkname"; then
+           func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+         fi
+       done
+
+       # If -module or -export-dynamic was specified, set the dlname.
+       if test "$module" = yes || test "$export_dynamic" = yes; then
+         # On all known operating systems, these are identical.
+         dlname="$soname"
+       fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       func_warning "\`-dlopen' is ignored for objects"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       func_warning "\`-l' and \`-L' are ignored for objects" ;;
+      esac
+
+      test -n "$rpath" && \
+       func_warning "\`-rpath' is ignored for objects"
+
+      test -n "$xrpath" && \
+       func_warning "\`-R' is ignored for objects"
+
+      test -n "$vinfo" && \
+       func_warning "\`-version-info' is ignored for objects"
+
+      test -n "$release" && \
+       func_warning "\`-release' is ignored for objects"
+
+      case $output in
+      *.lo)
+       test -n "$objs$old_deplibs" && \
+         func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+       libobj=$output
+       func_lo2o "$libobj"
+       obj=$func_lo2o_result
+       ;;
+      *)
+       libobj=
+       obj="$output"
+       ;;
+      esac
+
+      # Delete the old objects.
+      $opt_dry_run || $RM $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
+      if test -n "$convenience"; then
+       if test -n "$whole_archive_flag_spec"; then
+         eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+         reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+       else
+         gentop="$output_objdir/${obj}x"
+         generated="$generated $gentop"
+
+         func_extract_archives $gentop $convenience
+         reload_conv_objs="$reload_objs $func_extract_archives_result"
+       fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      func_execute_cmds "$reload_cmds" 'exit $?'
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+       if test -n "$gentop"; then
+         func_show_eval '${RM}r "$gentop"'
+       fi
+
+       exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+       if test -n "$gentop"; then
+         func_show_eval '${RM}r "$gentop"'
+       fi
+
+       # Create an invalid libtool object if no PIC, so that we don't
+       # accidentally link it into a program.
+       # $show "echo timestamp > $libobj"
+       # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+       exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+       # Only do commands if we really have different PIC objects.
+       reload_objs="$libobjs $reload_conv_objs"
+       output="$libobj"
+       func_execute_cmds "$reload_cmds" 'exit $?'
+      fi
+
+      if test -n "$gentop"; then
+       func_show_eval '${RM}r "$gentop"'
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+       *cygwin*) func_stripname '' '.exe' "$output"
+                 output=$func_stripname_result.exe;;
+      esac
+      test -n "$vinfo" && \
+       func_warning "\`-version-info' is ignored for programs"
+
+      test -n "$release" && \
+       func_warning "\`-release' is ignored for programs"
+
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+       && test "$dlopen_self" = unknown \
+       && test "$dlopen_self_static" = unknown && \
+         func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+       # On Rhapsody replace the C library is the System framework
+       compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+       finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
+       ;;
+      esac
+
+      case $host in
+      *-*-darwin*)
+       # Don't allow lazy linking, it breaks C++ global constructors
+       # But is supposedly fixed on 10.4 or later (yay!).
+       if test "$tagname" = CXX ; then
+         case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+           10.[0123])
+             compile_command="$compile_command ${wl}-bind_at_load"
+             finalize_command="$finalize_command ${wl}-bind_at_load"
+           ;;
+         esac
+       fi
+       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+       compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+       finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
+       ;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+       case " $new_libs " in
+       *" -L$path/$objdir "*) ;;
+       *)
+         case " $compile_deplibs " in
+         *" -L$path/$objdir "*)
+           new_libs="$new_libs -L$path/$objdir" ;;
+         esac
+         ;;
+       esac
+      done
+      for deplib in $compile_deplibs; do
+       case $deplib in
+       -L*)
+         case " $new_libs " in
+         *" $deplib "*) ;;
+         *) new_libs="$new_libs $deplib" ;;
+         esac
+         ;;
+       *) new_libs="$new_libs $deplib" ;;
+       esac
+      done
+      compile_deplibs="$new_libs"
+
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       for libdir in $rpath $xrpath; do
+         # This is the magic to use -rpath.
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_rpath="$finalize_rpath $libdir" ;;
+         esac
+       done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           rpath="$rpath $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$perm_rpath " in
+         *" $libdir "*) ;;
+         *) perm_rpath="$perm_rpath $libdir" ;;
+         esac
+       fi
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+         testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+         case :$dllsearchpath: in
+         *":$libdir:"*) ;;
+         ::) dllsearchpath=$libdir;;
+         *) dllsearchpath="$dllsearchpath:$libdir";;
+         esac
+         case :$dllsearchpath: in
+         *":$testbindir:"*) ;;
+         ::) dllsearchpath=$testbindir;;
+         *) dllsearchpath="$dllsearchpath:$testbindir";;
+         esac
+         ;;
+       esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           rpath="$rpath $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$finalize_perm_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+         esac
+       fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+       # Transform all the library objects into standard objects.
+       compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+       finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+       func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=yes
+      case $host in
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *cegcc)
+        # Disable wrappers for cegcc, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      esac
+      if test "$wrappers_required" = no; then
+       # Replace the output file specification.
+       compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       link_command="$compile_command$compile_rpath"
+
+       # We have no uninstalled library dependencies, so finalize right now.
+       exit_status=0
+       func_show_eval "$link_command" 'exit_status=$?'
+
+       # Delete the generated files.
+       if test -f "$output_objdir/${outputname}S.${objext}"; then
+         func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+       fi
+
+       exit $exit_status
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+       if test -n "$perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $perm_rpath; do
+           rpath="$rpath$dir:"
+         done
+         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+       if test -n "$finalize_perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $finalize_perm_rpath; do
+           rpath="$rpath$dir:"
+         done
+         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+      fi
+
+      if test "$no_install" = yes; then
+       # We don't need to create a wrapper script.
+       link_command="$compile_var$compile_command$compile_rpath"
+       # Replace the output file specification.
+       link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       # Delete the old output file.
+       $opt_dry_run || $RM $output
+       # Link the executable and exit
+       func_show_eval "$link_command" 'exit $?'
+       exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+       # Fast installation is not supported
+       link_command="$compile_var$compile_command$compile_rpath"
+       relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+       func_warning "this platform does not like uninstalled shared libraries"
+       func_warning "\`$output' will be relinked during installation"
+      else
+       if test "$fast_install" != no; then
+         link_command="$finalize_var$compile_command$finalize_rpath"
+         if test "$fast_install" = yes; then
+           relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+         else
+           # fast_install is set to needless
+           relink_command=
+         fi
+       else
+         link_command="$compile_var$compile_command$compile_rpath"
+         relink_command="$finalize_var$finalize_command$finalize_rpath"
+       fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      func_show_eval "$link_command" 'exit $?'
+
+      # Now create the wrapper script.
+      func_verbose "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+       # Preserve any variables that may affect compiler behavior
+       for var in $variables_saved_for_relink; do
+         if eval test -z \"\${$var+set}\"; then
+           relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+         elif eval var_value=\$$var; test -z "$var_value"; then
+           relink_command="$var=; export $var; $relink_command"
+         else
+           func_quote_for_eval "$var_value"
+           relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+         fi
+       done
+       relink_command="(cd `pwd`; $relink_command)"
+       relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $ECHO for shipping.
+      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
+       case $progpath in
+       [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+       *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+       esac
+       qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+       qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
+       # win32 will think the script is a binary if it has
+       # a .exe suffix, so we strip it off here.
+       case $output in
+         *.exe) func_stripname '' '.exe' "$output"
+                output=$func_stripname_result ;;
+       esac
+       # test for cygwin because mv fails w/o .exe extensions
+       case $host in
+         *cygwin*)
+           exeext=.exe
+           func_stripname '' '.exe' "$outputname"
+           outputname=$func_stripname_result ;;
+         *) exeext= ;;
+       esac
+       case $host in
+         *cygwin* | *mingw* )
+           func_dirname_and_basename "$output" "" "."
+           output_name=$func_basename_result
+           output_path=$func_dirname_result
+           cwrappersource="$output_path/$objdir/lt-$output_name.c"
+           cwrapper="$output_path/$output_name.exe"
+           $RM $cwrappersource $cwrapper
+           trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+           func_emit_cwrapperexe_src > $cwrappersource
+
+           # The wrapper executable is built using the $host compiler,
+           # because it contains $host paths and files. If cross-
+           # compiling, it, like the target executable, must be
+           # executed on the $host or under an emulation environment.
+           $opt_dry_run || {
+             $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+             $STRIP $cwrapper
+           }
+
+           # Now, create the wrapper script for func_source use:
+           func_ltwrapper_scriptname $cwrapper
+           $RM $func_ltwrapper_scriptname_result
+           trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+           $opt_dry_run || {
+             # note: this script will not be executed, so do not chmod.
+             if test "x$build" = "x$host" ; then
+               $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+             else
+               func_emit_wrapper no > $func_ltwrapper_scriptname_result
+             fi
+           }
+         ;;
+         * )
+           $RM $output
+           trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+           func_emit_wrapper no > $output
+           chmod +x $output
+         ;;
+       esac
+      }
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+       oldobjs="$libobjs_save $symfileobj"
+       addlibs="$convenience"
+       build_libtool_libs=no
+      else
+       if test "$build_libtool_libs" = module; then
+         oldobjs="$libobjs_save"
+         build_libtool_libs=no
+       else
+         oldobjs="$old_deplibs $non_pic_objects"
+         if test "$preload" = yes && test -f "$symfileobj"; then
+           oldobjs="$oldobjs $symfileobj"
+         fi
+       fi
+       addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+       gentop="$output_objdir/${outputname}x"
+       generated="$generated $gentop"
+
+       func_extract_archives $gentop $addlibs
+       oldobjs="$oldobjs $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+
+       # Add any objects from preloaded convenience libraries
+       if test -n "$dlprefiles"; then
+         gentop="$output_objdir/${outputname}x"
+         generated="$generated $gentop"
+
+         func_extract_archives $gentop $dlprefiles
+         oldobjs="$oldobjs $func_extract_archives_result"
+       fi
+
+       # POSIX demands no paths to be encoded in archives.  We have
+       # to avoid creating archives with duplicate basenames if we
+       # might have to extract them afterwards, e.g., when creating a
+       # static archive out of a convenience library, or when linking
+       # the entirety of a libtool archive into another (currently
+       # not supported by libtool).
+       if (for obj in $oldobjs
+           do
+             func_basename "$obj"
+             $ECHO "$func_basename_result"
+           done | sort | sort -uc >/dev/null 2>&1); then
+         :
+       else
+         $ECHO "copying selected object files to avoid basename conflicts..."
+         gentop="$output_objdir/${outputname}x"
+         generated="$generated $gentop"
+         func_mkdir_p "$gentop"
+         save_oldobjs=$oldobjs
+         oldobjs=
+         counter=1
+         for obj in $save_oldobjs
+         do
+           func_basename "$obj"
+           objbase="$func_basename_result"
+           case " $oldobjs " in
+           " ") oldobjs=$obj ;;
+           *[\ /]"$objbase "*)
+             while :; do
+               # Make sure we don't pick an alternate name that also
+               # overlaps.
+               newobj=lt$counter-$objbase
+               func_arith $counter + 1
+               counter=$func_arith_result
+               case " $oldobjs " in
+               *[\ /]"$newobj "*) ;;
+               *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+               esac
+             done
+             func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+             oldobjs="$oldobjs $gentop/$newobj"
+             ;;
+           *) oldobjs="$oldobjs $obj" ;;
+           esac
+         done
+       fi
+       eval cmds=\"$old_archive_cmds\"
+
+       func_len " $cmds"
+       len=$func_len_result
+       if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         cmds=$old_archive_cmds
+       else
+         # the command line is too long to link in one step, link in parts
+         func_verbose "using piecewise archive linking..."
+         save_RANLIB=$RANLIB
+         RANLIB=:
+         objlist=
+         concat_cmds=
+         save_oldobjs=$oldobjs
+         oldobjs=
+         # Is there a better way of finding the last object in the list?
+         for obj in $save_oldobjs
+         do
+           last_oldobj=$obj
+         done
+         eval test_cmds=\"$old_archive_cmds\"
+         func_len " $test_cmds"
+         len0=$func_len_result
+         len=$len0
+         for obj in $save_oldobjs
+         do
+           func_len " $obj"
+           func_arith $len + $func_len_result
+           len=$func_arith_result
+           func_append objlist " $obj"
+           if test "$len" -lt "$max_cmd_len"; then
+             :
+           else
+             # the above command should be used before it gets too long
+             oldobjs=$objlist
+             if test "$obj" = "$last_oldobj" ; then
+               RANLIB=$save_RANLIB
+             fi
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+             objlist=
+             len=$len0
+           fi
+         done
+         RANLIB=$save_RANLIB
+         oldobjs=$objlist
+         if test "X$oldobjs" = "X" ; then
+           eval cmds=\"\$concat_cmds\"
+         else
+           eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+         fi
+       fi
+      fi
+      func_execute_cmds "$cmds" 'exit $?'
+    done
+
+    test -n "$generated" && \
+      func_show_eval "${RM}r$generated"
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      func_verbose "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+       if eval test -z \"\${$var+set}\"; then
+         relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+       elif eval var_value=\$$var; test -z "$var_value"; then
+         relink_command="$var=; export $var; $relink_command"
+       else
+         func_quote_for_eval "$var_value"
+         relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+       fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+       relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+       for installed in no yes; do
+         if test "$installed" = yes; then
+           if test -z "$install_libdir"; then
+             break
+           fi
+           output="$output_objdir/$outputname"i
+           # Replace all uninstalled libtool libraries with the installed ones
+           newdependency_libs=
+           for deplib in $dependency_libs; do
+             case $deplib in
+             *.la)
+               func_basename "$deplib"
+               name="$func_basename_result"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+               test -z "$libdir" && \
+                 func_fatal_error "\`$deplib' is not a valid libtool archive"
+               newdependency_libs="$newdependency_libs $libdir/$name"
+               ;;
+             *) newdependency_libs="$newdependency_libs $deplib" ;;
+             esac
+           done
+           dependency_libs="$newdependency_libs"
+           newdlfiles=
+
+           for lib in $dlfiles; do
+             case $lib in
+             *.la)
+               func_basename "$lib"
+               name="$func_basename_result"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+               test -z "$libdir" && \
+                 func_fatal_error "\`$lib' is not a valid libtool archive"
+               newdlfiles="$newdlfiles $libdir/$name"
+               ;;
+             *) newdlfiles="$newdlfiles $lib" ;;
+             esac
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             case $lib in
+             *.la)
+               # Only pass preopened files to the pseudo-archive (for
+               # eventual linking with the app. that links it) if we
+               # didn't already link the preopened objects directly into
+               # the library:
+               func_basename "$lib"
+               name="$func_basename_result"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+               test -z "$libdir" && \
+                 func_fatal_error "\`$lib' is not a valid libtool archive"
+               newdlprefiles="$newdlprefiles $libdir/$name"
+               ;;
+             esac
+           done
+           dlprefiles="$newdlprefiles"
+         else
+           newdlfiles=
+           for lib in $dlfiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             newdlfiles="$newdlfiles $abs"
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             newdlprefiles="$newdlprefiles $abs"
+           done
+           dlprefiles="$newdlprefiles"
+         fi
+         $RM $output
+         # place dlname in correct position for cygwin
+         tdlname=$dlname
+         case $host,$output,$installed,$module,$dlname in
+           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+         esac
+         $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+         if test "$installed" = no && test "$need_relink" = yes; then
+           $ECHO >> $output "\
+relink_command=\"$relink_command\""
+         fi
+       done
+      }
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+}
+
+{ test "$mode" = link || test "$mode" = relink; } &&
+    func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $opt_debug
+    RM="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) RM="$RM $arg"; rmforce=yes ;;
+      -*) RM="$RM $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    test -z "$RM" && \
+      func_fatal_help "you must specify an RM program"
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      func_dirname "$file" "" "."
+      dir="$func_dirname_result"
+      if test "X$dir" = X.; then
+       objdir="$origobjdir"
+      else
+       objdir="$dir/$origobjdir"
+      fi
+      func_basename "$file"
+      name="$func_basename_result"
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+       case " $rmdirs " in
+         *" $objdir "*) ;;
+         *) rmdirs="$rmdirs $objdir" ;;
+       esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if { test -L "$file"; } >/dev/null 2>&1 ||
+        { test -h "$file"; } >/dev/null 2>&1 ||
+        test -f "$file"; then
+       :
+      elif test -d "$file"; then
+       exit_status=1
+       continue
+      elif test "$rmforce" = yes; then
+       continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+       # Possibly a libtool archive, so verify it.
+       if func_lalib_p "$file"; then
+         func_source $dir/$name
+
+         # Delete the libtool libraries and symlinks.
+         for n in $library_names; do
+           rmfiles="$rmfiles $objdir/$n"
+         done
+         test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+         case "$mode" in
+         clean)
+           case "  $library_names " in
+           # "  " in the beginning catches empty $dlname
+           *" $dlname "*) ;;
+           *) rmfiles="$rmfiles $objdir/$dlname" ;;
+           esac
+           test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+           ;;
+         uninstall)
+           if test -n "$library_names"; then
+             # Do each command in the postuninstall commands.
+             func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+           fi
+
+           if test -n "$old_library"; then
+             # Do each command in the old_postuninstall commands.
+             func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+           fi
+           # FIXME: should reinstall the best remaining shared library.
+           ;;
+         esac
+       fi
+       ;;
+
+      *.lo)
+       # Possibly a libtool object, so verify it.
+       if func_lalib_p "$file"; then
+
+         # Read the .lo file
+         func_source $dir/$name
+
+         # Add PIC object to the list of files to remove.
+         if test -n "$pic_object" &&
+            test "$pic_object" != none; then
+           rmfiles="$rmfiles $dir/$pic_object"
+         fi
+
+         # Add non-PIC object to the list of files to remove.
+         if test -n "$non_pic_object" &&
+            test "$non_pic_object" != none; then
+           rmfiles="$rmfiles $dir/$non_pic_object"
+         fi
+       fi
+       ;;
+
+      *)
+       if test "$mode" = clean ; then
+         noexename=$name
+         case $file in
+         *.exe)
+           func_stripname '' '.exe' "$file"
+           file=$func_stripname_result
+           func_stripname '' '.exe' "$name"
+           noexename=$func_stripname_result
+           # $file with .exe has already been added to rmfiles,
+           # add $file without .exe
+           rmfiles="$rmfiles $file"
+           ;;
+         esac
+         # Do a test to see if this is a libtool program.
+         if func_ltwrapper_p "$file"; then
+           if func_ltwrapper_executable_p "$file"; then
+             func_ltwrapper_scriptname "$file"
+             relink_command=
+             func_source $func_ltwrapper_scriptname_result
+             rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
+           else
+             relink_command=
+             func_source $dir/$noexename
+           fi
+
+           # note $name still contains .exe if it was in $file originally
+           # as does the version of $file that was added into $rmfiles
+           rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+           if test "$fast_install" = yes && test -n "$relink_command"; then
+             rmfiles="$rmfiles $objdir/lt-$name"
+           fi
+           if test "X$noexename" != "X$name" ; then
+             rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+           fi
+         fi
+       fi
+       ;;
+      esac
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+       func_show_eval "rmdir $dir >/dev/null 2>&1"
+      fi
+    done
+
+    exit $exit_status
+}
+
+{ test "$mode" = uninstall || test "$mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
+
+test -z "$mode" && {
+  help="$generic_help"
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode \`$mode'"
+
+if test -n "$exec_cmd"; then
+  eval exec "$exec_cmd"
+  exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh
new file mode 100755 (executable)
index 0000000..e631b22
--- /dev/null
@@ -0,0 +1,205 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009 Free
+# Software Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+  '')
+     echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification time of FILE.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "mdate-sh $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable.  Since we cannot assume `unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+  TIME_STYLE=posix-long-iso
+  export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+  ls_command='ls -L -l -d'
+else
+  ls_command='ls -l -d'
+fi
+# Avoid user/group names that might have spaces, when possible.
+if ls -n /dev/null 1>/dev/null 2>&1; then
+  ls_command="$ls_command -n"
+fi
+
+# A `ls -l' line looks as follows on OS/2.
+#  drwxrwx---        0 Aug 11  2001 foo
+# This differs from Unix, which adds ownership information.
+#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month.  This cannot work with files whose owner is a
+# user named `Jan', or `Feb', etc.  However, it's unlikely that `/'
+# will be owned by a user whose name is a month.  So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`$ls_command /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+  shift
+  # Add another shift to the command.
+  command="$command shift;"
+  case $1 in
+    Jan) month=January; nummonth=1;;
+    Feb) month=February; nummonth=2;;
+    Mar) month=March; nummonth=3;;
+    Apr) month=April; nummonth=4;;
+    May) month=May; nummonth=5;;
+    Jun) month=June; nummonth=6;;
+    Jul) month=July; nummonth=7;;
+    Aug) month=August; nummonth=8;;
+    Sep) month=September; nummonth=9;;
+    Oct) month=October; nummonth=10;;
+    Nov) month=November; nummonth=11;;
+    Dec) month=December; nummonth=12;;
+  esac
+done
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+  Jan) month=January; nummonth=1;;
+  Feb) month=February; nummonth=2;;
+  Mar) month=March; nummonth=3;;
+  Apr) month=April; nummonth=4;;
+  May) month=May; nummonth=5;;
+  Jun) month=June; nummonth=6;;
+  Jul) month=July; nummonth=7;;
+  Aug) month=August; nummonth=8;;
+  Sep) month=September; nummonth=9;;
+  Oct) month=October; nummonth=10;;
+  Nov) month=November; nummonth=11;;
+  Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+  ???*) day=$1;;
+  *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+  *:*) set `date`; eval year=\$$#
+       case $2 in
+        Jan) nummonthtod=1;;
+        Feb) nummonthtod=2;;
+        Mar) nummonthtod=3;;
+        Apr) nummonthtod=4;;
+        May) nummonthtod=5;;
+        Jun) nummonthtod=6;;
+        Jul) nummonthtod=7;;
+        Aug) nummonthtod=8;;
+        Sep) nummonthtod=9;;
+        Oct) nummonthtod=10;;
+        Nov) nummonthtod=11;;
+        Dec) nummonthtod=12;;
+       esac
+       # For the first six month of the year the time notation can also
+       # be used for files modified in the last year.
+       if (expr $nummonth \> $nummonthtod) > /dev/null;
+       then
+        year=`expr $year - 1`
+       fi;;
+  *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/missing b/build-aux/missing
new file mode 100755 (executable)
index 0000000..28055d2
--- /dev/null
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar*)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+          sed 's/\.am$/.in/' |
+          while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo "#! /bin/sh"
+       echo "# Created by GNU Automake missing as a replacement of"
+       echo "#  $ $@"
+       echo "exit 0"
+       chmod +x $file
+       exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+       case $LASTARG in
+       *.y)
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.c
+           fi
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.h
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f y.tab.h; then
+       echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+       echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+       case $LASTARG in
+       *.l)
+           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" lex.yy.c
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f lex.yy.c; then
+       echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+        you modified a dependency of a manual page.  You may need the
+        \`Help2man' package in order for those modifications to take
+        effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo ".ab help2man is required to generate this page"
+       exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+       /^@setfilename/{
+         s/.* \([^ ]*\) *$/\1/
+         p
+         q
+       }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar*)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+       case $firstarg in
+       *o*)
+           firstarg=`echo "$firstarg" | sed s/o//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+       case $firstarg in
+       *h*)
+           firstarg=`echo "$firstarg" | sed s/h//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/pmccabe.css b/build-aux/pmccabe.css
new file mode 100644 (file)
index 0000000..2d94c91
--- /dev/null
@@ -0,0 +1,227 @@
+body {
+
+    font-family: Helvetica, sans-serif;
+
+}
+
+.page_title {
+
+    font: 18pt Georgia, serif;
+/*    font-size: 1.5em;
+    font-weight: bold; */
+    color: darkred;
+    border-bottom: 2px solid darkred;
+}
+
+.section_title {
+
+    font: 14pt Georgia, serif;
+    color: darkred;
+    border-bottom: 2px dashed darkred;
+}
+
+.report_timestamp {
+
+    color: darkred;
+    font-weight: bold;
+
+}
+
+.function_src {
+
+    text-align: left;
+    background: white;
+}
+
+.resume_table {
+
+}
+
+.resume_header_entry {
+    
+    color: black;
+}
+
+.resume_number_entry {
+
+    color: darkred;
+    font-weight: bold;
+    text-align: right;
+}
+
+.ranges_table {
+
+    border-spacing: 0px;
+    border-bottom: solid 2px black;
+    border-top: solid 2px black;
+    border-left: solid 2px black;
+    border-right: solid 2px black;
+}
+
+.ranges_header_entry {
+
+    padding: 5px;
+    border-bottom: solid 1px black;
+    font-size: 1em;
+    font-weight: bold;
+    color: darkred;
+    text-align: left;
+}
+
+.ranges_entry {
+
+}
+
+.ranges_entry_simple {
+
+    background: #87ff75; 
+
+}
+
+.ranges_entry_moderate {
+
+    background: #fffc60;
+
+}
+
+.ranges_entry_high {
+
+    background: #ff5a5d;
+
+}
+
+.ranges_entry_untestable {
+
+    background: #993300
+
+}
+
+
+.function_table {
+
+    border-spacing: 0px;
+    border-bottom: solid 2px black;
+    border-top: solid 2px black;
+    border-left: solid 2px black;
+    border-right: solid 2px black;
+}
+
+.function_table_caption {
+
+    font-size: 1.1em;
+    font-weight: bold;
+    color: black;
+    padding: 5px;
+}
+
+.function_table_header {
+    
+}
+
+
+.function_table_header_entry {
+
+    padding: 5px;
+    border-bottom: solid 1px black;
+    font-size: 1em;
+    font-weight: bold;
+    color: darkred;
+    text-align: left;
+}
+
+.function_entry {
+
+
+}
+
+
+.function_entry_simple {
+
+    background: #87ff75; 
+
+}
+
+.function_entry_moderate {
+
+    background: #fffc60;
+
+}
+
+.function_entry_high {
+
+    background: #ff5a5d;
+
+}
+
+.function_entry_untestable {
+
+    background: #993300
+
+}
+
+
+.function_entry_name {
+
+    font-size: 1em;
+    text-align: left;
+    font-weight: bold;
+    text-valign: top;
+
+    border-top: solid 1px black;
+    padding: 3px;
+}
+
+.function_entry_cyclo {
+
+    font-size: 1em;
+    text-align: right;
+    text-valign: top;
+
+    border-top: solid 1px black;
+    padding: 3px;
+}
+
+.function_entry_number {
+
+    font-size: 1em;
+    text-align: right;
+    text-valign: top;
+
+    border-top: solid 1px black;
+    padding: 3px;
+}
+
+.function_entry_filename {
+
+    font-size: 1em;
+    text-align: left;
+    text-valign: top;
+
+    border-top: solid 1px black;
+    padding: 3px;
+}
+
+.sidemenu {
+    
+    border: 1px black solid;
+    padding: 5px;
+
+}
+
+.sidemenuheader {
+    color: darkred;
+    font-size: 1.1em;
+    font-weight: bold;
+    border-bottom: 1px dashed darkred;
+}
+
+.sidemenuentry {
+
+
+}
+
+.menu {
+
+}
+
diff --git a/build-aux/pmccabe2html b/build-aux/pmccabe2html
new file mode 100755 (executable)
index 0000000..27bb8f3
--- /dev/null
@@ -0,0 +1,908 @@
+#!/usr/bin/awk -f
+# pmccabe2html - pmccabe to html converter
+
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Written by Jose E. Marchesi <jemarch@gnu.org>.
+# Adapted for gnulib by Simon Josefsson <simon@josefsson.org>.
+# Added support for C++ by Giuseppe Scrivano <gscrivano@gnu.org>.
+
+# Typical Invocation is from a Makefile.am:
+#
+# cyclo-libidn.html:
+#      $(PMCCABE) ${top_srcdir}/lib/*.[ch] \
+#              | sort -nr \
+#              | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \
+#                      -v lang=html -v name="$(PACKAGE_NAME)" \
+#                      -v vcurl="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=%FILENAME%;hb=HEAD" \
+#                      -v url="http://www.gnu.org/software/libidn/" \
+#                       -v css=../../build-aux/pmccabe.css \
+#                      > tmp
+#      mv tmp $@
+#
+# The variables available are:
+#   lang     output language, either 'html' or 'wiki'
+#   name     project name
+#   url      link to project's home page
+#   vcurl    URL to version controlled source code browser,
+#            a %FILENAME% in the string is replaced with the relative
+#            source filename
+#   css      CSS stylesheet filename, included verbatim in HTML output
+#   css_url  link to CSS stylesheet, an URL
+
+# Prologue & configuration
+BEGIN {
+    section_global_stats_p = 1
+    section_function_cyclo_p = 1
+
+    # "html" or "wiki"
+    package_name = name
+    output_lang = lang
+
+    # General Options
+    cyclo_simple_max = 10
+    cyclo_moderate_max = 20
+    cyclo_high_max = 50
+    cut_dir = "/../"
+    source_file_link_tmpl = vcurl
+
+    # HTML options
+    if (url != "")
+    {
+       html_prolog = "<a href=\"" url "\">Back to " package_name " Homepage</a><br/><br/>"
+    }
+    html_epilog = "<hr color=\"black\" size=\"2\"/> \
+Copyright (c) 2007, 2008 Free Software Foundation Inc."
+    html_doctype = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \
+\"http://www.w3.org/TR/html401/loose.dtd\">"
+    html_comment = "<!-- Generated by gnulib's pmccabe2html at " systime() " -->"
+    html_title = "Cyclomatic Complexity report for " package_name
+
+    # Wiki options
+    wiki_prolog = "{{Note|This page has been automatically generated}}"
+    wiki_epilog = ""
+
+    # Internal variables
+    nfuncs = 0;
+}
+
+# Functions
+
+function build_stats()
+{
+    # Maximum modified cyclo
+    for (fcn in mcyclo)
+    {
+        num_of_functions++
+        if (mcyclo[fcn] > max_mcyclo)
+        {
+            max_mcyclo = mcyclo[fcn]
+        }
+
+        if (mcyclo[fcn] > cyclo_high_max)
+        {
+            num_of_untestable_functions++
+        }
+        else if (mcyclo[fcn] > cyclo_moderate_max)
+        {
+            num_of_high_functions++
+        }
+        else if (mcyclo[fcn] > cyclo_simple_max)
+        {
+            num_of_moderate_functions++
+        }
+        else
+        {
+            num_of_simple_functions++
+        }
+    }
+}
+
+function html_fnc_table_complete (caption)
+{
+    html_fnc_table(caption, 1, 0, 1, 1, 1, 0, 1)
+}
+
+function html_fnc_table_abbrev (caption)
+{
+    html_fnc_table(caption, 1, 0, 1, 0, 1, 0, 0)
+}
+
+
+function html_fnc_table (caption,
+                         fname_p,
+                         mcyclo_p,
+                         cyclo_p,
+                         num_statements_p,
+                         num_lines_p,
+                         first_line_p,
+                         file_p)
+{
+    print "<table width=\"90%\" class=\"function_table\" cellpadding=\"0\" cellspacing=\"0\">"
+    if (caption != "")
+    {
+        print "<caption class=\"function_table_caption\">" caption "</caption>"
+    }
+    html_fnc_header(fname_p, 
+                    mcyclo_p, 
+                    cyclo_p, 
+                    num_statements_p, 
+                    num_lines_p, 
+                    first_line_p, 
+                    file_p)
+    for (nfnc = 1; nfnc < nfuncs; nfnc++)
+    {
+        html_fnc(nfnc,
+                 fname_p, 
+                 mcyclo_p, 
+                 cyclo_p, 
+                 num_statements_p, 
+                 num_lines_p, 
+                 first_line_p, 
+                 file_p)
+    }
+    print "</table>"
+}
+
+function html_header ()
+{
+    print html_doctype
+    print "<html>"
+    print html_comment
+    print "<head>"
+    print "<title>" html_title "</title>"
+    print ""
+    print "<meta name=\"description\" content=\"" html_title "\">"
+    print "<meta name=\"keywords\" content=\"" html_title "\">"
+    print "<meta name=\"resource-type\" content=\"document\">"
+    print "<meta name=\"distribution\" content=\"global\">"
+    print "<meta name=\"Generator\" content=\"pmccabe2html\">"
+    print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"
+    print "<script language=\"javascript\" type=\"text/javascript\">"
+    print "function show_hide(idCapa, idButton, fuerzaVisibilidad)\
+{\
+        var button = document.getElementById(idButton);\
+       var capa = document.getElementById(idCapa);\
+       if (capa)\
+       {\
+               if (fuerzaVisibilidad && fuerzaVisibilidad!=\"\") {\
+                       if (fuerzaVisibilidad==\"visible\") capa.style.display=\"\";\
+                       else capa.style.display=\"none\";\
+               }\
+               else\
+               {\
+                       if (capa.style.display == \"none\") {\
+                               capa.style.display = \"\";\
+                                button.innerHTML = \"&uarr;\";\
+                       } else {\
+                               capa.style.display = \"none\";\
+                                button.innerHTML = \"&darr;\";     \
+                       }\
+               }\
+       }\
+}"
+    print "</script>"
+
+
+    if (css_url != "")
+    {
+        print "<link rel=\"stylesheet\" href=\"" css_url "\" type =\"text/css\" media=\"screen\"/>"
+    }
+    if (css != "")
+    {
+        print "<style type =\"text/css\" media=\"screen\">"
+       print "<!--"
+        while ((getline cssline < css) > 0)
+        {
+           print cssline
+       }
+        print "-->"
+       print "</style />"
+       close(css)
+    }
+    print "</head>"
+    print "<body lang=\"en\" bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#0000FF\" \
+vlink=\"#800080\" alink=\"#FF0000\">"
+}
+
+function html_footer ()
+{
+    print "</body>"
+    print "</html>"
+}
+
+function html_fnc_header (fname_p,
+                          mcyclo_p,
+                          cyclo_p,
+                          num_statements_p,
+                          num_lines_p,
+                          first_line_p,
+                          file_p)
+{
+    print "<tr class=\"function_table_header\">"
+    if (fname_p)
+    {
+        # Function name
+        print "<td class=\"function_table_header_entry\">"
+        print ""
+        print "</td>"
+
+        print "<td class=\"function_table_header_entry\">"
+        print "Function Name"
+        print "</td>"
+    }
+    if (mcyclo_p)
+    {
+        # Modified cyclo
+        print "<td class=\"function_table_header_entry\">"
+        print "Modified Cyclo"
+        print "</td>"
+    }
+    if (cyclo_p)
+    {
+        # Cyclo
+        print "<td class=\"function_table_header_entry\">"
+        print "Cyclomatic"
+        print "<br/>"
+        print "Complexity"
+        print "</td>"
+    }
+    if (num_statements_p)
+    {
+        print "<td class=\"function_table_header_entry\">"
+        print "Number of"
+        print "<br/>"
+        print "Statements"
+        print "</td>"
+    }
+    if (num_lines_p)
+    {
+        print "<td class=\"function_table_header_entry\">"
+        print "Number of"
+        print "<br/>"
+        print "Lines"
+        print "</td>"
+    }
+    if (first_line_p)
+    {
+        print "<td class=\"function_table_header_entry\">"
+        print "First Line"
+        print "</td>"
+    }
+    if (file_p)
+    {
+        print "<td class=\"function_table_header_entry\">"
+        print "Source File"
+        print "</td>"
+
+    }
+    print "</tr>"
+}
+
+function html_fnc (nfun,
+                   fname_p,
+                   mcyclo_p,
+                   cyclo_p,
+                   num_statements_p,
+                   num_lines_p,
+                   first_line_p,
+                   file_p)
+{
+    fname = fnames[nfun]
+
+    # Function name
+    trclass = "function_entry_simple"
+    if (mcyclo[nfun] > cyclo_high_max)
+    {
+        trclass="function_entry_untestable"
+    }   
+    else if (mcyclo[nfun] > cyclo_moderate_max)
+    {
+        trclass="function_entry_high"
+    }
+    else if (mcyclo[nfun] > cyclo_simple_max)
+    {
+        trclass="function_entry_moderate"
+    }
+
+    print "<tr class=\"" trclass "\">"
+    if (fname_p)
+    {
+        print "<td class=\"function_entry_filename\">"
+        if (file_p && mcyclo[nfun] > cyclo_simple_max)
+        {
+            print "<a href=\"javascript:void(0);\" title=\"show/hide function source\" onClick=\"javascript:show_hide('" fname "_src', '" fname "_button')\">\
+<span id=\"" fname "_button\">&darr;</span></a>"
+        }
+        else
+        {
+            print "&nbsp;"
+        }
+        print "</td>"
+
+        print "<td class=\"function_entry_name\">"
+        print fname
+        print "</td>"
+    }
+    if (mcyclo_p)
+    {
+        # Modified cyclo
+        print "<td class=\"function_entry_cyclo\">"
+        print mcyclo[nfun]
+        print "</td>"
+    }
+    if (cyclo_p)
+    {
+        # Cyclo
+        print "<td class=\"function_entry_cyclo\">"
+        print cyclo[nfun]
+        print "</td>"
+    }
+    if (num_statements_p)
+    {
+        # Number of statements
+        print "<td class=\"function_entry_number\">"
+        print num_statements[nfun]
+        print "</td>"
+    }
+    if (num_lines_p)
+    {
+        # Number of lines
+        print "<td class=\"function_entry_number\">"
+        print num_lines[nfun]
+        print "</td>"
+    }
+    if (first_line_p)
+    {
+        # First line
+        print "<td class=\"function_entry_number\">"
+        print first_line[nfun]
+        print "</td>"
+    }
+    if (file_p)
+    {
+        href = ""
+        if (source_file_link_tmpl != "")
+        {
+            # Get href target
+            href = source_file_link_tmpl
+            sub(/%FILENAME%/, file[nfun], href)
+        }
+
+        # Source file
+        print "<td class=\"function_entry_filename\">"
+        if (href != "")
+        {
+            print "<a href=\"" href "\">" file[nfun] "</a>"
+        }
+        else
+        {
+            print file[nfun]
+        }
+        print "</td>"
+
+
+        print "</tr>"
+
+        if (mcyclo[nfun] > cyclo_simple_max)
+        {
+            print "<tr>"
+
+            num_columns = 1;
+            if (fname_p) { num_columns++ }
+            if (mcyclo_p) { num_columns++ }
+            if (cyclo_p) { num_columns++ }
+            if (num_statements_p) { num_columns++ }
+            if (num_lines_p) { num_columns++ }
+            if (first_line_p) { num_columns++ }
+            if (file_p) { num_columns++ }
+            
+            print "<td colspan=\"" num_columns "\" height=\"0\">"
+            print "<div id=\"" fname "_src\" class=\"function_src\" style=\"position: relative; display: none;\">"
+            print "<pre class=\"function_src\">"
+
+            while ((getline codeline < (fname nfun "_fn.txt")) > 0)
+            {
+                sub(/\\</, "&lt;", codeline)
+                sub(/\\>/, "&gt;", codeline)
+                sub(/&/, "&amp;", codeline)
+                
+                print codeline
+            }
+            close(fname nfun "_fn.txt")
+            system("rm " fname nfun "_fn.txt")
+            print "</pre>"
+            print "</div>"
+            print "</td>"
+            print "</tr>"
+        }
+
+    }
+}
+
+function html_global_stats ()
+{
+    print "<div class=\"section_title\">Resume</div>"
+
+    print "<br/>"
+    print "<table class=\"resume_table\">"
+    # Total number of functions
+    print "<tr>"
+    print "<td class=\"resume_header_entry\">"
+    print "Total number of functions"
+    print "</td>"
+    print "<td class=\"resume_number_entry\">"
+    print num_of_functions
+    print "</td>"
+    print "</tr>"
+    # Number of simple functions
+    print "<tr>"
+    print "<td class=\"resume_header_entry\">"
+    print "Number of low risk functions"
+    print "</td>"
+    print "<td class=\"resume_number_entry\">"
+    print num_of_simple_functions
+    print "</td>"
+    print "</tr>"
+    # Number of moderate functions
+    print "<tr>"
+    print "<td class=\"resume_header_entry\">"
+    print "Number of moderate risk functions"
+    print "</td>"
+    print "<td class=\"resume_number_entry\">"
+    print num_of_moderate_functions
+    print "</td>"
+    print "</tr>"
+    # Number of high functions
+    print "<tr>"
+    print "<td class=\"resume_header_entry\">"
+    print "Number of high risk functions"
+    print "</td>"
+    print "<td class=\"resume_number_entry\">"
+    print num_of_high_functions
+    print "</td>"
+    print "</tr>"
+    # Number of untestable functions
+    print "<tr>"
+    print "<td class=\"resume_header_entry\">"
+    print "Number of untestable functions"
+    print "</td>"
+    print "<td class=\"resume_number_entry\">"
+    print num_of_untestable_functions
+    print "</td>"
+    print "</tr>"
+    print "</table>"
+    print "<br/>"
+}
+
+function html_function_cyclo ()
+{
+    print "<div class=\"section_title\">Details for all functions</div>"
+    print "<p>Used ranges:</p>"
+
+    print "<table class=\"ranges_table\">"
+    print "<tr>"
+    print "<td class=\"ranges_header_entry\">"
+    print "&nbsp;"
+    print "</td>"
+    print "<td class=\"ranges_header_entry\">"
+    print "Cyclomatic Complexity"
+    print "</td>"
+    print "<td class=\"ranges_header_entry\">"
+    print "Risk Evaluation"
+    print "</td>"
+    print "</tr>"
+    # Simple
+    print "<tr>"
+    print "<td class=\"ranges_entry_simple\">"
+    print "&nbsp;"
+    print "</td>"
+    print "<td class=\"ranges_entry\">"
+    print "0 - " cyclo_simple_max
+    print "</td>"
+    print "<td class=\"ranges_entry\">"
+    print "Simple module, without much risk"
+    print "</td>"
+    print "</tr>"
+    # Moderate 
+    print "<tr>"
+    print "<td class=\"ranges_entry_moderate\">"
+    print "&nbsp;"
+    print "</td>"
+    print "<td class=\"ranges_entry\">"
+    print cyclo_simple_max + 1 " - " cyclo_moderate_max
+    print "</td>"
+    print "<td class=\"ranges_entry\">"
+    print "More complex module, moderate risk"
+    print "</td>"
+    print "</tr>"
+    # High
+    print "<tr>"
+    print "<td class=\"ranges_entry_high\">"
+    print "&nbsp;"
+    print "</td>"
+    print "<td class=\"ranges_entry\">"
+    print cyclo_moderate_max + 1 " - " cyclo_high_max
+    print "</td>"
+    print "<td class=\"ranges_entry\">"
+    print "Complex module, high risk"
+    print "</td>"
+    print "</tr>"
+    # Untestable
+    print "<tr>"
+    print "<td class=\"ranges_entry_untestable\">"
+    print "&nbsp;"
+    print "</td>"
+    print "<td class=\"ranges_entry\">"
+    print "greater than " cyclo_high_max
+    print "</td>"
+    print "<td class=\"ranges_entry\">"
+    print "Untestable module, very high risk"
+    print "</td>"
+    print "</tr>"
+    print "</table>"
+    print "<br/>"
+    html_fnc_table_complete("")
+}
+
+function wiki_global_stats ()
+{
+    print "{| class=\"cyclo_resume_table\""
+    # Total number of functions
+    print "|-"
+    print "| class=\"cyclo_resume_header_entry\" | Total number of functions"
+    print "| class=\"cyclo_resume_number_entry\" |" num_of_functions
+    # Number of simple functions
+    print "|-"
+    print "| class=\"cyclo_resume_header_entry\" | Number of low risk functions"
+    print "| class=\"cyclo_resume_number_entry\" |" num_of_simple_functions
+    # Number of moderate functions
+    print "|-"
+    print "| class=\"cyclo_resume_header_entry\" | Number of moderate risk functions"
+    print "| class=\"cyclo_resume_number_entry\" |" num_of_moderate_functions
+    # Number of high functions
+    print "|-"
+    print "| class=\"cyclo_resume_header_entry\" | Number of high risk functions"
+    print "| class=\"cyclo_resume_number_entry\" |" num_of_high_functions
+    # Number of untestable functions
+    print "|-"
+    print "| class=\"cyclo_resume_header_entry\" | Number of untestable functions"
+    print "| class=\"cyclo_resume_number_entry\" |" num_of_untestable_functions
+    print "|}"
+}
+
+function wiki_function_cyclo ()
+{
+    print "==Details for all functions=="
+
+    print "Used ranges:"
+    
+    print "{| class =\"cyclo_ranges_table\""
+    print "|-"
+    print "| class=\"cyclo_ranges_header_entry\" | "
+    print "| class=\"cyclo_ranges_header_entry\" | Cyclomatic Complexity"
+    print "| class=\"cyclo_ranges_header_entry\" | Risk Evaluation"
+    # Simple
+    print "|-"
+    print "| class=\"cyclo_ranges_entry_simple\" | "
+    print "| class=\"cyclo_ranges_entry\" | 0 - " cyclo_simple_max
+    print "| class=\"cyclo_ranges_entry\" | Simple module, without much risk"
+    # Moderate
+    print "|-"
+    print "| class=\"cyclo_ranges_entry_moderate\" | "
+    print "| class=\"cyclo_ranges_entry\" |" cyclo_simple_max + 1 " - " cyclo_moderate_max
+    print "| class=\"cyclo_ranges_entry\" | More complex module, moderate risk"
+    # High
+    print "|-"
+    print "| class=\"cyclo_ranges_entry_high\" | "
+    print "| class=\"cyclo_ranges_entry\" |" cyclo_moderate_max + 1 " - " cyclo_high_max
+    print "| class=\"cyclo_ranges_entry\" | Complex module, high risk"
+    # Untestable
+    print "|-"
+    print "| class=\"cyclo_ranges_entry_untestable\" | "
+    print "| class=\"cyclo_ranges_entry\" | greater than " cyclo_high_max
+    print "| class=\"cyclo_ranges_entry\" | Untestable module, very high risk"
+    print "|}"
+
+    print ""
+    print ""
+    wiki_fnc_table_complete("")
+}
+
+function wiki_fnc_table_complete (caption)
+{
+    wiki_fnc_table(caption, 1, 0, 1, 1, 1, 0, 1)
+}
+
+function wiki_fnc_table_abbrev (caption)
+{
+    wiki_fnc_table(caption, 1, 0, 0, 0, 0, 0, 0)
+}
+
+function wiki_fnc_table (caption,
+                         fname_p,
+                         mcyclo_p,
+                         cyclo_p,
+                         num_statements_p,
+                         num_lines_p,
+                         first_line_p,
+                         file_p)
+{
+    print "{| width=\"90%\" class=\"cyclo_function_table\" cellpadding=\"0\" cellspacing=\"0\">"
+    if (caption != "")
+    {
+        print "|+" caption
+    }
+    wiki_fnc_header(fname_p, 
+                    mcyclo_p, 
+                    cyclo_p, 
+                    num_statements_p, 
+                    num_lines_p, 
+                    first_line_p, 
+                    file_p)
+    for (nfnc = 1; nfnc < nfuncs; nfnc++)
+    {
+        wiki_fnc(nfnc,
+                 fname_p, 
+                 mcyclo_p, 
+                 cyclo_p, 
+                 num_statements_p, 
+                 num_lines_p, 
+                 first_line_p, 
+                 file_p)
+    }
+    print "|}"
+}
+
+function wiki_fnc_header (fname_p,
+                          mcyclo_p,
+                          cyclo_p,
+                          num_statements_p,
+                          num_lines_p,
+                          first_line_p,
+                          file_p)
+{
+    if (fname_p)
+    {
+        # Function name
+        print "! class=\"cyclo_function_table_header_entry\" | Function Name"
+    }
+    if (mcyclo_p)
+    {
+        # Modified cyclo
+        print "! class=\"cyclo_function_table_header_entry\" | Modified Cyclo"
+    }
+    if (cyclo_p)
+    {
+        # Cyclo
+        print "! class=\"cyclo_function_table_header_entry\" | Cyclomatic Complexity"
+    }
+    if (num_statements_p)
+    {
+        print "! class=\"cyclo_function_table_header_entry\" | Number of Statements"
+    }
+    if (num_lines_p)
+    {
+        print "! class=\"cyclo_function_table_header_entry\" | Number of Lines"
+    }
+    if (first_line_p)
+    {
+        print "! class=\"cyclo_function_table_header_entry\" | First Line"
+    }
+    if (file_p)
+    {
+        print "! class=\"cyclo_function_table_header_entry\" | Source File"
+    }
+}
+
+function wiki_fnc (nfnc,
+                   fname_p,
+                   mcyclo_p,
+                   cyclo_p,
+                   num_statements_p,
+                   num_lines_p,
+                   first_line_p,
+                   file_p)
+{
+   fname = fnames[nfnc]
+
+    # Function name
+    trclass = "cyclo_function_entry_simple"
+    if (mcyclo[nfnc] > cyclo_high_max)
+    {
+        trclass="cyclo_function_entry_untestable"
+    }   
+    else if (mcyclo[nfnc] > cyclo_moderate_max)
+    {
+        trclass="cyclo_function_entry_high"
+    }
+    else if (mcyclo[nfnc] > cyclo_simple_max)
+    {
+        trclass="cyclo_function_entry_moderate"
+    }
+
+    print "|- class=\"" trclass "\""
+    if (fname_p)
+    {
+        print "| class=\"cyclo_function_entry_name\" |" fname
+    }
+    if (mcyclo_p)
+    {
+        # Modified cyclo
+        print "| class=\"cyclo_function_entry_cyclo\" |" mcyclo[nfnc]
+    }
+    if (cyclo_p)
+    {
+        # Cyclo
+        print "| class=\"cyclo_function_entry_cyclo\" |" cyclo[nfnc]
+    }
+    if (num_statements_p)
+    {
+        # Number of statements
+        print "| class=\"cyclo_function_entry_number\" |" num_statements[nfnc]
+    }
+    if (num_lines_p)
+    {
+        # Number of lines
+        print "| class=\"cyclo_function_entry_number\" |" num_lines[nfnc]
+    }
+    if (first_line_p)
+    {
+        # First line
+        print "| class=\"cyclo_function_entry_number\" |" first_line[nfnc]
+    }
+    if (file_p)
+    {
+        href = ""
+        if (source_file_link_tmpl != "")
+        {
+            # Get href target
+            href = source_file_link_tmpl
+            sub(/%FILENAME%/, file[nfnc], href)
+        }
+        
+        # Source file
+        print "| class=\"cyclo_function_entry_filename\" |" \
+            ((href != "") ? "[" href " " file[nfnc] "]" : "[" file[nfnc] "]")
+    }
+}
+
+# Scan data from a line
+{
+    function_name = $7
+
+    nfuncs++;
+    fnames[nfuncs] = function_name
+    mcyclo[nfuncs] = $1
+    cyclo[nfuncs] = $2
+    num_statements[nfuncs] = $3
+    first_line[nfuncs] = $4
+    num_lines[nfuncs] = $5
+
+    # Build the filename from the file_spec ($6)
+    begin_util_path = index($6, cut_dir)
+    tmpfilename = substr($6, begin_util_path + length(cut_dir))
+    sub(/\([0-9]+\):/, "", tmpfilename)
+    file[nfuncs] = tmpfilename
+
+    if (mcyclo[nfuncs] > cyclo_simple_max)
+    {
+        # Extract function contents to a fn_txt file
+        filepath = $6
+
+        sub(/\([0-9]+\):/, "", filepath)
+        num_line = 0
+
+        while ((getline codeline < filepath) > 0)
+        {
+            num_line++;
+            if ((num_line >= first_line[nfuncs]) &&
+                (num_line < first_line[nfuncs] + num_lines[nfuncs]))
+            {
+                print codeline > (function_name nfuncs "_fn.txt")
+            }
+        }
+        close (function_name nfuncs "_fn.txt")
+        close(filepath)
+    }
+
+    # Initial values for statistics variables
+    num_of_functions = 0
+    max_mcyclo = 0
+    max_function_length = 0
+    num_of_simple_functions = 0
+    num_of_moderate_functions = 0
+    num_of_high_functions = 0
+    num_of_untestable_functions = 0
+}
+
+# Epilogue
+END {
+    # Print header (only for html)
+    if (output_lang == "html")
+    {
+        html_header()
+    }
+
+    # Print prolog
+    if ((output_lang == "html") && 
+        (html_prolog != ""))
+    {
+        print html_prolog
+    }
+    if ((output_lang == "wiki") &&
+        (wiki_prolog != ""))
+    {
+        print wiki_prolog
+    }
+
+    if (output_lang == "html")
+    {
+        print "<div class=\"page_title\">" package_name " Cyclomatic Complexity Report</div>"
+        print "<p>Report generated at: <span class=\"report_timestamp\">" strftime() "</div></p>"
+    }
+    if (output_lang == "wiki")
+    {
+        print "==" package_name " Cyclomatic Complexity Report=="
+        print "Report generated at: '''" strftime() "'''"
+    }
+
+    if (section_global_stats_p)
+    {
+        build_stats()
+
+        if (output_lang == "html")
+        {
+            html_global_stats()
+        }
+        if (output_lang == "wiki")
+        {
+            wiki_global_stats()
+        }
+    }
+    if (section_function_cyclo_p)
+    {
+        if (output_lang == "html")
+        {
+            html_function_cyclo()
+        }
+        if (output_lang == "wiki")
+        {
+            wiki_function_cyclo()
+        }
+    }
+    
+    # Print epilog
+    if ((output_lang == "html") && 
+        (html_epilog != ""))
+    {
+        print html_epilog
+    }
+    if ((output_lang == "wiki") &&
+        (wiki_epilog != ""))
+    {
+        print wiki_epilog
+    }
+
+    # Print footer (html only)
+    if (output_lang == "html")
+    {
+        html_footer()
+    }
+}
+
+# End of pmccabe2html
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
new file mode 100644 (file)
index 0000000..0d3ba16
--- /dev/null
@@ -0,0 +1,9291 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+%
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2009-05-16.16}
+%
+% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008, 2009 Free Software Foundation, Inc.
+%
+% This texinfo.tex file is free software: you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
+%
+% This texinfo.tex file is distributed in the hope that it will be
+% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program.  If not, see <http://www.gnu.org/licenses/>.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction.  (This has been our intent since Texinfo was invented.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+%   ftp://tug.org/tex/texinfo.tex
+%     (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo@gnu.org.  Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem.  Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution.  For a simple
+% manual foo.texi, however, you can get away with this:
+%   tex foo.texi
+%   texindex foo.??
+%   tex foo.texi
+%   tex foo.texi
+%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent.  You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+  \catcode`+=\active \catcode`\_=\active}
+
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+\let\ptextop=\top
+{\catcode`\'=\active
+\global\let\ptexquoteright'}% Math-mode def from plain.tex.
+\let\ptexraggedright=\raggedright
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+  \let\linenumber = \empty % Pre-3.0.
+\else
+  \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined     \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar  = `\-
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar  = `\;
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
+  data-base data-bases eshell fall-ing half-way long-est man-u-script
+  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
+  stand-alone strong-est time-stamp time-stamps which-ever white-space
+  wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt}
+
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal.  We don't just call \tracingall here,
+% since that produces some useless output on the terminal.  We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+  \tracingstats2
+  \tracingpages1
+  \tracinglostchars2  % 2 gives us more in etex
+  \tracingparagraphs1
+  \tracingoutput1
+  \tracingmacros2
+  \tracingrestores1
+  \showboxbreadth\maxdimen \showboxdepth\maxdimen
+  \ifx\eTeXversion\undefined\else % etex gives us more logging
+    \tracingscantokens1
+    \tracingifs1
+    \tracinggroups1
+    \tracingnesting2
+    \tracingassigns1
+  \fi
+  \tracingcommands3  % 3 gives us more in etex
+  \errorcontextlines16
+}%
+
+% add check for \lastpenalty to plain's definitions.  If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+  \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+  \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+  \removelastskip\penalty-200\bigskip\fi\fi}
+
+% For @cropmarks command.
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong  \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page.  The solution is
+% described on page 260 of The TeXbook.  It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after.  I won't pretend I can describe this better than DEK...
+\def\domark{%
+  \toks0=\expandafter{\lastchapterdefs}%
+  \toks2=\expandafter{\lastsectiondefs}%
+  \toks4=\expandafter{\prevchapterdefs}%
+  \toks6=\expandafter{\prevsectiondefs}%
+  \toks8=\expandafter{\lastcolordefs}%
+  \mark{%
+                   \the\toks0 \the\toks2
+      \noexpand\or \the\toks4 \the\toks6
+    \noexpand\else \the\toks8
+  }%
+}
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+  \ifcase0\topmark\fi
+  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument.  Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+  %
+  \ifodd\pageno  \advance\hoffset by \bindingoffset
+  \else \advance\hoffset by -\bindingoffset\fi
+  %
+  % Do this outside of the \shipout so @code etc. will be expanded in
+  % the headline as they should be, not taken literally (outputting ''code).
+  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
+  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+  %
+  {%
+    % Have to do this stuff outside the \shipout because we want it to
+    % take effect in \write's, yet the group defined by the \vbox ends
+    % before the \shipout runs.
+    %
+    \indexdummies         % don't expand commands in the output.
+    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
+               % the page break happens to be in the middle of an example.
+               % We don't want .vr (or whatever) entries like this:
+               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % "\acronym" won't work when it's read back in;
+               % it needs to be
+               % {\code {{\tt \backslashcurfont }acronym}
+    \shipout\vbox{%
+      % Do this early so pdf references go to the beginning of the page.
+      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+      %
+      \ifcropmarks \vbox to \outervsize\bgroup
+        \hsize = \outerhsize
+        \vskip-\topandbottommargin
+        \vtop to0pt{%
+          \line{\ewtop\hfil\ewtop}%
+          \nointerlineskip
+          \line{%
+            \vbox{\moveleft\cornerthick\nstop}%
+            \hfill
+            \vbox{\moveright\cornerthick\nstop}%
+          }%
+          \vss}%
+        \vskip\topandbottommargin
+        \line\bgroup
+          \hfil % center the page within the outer (page) hsize.
+          \ifodd\pageno\hskip\bindingoffset\fi
+          \vbox\bgroup
+      \fi
+      %
+      \unvbox\headlinebox
+      \pagebody{#1}%
+      \ifdim\ht\footlinebox > 0pt
+        % Only leave this space if the footline is nonempty.
+        % (We lessened \vsize for it in \oddfootingyyy.)
+        % The \baselineskip=24pt in plain's \makefootline has no effect.
+        \vskip 24pt
+        \unvbox\footlinebox
+      \fi
+      %
+      \ifcropmarks
+          \egroup % end of \vbox\bgroup
+        \hfil\egroup % end of (centering) \line\bgroup
+        \vskip\topandbottommargin plus1fill minus1fill
+        \boxmaxdepth = \cornerthick
+        \vbox to0pt{\vss
+          \line{%
+            \vbox{\moveleft\cornerthick\nsbot}%
+            \hfill
+            \vbox{\moveright\cornerthick\nsbot}%
+          }%
+          \nointerlineskip
+          \line{\ewbot\hfil\ewbot}%
+        }%
+      \egroup % \vbox from first cropmarks clause
+      \fi
+    }% end of \shipout\vbox
+  }% end of group with \indexdummies
+  \advancepageno
+  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha@viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1\relax \unvbox#1\relax
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks.  Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1.  The argument is the rest of
+% the input line (except we remove a trailing comment).  #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+  \def\argtorun{#2}%
+  \begingroup
+    \obeylines
+    \spaceisspace
+    #1%
+    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+  \gdef\parseargline#1^^M{%
+    \endgroup % End of the group started in \parsearg.
+    \argremovecomment #1\comment\ArgTerm%
+  }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+%    @end itemize  @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+  \def\temp{#3}%
+  \ifx\temp\empty
+    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+    \let\temp\finishparsearg
+  \else
+    \let\temp\argcheckspaces
+  \fi
+  % Put the space token in:
+  \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+%      is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick.  --kasal, 16nov03
+
+\def\parseargdef#1{%
+  \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+  \def#2{\parsearg#1}%
+  \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+  \obeyspaces
+  \gdef\obeyedspace{ }
+
+  % Make each space character in the input produce a normal interword
+  % space in the output.  Don't allow a line break at this space, as this
+  % is used only in environments like @example, where each line of input
+  % should produce a line of output anyway.
+  %
+  \gdef\sepspaces{\obeyspaces\let =\tie}
+
+  % If an index command is used in an @example environment, any spaces
+  % therein should become regular spaces in the raw index file, not the
+  % expansion of \tie (\leavevmode \penalty \@M \ ).
+  \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex.  It's used like this:
+%
+%   \envdef\foo{...}
+%   \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo.  \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches.  The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as environments; they don't open a group.  (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At run-time, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+  \def\temp{#1}%
+  \ifx\thisenv\temp
+  \else
+    \badenverr
+  \fi
+}
+
+% Environment mismatch, #1 expected:
+\def\badenverr{%
+  \errhelp = \EMsimple
+  \errmessage{This command can appear only \inenvironment\temp,
+    not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+  \ifx#1\empty
+    out of any environment%
+  \else
+    in environment \expandafter\string#1%
+  \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+  \if 1\csname iscond.#1\endcsname
+  \else
+    % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+    \expandafter\checkenv\csname#1\endcsname
+    \csname E#1\endcsname
+    \endgroup
+  \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
+\def\@{{\tt\char64}}
+
+% This is turned off because it was never documented
+% and you can use @w{...} around a quote to suppress ligatures.
+%% Define @` and @' to be the same as ` and '
+%% but suppressing ligatures.
+%\def\`{{`}}
+%\def\'{{'}}
+
+% Used to generate quoted braces.
+\def\mylbrace {{\tt\char123}}
+\def\myrbrace {{\tt\char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \c
+\let\dotaccent = \.
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \t
+\let\ubaraccent = \b
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
+  \kern-.15em
+  \TeX
+}
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+  \fi\fi
+}
+
+% @w prevents a word break.  Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line.  According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0).  If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large.  This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material.  In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom.  The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+  \ifnum\catcode`\^^M=\active \else
+    \errhelp = \groupinvalidhelp
+    \errmessage{@group invalid in context where filling is enabled}%
+  \fi
+  \startsavinginserts
+  %
+  \setbox\groupbox = \vtop\bgroup
+    % Do @comment since we are called inside an environment such as
+    % @example, where each end-of-line in the input causes an
+    % end-of-line in the output.  We don't want the end-of-line after
+    % the `@group' to put extra space in the output.  Since @group
+    % should appear on a line by itself (according to the Texinfo
+    % manual), we don't worry about eating any user text.
+    \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it.  Thus, space below is not quite equal to space
+% above.  But it's pretty close.
+\def\Egroup{%
+    % To get correct interline space between the last line of the group
+    % and the first line afterwards, we have to propagate \prevdepth.
+    \endgraf % Not \par, as it may have been set to \lisppar.
+    \global\dimen1 = \prevdepth
+  \egroup           % End the \vtop.
+  % \dimen0 is the vertical size of the group's box.
+  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
+  % \dimen2 is how much space is left on the page (more or less).
+  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
+  % if the group doesn't fit on the current page, and it's a big big
+  % group, force a page break.
+  \ifdim \dimen0 > \dimen2
+    \ifdim \pagetotal < \vfilllimit\pageheight
+      \page
+    \fi
+  \fi
+  \box\groupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil  \mil=0.001in
+
+% Old definition--didn't work.
+%\parseargdef\need{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
+%\prevdepth=-1000pt
+%}}
+
+\parseargdef\need{%
+  % Ensure vertical mode, so we don't make a big box in the middle of a
+  % paragraph.
+  \par
+  %
+  % If the @need value is less than one line space, it's useless.
+  \dimen0 = #1\mil
+  \dimen2 = \ht\strutbox
+  \advance\dimen2 by \dp\strutbox
+  \ifdim\dimen0 > \dimen2
+    %
+    % Do a \strut just to make the height of this box be normal, so the
+    % normal leading is inserted relative to the preceding line.
+    % And a page break here is fine.
+    \vtop to #1\mil{\strut\vfil}%
+    %
+    % TeX does not even consider page breaks if a penalty added to the
+    % main vertical list is 10000 or more.  But in order to see if the
+    % empty box we just added fits on the page, we must make it consider
+    % page breaks.  On the other hand, we don't want to actually break the
+    % page after the empty box.  So we use a penalty of 9999.
+    %
+    % There is an extremely small chance that TeX will actually break the
+    % page at this \penalty, if there are no other feasible breakpoints in
+    % sight.  (If the user is using lots of big @group commands, which
+    % almost-but-not-quite fill up a page, TeX will have a hard time doing
+    % good page breaking, for example.)  However, I could not construct an
+    % example where a page broke at this \penalty; if it happens in a real
+    % document, then we can reconsider our strategy.
+    \penalty9999
+    %
+    % Back up by the size of the box, whether we did a page break or not.
+    \kern -#1\mil
+    %
+    % Do not allow a page break right after this kern.
+    \nobreak
+  \fi
+}
+
+% @br   forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+  \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph.  For more general purposes, use the \margin insertion
+% class.  WHICH is `l' or `r'.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+  \nobreak
+  \kern-\strutdepth
+  \vtop to \strutdepth{%
+    \baselineskip=\strutdepth
+    \vss
+    % if you have multiple lines of stuff to put here, you'll need to
+    % make the vbox yourself of the appropriate size.
+    \ifx#1l%
+      \llap{\ignorespaces #2\hskip\inmarginspacing}%
+    \else
+      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+    \fi
+    \null
+  }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+  \setbox0 = \hbox{\ignorespaces #2}%
+  \ifdim\wd0 > 0pt
+    \def\lefttext{#1}%  have both texts
+    \def\righttext{#2}%
+  \else
+    \def\lefttext{#1}%  have only one text
+    \def\righttext{#1}%
+  \fi
+  %
+  \ifodd\pageno
+    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+  \else
+    \def\temp{\inleftmargin\lefttext}%
+  \fi
+  \temp
+}
+
+% @include FILE -- \input text of FILE.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+  \pushthisfilestack
+  \def\thisfile{#1}%
+  {%
+    \makevalueexpandable  % we want to expand any @value in FILE.
+    \turnoffactive        % and allow special characters in the expansion
+    \indexnofonts         % Allow `@@' and other weird things in file names.
+    \edef\temp{\noexpand\input #1 }%
+    %
+    % This trickery is to read FILE outside of a group, in case it makes
+    % definitions, etc.
+    \expandafter
+  }\temp
+  \popthisfilestack
+}
+\def\filenamecatcodes{%
+  \catcode`\\=\other
+  \catcode`~=\other
+  \catcode`^=\other
+  \catcode`_=\other
+  \catcode`|=\other
+  \catcode`<=\other
+  \catcode`>=\other
+  \catcode`+=\other
+  \catcode`-=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+}
+
+\def\pushthisfilestack{%
+  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+  \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+  the stack of filenames is empty.}}
+
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+  \ifhmode
+    \let\next\centerH
+  \else
+    \let\next\centerV
+  \fi
+  \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+  {%
+    \hfil\break
+    \advance\hsize by -\leftskip
+    \advance\hsize by -\rightskip
+    \line{#1}%
+    \break
+  }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
+
+% @sp n   outputs n lines of vertical space
+
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore  is another way to write a comment
+
+\def\comment{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \defaultparindent = 0pt
+    \else
+      \defaultparindent = #1em
+    \fi
+  \fi
+  \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \lispnarrowing = 0pt
+    \else
+      \lispnarrowing = #1em
+    \fi
+  \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading.  If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\noneword
+    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+  \else\ifx\temp\insertword
+    \let\suppressfirstparagraphindent = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @firstparagraphindent option `\temp'}%
+  \fi\fi
+}
+
+% Here is how we actually suppress indentation.  Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+  \gdef\indent{%
+    \restorefirstparagraphindent
+    \indent
+  }%
+  \gdef\noindent{%
+    \restorefirstparagraphindent
+    \noindent
+  }%
+  \global\everypar = {%
+    \kern -\parindent
+    \restorefirstparagraphindent
+  }%
+}
+
+\gdef\restorefirstparagraphindent{%
+  \global \let \indent = \ptexindent
+  \global \let \noindent = \ptexnoindent
+  \global \everypar = {}%
+}
+
+
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care.  Texinfo does not
+% otherwise define @\.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  % make the texinfo accent commands work in math mode
+  \let\"=\ddot
+  \let\'=\acute
+  \let\==\bar
+  \let\^=\hat
+  \let\`=\grave
+  \let\u=\breve
+  \let\v=\check
+  \let\~=\tilde
+  \let\dotaccent=\dot
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \catcode`' = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+    \let' = \ptexquoteright
+  }
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
+   \iflinks
+     \tryauxfile
+     % Open the new aux file.  TeX will close it automatically at exit.
+     \immediate\openout\auxfile=\jobname.aux
+   \fi % \openindices needs to do some work in any case.
+   \openindices
+   \let\setfilename=\comment % Ignore extra @setfilename cmds.
+   %
+   % If texinfo.cnf is present on the system, read it.
+   % Useful for site-wide @afourpaper, etc.
+   \openin 1 texinfo.cnf
+   \ifeof 1 \else \input texinfo.cnf \fi
+   \closein 1
+   %
+   \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+  \newindex{cp}%
+  \newcodeindex{fn}%
+  \newcodeindex{vr}%
+  \newcodeindex{tp}%
+  \newcodeindex{ky}%
+  \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
+\ifx\pdfoutput\undefined
+\else
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places.  Thus, we have to
+% double any backslashes.  Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e.  Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's what we do).
+
+% double active backslashes.
+%
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef@activebackslashdouble{%
+   @catcode`@\=@active
+   @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters.  hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo.  It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
+%
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+%
+\def\HyPsdSubst#1#2#3{%
+  \def\HyPsdReplace##1#1##2\END{%
+    ##1%
+    \ifx\\##2\\%
+    \else
+      #2%
+      \HyReturnAfterFi{%
+        \HyPsdReplace##2\END
+      }%
+    \fi
+  }%
+  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+  \xdef#1{#1}% redefine it as its expansion; the definition is simply
+             % \lastnode when called from \setref -> \pdfmkdest.
+  \HyPsdSubst{(}{\realbackslash(}{#1}%
+  \HyPsdSubst{)}{\realbackslash)}{#1}%
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found.  (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+  %
+  % Color manipulation macros based on pdfcolor.tex.
+  \def\cmykDarkRed{0.28 1 1 0.35}
+  \def\cmykBlack{0 0 0 1}
+  %
+  % k sets the color for filling (usual text, etc.);
+  % K sets the color for stroking (thin rules, e.g., normal _'s).
+  \def\pdfsetcolor#1{\pdfliteral{#1 k  #1 K}}
+  %
+  % Set color, and create a mark which defines \thiscolor accordingly,
+  % so that \makeheadline knows which color to restore.
+  \def\setcolor#1{%
+    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+    \domark
+    \pdfsetcolor{#1}%
+  }
+  %
+  \def\maincolor{\cmykBlack}
+  \pdfsetcolor{\maincolor}
+  \edef\thiscolor{\maincolor}
+  \def\lastcolordefs{}
+  %
+  \def\makefootline{%
+    \baselineskip24pt
+    \line{\pdfsetcolor{\maincolor}\the\footline}%
+  }
+  %
+  \def\makeheadline{%
+    \vbox to 0pt{%
+      \vskip-22.5pt
+      \line{%
+        \vbox to8.5pt{}%
+        % Extract \thiscolor definition from the marks.
+        \getcolormarks
+        % Typeset the headline with \maincolor, then restore the color.
+        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+      }%
+      \vss
+    }%
+    \nointerlineskip
+  }
+  %
+  %
+  \pdfcatalog{/PageMode /UseOutlines}
+  %
+  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+  \def\dopdfimage#1#2#3{%
+    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    %
+    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
+    % others).  Let's try in that order.
+    \let\pdfimgext=\empty
+    \begingroup
+      \openin 1 #1.png \ifeof 1
+        \openin 1 #1.jpg \ifeof 1
+          \openin 1 #1.jpeg \ifeof 1
+            \openin 1 #1.JPG \ifeof 1
+              \openin 1 #1.pdf \ifeof 1
+                \openin 1 #1.PDF \ifeof 1
+                  \errhelp = \nopdfimagehelp
+                  \errmessage{Could not find image file #1 for pdf}%
+                \else \gdef\pdfimgext{PDF}%
+                \fi
+              \else \gdef\pdfimgext{pdf}%
+              \fi
+            \else \gdef\pdfimgext{JPG}%
+            \fi
+          \else \gdef\pdfimgext{jpeg}%
+          \fi
+        \else \gdef\pdfimgext{jpg}%
+        \fi
+      \else \gdef\pdfimgext{png}%
+      \fi
+      \closein 1
+    \endgroup
+    %
+    % without \immediate, ancient pdftex seg faults when the same image is
+    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
+    \ifnum\pdftexversion < 14
+      \immediate\pdfimage
+    \else
+      \immediate\pdfximage
+    \fi
+      \ifdim \wd0 >0pt width \imagewidth \fi
+      \ifdim \wd2 >0pt height \imageheight \fi
+      \ifnum\pdftexversion<13
+         #1.\pdfimgext
+       \else
+         {#1.\pdfimgext}%
+       \fi
+    \ifnum\pdftexversion < 14 \else
+      \pdfrefximage \pdflastximage
+    \fi}
+  %
+  \def\pdfmkdest#1{{%
+    % We have to set dummies so commands such as @code, and characters
+    % such as \, aren't expanded when present in a section title.
+    \indexnofonts
+    \turnoffactive
+    \activebackslashdouble
+    \makevalueexpandable
+    \def\pdfdestname{#1}%
+    \backslashparens\pdfdestname
+    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+  }}
+  %
+  % used to mark target names; must be expandable.
+  \def\pdfmkpgn#1{#1}
+  %
+  % by default, use a color that is dark enough to print on paper as
+  % nearly black, but still distinguishable for online viewing.
+  \def\urlcolor{\cmykDarkRed}
+  \def\linkcolor{\cmykDarkRed}
+  \def\endlink{\setcolor{\maincolor}\pdfendlink}
+  %
+  % Adding outlines to PDF; macros for calculating structure of outlines
+  % come from Petr Olsak
+  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+    \else \csname#1\endcsname \fi}
+  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+    \advance\tempnum by 1
+    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+  %
+  % #1 is the section text, which is what will be displayed in the
+  % outline by the pdf viewer.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node text,
+  % which might be empty if this toc entry had no corresponding node.
+  % #4 is the page number
+  %
+  \def\dopdfoutline#1#2#3#4{%
+    % Generate a link to the node text if that exists; else, use the
+    % page number.  We could generate a destination for the section
+    % text in the case where a section has no node, but it doesn't
+    % seem worth the trouble, since most documents are normally structured.
+    \def\pdfoutlinedest{#3}%
+    \ifx\pdfoutlinedest\empty
+      \def\pdfoutlinedest{#4}%
+    \else
+      % Doubled backslashes in the name.
+      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+       \backslashparens\pdfoutlinedest}%
+    \fi
+    %
+    % Also double the backslashes in the display string.
+    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+     \backslashparens\pdfoutlinetext}%
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+  }
+  %
+  \def\pdfmakeoutlines{%
+    \begingroup
+      % Thanh's hack / proper braces in bookmarks
+      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+      %
+      % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\numchapentry##1##2##3##4{%
+       \def\thischapnum{##2}%
+       \def\thissecnum{0}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsecentry##1##2##3##4{%
+       \advancenumber{chap\thischapnum}%
+       \def\thissecnum{##2}%
+       \def\thissubsecnum{0}%
+      }%
+      \def\numsubsecentry##1##2##3##4{%
+       \advancenumber{sec\thissecnum}%
+       \def\thissubsecnum{##2}%
+      }%
+      \def\numsubsubsecentry##1##2##3##4{%
+       \advancenumber{subsec\thissubsecnum}%
+      }%
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
+      %
+      % use \def rather than \let here because we redefine \chapentry et
+      % al. a second time, below.
+      \def\appentry{\numchapentry}%
+      \def\appsecentry{\numsecentry}%
+      \def\appsubsecentry{\numsubsecentry}%
+      \def\appsubsubsecentry{\numsubsubsecentry}%
+      \def\unnchapentry{\numchapentry}%
+      \def\unnsecentry{\numsecentry}%
+      \def\unnsubsecentry{\numsubsecentry}%
+      \def\unnsubsubsecentry{\numsubsubsecentry}%
+      \readdatafile{toc}%
+      %
+      % Read toc second time, this time actually producing the outlines.
+      % The `-' means take the \expnumber as the absolute number of
+      % subentries, which we calculated on our first read of the .toc above.
+      %
+      % We use the node names as the destinations.
+      \def\numchapentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+      \def\numsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+      \def\numsubsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+      \def\numsubsubsecentry##1##2##3##4{% count is always zero
+        \dopdfoutline{##1}{}{##3}{##4}}%
+      %
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      %
+      % xx to do this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Right
+      % now, I guess we'll just let the pdf reader have its way.
+      \indexnofonts
+      \setupdatafile
+      \catcode`\\=\active \otherbackslash
+      \input \tocreadfilename
+    \endgroup
+  }
+  %
+  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+    \ifx\PP\D\let\nextsp\relax
+    \else\let\nextsp\skipspaces
+      \ifx\p\space\else\addtokens{\filename}{\PP}%
+        \advance\filenamelength by 1
+      \fi
+    \fi
+    \nextsp}
+  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+  \ifnum\pdftexversion < 14
+    \let \startlink \pdfannotlink
+  \else
+    \let \startlink \pdfstartlink
+  \fi
+  % make a live url in pdf output.
+  \def\pdfurl#1{%
+    \begingroup
+      % it seems we really need yet another set of dummies; have not
+      % tried to figure out what each command should do in the context
+      % of @url.  for now, just make @/ a no-op, that's the only one
+      % people have actually reported a problem with.
+      %
+      \normalturnoffactive
+      \def\@{@}%
+      \let\/=\empty
+      \makevalueexpandable
+      % do we want to go so far as to use \indexnofonts instead of just
+      % special-casing \var here?
+      \def\var##1{##1}%
+      %
+      \leavevmode\setcolor{\urlcolor}%
+      \startlink attr{/Border [0 0 0]}%
+        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+    \endgroup}
+  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+  \def\maketoks{%
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+    \ifx\first0\adn0
+    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+    \else
+      \ifnum0=\countA\else\makelink\fi
+      \ifx\first.\let\next=\done\else
+        \let\next=\maketoks
+        \addtokens{\toksB}{\the\toksD}
+        \ifx\first,\addtokens{\toksB}{\space}\fi
+      \fi
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \next}
+  \def\makelink{\addtokens{\toksB}%
+    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\pdflink#1{%
+    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+    \setcolor{\linkcolor}#1\endlink}
+  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+  % non-pdf mode
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\setcolor = \gobble
+  \let\pdfsetcolor = \gobble
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+  \csname ten#1\endcsname  % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold.  Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Default leading.
+\newdimen\textleading  \textleading = 13.2pt
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly.  There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\def\setleading#1{%
+  \dimen0 = #1\relax
+  \normalbaselineskip = \baselinefactor\dimen0
+  \normallineskip = \lineskipfactor\normalbaselineskip
+  \normalbaselines
+  \setbox\strutbox =\hbox{%
+    \vrule width0pt height\strutheightpercent\baselineskip
+                    depth \strutdepthpercent \baselineskip
+  }%
+}
+
+% PDF CMaps.  See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\undefined \else
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1IT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1TT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+  \font#1=\fontprefix#2#3 scaled #4
+  \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+% emacs-page end of cmaps
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\undefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx}               %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt.  This is the default in
+% Texinfo.
+%
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit.  This is for the GNU
+% Press printing of the Emacs 22 manual.  Maybe other manuals in the
+% future.  Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+% reduce space between paragraphs
+\divide\parskip by 2
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+%   @fonttextsize 10
+% (or 11) to redefine the text font size.  pt is assumed.
+%
+\def\xword{10}
+\def\xiword{11}
+%
+\parseargdef\fonttextsize{%
+  \def\textsizearg{#1}%
+  \wlog{doing @fonttextsize \textsizearg}%
+  %
+  % Set \globaldefs so that documents can use this inside @tex, since
+  % makeinfo 4.8 does not support it, but we need it nonetheless.
+  %
+ \begingroup \globaldefs=1
+  \ifx\textsizearg\xword \definetextfontsizex
+  \else \ifx\textsizearg\xiword \definetextfontsizexi
+  \else
+    \errhelp=\EMsimple
+    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+  \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families.  Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+  \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE.  We do this because \STYLE needs to also set the
+% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \let\tenttsl=\textttsl
+  \def\curfontsize{text}%
+  \def\lsize{reduced}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+  \let\tenttsl=\titlettsl
+  \def\curfontsize{title}%
+  \def\lsize{chap}\def\lllsize{subsec}%
+  \resetmathfonts \setleading{25pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
+\def\chapfonts{%
+  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \let\tenttsl=\chapttsl
+  \def\curfontsize{chap}%
+  \def\lsize{sec}\def\lllsize{text}%
+  \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+  \let\tenttsl=\secttsl
+  \def\curfontsize{sec}%
+  \def\lsize{subsec}\def\lllsize{reduced}%
+  \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+  \let\tenttsl=\ssecttsl
+  \def\curfontsize{ssec}%
+  \def\lsize{text}\def\lllsize{small}%
+  \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+  \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
+  \def\lsize{small}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+  \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+  \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{9.5pt}}
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+% Define these just so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+%   8.5x11=86   smallbook=72  a4=90  a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+%   8.5x11=90+  smallbook=80  a4=90+  a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt.  So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+%   8.5x11=71  smallbook=60  a4=75  a5=58
+% --karl, 24jan03.
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+
+\message{markup,}
+
+% Check if we are currently using a typewriter font.  Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+  \csname markup#1true\endcsname
+  \def\currentmarkupstyle{#1}%
+  \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+  \expandafter\def\expandafter\markupstylesetup
+    \expandafter{\markupstylesetup #1}%
+  \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+  \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+  \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
+  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+
+\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
+\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use the undirected quote
+% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
+% the default, but it works for pasting with more pdf viewers (at least
+% evince), the lilypond developers report.  xpdf does work with the
+% regular 0x27.
+%
+\def\codequoteright{%
+  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+      '%
+    \else \char'15 \fi
+  \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+      % [Knuth] pp. 380,381,391
+      % \relax disables Spanish ligatures ?` and !` of \tt font.
+      \relax`%
+    \else \char'22 \fi
+  \else \char'22 \fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
+                    \ptexslash\fi\fi\fi}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% @cite is like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}}
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @b, explicit bold.  Also @strong.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph.  Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+  \def\plainfrenchspacing{%
+    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+    \def\endofsentencespacefactor{1000}% for @. and friends
+  }
+  \def\plainnonfrenchspacing{%
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
+  }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+% @t, explicit typewriter.
+\def\t#1{%
+  {\tt \rawbackslash \plainfrenchspacing #1}%
+  \null
+}
+
+% @samp.
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
+
+% definition of @key that produces a lozenge.  Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+%    \vbox{\hrule\kern-0.4pt
+%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+%    \kern-0.4pt\hrule}%
+%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge.  If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle.  But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+  \nohyphenation
+  \ifmonospace\else\tt\fi
+  #1}\null}
+
+% ctrl is no longer a Texinfo command.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+  {%
+    % Change normal interword space to be same as for the current font.
+    \spaceskip = \fontdimen2\font
+    %
+    % Switch to typewriter.
+    \tt
+    %
+    % But `\ ' produces the large typewriter interword space.
+    \def\ {{\spaceskip = 0pt{} }}%
+    %
+    % Turn off hyphenation.
+    \nohyphenation
+    %
+    \rawbackslash
+    \plainfrenchspacing
+    #1%
+  }%
+  \null
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+%  -- rms.
+{
+  \catcode`\-=\active \catcode`\_=\active
+  \catcode`\'=\active \catcode`\`=\active
+  \global\let'=\rq \global\let`=\lq  % default definitions
+  %
+  \global\def\code{\begingroup
+    \setupmarkupstyle{code}%
+    % The following should really be moved into \setupmarkupstyle handlers.
+    \catcode\dashChar=\active  \catcode\underChar=\active
+    \ifallowcodebreaks
+     \let-\codedash
+     \let_\codeunder
+    \else
+     \let-\realdash
+     \let_\realunder
+    \fi
+    \codex
+  }
+}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
+  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+  % will therefore expand the active definition of _, which is us
+  % (inside @code that is), therefore an endless loop.
+  \ifusingtt{\ifmmode
+               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+             \else\normalunderscore \fi
+             \discretionary{}{}{}}%
+            {\_}%
+}
+\def\codex #1{\tclose{#1}\endgroup}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__.  This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general.  @allowcodebreaks provides a way to control this.
+%
+\newif\ifallowcodebreaks  \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\keywordtrue
+    \allowcodebreakstrue
+  \else\ifx\txiarg\keywordfalse
+    \allowcodebreaksfalse
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+  \fi\fi
+}
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+%   `example' (@kbd uses ttsl only inside of @example and friends),
+%   or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow   (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \code{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+  \def\email#1{\doemail#1,,\finish}
+  \def\doemail#1,#2,#3\finish{\begingroup
+    \unsepspaces
+    \pdfurl{mailto:#1}%
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+    \endlink
+  \endgroup}
+\else
+  \let\email=\uref
+\fi
+
+% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find.  We need it for
+% Polish suppressed-l.  --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+%
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+  {\selectfonts\lsize #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+%
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\plainfrenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+
+\message{glyphs,}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+   \advance\hsize by -2\dimen2 % Rules.
+   \vbox{%
+      \hrule height\dimen2
+      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
+         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+         \kern3pt\vrule width\dimen2}% Space to right.
+      \hrule height\dimen2}
+    \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbol don't have to have the
+  % font installed.
+  %
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  %
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  %
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
+
+% Glyphs from the EC fonts.  We don't use \let for the aliases, because
+% sometimes we redefine the original macro, and the alias should reflect
+% the redefinition.
+%
+% Use LaTeX names for the Icelandic letters.
+\def\DH{{\ecfont \char"D0}} % Eth
+\def\dh{{\ecfont \char"F0}} % eth
+\def\TH{{\ecfont \char"DE}} % Thorn
+\def\th{{\ecfont \char"FE}} % thorn
+%
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases.  We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+%
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+  \def\temp{#1}%
+  \ifx\temp\macrocharA\Aogonek
+  \else\ifx\temp\macrochara\aogonek
+  \else\ifx\temp\macrocharE\Eogonek
+  \else\ifx\temp\macrochare\eogonek
+  \else
+    \ecfont \setbox0=\hbox{#1}%
+    \ifdim\ht0=1ex\accent"0C #1%
+    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+    \fi
+  \fi\fi\fi\fi
+  }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
+\def\ecfont{%
+  % We can't distinguish serif/sans and italic/slanted, but this
+  % is used for crude hacks anyway (like adding French and German
+  % quotes to documents typeset with CM, where we lose kerning), so
+  % hopefully nobody will notice/care.
+  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+  \ifx\curfontstyle\bfstylename
+    % bold:
+    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+  \else
+    % regular:
+    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+  \fi
+  \thisecfont
+}
+
+% @registeredsymbol - R in a circle.  The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+               \hfil\crcr\Orb}}%
+    }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+%
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page.  Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+        \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+  % Open one extra group, as we want to close it in the middle of \Etitlepage.
+  \begingroup
+    \parindent=0pt \textfonts
+    % Leave some space at the very top of the page.
+    \vglue\titlepagetopglue
+    % No rule at page bottom unless we print one at the top with @title.
+    \finishedtitlepagetrue
+    %
+    % Most title ``pages'' are actually two pages long, with space
+    % at the top of the second.  We don't want the ragged left on the second.
+    \let\oldpage = \page
+    \def\page{%
+      \iffinishedtitlepage\else
+        \finishtitlepage
+      \fi
+      \let\page = \oldpage
+      \page
+      \null
+    }%
+}
+
+\def\Etitlepage{%
+    \iffinishedtitlepage\else
+       \finishtitlepage
+    \fi
+    % It is important to do the page break before ending the group,
+    % because the headline and footline are only empty inside the group.
+    % If we use the new definition of \page, we always get a blank page
+    % after the title page, which we certainly don't want.
+    \oldpage
+  \endgroup
+  %
+  % Need this before the \...aftertitlepage checks so that if they are
+  % in effect the toc pages will come out with page numbers.
+  \HEADINGSon
+  %
+  % If they want short, they certainly want long too.
+  \ifsetshortcontentsaftertitlepage
+    \shortcontents
+    \contents
+    \global\let\shortcontents = \relax
+    \global\let\contents = \relax
+  \fi
+  %
+  \ifsetcontentsaftertitlepage
+    \contents
+    \global\let\contents = \relax
+    \global\let\shortcontents = \relax
+  \fi
+}
+
+\def\finishtitlepage{%
+  \vskip4pt \hrule height 2pt width \hsize
+  \vskip\titlepagebottomglue
+  \finishedtitlepagetrue
+}
+
+%%% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\parseargdef\title{%
+  \checkenv\titlepage
+  \leftline{\titlefonts\rmisbold #1}
+  % print a rule at the page bottom also.
+  \finishedtitlepagefalse
+  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+  \checkenv\titlepage
+  {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+  \def\temp{\quotation}%
+  \ifx\thisenv\temp
+    \def\quotationauthor{#1}% printed in \Equotation.
+  \else
+    \checkenv\titlepage
+    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+    {\secfonts\rmisbold \leftline{#1}}%
+  \fi
+}
+
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline    % headline on even pages
+\newtoks\oddheadline     % headline on odd pages
+\newtoks\evenfootline    % footline on even pages
+\newtoks\oddfootline     % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+                            \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+                            \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what  @headings on  does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+  %
+  % Leave some space for the footline.  Hopefully ok to assume
+  % @evenfooting will not be used by itself.
+  \global\advance\pageheight by -12pt
+  \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+% @evenheadingmarks top     \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom  \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+                          \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+                          \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+  \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
+
+% @headings double      turns headings on for double-sided printing.
+% @headings single      turns headings on for single-sided printing.
+% @headings off         turns them off.
+% @headings on          same as @headings double, retained for compatibility.
+% @headings after       turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{%
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\undefined
+\def\today{%
+  \number\day\space
+  \ifcase\month
+  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+  \fi
+  \space\number\year}
+\fi
+
+% @settitle line...  specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent  \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin  \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+  \advance\hsize by -\rightskip
+  \advance\hsize by -\tableindent
+  \setbox0=\hbox{\itemindicate{#1}}%
+  \itemindex{#1}%
+  \nobreak % This prevents a break before @itemx.
+  %
+  % If the item text does not fit in the space we have, put it on a line
+  % by itself, and do not allow a page break either before or after that
+  % line.  We do not start a paragraph here because then if the next
+  % command is, e.g., @kindex, the whatsit would get put into the
+  % horizontal list on a line by itself, resulting in extra blank space.
+  \ifdim \wd0>\itemmax
+    %
+    % Make this a paragraph so we get the \parskip glue and wrapping,
+    % but leave it ragged-right.
+    \begingroup
+      \advance\leftskip by-\tableindent
+      \advance\hsize by\tableindent
+      \advance\rightskip by0pt plus1fil
+      \leavevmode\unhbox0\par
+    \endgroup
+    %
+    % We're going to be starting a paragraph, but we don't want the
+    % \parskip glue -- logically it's part of the @item we just started.
+    \nobreak \vskip-\parskip
+    %
+    % Stop a page break at the \parskip glue coming up.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    %
+    \penalty 10001
+    \endgroup
+    \itemxneedsnegativevskipfalse
+  \else
+    % The item text fits into the space.  Start a paragraph, so that the
+    % following text (if any) will end up on the same line.
+    \noindent
+    % Do this with kerns and \unhbox so that if there is a footnote in
+    % the item text, it can migrate to the main vertical list and
+    % eventually be printed.
+    \nobreak\kern-\tableindent
+    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+    \unhbox0
+    \nobreak\kern\dimen0
+    \endgroup
+    \itemxneedsnegativevskiptrue
+  \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+  \let\itemindex\gobble
+  \tablecheck{table}%
+}
+\envdef\ftable{%
+  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+  \tablecheck{ftable}%
+}
+\envdef\vtable{%
+  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+  \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
+}
+\def\tablex#1{%
+  \def\itemindicate{#1}%
+  \parsearg\tabley
+}
+\def\tabley#1{%
+  {%
+    \makevalueexpandable
+    \edef\temp{\noexpand\tablez #1\space\space\space}%
+    \expandafter
+  }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+  \aboveenvbreak
+  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+  \ifnum 0#2>0 \tableindent=#2\mil \fi
+  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+  \itemmax=\tableindent
+  \advance \itemmax by -\itemmargin
+  \advance \leftskip by \tableindent
+  \exdentamount=\tableindent
+  \parindent = 0pt
+  \parskip = \smallskipamount
+  \ifdim \parskip=0pt \parskip=2pt \fi
+  \let\item = \internalBitem
+  \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+  \aboveenvbreak
+  \itemmax=\itemindent
+  \advance\itemmax by -\itemmargin
+  \advance\leftskip by \itemindent
+  \exdentamount=\itemindent
+  \parindent=0pt
+  \parskip=\smallskipamount
+  \ifdim\parskip=0pt \parskip=2pt \fi
+  %
+  % Try typesetting the item mark that if the document erroneously says
+  % something like @itemize @samp (intending @table), there's an error
+  % right away at the @itemize.  It's not the best error message in the
+  % world, but it's better than leaving it to the @item.  This means if
+  % the user wants an empty mark, they have to say @w{} not just @w.
+  \def\itemcontents{#1}%
+  \setbox0 = \hbox{\itemcontents}%
+  %
+  % @itemize with no arg is equivalent to @itemize @bullet.
+  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+  %
+  \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+  \advance\itemno by 1  % for enumerations
+  {\let\par=\endgraf \smallbreak}% reasonable place to break
+  {%
+   % If the document has an @itemize directly after a section title, a
+   % \nobreak will be last on the list, and \sectionheading will have
+   % done a \vskip-\parskip.  In that case, we don't want to zero
+   % parskip, or the item text will crash with the heading.  On the
+   % other hand, when there is normal text preceding the item (as there
+   % usually is), we do want to zero parskip, or there would be too much
+   % space.  In that case, we won't have a \nobreak before.  At least
+   % that's the theory.
+   \ifnum\lastpenalty<10000 \parskip=0in \fi
+   \noindent
+   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   %
+   \vadjust{\penalty 1200}}% not good to break after first line of item.
+  \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list.  No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+  % If we were given no argument, pretend we were given `1'.
+  \def\thearg{#1}%
+  \ifx\thearg\empty \def\thearg{1}\fi
+  %
+  % Detect if the argument is a single token.  If so, it might be a
+  % letter.  Otherwise, the only valid thing it can be is a number.
+  % (We will always have one token, because of the test we just made.
+  % This is a good thing, since \splitoff doesn't work given nothing at
+  % all -- the first parameter is undelimited.)
+  \expandafter\splitoff\thearg\endmark
+  \ifx\rest\empty
+    % Only one token in the argument.  It could still be anything.
+    % A ``lowercase letter'' is one whose \lccode is nonzero.
+    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+    %   not equal to itself.
+    % Otherwise, we assume it's a number.
+    %
+    % We need the \relax at the end of the \ifnum lines to stop TeX from
+    % continuing to look for a <number>.
+    %
+    \ifnum\lccode\expandafter`\thearg=0\relax
+      \numericenumerate % a number (we hope)
+    \else
+      % It's a letter.
+      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+        \lowercaseenumerate % lowercase letter
+      \else
+        \uppercaseenumerate % uppercase letter
+      \fi
+    \fi
+  \else
+    % Multiple tokens in the argument.  We hope it's a number.
+    \numericenumerate
+  \fi
+}
+
+% An @enumerate whose labels are integers.  The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+  \itemno = \thearg
+  \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more lowercase letters in @enumerate; get a bigger
+                  alphabet}%
+    \fi
+    \char\lccode\itemno
+  }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more uppercase letters in @enumerate; get a bigger
+                  alphabet}
+    \fi
+    \char\uccode\itemno
+  }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments.  Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+  \advance\itemno by -1
+  \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble.  Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+%   @multitable @columnfractions .25 .3 .45
+%   @item ...
+%
+%   Numbers following @columnfractions are the percent of the total
+%   current hsize to be used for each column. You may use as many
+%   columns as desired.
+
+
+% Or use a template:
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item ...
+%   using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item first col stuff @tab second col stuff @tab third col
+%   @item
+%   first col stuff
+%   @tab
+%   second col stuff
+%   @tab
+%   third col
+%   @item first col stuff @tab second col stuff
+%   @tab Many paragraphs of text may be used in any column.
+%
+%         They will wrap at the width determined by the template.
+%   @item@tab@tab This will be in third column.
+%   @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+%                                                            to baseline.
+%   0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1.  We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+  \global\advance\colcount by 1
+  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+  \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+  \def\firstarg{#1}%
+  \ifx\firstarg\xendsetuptable
+    \let\go = \relax
+  \else
+    \ifx\firstarg\xcolumnfractions
+      \global\setpercenttrue
+    \else
+      \ifsetpercent
+         \let\go\pickupwholefraction
+      \else
+         \global\advance\colcount by 1
+         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+                   % separator; typically that is always in the input, anyway.
+         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+      \fi
+    \fi
+    \ifx\go\pickupwholefraction
+      % Put the argument back for the \pickupwholefraction call, so
+      % we'll always have a period there to be parsed.
+      \def\go{\pickupwholefraction#1}%
+    \else
+      \let\go = \setuptable
+    \fi%
+  \fi
+  \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry.  \everycr resets \everytab so we don't have to
+% undo it ourselves.
+\def\headitemfont{\b}% for people to use in the template row; not changeable
+\def\headitem{%
+  \checkenv\multitable
+  \crcr
+  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
+  \the\everytab % for the first item
+}%
+%
+% A \tab used to include \hskip1sp.  But then the space in a template
+% line is not enough.  That is bad.  So let's go back to just `&' until
+% we again encounter the problem the 1sp was intended to solve.
+%                                      --karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab  % insert after every tab.
+%
+\envdef\multitable{%
+  \vskip\parskip
+  \startsavinginserts
+  %
+  % @item within a multitable starts a normal row.
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
+  %
+  \tolerance=9500
+  \hbadness=9500
+  \setmultitablespacing
+  \parskip=\multitableparskip
+  \parindent=\multitableparindent
+  \overfullrule=0pt
+  \global\colcount=0
+  %
+  \everycr = {%
+    \noalign{%
+      \global\everytab={}%
+      \global\colcount=0 % Reset the column counter.
+      % Check for saved footnotes, etc.
+      \checkinserts
+      % Keeps underfull box messages off when table breaks over pages.
+      %\filbreak
+       % Maybe so, but it also creates really weird page breaks when the
+       % table breaks over pages. Wouldn't \vfil be better?  Wait until the
+       % problem manifests itself, so it can be fixed for real --karl.
+    }%
+  }%
+  %
+  \parsearg\domultitable
+}
+\def\domultitable#1{%
+  % To parse everything between @multitable and @item:
+  \setuptable#1 \endsetuptable
+  %
+  % This preamble sets up a generic column definition, which will
+  % be used as many times as user calls for columns.
+  % \vtop will set a single line and will also let text wrap and
+  % continue for many paragraphs if desired.
+  \halign\bgroup &%
+    \global\advance\colcount by 1
+    \multistrut
+    \vtop{%
+      % Use the current \colcount to find the correct column width:
+      \hsize=\expandafter\csname col\the\colcount\endcsname
+      %
+      % In order to keep entries from bumping into each other
+      % we will add a \leftskip of \multitablecolspace to all columns after
+      % the first one.
+      %
+      % If a template has been used, we will add \multitablecolspace
+      % to the width of each template entry.
+      %
+      % If the user has set preamble in terms of percent of \hsize we will
+      % use that dimension as the width of the column, and the \leftskip
+      % will keep entries from bumping into each other.  Table will start at
+      % left margin and final column will justify at right margin.
+      %
+      % Make sure we don't inherit \rightskip from the outer environment.
+      \rightskip=0pt
+      \ifnum\colcount=1
+       % The first column will be indented with the surrounding text.
+       \advance\hsize by\leftskip
+      \else
+       \ifsetpercent \else
+         % If user has not set preamble in terms of percent of \hsize
+         % we will advance \hsize by \multitablecolspace.
+         \advance\hsize by \multitablecolspace
+       \fi
+       % In either case we will make \leftskip=\multitablecolspace:
+      \leftskip=\multitablecolspace
+      \fi
+      % Ignoring space at the beginning and end avoids an occasional spurious
+      % blank line, when TeX decides to break the line at the space before the
+      % box from the multistrut, so the strut ends up on a line by itself.
+      % For example:
+      % @multitable @columnfractions .11 .89
+      % @item @code{#}
+      % @tab Legal holiday which is valid in major parts of the whole country.
+      % Is automatically provided with highlighting sequences respectively
+      % marking characters.
+      \noindent\ignorespaces##\unskip\multistrut
+    }\cr
+}
+\def\Emultitable{%
+  \crcr
+  \egroup % end the \halign
+  \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing.
+%%        If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed.  They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested.  But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+  \expandafter\let\csname #1\endcsname = \relax
+  \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+  % Scan in ``verbatim'' mode:
+  \obeylines
+  \catcode`\@ = \other
+  \catcode`\{ = \other
+  \catcode`\} = \other
+  %
+  % Make sure that spaces turn into tokens that match what \doignoretext wants.
+  \spaceisspace
+  %
+  % Count number of #1's that we've seen.
+  \doignorecount = 0
+  %
+  % Swallow text until we reach the matching `@end #1'.
+  \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+  \obeylines %
+  %
+  \gdef\dodoignore#1{%
+    % #1 contains the command name as a string, e.g., `ifinfo'.
+    %
+    % Define a command to find the next `@end #1'.
+    \long\def\doignoretext##1^^M@end #1{%
+      \doignoretextyyy##1^^M@#1\_STOP_}%
+    %
+    % And this command to find another #1 command, at the beginning of a
+    % line.  (Otherwise, we would consider a line `@c @ifset', for
+    % example, to count as an @ifset for nesting.)
+    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+    %
+    % And now expand that command.
+    \doignoretext ^^M%
+  }%
+}
+
+\def\doignoreyyy#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty                      % Nothing found.
+    \let\next\doignoretextzzz
+  \else                                        % Found a nested condition, ...
+    \advance\doignorecount by 1
+    \let\next\doignoretextyyy          % ..., look for another.
+    % If we're here, #1 ends with ^^M\ifinfo (for example).
+  \fi
+  \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+  \ifnum\doignorecount = 0     % We have just found the outermost @end.
+    \let\next\enddoignore
+  \else                                % Still inside a nested condition.
+    \advance\doignorecount by -1
+    \let\next\doignoretext      % Look for the next @end.
+  \fi
+  \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+  % Ignore anything after the last `@end #1'; this matters in verbatim
+  % environments, where otherwise the newline after an ignored conditional
+  % would result in a blank line in the output.
+  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+  {%
+    \makevalueexpandable
+    \def\temp{#2}%
+    \edef\next{\gdef\makecsname{SET#1}}%
+    \ifx\temp\empty
+      \next{}%
+    \else
+      \setzzz#2\endsetzzz
+    \fi
+  }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+  {%
+    \makevalueexpandable
+    \global\expandafter\let\csname SET#1\endcsname=\relax
+  }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+  \catcode`\- = \active \catcode`\_ = \active
+  %
+  \gdef\makevalueexpandable{%
+    \let\value = \expandablevalue
+    % We don't want these characters active, ...
+    \catcode`\-=\other \catcode`\_=\other
+    % ..., but we might end up with active ones in the argument if
+    % we're called from @code, as @code{@value{foo-bar_}}, though.
+    % So \let them to their normal equivalents.
+    \let-\realdash \let_\normalunderscore
+  }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file.  This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+  \expandafter\ifx\csname SET#1\endcsname\relax
+    {[No value for ``#1'']}%
+    \message{Variable `#1', used in @value, is not set.}%
+  \else
+    \csname SET#1\endcsname
+  \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+  {%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname SET#2\endcsname\relax
+      #1% If not set, redefine \next.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index.  The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
+    \noexpand\doindex{#1}}
+}
+
+% @defindex foo  ==  \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%
+    \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar    makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar   similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+  % Only do \closeout if we haven't already done it, else we'll end up
+  % closing the target index.
+  \expandafter \ifx\csname donesynindex#2\endcsname \relax
+    % The \closeout helps reduce unnecessary open files; the limit on the
+    % Acorn RISC OS is a mere 16 files.
+    \expandafter\closeout\csname#2indfile\endcsname
+    \expandafter\let\csname donesynindex#2\endcsname = 1
+  \fi
+  % redefine \fooindfile:
+  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+  \expandafter\let\csname#2indfile\endcsname=\temp
+  % redefine \fooindex:
+  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+%  and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+  \escapechar = `\\     % use backslash in output files.
+  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+  \def\ {\realbackslash\space }%
+  %
+  % Need these in case \tex is in effect and \{ is a \delimiter again.
+  % But can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.
+  \let\{ = \mylbrace
+  \let\} = \myrbrace
+  %
+  % I don't entirely understand this, but when an index entry is
+  % generated from a macro call, the \endinput which \scanmacro inserts
+  % causes processing to be prematurely terminated.  This is,
+  % apparently, because \indexsorttmp is fully expanded, and \endinput
+  % is an expandable command.  The redefinition below makes \endinput
+  % disappear altogether for that purpose -- although logging shows that
+  % processing continues to some further point.  On the other hand, it
+  % seems \endinput does not hurt in the printed index arg, since that
+  % is still getting written without apparent harm.
+  %
+  % Sample source (mac-idx3.tex, reported by Graham Percival to
+  % help-texinfo, 22may06):
+  % @macro funindex {WORD}
+  % @findex xyz
+  % @end macro
+  % ...
+  % @funindex commtest
+  %
+  % The above is not enough to reproduce the bug, but it gives the flavor.
+  %
+  % Sample whatsit resulting:
+  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+  %
+  % So:
+  \let\endinput = \empty
+  %
+  % Do the redefinitions.
+  \commondummies
+}
+
+% For the aux and toc files, @ is the escape character.  So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files).  When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+  \def\@{@@}%
+  \def\ {@ }%
+  \let\{ = \lbraceatcmd
+  \let\} = \rbraceatcmd
+  %
+  % Do the redefinitions.
+  \commondummies
+  \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+  %
+  % \definedummyword defines \#1 as \string\#1\space, thus effectively
+  % preventing its expansion.  This is used only for control% words,
+  % not control letters, because the \space would be incorrect for
+  % control characters, but is needed to separate the control word
+  % from whatever follows.
+  %
+  % For control letters, we have \definedummyletter, which omits the
+  % space.
+  %
+  % These can be used both for control words that take an argument and
+  % those that do not.  If it is followed by {arg} in the input, then
+  % that will dutifully get written to the index (or wherever).
+  %
+  \def\definedummyword  ##1{\def##1{\string##1\space}}%
+  \def\definedummyletter##1{\def##1{\string##1}}%
+  \let\definedummyaccent\definedummyletter
+  %
+  \commondummiesnofonts
+  %
+  \definedummyletter\_%
+  %
+  % Non-English letters.
+  \definedummyword\AA
+  \definedummyword\AE
+  \definedummyword\DH
+  \definedummyword\L
+  \definedummyword\O
+  \definedummyword\OE
+  \definedummyword\TH
+  \definedummyword\aa
+  \definedummyword\ae
+  \definedummyword\dh
+  \definedummyword\exclamdown
+  \definedummyword\l
+  \definedummyword\o
+  \definedummyword\oe
+  \definedummyword\ordf
+  \definedummyword\ordm
+  \definedummyword\questiondown
+  \definedummyword\ss
+  \definedummyword\th
+  %
+  % Although these internal commands shouldn't show up, sometimes they do.
+  \definedummyword\bf
+  \definedummyword\gtr
+  \definedummyword\hat
+  \definedummyword\less
+  \definedummyword\sf
+  \definedummyword\sl
+  \definedummyword\tclose
+  \definedummyword\tt
+  %
+  \definedummyword\LaTeX
+  \definedummyword\TeX
+  %
+  % Assorted special characters.
+  \definedummyword\bullet
+  \definedummyword\comma
+  \definedummyword\copyright
+  \definedummyword\registeredsymbol
+  \definedummyword\dots
+  \definedummyword\enddots
+  \definedummyword\equiv
+  \definedummyword\error
+  \definedummyword\euro
+  \definedummyword\guillemetleft
+  \definedummyword\guillemetright
+  \definedummyword\guilsinglleft
+  \definedummyword\guilsinglright
+  \definedummyword\expansion
+  \definedummyword\minus
+  \definedummyword\ogonek
+  \definedummyword\pounds
+  \definedummyword\point
+  \definedummyword\print
+  \definedummyword\quotedblbase
+  \definedummyword\quotedblleft
+  \definedummyword\quotedblright
+  \definedummyword\quoteleft
+  \definedummyword\quoteright
+  \definedummyword\quotesinglbase
+  \definedummyword\result
+  \definedummyword\textdegree
+  %
+  % We want to disable all macros so that they are not expanded by \write.
+  \macrolist
+  %
+  \normalturnoffactive
+  %
+  % Handle some cases of @value -- where it does not contain any
+  % (non-fully-expandable) commands.
+  \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+  % Control letters and accents.
+  \definedummyletter\!%
+  \definedummyaccent\"%
+  \definedummyaccent\'%
+  \definedummyletter\*%
+  \definedummyaccent\,%
+  \definedummyletter\.%
+  \definedummyletter\/%
+  \definedummyletter\:%
+  \definedummyaccent\=%
+  \definedummyletter\?%
+  \definedummyaccent\^%
+  \definedummyaccent\`%
+  \definedummyaccent\~%
+  \definedummyword\u
+  \definedummyword\v
+  \definedummyword\H
+  \definedummyword\dotaccent
+  \definedummyword\ogonek
+  \definedummyword\ringaccent
+  \definedummyword\tieaccent
+  \definedummyword\ubaraccent
+  \definedummyword\udotaccent
+  \definedummyword\dotless
+  %
+  % Texinfo font commands.
+  \definedummyword\b
+  \definedummyword\i
+  \definedummyword\r
+  \definedummyword\sc
+  \definedummyword\t
+  %
+  % Commands that take arguments.
+  \definedummyword\acronym
+  \definedummyword\cite
+  \definedummyword\code
+  \definedummyword\command
+  \definedummyword\dfn
+  \definedummyword\emph
+  \definedummyword\env
+  \definedummyword\file
+  \definedummyword\kbd
+  \definedummyword\key
+  \definedummyword\math
+  \definedummyword\option
+  \definedummyword\pxref
+  \definedummyword\ref
+  \definedummyword\samp
+  \definedummyword\strong
+  \definedummyword\tie
+  \definedummyword\uref
+  \definedummyword\url
+  \definedummyword\var
+  \definedummyword\verb
+  \definedummyword\w
+  \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names.  It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{\let##1\asis}%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{\let##1\empty}%
+  % Hopefully, all control words can become @asis.
+  \let\definedummyword\definedummyaccent
+  %
+  \commondummiesnofonts
+  %
+  % Don't no-op \tt, since it isn't a user-level command
+  % and is used in the definitions of the active chars like <, >, |, etc.
+  % Likewise with the other plain tex font commands.
+  %\let\tt=\asis
+  %
+  \def\ { }%
+  \def\@{@}%
+  % how to handle braces?
+  \def\_{\normalunderscore}%
+  %
+  % Non-English letters.
+  \def\AA{AA}%
+  \def\AE{AE}%
+  \def\DH{DZZ}%
+  \def\L{L}%
+  \def\OE{OE}%
+  \def\O{O}%
+  \def\TH{ZZZ}%
+  \def\aa{aa}%
+  \def\ae{ae}%
+  \def\dh{dzz}%
+  \def\exclamdown{!}%
+  \def\l{l}%
+  \def\oe{oe}%
+  \def\ordf{a}%
+  \def\ordm{o}%
+  \def\o{o}%
+  \def\questiondown{?}%
+  \def\ss{ss}%
+  \def\th{zzz}%
+  %
+  \def\LaTeX{LaTeX}%
+  \def\TeX{TeX}%
+  %
+  % Assorted special characters.
+  % (The following {} will end up in the sort string, but that's ok.)
+  \def\bullet{bullet}%
+  \def\comma{,}%
+  \def\copyright{copyright}%
+  \def\dots{...}%
+  \def\enddots{...}%
+  \def\equiv{==}%
+  \def\error{error}%
+  \def\euro{euro}%
+  \def\expansion{==>}%
+  \def\guillemetleft{<<}%
+  \def\guillemetright{>>}%
+  \def\guilsinglleft{<}%
+  \def\guilsinglright{>}%
+  \def\minus{-}%
+  \def\point{.}%
+  \def\pounds{pounds}%
+  \def\print{-|}%
+  \def\quotedblbase{"}%
+  \def\quotedblleft{"}%
+  \def\quotedblright{"}%
+  \def\quoteleft{`}%
+  \def\quoteright{'}%
+  \def\quotesinglbase{,}%
+  \def\registeredsymbol{R}%
+  \def\result{=>}%
+  \def\textdegree{o}%
+  %
+  % We need to get rid of all macros, leaving only the arguments (if present).
+  % Of course this is not nearly correct, but it is the best we can do for now.
+  % makeinfo does not expand macros in the argument to @deffn, which ends up
+  % writing an index entry, and texindex isn't prepared for an index sort entry
+  % that starts with \.
+  %
+  % Since macro invocations are followed by braces, we can just redefine them
+  % to take a single TeX argument.  The case of a macro invocation that
+  % goes to end-of-line is not handled.
+  %
+  \macrolist
+}
+
+\let\indexbackslash=0  %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with a space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \safewhatsit\dosubindwrite
+  }%
+  \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+  % Put the index entry in the margin if desired.
+  \ifx\SETmarginindex\relax\else
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+  \fi
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+      % so it will be output as is; and it will print as backslash.
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+  }%
+  \temp
+}
+
+% Take care of unwanted page breaks/skips around a whatsit:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write or \pdfdest will make \lastskip zero.  The result is that
+% sequences like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip.  \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip.  The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
+% ..., ready, GO:
+%
+\def\safewhatsit#1{%
+\ifhmode
+  #1%
+\else
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \whatsitskip = \lastskip
+  \edef\lastskipmacro{\the\lastskip}%
+  \whatsitpenalty = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\whatsitskip glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifx\lastskipmacro\zeroskipmacro
+  \else
+    \vskip-\whatsitskip
+  \fi
+  %
+  #1%
+  %
+  \ifx\lastskipmacro\zeroskipmacro
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    %
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\whatsitskip
+  \fi
+\fi
+}
+
+% The index entry written in the file actually looks like
+%  \entry {sortstring}{page}{topic}
+% or
+%  \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+%  \initial {c}
+%     before the first topic whose initial is c
+%  \entry {topic}{pagelist}
+%     for a topic that is used without subtopics
+%  \primary {topic}
+%     for the beginning of a topic that is used with subtopics
+%  \secondary {subtopic}{pagelist}
+%     for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+  \dobreak \chapheadingskip{10000}%
+  %
+  \smallfonts \rm
+  \tolerance = 9500
+  \plainfrenchspacing
+  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+  %
+  % See if the index file exists and is nonempty.
+  % Change catcode of @ here so that if the index file contains
+  % \initial {@}
+  % as its first line, TeX doesn't complain about mismatched braces
+  % (because it thinks @} is a control sequence).
+  \catcode`\@ = 11
+  \openin 1 \jobname.#1s
+  \ifeof 1
+    % \enddoublecolumns gets confused if there is no text in the index,
+    % and it loses the chapter title and the aux file entries for the
+    % index.  The easiest way to prevent this problem is to make sure
+    % there is some text.
+    \putwordIndexNonexistent
+  \else
+    %
+    % If the index file exists but is empty, then \openin leaves \ifeof
+    % false.  We have to make TeX try to read something from the file, so
+    % it can discover if there is anything in it.
+    \read 1 to \temp
+    \ifeof 1
+      \putwordIndexIsEmpty
+    \else
+      % Index files are almost Texinfo source, but we use \ as the escape
+      % character.  It would be better to use @, but that's too big a change
+      % to make right now.
+      \def\indexbackslash{\backslashcurfont}%
+      \catcode`\\ = 0
+      \escapechar = `\\
+      \begindoublecolumns
+      \input \jobname.#1s
+      \enddoublecolumns
+    \fi
+  \fi
+  \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+  % Some minor font changes for the special characters.
+  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+  %
+  % Remove any glue we may have, we'll be inserting our own.
+  \removelastskip
+  %
+  % We like breaks before the index initials, so insert a bonus.
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
+  %
+  % Typeset the initial.  Making this add up to a whole number of
+  % baselineskips increases the chance of the dots lining up from column
+  % to column.  It still won't often be perfect, because of the stretch
+  % we need before each entry, but it's better.
+  %
+  % No shrink because it confuses \balancecolumns.
+  \vskip 1.67\baselineskip plus .5\baselineskip
+  \leftline{\secbf #1}%
+  % Do our best not to break after the initial.
+  \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin.  It is used for index
+% and table of contents entries.  The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+%      \def\entry#1#2{...
+% But this freezes the catcodes in the argument, and can cause problems to
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+%
+% The right solution is to prevent \entry from swallowing the whole text.
+%                                 --kasal, 21nov03
+\def\entry{%
+  \begingroup
+    %
+    % Start a new paragraph if necessary, so our assignments below can't
+    % affect previous text.
+    \par
+    %
+    % Do not fill out the last line with white space.
+    \parfillskip = 0in
+    %
+    % No extra space above this paragraph.
+    \parskip = 0in
+    %
+    % Do not prefer a separate line ending with a hyphen to fewer lines.
+    \finalhyphendemerits = 0
+    %
+    % \hangindent is only relevant when the entry text and page number
+    % don't both fit on one line.  In that case, bob suggests starting the
+    % dots pretty far over on the line.  Unfortunately, a large
+    % indentation looks wrong when the entry text itself is broken across
+    % lines.  So we use a small indentation and put up with long leaders.
+    %
+    % \hangafter is reset to 1 (which is the value we want) at the start
+    % of each paragraph, so we need not do anything with that.
+    \hangindent = 2em
+    %
+    % When the entry text needs to be broken, just fill out the first line
+    % with blank space.
+    \rightskip = 0pt plus1fil
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus1pt
+    %
+    % Swallow the left brace of the text (first parameter):
+    \afterassignment\doentry
+    \let\temp =
+}
+\def\doentry{%
+    \bgroup % Instead of the swallowed brace.
+      \noindent
+      \aftergroup\finishentry
+      % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+    % #1 is the page number.
+    %
+    % The following is kludged to not output a line of dots in the index if
+    % there are no page numbers.  The next person who breaks this will be
+    % cursed by a Unix daemon.
+    \setbox\boxA = \hbox{#1}%
+    \ifdim\wd\boxA = 0pt
+      \ %
+    \else
+      %
+      % If we must, put the page number on a line of its own, and fill out
+      % this line with blank space.  (The \hfil is overwhelmed with the
+      % fill leaders glue in \indexdotfill if the page number does fit.)
+      \hfil\penalty50
+      \null\nobreak\indexdotfill % Have leaders before the page number.
+      %
+      % The `\ ' here is removed by the implicit \unskip that TeX does as
+      % part of (the primitive) \par.  Without it, a spurious underfull
+      % \hbox ensues.
+      \ifpdf
+       \pdfgettoks#1.%
+       \ \the\toksA
+      \else
+       \ #1%
+      \fi
+    \fi
+    \par
+  \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+  \parfillskip=0in
+  \parskip=0in
+  \hangindent=1in
+  \hangafter=1
+  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+  \ifpdf
+    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+  \else
+    #2
+  \fi
+  \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+  % Grab any single-column material above us.
+  \output = {%
+    %
+    % Here is a possibility not foreseen in manmac: if we accumulate a
+    % whole lot of material, we might end up calling this \output
+    % routine twice in a row (see the doublecol-lose test, which is
+    % essentially a couple of indexes with @setchapternewpage off).  In
+    % that case we just ship out what is in \partialpage with the normal
+    % output routine.  Generally, \partialpage will be empty when this
+    % runs and this will be a no-op.  See the indexspread.tex test case.
+    \ifvoid\partialpage \else
+      \onepageout{\pagecontents\partialpage}%
+    \fi
+    %
+    \global\setbox\partialpage = \vbox{%
+      % Unvbox the main output page.
+      \unvbox\PAGE
+      \kern-\topskip \kern\baselineskip
+    }%
+  }%
+  \eject % run that output routine to set \partialpage
+  %
+  % Use the double-column output routine for subsequent pages.
+  \output = {\doublecolumnout}%
+  %
+  % Change the page size parameters.  We could do this once outside this
+  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+  % format, but then we repeat the same computation.  Repeating a couple
+  % of assignments once per index is clearly meaningless for the
+  % execution time, so we may as well do it in one place.
+  %
+  % First we halve the line length, less a little for the gutter between
+  % the columns.  We compute the gutter based on the line length, so it
+  % changes automatically with the paper format.  The magic constant
+  % below is chosen so that the gutter has the same value (well, +-<1pt)
+  % as it did when we hard-coded it.
+  %
+  % We put the result in a separate register, \doublecolumhsize, so we
+  % can restore it in \pagesofar, after \hsize itself has (potentially)
+  % been clobbered.
+  %
+  \doublecolumnhsize = \hsize
+    \advance\doublecolumnhsize by -.04154\hsize
+    \divide\doublecolumnhsize by 2
+  \hsize = \doublecolumnhsize
+  %
+  % Double the \vsize as well.  (We don't need a separate register here,
+  % since nobody clobbers \vsize.)
+  \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+  \splittopskip=\topskip \splitmaxdepth=\maxdepth
+  % Get the available space for the double columns -- the normal
+  % (undoubled) page height minus any material left over from the
+  % previous page.
+  \dimen@ = \vsize
+  \divide\dimen@ by 2
+  \advance\dimen@ by -\ht\partialpage
+  %
+  % box0 will be the left-hand column, box2 the right.
+  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+  \onepageout\pagesofar
+  \unvbox255
+  \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+  \unvbox\partialpage
+  %
+  \hsize = \doublecolumnhsize
+  \wd0=\hsize \wd2=\hsize
+  \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+  % The following penalty ensures that the page builder is exercised
+  % _before_ we change the output routine.  This is necessary in the
+  % following situation:
+  %
+  % The last section of the index consists only of a single entry.
+  % Before this section, \pagetotal is less than \pagegoal, so no
+  % break occurs before the last section starts.  However, the last
+  % section, consisting of \initial and the single \entry, does not
+  % fit on the page and has to be broken off.  Without the following
+  % penalty the page builder will not be exercised until \eject
+  % below, and by that time we'll already have changed the output
+  % routine to the \balancecolumns version, so the next-to-last
+  % double-column page will be processed with \balancecolumns, which
+  % is wrong:  The two columns will go to the main vertical list, with
+  % the broken-off section in the recent contributions.  As soon as
+  % the output routine finishes, TeX starts reconsidering the page
+  % break.  The two columns and the broken-off section both fit on the
+  % page, because the two columns now take up only half of the page
+  % goal.  When TeX sees \eject from below which follows the final
+  % section, it invokes the new output routine that we've set after
+  % \balancecolumns below; \onepageout will try to fit the two columns
+  % and the final section into the vbox of \pageheight (see
+  % \pagebody), causing an overfull box.
+  %
+  % Note that glue won't work here, because glue does not exercise the
+  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+  \penalty0
+  %
+  \output = {%
+    % Split the last of the double-column material.  Leave it on the
+    % current page, no automatic page break.
+    \balancecolumns
+    %
+    % If we end up splitting too much material for the current page,
+    % though, there will be another page break right after this \output
+    % invocation ends.  Having called \balancecolumns once, we do not
+    % want to call it again.  Therefore, reset \output to its normal
+    % definition right away.  (We hope \balancecolumns will never be
+    % called on to balance too much material, but if it is, this makes
+    % the output somewhat more palatable.)
+    \global\output = {\onepageout{\pagecontents\PAGE}}%
+  }%
+  \eject
+  \endgroup % started in \begindoublecolumns
+  %
+  % \pagegoal was set to the doubled \vsize above, since we restarted
+  % the current page.  We're now back to normal single-column
+  % typesetting, so reset \pagegoal to the normal \vsize (after the
+  % \endgroup where \vsize got restored).
+  \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+  \dimen@ = \ht0
+  \advance\dimen@ by \topskip
+  \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by 2 % target to split to
+  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
+  \splittopskip = \topskip
+  % Loop until we get a decent breakpoint.
+  {%
+    \vbadness = 10000
+    \loop
+      \global\setbox3 = \copy0
+      \global\setbox1 = \vsplit3 to \dimen@
+    \ifdim\ht3>\dimen@
+      \global\advance\dimen@ by 1pt
+    \repeat
+  }%
+  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+  \setbox0=\vbox to\dimen@{\unvbox1}%
+  \setbox2=\vbox to\dimen@{\unvbox3}%
+  %
+  \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number".  We avoid collisions with chapter
+% numbers by starting them at 10000.  (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno        \secno=0
+\newcount\subsecno     \subsecno=0
+\newcount\subsubsecno  \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno  \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+  \ifnum\appendixno=`A A%
+  \else\ifnum\appendixno=`B B%
+  \else\ifnum\appendixno=`C C%
+  \else\ifnum\appendixno=`D D%
+  \else\ifnum\appendixno=`E E%
+  \else\ifnum\appendixno=`F F%
+  \else\ifnum\appendixno=`G G%
+  \else\ifnum\appendixno=`H H%
+  \else\ifnum\appendixno=`I I%
+  \else\ifnum\appendixno=`J J%
+  \else\ifnum\appendixno=`K K%
+  \else\ifnum\appendixno=`L L%
+  \else\ifnum\appendixno=`M M%
+  \else\ifnum\appendixno=`N N%
+  \else\ifnum\appendixno=`O O%
+  \else\ifnum\appendixno=`P P%
+  \else\ifnum\appendixno=`Q Q%
+  \else\ifnum\appendixno=`R R%
+  \else\ifnum\appendixno=`S S%
+  \else\ifnum\appendixno=`T T%
+  \else\ifnum\appendixno=`U U%
+  \else\ifnum\appendixno=`V V%
+  \else\ifnum\appendixno=`W W%
+  \else\ifnum\appendixno=`X X%
+  \else\ifnum\appendixno=`Y Y%
+  \else\ifnum\appendixno=`Z Z%
+  % The \the is necessary, despite appearances, because \appendixletter is
+  % expanded while writing the .toc file.  \char\appendixno is not
+  % expandable, thus it is written literally, thus all appendixes come out
+  % with the same letter (or @) in the toc without it.
+  \else\char\the\appendixno
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter.  Page headings and footings can use
+% these.  @section does likewise.
+\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
+\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+  % Compute the abs. sec. level:
+  \absseclevel=#2
+  \advance\absseclevel by \secbase
+  % Make sure \absseclevel doesn't fall outside the range:
+  \ifnum \absseclevel < 0
+    \absseclevel = 0
+  \else
+    \ifnum \absseclevel > 3
+      \absseclevel = 3
+    \fi
+  \fi
+  % The heading type:
+  \def\headtype{#1}%
+  \if \headtype U%
+    \ifnum \absseclevel < \unmlevel
+      \chardef\unmlevel = \absseclevel
+    \fi
+  \else
+    % Check for appendix sections:
+    \ifnum \absseclevel = 0
+      \edef\chapheadtype{\headtype}%
+    \else
+      \if \headtype A\if \chapheadtype N%
+       \errmessage{@appendix... within a non-appendix chapter}%
+      \fi\fi
+    \fi
+    % Check for numbered within unnumbered:
+    \ifnum \absseclevel > \unmlevel
+      \def\headtype{U}%
+    \else
+      \chardef\unmlevel = 3
+    \fi
+  \fi
+  % Now print the heading:
+  \if \headtype U%
+    \ifcase\absseclevel
+       \unnumberedzzz{#3}%
+    \or \unnumberedseczzz{#3}%
+    \or \unnumberedsubseczzz{#3}%
+    \or \unnumberedsubsubseczzz{#3}%
+    \fi
+  \else
+    \if \headtype A%
+      \ifcase\absseclevel
+         \appendixzzz{#3}%
+      \or \appendixsectionzzz{#3}%
+      \or \appendixsubseczzz{#3}%
+      \or \appendixsubsubseczzz{#3}%
+      \fi
+    \else
+      \ifcase\absseclevel
+         \chapterzzz{#3}%
+      \or \seczzz{#3}%
+      \or \numberedsubseczzz{#3}%
+      \or \numberedsubsubseczzz{#3}%
+      \fi
+    \fi
+  \fi
+  \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v.  By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+  % section resetting is \global in case the chapter is in a group, such
+  % as an @include file.
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\chapno by 1
+  %
+  % Used for \float.
+  \gdef\chaplevelprefix{\the\chapno.}%
+  \resetallfloatnos
+  %
+  % \putwordChapter can contain complex things in translations.
+  \toks0=\expandafter{\putwordChapter}%
+  \message{\the\toks0 \space \the\chapno}%
+  %
+  % Write the actual heading.
+  \chapmacro{#1}{Ynumbered}{\the\chapno}%
+  %
+  % So @section and the like are numbered underneath this chapter.
+  \global\let\section = \numberedsec
+  \global\let\subsection = \numberedsubsec
+  \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
+%
+\def\appendixzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\appendixno by 1
+  \gdef\chaplevelprefix{\appendixletter.}%
+  \resetallfloatnos
+  %
+  % \putwordAppendix can contain complex things in translations.
+  \toks0=\expandafter{\putwordAppendix}%
+  \message{\the\toks0 \space \appendixletter}%
+  %
+  \chapmacro{#1}{Yappendix}{\appendixletter}%
+  %
+  \global\let\section = \appendixsec
+  \global\let\subsection = \appendixsubsec
+  \global\let\subsubsection = \appendixsubsubsec
+}
+
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\unnumberedno by 1
+  %
+  % Since an unnumbered has no number, no prefix for figures.
+  \global\let\chaplevelprefix = \empty
+  \resetallfloatnos
+  %
+  % This used to be simply \message{#1}, but TeX fully expands the
+  % argument to \message.  Therefore, if #1 contained @-commands, TeX
+  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
+  % expanded @cite (which turns out to cause errors because \cite is meant
+  % to be executed, not expanded).
+  %
+  % Anyway, we don't want the fully-expanded definition of @cite to appear
+  % as a result of the \message, we just want `@cite' itself.  We use
+  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+  % simply yielding the contents of <toks register>.  (We also do this for
+  % the toc entries.)
+  \toks0 = {#1}%
+  \message{(\the\toks0)}%
+  %
+  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+  %
+  \global\let\section = \unnumberedsec
+  \global\let\subsection = \unnumberedsubsec
+  \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+  % Well, we could do the following in a group, but that would break
+  % an assumption that \chapmacro is called at the outermost level.
+  % Thus we are safer this way:                --kasal, 24feb04
+  \let\centerparametersmaybe = \centerparameters
+  \unnmhead0{#1}%
+  \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynumbered}%
+                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and such:
+%       1) We use \vbox rather than the earlier \line to permit
+%          overlong headings to fold.
+%       2) \hyphenpenalty is set to 10000 because hyphenation in a
+%          heading is obnoxious; this forbids it.
+%       3) Likewise, headings look best if no \parindent is used, and
+%          if justification is not attempted.  Hence \raggedright.
+
+\def\majorheading{%
+  {\advance\chapheadingskip by 10pt \chapbreak }%
+  \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                    \parindent=0pt\ptexraggedright
+                    \rmisbold #1\hfill}}%
+  \bigskip \par\penalty 200\relax
+  \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip\chapheadingskip
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong.  But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+  \chappager
+  \ifodd\pageno \else
+    \begingroup
+      \evenheadline={\hfil}\evenfootline={\hfil}%
+      \oddheadline={\hfil}\oddfootline={\hfil}%
+      \hbox to 0pt{}%
+      \chappager
+    \endgroup
+  \fi
+}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+  % Insert the first mark before the heading break (see notes for \domark).
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+                        \gdef\thissection{}}%
+  %
+  \def\temptype{#2}%
+  \ifx\temptype\Ynothingkeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{\thischaptername}}%
+  \else\ifx\temptype\Yomitfromtockeyword
+    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+                          \gdef\thischapter{}}%
+  \else\ifx\temptype\Yappendixkeyword
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\appendixletter}%
+      % \noexpand\putwordAppendix avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \else
+    \toks0={#1}%
+    \xdef\lastchapterdefs{%
+      \gdef\noexpand\thischaptername{\the\toks0}%
+      \gdef\noexpand\thischapternum{\the\chapno}%
+      % \noexpand\putwordChapter avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
+    }%
+  \fi\fi\fi
+  %
+  % Output the mark.  Pass it through \safewhatsit, to take care of
+  % the preceding space.
+  \safewhatsit\domark
+  %
+  % Insert the chapter heading break.
+  \pchapsepmacro
+  %
+  % Now the second mark, after the heading break.  No break points
+  % between here and the heading.
+  \let\prevchapterdefs=\lastchapterdefs
+  \let\prevsectiondefs=\lastsectiondefs
+  \domark
+  %
+  {%
+    \chapfonts \rmisbold
+    %
+    % Have to define \lastsection before calling \donoderef, because the
+    % xref code eventually uses it.  On the other hand, it has to be called
+    % after \pchapsepmacro, or the headline will change too soon.
+    \gdef\lastsection{#1}%
+    %
+    % Only insert the separating space if we have a chapter/appendix
+    % number, and don't print the unnumbered ``number''.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unnchap}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+      \def\toctype{omit}%
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+      \def\toctype{app}%
+    \else
+      \setbox0 = \hbox{#3\enspace}%
+      \def\toctype{numchap}%
+    \fi\fi\fi
+    %
+    % Write the toc entry for this chapter.  Must come before the
+    % \donoderef, because we include the current node name in the toc
+    % entry, and \donoderef resets it to empty.
+    \writetocentry{\toctype}{#1}{#3}%
+    %
+    % For pdftex, we have to write out the node definition (aka, make
+    % the pdfdest) after any page break, but before the actual text has
+    % been typeset.  If the destination for the pdf outline is after the
+    % text, then jumping from the outline may wind up with the text not
+    % being visible, for instance under high magnification.
+    \donoderef{#2}%
+    %
+    % Typeset the actual heading.
+    \nobreak % Avoid page breaks at the interline glue.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+          \hangindent=\wd0 \centerparametersmaybe
+          \unhbox0 #1\par}%
+  }%
+  \nobreak\bigskip % no page break after a chapter title
+  \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+  \advance\rightskip by 3\rightskip
+  \leftskip = \rightskip
+  \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt\ptexraggedright
+                       \rmisbold #1\hfill}}\bigskip \par\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt
+                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
+}
+\def\CHAPFopen{%
+  \global\let\chapmacro=\chfopen
+  \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles.  These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\seckeyword{sec}
+%
+\def\sectionheading#1#2#3#4{%
+  {%
+    % Switch to the right set of fonts.
+    \csname #2fonts\endcsname \rmisbold
+    %
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    % Insert first mark before the heading break (see notes for \domark).
+    \let\prevsectiondefs=\lastsectiondefs
+    \ifx\temptype\Ynothingkeyword
+      \ifx\sectionlevel\seckeyword
+        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+                              \gdef\thissection{\thissectionname}}%
+      \fi
+    \else\ifx\temptype\Yomitfromtockeyword
+      % Don't redefine \thissection.
+    \else\ifx\temptype\Yappendixkeyword
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \else
+      \ifx\sectionlevel\seckeyword
+        \toks0={#1}%
+        \xdef\lastsectiondefs{%
+          \gdef\noexpand\thissectionname{\the\toks0}%
+          \gdef\noexpand\thissectionnum{#4}%
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
+        }%
+      \fi
+    \fi\fi\fi
+    %
+    % Go into vertical mode.  Usually we'll already be there, but we
+    % don't want the following whatsit to end up in a preceding paragraph
+    % if the document didn't happen to have a blank line.
+    \par
+    %
+    % Output the mark.  Pass it through \safewhatsit, to take care of
+    % the preceding space.
+    \safewhatsit\domark
+    %
+    % Insert space above the heading.
+    \csname #2headingbreak\endcsname
+    %
+    % Now the second mark, after the heading break.  No break points
+    % between here and the heading.
+    \let\prevsectiondefs=\lastsectiondefs
+    \domark
+    %
+    % Only insert the space after the number if we have a section number.
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unn}%
+      \gdef\lastsection{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      % for @headings -- no section number, don't include in toc,
+      % and don't redefine \lastsection.
+      \setbox0 = \hbox{}%
+      \def\toctype{omit}%
+      \let\sectionlevel=\empty
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{app}%
+      \gdef\lastsection{#1}%
+    \else
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{num}%
+      \gdef\lastsection{#1}%
+    \fi\fi\fi
+    %
+    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
+    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+    %
+    % Write the node reference (= pdf destination for pdftex).
+    % Again, see comments in \chapmacro.
+    \donoderef{#3}%
+    %
+    % Interline glue will be inserted when the vbox is completed.
+    % That glue will be a valid breakpoint for the page, since it'll be
+    % preceded by a whatsit (usually from the \donoderef, or from the
+    % \writetocentry if there was no node).  We don't want to allow that
+    % break, since then the whatsits could end up on page n while the
+    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
+    \nobreak
+    %
+    % Output the actual section heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+          \hangindent=\wd0  % zero if no section number
+          \unhbox0 #1}%
+  }%
+  % Add extra space after the heading -- half of whatever came above it.
+  % Don't allow stretch, though.
+  \kern .5 \csname #2headingskip\endcsname
+  %
+  % Do not let the kern be a potential breakpoint, as it would be if it
+  % was followed by glue.
+  \nobreak
+  %
+  % We'll almost certainly start a paragraph next, so don't let that
+  % glue accumulate.  (Not a breakpoint because it's preceded by a
+  % discardable item.)
+  \vskip-\parskip
+  %
+  % This is purely so the last item on the list is a known \penalty >
+  % 10000.  This is so \startdefun can avoid allowing breakpoints after
+  % section headings.  Otherwise, it would insert a valid breakpoint between:
+  %
+  %   @section sec-whatever
+  %   @deffn def-whatever
+  \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this.  The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything.  This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+  \edef\writetoctype{#1}%
+  \ifx\writetoctype\omitkeyword \else
+    \iftocfileopened\else
+      \immediate\openout\tocfile = \jobname.toc
+      \global\tocfileopenedtrue
+    \fi
+    %
+    \iflinks
+      {\atdummies
+       \edef\temp{%
+         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+       \temp
+      }%
+    \fi
+  \fi
+  %
+  % Tell \shipout to create a pdf destination on each page, if we're
+  % writing pdf.  These are used in the table of contents.  We can't
+  % just write one on every page because the title pages are numbered
+  % 1 and 2 (the page numbers aren't printed), and so are the first
+  % two pages of the document.  Thus, we'd have two destinations named
+  % `1', and two named `2'.
+  \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care.  This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+%
+\def\activecatcodes{%
+  \catcode`\"=\active
+  \catcode`\$=\active
+  \catcode`\<=\active
+  \catcode`\>=\active
+  \catcode`\\=\active
+  \catcode`\^=\active
+  \catcode`\_=\active
+  \catcode`\|=\active
+  \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+  \setupdatafile
+  \activecatcodes
+  \input \tocreadfilename
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+  % If @setchapternewpage on, and @headings double, the contents should
+  % start on an odd page, unlike chapters.  Thus, we maintain
+  % \contentsalignmacro in parallel with \pagealignmacro.
+  % From: Torbjorn Granlund <tege@matematik.su.se>
+  \contentsalignmacro
+  \immediate\closeout\tocfile
+  %
+  % Don't need to put `Contents' or `Short Contents' in the headline.
+  % It is abundantly clear what they are.
+  \chapmacro{#1}{Yomitfromtoc}{}%
+  %
+  \savepageno = \pageno
+  \begingroup                  % Set up to handle contents files properly.
+    \raggedbottom              % Worry more about breakpoints than the bottom.
+    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    %
+    % Roman numerals for page numbers.
+    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+% redefined for the two-volume lispref.  We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
+
+% Normal (long) toc.
+%
+\def\contents{%
+  \startcontents{\putwordTOC}%
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+    \ifeof 1 \else
+      \pdfmakeoutlines
+    \fi
+    \closein 1
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+  \startcontents{\putwordShortTOC}%
+    %
+    \let\numchapentry = \shortchapentry
+    \let\appentry = \shortchapentry
+    \let\unnchapentry = \shortunnchapentry
+    % We want a true roman here for the page numbers.
+    \secfonts
+    \let\rm=\shortcontrm \let\bf=\shortcontbf
+    \let\sl=\shortcontsl \let\tt=\shortconttt
+    \rm
+    \hyphenpenalty = 10000
+    \advance\baselineskip by 1pt % Open it up a little.
+    \def\numsecentry##1##2##3##4{}
+    \let\appsecentry = \numsecentry
+    \let\unnsecentry = \numsecentry
+    \let\numsubsecentry = \numsecentry
+    \let\appsubsecentry = \numsecentry
+    \let\unnsubsecentry = \numsecentry
+    \let\numsubsubsecentry = \numsecentry
+    \let\appsubsubsecentry = \numsecentry
+    \let\unnsubsubsecentry = \numsecentry
+    \openin 1 \tocreadfilename\space
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \closein 1
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+  % This space should be enough, since a single number is .5em, and the
+  % widest letter (M) is 1em, at least in the Computer Modern fonts.
+  % But use \hss just in case.
+  % (This space doesn't include the extra space that gets added after
+  % the label; that gets put in by \shortchapentry above.)
+  %
+  % We'd like to right-justify chapter numbers, but that looks strange
+  % with appendix letters.  And right-justifying numbers and
+  % left-justifying letters looks strange when there is less than 10
+  % chapters.  Have to read the whole toc once to know how many chapters
+  % there are before deciding ...
+  \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+  % We use M since it's probably the widest letter.
+  \setbox0 = \hbox{\putwordAppendix{} M}%
+  \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+   \begingroup
+     \chapentryfonts
+     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+   \endgroup
+   \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+  \secentryfonts \leftskip=\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+  \subsecentryfonts \leftskip=2\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+  \subsubsecentryfonts \leftskip=3\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @tex ... @end tex    escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\envdef\tex{%
+  \setupmarkupstyle{tex}%
+  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+  \catcode `\%=14
+  \catcode `\+=\other
+  \catcode `\"=\other
+  \catcode `\|=\other
+  \catcode `\<=\other
+  \catcode `\>=\other
+  \catcode`\`=\other
+  \catcode`\'=\other
+  \escapechar=`\\
+  %
+  \let\b=\ptexb
+  \let\bullet=\ptexbullet
+  \let\c=\ptexc
+  \let\,=\ptexcomma
+  \let\.=\ptexdot
+  \let\dots=\ptexdots
+  \let\equiv=\ptexequiv
+  \let\!=\ptexexclam
+  \let\i=\ptexi
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \let\{=\ptexlbrace
+  \let\+=\tabalign
+  \let\}=\ptexrbrace
+  \let\/=\ptexslash
+  \let\*=\ptexstar
+  \let\t=\ptext
+  \expandafter \let\csname top\endcsname=\ptextop  % outer
+  \let\frenchspacing=\plainfrenchspacing
+  %
+  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+  \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments.  \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical.  We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      % it's not a good place to break if the last penalty was \nobreak
+      % or better ...
+      \ifnum\lastpenalty<10000 \penalty-50 \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+        \ctl\leaders\hrule height\circthick\hfil\ctr
+        \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+        \cbl\leaders\hrule height\circthick\hfil\cbr
+        \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+  \ifhmode\par\fi  % can't be in the midst of a paragraph.
+  \startsavinginserts
+  \lskip=\leftskip \rskip=\rightskip
+  \leftskip=0pt\rightskip=0pt % we want these *outside*.
+  \cartinner=\hsize \advance\cartinner by-\lskip
+  \advance\cartinner by-\rskip
+  \cartouter=\hsize
+  \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+                               % side, and for 6pt waste from
+                               % each corner char, and rule thickness
+  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+  % Flag to tell @lisp, etc., not to narrow margin.
+  \let\nonarrowing = t%
+  \vbox\bgroup
+      \baselineskip=0pt\parskip=0pt\lineskip=0pt
+      \carttop
+      \hbox\bgroup
+         \hskip\lskip
+         \vrule\kern3pt
+         \vbox\bgroup
+             \kern3pt
+             \hsize=\cartinner
+             \baselineskip=\normbskip
+             \lineskip=\normlskip
+             \parskip=\normpskip
+             \vskip -\parskip
+             \comment % For explanation, see the end of \def\group.
+}
+\def\Ecartouche{%
+              \ifhmode\par\fi
+             \kern3pt
+         \egroup
+         \kern3pt\vrule
+         \hskip\rskip
+      \egroup
+      \cartbot
+  \egroup
+  \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\newdimen\nonfillparindent
+\def\nonfillstart{%
+  \aboveenvbreak
+  \hfuzz = 12pt % Don't be fussy
+  \sepspaces % Make spaces be word-separators rather than space tokens.
+  \let\par = \lisppar % don't ignore blank lines
+  \obeylines % each line of input is a line of output
+  \parskip = 0pt
+  % Turn off paragraph indentation but redefine \indent to emulate
+  % the normal \indent.
+  \nonfillparindent=\parindent
+  \parindent = 0pt
+  \let\indent\nonfillindent
+  %
+  \emergencystretch = 0pt % don't try to avoid overfull boxes
+  \ifx\nonarrowing\relax
+    \advance \leftskip by \lispnarrowing
+    \exdentamount=\lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \let\exdent=\nofillexdent
+}
+
+\begingroup
+\obeyspaces
+% We want to swallow spaces (but not other tokens) after the fake
+% @indent in our nonfill-environments, where spaces are normally
+% active and set to @tie, resulting in them not being ignored after
+% @indent.
+\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
+\gdef\nonfillindentcheck{%
+\ifx\temp %
+\expandafter\nonfillindentgobble%
+\else%
+\leavevmode\nonfillindentbox%
+\fi%
+}%
+\endgroup
+\def\nonfillindentgobble#1{\nonfillindent}
+\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+%    @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+  \ifx\SETdispenvsize\smallword
+    % end paragraph for sake of leading, in case document has no blank
+    % line.  This is redundant with what happens in \aboveenvbreak, but
+    % we need to do it before changing the fonts, and it's inconvenient
+    % to change the fonts afterward.
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+\def\setsmalldispenv{%
+  \ifx\SETdispenvsize\nosmallword
+  \else
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
+    \smallexamplefonts \rm
+  \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it by one command:
+\def\makedispenv #1#2{
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+  \expandafter\let\csname E#1\endcsname \afterenvbreak
+  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two synonyms:
+\def\maketwodispenvs #1#2#3{
+  \makedispenv{#1}{#3}
+  \makedispenv{#2}{#3}
+}
+
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvs {lisp}{example}{%
+  \nonfillstart
+  \tt\setupmarkupstyle{example}%
+  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+  \gobble       % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenv {display}{%
+  \nonfillstart
+  \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenv{format}{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \advance\leftskip by 0pt plus 1fill
+  \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @raggedright does more-or-less normal line breaking but no right
+% justification.  From plain.tex.
+\envdef\raggedright{%
+  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
+}
+\let\Eraggedright\par
+
+\envdef\raggedleft{%
+  \parindent=0pt \leftskip0pt plus2em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedcenter\par
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.  We keep \parskip nonzero in general, since
+% we're doing normal filling.  So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\def\quotationstart{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \advance\rightskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \parsearg\quotationlabel
+}
+
+\envdef\quotation{%
+  \setnormaldispenv
+  \quotationstart
+}
+
+\envdef\smallquotation{%
+  \setsmalldispenv
+  \quotationstart
+}
+\let\Esmallquotation = \Equotation
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+  \par
+  \ifx\quotationauthor\undefined\else
+    % indent a bit.
+    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+  \fi
+  {\parskip=0pt \afterenvbreak}%
+}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty \else
+    {\bf #1: }%
+  \fi
+}
+
+
+% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too.  Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+  \do\ \do\\\do\{\do\}\do\$\do\&%
+  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+  \do\<\do\>\do\|\do\@\do+\do\"%
+  % Don't do the quotes -- if we do, @set txicodequoteundirected and
+  % @set txicodequotebacktick will not have effect on @verb and
+  % @verbatim, and ?` and !` ligatures won't get disabled.
+  %\do\`\do\'%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+  \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+  \tt  % easiest (and conventionally used) font for verbatim
+  \def\par{\leavevmode\endgraf}%
+  \setupmarkupstyle{verb}%
+  \tabeightspaces
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+\def\starttabbox{\setbox0=\hbox\bgroup}
+%
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabexpand{%
+    \catcode`\^^I=\active
+    \def^^I{\leavevmode\egroup
+      \dimen0=\wd0 % the width so far, or since the previous tab
+      \divide\dimen0 by\tabw
+      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
+      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
+      \wd0=\dimen0 \box0 \starttabbox
+    }%
+  }
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  % Easiest (and conventionally used) font for verbatim
+  \tt
+  \def\par{\leavevmode\egroup\box0\endgraf}%
+  \tabexpand
+  \setupmarkupstyle{verbatim}%
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+  \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters.  Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+%    \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+%     \def\doverbatim#1@end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+  \catcode`\ =\active
+  \obeylines %
+  % ignore everything up to the first ^^M, that's the newline at the end
+  % of the @verbatim input line itself.  Otherwise we get an extra blank
+  % line in the output.
+  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+  % We really want {...\end verbatim} in the body of the macro, but
+  % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+    \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+  {%
+    \makevalueexpandable
+    \setupverbatim
+    \indexnofonts       % Allow `@@' and other weird things in file names.
+    \input #1
+    \afterenvbreak
+  }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
+
+% Start the processing of @deffn:
+\def\startdefun{%
+  \ifnum\lastpenalty<10000
+    \medbreak
+    \defunpenalty=10003 % Will keep this @deffn together with the
+                        % following @def command, see below.
+  \else
+    % If there are two @def commands in a row, we'll have a \nobreak,
+    % which is there to keep the function description together with its
+    % header.  But if there's nothing but headers, we need to allow a
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \printdefunline, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    %
+    % As a minor refinement, we avoid "club" headers by signalling
+    % with penalty of 10003 after the very first @deffn in the
+    % sequence (see above), and penalty of 10002 after any following
+    % @def command.
+    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
+    %
+    % Similarly, after a section heading, do not allow a break.
+    % But do insert the glue.
+    \medskip  % preceded by discardable penalty, so not a breakpoint
+  \fi
+  %
+  \parindent=0in
+  \advance\leftskip by \defbodyindent
+  \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+  % First, check whether we are in the right environment:
+  \checkenv#1%
+  %
+  % As above, allow line break if we have multiple x headers in a row.
+  % It's not a great place, though.
+  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+  %
+  % And now, it's time to reuse the body of the original defun:
+  \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+  \begingroup
+    % call \deffnheader:
+    #1#2 \endheader
+    % common ending:
+    \interlinepenalty = 10000
+    \advance\rightskip by 0pt plus 1fil
+    \endgraf
+    \nobreak\vskip -\parskip
+    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
+    % Some of the @defun-type tags do not enable magic parentheses,
+    % rendering the following check redundant.  But we don't optimize.
+    \checkparencounts
+  \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remaining is to define \deffnheader.
+%
+\def\makedefun#1{%
+  \expandafter\let\csname E#1\endcsname = \Edefun
+  \edef\temp{\noexpand\domakedefun
+    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+  \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+  \envdef#1{%
+    \startdefun
+    \parseargusing\activeparens{\printdefunline#3}%
+  }%
+  \def#2{\dodefunx#1}%
+  \def#3%
+}
+
+%%% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+%%% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+%%% Type:
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+  \doind{tp}{\code{#2}}%
+  \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+  % Get the values of \leftskip and \rightskip as they were outside the @def...
+  \advance\leftskip by -\defbodyindent
+  %
+  % How we'll format the type name.  Putting it in brackets helps
+  % distinguish it from the body text that may end up on the next line
+  % just below it.
+  \def\temp{#1}%
+  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+  %
+  % Figure out line sizes for the paragraph shape.
+  % The first line needs space for \box0; but if \rightskip is nonzero,
+  % we need only space for the part of \box0 which exceeds it:
+  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  % The continuations:
+  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
+  % (plain.tex says that \dimen1 should be used only as global.)
+  \parshape 2 0in \dimen0 \defargsindent \dimen2
+  %
+  % Put the type name to the right margin.
+  \noindent
+  \hbox to 0pt{%
+    \hfil\box0 \kern-\hsize
+    % \hsize has to be shortened this way:
+    \kern\leftskip
+    % Intentionally do not respect \rightskip, since we need the space.
+  }%
+  %
+  % Allow all lines to be underfull without complaint:
+  \tolerance=10000 \hbadness=10000
+  \exdentamount=\defbodyindent
+  {%
+    % defun fonts. We use typewriter by default (used to be bold) because:
+    % . we're printing identifiers, they should be in tt in principle.
+    % . in languages with many accents, such as Czech or French, it's
+    %   common to leave accents off identifiers.  The result looks ok in
+    %   tt, but exceedingly strange in rm.
+    % . we don't want -- and --- to be treated as ligatures.
+    % . this still does not fix the ?` and !` ligatures, but so far no
+    %   one has made identifiers using them :).
+    \df \tt
+    \def\temp{#2}% return value type
+    \ifx\temp\empty\else \tclose{\temp} \fi
+    #3% output function name
+  }%
+  {\rm\enskip}% hskip 0.5 em of \tenrm
+  %
+  \boldbrax
+  % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  Let's try @var for that.
+  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
+  #1%
+  \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+  \catcode`\(=\active \catcode`\)=\active
+  \catcode`\[=\active \catcode`\]=\active
+  \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc.  For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+  \activeparens
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
+
+  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+  \ifampseen
+    % At the first level, print parens in roman,
+    % otherwise use the default font.
+    \ifnum \parencount=1 \rm \fi
+  \else
+    % The \sf parens (in \boldbrax) actually are a little bolder than
+    % the contained text.  This is especially needed for [ and ] .
+    \sf
+  \fi
+}
+\def\infirstlevel#1{%
+  \ifampseen
+    \ifnum\parencount=1
+      #1%
+    \fi
+  \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+  \global\advance\parencount by 1
+  {\parenfont(}%
+  \infirstlevel \bfafterword
+}
+\def\clnr{%
+  {\parenfont)}%
+  \infirstlevel \sl
+  \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+  \global\advance\brackcount by 1
+  {\bf[}%
+}
+\def\rbrb{%
+  {\bf]}%
+  \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+  \ifnum\parencount=0 \else \badparencount \fi
+  \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
+\def\badparencount{%
+  \message{Warning: unbalanced parentheses in @def...}%
+  \global\parencount=0
+}
+\def\badbrackcount{%
+  \message{Warning: unbalanced square brackets in @def...}%
+  \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\undefined
+  \newwrite\macscribble
+  \def\scantokens#1{%
+    \toks0={#1}%
+    \immediate\openout\macscribble=\jobname.tmp
+    \immediate\write\macscribble{\the\toks0}%
+    \immediate\closeout\macscribble
+    \input \jobname.tmp
+  }
+\fi
+
+\def\scanmacro#1{%
+  \begingroup
+    \newlinechar`\^^M
+    \let\xeatspaces\eatspaces
+    % Undo catcode changes of \startcontents and \doprintindex
+    % When called from @insertcopying or (short)caption, we need active
+    % backslash to get it printed correctly.  Previously, we had
+    % \catcode`\\=\other instead.  We'll see whether a problem appears
+    % with macro expansion.                            --kasal, 19aug04
+    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+    % ... and \example
+    \spaceisspace
+    %
+    % Append \endinput to make sure that TeX does not see the ending newline.
+    % I've verified that it is necessary both for e-TeX and for ordinary TeX
+    %                                                  --kasal, 29nov03
+    \scantokens{#1\endinput}%
+  \endgroup
+}
+
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
+\newcount\paramno   % Count of parameters
+\newtoks\macname    % Macro name
+\newif\ifrecursive  % Is it recursive?
+
+% List of all defined macros in the form
+%    \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+     \toks0 = \expandafter{\macrolist\definedummyword#1}%
+     \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+%
+\def\cslet#1#2{%
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \.
+
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion.  Must do this non-globally, to
+% confine the change to the current group.
+
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+
+\def\scanctxt{%
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\@=\other
+  \catcode`\^=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\~=\other
+  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
+}
+
+\def\scanargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+  \scanctxt
+  \catcode`\{=\other
+  \catcode`\}=\other
+  \catcode`\^^M=\other
+  \usembodybackslash
+}
+
+\def\macroargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+}
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+
+{\catcode`@=0 @catcode`@\=@active
+ @gdef@usembodybackslash{@let\=@mbodybackslash}
+ @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+  \getargs{#1}%           now \macname is the macname and \argl the arglist
+  \ifx\argl\empty       % no arguments
+     \paramno=0%
+  \else
+     \expandafter\parsemargdef \argl;%
+  \fi
+  \if1\csname ismacro.\the\macname\endcsname
+     \message{Warning: redefining \the\macname}%
+  \else
+     \expandafter\ifx\csname \the\macname\endcsname \relax
+     \else \errmessage{Macro name \the\macname\space already defined}\fi
+     \global\cslet{macsave.\the\macname}{\the\macname}%
+     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+     \addtomacrolist{\the\macname}%
+  \fi
+  \begingroup \macrobodyctxt
+  \ifrecursive \expandafter\parsermacbody
+  \else \expandafter\parsemacbody
+  \fi}
+
+\parseargdef\unmacro{%
+  \if1\csname ismacro.#1\endcsname
+    \global\cslet{#1}{macsave.#1}%
+    \global\expandafter\let \csname ismacro.#1\endcsname=0%
+    % Remove the macro name from \macrolist:
+    \begingroup
+      \expandafter\let\csname#1\endcsname \relax
+      \let\definedummyword\unmacrodo
+      \xdef\macrolist{\macrolist}%
+    \endgroup
+  \else
+    \errmessage{Macro #1 not defined}%
+  \fi
+}
+
+% Called by \do from \dounmacro on each macro.  The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+  \ifx #1\relax
+    % remove this
+  \else
+    \noexpand\definedummyword \noexpand#1%
+  \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% Parse the optional {params} list.  Set up \paramno and \paramlist
+% so \defmacro knows what to do.  Define \macarg.blah for each blah
+% in the params list, to be ##N where N is the position in that list.
+% That gets used by \mbodybackslash (above).
+
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX:  let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+
+\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
+        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdefxxx#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\parsemargdefxxx
+    \advance\paramno by 1%
+    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+        {\xeatspaces{\hash\the\paramno}}%
+    \edef\paramlist{\paramlist\hash\the\paramno,}%
+  \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+
+\long\def\parsemacbody#1@end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1@end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+
+% This defines the macro itself. There are six cases: recursive and
+% nonrecursive macros of zero, one, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+\def\defmacro{%
+  \let\hash=##% convert placeholders to macro parameter chars
+  \ifrecursive
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\scanmacro{\temp}}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \egroup\noexpand\scanmacro{\temp}}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+    \fi
+  \else
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+        \egroup
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \expandafter\noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+      \csname\the\macname xxx\endcsname
+      \paramlist{%
+          \egroup
+          \noexpand\norecurse{\the\macname}%
+          \noexpand\scanmacro{\temp}\egroup}%
+    \fi
+  \fi}
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {.  If so it reads up to the closing }, if not, it reads the whole
+% line.  Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg)
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+  \ifx\nchar\bgroup\else
+    \expandafter\parsearg
+  \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign.  Just make them active and then expand them all to nothing.
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+  {%
+    \expandafter\let\obeyedspace=\empty
+    \addtomacrolist{#1}%
+    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+  }%
+  \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs    % True if xref values are known.
+\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+  node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node.  #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+  \ifx\lastnode\empty\else
+    \setref{\lastnode}{#1}%
+    \global\let\lastnode=\empty
+  \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \lastsection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
+% 3) NAME-pg    - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+  \pdfmkdest{#1}%
+  \iflinks
+    {%
+      \atdummies  % preserve commands, but don't expand them
+      \edef\writexrdef##1##2{%
+       \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+         ##1}{##2}}% these are parameters of \writexrdef
+      }%
+      \toks0 = \expandafter{\lastsection}%
+      \immediate \writexrdef{title}{\the\toks0 }%
+      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+    }%
+  \fi
+}
+
+% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual.  All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+  \unsepspaces
+  \def\printedmanual{\ignorespaces #5}%
+  \def\printedrefname{\ignorespaces #3}%
+  \setbox1=\hbox{\printedmanual\unskip}%
+  \setbox0=\hbox{\printedrefname\unskip}%
+  \ifdim \wd0 = 0pt
+    % No printed node name was explicitly given.
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+      % Use the node name inside the square brackets.
+      \def\printedrefname{\ignorespaces #1}%
+    \else
+      % Use the actual chapter/section title appear inside
+      % the square brackets.  Use the real section title if we have it.
+      \ifdim \wd1 > 0pt
+        % It is in another manual, so we don't have it.
+        \def\printedrefname{\ignorespaces #1}%
+      \else
+        \ifhavexrefs
+          % We know the real title if we have the xref values.
+          \def\printedrefname{\refx{#1-title}{}}%
+        \else
+          % Otherwise just copy the Info node name.
+          \def\printedrefname{\ignorespaces #1}%
+        \fi%
+      \fi
+    \fi
+  \fi
+  %
+  % Make link in pdf output.
+  \ifpdf
+    {\indexnofonts
+     \turnoffactive
+     % This expands tokens, so do it after making catcode changes, so _
+     % etc. don't get their TeX definitions.
+     \getfilename{#4}%
+     %
+     % See comments at \activebackslashdouble.
+     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+      \backslashparens\pdfxrefdest}%
+     %
+     \leavevmode
+     \startlink attr{/Border [0 0 0]}%
+     \ifnum\filenamelength>0
+       goto file{\the\filename.pdf} name{\pdfxrefdest}%
+     \else
+       goto name{\pdfmkpgn{\pdfxrefdest}}%
+     \fi
+    }%
+    \setcolor{\linkcolor}%
+  \fi
+  %
+  % Float references are printed completely differently: "Figure 1.2"
+  % instead of "[somenode], p.3".  We distinguish them by the
+  % LABEL-title being set to a magic string.
+  {%
+    % Have to otherify everything special to allow the \csname to
+    % include an _ in the xref name, etc.
+    \indexnofonts
+    \turnoffactive
+    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+      \csname XR#1-title\endcsname
+  }%
+  \iffloat\Xthisreftitle
+    % If the user specified the print name (third arg) to the ref,
+    % print it instead of our usual "Figure 1.2".
+    \ifdim\wd0 = 0pt
+      \refx{#1-snt}{}%
+    \else
+      \printedrefname
+    \fi
+    %
+    % if the user also gave the printed manual name (fifth arg), append
+    % "in MANUALNAME".
+    \ifdim \wd1 > 0pt
+      \space \putwordin{} \cite{\printedmanual}%
+    \fi
+  \else
+    % node/anchor (non-float) references.
+    %
+    % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+    % insert empty discretionaries after hyphens, which means that it will
+    % not find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens, this
+    % is a loss.  Therefore, we give the text of the node name again, so it
+    % is as if TeX is seeing it for the first time.
+    \ifdim \wd1 > 0pt
+      \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+    \else
+      % _ (for example) has to be the character _ for the purposes of the
+      % control sequence corresponding to the node, but it has to expand
+      % into the usual \leavevmode...\vrule stuff for purposes of
+      % printing. So we \turnoffactive for the \refx-snt, back on for the
+      % printing, back off for the \refx-pg.
+      {\turnoffactive
+       % Only output a following space if the -snt ref is nonempty; for
+       % @unnumbered and @anchor, it won't be.
+       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+      }%
+      % output the `[mynode]' via a macro so it can be overridden.
+      \xrefprintnodename\printedrefname
+      %
+      % But we always want a comma and a space:
+      ,\space
+      %
+      % output the `page 3'.
+      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output.  It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents.  Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+  \ifnum\secno=0
+    \putwordChapter@tie \the\chapno
+  \else \ifnum\subsecno=0
+    \putwordSection@tie \the\chapno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+\def\Yappendix{%
+  \ifnum\secno=0
+     \putwordAppendix@tie @char\the\appendixno{}%
+  \else \ifnum\subsecno=0
+     \putwordSection@tie @char\the\appendixno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
+  \else
+    \putwordSection@tie
+      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+  {%
+    \indexnofonts
+    \otherbackslash
+    \expandafter\global\expandafter\let\expandafter\thisrefX
+      \csname XR#1\endcsname
+  }%
+  \ifx\thisrefX\relax
+    % If not defined, say something at least.
+    \angleleft un\-de\-fined\angleright
+    \iflinks
+      \ifhavexrefs
+        \message{\linenumber Undefined cross reference `#1'.}%
+      \else
+        \ifwarnedxrefs\else
+          \global\warnedxrefstrue
+          \message{Cross reference values unknown; you must run TeX again.}%
+        \fi
+      \fi
+    \fi
+  \else
+    % It's defined, so just use it.
+    \thisrefX
+  \fi
+  #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+  {% The node name might contain 8-bit characters, which in our current
+   % implementation are changed to commands like @'e.  Don't let these
+   % mess up the control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safexrefname{#1}%
+  }%
+  %
+  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR\safexrefname\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    %
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+      {\safexrefname}}%
+  \fi
+}
+
+% Read the last existing aux file, if any.  No error if none exists.
+%
+\def\tryauxfile{%
+  \openin 1 \jobname.aux
+  \ifeof 1 \else
+    \readdatafile{aux}%
+    \global\havexrefstrue
+  \fi
+  \closein 1
+}
+
+\def\setupdatafile{%
+  \catcode`\^^@=\other
+  \catcode`\^^A=\other
+  \catcode`\^^B=\other
+  \catcode`\^^C=\other
+  \catcode`\^^D=\other
+  \catcode`\^^E=\other
+  \catcode`\^^F=\other
+  \catcode`\^^G=\other
+  \catcode`\^^H=\other
+  \catcode`\^^K=\other
+  \catcode`\^^L=\other
+  \catcode`\^^N=\other
+  \catcode`\^^P=\other
+  \catcode`\^^Q=\other
+  \catcode`\^^R=\other
+  \catcode`\^^S=\other
+  \catcode`\^^T=\other
+  \catcode`\^^U=\other
+  \catcode`\^^V=\other
+  \catcode`\^^W=\other
+  \catcode`\^^X=\other
+  \catcode`\^^Z=\other
+  \catcode`\^^[=\other
+  \catcode`\^^\=\other
+  \catcode`\^^]=\other
+  \catcode`\^^^=\other
+  \catcode`\^^_=\other
+  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
+  % supported in the main text, it doesn't seem desirable.  Furthermore,
+  % that is not enough: for node names that actually contain a ^
+  % character, we would end up writing a line like this: 'xrdef {'hat
+  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+  % argument, and \hat is not an expandable control sequence.  It could
+  % all be worked out, but why?  Either we support ^^ or we don't.
+  %
+  % The other change necessary for this was to define \auxhat:
+  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+  % and then to call \auxhat in \setq.
+  %
+  \catcode`\^=\other
+  %
+  % Special characters.  Should be turned off anyway, but...
+  \catcode`\~=\other
+  \catcode`\[=\other
+  \catcode`\]=\other
+  \catcode`\"=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\$=\other
+  \catcode`\#=\other
+  \catcode`\&=\other
+  \catcode`\%=\other
+  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+  %
+  % This is to support \ in node names and titles, since the \
+  % characters end up in a \csname.  It's easier than
+  % leaving it active and making its active definition an actual \
+  % character.  What I don't understand is why it works in the *value*
+  % of the xrdef.  Seems like it should be a catcode12 \, and that
+  % should not typeset properly.  But it works, so I'm moving on for
+  % now.  --karl, 15jan04.
+  \catcode`\\=\other
+  %
+  % Make the characters 128-255 be printing characters.
+  {%
+    \count1=128
+    \def\loop{%
+      \catcode\count1=\other
+      \advance\count1 by 1
+      \ifnum \count1<256 \loop \fi
+    }%
+  }%
+  %
+  % @ is our escape character in .aux files, and we need braces.
+  \catcode`\{=1
+  \catcode`\}=2
+  \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+  \setupdatafile
+  \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes.  Otherwise like plain.
+\gdef\footnote{%
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \global\advance\footnoteno by \@ne
+  \edef\thisfootno{$^{\the\footnoteno}$}%
+  %
+  % In case the footnote comes at the end of a sentence, preserve the
+  % extra spacing after we do the footnote number.
+  \let\@sf\empty
+  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+  %
+  % Remove inadvertent blank space before typesetting the footnote number.
+  \unskip
+  \thisfootno\@sf
+  \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter.  Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read.  --karl, 16nov96.
+%
+\gdef\dofootnote{%
+  \insert\footins\bgroup
+  % We want to typeset this text as a normal paragraph, even if the
+  % footnote reference occurs in (for example) a display environment.
+  % So reset some parameters.
+  \hsize=\pagewidth
+  \interlinepenalty\interfootnotelinepenalty
+  \splittopskip\ht\strutbox % top baseline for broken footnotes
+  \splitmaxdepth\dp\strutbox
+  \floatingpenalty\@MM
+  \leftskip\z@skip
+  \rightskip\z@skip
+  \spaceskip\z@skip
+  \xspaceskip\z@skip
+  \parindent\defaultparindent
+  %
+  \smallfonts \rm
+  %
+  % Because we use hanging indentation in footnotes, a @noindent appears
+  % to exdent this text, so make it be a no-op.  makeinfo does not use
+  % hanging indentation so @noindent can still be needed within footnote
+  % text after an @example or the like (not that this is good style).
+  \let\noindent = \relax
+  %
+  % Hang the footnote text off the number.  Use \everypar in case the
+  % footnote extends for more than one paragraph.
+  \everypar = {\hang}%
+  \textindent{\thisfootno}%
+  %
+  % Don't crash into the line above the footnote text.  Since this
+  % expands into a box, it must come within the paragraph, lest it
+  % provide a place where TeX can split the footnote.
+  \footstrut
+  \futurelet\next\fo@t
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished.  Otherwise, the insertion
+% would be lost.
+% Similarly, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes.  --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+  \ifx \insert\ptexinsert
+    \let\insert\saveinsert
+  \else
+    \let\checkinserts\relax
+  \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+  \afterassignment\next
+  % swallow the left brace
+  \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+    {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
+  \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+  \next
+}
+\def\newsaveinsX #1{%
+  \csname newbox\endcsname #1%
+  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+    \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image.  We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front.  If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+  % Do not bother showing banner with epsf.tex v2.7k (available in
+  % doc/epsf.tex and on ctan).
+  \def\epsfannounce{\toks0 = }%
+  \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+  work.  It is also included in the Texinfo distribution, or you can get
+  it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+  \ifx\epsfbox\undefined
+    \ifwarnednoepsf \else
+      \errhelp = \noepsfhelp
+      \errmessage{epsf.tex not found, images will be ignored}%
+      \global\warnednoepsftrue
+    \fi
+  \else
+    \imagexxx #1,,,,,\finish
+  \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing this stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+  \catcode`\^^M = 5     % in case we're inside an example
+  \normalturnoffactive  % allow _ et al. in names
+  % If the image is by itself, center it.
+  \ifvmode
+    \imagevmodetrue
+    \nobreak\medskip
+    % Usually we'll have text after the image which will insert
+    % \parskip glue, so insert it here too to equalize the space
+    % above and below.
+    \nobreak\vskip\parskip
+    \nobreak
+  \fi
+  %
+  % Leave vertical mode so that indentation from an enclosing
+  % environment such as @quotation is respected.  On the other hand, if
+  % it's at the top level, we don't want the normal paragraph indentation.
+  \noindent
+  %
+  % Output the image.
+  \ifpdf
+    \dopdfimage{#1}{#2}{#3}%
+  \else
+    % \epsfbox itself resets \epsf?size at each figure.
+    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+    \epsfbox{#1.eps}%
+  \fi
+  %
+  \ifimagevmode \medskip \fi  % space after the standalone image
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label.  Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored.  It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+  \let\thiscaption=\empty
+  \let\thisshortcaption=\empty
+  %
+  % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \startsavinginserts
+  %
+  % We can't be used inside a paragraph.
+  \par
+  %
+  \vtop\bgroup
+    \def\floattype{#1}%
+    \def\floatlabel{#2}%
+    \def\floatloc{#3}% we do nothing with this yet.
+    %
+    \ifx\floattype\empty
+      \let\safefloattype=\empty
+    \else
+      {%
+        % the floattype might have accents or other special characters,
+        % but we need to use it in a control sequence name.
+        \indexnofonts
+        \turnoffactive
+        \xdef\safefloattype{\floattype}%
+      }%
+    \fi
+    %
+    % If label is given but no type, we handle that as the empty type.
+    \ifx\floatlabel\empty \else
+      % We want each FLOATTYPE to be numbered separately (Figure 1,
+      % Table 1, Figure 2, ...).  (And if no label, no number.)
+      %
+      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+      \global\advance\floatno by 1
+      %
+      {%
+        % This magic value for \lastsection is output by \setref as the
+        % XREFLABEL-title value.  \xrefX uses it to distinguish float
+        % labels (which have a completely different output format) from
+        % node and anchor labels.  And \xrdef uses it to construct the
+        % lists of floats.
+        %
+        \edef\lastsection{\floatmagic=\safefloattype}%
+        \setref{\floatlabel}{Yfloat}%
+      }%
+    \fi
+    %
+    % start with \parskip glue, I guess.
+    \vskip\parskip
+    %
+    % Don't suppress indentation if a float happens to start a section.
+    \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float Foo & @caption{Cap}:     Foo: Cap
+% @float Foo & no caption:        Foo
+% @float ,lbl & Caption{Cap}:     1.1: Cap
+% @float ,lbl & no caption:       1.1
+% @float & @caption{Cap}:         Cap
+% @float & no caption:
+%
+\def\Efloat{%
+    \let\floatident = \empty
+    %
+    % In all cases, if we have a float type, it comes first.
+    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+    %
+    % If we have an xref label, the number comes next.
+    \ifx\floatlabel\empty \else
+      \ifx\floattype\empty \else % if also had float type, need tie first.
+        \appendtomacro\floatident{\tie}%
+      \fi
+      % the number.
+      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+    \fi
+    %
+    % Start the printed caption with what we've constructed in
+    % \floatident, but keep it separate; we need \floatident again.
+    \let\captionline = \floatident
+    %
+    \ifx\thiscaption\empty \else
+      \ifx\floatident\empty \else
+       \appendtomacro\captionline{: }% had ident, so need a colon between
+      \fi
+      %
+      % caption text.
+      \appendtomacro\captionline{\scanexp\thiscaption}%
+    \fi
+    %
+    % If we have anything to print, print it, with space before.
+    % Eventually this needs to become an \insert.
+    \ifx\captionline\empty \else
+      \vskip.5\parskip
+      \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
+    \fi
+    %
+    % If have an xref label, write the list of floats info.  Do this
+    % after the caption, to avoid chance of it being a breakpoint.
+    \ifx\floatlabel\empty \else
+      % Write the text that goes in the lof to the aux file as
+      % \floatlabel-lof.  Besides \floatident, we include the short
+      % caption if specified, else the full caption if specified, else nothing.
+      {%
+        \atdummies
+        %
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+       \scanexp{%
+         \xdef\noexpand\gtemp{%
+           \ifx\thisshortcaption\empty
+             \thiscaption
+           \else
+             \thisshortcaption
+           \fi
+         }%
+       }%
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+         \ifx\gtemp\empty \else : \gtemp \fi}}%
+      }%
+    \fi
+  \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start floating, we have to issue warning
+  % whenever an insert appears inside a float which could possibly
+  % float. --kasal, 26may04
+  %
+  \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use.  Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+  \ifx#1\relax
+      % Haven't seen this figure type before.
+      \csname newcount\endcsname #1%
+      %
+      % Remember to reset this floatno at the next chap.
+      \expandafter\gdef\expandafter\resetallfloatnos
+        \expandafter{\resetallfloatnos #1=0 }%
+  \fi
+  \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \lastsection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+  % Can't fully expand XR#1-lof because it can contain anything.  Just
+  % pass the control sequence.  On the other hand, XR#1-pg is just the
+  % page number, and we want to fully expand that so we can get a link
+  % in pdf output.
+  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+  %
+  % use the same \entry macro we use to generate the TOC and index.
+  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+  \writeentry
+}}
+
+
+\message{localization,}
+
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding.  Single argument is the language
+% (de) or locale (de_DE) abbreviation.
+%
+{
+  \catcode`\_ = \active
+  \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+  \let_=\normalunderscore  % normal _ character for filenames
+  \tex % read txi-??.tex file in plain TeX.
+    % Read the file by the name they passed if it exists.
+    \openin 1 txi-#1.tex
+    \ifeof 1
+      \documentlanguagetrywithoutunderscore{#1_\finish}%
+    \else
+      \globaldefs = 1  % everything in the txi-LL files needs to persist
+      \input txi-#1.tex
+    \fi
+    \closein 1
+  \endgroup % end raw TeX
+\endgroup}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
+  \openin 1 txi-#1.tex
+  \ifeof 1
+    \errhelp = \nolanghelp
+    \errmessage{Cannot read language file txi-#1.tex}%
+  \else
+    \globaldefs = 1  % everything in the txi-LL files needs to persist
+    \input txi-#1.tex
+  \fi
+  \closein 1
+}
+}% end of special _ catcode
+%
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty.  Maybe you need to install it?  Putting it in the current
+directory should work if nowhere else does.}
+
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+%
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+%
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages.  This means we can support hyphenation in
+% Texinfo, at least to some extent.  (This still doesn't solve the
+% accented characters problem.)
+%
+\catcode`@=11
+\def\txisetlanguage#1#2#3{%
+  % do not set the language if the name is undefined in the current TeX.
+  \expandafter\ifx\csname lang@#1\endcsname \relax
+    \message{no patterns for #1}%
+  \else
+    \global\language = \csname lang@#1\endcsname
+  \fi
+  % but there is no harm in adjusting the hyphenmin values regardless.
+  \global\lefthyphenmin = #2\relax
+  \global\righthyphenmin = #3\relax
+}
+
+% Helpers for encodings.
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \global\catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+\def\setnonasciicharscatcodenonglobal#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \catcode\count255=#1\relax
+      \advance\count255 by 1
+   \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+  % Encoding being declared for the document.
+  \def\declaredencoding{\csname #1.enc\endcsname}%
+  %
+  % Supported encodings: names converted to tokens in order to be able
+  % to compare them with \ifx.
+  \def\ascii{\csname US-ASCII.enc\endcsname}%
+  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+  \def\latone{\csname ISO-8859-1.enc\endcsname}%
+  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+  \def\utfeight{\csname UTF-8.enc\endcsname}%
+  %
+  \ifx \declaredencoding \ascii
+     \asciichardefs
+  %
+  \else \ifx \declaredencoding \lattwo
+     \setnonasciicharscatcode\active
+     \lattwochardefs
+  %
+  \else \ifx \declaredencoding \latone
+     \setnonasciicharscatcode\active
+     \latonechardefs
+  %
+  \else \ifx \declaredencoding \latnine
+     \setnonasciicharscatcode\active
+     \latninechardefs
+  %
+  \else \ifx \declaredencoding \utfeight
+     \setnonasciicharscatcode\active
+     \utfeightchardefs
+  %
+  \else
+    \message{Unknown document encoding #1, ignoring.}%
+  %
+  \fi % utfeight
+  \fi % latnine
+  \fi % latone
+  \fi % lattwo
+  \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+  \gdef^^a0{~}
+  \gdef^^a1{\exclamdown}
+  \gdef^^a2{\missingcharmsg{CENT SIGN}}
+  \gdef^^a3{{\pounds}}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\missingcharmsg{YEN SIGN}}
+  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\copyright}
+  \gdef^^aa{\ordf}
+  \gdef^^ab{\guillemetleft}
+  \gdef^^ac{$\lnot$}
+  \gdef^^ad{\-}
+  \gdef^^ae{\registeredsymbol}
+  \gdef^^af{\={}}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{$\pm$}
+  \gdef^^b2{$^2$}
+  \gdef^^b3{$^3$}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{$\mu$}
+  \gdef^^b6{\P}
+  %
+  \gdef^^b7{$^.$}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{$^1$}
+  \gdef^^ba{\ordm}
+  %
+  \gdef^^bb{\guilletright}
+  \gdef^^bc{$1\over4$}
+  \gdef^^bd{$1\over2$}
+  \gdef^^be{$3\over4$}
+  \gdef^^bf{\questiondown}
+  %
+  \gdef^^c0{\`A}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\~A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\ringaccent A}
+  \gdef^^c6{\AE}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\`E}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\^E}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\`I}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\"I}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\~N}
+  \gdef^^d2{\`O}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\~O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\O}
+  \gdef^^d9{\`U}
+  \gdef^^da{\'U}
+  \gdef^^db{\^U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\TH}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\`a}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\~a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\ringaccent a}
+  \gdef^^e6{\ae}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\`e}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\^e}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\`{\dotless i}}
+  \gdef^^ed{\'{\dotless i}}
+  \gdef^^ee{\^{\dotless i}}
+  \gdef^^ef{\"{\dotless i}}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\~n}
+  \gdef^^f2{\`o}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\~o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\o}
+  \gdef^^f9{\`u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\^u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\th}
+  \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+  % Encoding is almost identical to Latin1.
+  \latonechardefs
+  %
+  \gdef^^a4{\euro}
+  \gdef^^a6{\v S}
+  \gdef^^a8{\v s}
+  \gdef^^b4{\v Z}
+  \gdef^^b8{\v z}
+  \gdef^^bc{\OE}
+  \gdef^^bd{\oe}
+  \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+  \gdef^^a0{~}
+  \gdef^^a1{\ogonek{A}}
+  \gdef^^a2{\u{}}
+  \gdef^^a3{\L}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\v L}
+  \gdef^^a6{\'S}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\v S}
+  \gdef^^aa{\cedilla S}
+  \gdef^^ab{\v T}
+  \gdef^^ac{\'Z}
+  \gdef^^ad{\-}
+  \gdef^^ae{\v Z}
+  \gdef^^af{\dotaccent Z}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{\ogonek{a}}
+  \gdef^^b2{\ogonek{ }}
+  \gdef^^b3{\l}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{\v l}
+  \gdef^^b6{\'s}
+  \gdef^^b7{\v{}}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{\v s}
+  \gdef^^ba{\cedilla s}
+  \gdef^^bb{\v t}
+  \gdef^^bc{\'z}
+  \gdef^^bd{\H{}}
+  \gdef^^be{\v z}
+  \gdef^^bf{\dotaccent z}
+  %
+  \gdef^^c0{\'R}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\u A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\'L}
+  \gdef^^c6{\'C}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\v C}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\ogonek{E}}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\v E}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\v D}
+  %
+  \gdef^^d0{\DH}
+  \gdef^^d1{\'N}
+  \gdef^^d2{\v N}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\H O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\v R}
+  \gdef^^d9{\ringaccent U}
+  \gdef^^da{\'U}
+  \gdef^^db{\H U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\cedilla T}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\'r}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\u a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\'l}
+  \gdef^^e6{\'c}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\v c}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\ogonek{e}}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\v e}
+  \gdef^^ed{\'\i}
+  \gdef^^ee{\^\i}
+  \gdef^^ef{\v d}
+  %
+  \gdef^^f0{\dh}
+  \gdef^^f1{\'n}
+  \gdef^^f2{\v n}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\H o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\v r}
+  \gdef^^f9{\ringaccent u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\H u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\cedilla t}
+  \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions.  It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+  \ifx #1\relax
+    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+  \else
+    \expandafter #1%
+  \fi
+}
+
+\begingroup
+  \catcode`\~13
+  \catcode`\"12
+
+  \def\UTFviiiLoop{%
+    \global\catcode\countUTFx\active
+    \uccode`\~\countUTFx
+    \uppercase\expandafter{\UTFviiiTmp}%
+    \advance\countUTFx by 1
+    \ifnum\countUTFx < \countUTFy
+      \expandafter\UTFviiiLoop
+    \fi}
+
+  \countUTFx = "C2
+  \countUTFy = "E0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "E0
+  \countUTFy = "F0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "F0
+  \countUTFy = "F4
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+  \UTFviiiLoop
+\endgroup
+
+\begingroup
+  \catcode`\"=12
+  \catcode`\<=12
+  \catcode`\.=12
+  \catcode`\,=12
+  \catcode`\;=12
+  \catcode`\!=12
+  \catcode`\~=13
+
+  \gdef\DeclareUnicodeCharacter#1#2{%
+    \countUTFz = "#1\relax
+    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    \begingroup
+      \parseXMLCharref
+      \def\UTFviiiTwoOctets##1##2{%
+        \csname u8:##1\string ##2\endcsname}%
+      \def\UTFviiiThreeOctets##1##2##3{%
+        \csname u8:##1\string ##2\string ##3\endcsname}%
+      \def\UTFviiiFourOctets##1##2##3##4{%
+        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+      \expandafter\expandafter\expandafter\expandafter
+       \expandafter\expandafter\expandafter
+       \gdef\UTFviiiTmp{#2}%
+    \endgroup}
+
+  \gdef\parseXMLCharref{%
+    \ifnum\countUTFz < "A0\relax
+      \errhelp = \EMsimple
+      \errmessage{Cannot define Unicode char value < 00A0}%
+    \else\ifnum\countUTFz < "800\relax
+      \parseUTFviiiA,%
+      \parseUTFviiiB C\UTFviiiTwoOctets.,%
+    \else\ifnum\countUTFz < "10000\relax
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+    \else
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiA!%
+      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+    \fi\fi\fi
+  }
+
+  \gdef\parseUTFviiiA#1{%
+    \countUTFx = \countUTFz
+    \divide\countUTFz by 64
+    \countUTFy = \countUTFz
+    \multiply\countUTFz by 64
+    \advance\countUTFx by -\countUTFz
+    \advance\countUTFx by 128
+    \uccode `#1\countUTFx
+    \countUTFz = \countUTFy}
+
+  \gdef\parseUTFviiiB#1#2#3#4{%
+    \advance\countUTFz by "#10\relax
+    \uccode `#3\countUTFz
+    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+  \DeclareUnicodeCharacter{00A0}{\tie}
+  \DeclareUnicodeCharacter{00A1}{\exclamdown}
+  \DeclareUnicodeCharacter{00A3}{\pounds}
+  \DeclareUnicodeCharacter{00A8}{\"{ }}
+  \DeclareUnicodeCharacter{00A9}{\copyright}
+  \DeclareUnicodeCharacter{00AA}{\ordf}
+  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+  \DeclareUnicodeCharacter{00AD}{\-}
+  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+  \DeclareUnicodeCharacter{00AF}{\={ }}
+
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+  \DeclareUnicodeCharacter{00B4}{\'{ }}
+  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+  \DeclareUnicodeCharacter{00BA}{\ordm}
+  \DeclareUnicodeCharacter{00BB}{\guillemetright}
+  \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+  \DeclareUnicodeCharacter{00C0}{\`A}
+  \DeclareUnicodeCharacter{00C1}{\'A}
+  \DeclareUnicodeCharacter{00C2}{\^A}
+  \DeclareUnicodeCharacter{00C3}{\~A}
+  \DeclareUnicodeCharacter{00C4}{\"A}
+  \DeclareUnicodeCharacter{00C5}{\AA}
+  \DeclareUnicodeCharacter{00C6}{\AE}
+  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+  \DeclareUnicodeCharacter{00C8}{\`E}
+  \DeclareUnicodeCharacter{00C9}{\'E}
+  \DeclareUnicodeCharacter{00CA}{\^E}
+  \DeclareUnicodeCharacter{00CB}{\"E}
+  \DeclareUnicodeCharacter{00CC}{\`I}
+  \DeclareUnicodeCharacter{00CD}{\'I}
+  \DeclareUnicodeCharacter{00CE}{\^I}
+  \DeclareUnicodeCharacter{00CF}{\"I}
+
+  \DeclareUnicodeCharacter{00D0}{\DH}
+  \DeclareUnicodeCharacter{00D1}{\~N}
+  \DeclareUnicodeCharacter{00D2}{\`O}
+  \DeclareUnicodeCharacter{00D3}{\'O}
+  \DeclareUnicodeCharacter{00D4}{\^O}
+  \DeclareUnicodeCharacter{00D5}{\~O}
+  \DeclareUnicodeCharacter{00D6}{\"O}
+  \DeclareUnicodeCharacter{00D8}{\O}
+  \DeclareUnicodeCharacter{00D9}{\`U}
+  \DeclareUnicodeCharacter{00DA}{\'U}
+  \DeclareUnicodeCharacter{00DB}{\^U}
+  \DeclareUnicodeCharacter{00DC}{\"U}
+  \DeclareUnicodeCharacter{00DD}{\'Y}
+  \DeclareUnicodeCharacter{00DE}{\TH}
+  \DeclareUnicodeCharacter{00DF}{\ss}
+
+  \DeclareUnicodeCharacter{00E0}{\`a}
+  \DeclareUnicodeCharacter{00E1}{\'a}
+  \DeclareUnicodeCharacter{00E2}{\^a}
+  \DeclareUnicodeCharacter{00E3}{\~a}
+  \DeclareUnicodeCharacter{00E4}{\"a}
+  \DeclareUnicodeCharacter{00E5}{\aa}
+  \DeclareUnicodeCharacter{00E6}{\ae}
+  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+  \DeclareUnicodeCharacter{00E8}{\`e}
+  \DeclareUnicodeCharacter{00E9}{\'e}
+  \DeclareUnicodeCharacter{00EA}{\^e}
+  \DeclareUnicodeCharacter{00EB}{\"e}
+  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{00F0}{\dh}
+  \DeclareUnicodeCharacter{00F1}{\~n}
+  \DeclareUnicodeCharacter{00F2}{\`o}
+  \DeclareUnicodeCharacter{00F3}{\'o}
+  \DeclareUnicodeCharacter{00F4}{\^o}
+  \DeclareUnicodeCharacter{00F5}{\~o}
+  \DeclareUnicodeCharacter{00F6}{\"o}
+  \DeclareUnicodeCharacter{00F8}{\o}
+  \DeclareUnicodeCharacter{00F9}{\`u}
+  \DeclareUnicodeCharacter{00FA}{\'u}
+  \DeclareUnicodeCharacter{00FB}{\^u}
+  \DeclareUnicodeCharacter{00FC}{\"u}
+  \DeclareUnicodeCharacter{00FD}{\'y}
+  \DeclareUnicodeCharacter{00FE}{\th}
+  \DeclareUnicodeCharacter{00FF}{\"y}
+
+  \DeclareUnicodeCharacter{0100}{\=A}
+  \DeclareUnicodeCharacter{0101}{\=a}
+  \DeclareUnicodeCharacter{0102}{\u{A}}
+  \DeclareUnicodeCharacter{0103}{\u{a}}
+  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
+  \DeclareUnicodeCharacter{0106}{\'C}
+  \DeclareUnicodeCharacter{0107}{\'c}
+  \DeclareUnicodeCharacter{0108}{\^C}
+  \DeclareUnicodeCharacter{0109}{\^c}
+  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
+  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+  \DeclareUnicodeCharacter{010C}{\v{C}}
+  \DeclareUnicodeCharacter{010D}{\v{c}}
+  \DeclareUnicodeCharacter{010E}{\v{D}}
+
+  \DeclareUnicodeCharacter{0112}{\=E}
+  \DeclareUnicodeCharacter{0113}{\=e}
+  \DeclareUnicodeCharacter{0114}{\u{E}}
+  \DeclareUnicodeCharacter{0115}{\u{e}}
+  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+  \DeclareUnicodeCharacter{011A}{\v{E}}
+  \DeclareUnicodeCharacter{011B}{\v{e}}
+  \DeclareUnicodeCharacter{011C}{\^G}
+  \DeclareUnicodeCharacter{011D}{\^g}
+  \DeclareUnicodeCharacter{011E}{\u{G}}
+  \DeclareUnicodeCharacter{011F}{\u{g}}
+
+  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+  \DeclareUnicodeCharacter{0124}{\^H}
+  \DeclareUnicodeCharacter{0125}{\^h}
+  \DeclareUnicodeCharacter{0128}{\~I}
+  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+  \DeclareUnicodeCharacter{012A}{\=I}
+  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+  \DeclareUnicodeCharacter{012C}{\u{I}}
+  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+  \DeclareUnicodeCharacter{0131}{\dotless{i}}
+  \DeclareUnicodeCharacter{0132}{IJ}
+  \DeclareUnicodeCharacter{0133}{ij}
+  \DeclareUnicodeCharacter{0134}{\^J}
+  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+  \DeclareUnicodeCharacter{0139}{\'L}
+  \DeclareUnicodeCharacter{013A}{\'l}
+
+  \DeclareUnicodeCharacter{0141}{\L}
+  \DeclareUnicodeCharacter{0142}{\l}
+  \DeclareUnicodeCharacter{0143}{\'N}
+  \DeclareUnicodeCharacter{0144}{\'n}
+  \DeclareUnicodeCharacter{0147}{\v{N}}
+  \DeclareUnicodeCharacter{0148}{\v{n}}
+  \DeclareUnicodeCharacter{014C}{\=O}
+  \DeclareUnicodeCharacter{014D}{\=o}
+  \DeclareUnicodeCharacter{014E}{\u{O}}
+  \DeclareUnicodeCharacter{014F}{\u{o}}
+
+  \DeclareUnicodeCharacter{0150}{\H{O}}
+  \DeclareUnicodeCharacter{0151}{\H{o}}
+  \DeclareUnicodeCharacter{0152}{\OE}
+  \DeclareUnicodeCharacter{0153}{\oe}
+  \DeclareUnicodeCharacter{0154}{\'R}
+  \DeclareUnicodeCharacter{0155}{\'r}
+  \DeclareUnicodeCharacter{0158}{\v{R}}
+  \DeclareUnicodeCharacter{0159}{\v{r}}
+  \DeclareUnicodeCharacter{015A}{\'S}
+  \DeclareUnicodeCharacter{015B}{\'s}
+  \DeclareUnicodeCharacter{015C}{\^S}
+  \DeclareUnicodeCharacter{015D}{\^s}
+  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+  \DeclareUnicodeCharacter{0160}{\v{S}}
+  \DeclareUnicodeCharacter{0161}{\v{s}}
+  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+  \DeclareUnicodeCharacter{0164}{\v{T}}
+
+  \DeclareUnicodeCharacter{0168}{\~U}
+  \DeclareUnicodeCharacter{0169}{\~u}
+  \DeclareUnicodeCharacter{016A}{\=U}
+  \DeclareUnicodeCharacter{016B}{\=u}
+  \DeclareUnicodeCharacter{016C}{\u{U}}
+  \DeclareUnicodeCharacter{016D}{\u{u}}
+  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+  \DeclareUnicodeCharacter{0170}{\H{U}}
+  \DeclareUnicodeCharacter{0171}{\H{u}}
+  \DeclareUnicodeCharacter{0174}{\^W}
+  \DeclareUnicodeCharacter{0175}{\^w}
+  \DeclareUnicodeCharacter{0176}{\^Y}
+  \DeclareUnicodeCharacter{0177}{\^y}
+  \DeclareUnicodeCharacter{0178}{\"Y}
+  \DeclareUnicodeCharacter{0179}{\'Z}
+  \DeclareUnicodeCharacter{017A}{\'z}
+  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+  \DeclareUnicodeCharacter{017D}{\v{Z}}
+  \DeclareUnicodeCharacter{017E}{\v{z}}
+
+  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+  \DeclareUnicodeCharacter{01C5}{D\v{z}}
+  \DeclareUnicodeCharacter{01C6}{d\v{z}}
+  \DeclareUnicodeCharacter{01C7}{LJ}
+  \DeclareUnicodeCharacter{01C8}{Lj}
+  \DeclareUnicodeCharacter{01C9}{lj}
+  \DeclareUnicodeCharacter{01CA}{NJ}
+  \DeclareUnicodeCharacter{01CB}{Nj}
+  \DeclareUnicodeCharacter{01CC}{nj}
+  \DeclareUnicodeCharacter{01CD}{\v{A}}
+  \DeclareUnicodeCharacter{01CE}{\v{a}}
+  \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+  \DeclareUnicodeCharacter{01D1}{\v{O}}
+  \DeclareUnicodeCharacter{01D2}{\v{o}}
+  \DeclareUnicodeCharacter{01D3}{\v{U}}
+  \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+  \DeclareUnicodeCharacter{01E2}{\={\AE}}
+  \DeclareUnicodeCharacter{01E3}{\={\ae}}
+  \DeclareUnicodeCharacter{01E6}{\v{G}}
+  \DeclareUnicodeCharacter{01E7}{\v{g}}
+  \DeclareUnicodeCharacter{01E8}{\v{K}}
+  \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+  \DeclareUnicodeCharacter{01F1}{DZ}
+  \DeclareUnicodeCharacter{01F2}{Dz}
+  \DeclareUnicodeCharacter{01F3}{dz}
+  \DeclareUnicodeCharacter{01F4}{\'G}
+  \DeclareUnicodeCharacter{01F5}{\'g}
+  \DeclareUnicodeCharacter{01F8}{\`N}
+  \DeclareUnicodeCharacter{01F9}{\`n}
+  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+  \DeclareUnicodeCharacter{01FE}{\'{\O}}
+  \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+  \DeclareUnicodeCharacter{021E}{\v{H}}
+  \DeclareUnicodeCharacter{021F}{\v{h}}
+
+  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+  \DeclareUnicodeCharacter{0232}{\=Y}
+  \DeclareUnicodeCharacter{0233}{\=y}
+  \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
+  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+  \DeclareUnicodeCharacter{1E20}{\=G}
+  \DeclareUnicodeCharacter{1E21}{\=g}
+  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+  \DeclareUnicodeCharacter{1E26}{\"H}
+  \DeclareUnicodeCharacter{1E27}{\"h}
+
+  \DeclareUnicodeCharacter{1E30}{\'K}
+  \DeclareUnicodeCharacter{1E31}{\'k}
+  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+  \DeclareUnicodeCharacter{1E3E}{\'M}
+  \DeclareUnicodeCharacter{1E3F}{\'m}
+
+  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+  \DeclareUnicodeCharacter{1E54}{\'P}
+  \DeclareUnicodeCharacter{1E55}{\'p}
+  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+  \DeclareUnicodeCharacter{1E7C}{\~V}
+  \DeclareUnicodeCharacter{1E7D}{\~v}
+  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+  \DeclareUnicodeCharacter{1E80}{\`W}
+  \DeclareUnicodeCharacter{1E81}{\`w}
+  \DeclareUnicodeCharacter{1E82}{\'W}
+  \DeclareUnicodeCharacter{1E83}{\'w}
+  \DeclareUnicodeCharacter{1E84}{\"W}
+  \DeclareUnicodeCharacter{1E85}{\"w}
+  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+  \DeclareUnicodeCharacter{1E8C}{\"X}
+  \DeclareUnicodeCharacter{1E8D}{\"x}
+  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+  \DeclareUnicodeCharacter{1E90}{\^Z}
+  \DeclareUnicodeCharacter{1E91}{\^z}
+  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+  \DeclareUnicodeCharacter{1E97}{\"t}
+  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+  \DeclareUnicodeCharacter{1EBC}{\~E}
+  \DeclareUnicodeCharacter{1EBD}{\~e}
+
+  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+  \DeclareUnicodeCharacter{1EF2}{\`Y}
+  \DeclareUnicodeCharacter{1EF3}{\`y}
+  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+  \DeclareUnicodeCharacter{1EF8}{\~Y}
+  \DeclareUnicodeCharacter{1EF9}{\~y}
+
+  \DeclareUnicodeCharacter{2013}{--}
+  \DeclareUnicodeCharacter{2014}{---}
+  \DeclareUnicodeCharacter{2018}{\quoteleft}
+  \DeclareUnicodeCharacter{2019}{\quoteright}
+  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+  \DeclareUnicodeCharacter{201C}{\quotedblleft}
+  \DeclareUnicodeCharacter{201D}{\quotedblright}
+  \DeclareUnicodeCharacter{201E}{\quotedblbase}
+  \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{2026}{\dots}
+  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+  \DeclareUnicodeCharacter{203A}{\guilsinglright}
+  \DeclareUnicodeCharacter{20AC}{\euro}
+
+  \DeclareUnicodeCharacter{2192}{\expansion}
+  \DeclareUnicodeCharacter{21D2}{\result}
+
+  \DeclareUnicodeCharacter{2212}{\minus}
+  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+   \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be so finicky about underfull hboxes, either.
+\hbadness = 2000
+
+% Following George Bush, get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything.  We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize.  We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+  \ifx\emergencystretch\thisisundefined
+    % Allow us to assign to \emergencystretch anyway.
+    \def\emergencystretch{\dimen0}%
+  \else
+    \emergencystretch = .15\hsize
+  \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading.  The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+  \voffset = #3\relax
+  \topskip = #6\relax
+  \splittopskip = \topskip
+  %
+  \vsize = #1\relax
+  \advance\vsize by \topskip
+  \outervsize = \vsize
+  \advance\outervsize by 2\topandbottommargin
+  \pageheight = \vsize
+  %
+  \hsize = #2\relax
+  \outerhsize = \hsize
+  \advance\outerhsize by 0.5in
+  \pagewidth = \hsize
+  %
+  \normaloffset = #4\relax
+  \bindingoffset = #5\relax
+  %
+  \ifpdf
+    \pdfpageheight #7\relax
+    \pdfpagewidth #8\relax
+    % if we don't reset these, they will remain at "1 true in" of
+    % whatever layout pdftex was dumped with.
+    \pdfhorigin = 1 true in
+    \pdfvorigin = 1 true in
+  \fi
+  %
+  \setleading{\textleading}
+  %
+  \parindent = \defaultparindent
+  \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % If page is nothing but text, make it come out even.
+  \internalpagesizes{607.2pt}{6in}% that's 46 lines
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{36pt}%
+                    {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+  \parskip = 2pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.5in}{5in}%
+                    {-.2in}{0in}%
+                    {\bindingoffset}{16pt}%
+                    {9.25in}{7in}%
+  %
+  \lispnarrowing = 0.3in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % Double-side printing via postscript on Laserjet 4050
+  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+  % To change the settings for a different printer or situation, adjust
+  % \normaloffset until the front-side and back-side texts align.  Then
+  % do the same for \bindingoffset.  You can set these for testing in
+  % your texinfo source file like this:
+  % @tex
+  % \global\normaloffset = -6mm
+  % \global\bindingoffset = 10mm
+  % @end tex
+  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{44pt}%
+                    {297mm}{210mm}%
+  %
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo@urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+  \parskip = 2pt plus 1pt minus 0.1pt
+  \textleading = 12.5pt
+  %
+  \internalpagesizes{160mm}{120mm}%
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{8pt}%
+                    {210mm}{148mm}%
+  %
+  \lispnarrowing = 0.2in
+  \tolerance = 800
+  \hfuzz = 1.2pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 2mm
+  \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{237mm}{150mm}%
+                    {\voffset}{4.6mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  %
+  % Must explicitly reset to 0 because we call \afourpaper.
+  \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{241mm}{165mm}%
+                    {\voffset}{-2.95mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+  \globaldefs = 1
+  %
+  \parskip = 3pt plus 2pt minus 1pt
+  \setleading{\textleading}%
+  %
+  \dimen0 = #1\relax
+  \advance\dimen0 by \voffset
+  %
+  \dimen2 = \hsize
+  \advance\dimen2 by \normaloffset
+  %
+  \internalpagesizes{#1}{\hsize}%
+                    {\voffset}{\normaloffset}%
+                    {\bindingoffset}{44pt}%
+                    {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+% DEL is a comment character, in case @c does not suffice.
+\catcode`\^^? = 14
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\catcode`\$=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+\def\normaldollar{$}%$ font-lock fix
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise.  Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+  \normalturnoffactive
+  \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active
+@def@normalbackslash{{@tt@backslashcurfont}}
+% On startup, @fixbackslash assigns:
+%  @let \ = @normalbackslash
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+%
+@def@normalturnoffactive{%
+  @let\=@normalbackslash
+  @let"=@normaldoublequote
+  @let~=@normaltilde
+  @let^=@normalcaret
+  @let_=@normalunderscore
+  @let|=@normalverticalbar
+  @let<=@normalless
+  @let>=@normalgreater
+  @let+=@normalplus
+  @let$=@normaldollar %$ font-lock fix
+  @markupsetuplqdefault
+  @markupsetuprqdefault
+  @unsepspaces
+}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+@otherifyactive
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+@gdef@eatinput input texinfo{@fixbackslash}
+@global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\' in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
+@gdef@fixbackslash{%
+  @ifx\@eatinput @let\ = @normalbackslash @fi
+  @catcode`+=@active
+  @catcode`@_=@active
+}
+
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+@catcode`@& = @other
+@catcode`@# = @other
+@catcode`@% = @other
+
+@c Finally, make ` and ' active, so that txicodequoteundirected and
+@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
+@c don't make ` and ' active, @code will not get them as active chars.
+@c Do this last of all since we use ` in the previous @catcode assignments.
+@catcode`@'=@active
+@catcode`@`=@active
+@markupsetuplqdefault
+@markupsetuprqdefault
+
+@c Gnulib now utterly and painfully insists on no trailing whitespace.
+@c So we have to nuke it.
+
+@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c eval: (add-hook 'write-file-hooks 'nuke-trailing-whitespace)
+@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
+@c End:
+
+@c vim:sw=2:
+
+@ignore
+   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore
diff --git a/build-aux/useless-if-before-free b/build-aux/useless-if-before-free
new file mode 100755 (executable)
index 0000000..abcdef2
--- /dev/null
@@ -0,0 +1,206 @@
+#!/usr/bin/perl -T
+# Detect instances of "if (p) free (p);".
+# Likewise for "if (p != NULL) free (p);".  And with braces.
+# Also detect "if (NULL != p) free (p);".
+# And with 0 in place of NULL.
+
+my $VERSION = '2009-04-16 15:57'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job.  Otherwise, update this string manually.
+
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering
+
+use strict;
+use warnings;
+use Getopt::Long;
+
+(my $ME = $0) =~ s|.*/||;
+
+# use File::Coda; # http://meyering.net/code/Coda/
+END {
+  defined fileno STDOUT or return;
+  close STDOUT and return;
+  warn "$ME: failed to close standard output: $!\n";
+  $? ||= 1;
+}
+
+sub usage ($)
+{
+  my ($exit_code) = @_;
+  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+  if ($exit_code != 0)
+    {
+      print $STREAM "Try `$ME --help' for more information.\n";
+    }
+  else
+    {
+      print $STREAM <<EOF;
+Usage: $ME [OPTIONS] FILE...
+
+Detect any instance in FILE of a useless "if" test before a free call, e.g.,
+"if (p) free (p);".  Any such test may be safely removed without affecting
+the semantics of the C code in FILE.  Use --name=FOO --name=BAR to also
+detect free-like functions named FOO and BAR.
+
+OPTIONS:
+
+   --list       print only the name of each matching FILE (\0-terminated)
+   --name=N     add name N to the list of \`free\'-like functions to detect;
+                  may be repeated
+
+   --help       display this help and exit
+   --version    output version information and exit
+
+Exit status:
+
+  0   one or more matches
+  1   no match
+  2   an error
+
+EXAMPLE:
+
+For example, this command prints all removable "if" tests before "free"
+and "kfree" calls in the linux kernel sources:
+
+    git ls-files -z |xargs -0 $ME --name=kfree
+
+EOF
+    }
+  exit $exit_code;
+}
+
+sub is_NULL ($)
+{
+  my ($expr) = @_;
+  return ($expr eq 'NULL' || $expr eq '0');
+}
+
+{
+  sub EXIT_MATCH {0}
+  sub EXIT_NO_MATCH {1}
+  sub EXIT_ERROR {2}
+  my $err = EXIT_NO_MATCH;
+
+  my $list;
+  my @name = qw(free);
+  GetOptions
+    (
+     help => sub { usage 0 },
+     version => sub { print "$ME version $VERSION\n"; exit },
+     list => \$list,
+     'name=s@' => \@name,
+    ) or usage 1;
+
+  # Make sure we have the right number of non-option arguments.
+  # Always tell the user why we fail.
+  @ARGV < 1
+    and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR;
+
+  my $or = join '|', @name;
+  my $regexp = qr/(?:$or)/;
+
+  # Set the input record separator.
+  # Note: this makes it impractical to print line numbers.
+  $/ = '"';
+
+  my $found_match = 0;
+ FILE:
+  foreach my $file (@ARGV)
+    {
+      open FH, '<', $file
+        or (warn "$ME: can't open `$file' for reading: $!\n"),
+          $err = EXIT_ERROR, next;
+      while (defined (my $line = <FH>))
+        {
+          while ($line =~
+              /\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\)
+              #  1          2                  3
+               (?:   \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)|
+                \s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg)
+            {
+              my $all = $1;
+              my ($lhs, $rhs) = ($2, $3);
+              my ($free_opnd, $braced_free_opnd) = ($4, $5);
+              my $non_NULL;
+              if (!defined $rhs) { $non_NULL = $lhs }
+              elsif (is_NULL $rhs) { $non_NULL = $lhs }
+              elsif (is_NULL $lhs) { $non_NULL = $rhs }
+              else { next }
+
+              # Compare the non-NULL part of the "if" expression and the
+              # free'd expression, without regard to white space.
+              $non_NULL =~ tr/ \t//d;
+              my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd;
+              $e2 =~ tr/ \t//d;
+              if ($non_NULL eq $e2)
+                {
+                  $found_match = 1;
+                  $list
+                    and (print "$file\0"), next FILE;
+                  print "$file: $all\n";
+                }
+            }
+        }
+    }
+  continue
+    {
+      close FH;
+    }
+
+  $found_match && $err == EXIT_NO_MATCH
+    and $err = EXIT_MATCH;
+
+  exit $err;
+}
+
+my $foo = <<'EOF';
+# The above is to *find* them.
+# This adjusts them, removing the unnecessary "if (p)" part.
+
+# FIXME: do something like this as an option (doesn't do braces):
+free=xfree
+git grep -l -z "$free *(" \
+  | xargs -0 useless-if-before-free -l --name="$free" \
+  | xargs -0 perl -0x3b -pi -e \
+   's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\))/$2/s'
+
+# Use the following to remove redundant uses of kfree inside braces.
+# Note that -0777 puts perl in slurp-whole-file mode;
+# but we have plenty of memory, these days...
+free=kfree
+git grep -l -z "$free *(" \
+  | xargs -0 useless-if-before-free -l --name="$free" \
+  | xargs -0 perl -0777 -pi -e \
+     's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms'
+
+Be careful that the result of the above transformation is valid.
+If the matched string is followed by "else", then obviously, it won't be.
+
+When modifying files, refuse to process anything other than a regular file.
+EOF
+
+## Local Variables:
+## indent-tabs-mode: nil
+## eval: (add-hook 'write-file-hooks 'time-stamp)
+## time-stamp-start: "my $VERSION = '"
+## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+## time-stamp-time-zone: "UTC"
+## time-stamp-end: "'; # UTC"
+## End:
diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files
new file mode 100755 (executable)
index 0000000..9376e3d
--- /dev/null
@@ -0,0 +1,116 @@
+#!/bin/sh
+# List version-controlled file names.
+
+# Print a version string.
+scriptversion=2009-04-25.13; # UTC
+
+# Copyright (C) 2006-2009 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+# List the specified version-controlled files.
+# With no argument, list them all.  With a single DIRECTORY argument,
+# list the version-controlled files in that directory.
+
+# If there's an argument, it must be a single, "."-relative directory name.
+# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
+
+postprocess=
+case $1 in
+  --help) cat <<EOF
+Usage: $0 [-C SRCDIR] [DIR]
+
+Output a list of version-controlled files in DIR (default .), relative to
+SRCDIR (default .).  SRCDIR must be the top directory of a checkout.
+
+Options:
+  --help     print this help, then exit
+  --version  print version number, then exit
+  -C SRCDIR  change directory to SRCDIR before generating list
+
+Report bugs and patches to <bug-gnulib@gnu.org>.
+EOF
+    exit ;;
+
+  --version)
+    year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
+    cat <<EOF
+vc-list-files $scriptversion
+Copyright (C) $year Free Software Foundation, Inc,
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+    exit ;;
+
+  -C)
+    test "$2" = . || postprocess="| sed 's|^|$2/|'"
+    cd "$2" || exit 1
+    shift; shift ;;
+esac
+
+dir=
+case $# in
+  0) ;;
+  1) dir=$1 ;;
+  *) echo "$0: too many arguments" 1>&2
+     echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
+esac
+
+test "x$dir" = x && dir=.
+
+if test -d .git; then
+  test "x$dir" = x. \
+    && dir= sed_esc= \
+    || dir="$dir/" sed_esc=`echo "$dir"|sed 's,\([\\/]\),\\\\\1,g'`
+  # Ignore git symlinks - either they point into the tree, in which case
+  # we don't need to visit the target twice, or they point somewhere
+  # else (often into a submodule), in which case the content does not
+  # belong to this package.
+  eval exec git ls-tree -r 'HEAD:"$dir"' \
+    \| sed -n '"s/^100[^       ]*./$sed_esc/p"' $postprocess
+elif test -d .hg; then
+  eval exec hg locate '"$dir/*"' $postprocess
+elif test -d .bzr; then
+  test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
+  eval exec bzr ls --versioned '"$dir"' $postprocess
+elif test -d CVS; then
+  test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
+  if test -x build-aux/cvsu; then
+    eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
+  elif (cvsu --help) >/dev/null 2>&1; then
+    eval cvsu --find --types=AFGM '"$dir"' $postprocess
+  else
+    eval awk -F/ \''{                  \
+       if (!$1 && $3 !~ /^-/) {        \
+         f=FILENAME;                   \
+         if (f ~ /CVS\/Entries$/)      \
+           f = substr(f, 1, length(f)-11); \
+         print f $2;                   \
+       }}'\''                          \
+      `find "$dir" -name Entries -print` /dev/null' $postprocess
+  fi
+else
+  echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
+  exit 1
+fi
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/cfg.mk b/cfg.mk
new file mode 100644 (file)
index 0000000..d4541ab
--- /dev/null
+++ b/cfg.mk
@@ -0,0 +1,101 @@
+# Copyright (C) 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+WFLAGS ?= --enable-gcc-warnings
+ADDFLAGS ?=
+CFGFLAGS ?= --enable-java --enable-gtk-doc $(ADDFLAGS) $(WFLAGS)
+
+ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile)
+.DEFAULT_GOAL := bootstrap
+endif
+
+local-checks-to-skip = sc_prohibit_strcmp sc_prohibit_have_config_h    \
+       sc_require_config_h sc_require_config_h_first                   \
+       sc_prohibit_HAVE_MBRTOWC sc_program_name sc_trailing_blank      \
+       sc_useless_cpp_parens sc_GPL_version sc_immutable_NEWS          \
+       sc_two_space_separator_in_usage sc_m4_quote_check sc_po_check   \
+       sc_copyright_check
+
+doc/Makefile.gdoc:
+       printf "gdoc_MANS =\ngdoc_TEXINFOS =\n" > doc/Makefile.gdoc
+
+autoreconf: doc/Makefile.gdoc
+       for f in po/*.po.in; do \
+               cp $$f `echo $$f | sed 's/.in//'`; \
+       done
+       mv build-aux/config.rpath build-aux/config.rpath-
+       test -f ./configure || autoreconf --install
+       mv build-aux/config.rpath- build-aux/config.rpath
+
+update-po: refresh-po
+       for f in `ls po/*.po | grep -v quot.po`; do \
+               cp $$f $$f.in; \
+       done
+       git add po/*.po.in
+       git commit -m "Sync with TP." po/LINGUAS po/*.po.in
+
+bootstrap: autoreconf
+       ./configure $(CFGFLAGS)
+
+web-coverage:
+       rm -fv `find $(htmldir)/coverage -type f | grep -v CVS`
+       cp -rv $(COVERAGE_OUT)/* $(htmldir)/coverage/
+
+upload-web-coverage:
+       cd $(htmldir) && \
+               cvs commit -m "Update." coverage
+
+W32ROOT ?= $(HOME)/gnutls4win/inst
+
+mingw32: autoreconf 
+       ./configure --enable-gtk-doc --host=i586-mingw32msvc --build=`build-aux/config.guess` --prefix=$(W32ROOT)
+
+ChangeLog:
+       git2cl > ChangeLog
+       cat .clcopying >> ChangeLog
+
+tag = $(PACKAGE)-`echo $(VERSION) | sed 's/\./-/g'`
+htmldir = ../www-$(PACKAGE)
+
+release: prepare upload web upload-web
+
+prepare:
+       ! git tag -l $(tag) | grep $(PACKAGE) > /dev/null
+       rm -f ChangeLog
+       $(MAKE) ChangeLog distcheck
+       git commit -m Generated. ChangeLog
+       git tag -u b565716f! -m $(VERSION) $(tag)
+
+upload:
+       git push
+       git push --tags
+       build-aux/gnupload --to ftp.gnu.org:$(PACKAGE) --to alpha.gnu.org:$(PACKAGE) $(distdir).tar.gz
+       cp $(distdir).tar.gz $(distdir).tar.gz.sig ../releases/$(PACKAGE)/
+
+web:
+       cd doc && env MAKEINFO="makeinfo -I ../examples" \
+                     TEXI2DVI="texi2dvi -I ../examples" \
+               ../build-aux/gendocs.sh --html "--css-include=texinfo.css" \
+               -o ../$(htmldir)/manual/ $(PACKAGE) "$(PACKAGE_NAME)"
+       cd contrib/doxygen && doxygen && cd ../.. && cp -v contrib/doxygen/html/* $(htmldir)/doxygen/ && cd contrib/doxygen/latex && make refman.pdf && cd ../../../ && cp contrib/doxygen/latex/refman.pdf $(htmldir)/doxygen/$(PACKAGE).pdf
+       cp -v doc/reference/html/*.html doc/reference/html/*.png doc/reference/html/*.devhelp doc/reference/html/*.css $(htmldir)/reference/
+       cp -rv doc/java/* $(htmldir)/javadoc/
+       cp -v doc/cyclo/cyclo-$(PACKAGE).html $(htmldir)/cyclo/
+
+upload-web:
+       cd $(htmldir) && \
+               cvs commit -m "Update." manual/ javadoc/ reference/ doxygen/
diff --git a/config.h.in b/config.h.in
new file mode 100644 (file)
index 0000000..e2ab277
--- /dev/null
@@ -0,0 +1,314 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if the compiler is building for multiple architectures of Apple
+   platforms at once. */
+#undef AA_APPLE_UNIVERSAL_BUILD
+
+/* Define to the number of bits in type 'ptrdiff_t'. */
+#undef BITSIZEOF_PTRDIFF_T
+
+/* Define to the number of bits in type 'sig_atomic_t'. */
+#undef BITSIZEOF_SIG_ATOMIC_T
+
+/* Define to the number of bits in type 'size_t'. */
+#undef BITSIZEOF_SIZE_T
+
+/* Define to the number of bits in type 'wchar_t'. */
+#undef BITSIZEOF_WCHAR_T
+
+/* Define to the number of bits in type 'wint_t'. */
+#undef BITSIZEOF_WINT_T
+
+/* Define if mono is the preferred C# implementation. */
+#undef CSHARP_CHOICE_MONO
+
+/* Define if pnet is the preferred C# implementation. */
+#undef CSHARP_CHOICE_PNET
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#undef ENABLE_NLS
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+   CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+   */
+#undef HAVE_DECL_GETENV
+
+/* Define to 1 if you have the declaration of `strerror', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRERROR
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long_only' function. */
+#undef HAVE_GETOPT_LONG_ONLY
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define if you have the iconv() function and it works. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <iconv.h> header file. */
+#undef HAVE_ICONV_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if the system has the type `long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
+#undef HAVE_SIGNED_SIG_ATOMIC_T
+
+/* Define to 1 if 'wchar_t' is a signed integer type. */
+#undef HAVE_SIGNED_WCHAR_T
+
+/* Define to 1 if 'wint_t' is a signed integer type. */
+#undef HAVE_SIGNED_WINT_T
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strverscmp' function. */
+#undef HAVE_STRVERSCMP
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
+/* Define to 1 or 0, depending whether the compiler supports simple visibility
+   declarations. */
+#undef HAVE_VISIBILITY
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
+
+/* Define if you have the 'wint_t' type. */
+#undef HAVE_WINT_T
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+/* Define to a symbolic name denoting the flavor of iconv_open()
+   implementation. */
+#undef ICONV_FLAVOR
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* String identifying the packager of this software */
+#undef PACKAGE_PACKAGER
+
+/* Packager info for bug reports (URL/e-mail/...) */
+#undef PACKAGE_PACKAGER_BUG_REPORTS
+
+/* Packager-specific version information */
+#undef PACKAGE_PACKAGER_VERSION
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'ptrdiff_t'. */
+#undef PTRDIFF_T_SUFFIX
+
+/* Define this to 1 if strerror is broken. */
+#undef REPLACE_STRERROR
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'sig_atomic_t'. */
+#undef SIG_ATOMIC_T_SUFFIX
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'size_t'. */
+#undef SIZE_T_SUFFIX
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'wchar_t'. */
+#undef WCHAR_T_SUFFIX
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+   'wint_t'. */
+#undef WINT_T_SUFFIX
+
+/* Define to 1 if you want TLD code. */
+#undef WITH_TLD
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define to 500 only on HP-UX. */
+#undef _XOPEN_SOURCE
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Define to rpl_ if the getopt replacement functions and variables should be
+   used. */
+#undef __GETOPT_PREFIX
+
+/* A replacement for va_copy, if needed.  */
+#define gl_va_copy(a,b) ((a) = (b))
+
+/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+   the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+   earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+   __APPLE__ && __MACH__ test for MacOS X.
+   __APPLE_CC__ tests for the Apple compiler and its version.
+   __STDC_VERSION__ tests for the C99 mode.  */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+   nothing if this is not supported.  Do not define if restrict is
+   supported directly.  */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict, even
+   though the corresponding Sun C compiler does, which causes
+   "#define restrict _Restrict" in the previous line.  Perhaps some future
+   version of Sun C++ will work with _Restrict; if so, it'll probably
+   define __RESTRICT, just as Sun C does.  */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+#endif
+
+/* Define as a marker that can be attached to function parameter declarations
+   for parameters that are not used.  This helps to reduce warnings, such as
+   from GCC -Wunused-parameter.  */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _UNUSED_PARAMETER_ __attribute__ ((__unused__))
+#else
+# define _UNUSED_PARAMETER_
+#endif
+
+
+/* Define as a macro for copying va_list variables. */
+#undef va_copy
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..bcac267
--- /dev/null
+++ b/configure
@@ -0,0 +1,23910 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.63b for GNU Libidn 1.15.
+#
+# Report bugs to <bug-libidn@gnu.org>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
+# Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+#
+# Copyright (c) 2002-2008 Simon Josefsson <simon@josefsson.org>.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) set -o posix ;; #(
+  *) : ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) set -o posix ;; #(
+  *) : ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then
+  :
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then
+  # We cannot yet assume a decent shell, so we have to provide a
+       # neutralization value for shells without unset; and this also
+       # works around shells that cannot unset nonexistent variables.
+       BASH_ENV=/dev/null
+       ENV=/dev/null
+       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+       export CONFIG_SHELL
+       exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-libidn@gnu.org
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit [STATUS=$?]
+# ----------------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  as_status=$?
+  set +e
+  as_fn_set_status ${1-$as_status}
+  exit ${1-$as_status}
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$?; test $as_status -eq 0 && as_status=1
+  if test "$3"; then
+    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  fi
+  $as_echo "$as_me: error: $1" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #((((
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $ECHO works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<_LT_EOF
+$*
+_LT_EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+  if test "X${echo_test_string+set}" != Xset; then
+    # find a string as large as possible, as long as the shell can cope with it
+    for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+        { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+      then
+        break
+      fi
+    done
+  fi
+
+  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+     test "X$echo_testing_string" = "X$echo_test_string"; then
+    :
+  else
+    # The Solaris, AIX, and Digital Unix default echo programs unquote
+    # backslashes.  This makes it impossible to quote backslashes using
+    #   echo "$something" | sed 's/\\/\\\\/g'
+    #
+    # So, first we look for a working echo in the user's PATH.
+
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for dir in $PATH /usr/ucb; do
+      IFS="$lt_save_ifs"
+      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        ECHO="$dir/echo"
+        break
+      fi
+    done
+    IFS="$lt_save_ifs"
+
+    if test "X$ECHO" = Xecho; then
+      # We didn't find a better echo, so look for alternatives.
+      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        # This shell has a builtin print -r that does the trick.
+        ECHO='print -r'
+      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+          test "X$CONFIG_SHELL" != X/bin/ksh; then
+        # If we have ksh, try running configure again with it.
+        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+        export ORIGINAL_CONFIG_SHELL
+        CONFIG_SHELL=/bin/ksh
+        export CONFIG_SHELL
+        exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+      else
+        # Try using printf.
+        ECHO='printf %s\n'
+        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+          echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+         # Cool, printf works
+         :
+        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+            test "X$echo_testing_string" = 'X\t' &&
+            echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+            test "X$echo_testing_string" = "X$echo_test_string"; then
+         CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+         export CONFIG_SHELL
+         SHELL="$CONFIG_SHELL"
+         export SHELL
+         ECHO="$CONFIG_SHELL $0 --fallback-echo"
+        elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+            test "X$echo_testing_string" = 'X\t' &&
+            echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+            test "X$echo_testing_string" = "X$echo_test_string"; then
+         ECHO="$CONFIG_SHELL $0 --fallback-echo"
+        else
+         # maybe with a smaller string...
+         prev=:
+
+         for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+           if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+           then
+             break
+           fi
+           prev="$cmd"
+         done
+
+         if test "$prev" != 'sed 50q "$0"'; then
+           echo_test_string=`eval $prev`
+           export echo_test_string
+           exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+         else
+           # Oops.  We lost completely, so just stick with echo.
+           ECHO=echo
+         fi
+        fi
+      fi
+    fi
+  fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='GNU Libidn'
+PACKAGE_TARNAME='libidn'
+PACKAGE_VERSION='1.15'
+PACKAGE_STRING='GNU Libidn 1.15'
+PACKAGE_BUGREPORT='bug-libidn@gnu.org'
+PACKAGE_URL='http://www.gnu.org/software/libidn/'
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+gt_needs=
+ac_header_list=
+ac_subst_vars='lgltests_LTLIBOBJS
+lgltests_LIBOBJS
+lgl_LTLIBOBJS
+lgl_LIBOBJS
+gltests_LTLIBOBJS
+gltests_LIBOBJS
+gl_LTLIBOBJS
+gl_LIBOBJS
+am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+WSTACK_CFLAGS
+WERROR_CFLAGS
+VALGRIND
+CSHARP_FALSE
+CSHARP_TRUE
+JAVA_FALSE
+JAVA_TRUE
+GJDOC
+JAR
+am__fastdepGCJ_FALSE
+am__fastdepGCJ_TRUE
+GCJDEPMODE
+GCJFLAGS
+GCJ
+GTK_DOC_USE_REBASE_FALSE
+GTK_DOC_USE_REBASE_TRUE
+GTK_DOC_USE_LIBTOOL_FALSE
+GTK_DOC_USE_LIBTOOL_TRUE
+GTK_DOC_BUILD_PDF_FALSE
+GTK_DOC_BUILD_PDF_TRUE
+GTK_DOC_BUILD_HTML_FALSE
+GTK_DOC_BUILD_HTML_TRUE
+ENABLE_GTK_DOC_FALSE
+ENABLE_GTK_DOC_TRUE
+PKG_CONFIG
+HTML_DIR
+GTKDOC_MKPDF
+GTKDOC_REBASE
+GTKDOC_CHECK
+TLD_FALSE
+TLD_TRUE
+LIBTESTS_LIBDEPS
+LOCALE_TR_UTF8
+LOCALE_FR
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H
+NEXT_WCHAR_H
+HAVE_WCHAR_H
+HAVE_WINT_T
+WCHAR_H
+REPLACE_WCWIDTH
+REPLACE_WCSNRTOMBS
+REPLACE_WCSRTOMBS
+REPLACE_WCRTOMB
+REPLACE_MBSNRTOWCS
+REPLACE_MBSRTOWCS
+REPLACE_MBRLEN
+REPLACE_MBRTOWC
+REPLACE_MBSINIT
+REPLACE_WCTOB
+REPLACE_BTOWC
+REPLACE_MBSTATE_T
+HAVE_DECL_WCWIDTH
+HAVE_DECL_WCTOB
+HAVE_WCSNRTOMBS
+HAVE_WCSRTOMBS
+HAVE_WCRTOMB
+HAVE_MBSNRTOWCS
+HAVE_MBSRTOWCS
+HAVE_MBRLEN
+HAVE_MBRTOWC
+HAVE_MBSINIT
+HAVE_BTOWC
+GNULIB_WCWIDTH
+GNULIB_WCSNRTOMBS
+GNULIB_WCSRTOMBS
+GNULIB_WCRTOMB
+GNULIB_MBSNRTOWCS
+GNULIB_MBSRTOWCS
+GNULIB_MBRLEN
+GNULIB_MBRTOWC
+GNULIB_MBSINIT
+GNULIB_WCTOB
+GNULIB_BTOWC
+STDINT_H
+WINT_T_SUFFIX
+WCHAR_T_SUFFIX
+SIG_ATOMIC_T_SUFFIX
+SIZE_T_SUFFIX
+PTRDIFF_T_SUFFIX
+HAVE_SIGNED_WINT_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_SIG_ATOMIC_T
+BITSIZEOF_WINT_T
+BITSIZEOF_WCHAR_T
+BITSIZEOF_SIG_ATOMIC_T
+BITSIZEOF_SIZE_T
+BITSIZEOF_PTRDIFF_T
+HAVE_SYS_BITYPES_H
+HAVE_SYS_INTTYPES_H
+HAVE_STDINT_H
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H
+NEXT_STDINT_H
+HAVE_SYS_TYPES_H
+HAVE_INTTYPES_H
+HAVE_UNSIGNED_LONG_LONG_INT
+HAVE_LONG_LONG_INT
+HAVE__BOOL
+STDBOOL_H
+APPLE_UNIVERSAL_BUILD
+HAVE_VISIBILITY
+CFLAG_VISIBILITY
+HAVE_LD_VERSION_SCRIPT_FALSE
+HAVE_LD_VERSION_SCRIPT_TRUE
+HAVE_LD_OUTPUT_DEF_FALSE
+HAVE_LD_OUTPUT_DEF_TRUE
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H
+NEXT_ICONV_H
+ICONV_H
+REPLACE_ICONV_UTF
+REPLACE_ICONV_OPEN
+REPLACE_ICONV
+abs_aux_dir
+WARN_CFLAGS
+HAVE_UNISTD_H
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H
+NEXT_UNISTD_H
+UNISTD_H_HAVE_WINSOCK2_H
+REPLACE_WRITE
+REPLACE_LSEEK
+REPLACE_LCHOWN
+REPLACE_GETPAGESIZE
+REPLACE_GETCWD
+REPLACE_FCHDIR
+REPLACE_CLOSE
+REPLACE_CHOWN
+HAVE_SYS_PARAM_H
+HAVE_OS_H
+HAVE_DECL_GETLOGIN_R
+HAVE_DECL_ENVIRON
+HAVE_SLEEP
+HAVE_READLINK
+HAVE_LINK
+HAVE_GETUSERSHELL
+HAVE_GETPAGESIZE
+HAVE_GETHOSTNAME
+HAVE_GETDTABLESIZE
+HAVE_GETDOMAINNAME
+HAVE_FTRUNCATE
+HAVE_FSYNC
+HAVE_EUIDACCESS
+HAVE_DUP2
+GNULIB_WRITE
+GNULIB_UNISTD_H_SIGPIPE
+GNULIB_SLEEP
+GNULIB_READLINK
+GNULIB_LSEEK
+GNULIB_LINK
+GNULIB_LCHOWN
+GNULIB_GETUSERSHELL
+GNULIB_GETPAGESIZE
+GNULIB_GETLOGIN_R
+GNULIB_GETHOSTNAME
+GNULIB_GETDTABLESIZE
+GNULIB_GETDOMAINNAME
+GNULIB_GETCWD
+GNULIB_FTRUNCATE
+GNULIB_FSYNC
+GNULIB_FCHDIR
+GNULIB_EUIDACCESS
+GNULIB_ENVIRON
+GNULIB_DUP2
+GNULIB_CLOSE
+GNULIB_CHOWN
+NEXT_AS_FIRST_DIRECTIVE_STRING_H
+NEXT_STRING_H
+REPLACE_STRSIGNAL
+REPLACE_STRERROR
+REPLACE_STRCASESTR
+REPLACE_STRSTR
+REPLACE_STRDUP
+REPLACE_MEMMEM
+HAVE_STRVERSCMP
+HAVE_DECL_STRSIGNAL
+HAVE_DECL_STRERROR
+HAVE_DECL_STRTOK_R
+HAVE_STRCASESTR
+HAVE_STRSEP
+HAVE_STRPBRK
+HAVE_DECL_STRNLEN
+HAVE_DECL_STRNDUP
+HAVE_STRNDUP
+HAVE_DECL_STRDUP
+HAVE_STRCHRNUL
+HAVE_STPNCPY
+HAVE_STPCPY
+HAVE_RAWMEMCHR
+HAVE_DECL_MEMRCHR
+HAVE_MEMPCPY
+HAVE_DECL_MEMMEM
+GNULIB_STRVERSCMP
+GNULIB_STRSIGNAL
+GNULIB_STRERROR
+GNULIB_MBSTOK_R
+GNULIB_MBSSEP
+GNULIB_MBSSPN
+GNULIB_MBSPBRK
+GNULIB_MBSCSPN
+GNULIB_MBSCASESTR
+GNULIB_MBSPCASECMP
+GNULIB_MBSNCASECMP
+GNULIB_MBSCASECMP
+GNULIB_MBSSTR
+GNULIB_MBSRCHR
+GNULIB_MBSCHR
+GNULIB_MBSNLEN
+GNULIB_MBSLEN
+GNULIB_STRTOK_R
+GNULIB_STRCASESTR
+GNULIB_STRSTR
+GNULIB_STRSEP
+GNULIB_STRPBRK
+GNULIB_STRNLEN
+GNULIB_STRNDUP
+GNULIB_STRDUP
+GNULIB_STRCHRNUL
+GNULIB_STPNCPY
+GNULIB_STPCPY
+GNULIB_RAWMEMCHR
+GNULIB_MEMRCHR
+GNULIB_MEMPCPY
+GNULIB_MEMMEM
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H
+NEXT_STDARG_H
+STDARG_H
+PMCCABE
+GETOPT_H
+EOVERFLOW_VALUE
+EOVERFLOW_HIDDEN
+ENOLINK_VALUE
+ENOLINK_HIDDEN
+EMULTIHOP_VALUE
+EMULTIHOP_HIDDEN
+ERRNO_H
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H
+NEXT_ERRNO_H
+PRAGMA_SYSTEM_HEADER
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE
+INCLUDE_NEXT
+CSHARPCOMPFLAGS
+HAVE_CSC
+HAVE_MCS
+HAVE_CSCC
+HAVE_CSC_IN_PATH
+HAVE_MCS_IN_PATH
+HAVE_CSCC_IN_PATH
+CSHARP_CHOICE
+GL_COND_LIBTOOL_FALSE
+GL_COND_LIBTOOL_TRUE
+lispdir
+EMACSLOADPATH
+EMACS
+POSUB
+LTLIBINTL
+LIBINTL
+INTLLIBS
+LTLIBICONV
+LIBICONV
+INTL_MACOSX_LIBS
+XGETTEXT_EXTRA_OPTIONS
+MSGMERGE
+XGETTEXT_015
+XGETTEXT
+GMSGFMT_015
+MSGFMT_015
+GMSGFMT
+MSGFMT
+GETTEXT_MACRO_VERSION
+USE_NLS
+HELP2MAN
+PERL
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+lt_ECHO
+AR
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+LIBTOOL
+EGREP
+GREP
+CPP
+RANLIB
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+OBJDUMP
+DLLTOOL
+AS
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+DLL_VERSION
+LT_AGE
+LT_REVISION
+LT_CURRENT
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+enable_libtool_lock
+enable_nls
+enable_rpath
+with_libiconv_prefix
+with_libintl_prefix
+with_lispdir
+enable_csharp
+with_packager
+with_packager_version
+with_packager_bug_reports
+enable_ld_version_script
+enable_tld
+with_html_dir
+enable_gtk_doc
+enable_gtk_doc_html
+enable_gtk_doc_pdf
+enable_java
+enable_valgrind_tests
+enable_gcc_warnings
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+EMACS
+EMACSLOADPATH
+PKG_CONFIG'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)   ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures GNU Libidn 1.15 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/libidn]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of GNU Libidn 1.15:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-nls           do not use Native Language Support
+  --disable-rpath         do not hardcode runtime library paths
+  --enable-csharp[=IMPL]  choose preferred C# implementation (pnet or mono)
+  --enable-ld-version-script
+                          enable linker version script (default is enabled
+                          when possible)
+  --disable-tld           disable TLD code
+  --enable-gtk-doc        use gtk-doc to build documentation [default=no]
+  --enable-gtk-doc-html   build documentation in html format [default=yes]
+  --enable-gtk-doc-pdf    build documentation in pdf format [default=no]
+  --enable-java           enable Java API
+  --enable-valgrind-tests run self tests under valgrind
+  --enable-gcc-warnings   turn on lots of GCC warnings (for developers)
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
+  --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+  --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
+  --without-libintl-prefix     don't search for libintl in includedir and libdir
+  --with-lispdir          override the default lisp directory
+  --with-packager         String identifying the packager of this software
+  --with-packager-version Packager-specific version information
+  --with-packager-bug-reports
+                          Packager info for bug reports (URL/e-mail/...)
+  --with-html-dir=PATH    path to installed docs
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  EMACS       the Emacs editor command
+  EMACSLOADPATH
+              the Emacs library search path
+  PKG_CONFIG  path to pkg-config utility
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: <http://www.gnu.org/software/libidn/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+GNU Libidn configure 1.15
+generated by GNU Autoconf 2.63b
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+
+Copyright (c) 2002-2008 Simon Josefsson <simon@josefsson.org>.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-libidn@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  return $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR
+# ------------------------------------
+# Tests whether SYMBOL is declared, setting cache variable VAR accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $2 is declared" >&5
+$as_echo_n "checking whether $2 is declared... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $2
+  (void) $2;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_decl
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  :
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_type
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by GNU Libidn $as_me 1.15, which was
+generated by GNU Autoconf 2.63b.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+gt_needs="$gt_needs "
+as_fn_append ac_header_list " errno.h"
+as_fn_append ac_header_list " stdarg.h"
+as_fn_append ac_header_list " sys/socket.h"
+as_fn_append ac_header_list " string.h"
+as_fn_append ac_header_list " unistd.h"
+as_fn_append ac_header_list " iconv.h"
+as_fn_append ac_header_list " stdint.h"
+as_fn_append ac_header_list " wchar.h"
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+# Library code modified:                              REVISION++
+# Interfaces changed/added/removed:   CURRENT++       REVISION=0
+# Interfaces added:                             AGE++
+# Interfaces removed:                           AGE=0
+LT_CURRENT=16
+
+LT_REVISION=44
+
+LT_AGE=5
+
+
+# For DEF file.
+DLL_VERSION=`expr ${LT_CURRENT} - ${LT_AGE}`
+
+
+ac_aux_dir=
+for ac_dir in build-aux "$srcdir"/build-aux; do
+  for ac_t in install-sh install.sh shtool; do
+    if test -f "$ac_dir/$ac_t"; then
+      ac_aux_dir=$ac_dir
+      ac_install_sh="$ac_aux_dir/$ac_t -c"
+      break 2
+    fi
+  done
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+am__api_version='1.11'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           rm -rf conftest.one conftest.two conftest.dir
+           echo one > conftest.one
+           echo two > conftest.two
+           mkdir conftest.dir
+           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+             test -s conftest.one && test -s conftest.two &&
+             test -s conftest.dir/conftest.one &&
+             test -s conftest.dir/conftest.two
+           then
+             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+             break 3
+           fi
+         fi
+       fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
+    as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      as_fn_error "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            'mkdir (fileutils) '4.1*)
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+              break 3;;
+          esac
+        done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    test -d ./--version && rmdir ./--version
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='libidn'
+ VERSION='1.15'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+# Checks for programs.
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AS+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AS="${ac_tool_prefix}as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AS="as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AS" = x; then
+    AS="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AS=$ac_ct_AS
+  fi
+else
+  AS="$ac_cv_prog_AS"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DLLTOOL+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+  ;;
+esac
+
+test -z "$AS" && AS=as
+
+
+
+
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ { ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+{ { ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+{ { ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "C compiler cannot create executables
+See \`config.log' for more details." "$LINENO" 5; }; }
+fi
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  :
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then
+  :
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  :
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  :
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = x""yes; then
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+  fi
+
+        case "$host_os" in
+    hpux*)
+
+$as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
+
+      ;;
+  esac
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#        define __EXTENSIONS__ 1
+         $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_safe_to_define___extensions__=yes
+else
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+   case $ac_cv_prog_cc_stdc in #(
+  no) ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #(
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if test "${ac_cv_prog_cc_c99+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+  your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+  // See if C++-style comments work.
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+    continue;
+  return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
+
+  const char *str;
+  int number;
+  float fnumber;
+
+  while (*format)
+    {
+      switch (*format++)
+       {
+       case 's': // string
+         str = va_arg (args_copy, const char *);
+         break;
+       case 'd': // int
+         number = va_arg (args_copy, int);
+         break;
+       case 'f': // float
+         fnumber = va_arg (args_copy, double);
+         break;
+       default:
+         break;
+       }
+    }
+  va_end (args_copy);
+  va_end (args);
+}
+
+int
+main ()
+{
+
+  // Check bool.
+  _Bool success = false;
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  test_varargs ("s, d' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+         || dynamic_array[ni.number - 1] != 543);
+
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c99"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c99" != xno; then
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+else
+  ac_cv_prog_cc_stdc=no
+fi
+
+fi
+ ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5
+$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
+  if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+
+  case $ac_cv_prog_cc_stdc in #(
+  no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;; #(
+  '') { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;; #(
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5
+$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
+esac
+
+
+
+
+
+
+
+  if test -z "$AB_PACKAGE"; then
+    AB_PACKAGE=${PACKAGE_NAME:-$PACKAGE}
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild project... $AB_PACKAGE" >&5
+$as_echo "$as_me: autobuild project... $AB_PACKAGE" >&6;}
+
+  if test -z "$AB_VERSION"; then
+    AB_VERSION=${PACKAGE_VERSION:-$VERSION}
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild revision... $AB_VERSION" >&5
+$as_echo "$as_me: autobuild revision... $AB_VERSION" >&6;}
+
+  hostname=`hostname`
+  if test "$hostname"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild hostname... $hostname" >&5
+$as_echo "$as_me: autobuild hostname... $hostname" >&6;}
+  fi
+
+
+
+  date=`TZ=UTC0 date +%Y%m%dT%H%M%SZ`
+  if test "$?" != 0; then
+    date=`date`
+  fi
+  if test "$date"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild timestamp... $date" >&5
+$as_echo "$as_me: autobuild timestamp... $date" >&6;}
+  fi
+
+
+
+
+case `pwd` in
+  *\ * | *\    *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.2.6'
+macro_revision='1.3012'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if test "${ac_cv_path_SED+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if test "${ac_cv_path_FGREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test "${lt_cv_path_NM+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       # Tru64's nm complains that /dev/null is an invalid object file
+       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+       */dev/null* | *'Invalid file or object type'*)
+         lt_cv_path_NM="$tmp_nm -B"
+         break
+         ;;
+       *)
+         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         */dev/null*)
+           lt_cv_path_NM="$tmp_nm -p"
+           break
+           ;;
+         *)
+           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+           continue # so that we can try to find one that supports BSD flags
+           ;;
+         esac
+         ;;
+       esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DUMPBIN+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if test "${lt_cv_nm_interface+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:6154: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:6157: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:6160: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+                = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+         cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+const struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+         cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_save_LIBS="$LIBS"
+         lt_save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS="$lt_save_LIBS"
+         CFLAGS="$lt_save_CFLAGS"
+       else
+         echo "cannot find nm_test_func in $nlist" >&5
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+       HPUX_IA64_MODE="32"
+       ;;
+      *ELF-64*)
+       HPUX_IA64_MODE="64"
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 7362 "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -melf32bsmip"
+         ;;
+       *N32*)
+         LD="${LD-ld} -melf32bmipn32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -melf64bmip"
+       ;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -32"
+         ;;
+       *N32*)
+         LD="${LD-ld} -n32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -64"
+         ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_i386"
+           ;;
+         ppc64-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf32ppclinux"
+           ;;
+         s390x-*linux*)
+           LD="${LD-ld} -m elf_s390"
+           ;;
+         sparc64-*linux*)
+           LD="${LD-ld} -m elf32_sparc"
+           ;;
+       esac
+       ;;
+      *64-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+         ppc*-*linux*|powerpc*-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
+           LD="${LD-ld} -m elf64_s390"
+           ;;
+         sparc*-*linux*)
+           LD="${LD-ld} -m elf64_sparc"
+           ;;
+       esac
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LIPO+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL64+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&5
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[012]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+for ac_header in dlfcn.h
+do
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+# Set options
+
+
+
+        enable_dlopen=no
+
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then
+  withval=$with_pic; pic_mode="$withval"
+else
+  pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if test "${lt_cv_objdir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:8622: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:8626: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='-fPIC'
+       ;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      else
+       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-KPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='--shared'
+       lt_prog_compiler_static='--static'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fpic'
+       lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl*)
+       # IBM XL C 8.0/Fortran 10.1 on PPC
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-qpic'
+       lt_prog_compiler_static='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C 5.9
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+       *Sun\ F*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl=''
+         ;;
+       esac
+       ;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+       lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+       lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic='-Kconform_pic'
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+
+
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:8961: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:8965: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9066: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:9070: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9121: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:9125: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95*)       # Portland Group f77 and f90 compilers
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         whole_archive_flag_spec=
+         tmp_sharedflag='--shared' ;;
+       xl[cC]*)                        # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+       case $cc_basename in
+       xlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+         hardcode_libdir_flag_spec=
+         hardcode_libdir_flag_spec_ld='-rpath $libdir'
+         archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           ld_shlibs=no
+         fi
+       ;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+         ;;
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[012]|aix4.[012].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         :
+         else
+         # We have old collect2
+         hardcode_direct=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L=yes
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_libdir_separator=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
+
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag="-z nodefs"
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag=' ${wl}-bernotok'
+         allow_undefined_flag=' ${wl}-berok'
+         # Exported symbols can be pulled into shared objects from archives
+         whole_archive_flag_spec='$convenience'
+         archive_cmds_need_lc=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_from_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  whole_archive_flag_spec=''
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=echo
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+       hardcode_libdir_flag_spec_ld='+b $libdir'
+       hardcode_libdir_separator=:
+       hardcode_direct=yes
+       hardcode_direct_absolute=yes
+       export_dynamic_flag_spec='${wl}-E'
+       # hardcode_minus_L: Not really in the search PATH,
+       # but as the default location of the library.
+       hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator=:
+
+       case $host_cpu in
+       hppa*64*|ia64*)
+         hardcode_direct=no
+         hardcode_shlibpath_var=no
+         ;;
+       *)
+         hardcode_direct=yes
+         hardcode_direct_absolute=yes
+         export_dynamic_flag_spec='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo(void) {}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        LDFLAGS="$save_LDFLAGS"
+      else
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       hardcode_direct=yes
+       hardcode_shlibpath_var=no
+       hardcode_direct_absolute=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+         export_dynamic_flag_spec='${wl}-E'
+       else
+         case $host_os in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            hardcode_libdir_flag_spec='-R$libdir'
+            ;;
+          *)
+            archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         ;;
+       *)
+         wlarc='${wl}'
+         archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds='$CC -r -o $output$reload_objs'
+         hardcode_direct=no
+        ;;
+       motorola)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       export_dynamic_flag_spec='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+      $RM conftest*
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl
+       pic_flag=$lt_prog_compiler_pic
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+        then
+         archive_cmds_need_lc=no
+        else
+         archive_cmds_need_lc=yes
+        fi
+        allow_undefined_flag=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $RM conftest*
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
+$as_echo "$archive_cmds_need_lc" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # Some binutils ld are patched to set DT_RUNPATH
+  save_LDFLAGS=$LDFLAGS
+  save_libdir=$libdir
+  eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+       LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
+  shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LDFLAGS=$save_LDFLAGS
+  libdir=$save_libdir
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = x""yes; then
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = x""yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = x""yes; then
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line 11488 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line 11584 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+PERL=${PERL-"${am_missing_run}perl"}
+
+
+HELP2MAN=${HELP2MAN-"${am_missing_run}help2man"}
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+    # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then
+  enableval=$enable_nls; USE_NLS=$enableval
+else
+  USE_NLS=yes
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+      GETTEXT_MACRO_VERSION=0.17
+
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case "$MSGFMT" in
+  [\\/]* | ?:[\\/]*)
+    ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH; do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&5
+          if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+            ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
+    ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GMSGFMT+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $GMSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+  ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+    case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case "$XGETTEXT" in
+  [\\/]* | ?:[\\/]*)
+    ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH; do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&5
+          if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+            ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+    ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+    rm -f messages.po
+
+    case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGMERGE+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case "$MSGMERGE" in
+  [\\/]* | ?:[\\/]*)
+    ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH; do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&5
+          if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
+            ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+  test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
+    ;;
+esac
+fi
+MSGMERGE="$ac_cv_path_MSGMERGE"
+if test "$MSGMERGE" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+        test -n "$localedir" || localedir='${datadir}/locale'
+
+
+    test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+
+
+  ac_config_commands="$ac_config_commands po-directories"
+
+
+
+      if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${acl_cv_path_LD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      acl_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break ;;
+      *)
+       test "$with_gnu_ld" != yes && break ;;
+      esac
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+                                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if test "${acl_cv_rpath+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+  wl="$acl_cv_wl"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+    # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then
+  enableval=$enable_rpath; :
+else
+  enable_rpath=yes
+fi
+
+
+
+                  acl_libdirstem=lib
+  searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+  if test -n "$searchpath"; then
+    acl_save_IFS="${IFS=       }"; IFS=":"
+    for searchdir in $searchpath; do
+      if test -d "$searchdir"; then
+        case "$searchdir" in
+          */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+          *) searchdir=`cd "$searchdir" && pwd`
+             case "$searchdir" in
+               */lib64 ) acl_libdirstem=lib64 ;;
+             esac ;;
+        esac
+      fi
+    done
+    IFS="$acl_save_IFS"
+  fi
+
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then
+  withval=$with_libiconv_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+
+fi
+
+      LIBICONV=
+  LTLIBICONV=
+  INCICONV=
+  LIBICONV_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='iconv '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$acl_hardcode_direct" = yes; then
+                                                      LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+              else
+                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIBICONV_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+                    LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+            LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+    done
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+  gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+  fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  gt_cv_func_CFLocaleCopyCurrent=yes
+else
+  gt_cv_func_CFLocaleCopyCurrent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
+
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+
+
+
+
+
+
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+    case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+    if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  eval "$gt_func_gnugettext_libc=yes"
+else
+  eval "$gt_func_gnugettext_libc=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$gt_func_gnugettext_libc
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if test "${am_cv_func_iconv_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+            am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      if test "$cross_compiling" = yes; then
+  case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  am_cv_func_iconv_works=yes
+else
+  am_cv_func_iconv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libintl-prefix was given.
+if test "${with_libintl_prefix+set}" = set; then
+  withval=$with_libintl_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+
+fi
+
+      LIBINTL=
+  LTLIBINTL=
+  INCINTL=
+  LIBINTL_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='intl '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$acl_hardcode_direct" = yes; then
+                                                      LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
+              else
+                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIBINTL_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
+                    LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+            LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
+    done
+  fi
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
+$as_echo_n "checking for GNU gettext in libintl... " >&6; }
+if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  eval "$gt_func_gnugettext_libintl=yes"
+else
+  eval "$gt_func_gnugettext_libintl=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+                        if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  LIBINTL="$LIBINTL $LIBICONV"
+                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                eval "$gt_func_gnugettext_libintl=yes"
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"
+fi
+eval ac_res=\$$gt_func_gnugettext_libintl
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+        fi
+
+                                        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+                    LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
+
+
+
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+                LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
+$as_echo_n "checking whether to use NLS... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+  if test "$USE_NLS" = "yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
+$as_echo_n "checking where the gettext function comes from... " >&6; }
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
+$as_echo "$gt_source" >&6; }
+  fi
+
+  if test "$USE_NLS" = "yes"; then
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
+$as_echo_n "checking how to link with libintl... " >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
+$as_echo "$LIBINTL" >&6; }
+
+  for element in $INCINTL; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+      fi
+
+
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+
+
+$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
+
+    fi
+
+        POSUB=po
+  fi
+
+
+
+    INTLLIBS="$LIBINTL"
+
+
+
+
+
+
+
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if test "${am_cv_func_iconv_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+            am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      if test "$cross_compiling" = yes; then
+  case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  am_cv_func_iconv_works=yes
+else
+  am_cv_func_iconv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+
+
+
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+    if test "${am_cv_proto_iconv+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  am_cv_proto_iconv_arg1=""
+else
+  am_cv_proto_iconv_arg1="const"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+    am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
+         }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+         }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+  fi
+
+ # If set to t, that means we are running in a shell under Emacs.
+ # If you have an Emacs named "t", then use the full path.
+ test x"$EMACS" = xt && EMACS=
+ for ac_prog in emacs xemacs
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_EMACS+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$EMACS"; then
+  ac_cv_prog_EMACS="$EMACS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_EMACS="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+EMACS=$ac_cv_prog_EMACS
+if test -n "$EMACS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EMACS" >&5
+$as_echo "$EMACS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$EMACS" && break
+done
+test -n "$EMACS" || EMACS="no"
+
+
+
+
+# Check whether --with-lispdir was given.
+if test "${with_lispdir+set}" = set; then
+  withval=$with_lispdir;  lispdir="$withval"
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking where .elc files should go" >&5
+$as_echo_n "checking where .elc files should go... " >&6; }
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lispdir" >&5
+$as_echo "$lispdir" >&6; }
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where .elc files should go" >&5
+$as_echo_n "checking where .elc files should go... " >&6; }
+if test "${am_cv_lispdir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+   if test $EMACS != "no"; then
+     if test x${lispdir+set} != xset; then
+  # If $EMACS isn't GNU Emacs or XEmacs, this can blow up pretty badly
+  # Some emacsen will start up in interactive mode, requiring C-x C-c to exit,
+  #  which is non-obvious for non-emacs users.
+  # Redirecting /dev/null should help a bit; pity we can't detect "broken"
+  #  emacsen earlier and avoid running this altogether.
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: \$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) \"\\n\")) (setq load-path (cdr load-path)))' </dev/null >conftest.out"; } >&5
+  ($EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' </dev/null >conftest.out) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+       am_cv_lispdir=`sed -n \
+       -e 's,/$,,' \
+       -e '/.*\/lib\/x*emacs\/site-lisp$/{s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;}' \
+       -e '/.*\/share\/x*emacs\/site-lisp$/{s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;}' \
+       conftest.out`
+       rm conftest.out
+     fi
+   fi
+   test -z "$am_cv_lispdir" && am_cv_lispdir='${datadir}/emacs/site-lisp'
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_lispdir" >&5
+$as_echo "$am_cv_lispdir" >&6; }
+  lispdir="$am_cv_lispdir"
+
+fi
+
+
+
+
+if test "$am_cv_func_iconv" != "yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}:
+***
+
+Your system does not have iconv().  The iconv() function is not
+strictly required by the source code.  However, that may change in
+the future, unless you report that this may be a problem for you.
+
+Please report this to $PACKAGE_BUGREPORT.
+
+***" >&5
+$as_echo "$as_me:
+***
+
+Your system does not have iconv().  The iconv() function is not
+strictly required by the source code.  However, that may change in
+the future, unless you report that this may be a problem for you.
+
+Please report this to $PACKAGE_BUGREPORT.
+
+***" >&6;}
+fi
+
+# Checks for header files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+
+# For gnulib stuff in gl/.
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for preferred C# implementation" >&5
+$as_echo_n "checking for preferred C# implementation... " >&6; }
+  # Check whether --enable-csharp was given.
+if test "${enable_csharp+set}" = set; then
+  enableval=$enable_csharp; CSHARP_CHOICE="$enableval"
+else
+  CSHARP_CHOICE=any
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CSHARP_CHOICE" >&5
+$as_echo "$CSHARP_CHOICE" >&6; }
+  case "$CSHARP_CHOICE" in
+    pnet)
+
+$as_echo "#define CSHARP_CHOICE_PNET 1" >>confdefs.h
+
+      ;;
+    mono)
+
+$as_echo "#define CSHARP_CHOICE_MONO 1" >>confdefs.h
+
+      ;;
+  esac
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C# compiler" >&5
+$as_echo_n "checking for C# compiler... " >&6; }
+  HAVE_CSHARPCOMP=1
+        # Extract the first word of "cscc", so it can be a program name with args.
+set dummy cscc; ac_word=$2
+:
+if test "${ac_cv_prog_HAVE_CSCC_IN_PATH+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$HAVE_CSCC_IN_PATH"; then
+  ac_cv_prog_HAVE_CSCC_IN_PATH="$HAVE_CSCC_IN_PATH" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_HAVE_CSCC_IN_PATH="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+HAVE_CSCC_IN_PATH=$ac_cv_prog_HAVE_CSCC_IN_PATH
+if test -n "$HAVE_CSCC_IN_PATH"; then
+  :
+else
+  :
+fi
+
+
+  # Extract the first word of "mcs", so it can be a program name with args.
+set dummy mcs; ac_word=$2
+:
+if test "${ac_cv_prog_HAVE_MCS_IN_PATH+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$HAVE_MCS_IN_PATH"; then
+  ac_cv_prog_HAVE_MCS_IN_PATH="$HAVE_MCS_IN_PATH" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_HAVE_MCS_IN_PATH="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+HAVE_MCS_IN_PATH=$ac_cv_prog_HAVE_MCS_IN_PATH
+if test -n "$HAVE_MCS_IN_PATH"; then
+  :
+else
+  :
+fi
+
+
+  # Extract the first word of "csc", so it can be a program name with args.
+set dummy csc; ac_word=$2
+:
+if test "${ac_cv_prog_HAVE_CSC_IN_PATH+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$HAVE_CSC_IN_PATH"; then
+  ac_cv_prog_HAVE_CSC_IN_PATH="$HAVE_CSC_IN_PATH" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_HAVE_CSC_IN_PATH="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+HAVE_CSC_IN_PATH=$ac_cv_prog_HAVE_CSC_IN_PATH
+if test -n "$HAVE_CSC_IN_PATH"; then
+  :
+else
+  :
+fi
+
+
+        for impl in "$CSHARP_CHOICE" pnet mono sscli no; do
+    case "$impl" in
+      pnet)
+        if test -n "$HAVE_CSCC_IN_PATH" \
+           && cscc --version >/dev/null 2>/dev/null \
+           && (
+             # See if pnetlib is well installed.
+             echo 'class ConfTest { static void Main() { } }' > conftest.cs
+             cscc -o conftest.exe conftest.cs 2>/dev/null
+             error=$?
+             rm -f conftest.cs conftest.exe
+             exit $error
+            ); then
+          HAVE_CSCC=1
+          ac_result="cscc"
+          break
+        fi
+        ;;
+      mono)
+        if test -n "$HAVE_MCS_IN_PATH" \
+           && mcs --version >/dev/null 2>/dev/null \
+           && mcs --version 2>/dev/null | grep Mono >/dev/null; then
+          HAVE_MCS=1
+          ac_result="mcs"
+          break
+        fi
+        ;;
+      sscli)
+        if test -n "$HAVE_CSC_IN_PATH" \
+           && csc -help >/dev/null 2>/dev/null \
+           && { if csc -help 2>/dev/null | grep -i chicken > /dev/null; then false; else true; fi; }; then
+          HAVE_CSC=1
+          ac_result="csc"
+          break
+        fi
+        ;;
+      no)
+        HAVE_CSHARPCOMP=
+        ac_result="no"
+        break
+        ;;
+    esac
+  done
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_result" >&5
+$as_echo "$ac_result" >&6; }
+
+
+
+    if test -z "${CSHARPCOMPFLAGS+set}"; then
+    CSHARPCOMPFLAGS="-O -g"
+  fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5
+$as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
+if test "${gl_cv_have_include_next+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  rm -rf conftestd1a conftestd1b conftestd2
+     mkdir conftestd1a conftestd1b conftestd2
+                                                  cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+     gl_save_CPPFLAGS="$CPPFLAGS"
+     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <conftest.h>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gl_cv_have_include_next=yes
+else
+  CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <conftest.h>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gl_cv_have_include_next=buggy
+else
+  gl_cv_have_include_next=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     CPPFLAGS="$gl_save_CPPFLAGS"
+     rm -rf conftestd1a conftestd1b conftestd2
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5
+$as_echo "$gl_cv_have_include_next" >&6; }
+  PRAGMA_SYSTEM_HEADER=
+  if test $gl_cv_have_include_next = yes; then
+    INCLUDE_NEXT=include_next
+    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    if test -n "$GCC"; then
+      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+    fi
+  else
+    if test $gl_cv_have_include_next = buggy; then
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    else
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+    fi
+  fi
+
+
+
+
+
+
+
+  for ac_header in $ac_header_list
+do
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for complete errno.h" >&5
+$as_echo_n "checking for complete errno.h... " >&6; }
+if test "${gl_cv_header_errno_h_complete+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "booboo" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_complete=no
+else
+  gl_cv_header_errno_h_complete=yes
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_complete" >&5
+$as_echo "$gl_cv_header_errno_h_complete" >&6; }
+  if test $gl_cv_header_errno_h_complete = yes; then
+    ERRNO_H=''
+  else
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_errno_h='<'errno.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <errno.h>" >&5
+$as_echo_n "checking absolute name of <errno.h>... " >&6; }
+if test "${gl_cv_next_errno_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_errno_h = yes; then
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <errno.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_errno_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/errno.h#{
+                s#.*"\(.*/errno.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_errno_h='<'errno.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_errno_h" >&5
+$as_echo "$gl_cv_next_errno_h" >&6; }
+     fi
+     NEXT_ERRNO_H=$gl_cv_next_errno_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'errno.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_errno_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive
+
+
+
+    ERRNO_H='errno.h'
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EMULTIHOP value" >&5
+$as_echo_n "checking for EMULTIHOP value... " >&6; }
+if test "${gl_cv_header_errno_h_EMULTIHOP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_EMULTIHOP=yes
+else
+  gl_cv_header_errno_h_EMULTIHOP=no
+fi
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_EMULTIHOP = no; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_EMULTIHOP=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then
+                              if ac_fn_c_compute_int "$LINENO" "EMULTIHOP" "gl_cv_header_errno_h_EMULTIHOP"        "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+"; then
+  :
+fi
+
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EMULTIHOP" >&5
+$as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; }
+    case $gl_cv_header_errno_h_EMULTIHOP in
+      yes | no)
+        EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE=
+        ;;
+      *)
+        EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP"
+        ;;
+    esac
+
+
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOLINK value" >&5
+$as_echo_n "checking for ENOLINK value... " >&6; }
+if test "${gl_cv_header_errno_h_ENOLINK+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_ENOLINK=yes
+else
+  gl_cv_header_errno_h_ENOLINK=no
+fi
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_ENOLINK = no; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_ENOLINK=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_ENOLINK = hidden; then
+                              if ac_fn_c_compute_int "$LINENO" "ENOLINK" "gl_cv_header_errno_h_ENOLINK"        "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+"; then
+  :
+fi
+
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_ENOLINK" >&5
+$as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; }
+    case $gl_cv_header_errno_h_ENOLINK in
+      yes | no)
+        ENOLINK_HIDDEN=0; ENOLINK_VALUE=
+        ;;
+      *)
+        ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK"
+        ;;
+    esac
+
+
+  fi
+
+
+  if test -n "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW value" >&5
+$as_echo_n "checking for EOVERFLOW value... " >&6; }
+if test "${gl_cv_header_errno_h_EOVERFLOW+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_EOVERFLOW=yes
+else
+  gl_cv_header_errno_h_EOVERFLOW=no
+fi
+rm -f conftest*
+
+      if test $gl_cv_header_errno_h_EOVERFLOW = no; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  gl_cv_header_errno_h_EOVERFLOW=hidden
+fi
+rm -f conftest*
+
+        if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then
+                              if ac_fn_c_compute_int "$LINENO" "EOVERFLOW" "gl_cv_header_errno_h_EOVERFLOW"        "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+"; then
+  :
+fi
+
+        fi
+      fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EOVERFLOW" >&5
+$as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; }
+    case $gl_cv_header_errno_h_EOVERFLOW in
+      yes | no)
+        EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE=
+        ;;
+      *)
+        EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW"
+        ;;
+    esac
+
+
+  fi
+
+
+ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strerror_r" = x""yes; then
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R $ac_have_decl
+_ACEOF
+
+for ac_func in strerror_r
+do
+  ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r"
+if test "x$ac_cv_func_strerror_r" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRERROR_R 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5
+$as_echo_n "checking whether strerror_r returns char *... " >&6; }
+if test "${ac_cv_func_strerror_r_char_p+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_cv_func_strerror_r_char_p=no
+    if test $ac_cv_have_decl_strerror_r = yes; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+         char buf[100];
+         char x = *strerror_r (0, buf, sizeof buf);
+         char *p = strerror_r (0, buf, sizeof buf);
+         return !p || x;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_func_strerror_r_char_p=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    else
+      # strerror_r is not declared.  Choose between
+      # systems that have relatively inaccessible declarations for the
+      # function.  BeOS and DEC UNIX 4.0 fall in this category, but the
+      # former has a strerror_r that returns char*, while the latter
+      # has a strerror_r that returns `int'.
+      # This test should segfault on the DEC system.
+      if test "$cross_compiling" = yes; then
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+       extern char *strerror_r ();
+int
+main ()
+{
+char buf[100];
+         char x = *strerror_r (0, buf, sizeof buf);
+         return ! isalpha (x);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  ac_cv_func_strerror_r_char_p=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5
+$as_echo "$ac_cv_func_strerror_r_char_p" >&6; }
+if test $ac_cv_func_strerror_r_char_p = yes; then
+
+$as_echo "#define STRERROR_R_CHAR_P 1" >>confdefs.h
+
+fi
+
+
+  XGETTEXT_EXTRA_OPTIONS=
+
+
+  if test -z "$GETOPT_H"; then
+    for ac_header in getopt.h
+do
+  ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default"
+if test "x$ac_cv_header_getopt_h" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETOPT_H 1
+_ACEOF
+
+else
+  GETOPT_H=getopt.h
+fi
+
+done
+
+  fi
+
+  if test -z "$GETOPT_H"; then
+    for ac_func in getopt_long_only
+do
+  ac_fn_c_check_func "$LINENO" "getopt_long_only" "ac_cv_func_getopt_long_only"
+if test "x$ac_cv_func_getopt_long_only" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETOPT_LONG_ONLY 1
+_ACEOF
+
+else
+  GETOPT_H=getopt.h
+fi
+done
+
+  fi
+
+      if test -z "$GETOPT_H"; then
+    ac_fn_c_check_decl "$LINENO" "optreset" "ac_cv_have_decl_optreset" "#include <getopt.h>
+"
+if test "x$ac_cv_have_decl_optreset" = x""yes; then
+  GETOPT_H=getopt.h
+fi
+
+  fi
+
+      if test -z "$GETOPT_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt function" >&5
+$as_echo_n "checking for working GNU getopt function... " >&6; }
+if test "${gl_cv_func_gnu_getopt+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+                        ac_fn_c_check_decl "$LINENO" "getopt_clip" "ac_cv_have_decl_getopt_clip" "#include <getopt.h>
+"
+if test "x$ac_cv_have_decl_getopt_clip" = x""yes; then
+  gl_cv_func_gnu_getopt=no
+else
+  gl_cv_func_gnu_getopt=yes
+fi
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <getopt.h>
+int
+main ()
+{
+
+            char *myargv[3];
+            myargv[0] = "conftest";
+            myargv[1] = "-+";
+            myargv[2] = 0;
+            return getopt (2, myargv, "+a") != '?';
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  gl_cv_func_gnu_getopt=yes
+else
+  gl_cv_func_gnu_getopt=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gnu_getopt" >&5
+$as_echo "$gl_cv_func_gnu_getopt" >&6; }
+    if test "$gl_cv_func_gnu_getopt" = "no"; then
+      GETOPT_H=getopt.h
+    fi
+  fi
+
+ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getenv" = x""yes; then
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV $ac_have_decl
+_ACEOF
+
+
+
+
+  GNULIB_MEMMEM=0;
+  GNULIB_MEMPCPY=0;
+  GNULIB_MEMRCHR=0;
+  GNULIB_RAWMEMCHR=0;
+  GNULIB_STPCPY=0;
+  GNULIB_STPNCPY=0;
+  GNULIB_STRCHRNUL=0;
+  GNULIB_STRDUP=0;
+  GNULIB_STRNDUP=0;
+  GNULIB_STRNLEN=0;
+  GNULIB_STRPBRK=0;
+  GNULIB_STRSEP=0;
+  GNULIB_STRSTR=0;
+  GNULIB_STRCASESTR=0;
+  GNULIB_STRTOK_R=0;
+  GNULIB_MBSLEN=0;
+  GNULIB_MBSNLEN=0;
+  GNULIB_MBSCHR=0;
+  GNULIB_MBSRCHR=0;
+  GNULIB_MBSSTR=0;
+  GNULIB_MBSCASECMP=0;
+  GNULIB_MBSNCASECMP=0;
+  GNULIB_MBSPCASECMP=0;
+  GNULIB_MBSCASESTR=0;
+  GNULIB_MBSCSPN=0;
+  GNULIB_MBSPBRK=0;
+  GNULIB_MBSSPN=0;
+  GNULIB_MBSSEP=0;
+  GNULIB_MBSTOK_R=0;
+  GNULIB_STRERROR=0;
+  GNULIB_STRSIGNAL=0;
+  GNULIB_STRVERSCMP=0;
+    HAVE_DECL_MEMMEM=1;
+  HAVE_MEMPCPY=1;
+  HAVE_DECL_MEMRCHR=1;
+  HAVE_RAWMEMCHR=1;
+  HAVE_STPCPY=1;
+  HAVE_STPNCPY=1;
+  HAVE_STRCHRNUL=1;
+  HAVE_DECL_STRDUP=1;
+  HAVE_STRNDUP=1;
+  HAVE_DECL_STRNDUP=1;
+  HAVE_DECL_STRNLEN=1;
+  HAVE_STRPBRK=1;
+  HAVE_STRSEP=1;
+  HAVE_STRCASESTR=1;
+  HAVE_DECL_STRTOK_R=1;
+  HAVE_DECL_STRERROR=1;
+  HAVE_DECL_STRSIGNAL=1;
+  HAVE_STRVERSCMP=1;
+  REPLACE_MEMMEM=0;
+  REPLACE_STRDUP=0;
+  REPLACE_STRSTR=0;
+  REPLACE_STRCASESTR=0;
+  REPLACE_STRERROR=0;
+  REPLACE_STRSIGNAL=0;
+
+
+
+
+
+
+  if test -z "$ERRNO_H"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strerror function" >&5
+$as_echo_n "checking for working strerror function... " >&6; }
+if test "${gl_cv_func_working_strerror+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+int
+main ()
+{
+return !*strerror (-2);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gl_cv_func_working_strerror=yes
+else
+  gl_cv_func_working_strerror=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+int
+main ()
+{
+return !*strerror (-2);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  gl_cv_func_working_strerror=yes
+else
+  gl_cv_func_working_strerror=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_strerror" >&5
+$as_echo "$gl_cv_func_working_strerror" >&6; }
+    if test $gl_cv_func_working_strerror = no; then
+                  REPLACE_STRERROR=1
+    fi
+  else
+            REPLACE_STRERROR=1
+  fi
+  if test $REPLACE_STRERROR = 1; then
+
+  ac_fn_c_check_decl "$LINENO" "strerror" "ac_cv_have_decl_strerror" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strerror" = x""yes; then
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR $ac_have_decl
+_ACEOF
+
+
+  if test $ac_cv_header_sys_socket_h != yes; then
+                    for ac_header in winsock2.h
+do
+  ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default"
+if test "x$ac_cv_header_winsock2_h" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WINSOCK2_H 1
+_ACEOF
+
+fi
+
+done
+
+  fi
+
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if test "${ac_cv_c_restrict+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+typedef int * int_ptr;
+       int foo (int_ptr $ac_kw ip) {
+       return ip[0];
+       }
+int
+main ()
+{
+int s[1];
+       int * $ac_kw t = s;
+       t[0] = 0;
+       return foo(t)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_c_restrict=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     test "$ac_cv_c_restrict" != no && break
+   done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) $as_echo "#define restrict /**/" >>confdefs.h
+ ;;
+   *)  cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_string_h='<'string.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <string.h>" >&5
+$as_echo_n "checking absolute name of <string.h>... " >&6; }
+if test "${gl_cv_next_string_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_string_h = yes; then
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_string_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/string.h#{
+                s#.*"\(.*/string.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_string_h='<'string.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_string_h" >&5
+$as_echo "$gl_cv_next_string_h" >&6; }
+     fi
+     NEXT_STRING_H=$gl_cv_next_string_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'string.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_string_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive
+
+
+
+
+
+  GNULIB_CHOWN=0;
+  GNULIB_CLOSE=0;
+  GNULIB_DUP2=0;
+  GNULIB_ENVIRON=0;
+  GNULIB_EUIDACCESS=0;
+  GNULIB_FCHDIR=0;
+  GNULIB_FSYNC=0;
+  GNULIB_FTRUNCATE=0;
+  GNULIB_GETCWD=0;
+  GNULIB_GETDOMAINNAME=0;
+  GNULIB_GETDTABLESIZE=0;
+  GNULIB_GETHOSTNAME=0;
+  GNULIB_GETLOGIN_R=0;
+  GNULIB_GETPAGESIZE=0;
+  GNULIB_GETUSERSHELL=0;
+  GNULIB_LCHOWN=0;
+  GNULIB_LINK=0;
+  GNULIB_LSEEK=0;
+  GNULIB_READLINK=0;
+  GNULIB_SLEEP=0;
+  GNULIB_UNISTD_H_SIGPIPE=0;
+  GNULIB_WRITE=0;
+    HAVE_DUP2=1;
+  HAVE_EUIDACCESS=1;
+  HAVE_FSYNC=1;
+  HAVE_FTRUNCATE=1;
+  HAVE_GETDOMAINNAME=1;
+  HAVE_GETDTABLESIZE=1;
+  HAVE_GETHOSTNAME=1;
+  HAVE_GETPAGESIZE=1;
+  HAVE_GETUSERSHELL=1;
+  HAVE_LINK=1;
+  HAVE_READLINK=1;
+  HAVE_SLEEP=1;
+  HAVE_DECL_ENVIRON=1;
+  HAVE_DECL_GETLOGIN_R=1;
+  HAVE_OS_H=0;
+  HAVE_SYS_PARAM_H=0;
+  REPLACE_CHOWN=0;
+  REPLACE_CLOSE=0;
+  REPLACE_FCHDIR=0;
+  REPLACE_GETCWD=0;
+  REPLACE_GETPAGESIZE=0;
+  REPLACE_LCHOWN=0;
+  REPLACE_LSEEK=0;
+  REPLACE_WRITE=0;
+  UNISTD_H_HAVE_WINSOCK2_H=0;
+
+
+
+
+   if true; then
+  GL_COND_LIBTOOL_TRUE=
+  GL_COND_LIBTOOL_FALSE='#'
+else
+  GL_COND_LIBTOOL_TRUE='#'
+  GL_COND_LIBTOOL_FALSE=
+fi
+
+  gl_cond_libtool=true
+
+
+
+
+
+
+
+
+
+  gl_source_base='gl'
+
+  ac_config_files="$ac_config_files csharpcomp.sh:build-aux/csharpcomp.sh.in"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5
+$as_echo_n "checking for error_at_line... " >&6; }
+if test "${ac_cv_lib_error_at_line+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <error.h>
+int
+main ()
+{
+error_at_line (0, 0, "", 0, "an error occurred");
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  ac_cv_lib_error_at_line=yes
+else
+  ac_cv_lib_error_at_line=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5
+$as_echo "$ac_cv_lib_error_at_line" >&6; }
+if test $ac_cv_lib_error_at_line = no; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext"
+
+fi
+
+
+
+  :
+
+
+
+
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format"
+
+
+
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error_at_line:5:c-format"
+
+
+
+  if test -n "$GETOPT_H"; then
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext"
+
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext"
+
+
+  GETOPT_H=getopt.h
+
+$as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h
+
+
+
+
+
+
+
+fi
+
+
+
+  # Autoconf 2.61a.99 and earlier don't support linking a file only
+  # in VPATH builds.  But since GNUmakefile is for maintainer use
+  # only, it does not matter if we skip the link with older autoconf.
+  # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
+  # builds, so use a shell variable to bypass this.
+  GNUmakefile=GNUmakefile
+  ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
+
+
+
+  # Extract the first word of "pmccabe", so it can be a program name with args.
+set dummy pmccabe; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PMCCABE+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $PMCCABE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PMCCABE="$PMCCABE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PMCCABE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_PMCCABE" && ac_cv_path_PMCCABE="false"
+  ;;
+esac
+fi
+PMCCABE=$ac_cv_path_PMCCABE
+if test -n "$PMCCABE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PMCCABE" >&5
+$as_echo "$PMCCABE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+  STDARG_H='';
+  NEXT_STDARG_H='<stdarg.h>';
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy" >&5
+$as_echo_n "checking for va_copy... " >&6; }
+  if test "${gl_cv_func_va_copy+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+int
+main ()
+{
+
+#ifndef va_copy
+void (*func) (va_list, va_list) = va_copy;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gl_cv_func_va_copy=yes
+else
+  gl_cv_func_va_copy=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_va_copy" >&5
+$as_echo "$gl_cv_func_va_copy" >&6; }
+  if test $gl_cv_func_va_copy = no; then
+                                    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined _AIX && !defined __GNUC__
+        AIX vaccine
+       #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "vaccine" >/dev/null 2>&1; then
+  gl_aixcc=yes
+else
+  gl_aixcc=no
+fi
+rm -f conftest*
+
+    if test $gl_aixcc = yes; then
+            STDARG_H=stdarg.h
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdarg_h='<'stdarg.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdarg.h>" >&5
+$as_echo_n "checking absolute name of <stdarg.h>... " >&6; }
+if test "${gl_cv_next_stdarg_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_stdarg_h = yes; then
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_stdarg_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/stdarg.h#{
+                s#.*"\(.*/stdarg.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_stdarg_h='<'stdarg.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdarg_h" >&5
+$as_echo "$gl_cv_next_stdarg_h" >&6; }
+     fi
+     NEXT_STDARG_H=$gl_cv_next_stdarg_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdarg.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdarg_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDARG_H=$gl_next_as_first_directive
+
+
+
+            if test "$gl_cv_next_stdarg_h" = '""'; then
+        gl_cv_next_stdarg_h='"///usr/include/stdarg.h"'
+        NEXT_STDARG_H="$gl_cv_next_stdarg_h"
+      fi
+    else
+
+  saved_as_echo_n="$as_echo_n"
+  as_echo_n=':'
+  if test "${gl_cv_func___va_copy+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+int
+main ()
+{
+
+#ifndef __va_copy
+error, bail out
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gl_cv_func___va_copy=yes
+else
+  gl_cv_func___va_copy=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+  as_echo_n="$saved_as_echo_n"
+
+      if test $gl_cv_func___va_copy = yes; then
+
+$as_echo "#define va_copy __va_copy" >>confdefs.h
+
+      else
+
+
+$as_echo "#define va_copy gl_va_copy" >>confdefs.h
+
+      fi
+    fi
+  fi
+
+
+
+  if test $REPLACE_STRERROR = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS strerror.$ac_objext"
+
+
+cat >>confdefs.h <<_ACEOF
+#define REPLACE_STRERROR $REPLACE_STRERROR
+_ACEOF
+
+  fi
+
+
+
+  GNULIB_STRERROR=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_unistd_h='<'unistd.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <unistd.h>" >&5
+$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
+if test "${gl_cv_next_unistd_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_unistd_h = yes; then
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <unistd.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_unistd_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/unistd.h#{
+                s#.*"\(.*/unistd.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_unistd_h='<'unistd.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_unistd_h" >&5
+$as_echo "$gl_cv_next_unistd_h" >&6; }
+     fi
+     NEXT_UNISTD_H=$gl_cv_next_unistd_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'unistd.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_unistd_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive
+
+
+
+
+
+  if test $ac_cv_header_unistd_h = yes; then
+    HAVE_UNISTD_H=1
+  else
+    HAVE_UNISTD_H=0
+  fi
+
+
+
+# Check whether --with-packager was given.
+if test "${with_packager+set}" = set; then
+  withval=$with_packager;       case $withval in
+       yes|no) ;;
+       *)
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_PACKAGER "$withval"
+_ACEOF
+ ;;
+      esac
+
+fi
+
+
+
+# Check whether --with-packager-version was given.
+if test "${with_packager_version+set}" = set; then
+  withval=$with_packager_version;       case $withval in
+       yes|no) ;;
+       *)
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_PACKAGER_VERSION "$withval"
+_ACEOF
+ ;;
+      esac
+
+fi
+
+
+
+# Check whether --with-packager-bug-reports was given.
+if test "${with_packager_bug_reports+set}" = set; then
+  withval=$with_packager_bug_reports;       case $withval in
+       yes|no) ;;
+       *)
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_PACKAGER_BUG_REPORTS "$withval"
+_ACEOF
+ ;;
+      esac
+
+fi
+
+
+  if test "X$with_packager" = "X" && \
+     test "X$with_packager_version$with_packager_bug_reports" != "X"
+  then
+    as_fn_error "The --with-packager-{bug-reports,version} options require --with-packager" "$LINENO" 5
+  fi
+
+
+
+
+
+
+
+
+
+
+
+  gltests_libdeps=
+  gltests_ltlibdeps=
+
+
+
+
+
+
+
+
+
+  gl_source_base='gltests'
+  abs_aux_dir=`cd "$ac_aux_dir"; pwd`
+
+
+
+
+
+
+
+
+
+
+    REPLACE_ICONV=0;
+  REPLACE_ICONV_OPEN=0;
+  REPLACE_ICONV_UTF=0;
+  ICONV_H='';
+
+
+
+
+    gl_cv_c_multiarch=no
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+         not a universal capable compiler
+        #endif
+        typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+
+               arch=
+     prev=
+     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+       if test -n "$prev"; then
+         case $word in
+           i?86 | x86_64 | ppc | ppc64)
+             if test -z "$arch" || test "$arch" = "$word"; then
+               arch="$word"
+             else
+               gl_cv_c_multiarch=yes
+             fi
+             ;;
+         esac
+         prev=
+       else
+         if test "x$word" = "x-arch"; then
+           prev=arch
+         fi
+       fi
+     done
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test $gl_cv_c_multiarch = yes; then
+
+$as_echo "#define AA_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+    APPLE_UNIVERSAL_BUILD=1
+  else
+    APPLE_UNIVERSAL_BUILD=0
+  fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if test "${ac_cv_header_stdbool_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+         #include <stdbool.h>
+         #ifndef bool
+          "error: bool is not defined"
+         #endif
+         #ifndef false
+          "error: false is not defined"
+         #endif
+         #if false
+          "error: false is not 0"
+         #endif
+         #ifndef true
+          "error: true is not defined"
+         #endif
+         #if true != 1
+          "error: true is not 1"
+         #endif
+         #ifndef __bool_true_false_are_defined
+          "error: __bool_true_false_are_defined is not defined"
+         #endif
+
+         struct s { _Bool s: 1; _Bool t; } s;
+
+         char a[true == 1 ? 1 : -1];
+         char b[false == 0 ? 1 : -1];
+         char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+         char d[(bool) 0.5 == true ? 1 : -1];
+         bool e = &s;
+         char f[(_Bool) 0.0 == false ? 1 : -1];
+         char g[true];
+         char h[sizeof (_Bool)];
+         char i[sizeof s.t];
+         enum { j = false, k = true, l = false * true, m = true * 256 };
+         _Bool n[m];
+         char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+         char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+         #if defined __xlc__ || defined __GNUC__
+          /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+             reported by James Lemley on 2005-10-05; see
+             http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+             This test is not quite right, since xlc is allowed to
+             reject this program, as the initializer for xlcbug is
+             not one of the forms that C requires support for.
+             However, doing the test right would require a run-time
+             test, and that would make cross-compilation harder.
+             Let us hope that IBM fixes the xlc bug, and also adds
+             support for this kind of constant expression.  In the
+             meantime, this test will reject xlc, which is OK, since
+             our stdbool.h substitute should suffice.  We also test
+             this with GCC, where it should work, to detect more
+             quickly whether someone messes up the test in the
+             future.  */
+          char digs[] = "0123456789";
+          int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+         #endif
+         /* Catch a bug in an HP-UX C compiler.  See
+            http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+            http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+          */
+         _Bool q = true;
+         _Bool *pq = &q;
+
+int
+main ()
+{
+
+         *pq |= q;
+         *pq |= ! q;
+         /* Refer to every declared value, to avoid compiler optimizations.  */
+         return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                 + !m + !n + !o + !p + !q + !pq);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  ac_cv_header_stdbool_h=yes
+else
+  ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+   ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+   if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+   fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if test "${ac_cv_type_long_long_int+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* Test preprocessor.  */
+      #if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+        error in preprocessor;
+      #endif
+      #if ! (18446744073709551615ULL <= -1ull)
+        error in preprocessor;
+      #endif
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                    ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                    ? 1 : -1)];
+      int i = 63;
+int
+main ()
+{
+/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+             | (llmax / ll) | (llmax % ll)
+             | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+             | (ullmax / ull) | (ullmax % ull));
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+                       if test "$cross_compiling" = yes; then
+  ac_cv_type_long_long_int=yes
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+              #ifndef LLONG_MAX
+              # define HALF \
+                       (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+              # define LLONG_MAX (HALF - 1 + HALF)
+              #endif
+int
+main ()
+{
+long long int n = 1;
+              int i;
+              for (i = 0; ; i++)
+                {
+                  long long int m = n << i;
+                  if (m >> i != n)
+                    return 1;
+                  if (LLONG_MAX / 2 < m)
+                    break;
+                }
+              return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  ac_cv_type_long_long_int=yes
+else
+  ac_cv_type_long_long_int=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+else
+  ac_cv_type_long_long_int=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+  if test $ac_cv_type_long_long_int = yes; then
+
+$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* Test preprocessor.  */
+      #if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+        error in preprocessor;
+      #endif
+      #if ! (18446744073709551615ULL <= -1ull)
+        error in preprocessor;
+      #endif
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                    ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                    ? 1 : -1)];
+      int i = 63;
+int
+main ()
+{
+/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+             | (llmax / ll) | (llmax % ll)
+             | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+             | (ullmax / ull) | (ullmax % ull));
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  ac_cv_type_unsigned_long_long_int=yes
+else
+  ac_cv_type_unsigned_long_long_int=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+
+$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+  GNULIB_BTOWC=0;
+  GNULIB_WCTOB=0;
+  GNULIB_MBSINIT=0;
+  GNULIB_MBRTOWC=0;
+  GNULIB_MBRLEN=0;
+  GNULIB_MBSRTOWCS=0;
+  GNULIB_MBSNRTOWCS=0;
+  GNULIB_WCRTOMB=0;
+  GNULIB_WCSRTOMBS=0;
+  GNULIB_WCSNRTOMBS=0;
+  GNULIB_WCWIDTH=0;
+    HAVE_BTOWC=1;
+  HAVE_MBSINIT=1;
+  HAVE_MBRTOWC=1;
+  HAVE_MBRLEN=1;
+  HAVE_MBSRTOWCS=1;
+  HAVE_MBSNRTOWCS=1;
+  HAVE_WCRTOMB=1;
+  HAVE_WCSRTOMBS=1;
+  HAVE_WCSNRTOMBS=1;
+  HAVE_DECL_WCTOB=1;
+  HAVE_DECL_WCWIDTH=1;
+  REPLACE_MBSTATE_T=0;
+  REPLACE_BTOWC=0;
+  REPLACE_WCTOB=0;
+  REPLACE_MBSINIT=0;
+  REPLACE_MBRTOWC=0;
+  REPLACE_MBRLEN=0;
+  REPLACE_MBSRTOWCS=0;
+  REPLACE_MBSNRTOWCS=0;
+  REPLACE_WCRTOMB=0;
+  REPLACE_WCSRTOMBS=0;
+  REPLACE_WCSNRTOMBS=0;
+  REPLACE_WCWIDTH=0;
+  WCHAR_H='';
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if test "${gt_cv_c_wint_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+       wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gt_cv_c_wint_t=yes
+else
+  gt_cv_c_wint_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+  if test $gt_cv_c_wint_t = yes; then
+
+$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if test "${am_cv_langinfo_codeset+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET); return !cs;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  am_cv_langinfo_codeset=yes
+else
+  am_cv_langinfo_codeset=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+  if test $am_cv_langinfo_codeset = yes; then
+
+$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+
+  fi
+
+
+   if true; then
+  GL_COND_LIBTOOL_TRUE=
+  GL_COND_LIBTOOL_FALSE='#'
+else
+  GL_COND_LIBTOOL_TRUE='#'
+  GL_COND_LIBTOOL_FALSE=
+fi
+
+  gl_cond_libtool=true
+
+
+
+
+
+
+
+
+
+  gl_source_base='lib/gl'
+
+
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if test "${am_cv_func_iconv_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+            am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      if test "$cross_compiling" = yes; then
+  case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  am_cv_func_iconv_works=yes
+else
+  am_cv_func_iconv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+
+
+
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+    if test "${am_cv_proto_iconv+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  am_cv_proto_iconv_arg1=""
+else
+  am_cv_proto_iconv_arg1="const"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+    am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
+         }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+         }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+  fi
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_iconv_h='<'iconv.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <iconv.h>" >&5
+$as_echo_n "checking absolute name of <iconv.h>... " >&6; }
+if test "${gl_cv_next_iconv_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_iconv_h = yes; then
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <iconv.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_iconv_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/iconv.h#{
+                s#.*"\(.*/iconv.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_iconv_h='<'iconv.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_iconv_h" >&5
+$as_echo "$gl_cv_next_iconv_h" >&6; }
+     fi
+     NEXT_ICONV_H=$gl_cv_next_iconv_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'iconv.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_iconv_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_ICONV_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+  if test "$am_cv_func_iconv" = yes; then
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+      #include <iconv.h>
+      #if defined _LIBICONV_VERSION || defined __GLIBC__
+       gnu_iconv
+      #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "gnu_iconv" >/dev/null 2>&1; then
+  gl_func_iconv_gnu=yes
+else
+  gl_func_iconv_gnu=no
+fi
+rm -f conftest*
+
+    if test $gl_func_iconv_gnu = no; then
+      iconv_flavor=
+      case "$host_os" in
+        aix*)  iconv_flavor=ICONV_FLAVOR_AIX ;;
+        irix*) iconv_flavor=ICONV_FLAVOR_IRIX ;;
+        hpux*) iconv_flavor=ICONV_FLAVOR_HPUX ;;
+        osf*)  iconv_flavor=ICONV_FLAVOR_OSF ;;
+      esac
+      if test -n "$iconv_flavor"; then
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_FLAVOR $iconv_flavor
+_ACEOF
+
+
+
+
+  ICONV_H='iconv.h'
+
+  REPLACE_ICONV_OPEN=1
+
+
+
+
+
+
+
+
+  lgl_LIBOBJS="$lgl_LIBOBJS iconv_open.$ac_objext"
+
+
+      fi
+    fi
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc/ld supports -Wl,--output-def" >&5
+$as_echo_n "checking if gcc/ld supports -Wl,--output-def... " >&6; }
+if test "${gl_cv_ld_output_def+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test "$enable_shared" = no; then
+       gl_cv_ld_output_def="not needed, shared libraries are disabled"
+     else
+       gl_ldflags_save=$LDFLAGS
+       LDFLAGS="-Wl,--output-def,conftest.def"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  gl_cv_ld_output_def=yes
+else
+  gl_cv_ld_output_def=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       rm -f conftest.def
+       LDFLAGS="$gl_ldflags_save"
+     fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_ld_output_def" >&5
+$as_echo "$gl_cv_ld_output_def" >&6; }
+   if test "x$gl_cv_ld_output_def" = "xyes"; then
+  HAVE_LD_OUTPUT_DEF_TRUE=
+  HAVE_LD_OUTPUT_DEF_FALSE='#'
+else
+  HAVE_LD_OUTPUT_DEF_TRUE='#'
+  HAVE_LD_OUTPUT_DEF_FALSE=
+fi
+
+
+
+  # Check whether --enable-ld-version-script was given.
+if test "${enable_ld_version_script+set}" = set; then
+  enableval=$enable_ld_version_script; have_ld_version_script=$enableval
+fi
+
+  if test -z "$have_ld_version_script"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if LD -Wl,--version-script works" >&5
+$as_echo_n "checking if LD -Wl,--version-script works... " >&6; }
+    save_LDFLAGS="$LDFLAGS"
+    LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
+    cat > conftest.map <<EOF
+VERS_1 {
+       global: sym;
+};
+
+VERS_2 {
+        global: sym;
+} VERS_1;
+EOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  have_ld_version_script=yes
+else
+  have_ld_version_script=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    rm -f conftest.map
+    LDFLAGS="$save_LDFLAGS"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ld_version_script" >&5
+$as_echo "$have_ld_version_script" >&6; }
+  fi
+   if test "$have_ld_version_script" = "yes"; then
+  HAVE_LD_VERSION_SCRIPT_TRUE=
+  HAVE_LD_VERSION_SCRIPT_FALSE='#'
+else
+  HAVE_LD_VERSION_SCRIPT_TRUE='#'
+  HAVE_LD_VERSION_SCRIPT_FALSE=
+fi
+
+
+
+
+  CFLAG_VISIBILITY=
+  HAVE_VISIBILITY=0
+  if test -n "$GCC"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5
+$as_echo_n "checking for simple visibility declarations... " >&6; }
+    if test "${gl_cv_cc_visibility+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -fvisibility=hidden"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+         extern __attribute__((__visibility__("default"))) int exportedvar;
+         extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+         extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gl_cv_cc_visibility=yes
+else
+  gl_cv_cc_visibility=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+      CFLAGS="$gl_save_CFLAGS"
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5
+$as_echo "$gl_cv_cc_visibility" >&6; }
+    if test $gl_cv_cc_visibility = yes; then
+      CFLAG_VISIBILITY="-fvisibility=hidden"
+      HAVE_VISIBILITY=1
+    fi
+  fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_VISIBILITY $HAVE_VISIBILITY
+_ACEOF
+
+
+
+
+
+
+  # Define two additional variables used in the Makefile substitution.
+
+  if test "$ac_cv_header_stdbool_h" = yes; then
+    STDBOOL_H=''
+  else
+    STDBOOL_H='stdbool.h'
+  fi
+
+
+  if test "$ac_cv_type__Bool" = yes; then
+    HAVE__BOOL=1
+  else
+    HAVE__BOOL=0
+  fi
+
+
+
+
+
+  if test $ac_cv_type_long_long_int = yes; then
+    HAVE_LONG_LONG_INT=1
+  else
+    HAVE_LONG_LONG_INT=0
+  fi
+
+
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    HAVE_UNSIGNED_LONG_LONG_INT=1
+  else
+    HAVE_UNSIGNED_LONG_LONG_INT=0
+  fi
+
+
+      if test $ac_cv_header_inttypes_h = yes; then
+    HAVE_INTTYPES_H=1
+  else
+    HAVE_INTTYPES_H=0
+  fi
+
+
+      if test $ac_cv_header_sys_types_h = yes; then
+    HAVE_SYS_TYPES_H=1
+  else
+    HAVE_SYS_TYPES_H=0
+  fi
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_stdint_h='<'stdint.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
+$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
+if test "${gl_cv_next_stdint_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_stdint_h = yes; then
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/stdint.h#{
+                s#.*"\(.*/stdint.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_stdint_h='<'stdint.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5
+$as_echo "$gl_cv_next_stdint_h" >&6; }
+     fi
+     NEXT_STDINT_H=$gl_cv_next_stdint_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'stdint.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_stdint_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
+
+
+
+  if test $ac_cv_header_stdint_h = yes; then
+    HAVE_STDINT_H=1
+  else
+    HAVE_STDINT_H=0
+  fi
+
+
+    if test $ac_cv_header_stdint_h = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
+$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
+if test "${gl_cv_header_working_stdint_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  gl_cv_header_working_stdint_h=no
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+struct s {
+  int check_PTRDIFF:
+      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+      ? 1 : -1;
+  /* Detect bug in FreeBSD 6.0 / ia64.  */
+  int check_SIG_ATOMIC:
+      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+      ? 1 : -1;
+  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+  int check_WCHAR:
+      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+      ? 1 : -1;
+  /* Detect bug in mingw.  */
+  int check_WINT:
+      WINT_MIN == TYPE_MINIMUM (wint_t)
+      && WINT_MAX == TYPE_MAXIMUM (wint_t)
+      ? 1 : -1;
+
+  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
+  int check_UINT8_C:
+        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+  int check_UINT16_C:
+        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
+#ifdef UINT8_MAX
+  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+                                                    if test "$cross_compiling" = yes; then
+                 gl_cv_header_working_stdint_h=yes
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+  {
+#ifdef INT8_MAX
+    MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+    MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+    MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+    MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+    MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+    MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+    MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+    MVAL (UINT64_MAX),
+#endif
+    NULL
+  };
+
+int
+main ()
+{
+
+  const char **mv;
+  for (mv = macro_values; *mv != NULL; mv++)
+    {
+      const char *value = *mv;
+      /* Test whether it looks like a cast expression.  */
+      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+          || strncmp (value, "((int)"/*)*/, 6) == 0
+          || strncmp (value, "((signed short)"/*)*/, 15) == 0
+          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+        return 1;
+    }
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then
+  gl_cv_header_working_stdint_h=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5
+$as_echo "$gl_cv_header_working_stdint_h" >&6; }
+  fi
+  if test "$gl_cv_header_working_stdint_h" = yes; then
+    STDINT_H=
+  else
+            for ac_header in sys/inttypes.h sys/bitypes.h
+do
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_sys_inttypes_h = yes; then
+      HAVE_SYS_INTTYPES_H=1
+    else
+      HAVE_SYS_INTTYPES_H=0
+    fi
+
+    if test $ac_cv_header_sys_bitypes_h = yes; then
+      HAVE_SYS_BITYPES_H=1
+    else
+      HAVE_SYS_BITYPES_H=0
+    fi
+
+
+
+
+
+
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>"; then
+  :
+else
+  result=unknown
+fi
+
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+  fi
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result"        "
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+#include <limits.h>"; then
+  :
+else
+  result=unknown
+fi
+
+       eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+                                                result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+
+
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
+$as_echo_n "checking whether $gltype is signed... " >&6; }
+if { as_var=gl_cv_type_${gltype}_signed; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  result=yes
+else
+  result=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+eval ac_res=\$gl_cv_type_${gltype}_signed
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    eval result=\$gl_cv_type_${gltype}_signed
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    if test "$result" = yes; then
+      cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGNED_${GLTYPE} 1
+_ACEOF
+
+      eval HAVE_SIGNED_${GLTYPE}=1
+    else
+      eval HAVE_SIGNED_${GLTYPE}=0
+    fi
+  done
+
+
+  gl_cv_type_ptrdiff_t_signed=yes
+  gl_cv_type_size_t_signed=no
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+  for gltype in ptrdiff_t size_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)  gltype1='long int';;
+           ll) gltype1='long long int';;
+           i64)        gltype1='__int64';;
+           u)  gltype1='unsigned int';;
+           ul) gltype1='unsigned long int';;
+           ull)        gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+  fi
+
+
+  for gltype in sig_atomic_t wchar_t wint_t ; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)  gltype1='long int';;
+           ll) gltype1='long long int';;
+           i64)        gltype1='__int64';;
+           u)  gltype1='unsigned int';;
+           ul) gltype1='unsigned long int';;
+           ull)        gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+
+              extern $gltype foo;
+              extern $gltype1 foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  eval gl_cv_type_${gltype}_suffix=\$glsuf
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+  done
+
+
+
+    STDINT_H=stdint.h
+  fi
+
+
+  if test $gl_cond_libtool = false; then
+    gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV"
+    gl_libdeps="$gl_libdeps $LIBICONV"
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  for ac_func in strverscmp
+do
+  ac_fn_c_check_func "$LINENO" "strverscmp" "ac_cv_func_strverscmp"
+if test "x$ac_cv_func_strverscmp" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRVERSCMP 1
+_ACEOF
+
+else
+
+    lgl_LIBOBJS="$lgl_LIBOBJS $ac_func.$ac_objext"
+
+fi
+done
+
+
+  if test $ac_cv_func_strverscmp = no; then
+
+  :
+
+    HAVE_STRVERSCMP=0
+  fi
+
+
+
+  GNULIB_STRVERSCMP=1
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <wchar.h> is standalone" >&5
+$as_echo_n "checking whether <wchar.h> is standalone... " >&6; }
+if test "${gl_cv_header_wchar_h_standalone+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+wchar_t w;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gl_cv_header_wchar_h_standalone=yes
+else
+  gl_cv_header_wchar_h_standalone=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_wchar_h_standalone" >&5
+$as_echo "$gl_cv_header_wchar_h_standalone" >&6; }
+
+
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+
+
+  if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes; then
+    WCHAR_H=wchar.h
+  fi
+
+
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_wchar_h='<'wchar.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wchar.h>" >&5
+$as_echo_n "checking absolute name of <wchar.h>... " >&6; }
+if test "${gl_cv_next_wchar_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+         if test $ac_cv_header_wchar_h = yes; then
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <wchar.h>
+
+_ACEOF
+                                                                   case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+                                   gl_cv_next_wchar_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+              sed -n '\#/wchar.h#{
+                s#.*"\(.*/wchar.h\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'
+         else
+           gl_cv_next_wchar_h='<'wchar.h'>'
+         fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wchar_h" >&5
+$as_echo "$gl_cv_next_wchar_h" >&6; }
+     fi
+     NEXT_WCHAR_H=$gl_cv_next_wchar_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'wchar.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_wchar_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_WCHAR_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+
+  gltests_libdeps=
+  gltests_ltlibdeps=
+
+
+
+
+
+
+
+
+
+  gl_source_base='lib/gltests'
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a traditional french locale" >&5
+$as_echo_n "checking for a traditional french locale... " >&6; }
+if test "${gt_cv_locale_fr+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the usual locale name.
+      if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_fr=fr_FR
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_fr=fr_FR.ISO-8859-1
+        else
+          # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+          if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR.ISO8859-1
+          else
+            # Test for the HP-UX locale name.
+            if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.iso88591
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr
+              else
+                # None found.
+                gt_cv_locale_fr=none
+              fi
+            fi
+          fi
+        fi
+      fi
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fr" >&5
+$as_echo "$gt_cv_locale_fr" >&6; }
+  LOCALE_FR=$gt_cv_locale_fr
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a turkish Unicode locale" >&5
+$as_echo_n "checking for a turkish Unicode locale... " >&6; }
+if test "${gt_cv_locale_tr_utf8+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  But BeOS does not
+     implement the Turkish upper-/lowercase mappings.  Therefore, let this
+     program return 1 on BeOS.  */
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the eighth month, the second
+     character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f)
+    return 1;
+  /* Check whether the upper-/lowercase mappings are as expected for
+     Turkish.  */
+  if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i'
+      || towupper(0x0131) != 'I' || towlower ('I') != 0x0131)
+    return 1;
+  return 0;
+}
+
+_ACEOF
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the usual locale name.
+      if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_tr_utf8=tr_TR
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_tr_utf8=tr_TR.UTF-8
+        else
+          # Test for the Solaris 7 locale name.
+          if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_tr_utf8=tr.UTF-8
+          else
+            # None found.
+            gt_cv_locale_tr_utf8=none
+          fi
+        fi
+      fi
+    else
+      gt_cv_locale_tr_utf8=none
+    fi
+    rm -fr conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_tr_utf8" >&5
+$as_echo "$gt_cv_locale_tr_utf8" >&6; }
+  LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if test "${gt_cv_c_wchar_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stddef.h>
+       wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gt_cv_c_wchar_t=yes
+else
+  gt_cv_c_wchar_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+  if test $gt_cv_c_wchar_t = yes; then
+
+$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if test "${gt_cv_c_wint_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+       wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then
+  gt_cv_c_wint_t=yes
+else
+  gt_cv_c_wint_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+  if test $gt_cv_c_wint_t = yes; then
+
+$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+
+  fi
+
+
+
+
+
+
+
+
+  LIBTESTS_LIBDEPS="$gltests_libdeps"
+
+
+
+# Check if locale stuff works
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if test "${am_cv_langinfo_codeset+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET); return !cs;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  am_cv_langinfo_codeset=yes
+else
+  am_cv_langinfo_codeset=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+  if test $am_cv_langinfo_codeset = yes; then
+
+$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+
+  fi
+
+
+# Make it possible to disable TLD code.
+# Check whether --enable-tld was given.
+if test "${enable_tld+set}" = set; then
+  enableval=$enable_tld; enable_tld=$enableval
+else
+  enable_tld=yes
+fi
+
+ if test "$enable_tld" != "no"; then
+  TLD_TRUE=
+  TLD_FALSE='#'
+else
+  TLD_TRUE='#'
+  TLD_FALSE=
+fi
+
+if test "$enable_tld" != "no"; then
+
+$as_echo "#define WITH_TLD 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if TLD API for specific TLD rules should be built" >&5
+$as_echo_n "checking if TLD API for specific TLD rules should be built... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_tld" >&5
+$as_echo "$enable_tld" >&6; }
+
+# Check for gtk-doc.
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=0.9.0
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               PKG_CONFIG=""
+       fi
+
+fi
+
+
+    # Extract the first word of "gtkdoc-check", so it can be a program name with args.
+set dummy gtkdoc-check; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GTKDOC_CHECK+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $GTKDOC_CHECK in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK
+if test -n "$GTKDOC_CHECK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5
+$as_echo "$GTKDOC_CHECK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  for ac_prog in gtkdoc-rebase
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GTKDOC_REBASE+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $GTKDOC_REBASE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE
+if test -n "$GTKDOC_REBASE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5
+$as_echo "$GTKDOC_REBASE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$GTKDOC_REBASE" && break
+done
+test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true"
+
+  # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args.
+set dummy gtkdoc-mkpdf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GTKDOC_MKPDF+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $GTKDOC_MKPDF in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF
+if test -n "$GTKDOC_MKPDF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5
+$as_echo "$GTKDOC_MKPDF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+# Check whether --with-html-dir was given.
+if test "${with_html_dir+set}" = set; then
+  withval=$with_html_dir;
+else
+  with_html_dir='${datadir}/gtk-doc/html'
+fi
+
+  HTML_DIR="$with_html_dir"
+
+
+    # Check whether --enable-gtk-doc was given.
+if test "${enable_gtk_doc+set}" = set; then
+  enableval=$enable_gtk_doc;
+else
+  enable_gtk_doc=no
+fi
+
+
+  if test x$enable_gtk_doc = xyes; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.1") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  :
+else
+  as_fn_error "You need to have gtk-doc >= 1.1 installed to build $PACKAGE_NAME" "$LINENO" 5
+fi
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5
+$as_echo_n "checking whether to build gtk-doc documentation... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5
+$as_echo "$enable_gtk_doc" >&6; }
+
+    # Check whether --enable-gtk-doc-html was given.
+if test "${enable_gtk_doc_html+set}" = set; then
+  enableval=$enable_gtk_doc_html;
+else
+  enable_gtk_doc_html=yes
+fi
+
+    # Check whether --enable-gtk-doc-pdf was given.
+if test "${enable_gtk_doc_pdf+set}" = set; then
+  enableval=$enable_gtk_doc_pdf;
+else
+  enable_gtk_doc_pdf=no
+fi
+
+
+  if test -n "$GTKDOC_MKPDF"; then
+    enable_gtk_doc_pdf=no
+  fi
+
+
+   if test x$enable_gtk_doc = xyes; then
+  ENABLE_GTK_DOC_TRUE=
+  ENABLE_GTK_DOC_FALSE='#'
+else
+  ENABLE_GTK_DOC_TRUE='#'
+  ENABLE_GTK_DOC_FALSE=
+fi
+
+   if test x$enable_gtk_doc_html = xyes; then
+  GTK_DOC_BUILD_HTML_TRUE=
+  GTK_DOC_BUILD_HTML_FALSE='#'
+else
+  GTK_DOC_BUILD_HTML_TRUE='#'
+  GTK_DOC_BUILD_HTML_FALSE=
+fi
+
+   if test x$enable_gtk_doc_pdf = xyes; then
+  GTK_DOC_BUILD_PDF_TRUE=
+  GTK_DOC_BUILD_PDF_FALSE='#'
+else
+  GTK_DOC_BUILD_PDF_TRUE='#'
+  GTK_DOC_BUILD_PDF_FALSE=
+fi
+
+   if test -n "$LIBTOOL"; then
+  GTK_DOC_USE_LIBTOOL_TRUE=
+  GTK_DOC_USE_LIBTOOL_FALSE='#'
+else
+  GTK_DOC_USE_LIBTOOL_TRUE='#'
+  GTK_DOC_USE_LIBTOOL_FALSE=
+fi
+
+   if test -n "$GTKDOC_REBASE"; then
+  GTK_DOC_USE_REBASE_TRUE=
+  GTK_DOC_USE_REBASE_FALSE='#'
+else
+  GTK_DOC_USE_REBASE_TRUE='#'
+  GTK_DOC_USE_REBASE_FALSE=
+fi
+
+
+
+# Check for java
+# Check whether --enable-java was given.
+if test "${enable_java+set}" = set; then
+  enableval=$enable_java;
+else
+  enable_java=no
+fi
+
+
+for ac_prog in gcj
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_GCJ+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GCJ"; then
+  ac_cv_prog_GCJ="$GCJ" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_GCJ="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GCJ=$ac_cv_prog_GCJ
+if test -n "$GCJ"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCJ" >&5
+$as_echo "$GCJ" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$GCJ" && break
+done
+test -n "$GCJ" || GCJ="gcj"
+
+test -z "$GCJ" && as_fn_error "no acceptable gcj found in \$PATH" "$LINENO" 5
+if test "x${GCJFLAGS-unset}" = xunset; then
+   GCJFLAGS="-g -O2"
+fi
+
+
+depcc="$GCJ"  am_compiler_list='gcc3 gcc'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_GCJ_dependencies_compiler_type+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_GCJ_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_GCJ_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_GCJ_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_GCJ_dependencies_compiler_type" >&5
+$as_echo "$am_cv_GCJ_dependencies_compiler_type" >&6; }
+GCJDEPMODE=depmode=$am_cv_GCJ_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_GCJ_dependencies_compiler_type" = gcc3; then
+  am__fastdepGCJ_TRUE=
+  am__fastdepGCJ_FALSE='#'
+else
+  am__fastdepGCJ_TRUE='#'
+  am__fastdepGCJ_FALSE=
+fi
+
+
+
+for ac_prog in gcj
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_GCJ+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GCJ"; then
+  ac_cv_prog_GCJ="$GCJ" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_GCJ="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GCJ=$ac_cv_prog_GCJ
+if test -n "$GCJ"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCJ" >&5
+$as_echo "$GCJ" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$GCJ" && break
+done
+test -n "$GCJ" || GCJ="gcj"
+
+test -z "$GCJ" && as_fn_error "no acceptable gcj found in \$PATH" "$LINENO" 5
+if test "x${GCJFLAGS-unset}" = xunset; then
+   GCJFLAGS="-g -O2"
+fi
+
+
+depcc="$GCJ"  am_compiler_list='gcc3 gcc'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_GCJ_dependencies_compiler_type+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_GCJ_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_GCJ_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_GCJ_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_GCJ_dependencies_compiler_type" >&5
+$as_echo "$am_cv_GCJ_dependencies_compiler_type" >&6; }
+GCJDEPMODE=depmode=$am_cv_GCJ_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_GCJ_dependencies_compiler_type" = gcc3; then
+  am__fastdepGCJ_TRUE=
+  am__fastdepGCJ_FALSE='#'
+else
+  am__fastdepGCJ_TRUE='#'
+  am__fastdepGCJ_FALSE=
+fi
+
+
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+LD_GCJ="$LD"
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:18831: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:18835: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+  lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_GCJ='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_GCJ='-fPIC'
+       ;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_GCJ=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_GCJ='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+       lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_GCJ='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+       lt_prog_compiler_wl_GCJ='-Wl,'
+       lt_prog_compiler_pic_GCJ='-KPIC'
+       lt_prog_compiler_static_GCJ='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       lt_prog_compiler_wl_GCJ='-Wl,'
+       lt_prog_compiler_pic_GCJ='-fPIC'
+       lt_prog_compiler_static_GCJ='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       lt_prog_compiler_wl_GCJ='-Wl,'
+       lt_prog_compiler_pic_GCJ='--shared'
+       lt_prog_compiler_static_GCJ='--static'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       lt_prog_compiler_wl_GCJ='-Wl,'
+       lt_prog_compiler_pic_GCJ='-fpic'
+       lt_prog_compiler_static_GCJ='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      xl*)
+       # IBM XL C 8.0/Fortran 10.1 on PPC
+       lt_prog_compiler_wl_GCJ='-Wl,'
+       lt_prog_compiler_pic_GCJ='-qpic'
+       lt_prog_compiler_static_GCJ='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C 5.9
+         lt_prog_compiler_pic_GCJ='-KPIC'
+         lt_prog_compiler_static_GCJ='-Bstatic'
+         lt_prog_compiler_wl_GCJ='-Wl,'
+         ;;
+       *Sun\ F*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         lt_prog_compiler_pic_GCJ='-KPIC'
+         lt_prog_compiler_static_GCJ='-Bstatic'
+         lt_prog_compiler_wl_GCJ=''
+         ;;
+       esac
+       ;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_GCJ='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+       lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+      *)
+       lt_prog_compiler_wl_GCJ='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic_GCJ='-Kconform_pic'
+       lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_GCJ" >&5
+$as_echo "$lt_prog_compiler_pic_GCJ" >&6; }
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_GCJ=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:19164: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:19168: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_GCJ=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_GCJ=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_GCJ=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_GCJ" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then
+    :
+else
+    lt_prog_compiler_static_GCJ=
+fi
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:19263: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:19267: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; }
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:19315: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:19319: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  always_export_symbols_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  compiler_needs_object_GCJ=no
+  enable_shared_with_static_runtimes_GCJ=no
+  export_dynamic_flag_spec_GCJ=
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic_GCJ=no
+  hardcode_direct_GCJ=no
+  hardcode_direct_absolute_GCJ=no
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  inherit_rpath_GCJ=no
+  link_all_deplibs_GCJ=unknown
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  old_archive_from_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  thread_safe_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_GCJ=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_GCJ=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs_GCJ=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds_GCJ=''
+        ;;
+      m68k)
+            archive_cmds_GCJ='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec_GCJ='-L$libdir'
+            hardcode_minus_L_GCJ=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag_GCJ=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95*)       # Portland Group f77 and f90 compilers
+         whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         whole_archive_flag_spec_GCJ=
+         tmp_sharedflag='--shared' ;;
+       xl[cC]*)                        # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object_GCJ=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds_GCJ='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+       case $cc_basename in
+       xlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         whole_archive_flag_spec_GCJ='--whole-archive$convenience --no-whole-archive'
+         hardcode_libdir_flag_spec_GCJ=
+         hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+         archive_cmds_GCJ='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           archive_expsym_cmds_GCJ='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       ld_shlibs_GCJ=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+       ld_shlibs_GCJ=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+           archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           ld_shlibs_GCJ=no
+         fi
+       ;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_GCJ=
+      export_dynamic_flag_spec_GCJ=
+      whole_archive_flag_spec_GCJ=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_GCJ=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct_GCJ=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+         export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+         ;;
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_direct_absolute_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+      file_list_spec_GCJ='${wl}-f,'
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[012]|aix4.[012].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         :
+         else
+         # We have old collect2
+         hardcode_direct_GCJ=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L_GCJ=yes
+         hardcode_libdir_flag_spec_GCJ='-L$libdir'
+         hardcode_libdir_separator_GCJ=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
+
+      export_dynamic_flag_spec_GCJ='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_GCJ=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag_GCJ='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds_GCJ='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag_GCJ="-z nodefs"
+         archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag_GCJ=' ${wl}-bernotok'
+         allow_undefined_flag_GCJ=' ${wl}-berok'
+         # Exported symbols can be pulled into shared objects from archives
+         whole_archive_flag_spec_GCJ='$convenience'
+         archive_cmds_need_lc_GCJ=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds_GCJ=''
+        ;;
+      m68k)
+            archive_cmds_GCJ='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec_GCJ='-L$libdir'
+            hardcode_minus_L_GCJ=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ=' '
+      allow_undefined_flag_GCJ=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_from_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc_GCJ=no
+  hardcode_direct_GCJ=no
+  hardcode_automatic_GCJ=yes
+  hardcode_shlibpath_var_GCJ=unsupported
+  whole_archive_flag_spec_GCJ=''
+  link_all_deplibs_GCJ=yes
+  allow_undefined_flag_GCJ="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=echo
+    archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs_GCJ=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds_GCJ='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+       hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+       hardcode_libdir_separator_GCJ=:
+       hardcode_direct_GCJ=yes
+       hardcode_direct_absolute_GCJ=yes
+       export_dynamic_flag_spec_GCJ='${wl}-E'
+       # hardcode_minus_L: Not really in the search PATH,
+       # but as the default location of the library.
+       hardcode_minus_L_GCJ=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator_GCJ=:
+
+       case $host_cpu in
+       hppa*64*|ia64*)
+         hardcode_direct_GCJ=no
+         hardcode_shlibpath_var_GCJ=no
+         ;;
+       *)
+         hardcode_direct_GCJ=yes
+         hardcode_direct_absolute_GCJ=yes
+         export_dynamic_flag_spec_GCJ='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L_GCJ=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo(void) {}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then
+  archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        LDFLAGS="$save_LDFLAGS"
+      else
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc_GCJ='no'
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      inherit_rpath_GCJ=yes
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       hardcode_direct_GCJ=yes
+       hardcode_shlibpath_var_GCJ=no
+       hardcode_direct_absolute_GCJ=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+         export_dynamic_flag_spec_GCJ='${wl}-E'
+       else
+         case $host_os in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            hardcode_libdir_flag_spec_GCJ='-R$libdir'
+            ;;
+          *)
+            archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag_GCJ=' -expect_unresolved \*'
+       archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc_GCJ='no'
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag_GCJ=' -expect_unresolved \*'
+       archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      archive_cmds_need_lc_GCJ='no'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       archive_cmds_GCJ='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_GCJ='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         archive_expsym_cmds_GCJ='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         ;;
+       *)
+         wlarc='${wl}'
+         archive_cmds_GCJ='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds_GCJ='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_GCJ=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+         hardcode_direct_GCJ=no
+        ;;
+       motorola)
+         archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var_GCJ=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_GCJ='${wl}-z,text'
+      archive_cmds_need_lc_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag_GCJ='${wl}-z,text'
+      allow_undefined_flag_GCJ='${wl}-z,nodefs'
+      archive_cmds_need_lc_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='${wl}-R,$libdir'
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       export_dynamic_flag_spec_GCJ='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_GCJ" >&5
+$as_echo "$ld_shlibs_GCJ" >&6; }
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+with_gnu_ld_GCJ=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+      $RM conftest*
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+       pic_flag=$lt_prog_compiler_pic_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_GCJ 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+        then
+         archive_cmds_need_lc_GCJ=no
+        else
+         archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $RM conftest*
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_GCJ" >&5
+$as_echo "$archive_cmds_need_lc_GCJ" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" ||
+   test -n "$runpath_var_GCJ" ||
+   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct_GCJ" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_GCJ" >&5
+$as_echo "$hardcode_action_GCJ" >&6; }
+
+if test "$hardcode_action_GCJ" = relink ||
+   test "$inherit_rpath_GCJ" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+GCC=$lt_save_GCC
+CC="$lt_save_CC"
+
+if test "$enable_java" != "no"; then
+
+
+if test "x$JAVAPREFIX" = x; then
+        test "x$JAR" = x && for ac_prog in jar$EXEEXT
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_JAR+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAR"; then
+  ac_cv_prog_JAR="$JAR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_JAR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAR=$ac_cv_prog_JAR
+if test -n "$JAR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5
+$as_echo "$JAR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$JAR" && break
+done
+
+else
+        test "x$JAR" = x && for ac_prog in jar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_JAR+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$JAR"; then
+  ac_cv_prog_JAR="$JAR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_JAR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+JAR=$ac_cv_prog_JAR
+if test -n "$JAR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5
+$as_echo "$JAR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$JAR" && break
+done
+test -n "$JAR" || JAR="$JAVAPREFIX"
+
+fi
+test "x$JAR" = x && as_fn_error "no acceptable jar program found in \$PATH" "$LINENO" 5
+
+
+GJDOC=${GJDOC-"${am_missing_run}gjdoc"}
+
+fi
+ if test "$enable_java" != "no"; then
+  JAVA_TRUE=
+  JAVA_FALSE='#'
+else
+  JAVA_TRUE='#'
+  JAVA_FALSE=
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if implementation in Java should be built" >&5
+$as_echo_n "checking if implementation in Java should be built... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_java" >&5
+$as_echo "$enable_java" >&6; }
+
+# Check for C#
+ if test -n "$HAVE_CSHARPCOMP"; then
+  CSHARP_TRUE=
+  CSHARP_FALSE='#'
+else
+  CSHARP_TRUE='#'
+  CSHARP_FALSE=
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if implementation in C# should be built" >&5
+$as_echo_n "checking if implementation in C# should be built... " >&6; }
+if test -n "$HAVE_CSHARPCOMP"; then
+  enable_csharp=yes
+else
+  enable_csharp=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_csharp" >&5
+$as_echo "$enable_csharp" >&6; }
+
+
+  # Run self-tests under valgrind?
+  if test "$cross_compiling" = no; then
+    for ac_prog in valgrind
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_VALGRIND+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$VALGRIND"; then
+  ac_cv_prog_VALGRIND="$VALGRIND" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_VALGRIND="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+VALGRIND=$ac_cv_prog_VALGRIND
+if test -n "$VALGRIND"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5
+$as_echo "$VALGRIND" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$VALGRIND" && break
+done
+
+  fi
+  if test -n "$VALGRIND" && $VALGRIND true > /dev/null 2>&1; then
+    opt_valgrind_tests=yes
+  else
+    opt_valgrind_tests=no
+    VALGRIND=
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether self tests are run under valgrind" >&5
+$as_echo_n "checking whether self tests are run under valgrind... " >&6; }
+  # Check whether --enable-valgrind-tests was given.
+if test "${enable_valgrind_tests+set}" = set; then
+  enableval=$enable_valgrind_tests; opt_valgrind_tests=$enableval
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $opt_valgrind_tests" >&5
+$as_echo "$opt_valgrind_tests" >&6; }
+
+
+  # Update version number in lib/libtasn1.h.
+  if ! sed 's/_VERSION ".*"/_VERSION "'$PACKAGE_VERSION'"/' $srcdir/lib/stringprep.h > fixhdr.tmp; then
+    as_fn_error "*** Failed to update version number in $srcdir/lib/stringprep.h..." "$LINENO" 5
+  fi
+  if cmp -s $srcdir/lib/stringprep.h fixhdr.tmp 2>/dev/null; then
+    rm -f fixhdr.tmp
+  elif ! mv fixhdr.tmp $srcdir/lib/stringprep.h; then
+    as_fn_error "*** Failed to move fixhdr.tmp to $srcdir/lib/stringprep.h..." "$LINENO" 5
+  fi
+
+
+# Check whether --enable-gcc-warnings was given.
+if test "${enable_gcc_warnings+set}" = set; then
+  enableval=$enable_gcc_warnings; case $enableval in
+     yes|no) ;;
+     *)      as_fn_error "bad value $enableval for gcc-warnings option" "$LINENO" 5 ;;
+   esac
+   gl_gcc_warnings=$enableval
+else
+  gl_gcc_warnings=no
+
+fi
+
+
+if test "$gl_gcc_warnings" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Werror" >&5
+$as_echo_n "checking whether compiler handles -Werror... " >&6; }
+if test "${gl_cv_warn__Werror+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Werror"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  gl_cv_warn__Werror=yes
+else
+  gl_cv_warn__Werror=no
+fi
+rm -f conftest.err conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Werror" >&5
+$as_echo "$gl_cv_warn__Werror" >&6; }
+if test "x$gl_cv_warn__Werror" = x""yes; then
+  as_fn_append WERROR_CFLAGS " -Werror"
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wframe-larger-than=80" >&5
+$as_echo_n "checking whether compiler handles -Wframe-larger-than=80... " >&6; }
+if test "${gl_cv_warn__Wframe_larger_than_80+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Wframe-larger-than=80"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  gl_cv_warn__Wframe_larger_than_80=yes
+else
+  gl_cv_warn__Wframe_larger_than_80=no
+fi
+rm -f conftest.err conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wframe_larger_than_80" >&5
+$as_echo "$gl_cv_warn__Wframe_larger_than_80" >&6; }
+if test "x$gl_cv_warn__Wframe_larger_than_80" = x""yes; then
+  as_fn_append WSTACK_CFLAGS " -Wframe-larger-than=80"
+fi
+
+
+  nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
+  nw="$nw -Wc++-compat"             # We don't care strongly about C++ compilers
+  nw="$nw -Woverlength-strings"     # Some of our strings are too large
+  nw="$nw -Wsign-conversion"        # Too many warnings for now
+  nw="$nw -Wconversion"             # Too many warnings for now
+  nw="$nw -Wtraditional"            # Warns on #elif which we use often
+  nw="$nw -Wtraditional-conversion" # Too many warnings for now
+  nw="$nw -Wmissing-noreturn"       # Too many warnings for now
+  nw="$nw -Wunreachable-code"       # Too many false positives
+  nw="$nw -Wlogical-op"             # Too many false positives
+
+
+ gl_manywarn_set=
+ for gl_manywarn_item in \
+   -Wall \
+   -W \
+   -Wformat-y2k \
+   -Wformat-nonliteral \
+   -Wformat-security \
+   -Winit-self \
+   -Wmissing-include-dirs \
+   -Wswitch-default \
+   -Wswitch-enum \
+   -Wunused \
+   -Wunknown-pragmas \
+   -Wstrict-aliasing \
+   -Wstrict-overflow \
+   -Wsystem-headers \
+   -Wfloat-equal \
+   -Wtraditional \
+   -Wtraditional-conversion \
+   -Wdeclaration-after-statement \
+   -Wundef \
+   -Wshadow \
+   -Wunsafe-loop-optimizations \
+   -Wpointer-arith \
+   -Wbad-function-cast \
+   -Wc++-compat \
+   -Wcast-qual \
+   -Wcast-align \
+   -Wwrite-strings \
+   -Wconversion \
+   -Wsign-conversion \
+   -Wlogical-op \
+   -Waggregate-return \
+   -Wstrict-prototypes \
+   -Wold-style-definition \
+   -Wmissing-prototypes \
+   -Wmissing-declarations \
+   -Wmissing-noreturn \
+   -Wmissing-format-attribute \
+   -Wpacked \
+   -Wpadded \
+   -Wredundant-decls \
+   -Wnested-externs \
+   -Wunreachable-code \
+   -Winline \
+   -Winvalid-pch \
+   -Wlong-long \
+   -Wvla \
+   -Wvolatile-register-var \
+   -Wdisabled-optimization \
+   -Wstack-protector \
+   -Woverlength-strings \
+   -Wbuiltin-macro-redefined \
+   -Wmudflap \
+   -Wpacked-bitfield-compat \
+   -Wsync-nand \
+  ; do
+    gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+  done
+ # The following are not documented in the manual but are included in
+ # output from gcc --help=warnings.
+ for gl_manywarn_item in \
+   -Wattributes \
+   -Wcoverage-mismatch \
+   -Wmultichar \
+   -Wunused-macros \
+  ; do
+    gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+  done
+  ws=$gl_manywarn_set
+
+
+  gl_warn_set=
+  set x $ws; shift
+  for gl_warn_item
+  do
+    case " $nw " in
+      *" $gl_warn_item "*)
+        ;;
+      *)
+        gl_warn_set="$gl_warn_set $gl_warn_item"
+        ;;
+    esac
+  done
+  ws=$gl_warn_set
+
+  for w in $ws; do
+    as_gl_Warn=`$as_echo "gl_cv_warn_$w" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles $w" >&5
+$as_echo_n "checking whether compiler handles $w... " >&6; }
+if { as_var=$as_gl_Warn; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} $w"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  eval "$as_gl_Warn=yes"
+else
+  eval "$as_gl_Warn=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+fi
+eval ac_res=\$$as_gl_Warn
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+eval as_val=\$$as_gl_Warn
+   if test "x$as_val" = x""yes; then
+  as_fn_append WARN_CFLAGS " $w"
+fi
+
+  done
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -Wno-missing-field-initializers" >&5
+$as_echo_n "checking whether compiler handles -Wno-missing-field-initializers... " >&6; }
+if test "${gl_cv_warn__Wno_missing_field_initializers+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -Wno-missing-field-initializers"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  gl_cv_warn__Wno_missing_field_initializers=yes
+else
+  gl_cv_warn__Wno_missing_field_initializers=no
+fi
+rm -f conftest.err conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__Wno_missing_field_initializers" >&5
+$as_echo "$gl_cv_warn__Wno_missing_field_initializers" >&6; }
+if test "x$gl_cv_warn__Wno_missing_field_initializers" = x""yes; then
+  as_fn_append WARN_CFLAGS " -Wno-missing-field-initializers"
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler handles -fdiagnostics-show-option" >&5
+$as_echo_n "checking whether compiler handles -fdiagnostics-show-option... " >&6; }
+if test "${gl_cv_warn__fdiagnostics_show_option+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} -fdiagnostics-show-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then
+  gl_cv_warn__fdiagnostics_show_option=yes
+else
+  gl_cv_warn__fdiagnostics_show_option=no
+fi
+rm -f conftest.err conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn__fdiagnostics_show_option" >&5
+$as_echo "$gl_cv_warn__fdiagnostics_show_option" >&6; }
+if test "x$gl_cv_warn__fdiagnostics_show_option" = x""yes; then
+  as_fn_append WARN_CFLAGS " -fdiagnostics-show-option"
+fi
+
+fi
+
+ac_config_files="$ac_config_files Makefile libidn.pc csharp/Makefile contrib/doxygen/Doxyfile doc/Makefile doc/cyclo/Makefile doc/java/Makefile doc/reference/Makefile doc/specifications/Makefile doc/tld/Makefile examples/Makefile gl/Makefile gltests/Makefile java/Makefile java/gnu/Makefile java/gnu/inet/Makefile java/gnu/inet/encoding/Makefile java/misc/Makefile lib/Makefile lib/gl/Makefile lib/gltests/Makefile po/Makefile.in src/Makefile tests/Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+  as_fn_error "conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+    gl_libobjs=
+    gl_ltlibobjs=
+    if test -n "$gl_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        gl_libobjs="$gl_libobjs $i.$ac_objext"
+        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+      done
+    fi
+    gl_LIBOBJS=$gl_libobjs
+
+    gl_LTLIBOBJS=$gl_ltlibobjs
+
+
+
+    gltests_libobjs=
+    gltests_ltlibobjs=
+    if test -n "$gltests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+        gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+      done
+    fi
+    gltests_LIBOBJS=$gltests_libobjs
+
+    gltests_LTLIBOBJS=$gltests_ltlibobjs
+
+
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+  as_fn_error "conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_LD_OUTPUT_DEF_TRUE}" && test -z "${HAVE_LD_OUTPUT_DEF_FALSE}"; then
+  as_fn_error "conditional \"HAVE_LD_OUTPUT_DEF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_LD_VERSION_SCRIPT_TRUE}" && test -z "${HAVE_LD_VERSION_SCRIPT_FALSE}"; then
+  as_fn_error "conditional \"HAVE_LD_VERSION_SCRIPT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+    lgl_libobjs=
+    lgl_ltlibobjs=
+    if test -n "$lgl_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $lgl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        lgl_libobjs="$lgl_libobjs $i.$ac_objext"
+        lgl_ltlibobjs="$lgl_ltlibobjs $i.lo"
+      done
+    fi
+    lgl_LIBOBJS=$lgl_libobjs
+
+    lgl_LTLIBOBJS=$lgl_ltlibobjs
+
+
+
+    lgltests_libobjs=
+    lgltests_ltlibobjs=
+    if test -n "$lgltests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $lgltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        lgltests_libobjs="$lgltests_libobjs $i.$ac_objext"
+        lgltests_ltlibobjs="$lgltests_ltlibobjs $i.lo"
+      done
+    fi
+    lgltests_LIBOBJS=$lgltests_libobjs
+
+    lgltests_LTLIBOBJS=$lgltests_ltlibobjs
+
+
+if test -z "${TLD_TRUE}" && test -z "${TLD_FALSE}"; then
+  as_fn_error "conditional \"TLD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then
+  as_fn_error "conditional \"ENABLE_GTK_DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then
+  as_fn_error "conditional \"GTK_DOC_BUILD_HTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then
+  as_fn_error "conditional \"GTK_DOC_BUILD_PDF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then
+  as_fn_error "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then
+  as_fn_error "conditional \"GTK_DOC_USE_REBASE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepGCJ_TRUE}" && test -z "${am__fastdepGCJ_FALSE}"; then
+  as_fn_error "conditional \"am__fastdepGCJ\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepGCJ_TRUE}" && test -z "${am__fastdepGCJ_FALSE}"; then
+  as_fn_error "conditional \"am__fastdepGCJ\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${JAVA_TRUE}" && test -z "${JAVA_FALSE}"; then
+  as_fn_error "conditional \"JAVA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${CSHARP_TRUE}" && test -z "${CSHARP_FALSE}"; then
+  as_fn_error "conditional \"CSHARP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) set -o posix ;; #(
+  *) : ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$?; test $as_status -eq 0 && as_status=1
+  if test "$3"; then
+    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  fi
+  $as_echo "$as_me: error: $1" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit [STATUS=$?]
+# ----------------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  as_status=$?
+  set +e
+  as_fn_set_status ${1-$as_status}
+  exit ${1-$as_status}
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #((((
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by GNU Libidn $as_me 1.15, which was
+generated by GNU Autoconf 2.63b.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_links="$ac_config_links"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTION]... [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration links:
+$config_links
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: <http://www.gnu.org/software/libidn/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+GNU Libidn config.status 1.15
+configured by $0, generated by GNU Autoconf 2.63b,
+  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
+macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
+enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
+host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
+host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
+host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
+build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
+build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
+build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
+SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
+Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
+GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
+EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
+FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
+LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
+NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
+LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
+exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
+AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
+STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
+compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
+GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
+objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
+SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
+ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
+need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
+LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
+libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
+need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
+version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
+striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
+LD_GCJ='`$ECHO "X$LD_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_cmds_GCJ='`$ECHO "X$old_archive_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_GCJ='`$ECHO "X$compiler_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+GCC_GCJ='`$ECHO "X$GCC_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_GCJ='`$ECHO "X$lt_prog_compiler_no_builtin_flag_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_GCJ='`$ECHO "X$lt_prog_compiler_wl_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_GCJ='`$ECHO "X$lt_prog_compiler_pic_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+lt_prog_compiler_static_GCJ='`$ECHO "X$lt_prog_compiler_static_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_GCJ='`$ECHO "X$lt_cv_prog_compiler_c_o_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_need_lc_GCJ='`$ECHO "X$archive_cmds_need_lc_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_GCJ='`$ECHO "X$enable_shared_with_static_runtimes_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_GCJ='`$ECHO "X$export_dynamic_flag_spec_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+whole_archive_flag_spec_GCJ='`$ECHO "X$whole_archive_flag_spec_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+compiler_needs_object_GCJ='`$ECHO "X$compiler_needs_object_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_GCJ='`$ECHO "X$old_archive_from_new_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_GCJ='`$ECHO "X$old_archive_from_expsyms_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+archive_cmds_GCJ='`$ECHO "X$archive_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+archive_expsym_cmds_GCJ='`$ECHO "X$archive_expsym_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+module_cmds_GCJ='`$ECHO "X$module_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+module_expsym_cmds_GCJ='`$ECHO "X$module_expsym_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+with_gnu_ld_GCJ='`$ECHO "X$with_gnu_ld_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+allow_undefined_flag_GCJ='`$ECHO "X$allow_undefined_flag_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+no_undefined_flag_GCJ='`$ECHO "X$no_undefined_flag_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_GCJ='`$ECHO "X$hardcode_libdir_flag_spec_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld_GCJ='`$ECHO "X$hardcode_libdir_flag_spec_ld_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_libdir_separator_GCJ='`$ECHO "X$hardcode_libdir_separator_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_GCJ='`$ECHO "X$hardcode_direct_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_direct_absolute_GCJ='`$ECHO "X$hardcode_direct_absolute_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_minus_L_GCJ='`$ECHO "X$hardcode_minus_L_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_GCJ='`$ECHO "X$hardcode_shlibpath_var_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_automatic_GCJ='`$ECHO "X$hardcode_automatic_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+inherit_rpath_GCJ='`$ECHO "X$inherit_rpath_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+link_all_deplibs_GCJ='`$ECHO "X$link_all_deplibs_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+fix_srcfile_path_GCJ='`$ECHO "X$fix_srcfile_path_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+always_export_symbols_GCJ='`$ECHO "X$always_export_symbols_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+export_symbols_cmds_GCJ='`$ECHO "X$export_symbols_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+exclude_expsyms_GCJ='`$ECHO "X$exclude_expsyms_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+include_expsyms_GCJ='`$ECHO "X$include_expsyms_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+prelink_cmds_GCJ='`$ECHO "X$prelink_cmds_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+file_list_spec_GCJ='`$ECHO "X$file_list_spec_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+hardcode_action_GCJ='`$ECHO "X$hardcode_action_GCJ" | $Xsed -e "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+SHELL \
+ECHO \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+finish_eval \
+old_striplib \
+striplib \
+LD_GCJ \
+compiler_GCJ \
+lt_prog_compiler_no_builtin_flag_GCJ \
+lt_prog_compiler_wl_GCJ \
+lt_prog_compiler_pic_GCJ \
+lt_prog_compiler_static_GCJ \
+lt_cv_prog_compiler_c_o_GCJ \
+export_dynamic_flag_spec_GCJ \
+whole_archive_flag_spec_GCJ \
+compiler_needs_object_GCJ \
+with_gnu_ld_GCJ \
+allow_undefined_flag_GCJ \
+no_undefined_flag_GCJ \
+hardcode_libdir_flag_spec_GCJ \
+hardcode_libdir_flag_spec_ld_GCJ \
+hardcode_libdir_separator_GCJ \
+fix_srcfile_path_GCJ \
+exclude_expsyms_GCJ \
+include_expsyms_GCJ \
+file_list_spec_GCJ; do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec \
+old_archive_cmds_GCJ \
+old_archive_from_new_cmds_GCJ \
+old_archive_from_expsyms_cmds_GCJ \
+archive_cmds_GCJ \
+archive_expsym_cmds_GCJ \
+module_cmds_GCJ \
+module_expsym_cmds_GCJ \
+export_symbols_cmds_GCJ \
+prelink_cmds_GCJ; do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
+  ;;
+esac
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="${LINGUAS-%UNSET%}"
+
+GNUmakefile=$GNUmakefile
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
+    "csharpcomp.sh") CONFIG_FILES="$CONFIG_FILES csharpcomp.sh:build-aux/csharpcomp.sh.in" ;;
+    "$GNUmakefile") CONFIG_LINKS="$CONFIG_LINKS $GNUmakefile:$GNUmakefile" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "libidn.pc") CONFIG_FILES="$CONFIG_FILES libidn.pc" ;;
+    "csharp/Makefile") CONFIG_FILES="$CONFIG_FILES csharp/Makefile" ;;
+    "contrib/doxygen/Doxyfile") CONFIG_FILES="$CONFIG_FILES contrib/doxygen/Doxyfile" ;;
+    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+    "doc/cyclo/Makefile") CONFIG_FILES="$CONFIG_FILES doc/cyclo/Makefile" ;;
+    "doc/java/Makefile") CONFIG_FILES="$CONFIG_FILES doc/java/Makefile" ;;
+    "doc/reference/Makefile") CONFIG_FILES="$CONFIG_FILES doc/reference/Makefile" ;;
+    "doc/specifications/Makefile") CONFIG_FILES="$CONFIG_FILES doc/specifications/Makefile" ;;
+    "doc/tld/Makefile") CONFIG_FILES="$CONFIG_FILES doc/tld/Makefile" ;;
+    "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+    "gl/Makefile") CONFIG_FILES="$CONFIG_FILES gl/Makefile" ;;
+    "gltests/Makefile") CONFIG_FILES="$CONFIG_FILES gltests/Makefile" ;;
+    "java/Makefile") CONFIG_FILES="$CONFIG_FILES java/Makefile" ;;
+    "java/gnu/Makefile") CONFIG_FILES="$CONFIG_FILES java/gnu/Makefile" ;;
+    "java/gnu/inet/Makefile") CONFIG_FILES="$CONFIG_FILES java/gnu/inet/Makefile" ;;
+    "java/gnu/inet/encoding/Makefile") CONFIG_FILES="$CONFIG_FILES java/gnu/inet/encoding/Makefile" ;;
+    "java/misc/Makefile") CONFIG_FILES="$CONFIG_FILES java/misc/Makefile" ;;
+    "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
+    "lib/gl/Makefile") CONFIG_FILES="$CONFIG_FILES lib/gl/Makefile" ;;
+    "lib/gltests/Makefile") CONFIG_FILES="$CONFIG_FILES lib/gltests/Makefile" ;;
+    "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+
+  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || as_fn_error "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[    ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[    ]*#[    ]*define[       ][      ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = "\a"
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS  :L $CONFIG_LINKS  :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || as_fn_error "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
+      || as_fn_error "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$tmp/config.h" "$ac_file" \
+       || as_fn_error "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+  :L)
+  #
+  # CONFIG_LINK
+  #
+
+  if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then
+    :
+  else
+    # Prefer the file from the source tree if names are identical.
+    if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
+      ac_source=$srcdir/$ac_source
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5
+$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
+
+    if test ! -r "$ac_source"; then
+      as_fn_error "$ac_source: file not found" "$LINENO" 5
+    fi
+    rm -f "$ac_file"
+
+    # Try a relative symlink, then a hard link, then a copy.
+    case $srcdir in
+    [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
+       *) ac_rel_source=$ac_top_build_prefix$ac_source ;;
+    esac
+    ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
+      ln "$ac_source" "$ac_file" 2>/dev/null ||
+      cp -p "$ac_source" "$ac_file" ||
+      as_fn_error "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
+  fi
+ ;;
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$mf" : 'X\(//\)[^/]' \| \
+        X"$mf" : 'X\(//\)$' \| \
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$file" : 'X\(//\)[^/]' \| \
+        X"$file" : 'X\(//\)$' \| \
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags="GCJ "
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Assembler program.
+AS=$AS
+
+# DLL creation program.
+DLLTOOL=$DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$OBJDUMP
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that does not interpret backslashes.
+ECHO=$lt_ECHO
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  case $xsi_shell in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+  func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+  # positional parameters, so assign one to ordinary parameter first.
+  func_stripname_result=${3}
+  func_stripname_result=${func_stripname_result#"${1}"}
+  func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=${1%%=*}
+  func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  case ${1} in
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+    *)    func_lo2o_result=${1} ;;
+  esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=${#1}
+}
+
+_LT_EOF
+    ;;
+  *) # Bourne compatible functions.
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+  case ${2} in
+    .*) func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+    *)  func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+  esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1+=\$2"
+}
+_LT_EOF
+    ;;
+  *)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+    ;;
+  esac
+
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+
+    cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: GCJ
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+
+# A language specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_GCJ
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_GCJ
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_GCJ
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_GCJ
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path_GCJ
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_GCJ
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_GCJ
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# ### END LIBTOOL TAG CONFIG: GCJ
+_LT_EOF
+
+ ;;
+    "po-directories":C)
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      case "$ac_file" in */Makefile.in)
+        # Adjust a relative srcdir.
+        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+        # In autoconf-2.13 it is called $ac_given_srcdir.
+        # In autoconf-2.50 it is called $srcdir.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+          rm -f "$ac_dir/POTFILES"
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[  ]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+          POMAKEFILEDEPS="POTFILES.in"
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+          # on $ac_dir but don't depend on user-specified configuration
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+            fi
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: summary of build options:
+
+  version:          ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE
+  Host type:        ${host}
+  Install prefix:   ${prefix}
+  Compiler:         ${CC}
+  Warning flags:    ${WARN_CFLAGS}
+  Library types:    Shared=${enable_shared}, Static=${enable_static}
+  Valgrind:         ${VALGRIND}
+  Version script:   $have_ld_version_script
+  TLD code:         $enable_tld
+  Build Java port:  $enable_java
+  Build C# port:    $enable_csharp
+" >&5
+$as_echo "$as_me: summary of build options:
+
+  version:          ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE
+  Host type:        ${host}
+  Install prefix:   ${prefix}
+  Compiler:         ${CC}
+  Warning flags:    ${WARN_CFLAGS}
+  Library types:    Shared=${enable_shared}, Static=${enable_static}
+  Valgrind:         ${VALGRIND}
+  Version script:   $have_ld_version_script
+  TLD code:         $enable_tld
+  Build Java port:  $enable_java
+  Build C# port:    $enable_csharp
+" >&6;}
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..49476ac
--- /dev/null
@@ -0,0 +1,192 @@
+dnl Process this file with autoconf to produce a configure script.
+
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+dnl
+dnl This file is part of GNU Libidn.
+dnl
+dnl This program is free software: you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation, either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+AC_PREREQ(2.61)
+AC_INIT([GNU Libidn], [1.15], [bug-libidn@gnu.org])
+AC_COPYRIGHT([Copyright (c) 2002-2008 Simon Josefsson <simon@josefsson.org>.])
+
+# Library code modified:                              REVISION++
+# Interfaces changed/added/removed:   CURRENT++       REVISION=0
+# Interfaces added:                             AGE++
+# Interfaces removed:                           AGE=0
+AC_SUBST(LT_CURRENT, 16)
+AC_SUBST(LT_REVISION, 44)
+AC_SUBST(LT_AGE, 5)
+
+# For DEF file.
+DLL_VERSION=`expr ${LT_CURRENT} - ${LT_AGE}`
+AC_SUBST(DLL_VERSION)
+
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_MACRO_DIR([m4])
+AM_INIT_AUTOMAKE([1.10 -Wall -Werror -Wno-override])
+AC_CONFIG_HEADERS(config.h)
+
+# Checks for programs.
+AC_LIBTOOL_WIN32_DLL
+AC_PROG_CC
+lgl_EARLY
+gl_EARLY
+AC_PROG_LIBTOOL
+AM_MISSING_PROG(PERL, perl, $missing_dir)
+AM_MISSING_PROG(HELP2MAN, help2man, $missing_dir)
+AM_GNU_GETTEXT(external)
+AM_GNU_GETTEXT_VERSION(0.17)
+AM_ICONV
+AM_PATH_LISPDIR
+
+if test "$am_cv_func_iconv" != "yes"; then
+  AC_MSG_NOTICE([
+***
+
+Your system does not have iconv().  The iconv() function is not
+strictly required by the source code.  However, that may change in
+the future, unless you report that this may be a problem for you.
+
+Please report this to $PACKAGE_BUGREPORT.
+
+***])
+fi
+
+# Checks for header files.
+AC_HEADER_STDC
+
+# For gnulib stuff in gl/.
+gl_INIT
+lgl_INIT
+
+# Check if locale stuff works
+AM_LANGINFO_CODESET
+
+# Make it possible to disable TLD code.
+AC_ARG_ENABLE(tld, AC_HELP_STRING([--disable-tld], [disable TLD code]),
+               enable_tld=$enableval, enable_tld=yes)
+AM_CONDITIONAL(TLD, test "$enable_tld" != "no")
+if test "$enable_tld" != "no"; then
+       AC_DEFINE([WITH_TLD], 1, [Define to 1 if you want TLD code.])
+fi
+AC_MSG_CHECKING([if TLD API for specific TLD rules should be built])
+AC_MSG_RESULT($enable_tld)
+
+# Check for gtk-doc.
+GTK_DOC_CHECK(1.1)
+
+# Check for java
+AC_ARG_ENABLE(java, AC_HELP_STRING([--enable-java], [enable Java API]),,
+               enable_java=no)
+AM_PROG_GCJ
+if test "$enable_java" != "no"; then
+       AC_PROG_JAR
+       AM_MISSING_PROG(GJDOC, gjdoc, $missing_dir)
+fi
+AM_CONDITIONAL(JAVA, test "$enable_java" != "no")
+AC_MSG_CHECKING([if implementation in Java should be built])
+AC_MSG_RESULT($enable_java)
+
+# Check for C#
+AM_CONDITIONAL(CSHARP, test -n "$HAVE_CSHARPCOMP")
+AC_MSG_CHECKING([[if implementation in C# should be built]])
+if test -n "$HAVE_CSHARPCOMP"; then
+  enable_csharp=yes
+else
+  enable_csharp=no
+fi
+AC_MSG_RESULT($enable_csharp)
+
+sj_VALGRIND
+sj_UPDATE_HEADER_VERSION([$srcdir/lib/stringprep.h])
+
+AC_ARG_ENABLE([gcc-warnings],
+  [AS_HELP_STRING([--enable-gcc-warnings],
+                 [turn on lots of GCC warnings (for developers)])],
+  [case $enableval in
+     yes|no) ;;
+     *)      AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
+   esac
+   gl_gcc_warnings=$enableval],
+  [gl_gcc_warnings=no]
+)
+
+if test "$gl_gcc_warnings" = yes; then
+  gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
+  gl_WARN_ADD([-Wframe-larger-than=80], [WSTACK_CFLAGS])
+
+  nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
+  nw="$nw -Wc++-compat"             # We don't care strongly about C++ compilers
+  nw="$nw -Woverlength-strings"     # Some of our strings are too large
+  nw="$nw -Wsign-conversion"        # Too many warnings for now
+  nw="$nw -Wconversion"             # Too many warnings for now
+  nw="$nw -Wtraditional"            # Warns on #elif which we use often
+  nw="$nw -Wtraditional-conversion" # Too many warnings for now
+  nw="$nw -Wmissing-noreturn"       # Too many warnings for now
+  nw="$nw -Wunreachable-code"       # Too many false positives
+  nw="$nw -Wlogical-op"             # Too many false positives
+
+  gl_MANYWARN_ALL_GCC([ws])
+  gl_MANYWARN_COMPLEMENT(ws, [$ws], [$nw])
+  for w in $ws; do
+    gl_WARN_ADD([$w])
+  done
+
+  gl_WARN_ADD([-Wno-missing-field-initializers])
+  gl_WARN_ADD([-fdiagnostics-show-option])
+fi
+
+AC_CONFIG_FILES([
+  Makefile
+  libidn.pc
+  csharp/Makefile
+  contrib/doxygen/Doxyfile
+  doc/Makefile
+  doc/cyclo/Makefile
+  doc/java/Makefile
+  doc/reference/Makefile
+  doc/specifications/Makefile
+  doc/tld/Makefile
+  examples/Makefile
+  gl/Makefile
+  gltests/Makefile
+  java/Makefile
+  java/gnu/Makefile
+  java/gnu/inet/Makefile
+  java/gnu/inet/encoding/Makefile
+  java/misc/Makefile
+  lib/Makefile
+  lib/gl/Makefile
+  lib/gltests/Makefile
+  po/Makefile.in
+  src/Makefile
+  tests/Makefile
+])
+AC_OUTPUT
+
+AC_MSG_NOTICE([summary of build options:
+
+  version:          ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE
+  Host type:        ${host}
+  Install prefix:   ${prefix}
+  Compiler:         ${CC}
+  Warning flags:    ${WARN_CFLAGS}
+  Library types:    Shared=${enable_shared}, Static=${enable_static}
+  Valgrind:         ${VALGRIND}
+  Version script:   $have_ld_version_script
+  TLD code:         $enable_tld
+  Build Java port:  $enable_java
+  Build C# port:    $enable_csharp
+])
diff --git a/contrib/README b/contrib/README
new file mode 100644 (file)
index 0000000..719e1ce
--- /dev/null
@@ -0,0 +1,24 @@
+Libidn contrib/README -- Notes for the contrib/ subdirectory.
+Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+See the end for copying conditions.
+
+The idn-python/ sub-directory contains a Python interface for Libidn,
+contributed by Stephane Bortzmeyer <bortzmeyer@nic.fr>.  It is
+licensed under the same licence as Libidn itself.  Note that as of
+version 2.3 Python has native IDN support, see
+<http://www.python.org/doc/2.3.2/lib/module-encodings.idna.html>.
+
+The web/ sub-directory contains a online libidn interface in PHP.
+
+The java/ sub-directory builds Java *.class files that implement the
+Libidn API.  Note!  It is unfinished and left as a proof of concept.
+A developer with knowledge about Java is encouraged to take over it.
+
+The doxygen/ sub-directory builds Doxygen documentation (HTML,
+LaTeX/PDF and MAN).  Simply invoke "doxygen" in that directory and it
+should build the documentation.
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/contrib/doxygen/Doxyfile.in b/contrib/doxygen/Doxyfile.in
new file mode 100644 (file)
index 0000000..e8c6fe2
--- /dev/null
@@ -0,0 +1,1417 @@
+# Doxyfile 1.5.6
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file 
+# that follow. The default is UTF-8 which is also the encoding used for all 
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
+# iconv built into libc) for the transcoding. See 
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = @PACKAGE@
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = @VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = 
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
+# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, 
+# and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like regular Qt-style comments 
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
+# interpret the first line (until the first dot) of a Qt-style 
+# comment as the brief description. If set to NO, the comments 
+# will behave just like regular Qt-style comments (thus requiring 
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
+# sources only. Doxygen will then generate output that is more tailored for 
+# Java. For instance, namespaces will be presented as packages, qualified 
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
+# sources only. Doxygen will then generate output that is more tailored for 
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
+# sources. Doxygen will then generate output that is tailored for 
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
+# to include (a tag file for) the STL sources as input, then you should 
+# set this tag to YES in order to let doxygen match functions declarations and 
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
+# func(std::string) {}). This also make the inheritance and collaboration 
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
+# Doxygen will parse them like normal C++ but will assume all classes use public 
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter 
+# and setter methods for a property. Setting this option to YES (the default) 
+# will make doxygen to replace the get and set methods by a property in the 
+# documentation. This will only work if the methods are indeed getting or 
+# setting a simple type. If this is not the case, or you want to show the 
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
+# is documented as struct, union, or enum with the name of the typedef. So 
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
+# with name TypeT. When disabled the typedef will appear as a member of a file, 
+# namespace, or class. And the struct will be named TypeS. This can typically 
+# be useful for C code in case the coding convention dictates that all compound 
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be 
+# extracted and appear in the documentation as a namespace called 
+# 'anonymous_namespace{file}', where file will be replaced with the base 
+# name of the file that contains the anonymous namespace. By default 
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
+# hierarchy of group names into alphabetical order. If set to NO (the default) 
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the 
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
+# Namespaces page.  This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from 
+# the version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the program writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = ../../lib
+
+# This tag can be used to specify the character encoding of the source files 
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
+# also the default input encoding. Doxygen uses libiconv (or the iconv built 
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS          = 
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = 
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
+# (namespaces, classes, functions, etc.) that should be excluded from the 
+# output. The symbol name can be a fully qualified name, a word, or if the 
+# wildcard * is used, a substring. Examples: ANamespace, AClass, 
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = ../../examples
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = example*.c
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = ./gdoc2doxygen
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files 
+# will be generated that can be used as input for Apple's Xcode 3 
+# integrated development environment, introduced with OSX 10.5 (Leopard). 
+# To create a documentation set, doxygen will generate a Makefile in the 
+# HTML output directory. Running make will produce the docset in that 
+# directory and running "make install" will install the docset in 
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
+# it at startup.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
+# feed. A documentation feed provides an umbrella under which multiple 
+# documentation sets from a single provider (such as a company or product suite) 
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
+# should uniquely identify the documentation set bundle. This should be a 
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
+# documentation will contain sections that can be hidden and shown after the 
+# page has loaded. For this to work a browser that supports 
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING     = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, a side panel will be generated
+# containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature. Other possible values 
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hiererachy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# respectively.
+
+GENERATE_TREEVIEW      = NONE
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+# Use this tag to change the font size of Latex formulas included 
+# as images in the HTML documentation. The default is 10. Note that 
+# when you change the font size after a successful doxygen run you need 
+# to manually remove any form_*.png images from the HTML output directory 
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE       = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see 
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
+# the mscgen tool resides. If left empty the tool is assumed to be found in the 
+# default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output 
+# directory and reference it in all dot files that doxygen generates. This 
+# font does not include all possible unicode characters however, so when you need 
+# these (or just want a differently looking font) you can specify the font name 
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
+# which can be done by putting it in a standard location or by setting the 
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
+# containing the font.
+
+DOT_FONTNAME           = FreeSans
+
+# By default doxygen will tell dot to use the output directory to look for the 
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
+# different font using DOT_FONTNAME you can set the path where dot 
+# can find it using this tag.
+
+DOT_FONTPATH           = 
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
+# doxygen will generate a call dependency graph for every global function 
+# or class method. Note that enabling this option will significantly increase 
+# the time of a run. So in most cases it will be better to enable call graphs 
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
+# doxygen will generate a caller dependency graph for every global function 
+# or class method. Note that enabling this option will significantly increase 
+# the time of a run. So in most cases it will be better to enable caller 
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen if the 
+# number of direct children of the root node in a graph is already larger than 
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that the size of a graph can be further restricted by 
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is enabled by default, which results in a transparent 
+# background. Warning: Depending on the platform used, enabling this option 
+# may lead to badly anti-aliased labels on the edges of a graph (i.e. they 
+# become hard to read).
+
+DOT_TRANSPARENT        = YES
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
diff --git a/contrib/doxygen/Doxyfile.orig b/contrib/doxygen/Doxyfile.orig
new file mode 100644 (file)
index 0000000..1eeea5e
--- /dev/null
@@ -0,0 +1,1417 @@
+# Doxyfile 1.5.6
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file 
+# that follow. The default is UTF-8 which is also the encoding used for all 
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
+# iconv built into libc) for the transcoding. See 
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = 
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = 
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = 
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
+# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, 
+# and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like regular Qt-style comments 
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
+# interpret the first line (until the first dot) of a Qt-style 
+# comment as the brief description. If set to NO, the comments 
+# will behave just like regular Qt-style comments (thus requiring 
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
+# sources only. Doxygen will then generate output that is more tailored for 
+# Java. For instance, namespaces will be presented as packages, qualified 
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
+# sources only. Doxygen will then generate output that is more tailored for 
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
+# sources. Doxygen will then generate output that is tailored for 
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
+# to include (a tag file for) the STL sources as input, then you should 
+# set this tag to YES in order to let doxygen match functions declarations and 
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
+# func(std::string) {}). This also make the inheritance and collaboration 
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
+# Doxygen will parse them like normal C++ but will assume all classes use public 
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter 
+# and setter methods for a property. Setting this option to YES (the default) 
+# will make doxygen to replace the get and set methods by a property in the 
+# documentation. This will only work if the methods are indeed getting or 
+# setting a simple type. If this is not the case, or you want to show the 
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
+# is documented as struct, union, or enum with the name of the typedef. So 
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
+# with name TypeT. When disabled the typedef will appear as a member of a file, 
+# namespace, or class. And the struct will be named TypeS. This can typically 
+# be useful for C code in case the coding convention dictates that all compound 
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be 
+# extracted and appear in the documentation as a namespace called 
+# 'anonymous_namespace{file}', where file will be replaced with the base 
+# name of the file that contains the anonymous namespace. By default 
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
+# hierarchy of group names into alphabetical order. If set to NO (the default) 
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the 
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
+# Namespaces page.  This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from 
+# the version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the program writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = 
+
+# This tag can be used to specify the character encoding of the source files 
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
+# also the default input encoding. Doxygen uses libiconv (or the iconv built 
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS          = 
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = 
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
+# (namespaces, classes, functions, etc.) that should be excluded from the 
+# output. The symbol name can be a fully qualified name, a word, or if the 
+# wildcard * is used, a substring. Examples: ANamespace, AClass, 
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files 
+# will be generated that can be used as input for Apple's Xcode 3 
+# integrated development environment, introduced with OSX 10.5 (Leopard). 
+# To create a documentation set, doxygen will generate a Makefile in the 
+# HTML output directory. Running make will produce the docset in that 
+# directory and running "make install" will install the docset in 
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
+# it at startup.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
+# feed. A documentation feed provides an umbrella under which multiple 
+# documentation sets from a single provider (such as a company or product suite) 
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
+# should uniquely identify the documentation set bundle. This should be a 
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
+# documentation will contain sections that can be hidden and shown after the 
+# page has loaded. For this to work a browser that supports 
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING     = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, a side panel will be generated
+# containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature. Other possible values 
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hiererachy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# respectively.
+
+GENERATE_TREEVIEW      = NONE
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+# Use this tag to change the font size of Latex formulas included 
+# as images in the HTML documentation. The default is 10. Note that 
+# when you change the font size after a successful doxygen run you need 
+# to manually remove any form_*.png images from the HTML output directory 
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE       = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see 
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
+# the mscgen tool resides. If left empty the tool is assumed to be found in the 
+# default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output 
+# directory and reference it in all dot files that doxygen generates. This 
+# font does not include all possible unicode characters however, so when you need 
+# these (or just want a differently looking font) you can specify the font name 
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
+# which can be done by putting it in a standard location or by setting the 
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
+# containing the font.
+
+DOT_FONTNAME           = FreeSans
+
+# By default doxygen will tell dot to use the output directory to look for the 
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
+# different font using DOT_FONTNAME you can set the path where dot 
+# can find it using this tag.
+
+DOT_FONTPATH           = 
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
+# doxygen will generate a call dependency graph for every global function 
+# or class method. Note that enabling this option will significantly increase 
+# the time of a run. So in most cases it will be better to enable call graphs 
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
+# doxygen will generate a caller dependency graph for every global function 
+# or class method. Note that enabling this option will significantly increase 
+# the time of a run. So in most cases it will be better to enable caller 
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen if the 
+# number of direct children of the root node in a graph is already larger than 
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that the size of a graph can be further restricted by 
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is enabled by default, which results in a transparent 
+# background. Warning: Depending on the platform used, enabling this option 
+# may lead to badly anti-aliased labels on the edges of a graph (i.e. they 
+# become hard to read).
+
+DOT_TRANSPARENT        = YES
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
diff --git a/contrib/doxygen/gdoc2doxygen b/contrib/doxygen/gdoc2doxygen
new file mode 100755 (executable)
index 0000000..c4c3c2b
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2003, 2005, 2006, 2007, 2008 Simon Josefsson
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# I consider the output of this program to be unrestricted.  Use it as
+# you will.
+
+while (<>) {
+    s, \* @(.*):, * \\param $1,g;
+    print $_;
+}
diff --git a/contrib/idn-python/Makefile b/contrib/idn-python/Makefile
new file mode 100644 (file)
index 0000000..beeda96
--- /dev/null
@@ -0,0 +1,14 @@
+INCLUDE=/usr/include/python2.1
+INSTDIR=/usr/local/lib/python2.1/site-packages
+LIBS=-lidn
+
+all: idn.so
+
+%.so: %.c
+       gcc -I${INCLUDE} ${LIBS} -shared -fPIC -o $@ $<
+
+install:
+       cp idn.so ${INSTDIR}
+
+clean:
+       rm -f *.so
diff --git a/contrib/idn-python/README b/contrib/idn-python/README
new file mode 100644 (file)
index 0000000..615a4c4
--- /dev/null
@@ -0,0 +1,23 @@
+*** Note that as of version 2.3 Python has native IDN support, see
+*** <http://www.python.org/doc/2.3.2/lib/module-encodings.idna.html>.
+
+This is a Python interface over Simon Josefsson's libidn
+<URL:http://josefsson.org/libidn/>.
+
+To install, be sure you have libidn installed, check the Makefile, and
+type "make" and "make install".
+
+Sample use:
+
+import idn
+print idn.idn2ace("Café"); # The string must be in UTF-8
+
+With a conversion to UTF-8 first, assuming your locale is Latin-1:
+
+import idn
+name = sys.argv[1]
+ustring = unicode(name, "Latin-1")
+print idn.idn2ace(ustring.encode("UTF-8"))
+
+------------------
+Stephane Bortzmeyer <bortzmeyer@nic.fr>
diff --git a/contrib/idn-python/idn.c b/contrib/idn-python/idn.c
new file mode 100644 (file)
index 0000000..0e0905e
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * This is a Python interface over Simon Josefsson's libidn
+ * <URL:http://josefsson.org/libidn/>.
+ *
+ * Stephane Bortzmeyer <bortzmeyer@nic.fr>
+ *
+ */
+
+#include <Python.h>
+#include <string.h>
+#include <idna.h>
+
+#define MESSAGE_SIZE 512
+
+static PyObject *IDNError;
+static PyObject *IDNInvLengthError;
+
+#define onError(message) { PyErr_SetString(IDNError, message); free(message); return NULL; }
+
+static PyObject *
+idn2ace (PyObject * self, PyObject * args)
+{
+  char *instr, *result;
+  int rc;
+  PyObject *outstr;
+  if (!PyArg_ParseTuple (args, "s", &instr))
+    onError ("Invalid argument");
+  rc = idna_to_ascii_8z (instr, &result);
+  if (rc != IDNA_SUCCESS)
+    {
+      switch (rc)
+       {
+       case IDNA_INVALID_LENGTH:
+         result = malloc (MESSAGE_SIZE);
+         sprintf (result, "%d bytes", strlen (instr));
+         PyErr_SetString (IDNInvLengthError, result);
+         free (result);
+         return NULL;
+         break;
+       default:
+         result = malloc (MESSAGE_SIZE);
+         sprintf (result, "IDN error: %d (see idna.h)", rc);
+         onError (result);
+       }
+    }
+  outstr = Py_BuildValue ("s", result);
+  return outstr;
+}
+
+static PyObject *
+ace2idn (PyObject * self, PyObject * args)
+{
+  char *instr, *result;
+  int rc;
+  PyObject *outstr;
+  if (!PyArg_ParseTuple (args, "s", &instr))
+    onError ("Invalid argument");
+  rc = idna_to_unicode_8z8z (instr, &result);
+  if (rc != IDNA_SUCCESS)
+    {
+      result = malloc (MESSAGE_SIZE);
+      sprintf (result, "IDN error: %d (see idna.h)", rc);
+      onError (result);
+    }
+  outstr = Py_BuildValue ("s", result);
+  return outstr;
+}
+
+static struct PyMethodDef methods[] = {
+  {"idn2ace", idn2ace, 1},
+  {"ace2idn", ace2idn, 1},
+  {NULL, NULL}
+};
+
+void
+initidn ()
+{
+  Py_InitModule ("idn", methods);
+  IDNError = PyErr_NewException ("idn.error", NULL, NULL);
+  IDNInvLengthError = PyErr_NewException ("idn.invalidLength", NULL, NULL);
+}
diff --git a/contrib/idn-python/test.py b/contrib/idn-python/test.py
new file mode 100644 (file)
index 0000000..086df8b
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/python
+
+locale = "Latin-1"
+
+import idn
+import sys
+
+if len(sys.argv) <= 1:
+    print "Usage: %s name" % sys.argv[0]
+    sys.exit(1)
+    
+name = sys.argv[1]
+
+ustring = unicode(name, locale)
+print idn.idn2ace(ustring.encode("UTF-8"))
diff --git a/contrib/java/ExampleIDNA.java b/contrib/java/ExampleIDNA.java
new file mode 100644 (file)
index 0000000..d5de981
--- /dev/null
@@ -0,0 +1,5 @@
+class ExampleIDNA {
+    public static void main(String[] args) {
+       System.out.println(new IDNA().toAscii(args[0]));
+    }
+}
diff --git a/contrib/java/IDNA.c b/contrib/java/IDNA.c
new file mode 100644 (file)
index 0000000..71a3912
--- /dev/null
@@ -0,0 +1,18 @@
+#include <jni.h>
+#include "IDNA.h"
+
+JNIEXPORT jstring JNICALL
+Java_IDNA_toAscii(JNIEnv *env, jobject obj, jstring jstr)
+{
+  const char *in;
+  const char *out;
+  int rc;
+
+  in = (*env)->GetStringUTFChars(env, jstr, 0);
+
+  rc = idna_to_ascii_from_utf8 (in, &out, 0, 0);
+
+  (*env)->ReleaseStringUTFChars(env, jstr, in);
+
+  return (*env)->NewStringUTF(env, out);
+}
diff --git a/contrib/java/IDNA.java b/contrib/java/IDNA.java
new file mode 100644 (file)
index 0000000..577f9b9
--- /dev/null
@@ -0,0 +1,7 @@
+class IDNA {
+    public native String toAscii(String str);
+
+    static {
+        System.loadLibrary("idn-java");
+    }
+}
diff --git a/contrib/java/Makefile.am b/contrib/java/Makefile.am
new file mode 100644 (file)
index 0000000..1496336
--- /dev/null
@@ -0,0 +1,33 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+lib_LTLIBRARIES = libidn-java.la
+
+libidn_java_la_SOURCES = IDNA.c
+libidn_java_la_LIBADD = -lidn
+
+%.class: %.java
+       gcj -C $<
+
+%.h: %.class
+       gcjh -jni $*
+
+IDNA.c: IDNA.h
+
+clean-local:
+       rm -f  IDNA.h IDNA.class ExampleIDNA.class *~
diff --git a/contrib/java/README b/contrib/java/README
new file mode 100644 (file)
index 0000000..a8d0c2f
--- /dev/null
@@ -0,0 +1,36 @@
+Libidn README -- Notes for the JAVA API proof of concept.
+Copyright (C) 2003, 2004, 2005, 2006, 2007 Simon Josefsson
+See the end for copying conditions.
+
+This directory builds Java *.class files that implement the Libidn
+API.  Note!  It is unfinished and left as a proof of concept.  A
+developer with knowledge about Java is encouraged to take over it.
+
+The current Makefile.am require GCJ.  It was tested with Sun JDK 1.1
+and IBM JDK 1.1.8 too, after replacing "gcj" with "javac" and "gcjh"
+with "javah" in Makefile.am.  Some combinations of compilation with
+one package and executing using another package (e.g., compile with
+GCJ, run with Sun's JRE) also seemed to work.
+
+$ ./autogen.sh
+$ ./configure
+$ make
+$ su
+# make install
+# exit
+$ make ExampleIDNA
+$ gij ExampleIDNA räksmörgås
+xn--rksmrgs-5wao1o
+$ 
+
+Please let me know if you want to finish and maintain the Java API
+glue.  It may involve some tedious work initially, but could be useful
+for Java developers.
+
+Eventually I think the Java API Glue functions should be merged into
+libidn, instead of having a separate libidn-java library.
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/contrib/java/autogen.sh b/contrib/java/autogen.sh
new file mode 100755 (executable)
index 0000000..48e9847
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh -x
+autoreconf --install --force --verbose
diff --git a/contrib/java/configure.ac b/contrib/java/configure.ac
new file mode 100644 (file)
index 0000000..6e7c4a4
--- /dev/null
@@ -0,0 +1,10 @@
+AC_INIT(libidn-java, 0.0.0, bug-libidn@gnu.org)
+
+AM_INIT_AUTOMAKE(foreign)
+AM_CONFIG_HEADER(config.h)
+
+AC_PROG_LIBTOOL
+AC_PROG_CC
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/contrib/web/idn.php b/contrib/web/idn.php
new file mode 100644 (file)
index 0000000..a77d8ea
--- /dev/null
@@ -0,0 +1,376 @@
+<?php
+
+$charset = $_REQUEST["charset"];
+$lastcharset = $_REQUEST["lastcharset"];
+$mode = $_REQUEST["mode"];
+$data = $_REQUEST["data"];
+$profile = $_REQUEST["profile"];
+$allowunassigned = $_REQUEST["allowunassigned"];
+$usestd3asciirules = $_REQUEST["usestd3asciirules"];
+$debug = $_REQUEST["debug"];
+
+if (!$charset) {
+       $data = "räksmörgås.josefßon.org";
+       $charset = "UTF-8";
+}
+
+header("Content-Type: text/html; charset=$charset");
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=<?php print $charset ?>">
+    <title>Try GNU Libidn</title>
+  </head>
+
+  <body>
+
+    <h1>Try GNU Libidn</h1>
+
+    <p>This page allows you to try the string preparation, punycode
+    encode/decode and ToASCII/ToUnicode operations of <a
+    href="http://www.gnu.org/software/libidn/">GNU Libidn</a>.  If you
+    encounter a problem with this page, write a (detailed!) report to
+    <A HREF="mailto:bug-libidn@gnu.org">bug-libidn@gnu.org</A>.
+
+    <p>If you are interested in commercial support or enhancement of
+    Libidn, you can <a href="mailto:simon@josefsson.org">contact
+    me</a>.
+
+<?php if (!$lastcharset && !$mode) { ?>
+
+    <p>Free shrimp sandwiches are <a
+    href="http://xn--rksmrgs-5wao1o.josefsson.org/">served over
+    here</a> (or <a href="http://räksmörgås.josefsson.org/">here</a>
+    if you want the experimental flavour).
+
+    <p>This page ignores any Accept-Charset headers sent by your
+    browser.  Instead, the Unicode repertoire encoded as UTF-8 is
+    used.  If you are using software that cannot handle this, you must
+    select another MIME charset below.  BIG5, ISO-2022-JP-2,
+    ISO-8859-1, and KOI-8 are popular choices.  I am sorry for the
+    inconvenience.
+
+<?php } ?>
+
+    <hr>
+    <h2>Input</h2>
+    <form>
+
+      <p>The following string must only contain characters that your
+      browser is able to represent in <?php print $charset; ?> when
+      submitting this form.  If you wish to use another charset you
+      must select it below, submit the form and wait for a new page to
+      load, and then enter your string.<br>
+
+      <input type=text name=data size=40 value="<?php print $data ?>"><br>
+
+      <input type=radio name=mode value=stringprep <?php if ($mode == "stringprep") { print "checked"; } ?>>Prepare string using profile:
+
+      <select name=profile>
+       <option <?php if ($profile == "Nameprep" || !$profile) { print "selected"; } ?>>Nameprep
+       <option <?php if ($profile == "KRBprep") { print "selected"; } ?>>KRBprep
+       <option <?php if ($profile == "Nodeprep") { print "selected"; } ?>>Nodeprep
+       <option <?php if ($profile == "Resourceprep") { print "selected"; } ?>>Resourceprep
+       <option <?php if ($profile == "plain") { print "selected"; } ?>>plain
+       <option <?php if ($profile == "trace") { print "selected"; } ?>>trace
+       <option <?php if ($profile == "SASLprep") { print "selected"; } ?>>SASLprep
+       <option <?php if ($profile == "ISCSIprep") { print "selected"; } ?>>ISCSIprep
+      </select><br>
+
+      <input type=radio name=mode value=punyencode <?php if ($mode == "punyencode") { print "checked"; } ?>>Punycode encode<br>
+      <input type=radio name=mode value=punydecode <?php if ($mode == "punydecode") { print "checked"; } ?>> Punycode decode<br>
+
+      <input type=radio name=mode value=toascii <?php if ($mode == "toascii" || !$mode) { print "checked"; } ?>>IDNA ToASCII<br>
+      <input type=radio name=mode value=tounicode <?php if ($mode == "tounicode") { print "checked"; } ?>>IDNA ToUnicode<br>
+
+      <input type=checkbox name=allowunassigned <?php if ($allowunassigned) { print "checked"; } ?>>Allow Unassigned<br>
+      <input type=checkbox name=usestd3asciirules <?php if ($usestd3asciirules) { print "checked"; } ?>>UseSTD3ASCIIRules<br>
+      <input type=checkbox name=debug <?php if ($debug) { print "checked"; } ?>>Debug<br>
+
+      Change MIME charset of page to: <select name=charset>
+
+<option <?php if ($charset == "ASCII") { print "selected"; } ?>>ASCII
+<option <?php if ($charset == "ASMO_449") { print "selected"; } ?>>ASMO_449
+<option <?php if ($charset == "BIG5") { print "selected"; } ?>>BIG5
+<option <?php if ($charset == "BIG5HKSCS") { print "selected"; } ?>>BIG5HKSCS
+<option <?php if ($charset == "BS_4730") { print "selected"; } ?>>BS_4730
+<option <?php if ($charset == "CP10007") { print "selected"; } ?>>CP10007
+<option <?php if ($charset == "CP1250") { print "selected"; } ?>>CP1250
+<option <?php if ($charset == "CP1251") { print "selected"; } ?>>CP1251
+<option <?php if ($charset == "CP1252") { print "selected"; } ?>>CP1252
+<option <?php if ($charset == "CP1253") { print "selected"; } ?>>CP1253
+<option <?php if ($charset == "CP1254") { print "selected"; } ?>>CP1254
+<option <?php if ($charset == "CP1255") { print "selected"; } ?>>CP1255
+<option <?php if ($charset == "CP1256") { print "selected"; } ?>>CP1256
+<option <?php if ($charset == "CP1257") { print "selected"; } ?>>CP1257
+<option <?php if ($charset == "CP1258") { print "selected"; } ?>>CP1258
+<option <?php if ($charset == "CP737") { print "selected"; } ?>>CP737
+<option <?php if ($charset == "CP775") { print "selected"; } ?>>CP775
+<option <?php if ($charset == "CSA_Z243.4-1985-1") { print "selected"; } ?>>CSA_Z243.4-1985-1
+<option <?php if ($charset == "CSA_Z243.4-1985-2") { print "selected"; } ?>>CSA_Z243.4-1985-2
+<option <?php if ($charset == "CSN_369103") { print "selected"; } ?>>CSN_369103
+<option <?php if ($charset == "CWI") { print "selected"; } ?>>CWI
+<option <?php if ($charset == "DEC-MCS") { print "selected"; } ?>>DEC-MCS
+<option <?php if ($charset == "DIN_66003") { print "selected"; } ?>>DIN_66003
+<option <?php if ($charset == "DS_2089") { print "selected"; } ?>>DS_2089
+<option <?php if ($charset == "ECMA-CYRILLIC") { print "selected"; } ?>>ECMA-CYRILLIC
+<option <?php if ($charset == "ES") { print "selected"; } ?>>ES
+<option <?php if ($charset == "ES2") { print "selected"; } ?>>ES2
+<option <?php if ($charset == "EUC-CN") { print "selected"; } ?>>EUC-CN
+<option <?php if ($charset == "EUC-JP") { print "selected"; } ?>>EUC-JP
+<option <?php if ($charset == "EUC-KR") { print "selected"; } ?>>EUC-KR
+<option <?php if ($charset == "EUC-TW") { print "selected"; } ?>>EUC-TW
+<option <?php if ($charset == "GB18030") { print "selected"; } ?>>GB18030
+<option <?php if ($charset == "GB_1988-80") { print "selected"; } ?>>GB_1988-80
+<option <?php if ($charset == "GBK") { print "selected"; } ?>>GBK
+<option <?php if ($charset == "GEORGIAN-ACADEMY") { print "selected"; } ?>>GEORGIAN-ACADEMY
+<option <?php if ($charset == "GEORGIAN-PS") { print "selected"; } ?>>GEORGIAN-PS
+<option <?php if ($charset == "GOST_19768-74") { print "selected"; } ?>>GOST_19768-74
+<option <?php if ($charset == "GREEK7") { print "selected"; } ?>>GREEK7
+<option <?php if ($charset == "GREEK7-OLD") { print "selected"; } ?>>GREEK7-OLD
+<option <?php if ($charset == "GREEK-CCITT") { print "selected"; } ?>>GREEK-CCITT
+<option <?php if ($charset == "HP-ROMAN8") { print "selected"; } ?>>HP-ROMAN8
+<option <?php if ($charset == "IBM037") { print "selected"; } ?>>IBM037
+<option <?php if ($charset == "IBM038") { print "selected"; } ?>>IBM038
+<option <?php if ($charset == "IBM1004") { print "selected"; } ?>>IBM1004
+<option <?php if ($charset == "IBM1026") { print "selected"; } ?>>IBM1026
+<option <?php if ($charset == "IBM1046") { print "selected"; } ?>>IBM1046
+<option <?php if ($charset == "IBM1047") { print "selected"; } ?>>IBM1047
+<option <?php if ($charset == "IBM1124") { print "selected"; } ?>>IBM1124
+<option <?php if ($charset == "IBM1129") { print "selected"; } ?>>IBM1129
+<option <?php if ($charset == "IBM1160") { print "selected"; } ?>>IBM1160
+<option <?php if ($charset == "IBM1161") { print "selected"; } ?>>IBM1161
+<option <?php if ($charset == "IBM256") { print "selected"; } ?>>IBM256
+<option <?php if ($charset == "IBM273") { print "selected"; } ?>>IBM273
+<option <?php if ($charset == "IBM274") { print "selected"; } ?>>IBM274
+<option <?php if ($charset == "IBM275") { print "selected"; } ?>>IBM275
+<option <?php if ($charset == "IBM277") { print "selected"; } ?>>IBM277
+<option <?php if ($charset == "IBM278") { print "selected"; } ?>>IBM278
+<option <?php if ($charset == "IBM280") { print "selected"; } ?>>IBM280
+<option <?php if ($charset == "IBM281") { print "selected"; } ?>>IBM281
+<option <?php if ($charset == "IBM284") { print "selected"; } ?>>IBM284
+<option <?php if ($charset == "IBM285") { print "selected"; } ?>>IBM285
+<option <?php if ($charset == "IBM290") { print "selected"; } ?>>IBM290
+<option <?php if ($charset == "IBM297") { print "selected"; } ?>>IBM297
+<option <?php if ($charset == "IBM420") { print "selected"; } ?>>IBM420
+<option <?php if ($charset == "IBM423") { print "selected"; } ?>>IBM423
+<option <?php if ($charset == "IBM424") { print "selected"; } ?>>IBM424
+<option <?php if ($charset == "IBM437") { print "selected"; } ?>>IBM437
+<option <?php if ($charset == "IBM500") { print "selected"; } ?>>IBM500
+<option <?php if ($charset == "IBM850") { print "selected"; } ?>>IBM850
+<option <?php if ($charset == "IBM851") { print "selected"; } ?>>IBM851
+<option <?php if ($charset == "IBM852") { print "selected"; } ?>>IBM852
+<option <?php if ($charset == "IBM855") { print "selected"; } ?>>IBM855
+<option <?php if ($charset == "IBM856") { print "selected"; } ?>>IBM856
+<option <?php if ($charset == "IBM857") { print "selected"; } ?>>IBM857
+<option <?php if ($charset == "IBM860") { print "selected"; } ?>>IBM860
+<option <?php if ($charset == "IBM861") { print "selected"; } ?>>IBM861
+<option <?php if ($charset == "IBM862") { print "selected"; } ?>>IBM862
+<option <?php if ($charset == "IBM863") { print "selected"; } ?>>IBM863
+<option <?php if ($charset == "IBM864") { print "selected"; } ?>>IBM864
+<option <?php if ($charset == "IBM865") { print "selected"; } ?>>IBM865
+<option <?php if ($charset == "IBM866") { print "selected"; } ?>>IBM866
+<option <?php if ($charset == "IBM868") { print "selected"; } ?>>IBM868
+<option <?php if ($charset == "IBM869") { print "selected"; } ?>>IBM869
+<option <?php if ($charset == "IBM870") { print "selected"; } ?>>IBM870
+<option <?php if ($charset == "IBM871") { print "selected"; } ?>>IBM871
+<option <?php if ($charset == "IBM874") { print "selected"; } ?>>IBM874
+<option <?php if ($charset == "IBM875") { print "selected"; } ?>>IBM875
+<option <?php if ($charset == "IBM880") { print "selected"; } ?>>IBM880
+<option <?php if ($charset == "IBM891") { print "selected"; } ?>>IBM891
+<option <?php if ($charset == "IBM903") { print "selected"; } ?>>IBM903
+<option <?php if ($charset == "IBM904") { print "selected"; } ?>>IBM904
+<option <?php if ($charset == "IBM905") { print "selected"; } ?>>IBM905
+<option <?php if ($charset == "IBM918") { print "selected"; } ?>>IBM918
+<option <?php if ($charset == "IBM922") { print "selected"; } ?>>IBM922
+<option <?php if ($charset == "IBM930") { print "selected"; } ?>>IBM930
+<option <?php if ($charset == "IBM932") { print "selected"; } ?>>IBM932
+<option <?php if ($charset == "IBM933") { print "selected"; } ?>>IBM933
+<option <?php if ($charset == "IBM935") { print "selected"; } ?>>IBM935
+<option <?php if ($charset == "IBM937") { print "selected"; } ?>>IBM937
+<option <?php if ($charset == "IBM939") { print "selected"; } ?>>IBM939
+<option <?php if ($charset == "IBM943") { print "selected"; } ?>>IBM943
+<option <?php if ($charset == "IEC_P27-1") { print "selected"; } ?>>IEC_P27-1
+<option <?php if ($charset == "INIS") { print "selected"; } ?>>INIS
+<option <?php if ($charset == "INIS-8") { print "selected"; } ?>>INIS-8
+<option <?php if ($charset == "INIS-CYRILLIC") { print "selected"; } ?>>INIS-CYRILLIC
+<option <?php if ($charset == "ISIRI-3342") { print "selected"; } ?>>ISIRI-3342
+<option <?php if ($charset == "ISO_10367-BOX") { print "selected"; } ?>>ISO_10367-BOX
+<option <?php if ($charset == "ISO-2022-CN") { print "selected"; } ?>>ISO-2022-CN
+<option <?php if ($charset == "ISO-2022-CN-EXT") { print "selected"; } ?>>ISO-2022-CN-EXT
+<option <?php if ($charset == "ISO-2022-JP") { print "selected"; } ?>>ISO-2022-JP
+<option <?php if ($charset == "ISO-2022-JP-2") { print "selected"; } ?>>ISO-2022-JP-2
+<option <?php if ($charset == "ISO-2022-KR") { print "selected"; } ?>>ISO-2022-KR
+<option <?php if ($charset == "ISO_2033") { print "selected"; } ?>>ISO_2033
+<option <?php if ($charset == "ISO_5427") { print "selected"; } ?>>ISO_5427
+<option <?php if ($charset == "ISO_5427-EXT") { print "selected"; } ?>>ISO_5427-EXT
+<option <?php if ($charset == "ISO_5428") { print "selected"; } ?>>ISO_5428
+<option <?php if ($charset == "ISO_6937") { print "selected"; } ?>>ISO_6937
+<option <?php if ($charset == "ISO_6937-2") { print "selected"; } ?>>ISO_6937-2
+<option <?php if ($charset == "ISO-8859-1") { print "selected"; } ?>>ISO-8859-1
+<option <?php if ($charset == "ISO-8859-10") { print "selected"; } ?>>ISO-8859-10
+<option <?php if ($charset == "ISO-8859-11") { print "selected"; } ?>>ISO-8859-11
+<option <?php if ($charset == "ISO-8859-13") { print "selected"; } ?>>ISO-8859-13
+<option <?php if ($charset == "ISO-8859-14") { print "selected"; } ?>>ISO-8859-14
+<option <?php if ($charset == "ISO-8859-15") { print "selected"; } ?>>ISO-8859-15
+<option <?php if ($charset == "ISO-8859-16") { print "selected"; } ?>>ISO-8859-16
+<option <?php if ($charset == "ISO-8859-2") { print "selected"; } ?>>ISO-8859-2
+<option <?php if ($charset == "ISO-8859-3") { print "selected"; } ?>>ISO-8859-3
+<option <?php if ($charset == "ISO-8859-4") { print "selected"; } ?>>ISO-8859-4
+<option <?php if ($charset == "ISO-8859-5") { print "selected"; } ?>>ISO-8859-5
+<option <?php if ($charset == "ISO-8859-6") { print "selected"; } ?>>ISO-8859-6
+<option <?php if ($charset == "ISO-8859-7") { print "selected"; } ?>>ISO-8859-7
+<option <?php if ($charset == "ISO-8859-8") { print "selected"; } ?>>ISO-8859-8
+<option <?php if ($charset == "ISO-8859-9") { print "selected"; } ?>>ISO-8859-9
+<option <?php if ($charset == "ISO-IR-197") { print "selected"; } ?>>ISO-IR-197
+<option <?php if ($charset == "ISO-IR-209") { print "selected"; } ?>>ISO-IR-209
+<option <?php if ($charset == "IT") { print "selected"; } ?>>IT
+<option <?php if ($charset == "JIS_C6220-1969-RO") { print "selected"; } ?>>JIS_C6220-1969-RO
+<option <?php if ($charset == "JIS_C6229-1984-B") { print "selected"; } ?>>JIS_C6229-1984-B
+<option <?php if ($charset == "JOHAB") { print "selected"; } ?>>JOHAB
+<option <?php if ($charset == "JUS_I.B1.002") { print "selected"; } ?>>JUS_I.B1.002
+<option <?php if ($charset == "KOI-8") { print "selected"; } ?>>KOI-8
+<option <?php if ($charset == "KOI8-R") { print "selected"; } ?>>KOI8-R
+<option <?php if ($charset == "KOI8-T") { print "selected"; } ?>>KOI8-T
+<option <?php if ($charset == "KOI8-U") { print "selected"; } ?>>KOI8-U
+<option <?php if ($charset == "KSC5636") { print "selected"; } ?>>KSC5636
+<option <?php if ($charset == "LATIN-GREEK") { print "selected"; } ?>>LATIN-GREEK
+<option <?php if ($charset == "LATIN-GREEK-1") { print "selected"; } ?>>LATIN-GREEK-1
+<option <?php if ($charset == "MACINTOSH") { print "selected"; } ?>>MACINTOSH
+<option <?php if ($charset == "MAC-IS") { print "selected"; } ?>>MAC-IS
+<option <?php if ($charset == "MAC-SAMI") { print "selected"; } ?>>MAC-SAMI
+<option <?php if ($charset == "MAC-UK") { print "selected"; } ?>>MAC-UK
+<option <?php if ($charset == "MSZ_7795.3") { print "selected"; } ?>>MSZ_7795.3
+<option <?php if ($charset == "NATS-DANO") { print "selected"; } ?>>NATS-DANO
+<option <?php if ($charset == "NATS-SEFI") { print "selected"; } ?>>NATS-SEFI
+<option <?php if ($charset == "NC_NC00-10") { print "selected"; } ?>>NC_NC00-10
+<option <?php if ($charset == "NF_Z_62-010") { print "selected"; } ?>>NF_Z_62-010
+<option <?php if ($charset == "NF_Z_62-010_1973") { print "selected"; } ?>>NF_Z_62-010_1973
+<option <?php if ($charset == "NS_4551-1") { print "selected"; } ?>>NS_4551-1
+<option <?php if ($charset == "NS_4551-2") { print "selected"; } ?>>NS_4551-2
+<option <?php if ($charset == "PT") { print "selected"; } ?>>PT
+<option <?php if ($charset == "PT2") { print "selected"; } ?>>PT2
+<option <?php if ($charset == "SEN_850200_B") { print "selected"; } ?>>SEN_850200_B
+<option <?php if ($charset == "SEN_850200_C") { print "selected"; } ?>>SEN_850200_C
+<option <?php if ($charset == "SJIS") { print "selected"; } ?>>SJIS
+<option <?php if ($charset == "T.61-8BIT") { print "selected"; } ?>>T.61-8BIT
+<option <?php if ($charset == "TIS-620") { print "selected"; } ?>>TIS-620
+<option <?php if ($charset == "UHC") { print "selected"; } ?>>UHC
+<option <?php if ($charset == "UTF-8") { print "selected"; } ?>>UTF-8
+<option <?php if ($charset == "UTF-7") { print "selected"; } ?>>UTF-7
+<option <?php if ($charset == "VISCII") { print "selected"; } ?>>VISCII
+<option <?php if ($charset == "WIN-SAMI-2") { print "selected"; } ?>>WIN-SAMI-2
+
+       </select><br>
+
+      <input type=hidden name="lastcharset" value="<?php print $charset; ?>">
+      <input type=submit><br>
+    </form>
+
+    <hr>
+    <h2>Output</h2>
+
+    <pre>
+<?php
+   putenv("CHARSET=" . escapeshellarg($charset));
+   $cmd = "idn" . ($debug ? " --debug" : "") . ($allowunassigned ? " --allow-unassigned" : "") . ($usestd3asciirules ? " --usestd3asciirules" : "") . ($mode == "stringprep" ? " --stringprep" : "") . ($mode == "stringprep" ? " --profile " . escapeshellarg($profile) : "") . ($mode == "punydecode" ? " --punycode-decode" : "") . ($mode == "punyencode" ? " --punycode-encode" : "") . ($mode == "toascii" || !$mode ? " --idna-to-ascii" : "") . ($mode == "tounicode" ? " --idna-to-unicode" : "") . " " . escapeshellarg($data) . " 2>&1";
+   $h = popen($cmd, "r");
+   while($s = fgets($h, 1024)) { $out .= $s; };
+   pclose($h);
+   print "$ CHARSET=" .  escapeshellarg($charset) . " $cmd\n";
+   print $out;
+   print "$ \n";
+?>
+</pre>
+    <hr>
+    <h2>Examples</h2>
+
+    <ul>
+       <li><a href="http://josefsson.org/idn.php?data=r%E4ksm%F6rg%E5s.josefsson.org&amp;mode=toascii&amp;charset=ISO-8859-1">ISO-8859-1 example</a>
+       <li><a href="http://josefsson.org/idn.php?data=r%84ksm%94rg%86s.josefsson.org&amp;mode=toascii&amp;charset=IBM850">IBM850 (aka codepage 850) example (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=r%C8aksm%C8org%CAas.josefsson.org&amp;mode=toascii&amp;charset=T.61-8BIT">T.61-8BIT example (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%E2%82%ACcu&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Euro example</a>
+       <li><a href="http://josefsson.org/idn.php?data=%A4cu&amp;mode=toascii&amp;charset=ISO-8859-15">ISO-8859-15 Euro example (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%B0%C2%BC%BC%C6%E0%C8%FE%B7%C3-with-SUPER-MONKEYS&amp;mode=toascii&amp;charset=EUC-JP">EUC-JP example</a>
+       <li><a href="http://josefsson.org/idn.php?data=%B9%CC%BC%FA&amp;mode=toascii&amp;charset=EUC-KR">EUC-KR example</a>
+       <li><a href="http://josefsson.org/idn.php?data=%D9%84%D9%8A%D9%87%D9%85%D8%A7%D8%A8%D8%AA%D9%83%D9%84%D9%85%D9%88%D8%B4%D8%B9%D8%B1%D8%A8%D9%8A%D8%9F&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Arabic (Egyptian)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%E4%BB%96%E4%BB%AC%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E8%AF%B4%E4%B8%AD%E6%96%87&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Simplified Chinese</a>
+       <li><a href="http://josefsson.org/idn.php?data=%CB%FB%C3%C7%CE%AA%CA%B2%C3%B4%B2%BB%CB%B5%D6%D0%CE%C4&amp;mode=toascii&amp;charset=GB18030">GB18030 Simplified Chinese (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%D7%9C%D7%9E%D7%94%D7%94%D7%9D%D7%A4%D7%A9%D7%95%D7%98%D7%9C%D7%90%D7%9E%D7%93%D7%91%D7%A8%D7%99%D7%9D%D7%A2%D7%91%D7%A8%D7%99%D7%AA&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Hebrew</a>
+       <li><a href="http://josefsson.org/idn.php?data=%EC%EE%E4%E4%ED%F4%F9%E5%E8%EC%E0%EE%E3%E1%F8%E9%ED%F2%E1%F8%E9%FA&amp;mode=toascii&amp;charset=ISO-8859-8">ISO-8859-8 Hebrew (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83%D0%B6%D0%B5%D0%BE%D0%BD%D0%B8%D0%BD%D0%B5%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D1%8F%D1%82%D0%BF%D0%BE%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Russian (Cyrillic)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%D0%CF%DE%C5%CD%D5%D6%C5%CF%CE%C9%CE%C5%C7%CF%D7%CF%D2%D1%D4%D0%CF%D2%D5%D3%D3%CB%C9&amp;mode=toascii&amp;charset=KOI8-R">KOI8-R Russian Cyrillic (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%D0%CF%DE%C5%CD%D5%D6%C5%CF%CE%C9%CE%C5%C7%CF%D7%CF%D2%D1%D4%D0%CF%D2%D5%D3%D3%CB%C9&amp;mode=toascii&amp;charset=ECMA-CYRILLIC">ECMA-CYRILLIC Russian Cyrillic (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=T%E1%BA%A1isaoh%E1%BB%8Dkh%C3%B4ngth%E1%BB%83ch%E1%BB%89n%C3%B3iti%E1%BA%BFngVi%E1%BB%87t&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Vietnamese</a>
+       <li><a href="http://josefsson.org/idn.php?data=t%D5isaoh%F7kh%F4ngth%ACch%EFn%F3iti%AAngvi%AEt&amp;mode=toascii&amp;charset=VISCII">VISCII Vietnamese (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%E3%81%B2%E3%81%A8%E3%81%A4%E5%B1%8B%E6%A0%B9%E3%81%AE%E4%B8%8B2&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Japanese</a>
+       <li><a href="http://josefsson.org/idn.php?data=%A4%D2%A4%C8%A4%C4%B2%B0%BA%AC%A4%CE%B2%BC2&amp;mode=toascii&amp;charset=EUC-JP">EUC-JP Japanese (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%82%D0%82%C6%82%C2%89%AE%8D%AA%82%CC%89%BA2&amp;mode=toascii&amp;charset=SJIS">SHIFT_JIS Japanese (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=Pro%C4%8Dprost%C4%9Bnemluv%C3%AD%C4%8Desky&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Czech</a>
+       <li><a href="http://josefsson.org/idn.php?data=Pro%E8prost%ECnemluv%ED%E8esky&amp;mode=toascii&amp;charset=ISO-8859-2">ISO-8859-2 Czech (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%E0%A4%AF%E0%A4%B9%E0%A4%B2%E0%A5%8B%E0%A4%97%E0%A4%B9%E0%A4%BF%E0%A4%A8%E0%A5%8D%E0%A4%A6%E0%A5%80%E0%A4%95%E0%A5%8D%E0%A4%AF%E0%A5%8B%E0%A4%82%E0%A4%A8%E0%A4%B9%E0%A5%80%E0%A4%82%E0%A4%AC%E0%A5%8B%E0%A4%B2%E0%A4%B8%E0%A4%95%E0%A4%A4%E0%A5%87%E0%A4%B9%E0%A5%88%E0%A4%82&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Hindi Devanagari</a>
+       <li><a href="http://josefsson.org/idn.php?data=%E0%BA%9E%E0%BA%B2%E0%BA%AA%E0%BA%B2%E0%BA%A5%E0%BA%B2%E0%BA%A7&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Lao</a>
+       <li><a href="http://josefsson.org/idn.php?data=bon%C4%A1usa%C4%A7%C4%A7a&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Maltese Malti</a>
+       <li><a href="http://josefsson.org/idn.php?data=bon%F5usa%B1%B1a&amp;mode=toascii&amp;charset=ISO-8859-3">ISO-8859-3 Maltese Malti (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php?data=%CE%B5%CE%BB%CE%BB%CE%B7%CE%BD%CE%B9%CE%BA%CE%AC&amp;mode=toascii&amp;charset=UTF-8">UTF-8 Greek</a>
+       <li><a href="http://josefsson.org/idn.php?data=%E5%EB%EB%E7%ED%E9%EA%DC&amp;mode=toascii&amp;charset=ISO-8859-7">ISO-8859-7 Greek (same as previous)</a>
+       <li><a href="http://josefsson.org/idn.php/?data=%E5%8D%81%E2%80%A4com&profile=Nameprep&mode=toascii&debug=on&charset=UTF-8&lastcharset=UTF-8">U+2024 dot separator example</a>
+    </ul>
+
+
+    <hr>
+    <h2>Error codes</h2>
+
+<pre>
+
+  enum
+  {
+    PUNYCODE_SUCCESS = 0,
+    PUNYCODE_BAD_INPUT,                /* Input is invalid.                       */
+    PUNYCODE_BIG_OUTPUT,       /* Output would exceed the space provided. */
+    PUNYCODE_OVERFLOW          /* Input needs wider integers to process.  */
+  };
+
+
+  typedef enum
+  {
+    STRINGPREP_OK = 0,
+    /* Stringprep errors. */
+    STRINGPREP_CONTAINS_UNASSIGNED = 1,
+    STRINGPREP_CONTAINS_PROHIBITED = 2,
+    STRINGPREP_BIDI_BOTH_L_AND_RAL = 3,
+    STRINGPREP_BIDI_LEADTRAIL_NOT_RAL = 4,
+    STRINGPREP_BIDI_CONTAINS_PROHIBITED = 5,
+    /* Error in calling application. */
+    STRINGPREP_TOO_SMALL_BUFFER = 100,
+    STRINGPREP_PROFILE_ERROR = 101,
+    STRINGPREP_FLAG_ERROR = 102,
+    STRINGPREP_UNKNOWN_PROFILE = 103,
+    /* Internal errors. */
+    STRINGPREP_NFKC_FAILED = 200,
+    STRINGPREP_MALLOC_ERROR = 201
+  } Stringprep_rc;
+
+  typedef enum
+  {
+    IDNA_SUCCESS = 0,
+    IDNA_STRINGPREP_ERROR = 1,
+    IDNA_PUNYCODE_ERROR = 2,
+    IDNA_CONTAINS_NON_LDH = 3,
+    /* Workaround typo in earlier versions. */
+    IDNA_CONTAINS_LDH = IDNA_CONTAINS_NON_LDH,
+    IDNA_CONTAINS_MINUS = 4,
+    IDNA_INVALID_LENGTH = 5,
+    IDNA_NO_ACE_PREFIX = 6,
+    IDNA_ROUNDTRIP_VERIFY_ERROR = 7,
+    IDNA_CONTAINS_ACE_PREFIX = 8,
+    IDNA_ICONV_ERROR = 9,
+    /* Internal errors. */
+    IDNA_MALLOC_ERROR = 201
+  } Idna_rc;
+</pre>
+
+    <hr>
+  </body>
+</html>
diff --git a/csharp/AssemblyInfo.cs b/csharp/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..177a4f0
--- /dev/null
@@ -0,0 +1,58 @@
+using System.Reflection;\r
+using System.Runtime.CompilerServices;\r
+\r
+//\r
+// General Information about an assembly is controlled through the following \r
+// set of attributes. Change these attribute values to modify the information\r
+// associated with an assembly.\r
+//\r
+[assembly: AssemblyTitle("")]\r
+[assembly: AssemblyDescription("")]\r
+[assembly: AssemblyConfiguration("")]\r
+[assembly: AssemblyCompany("")]\r
+[assembly: AssemblyProduct("")]\r
+[assembly: AssemblyCopyright("")]\r
+[assembly: AssemblyTrademark("")]\r
+[assembly: AssemblyCulture("")]                \r
+\r
+//\r
+// Version information for an assembly consists of the following four values:\r
+//\r
+//      Major Version\r
+//      Minor Version \r
+//      Build Number\r
+//      Revision\r
+//\r
+// You can specify all the values or you can default the Revision and Build Numbers \r
+// by using the '*' as shown below:\r
+\r
+[assembly: AssemblyVersion("1.0.*")]\r
+\r
+//\r
+// In order to sign your assembly you must specify a key to use. Refer to the \r
+// Microsoft .NET Framework documentation for more information on assembly signing.\r
+//\r
+// Use the attributes below to control which key is used for signing. \r
+//\r
+// Notes: \r
+//   (*) If no key is specified, the assembly is not signed.\r
+//   (*) KeyName refers to a key that has been installed in the Crypto Service\r
+//       Provider (CSP) on your machine. KeyFile refers to a file which contains\r
+//       a key.\r
+//   (*) If the KeyFile and the KeyName values are both specified, the \r
+//       following processing occurs:\r
+//       (1) If the KeyName can be found in the CSP, that key is used.\r
+//       (2) If the KeyName does not exist and the KeyFile does exist, the key \r
+//           in the KeyFile is installed into the CSP and used.\r
+//   (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.\r
+//       When specifying the KeyFile, the location of the KeyFile should be\r
+//       relative to the project output directory which is\r
+//       %Project Directory%\obj\<configuration>. For example, if your KeyFile is\r
+//       located in the project directory, you would specify the AssemblyKeyFile \r
+//       attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]\r
+//   (*) Delay Signing is an advanced option - see the Microsoft .NET Framework\r
+//       documentation for more information on this.\r
+//\r
+[assembly: AssemblyDelaySign(false)]\r
+[assembly: AssemblyKeyFile("")]\r
+[assembly: AssemblyKeyName("")]\r
diff --git a/csharp/CombiningClass.cs b/csharp/CombiningClass.cs
new file mode 100644 (file)
index 0000000..98911b1
--- /dev/null
@@ -0,0 +1,457 @@
+// Do not edit !!!
+// this file is generated automatically
+
+public class CombiningClass
+{
+       public static readonly int[,] c = new int[,] {
+    { /* Page 3 */\r
+      230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, \r
+      220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, \r
+      230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 4 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 5 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, \r
+      230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, \r
+      0, 24, 25, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 6 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, \r
+      230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 7 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, \r
+      230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 9 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 10 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 11 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 12 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 13 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 14 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 15 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, \r
+      130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 16 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 23 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 24 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 32 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, \r
+      0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 48 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 251 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+    { /* Page 254 */\r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \r
+    },
+  };\r
+
+       public static readonly int[] i = new int[] {
+    -1,\r
+    -1,\r
+    -1,\r
+    0,\r
+    1,\r
+    2,\r
+    3,\r
+    4,\r
+    -1,\r
+    5,\r
+    6,\r
+    7,\r
+    8,\r
+    9,\r
+    10,\r
+    11,\r
+    12,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    13,\r
+    14,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    15,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    16,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    -1,\r
+    17,\r
+    -1,\r
+    -1,\r
+    18,\r
+    -1,\r
+  };
+}
diff --git a/csharp/Composition.cs b/csharp/Composition.cs
new file mode 100644 (file)
index 0000000..d28ca3b
--- /dev/null
@@ -0,0 +1,724 @@
+// Do not edit !!!
+// this file is generated automatically
+
+public class Composition
+{
+       /* jagged Array */
+       public static readonly char[][] multiFirst = new char[][] {
+       new char[] { '\u00C0', '\u00C1', '\u00C2', '\u00C3', '\u0100', '\u0102', '\u0226', '\u00C4', '\u1EA2', '\u00C5', '\u01CD', '\u0200', '\u0202', '\u1EA0', '\u1E00', '\u0104', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E02', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E04', '\u0000', '\u0000', '\u1E06', },
+       new char[] { '\u0000', '\u0106', '\u0108', '\u0000', '\u0000', '\u0000', '\u010A', '\u0000', '\u0000', '\u0000', '\u010C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u00C7', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E0A', '\u0000', '\u0000', '\u0000', '\u010E', '\u0000', '\u0000', '\u1E0C', '\u0000', '\u0000', '\u1E0E', '\u1E10', '\u1E12', },
+       new char[] { '\u00C8', '\u00C9', '\u00CA', '\u1EBC', '\u0112', '\u0114', '\u0116', '\u00CB', '\u1EBA', '\u0000', '\u011A', '\u0204', '\u0206', '\u1EB8', '\u0000', '\u0118', '\u0000', '\u0228', '\u1E18', '\u1E1A', },
+       new char[] { '\u0000', '\u01F4', '\u011C', '\u0000', '\u1E20', '\u011E', '\u0120', '\u0000', '\u0000', '\u0000', '\u01E6', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0122', },
+       new char[] { '\u0000', '\u0000', '\u0124', '\u0000', '\u0000', '\u0000', '\u1E22', '\u1E26', '\u0000', '\u0000', '\u021E', '\u0000', '\u0000', '\u1E24', '\u0000', '\u0000', '\u0000', '\u1E28', '\u0000', '\u0000', '\u1E2A', },
+       new char[] { '\u00CC', '\u00CD', '\u00CE', '\u0128', '\u012A', '\u012C', '\u0130', '\u00CF', '\u1EC8', '\u0000', '\u01CF', '\u0208', '\u020A', '\u1ECA', '\u0000', '\u012E', '\u0000', '\u0000', '\u0000', '\u1E2C', },
+       new char[] { '\u0000', '\u1E30', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01E8', '\u0000', '\u0000', '\u1E32', '\u0000', '\u0000', '\u1E34', '\u0136', },
+       new char[] { '\u0000', '\u0139', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u013D', '\u0000', '\u0000', '\u1E36', '\u0000', '\u0000', '\u1E3A', '\u013B', '\u1E3C', },
+       new char[] { '\u0000', '\u1E3E', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E40', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E42', },
+       new char[] { '\u01F8', '\u0143', '\u0000', '\u00D1', '\u0000', '\u0000', '\u1E44', '\u0000', '\u0000', '\u0000', '\u0147', '\u0000', '\u0000', '\u1E46', '\u0000', '\u0000', '\u1E48', '\u0145', '\u1E4A', },
+       new char[] { '\u00D2', '\u00D3', '\u00D4', '\u00D5', '\u014C', '\u014E', '\u022E', '\u00D6', '\u1ECE', '\u0000', '\u01D1', '\u020C', '\u020E', '\u1ECC', '\u0000', '\u01EA', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0150', '\u01A0', },
+       new char[] { '\u0000', '\u1E54', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E56', },
+       new char[] { '\u0000', '\u0154', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E58', '\u0000', '\u0000', '\u0000', '\u0158', '\u0210', '\u0212', '\u1E5A', '\u0000', '\u0000', '\u1E5E', '\u0156', },
+       new char[] { '\u0000', '\u015A', '\u015C', '\u0000', '\u0000', '\u0000', '\u1E60', '\u0000', '\u0000', '\u0000', '\u0160', '\u0000', '\u0000', '\u1E62', '\u0000', '\u0000', '\u0000', '\u015E', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0218', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E6A', '\u0000', '\u0000', '\u0000', '\u0164', '\u0000', '\u0000', '\u1E6C', '\u0000', '\u0000', '\u1E6E', '\u0162', '\u1E70', '\u0000', '\u0000', '\u0000', '\u0000', '\u021A', },
+       new char[] { '\u00D9', '\u00DA', '\u00DB', '\u0168', '\u016A', '\u016C', '\u0000', '\u00DC', '\u1EE6', '\u016E', '\u01D3', '\u0214', '\u0216', '\u1EE4', '\u0000', '\u0172', '\u0000', '\u0000', '\u1E76', '\u1E74', '\u0000', '\u0170', '\u01AF', '\u0000', '\u1E72', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u1E7C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E7E', },
+       new char[] { '\u1E80', '\u1E82', '\u0174', '\u0000', '\u0000', '\u0000', '\u1E86', '\u1E84', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E88', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E8A', '\u1E8C', },
+       new char[] { '\u1EF2', '\u00DD', '\u0176', '\u1EF8', '\u0232', '\u0000', '\u1E8E', '\u0178', '\u1EF6', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EF4', },
+       new char[] { '\u0000', '\u0179', '\u1E90', '\u0000', '\u0000', '\u0000', '\u017B', '\u0000', '\u0000', '\u0000', '\u017D', '\u0000', '\u0000', '\u1E92', '\u0000', '\u0000', '\u1E94', },
+       new char[] { '\u00E0', '\u00E1', '\u00E2', '\u00E3', '\u0101', '\u0103', '\u0227', '\u00E4', '\u1EA3', '\u00E5', '\u01CE', '\u0201', '\u0203', '\u1EA1', '\u1E01', '\u0105', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E03', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E05', '\u0000', '\u0000', '\u1E07', },
+       new char[] { '\u0000', '\u0107', '\u0109', '\u0000', '\u0000', '\u0000', '\u010B', '\u0000', '\u0000', '\u0000', '\u010D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u00E7', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E0B', '\u0000', '\u0000', '\u0000', '\u010F', '\u0000', '\u0000', '\u1E0D', '\u0000', '\u0000', '\u1E0F', '\u1E11', '\u1E13', },
+       new char[] { '\u00E8', '\u00E9', '\u00EA', '\u1EBD', '\u0113', '\u0115', '\u0117', '\u00EB', '\u1EBB', '\u0000', '\u011B', '\u0205', '\u0207', '\u1EB9', '\u0000', '\u0119', '\u0000', '\u0229', '\u1E19', '\u1E1B', },
+       new char[] { '\u0000', '\u01F5', '\u011D', '\u0000', '\u1E21', '\u011F', '\u0121', '\u0000', '\u0000', '\u0000', '\u01E7', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0123', },
+       new char[] { '\u0000', '\u0000', '\u0125', '\u0000', '\u0000', '\u0000', '\u1E23', '\u1E27', '\u0000', '\u0000', '\u021F', '\u0000', '\u0000', '\u1E25', '\u0000', '\u0000', '\u1E96', '\u1E29', '\u0000', '\u0000', '\u1E2B', },
+       new char[] { '\u00EC', '\u00ED', '\u00EE', '\u0129', '\u012B', '\u012D', '\u0000', '\u00EF', '\u1EC9', '\u0000', '\u01D0', '\u0209', '\u020B', '\u1ECB', '\u0000', '\u012F', '\u0000', '\u0000', '\u0000', '\u1E2D', },
+       new char[] { '\u0000', '\u0000', '\u0135', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01F0', },
+       new char[] { '\u0000', '\u1E31', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01E9', '\u0000', '\u0000', '\u1E33', '\u0000', '\u0000', '\u1E35', '\u0137', },
+       new char[] { '\u0000', '\u013A', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u013E', '\u0000', '\u0000', '\u1E37', '\u0000', '\u0000', '\u1E3B', '\u013C', '\u1E3D', },
+       new char[] { '\u0000', '\u1E3F', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E41', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E43', },
+       new char[] { '\u01F9', '\u0144', '\u0000', '\u00F1', '\u0000', '\u0000', '\u1E45', '\u0000', '\u0000', '\u0000', '\u0148', '\u0000', '\u0000', '\u1E47', '\u0000', '\u0000', '\u1E49', '\u0146', '\u1E4B', },
+       new char[] { '\u00F2', '\u00F3', '\u00F4', '\u00F5', '\u014D', '\u014F', '\u022F', '\u00F6', '\u1ECF', '\u0000', '\u01D2', '\u020D', '\u020F', '\u1ECD', '\u0000', '\u01EB', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0151', '\u01A1', },
+       new char[] { '\u0000', '\u1E55', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E57', },
+       new char[] { '\u0000', '\u0155', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E59', '\u0000', '\u0000', '\u0000', '\u0159', '\u0211', '\u0213', '\u1E5B', '\u0000', '\u0000', '\u1E5F', '\u0157', },
+       new char[] { '\u0000', '\u015B', '\u015D', '\u0000', '\u0000', '\u0000', '\u1E61', '\u0000', '\u0000', '\u0000', '\u0161', '\u0000', '\u0000', '\u1E63', '\u0000', '\u0000', '\u0000', '\u015F', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0219', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E6B', '\u1E97', '\u0000', '\u0000', '\u0165', '\u0000', '\u0000', '\u1E6D', '\u0000', '\u0000', '\u1E6F', '\u0163', '\u1E71', '\u0000', '\u0000', '\u0000', '\u0000', '\u021B', },
+       new char[] { '\u00F9', '\u00FA', '\u00FB', '\u0169', '\u016B', '\u016D', '\u0000', '\u00FC', '\u1EE7', '\u016F', '\u01D4', '\u0215', '\u0217', '\u1EE5', '\u0000', '\u0173', '\u0000', '\u0000', '\u1E77', '\u1E75', '\u0000', '\u0171', '\u01B0', '\u0000', '\u1E73', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u1E7D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E7F', },
+       new char[] { '\u1E81', '\u1E83', '\u0175', '\u0000', '\u0000', '\u0000', '\u1E87', '\u1E85', '\u0000', '\u1E98', '\u0000', '\u0000', '\u0000', '\u1E89', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E8B', '\u1E8D', },
+       new char[] { '\u1EF3', '\u00FD', '\u0177', '\u1EF9', '\u0233', '\u0000', '\u1E8F', '\u00FF', '\u1EF7', '\u1E99', '\u0000', '\u0000', '\u0000', '\u1EF5', },
+       new char[] { '\u0000', '\u017A', '\u1E91', '\u0000', '\u0000', '\u0000', '\u017C', '\u0000', '\u0000', '\u0000', '\u017E', '\u0000', '\u0000', '\u1E93', '\u0000', '\u0000', '\u1E95', },
+       new char[] { '\u1FED', '\u0385', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FC1', },
+       new char[] { '\u1EA6', '\u1EA4', '\u0000', '\u1EAA', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EA8', },
+       new char[] { '\u0000', '\u01FC', '\u0000', '\u0000', '\u01E2', },
+       new char[] { '\u1EC0', '\u1EBE', '\u0000', '\u1EC4', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EC2', },
+       new char[] { '\u1ED2', '\u1ED0', '\u0000', '\u1ED6', '\u0000', '\u0000', '\u0000', '\u0000', '\u1ED4', },
+       new char[] { '\u0000', '\u1E4C', '\u0000', '\u0000', '\u022C', '\u0000', '\u0000', '\u1E4E', },
+       new char[] { '\u01DB', '\u01D7', '\u0000', '\u0000', '\u01D5', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01D9', },
+       new char[] { '\u1EA7', '\u1EA5', '\u0000', '\u1EAB', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EA9', },
+       new char[] { '\u0000', '\u01FD', '\u0000', '\u0000', '\u01E3', },
+       new char[] { '\u1EC1', '\u1EBF', '\u0000', '\u1EC5', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EC3', },
+       new char[] { '\u1ED3', '\u1ED1', '\u0000', '\u1ED7', '\u0000', '\u0000', '\u0000', '\u0000', '\u1ED5', },
+       new char[] { '\u0000', '\u1E4D', '\u0000', '\u0000', '\u022D', '\u0000', '\u0000', '\u1E4F', },
+       new char[] { '\u01DC', '\u01D8', '\u0000', '\u0000', '\u01D6', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01DA', },
+       new char[] { '\u1EB0', '\u1EAE', '\u0000', '\u1EB4', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EB2', },
+       new char[] { '\u1EB1', '\u1EAF', '\u0000', '\u1EB5', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EB3', },
+       new char[] { '\u1E14', '\u1E16', },
+       new char[] { '\u1E15', '\u1E17', },
+       new char[] { '\u1E50', '\u1E52', },
+       new char[] { '\u1E51', '\u1E53', },
+       new char[] { '\u1EDC', '\u1EDA', '\u0000', '\u1EE0', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EDE', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EE2', },
+       new char[] { '\u1EDD', '\u1EDB', '\u0000', '\u1EE1', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EDF', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EE3', },
+       new char[] { '\u1EEA', '\u1EE8', '\u0000', '\u1EEE', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EEC', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EF0', },
+       new char[] { '\u1EEB', '\u1EE9', '\u0000', '\u1EEF', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EED', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EF1', },
+       new char[] { '\u1FBA', '\u0386', '\u0000', '\u0000', '\u1FB9', '\u1FB8', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F08', '\u1F09', '\u1FBC', },
+       new char[] { '\u1FC8', '\u0388', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F18', '\u1F19', },
+       new char[] { '\u1FCA', '\u0389', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F28', '\u1F29', '\u1FCC', },
+       new char[] { '\u1FDA', '\u038A', '\u0000', '\u0000', '\u1FD9', '\u1FD8', '\u0000', '\u03AA', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F38', '\u1F39', },
+       new char[] { '\u1FF8', '\u038C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F48', '\u1F49', },
+       new char[] { '\u1FEA', '\u038E', '\u0000', '\u0000', '\u1FE9', '\u1FE8', '\u0000', '\u03AB', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F59', },
+       new char[] { '\u1FFA', '\u038F', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F68', '\u1F69', '\u1FFC', },
+       new char[] { '\u1F70', '\u03AC', '\u0000', '\u0000', '\u1FB1', '\u1FB0', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FB6', '\u1F00', '\u1F01', '\u1FB3', },
+       new char[] { '\u1F72', '\u03AD', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F10', '\u1F11', },
+       new char[] { '\u1F74', '\u03AE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FC6', '\u1F20', '\u1F21', '\u1FC3', },
+       new char[] { '\u1F76', '\u03AF', '\u0000', '\u0000', '\u1FD1', '\u1FD0', '\u0000', '\u03CA', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FD6', '\u1F30', '\u1F31', },
+       new char[] { '\u1F78', '\u03CC', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F40', '\u1F41', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FE4', '\u1FE5', },
+       new char[] { '\u1F7A', '\u03CD', '\u0000', '\u0000', '\u1FE1', '\u1FE0', '\u0000', '\u03CB', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FE6', '\u1F50', '\u1F51', },
+       new char[] { '\u1F7C', '\u03CE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FF6', '\u1F60', '\u1F61', '\u1FF3', },
+       new char[] { '\u1FD2', '\u0390', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FD7', },
+       new char[] { '\u1FE2', '\u03B0', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FE7', },
+       new char[] { '\u0000', '\u03D3', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u03D4', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D0', '\u0000', '\u04D2', },
+       new char[] { '\u0400', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D6', '\u0000', '\u0401', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04C1', '\u0000', '\u04DC', },
+       new char[] { '\u040D', '\u0000', '\u0000', '\u0000', '\u04E2', '\u0419', '\u0000', '\u04E4', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u04EE', '\u040E', '\u0000', '\u04F0', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04F2', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D1', '\u0000', '\u04D3', },
+       new char[] { '\u0450', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D7', '\u0000', '\u0451', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04C2', '\u0000', '\u04DD', },
+       new char[] { '\u045D', '\u0000', '\u0000', '\u0000', '\u04E3', '\u0439', '\u0000', '\u04E5', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u04EF', '\u045E', '\u0000', '\u04F1', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04F3', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0623', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0BCA', '\u0BCC', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0CC7', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0D4A', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0DDA', },
+       new char[] { '\u0000', '\u0000', '\u1EAC', '\u0000', '\u0000', '\u1EB6', },
+       new char[] { '\u0000', '\u0000', '\u1EAD', '\u0000', '\u0000', '\u1EB7', },
+       new char[] { '\u1F02', '\u1F04', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F06', '\u0000', '\u0000', '\u1F80', },
+       new char[] { '\u1F03', '\u1F05', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F07', '\u0000', '\u0000', '\u1F81', },
+       new char[] { '\u1F0A', '\u1F0C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F0E', '\u0000', '\u0000', '\u1F88', },
+       new char[] { '\u1F0B', '\u1F0D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F0F', '\u0000', '\u0000', '\u1F89', },
+       new char[] { '\u1F12', '\u1F14', },
+       new char[] { '\u1F13', '\u1F15', },
+       new char[] { '\u1F1A', '\u1F1C', },
+       new char[] { '\u1F1B', '\u1F1D', },
+       new char[] { '\u1F22', '\u1F24', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F26', '\u0000', '\u0000', '\u1F90', },
+       new char[] { '\u1F23', '\u1F25', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F27', '\u0000', '\u0000', '\u1F91', },
+       new char[] { '\u1F2A', '\u1F2C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F2E', '\u0000', '\u0000', '\u1F98', },
+       new char[] { '\u1F2B', '\u1F2D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F2F', '\u0000', '\u0000', '\u1F99', },
+       new char[] { '\u1F32', '\u1F34', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F36', },
+       new char[] { '\u1F33', '\u1F35', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F37', },
+       new char[] { '\u1F3A', '\u1F3C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F3E', },
+       new char[] { '\u1F3B', '\u1F3D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F3F', },
+       new char[] { '\u1F42', '\u1F44', },
+       new char[] { '\u1F43', '\u1F45', },
+       new char[] { '\u1F4A', '\u1F4C', },
+       new char[] { '\u1F4B', '\u1F4D', },
+       new char[] { '\u1F52', '\u1F54', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F56', },
+       new char[] { '\u1F53', '\u1F55', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F57', },
+       new char[] { '\u1F5B', '\u1F5D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F5F', },
+       new char[] { '\u1F62', '\u1F64', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F66', '\u0000', '\u0000', '\u1FA0', },
+       new char[] { '\u1F63', '\u1F65', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F67', '\u0000', '\u0000', '\u1FA1', },
+       new char[] { '\u1F6A', '\u1F6C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F6E', '\u0000', '\u0000', '\u1FA8', },
+       new char[] { '\u1F6B', '\u1F6D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F6F', '\u0000', '\u0000', '\u1FA9', },
+       new char[] { '\u1FCD', '\u1FCE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FCF', },
+       new char[] { '\u1FDD', '\u1FDE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FDF', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3070', '\u3071', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3073', '\u3074', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3076', '\u3077', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3079', '\u307A', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u307C', '\u307D', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D0', '\u30D1', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D3', '\u30D4', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D6', '\u30D7', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D9', '\u30DA', },
+       new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30DC', '\u30DD', },
+  };
+       public static readonly char[,] singleFirst = new char[,] {
+    { '\u0338', '\u226E' },
+    { '\u0338', '\u2260' },
+    { '\u0338', '\u226F' },
+    { '\u0307', '\u1E1E' },
+    { '\u0302', '\u0134' },
+    { '\u0307', '\u1E1F' },
+    { '\u0304', '\u01DE' },
+    { '\u0301', '\u01FA' },
+    { '\u0301', '\u1E08' },
+    { '\u0301', '\u1E2E' },
+    { '\u0304', '\u022A' },
+    { '\u0301', '\u01FE' },
+    { '\u0304', '\u01DF' },
+    { '\u0301', '\u01FB' },
+    { '\u0301', '\u1E09' },
+    { '\u0301', '\u1E2F' },
+    { '\u0304', '\u022B' },
+    { '\u0301', '\u01FF' },
+    { '\u0307', '\u1E64' },
+    { '\u0307', '\u1E65' },
+    { '\u0307', '\u1E66' },
+    { '\u0307', '\u1E67' },
+    { '\u0301', '\u1E78' },
+    { '\u0301', '\u1E79' },
+    { '\u0308', '\u1E7A' },
+    { '\u0308', '\u1E7B' },
+    { '\u0307', '\u1E9B' },
+    { '\u030C', '\u01EE' },
+    { '\u0304', '\u01EC' },
+    { '\u0304', '\u01ED' },
+    { '\u0304', '\u01E0' },
+    { '\u0304', '\u01E1' },
+    { '\u0306', '\u1E1C' },
+    { '\u0306', '\u1E1D' },
+    { '\u0304', '\u0230' },
+    { '\u0304', '\u0231' },
+    { '\u030C', '\u01EF' },
+    { '\u0314', '\u1FEC' },
+    { '\u0345', '\u1FB4' },
+    { '\u0345', '\u1FC4' },
+    { '\u0345', '\u1FF4' },
+    { '\u0308', '\u0407' },
+    { '\u0301', '\u0403' },
+    { '\u0308', '\u04DE' },
+    { '\u0301', '\u040C' },
+    { '\u0308', '\u04E6' },
+    { '\u0308', '\u04F4' },
+    { '\u0308', '\u04F8' },
+    { '\u0308', '\u04EC' },
+    { '\u0301', '\u0453' },
+    { '\u0308', '\u04DF' },
+    { '\u0301', '\u045C' },
+    { '\u0308', '\u04E7' },
+    { '\u0308', '\u04F5' },
+    { '\u0308', '\u04F9' },
+    { '\u0308', '\u04ED' },
+    { '\u0308', '\u0457' },
+    { '\u030F', '\u0476' },
+    { '\u030F', '\u0477' },
+    { '\u0308', '\u04DA' },
+    { '\u0308', '\u04DB' },
+    { '\u0308', '\u04EA' },
+    { '\u0308', '\u04EB' },
+    { '\u0654', '\u0624' },
+    { '\u0654', '\u0626' },
+    { '\u0654', '\u06C2' },
+    { '\u0654', '\u06D3' },
+    { '\u0654', '\u06C0' },
+    { '\u093C', '\u0929' },
+    { '\u093C', '\u0931' },
+    { '\u093C', '\u0934' },
+    { '\u0BD7', '\u0B94' },
+    { '\u0BBE', '\u0BCB' },
+    { '\u0C56', '\u0C48' },
+    { '\u0CD5', '\u0CC0' },
+    { '\u0CD5', '\u0CCB' },
+    { '\u0D3E', '\u0D4B' },
+    { '\u0DCA', '\u0DDD' },
+    { '\u102E', '\u1026' },
+    { '\u0304', '\u1E38' },
+    { '\u0304', '\u1E39' },
+    { '\u0304', '\u1E5C' },
+    { '\u0304', '\u1E5D' },
+    { '\u0307', '\u1E68' },
+    { '\u0307', '\u1E69' },
+    { '\u0302', '\u1EC6' },
+    { '\u0302', '\u1EC7' },
+    { '\u0302', '\u1ED8' },
+    { '\u0302', '\u1ED9' },
+    { '\u0345', '\u1F82' },
+    { '\u0345', '\u1F83' },
+    { '\u0345', '\u1F84' },
+    { '\u0345', '\u1F85' },
+    { '\u0345', '\u1F86' },
+    { '\u0345', '\u1F87' },
+    { '\u0345', '\u1F8A' },
+    { '\u0345', '\u1F8B' },
+    { '\u0345', '\u1F8C' },
+    { '\u0345', '\u1F8D' },
+    { '\u0345', '\u1F8E' },
+    { '\u0345', '\u1F8F' },
+    { '\u0345', '\u1F92' },
+    { '\u0345', '\u1F93' },
+    { '\u0345', '\u1F94' },
+    { '\u0345', '\u1F95' },
+    { '\u0345', '\u1F96' },
+    { '\u0345', '\u1F97' },
+    { '\u0345', '\u1F9A' },
+    { '\u0345', '\u1F9B' },
+    { '\u0345', '\u1F9C' },
+    { '\u0345', '\u1F9D' },
+    { '\u0345', '\u1F9E' },
+    { '\u0345', '\u1F9F' },
+    { '\u0345', '\u1FA2' },
+    { '\u0345', '\u1FA3' },
+    { '\u0345', '\u1FA4' },
+    { '\u0345', '\u1FA5' },
+    { '\u0345', '\u1FA6' },
+    { '\u0345', '\u1FA7' },
+    { '\u0345', '\u1FAA' },
+    { '\u0345', '\u1FAB' },
+    { '\u0345', '\u1FAC' },
+    { '\u0345', '\u1FAD' },
+    { '\u0345', '\u1FAE' },
+    { '\u0345', '\u1FAF' },
+    { '\u0345', '\u1FB2' },
+    { '\u0345', '\u1FC2' },
+    { '\u0345', '\u1FF2' },
+    { '\u0345', '\u1FB7' },
+    { '\u0345', '\u1FC7' },
+    { '\u0345', '\u1FF7' },
+    { '\u0338', '\u219A' },
+    { '\u0338', '\u219B' },
+    { '\u0338', '\u21AE' },
+    { '\u0338', '\u21CD' },
+    { '\u0338', '\u21CF' },
+    { '\u0338', '\u21CE' },
+    { '\u0338', '\u2204' },
+    { '\u0338', '\u2209' },
+    { '\u0338', '\u220C' },
+    { '\u0338', '\u2224' },
+    { '\u0338', '\u2226' },
+    { '\u0338', '\u2241' },
+    { '\u0338', '\u2244' },
+    { '\u0338', '\u2247' },
+    { '\u0338', '\u2249' },
+    { '\u0338', '\u226D' },
+    { '\u0338', '\u2262' },
+    { '\u0338', '\u2270' },
+    { '\u0338', '\u2271' },
+    { '\u0338', '\u2274' },
+    { '\u0338', '\u2275' },
+    { '\u0338', '\u2278' },
+    { '\u0338', '\u2279' },
+    { '\u0338', '\u2280' },
+    { '\u0338', '\u2281' },
+    { '\u0338', '\u22E0' },
+    { '\u0338', '\u22E1' },
+    { '\u0338', '\u2284' },
+    { '\u0338', '\u2285' },
+    { '\u0338', '\u2288' },
+    { '\u0338', '\u2289' },
+    { '\u0338', '\u22E2' },
+    { '\u0338', '\u22E3' },
+    { '\u0338', '\u22AC' },
+    { '\u0338', '\u22AD' },
+    { '\u0338', '\u22AE' },
+    { '\u0338', '\u22AF' },
+    { '\u0338', '\u22EA' },
+    { '\u0338', '\u22EB' },
+    { '\u0338', '\u22EC' },
+    { '\u0338', '\u22ED' },
+    { '\u3099', '\u3094' },
+    { '\u3099', '\u304C' },
+    { '\u3099', '\u304E' },
+    { '\u3099', '\u3050' },
+    { '\u3099', '\u3052' },
+    { '\u3099', '\u3054' },
+    { '\u3099', '\u3056' },
+    { '\u3099', '\u3058' },
+    { '\u3099', '\u305A' },
+    { '\u3099', '\u305C' },
+    { '\u3099', '\u305E' },
+    { '\u3099', '\u3060' },
+    { '\u3099', '\u3062' },
+    { '\u3099', '\u3065' },
+    { '\u3099', '\u3067' },
+    { '\u3099', '\u3069' },
+    { '\u3099', '\u309E' },
+    { '\u3099', '\u30F4' },
+    { '\u3099', '\u30AC' },
+    { '\u3099', '\u30AE' },
+    { '\u3099', '\u30B0' },
+    { '\u3099', '\u30B2' },
+    { '\u3099', '\u30B4' },
+    { '\u3099', '\u30B6' },
+    { '\u3099', '\u30B8' },
+    { '\u3099', '\u30BA' },
+    { '\u3099', '\u30BC' },
+    { '\u3099', '\u30BE' },
+    { '\u3099', '\u30C0' },
+    { '\u3099', '\u30C2' },
+    { '\u3099', '\u30C5' },
+    { '\u3099', '\u30C7' },
+    { '\u3099', '\u30C9' },
+    { '\u3099', '\u30F7' },
+    { '\u3099', '\u30F8' },
+    { '\u3099', '\u30F9' },
+    { '\u3099', '\u30FA' },
+    { '\u3099', '\u30FE' },
+  };
+       public static readonly char[,] singleSecond = new char[,] {
+    { '\u0627', '\u0622' },
+    { '\u0627', '\u0625' },
+    { '\u09C7', '\u09CB' },
+    { '\u09C7', '\u09CC' },
+    { '\u0B47', '\u0B4B' },
+    { '\u0B47', '\u0B48' },
+    { '\u0B47', '\u0B4C' },
+    { '\u0CC6', '\u0CCA' },
+    { '\u0CC6', '\u0CC8' },
+    { '\u0D46', '\u0D4C' },
+    { '\u0DD9', '\u0DDC' },
+    { '\u0DD9', '\u0DDE' },
+  };
+       public static readonly int multiSecondStart = 144;
+       public static readonly int singleFirstStart = 181;
+       public static readonly int singleSecondStart = 391;
+       public static readonly int[] composePage = new int[] {
+    0,
+    1,
+    2,
+    3,
+    4,
+    -1,
+    5,
+    -1,
+    -1,
+    6,
+    -1,
+    7,
+    8,
+    9,
+    -1,
+    -1,
+    10,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    11,
+    12,
+    -1,
+    13,
+    14,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    15,
+    -1,
+  };
+       public static readonly int[,] composeData = new int[,] {
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 181, 182, 183, -1, \r
+      -1, 0, 1, 2, 3, 4, 184, 5, 6, 7, 185, 8, 9, 10, 11, 12, \r
+      13, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, \r
+      -1, 23, 24, 25, 26, 27, 186, 28, 29, 30, 31, 32, 33, 34, 35, 36, \r
+      37, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, 48, -1, 187, 188, 49, 189, -1, -1, 50, -1, -1, -1, -1, 190, \r
+      -1, -1, -1, -1, 51, 52, 191, -1, 192, -1, -1, -1, 53, -1, -1, -1, \r
+      -1, -1, 54, -1, 193, 194, 55, 195, -1, -1, 56, -1, -1, -1, -1, 196, \r
+      -1, -1, -1, -1, 57, 58, 197, -1, 198, -1, -1, -1, 59, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, 65, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 199, 200, -1, -1, -1, -1, \r
+      201, 202, -1, -1, -1, -1, -1, -1, 203, 204, 205, 206, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 207, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, \r
+      69, -1, -1, -1, -1, -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 209, 210, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, 211, 212, 213, 214, -1, -1, -1, -1, 215, 216, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, 217, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      144, 145, 146, 147, 148, -1, 149, 150, 151, 152, 153, 165, 154, -1, -1, 155, \r
+      -1, 156, -1, 170, 171, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, -1, \r
+      -1, -1, -1, 157, 168, 158, 167, 161, 159, -1, -1, -1, -1, 162, 164, -1, \r
+      163, 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, 169, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, 70, -1, -1, -1, 71, -1, 72, -1, 73, -1, -1, -1, -1, -1, 74, \r
+      -1, 218, -1, -1, -1, 75, -1, -1, -1, 76, -1, -1, 219, -1, 220, -1, \r
+      -1, 77, -1, -1, -1, 78, -1, 79, -1, 80, -1, -1, -1, -1, -1, 81, \r
+      -1, 82, -1, -1, -1, 83, -1, -1, -1, 84, 85, 86, -1, -1, 221, -1, \r
+      -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      88, -1, -1, 223, -1, 89, 90, 224, 91, -1, 225, -1, -1, -1, 226, -1, \r
+      -1, -1, -1, 92, -1, -1, -1, 227, -1, -1, -1, 228, -1, 229, -1, -1, \r
+      93, -1, -1, 230, -1, 94, 95, 231, 96, -1, 232, -1, -1, -1, 233, -1, \r
+      -1, -1, -1, 97, -1, -1, -1, 234, -1, -1, -1, 235, -1, 236, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, 238, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, 240, 241, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, 242, 243, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, 244, -1, 245, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, 391, 173, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, 247, -1, -1, 248, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, \r
+      250, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, 394, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 174, -1, \r
+      -1, -1, -1, -1, -1, -1, 99, 253, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, \r
+      -1, -1, 398, -1, -1, -1, 100, -1, -1, -1, 256, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, 176, 399, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177, -1, \r
+      -1, -1, -1, -1, -1, -1, 101, 257, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, 400, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 178, -1, -1, -1, -1, 401, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, -1, -1, 258, -1, -1, 402, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, 260, 261, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, -1, -1, -1, -1, \r
+      -1, -1, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      103, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, 266, 267, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 269, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      105, 106, 270, 271, 272, 273, 274, 275, 107, 108, 276, 277, 278, 279, 280, 281, \r
+      109, 110, -1, -1, -1, -1, -1, -1, 111, 112, -1, -1, -1, -1, -1, -1, \r
+      113, 114, 282, 283, 284, 285, 286, 287, 115, 116, 288, 289, 290, 291, 292, 293, \r
+      117, 118, -1, -1, -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, -1, -1, \r
+      121, 122, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, \r
+      125, 126, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, \r
+      128, 129, 294, 295, 296, 297, 298, 299, 130, 131, 300, 301, 302, 303, 304, 305, \r
+      306, -1, -1, -1, 307, -1, -1, -1, -1, -1, -1, -1, 308, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, 309, -1, -1, -1, -1, -1, -1, -1, -1, 132, \r
+      -1, -1, -1, -1, -1, -1, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, 133, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      312, -1, 313, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      315, -1, 316, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, 318, -1, -1, -1, -1, 319, -1, -1, 320, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, 321, -1, 322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, \r
+      -1, -1, -1, 324, -1, 325, -1, -1, 326, -1, -1, -1, -1, 327, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, 328, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, 331, 332, -1, -1, 333, 334, -1, -1, 335, 336, 337, 338, -1, -1, \r
+      -1, -1, 339, 340, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, 345, -1, -1, -1, -1, -1, 346, 347, -1, 348, -1, -1, -1, -1, \r
+      -1, -1, 349, 350, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+    },\r
+       {\r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, 353, -1, -1, -1, -1, 354, -1, 355, -1, 356, \r
+      -1, 357, -1, 358, -1, 359, -1, 360, -1, 361, -1, 362, -1, 363, -1, 364, \r
+      -1, 365, -1, -1, 366, -1, 367, -1, 368, -1, -1, -1, -1, -1, -1, 134, \r
+      -1, -1, 135, -1, -1, 136, -1, -1, 137, -1, -1, 138, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, -1, 369, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, 370, -1, -1, -1, -1, 371, -1, 372, -1, 373, \r
+      -1, 374, -1, 375, -1, 376, -1, 377, -1, 378, -1, 379, -1, 380, -1, 381, \r
+      -1, 382, -1, -1, 383, -1, 384, -1, 385, -1, -1, -1, -1, -1, -1, 139, \r
+      -1, -1, 140, -1, -1, 141, -1, -1, 142, -1, -1, 143, -1, -1, -1, -1, \r
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, \r
+      387, 388, 389, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, \r
+    },\r
+  };
+}
diff --git a/csharp/DecompositionKeys.cs b/csharp/DecompositionKeys.cs
new file mode 100644 (file)
index 0000000..6da06a5
--- /dev/null
@@ -0,0 +1,3605 @@
+// Do not edit !!!
+// this file is generated automatically
+
+public class DecompositionKeys
+{
+       public static readonly int[] k = new int[] {
+    '\u00A0', 0,
+    '\u00A8', 1,
+    '\u00AA', 2,
+    '\u00AF', 3,
+    '\u00B2', 4,
+    '\u00B3', 5,
+    '\u00B4', 6,
+    '\u00B5', 7,
+    '\u00B8', 8,
+    '\u00B9', 9,
+    '\u00BA', 10,
+    '\u00BC', 11,
+    '\u00BD', 12,
+    '\u00BE', 13,
+    '\u00C0', 14,
+    '\u00C1', 15,
+    '\u00C2', 16,
+    '\u00C3', 17,
+    '\u00C4', 18,
+    '\u00C5', 19,
+    '\u00C7', 20,
+    '\u00C8', 21,
+    '\u00C9', 22,
+    '\u00CA', 23,
+    '\u00CB', 24,
+    '\u00CC', 25,
+    '\u00CD', 26,
+    '\u00CE', 27,
+    '\u00CF', 28,
+    '\u00D1', 29,
+    '\u00D2', 30,
+    '\u00D3', 31,
+    '\u00D4', 32,
+    '\u00D5', 33,
+    '\u00D6', 34,
+    '\u00D9', 35,
+    '\u00DA', 36,
+    '\u00DB', 37,
+    '\u00DC', 38,
+    '\u00DD', 39,
+    '\u00E0', 40,
+    '\u00E1', 41,
+    '\u00E2', 42,
+    '\u00E3', 43,
+    '\u00E4', 44,
+    '\u00E5', 45,
+    '\u00E7', 46,
+    '\u00E8', 47,
+    '\u00E9', 48,
+    '\u00EA', 49,
+    '\u00EB', 50,
+    '\u00EC', 51,
+    '\u00ED', 52,
+    '\u00EE', 53,
+    '\u00EF', 54,
+    '\u00F1', 55,
+    '\u00F2', 56,
+    '\u00F3', 57,
+    '\u00F4', 58,
+    '\u00F5', 59,
+    '\u00F6', 60,
+    '\u00F9', 61,
+    '\u00FA', 62,
+    '\u00FB', 63,
+    '\u00FC', 64,
+    '\u00FD', 65,
+    '\u00FF', 66,
+    '\u0100', 67,
+    '\u0101', 68,
+    '\u0102', 69,
+    '\u0103', 70,
+    '\u0104', 71,
+    '\u0105', 72,
+    '\u0106', 73,
+    '\u0107', 74,
+    '\u0108', 75,
+    '\u0109', 76,
+    '\u010A', 77,
+    '\u010B', 78,
+    '\u010C', 79,
+    '\u010D', 80,
+    '\u010E', 81,
+    '\u010F', 82,
+    '\u0112', 83,
+    '\u0113', 84,
+    '\u0114', 85,
+    '\u0115', 86,
+    '\u0116', 87,
+    '\u0117', 88,
+    '\u0118', 89,
+    '\u0119', 90,
+    '\u011A', 91,
+    '\u011B', 92,
+    '\u011C', 93,
+    '\u011D', 94,
+    '\u011E', 95,
+    '\u011F', 96,
+    '\u0120', 97,
+    '\u0121', 98,
+    '\u0122', 99,
+    '\u0123', 100,
+    '\u0124', 101,
+    '\u0125', 102,
+    '\u0128', 103,
+    '\u0129', 104,
+    '\u012A', 105,
+    '\u012B', 106,
+    '\u012C', 107,
+    '\u012D', 108,
+    '\u012E', 109,
+    '\u012F', 110,
+    '\u0130', 111,
+    '\u0132', 112,
+    '\u0133', 113,
+    '\u0134', 114,
+    '\u0135', 115,
+    '\u0136', 116,
+    '\u0137', 117,
+    '\u0139', 118,
+    '\u013A', 119,
+    '\u013B', 120,
+    '\u013C', 121,
+    '\u013D', 122,
+    '\u013E', 123,
+    '\u013F', 124,
+    '\u0140', 125,
+    '\u0143', 126,
+    '\u0144', 127,
+    '\u0145', 128,
+    '\u0146', 129,
+    '\u0147', 130,
+    '\u0148', 131,
+    '\u0149', 132,
+    '\u014C', 133,
+    '\u014D', 134,
+    '\u014E', 135,
+    '\u014F', 136,
+    '\u0150', 137,
+    '\u0151', 138,
+    '\u0154', 139,
+    '\u0155', 140,
+    '\u0156', 141,
+    '\u0157', 142,
+    '\u0158', 143,
+    '\u0159', 144,
+    '\u015A', 145,
+    '\u015B', 146,
+    '\u015C', 147,
+    '\u015D', 148,
+    '\u015E', 149,
+    '\u015F', 150,
+    '\u0160', 151,
+    '\u0161', 152,
+    '\u0162', 153,
+    '\u0163', 154,
+    '\u0164', 155,
+    '\u0165', 156,
+    '\u0168', 157,
+    '\u0169', 158,
+    '\u016A', 159,
+    '\u016B', 160,
+    '\u016C', 161,
+    '\u016D', 162,
+    '\u016E', 163,
+    '\u016F', 164,
+    '\u0170', 165,
+    '\u0171', 166,
+    '\u0172', 167,
+    '\u0173', 168,
+    '\u0174', 169,
+    '\u0175', 170,
+    '\u0176', 171,
+    '\u0177', 172,
+    '\u0178', 173,
+    '\u0179', 174,
+    '\u017A', 175,
+    '\u017B', 176,
+    '\u017C', 177,
+    '\u017D', 178,
+    '\u017E', 179,
+    '\u017F', 180,
+    '\u01A0', 181,
+    '\u01A1', 182,
+    '\u01AF', 183,
+    '\u01B0', 184,
+    '\u01C4', 185,
+    '\u01C5', 186,
+    '\u01C6', 187,
+    '\u01C7', 188,
+    '\u01C8', 189,
+    '\u01C9', 190,
+    '\u01CA', 191,
+    '\u01CB', 192,
+    '\u01CC', 193,
+    '\u01CD', 194,
+    '\u01CE', 195,
+    '\u01CF', 196,
+    '\u01D0', 197,
+    '\u01D1', 198,
+    '\u01D2', 199,
+    '\u01D3', 200,
+    '\u01D4', 201,
+    '\u01D5', 202,
+    '\u01D6', 203,
+    '\u01D7', 204,
+    '\u01D8', 205,
+    '\u01D9', 206,
+    '\u01DA', 207,
+    '\u01DB', 208,
+    '\u01DC', 209,
+    '\u01DE', 210,
+    '\u01DF', 211,
+    '\u01E0', 212,
+    '\u01E1', 213,
+    '\u01E2', 214,
+    '\u01E3', 215,
+    '\u01E6', 216,
+    '\u01E7', 217,
+    '\u01E8', 218,
+    '\u01E9', 219,
+    '\u01EA', 220,
+    '\u01EB', 221,
+    '\u01EC', 222,
+    '\u01ED', 223,
+    '\u01EE', 224,
+    '\u01EF', 225,
+    '\u01F0', 226,
+    '\u01F1', 227,
+    '\u01F2', 228,
+    '\u01F3', 229,
+    '\u01F4', 230,
+    '\u01F5', 231,
+    '\u01F8', 232,
+    '\u01F9', 233,
+    '\u01FA', 234,
+    '\u01FB', 235,
+    '\u01FC', 236,
+    '\u01FD', 237,
+    '\u01FE', 238,
+    '\u01FF', 239,
+    '\u0200', 240,
+    '\u0201', 241,
+    '\u0202', 242,
+    '\u0203', 243,
+    '\u0204', 244,
+    '\u0205', 245,
+    '\u0206', 246,
+    '\u0207', 247,
+    '\u0208', 248,
+    '\u0209', 249,
+    '\u020A', 250,
+    '\u020B', 251,
+    '\u020C', 252,
+    '\u020D', 253,
+    '\u020E', 254,
+    '\u020F', 255,
+    '\u0210', 256,
+    '\u0211', 257,
+    '\u0212', 258,
+    '\u0213', 259,
+    '\u0214', 260,
+    '\u0215', 261,
+    '\u0216', 262,
+    '\u0217', 263,
+    '\u0218', 264,
+    '\u0219', 265,
+    '\u021A', 266,
+    '\u021B', 267,
+    '\u021E', 268,
+    '\u021F', 269,
+    '\u0226', 270,
+    '\u0227', 271,
+    '\u0228', 272,
+    '\u0229', 273,
+    '\u022A', 274,
+    '\u022B', 275,
+    '\u022C', 276,
+    '\u022D', 277,
+    '\u022E', 278,
+    '\u022F', 279,
+    '\u0230', 280,
+    '\u0231', 281,
+    '\u0232', 282,
+    '\u0233', 283,
+    '\u02B0', 284,
+    '\u02B1', 285,
+    '\u02B2', 286,
+    '\u02B3', 287,
+    '\u02B4', 288,
+    '\u02B5', 289,
+    '\u02B6', 290,
+    '\u02B7', 291,
+    '\u02B8', 292,
+    '\u02D8', 293,
+    '\u02D9', 294,
+    '\u02DA', 295,
+    '\u02DB', 296,
+    '\u02DC', 297,
+    '\u02DD', 298,
+    '\u02E0', 299,
+    '\u02E1', 300,
+    '\u02E2', 180,
+    '\u02E3', 301,
+    '\u02E4', 302,
+    '\u0340', 303,
+    '\u0341', 304,
+    '\u0343', 305,
+    '\u0344', 306,
+    '\u0374', 307,
+    '\u037A', 308,
+    '\u037E', 309,
+    '\u0384', 6,
+    '\u0385', 310,
+    '\u0386', 311,
+    '\u0387', 312,
+    '\u0388', 313,
+    '\u0389', 314,
+    '\u038A', 315,
+    '\u038C', 316,
+    '\u038E', 317,
+    '\u038F', 318,
+    '\u0390', 319,
+    '\u03AA', 320,
+    '\u03AB', 321,
+    '\u03AC', 322,
+    '\u03AD', 323,
+    '\u03AE', 324,
+    '\u03AF', 325,
+    '\u03B0', 326,
+    '\u03CA', 327,
+    '\u03CB', 328,
+    '\u03CC', 329,
+    '\u03CD', 330,
+    '\u03CE', 331,
+    '\u03D0', 332,
+    '\u03D1', 333,
+    '\u03D2', 334,
+    '\u03D3', 317,
+    '\u03D4', 321,
+    '\u03D5', 335,
+    '\u03D6', 336,
+    '\u03F0', 337,
+    '\u03F1', 338,
+    '\u03F2', 339,
+    '\u03F4', 340,
+    '\u03F5', 341,
+    '\u0400', 342,
+    '\u0401', 343,
+    '\u0403', 344,
+    '\u0407', 345,
+    '\u040C', 346,
+    '\u040D', 347,
+    '\u040E', 348,
+    '\u0419', 349,
+    '\u0439', 350,
+    '\u0450', 351,
+    '\u0451', 352,
+    '\u0453', 353,
+    '\u0457', 354,
+    '\u045C', 355,
+    '\u045D', 356,
+    '\u045E', 357,
+    '\u0476', 358,
+    '\u0477', 359,
+    '\u04C1', 360,
+    '\u04C2', 361,
+    '\u04D0', 362,
+    '\u04D1', 363,
+    '\u04D2', 364,
+    '\u04D3', 365,
+    '\u04D6', 366,
+    '\u04D7', 367,
+    '\u04DA', 368,
+    '\u04DB', 369,
+    '\u04DC', 370,
+    '\u04DD', 371,
+    '\u04DE', 372,
+    '\u04DF', 373,
+    '\u04E2', 374,
+    '\u04E3', 375,
+    '\u04E4', 376,
+    '\u04E5', 377,
+    '\u04E6', 378,
+    '\u04E7', 379,
+    '\u04EA', 380,
+    '\u04EB', 381,
+    '\u04EC', 382,
+    '\u04ED', 383,
+    '\u04EE', 384,
+    '\u04EF', 385,
+    '\u04F0', 386,
+    '\u04F1', 387,
+    '\u04F2', 388,
+    '\u04F3', 389,
+    '\u04F4', 390,
+    '\u04F5', 391,
+    '\u04F8', 392,
+    '\u04F9', 393,
+    '\u0587', 394,
+    '\u0622', 395,
+    '\u0623', 396,
+    '\u0624', 397,
+    '\u0625', 398,
+    '\u0626', 399,
+    '\u0675', 400,
+    '\u0676', 401,
+    '\u0677', 402,
+    '\u0678', 403,
+    '\u06C0', 404,
+    '\u06C2', 405,
+    '\u06D3', 406,
+    '\u0929', 407,
+    '\u0931', 408,
+    '\u0934', 409,
+    '\u0958', 410,
+    '\u0959', 411,
+    '\u095A', 412,
+    '\u095B', 413,
+    '\u095C', 414,
+    '\u095D', 415,
+    '\u095E', 416,
+    '\u095F', 417,
+    '\u09CB', 418,
+    '\u09CC', 419,
+    '\u09DC', 420,
+    '\u09DD', 421,
+    '\u09DF', 422,
+    '\u0A33', 423,
+    '\u0A36', 424,
+    '\u0A59', 425,
+    '\u0A5A', 426,
+    '\u0A5B', 427,
+    '\u0A5E', 428,
+    '\u0B48', 429,
+    '\u0B4B', 430,
+    '\u0B4C', 431,
+    '\u0B5C', 432,
+    '\u0B5D', 433,
+    '\u0B94', 434,
+    '\u0BCA', 435,
+    '\u0BCB', 436,
+    '\u0BCC', 437,
+    '\u0C48', 438,
+    '\u0CC0', 439,
+    '\u0CC7', 440,
+    '\u0CC8', 441,
+    '\u0CCA', 442,
+    '\u0CCB', 443,
+    '\u0D4A', 444,
+    '\u0D4B', 445,
+    '\u0D4C', 446,
+    '\u0DDA', 447,
+    '\u0DDC', 448,
+    '\u0DDD', 449,
+    '\u0DDE', 450,
+    '\u0E33', 451,
+    '\u0EB3', 452,
+    '\u0EDC', 453,
+    '\u0EDD', 454,
+    '\u0F0C', 455,
+    '\u0F43', 456,
+    '\u0F4D', 457,
+    '\u0F52', 458,
+    '\u0F57', 459,
+    '\u0F5C', 460,
+    '\u0F69', 461,
+    '\u0F73', 462,
+    '\u0F75', 463,
+    '\u0F76', 464,
+    '\u0F77', 465,
+    '\u0F78', 466,
+    '\u0F79', 467,
+    '\u0F81', 468,
+    '\u0F93', 469,
+    '\u0F9D', 470,
+    '\u0FA2', 471,
+    '\u0FA7', 472,
+    '\u0FAC', 473,
+    '\u0FB9', 474,
+    '\u1026', 475,
+    '\u1E00', 476,
+    '\u1E01', 477,
+    '\u1E02', 478,
+    '\u1E03', 479,
+    '\u1E04', 480,
+    '\u1E05', 481,
+    '\u1E06', 482,
+    '\u1E07', 483,
+    '\u1E08', 484,
+    '\u1E09', 485,
+    '\u1E0A', 486,
+    '\u1E0B', 487,
+    '\u1E0C', 488,
+    '\u1E0D', 489,
+    '\u1E0E', 490,
+    '\u1E0F', 491,
+    '\u1E10', 492,
+    '\u1E11', 493,
+    '\u1E12', 494,
+    '\u1E13', 495,
+    '\u1E14', 496,
+    '\u1E15', 497,
+    '\u1E16', 498,
+    '\u1E17', 499,
+    '\u1E18', 500,
+    '\u1E19', 501,
+    '\u1E1A', 502,
+    '\u1E1B', 503,
+    '\u1E1C', 504,
+    '\u1E1D', 505,
+    '\u1E1E', 506,
+    '\u1E1F', 507,
+    '\u1E20', 508,
+    '\u1E21', 509,
+    '\u1E22', 510,
+    '\u1E23', 511,
+    '\u1E24', 512,
+    '\u1E25', 513,
+    '\u1E26', 514,
+    '\u1E27', 515,
+    '\u1E28', 516,
+    '\u1E29', 517,
+    '\u1E2A', 518,
+    '\u1E2B', 519,
+    '\u1E2C', 520,
+    '\u1E2D', 521,
+    '\u1E2E', 522,
+    '\u1E2F', 523,
+    '\u1E30', 524,
+    '\u1E31', 525,
+    '\u1E32', 526,
+    '\u1E33', 527,
+    '\u1E34', 528,
+    '\u1E35', 529,
+    '\u1E36', 530,
+    '\u1E37', 531,
+    '\u1E38', 532,
+    '\u1E39', 533,
+    '\u1E3A', 534,
+    '\u1E3B', 535,
+    '\u1E3C', 536,
+    '\u1E3D', 537,
+    '\u1E3E', 538,
+    '\u1E3F', 539,
+    '\u1E40', 540,
+    '\u1E41', 541,
+    '\u1E42', 542,
+    '\u1E43', 543,
+    '\u1E44', 544,
+    '\u1E45', 545,
+    '\u1E46', 546,
+    '\u1E47', 547,
+    '\u1E48', 548,
+    '\u1E49', 549,
+    '\u1E4A', 550,
+    '\u1E4B', 551,
+    '\u1E4C', 552,
+    '\u1E4D', 553,
+    '\u1E4E', 554,
+    '\u1E4F', 555,
+    '\u1E50', 556,
+    '\u1E51', 557,
+    '\u1E52', 558,
+    '\u1E53', 559,
+    '\u1E54', 560,
+    '\u1E55', 561,
+    '\u1E56', 562,
+    '\u1E57', 563,
+    '\u1E58', 564,
+    '\u1E59', 565,
+    '\u1E5A', 566,
+    '\u1E5B', 567,
+    '\u1E5C', 568,
+    '\u1E5D', 569,
+    '\u1E5E', 570,
+    '\u1E5F', 571,
+    '\u1E60', 572,
+    '\u1E61', 573,
+    '\u1E62', 574,
+    '\u1E63', 575,
+    '\u1E64', 576,
+    '\u1E65', 577,
+    '\u1E66', 578,
+    '\u1E67', 579,
+    '\u1E68', 580,
+    '\u1E69', 581,
+    '\u1E6A', 582,
+    '\u1E6B', 583,
+    '\u1E6C', 584,
+    '\u1E6D', 585,
+    '\u1E6E', 586,
+    '\u1E6F', 587,
+    '\u1E70', 588,
+    '\u1E71', 589,
+    '\u1E72', 590,
+    '\u1E73', 591,
+    '\u1E74', 592,
+    '\u1E75', 593,
+    '\u1E76', 594,
+    '\u1E77', 595,
+    '\u1E78', 596,
+    '\u1E79', 597,
+    '\u1E7A', 598,
+    '\u1E7B', 599,
+    '\u1E7C', 600,
+    '\u1E7D', 601,
+    '\u1E7E', 602,
+    '\u1E7F', 603,
+    '\u1E80', 604,
+    '\u1E81', 605,
+    '\u1E82', 606,
+    '\u1E83', 607,
+    '\u1E84', 608,
+    '\u1E85', 609,
+    '\u1E86', 610,
+    '\u1E87', 611,
+    '\u1E88', 612,
+    '\u1E89', 613,
+    '\u1E8A', 614,
+    '\u1E8B', 615,
+    '\u1E8C', 616,
+    '\u1E8D', 617,
+    '\u1E8E', 618,
+    '\u1E8F', 619,
+    '\u1E90', 620,
+    '\u1E91', 621,
+    '\u1E92', 622,
+    '\u1E93', 623,
+    '\u1E94', 624,
+    '\u1E95', 625,
+    '\u1E96', 626,
+    '\u1E97', 627,
+    '\u1E98', 628,
+    '\u1E99', 629,
+    '\u1E9A', 630,
+    '\u1E9B', 573,
+    '\u1EA0', 631,
+    '\u1EA1', 632,
+    '\u1EA2', 633,
+    '\u1EA3', 634,
+    '\u1EA4', 635,
+    '\u1EA5', 636,
+    '\u1EA6', 637,
+    '\u1EA7', 638,
+    '\u1EA8', 639,
+    '\u1EA9', 640,
+    '\u1EAA', 641,
+    '\u1EAB', 642,
+    '\u1EAC', 643,
+    '\u1EAD', 644,
+    '\u1EAE', 645,
+    '\u1EAF', 646,
+    '\u1EB0', 647,
+    '\u1EB1', 648,
+    '\u1EB2', 649,
+    '\u1EB3', 650,
+    '\u1EB4', 651,
+    '\u1EB5', 652,
+    '\u1EB6', 653,
+    '\u1EB7', 654,
+    '\u1EB8', 655,
+    '\u1EB9', 656,
+    '\u1EBA', 657,
+    '\u1EBB', 658,
+    '\u1EBC', 659,
+    '\u1EBD', 660,
+    '\u1EBE', 661,
+    '\u1EBF', 662,
+    '\u1EC0', 663,
+    '\u1EC1', 664,
+    '\u1EC2', 665,
+    '\u1EC3', 666,
+    '\u1EC4', 667,
+    '\u1EC5', 668,
+    '\u1EC6', 669,
+    '\u1EC7', 670,
+    '\u1EC8', 671,
+    '\u1EC9', 672,
+    '\u1ECA', 673,
+    '\u1ECB', 674,
+    '\u1ECC', 675,
+    '\u1ECD', 676,
+    '\u1ECE', 677,
+    '\u1ECF', 678,
+    '\u1ED0', 679,
+    '\u1ED1', 680,
+    '\u1ED2', 681,
+    '\u1ED3', 682,
+    '\u1ED4', 683,
+    '\u1ED5', 684,
+    '\u1ED6', 685,
+    '\u1ED7', 686,
+    '\u1ED8', 687,
+    '\u1ED9', 688,
+    '\u1EDA', 689,
+    '\u1EDB', 690,
+    '\u1EDC', 691,
+    '\u1EDD', 692,
+    '\u1EDE', 693,
+    '\u1EDF', 694,
+    '\u1EE0', 695,
+    '\u1EE1', 696,
+    '\u1EE2', 697,
+    '\u1EE3', 698,
+    '\u1EE4', 699,
+    '\u1EE5', 700,
+    '\u1EE6', 701,
+    '\u1EE7', 702,
+    '\u1EE8', 703,
+    '\u1EE9', 704,
+    '\u1EEA', 705,
+    '\u1EEB', 706,
+    '\u1EEC', 707,
+    '\u1EED', 708,
+    '\u1EEE', 709,
+    '\u1EEF', 710,
+    '\u1EF0', 711,
+    '\u1EF1', 712,
+    '\u1EF2', 713,
+    '\u1EF3', 714,
+    '\u1EF4', 715,
+    '\u1EF5', 716,
+    '\u1EF6', 717,
+    '\u1EF7', 718,
+    '\u1EF8', 719,
+    '\u1EF9', 720,
+    '\u1F00', 721,
+    '\u1F01', 722,
+    '\u1F02', 723,
+    '\u1F03', 724,
+    '\u1F04', 725,
+    '\u1F05', 726,
+    '\u1F06', 727,
+    '\u1F07', 728,
+    '\u1F08', 729,
+    '\u1F09', 730,
+    '\u1F0A', 731,
+    '\u1F0B', 732,
+    '\u1F0C', 733,
+    '\u1F0D', 734,
+    '\u1F0E', 735,
+    '\u1F0F', 736,
+    '\u1F10', 737,
+    '\u1F11', 738,
+    '\u1F12', 739,
+    '\u1F13', 740,
+    '\u1F14', 741,
+    '\u1F15', 742,
+    '\u1F18', 743,
+    '\u1F19', 744,
+    '\u1F1A', 745,
+    '\u1F1B', 746,
+    '\u1F1C', 747,
+    '\u1F1D', 748,
+    '\u1F20', 749,
+    '\u1F21', 750,
+    '\u1F22', 751,
+    '\u1F23', 752,
+    '\u1F24', 753,
+    '\u1F25', 754,
+    '\u1F26', 755,
+    '\u1F27', 756,
+    '\u1F28', 757,
+    '\u1F29', 758,
+    '\u1F2A', 759,
+    '\u1F2B', 760,
+    '\u1F2C', 761,
+    '\u1F2D', 762,
+    '\u1F2E', 763,
+    '\u1F2F', 764,
+    '\u1F30', 765,
+    '\u1F31', 766,
+    '\u1F32', 767,
+    '\u1F33', 768,
+    '\u1F34', 769,
+    '\u1F35', 770,
+    '\u1F36', 771,
+    '\u1F37', 772,
+    '\u1F38', 773,
+    '\u1F39', 774,
+    '\u1F3A', 775,
+    '\u1F3B', 776,
+    '\u1F3C', 777,
+    '\u1F3D', 778,
+    '\u1F3E', 779,
+    '\u1F3F', 780,
+    '\u1F40', 781,
+    '\u1F41', 782,
+    '\u1F42', 783,
+    '\u1F43', 784,
+    '\u1F44', 785,
+    '\u1F45', 786,
+    '\u1F48', 787,
+    '\u1F49', 788,
+    '\u1F4A', 789,
+    '\u1F4B', 790,
+    '\u1F4C', 791,
+    '\u1F4D', 792,
+    '\u1F50', 793,
+    '\u1F51', 794,
+    '\u1F52', 795,
+    '\u1F53', 796,
+    '\u1F54', 797,
+    '\u1F55', 798,
+    '\u1F56', 799,
+    '\u1F57', 800,
+    '\u1F59', 801,
+    '\u1F5B', 802,
+    '\u1F5D', 803,
+    '\u1F5F', 804,
+    '\u1F60', 805,
+    '\u1F61', 806,
+    '\u1F62', 807,
+    '\u1F63', 808,
+    '\u1F64', 809,
+    '\u1F65', 810,
+    '\u1F66', 811,
+    '\u1F67', 812,
+    '\u1F68', 813,
+    '\u1F69', 814,
+    '\u1F6A', 815,
+    '\u1F6B', 816,
+    '\u1F6C', 817,
+    '\u1F6D', 818,
+    '\u1F6E', 819,
+    '\u1F6F', 820,
+    '\u1F70', 821,
+    '\u1F71', 322,
+    '\u1F72', 822,
+    '\u1F73', 323,
+    '\u1F74', 823,
+    '\u1F75', 324,
+    '\u1F76', 824,
+    '\u1F77', 325,
+    '\u1F78', 825,
+    '\u1F79', 329,
+    '\u1F7A', 826,
+    '\u1F7B', 330,
+    '\u1F7C', 827,
+    '\u1F7D', 331,
+    '\u1F80', 828,
+    '\u1F81', 829,
+    '\u1F82', 830,
+    '\u1F83', 831,
+    '\u1F84', 832,
+    '\u1F85', 833,
+    '\u1F86', 834,
+    '\u1F87', 835,
+    '\u1F88', 836,
+    '\u1F89', 837,
+    '\u1F8A', 838,
+    '\u1F8B', 839,
+    '\u1F8C', 840,
+    '\u1F8D', 841,
+    '\u1F8E', 842,
+    '\u1F8F', 843,
+    '\u1F90', 844,
+    '\u1F91', 845,
+    '\u1F92', 846,
+    '\u1F93', 847,
+    '\u1F94', 848,
+    '\u1F95', 849,
+    '\u1F96', 850,
+    '\u1F97', 851,
+    '\u1F98', 852,
+    '\u1F99', 853,
+    '\u1F9A', 854,
+    '\u1F9B', 855,
+    '\u1F9C', 856,
+    '\u1F9D', 857,
+    '\u1F9E', 858,
+    '\u1F9F', 859,
+    '\u1FA0', 860,
+    '\u1FA1', 861,
+    '\u1FA2', 862,
+    '\u1FA3', 863,
+    '\u1FA4', 864,
+    '\u1FA5', 865,
+    '\u1FA6', 866,
+    '\u1FA7', 867,
+    '\u1FA8', 868,
+    '\u1FA9', 869,
+    '\u1FAA', 870,
+    '\u1FAB', 871,
+    '\u1FAC', 872,
+    '\u1FAD', 873,
+    '\u1FAE', 874,
+    '\u1FAF', 875,
+    '\u1FB0', 876,
+    '\u1FB1', 877,
+    '\u1FB2', 878,
+    '\u1FB3', 879,
+    '\u1FB4', 880,
+    '\u1FB6', 881,
+    '\u1FB7', 882,
+    '\u1FB8', 883,
+    '\u1FB9', 884,
+    '\u1FBA', 885,
+    '\u1FBB', 311,
+    '\u1FBC', 886,
+    '\u1FBD', 887,
+    '\u1FBE', 888,
+    '\u1FBF', 887,
+    '\u1FC0', 889,
+    '\u1FC1', 890,
+    '\u1FC2', 891,
+    '\u1FC3', 892,
+    '\u1FC4', 893,
+    '\u1FC6', 894,
+    '\u1FC7', 895,
+    '\u1FC8', 896,
+    '\u1FC9', 313,
+    '\u1FCA', 897,
+    '\u1FCB', 314,
+    '\u1FCC', 898,
+    '\u1FCD', 899,
+    '\u1FCE', 900,
+    '\u1FCF', 901,
+    '\u1FD0', 902,
+    '\u1FD1', 903,
+    '\u1FD2', 904,
+    '\u1FD3', 319,
+    '\u1FD6', 905,
+    '\u1FD7', 906,
+    '\u1FD8', 907,
+    '\u1FD9', 908,
+    '\u1FDA', 909,
+    '\u1FDB', 315,
+    '\u1FDD', 910,
+    '\u1FDE', 911,
+    '\u1FDF', 912,
+    '\u1FE0', 913,
+    '\u1FE1', 914,
+    '\u1FE2', 915,
+    '\u1FE3', 326,
+    '\u1FE4', 916,
+    '\u1FE5', 917,
+    '\u1FE6', 918,
+    '\u1FE7', 919,
+    '\u1FE8', 920,
+    '\u1FE9', 921,
+    '\u1FEA', 922,
+    '\u1FEB', 317,
+    '\u1FEC', 923,
+    '\u1FED', 924,
+    '\u1FEE', 310,
+    '\u1FEF', 925,
+    '\u1FF2', 926,
+    '\u1FF3', 927,
+    '\u1FF4', 928,
+    '\u1FF6', 929,
+    '\u1FF7', 930,
+    '\u1FF8', 931,
+    '\u1FF9', 316,
+    '\u1FFA', 932,
+    '\u1FFB', 318,
+    '\u1FFC', 933,
+    '\u1FFD', 6,
+    '\u1FFE', 934,
+    '\u2000', 0,
+    '\u2001', 0,
+    '\u2002', 0,
+    '\u2003', 0,
+    '\u2004', 0,
+    '\u2005', 0,
+    '\u2006', 0,
+    '\u2007', 0,
+    '\u2008', 0,
+    '\u2009', 0,
+    '\u200A', 0,
+    '\u2011', 935,
+    '\u2017', 936,
+    '\u2024', 937,
+    '\u2025', 938,
+    '\u2026', 939,
+    '\u202F', 0,
+    '\u2033', 940,
+    '\u2034', 941,
+    '\u2036', 942,
+    '\u2037', 943,
+    '\u203C', 944,
+    '\u203E', 945,
+    '\u2047', 946,
+    '\u2048', 947,
+    '\u2049', 948,
+    '\u2057', 949,
+    '\u205F', 0,
+    '\u2070', 950,
+    '\u2071', 951,
+    '\u2074', 952,
+    '\u2075', 953,
+    '\u2076', 954,
+    '\u2077', 955,
+    '\u2078', 956,
+    '\u2079', 957,
+    '\u207A', 958,
+    '\u207B', 959,
+    '\u207C', 960,
+    '\u207D', 961,
+    '\u207E', 962,
+    '\u207F', 963,
+    '\u2080', 950,
+    '\u2081', 9,
+    '\u2082', 4,
+    '\u2083', 5,
+    '\u2084', 952,
+    '\u2085', 953,
+    '\u2086', 954,
+    '\u2087', 955,
+    '\u2088', 956,
+    '\u2089', 957,
+    '\u208A', 958,
+    '\u208B', 959,
+    '\u208C', 960,
+    '\u208D', 961,
+    '\u208E', 962,
+    '\u20A8', 964,
+    '\u2100', 965,
+    '\u2101', 966,
+    '\u2102', 967,
+    '\u2103', 968,
+    '\u2105', 969,
+    '\u2106', 970,
+    '\u2107', 971,
+    '\u2109', 972,
+    '\u210A', 973,
+    '\u210B', 974,
+    '\u210C', 974,
+    '\u210D', 974,
+    '\u210E', 284,
+    '\u210F', 975,
+    '\u2110', 976,
+    '\u2111', 976,
+    '\u2112', 977,
+    '\u2113', 300,
+    '\u2115', 978,
+    '\u2116', 979,
+    '\u2119', 980,
+    '\u211A', 981,
+    '\u211B', 982,
+    '\u211C', 982,
+    '\u211D', 982,
+    '\u2120', 983,
+    '\u2121', 984,
+    '\u2122', 985,
+    '\u2124', 986,
+    '\u2126', 987,
+    '\u2128', 986,
+    '\u212A', 988,
+    '\u212B', 19,
+    '\u212C', 989,
+    '\u212D', 967,
+    '\u212F', 990,
+    '\u2130', 991,
+    '\u2131', 992,
+    '\u2133', 993,
+    '\u2134', 10,
+    '\u2135', 994,
+    '\u2136', 995,
+    '\u2137', 996,
+    '\u2138', 997,
+    '\u2139', 951,
+    '\u213D', 998,
+    '\u213E', 999,
+    '\u213F', 1000,
+    '\u2140', 1001,
+    '\u2145', 1002,
+    '\u2146', 1003,
+    '\u2147', 990,
+    '\u2148', 951,
+    '\u2149', 286,
+    '\u2153', 1004,
+    '\u2154', 1005,
+    '\u2155', 1006,
+    '\u2156', 1007,
+    '\u2157', 1008,
+    '\u2158', 1009,
+    '\u2159', 1010,
+    '\u215A', 1011,
+    '\u215B', 1012,
+    '\u215C', 1013,
+    '\u215D', 1014,
+    '\u215E', 1015,
+    '\u215F', 1016,
+    '\u2160', 976,
+    '\u2161', 1017,
+    '\u2162', 1018,
+    '\u2163', 1019,
+    '\u2164', 1020,
+    '\u2165', 1021,
+    '\u2166', 1022,
+    '\u2167', 1023,
+    '\u2168', 1024,
+    '\u2169', 1025,
+    '\u216A', 1026,
+    '\u216B', 1027,
+    '\u216C', 977,
+    '\u216D', 967,
+    '\u216E', 1002,
+    '\u216F', 993,
+    '\u2170', 951,
+    '\u2171', 1028,
+    '\u2172', 1029,
+    '\u2173', 1030,
+    '\u2174', 1031,
+    '\u2175', 1032,
+    '\u2176', 1033,
+    '\u2177', 1034,
+    '\u2178', 1035,
+    '\u2179', 301,
+    '\u217A', 1036,
+    '\u217B', 1037,
+    '\u217C', 300,
+    '\u217D', 1038,
+    '\u217E', 1003,
+    '\u217F', 1039,
+    '\u219A', 1040,
+    '\u219B', 1041,
+    '\u21AE', 1042,
+    '\u21CD', 1043,
+    '\u21CE', 1044,
+    '\u21CF', 1045,
+    '\u2204', 1046,
+    '\u2209', 1047,
+    '\u220C', 1048,
+    '\u2224', 1049,
+    '\u2226', 1050,
+    '\u222C', 1051,
+    '\u222D', 1052,
+    '\u222F', 1053,
+    '\u2230', 1054,
+    '\u2241', 1055,
+    '\u2244', 1056,
+    '\u2247', 1057,
+    '\u2249', 1058,
+    '\u2260', 1059,
+    '\u2262', 1060,
+    '\u226D', 1061,
+    '\u226E', 1062,
+    '\u226F', 1063,
+    '\u2270', 1064,
+    '\u2271', 1065,
+    '\u2274', 1066,
+    '\u2275', 1067,
+    '\u2278', 1068,
+    '\u2279', 1069,
+    '\u2280', 1070,
+    '\u2281', 1071,
+    '\u2284', 1072,
+    '\u2285', 1073,
+    '\u2288', 1074,
+    '\u2289', 1075,
+    '\u22AC', 1076,
+    '\u22AD', 1077,
+    '\u22AE', 1078,
+    '\u22AF', 1079,
+    '\u22E0', 1080,
+    '\u22E1', 1081,
+    '\u22E2', 1082,
+    '\u22E3', 1083,
+    '\u22EA', 1084,
+    '\u22EB', 1085,
+    '\u22EC', 1086,
+    '\u22ED', 1087,
+    '\u2329', 1088,
+    '\u232A', 1089,
+    '\u2460', 9,
+    '\u2461', 4,
+    '\u2462', 5,
+    '\u2463', 952,
+    '\u2464', 953,
+    '\u2465', 954,
+    '\u2466', 955,
+    '\u2467', 956,
+    '\u2468', 957,
+    '\u2469', 1090,
+    '\u246A', 1091,
+    '\u246B', 1092,
+    '\u246C', 1093,
+    '\u246D', 1094,
+    '\u246E', 1095,
+    '\u246F', 1096,
+    '\u2470', 1097,
+    '\u2471', 1098,
+    '\u2472', 1099,
+    '\u2473', 1100,
+    '\u2474', 1101,
+    '\u2475', 1102,
+    '\u2476', 1103,
+    '\u2477', 1104,
+    '\u2478', 1105,
+    '\u2479', 1106,
+    '\u247A', 1107,
+    '\u247B', 1108,
+    '\u247C', 1109,
+    '\u247D', 1110,
+    '\u247E', 1111,
+    '\u247F', 1112,
+    '\u2480', 1113,
+    '\u2481', 1114,
+    '\u2482', 1115,
+    '\u2483', 1116,
+    '\u2484', 1117,
+    '\u2485', 1118,
+    '\u2486', 1119,
+    '\u2487', 1120,
+    '\u2488', 1121,
+    '\u2489', 1122,
+    '\u248A', 1123,
+    '\u248B', 1124,
+    '\u248C', 1125,
+    '\u248D', 1126,
+    '\u248E', 1127,
+    '\u248F', 1128,
+    '\u2490', 1129,
+    '\u2491', 1130,
+    '\u2492', 1131,
+    '\u2493', 1132,
+    '\u2494', 1133,
+    '\u2495', 1134,
+    '\u2496', 1135,
+    '\u2497', 1136,
+    '\u2498', 1137,
+    '\u2499', 1138,
+    '\u249A', 1139,
+    '\u249B', 1140,
+    '\u249C', 1141,
+    '\u249D', 1142,
+    '\u249E', 1143,
+    '\u249F', 1144,
+    '\u24A0', 1145,
+    '\u24A1', 1146,
+    '\u24A2', 1147,
+    '\u24A3', 1148,
+    '\u24A4', 1149,
+    '\u24A5', 1150,
+    '\u24A6', 1151,
+    '\u24A7', 1152,
+    '\u24A8', 1153,
+    '\u24A9', 1154,
+    '\u24AA', 1155,
+    '\u24AB', 1156,
+    '\u24AC', 1157,
+    '\u24AD', 1158,
+    '\u24AE', 1159,
+    '\u24AF', 1160,
+    '\u24B0', 1161,
+    '\u24B1', 1162,
+    '\u24B2', 1163,
+    '\u24B3', 1164,
+    '\u24B4', 1165,
+    '\u24B5', 1166,
+    '\u24B6', 1167,
+    '\u24B7', 989,
+    '\u24B8', 967,
+    '\u24B9', 1002,
+    '\u24BA', 991,
+    '\u24BB', 992,
+    '\u24BC', 1168,
+    '\u24BD', 974,
+    '\u24BE', 976,
+    '\u24BF', 1169,
+    '\u24C0', 988,
+    '\u24C1', 977,
+    '\u24C2', 993,
+    '\u24C3', 978,
+    '\u24C4', 1170,
+    '\u24C5', 980,
+    '\u24C6', 981,
+    '\u24C7', 982,
+    '\u24C8', 1171,
+    '\u24C9', 1172,
+    '\u24CA', 1173,
+    '\u24CB', 1020,
+    '\u24CC', 1174,
+    '\u24CD', 1025,
+    '\u24CE', 1175,
+    '\u24CF', 986,
+    '\u24D0', 2,
+    '\u24D1', 1176,
+    '\u24D2', 1038,
+    '\u24D3', 1003,
+    '\u24D4', 990,
+    '\u24D5', 1177,
+    '\u24D6', 973,
+    '\u24D7', 284,
+    '\u24D8', 951,
+    '\u24D9', 286,
+    '\u24DA', 1178,
+    '\u24DB', 300,
+    '\u24DC', 1039,
+    '\u24DD', 963,
+    '\u24DE', 10,
+    '\u24DF', 1179,
+    '\u24E0', 1180,
+    '\u24E1', 287,
+    '\u24E2', 180,
+    '\u24E3', 1181,
+    '\u24E4', 1182,
+    '\u24E5', 1031,
+    '\u24E6', 291,
+    '\u24E7', 301,
+    '\u24E8', 292,
+    '\u24E9', 1183,
+    '\u24EA', 950,
+    '\u2A0C', 1184,
+    '\u2A74', 1185,
+    '\u2A75', 1186,
+    '\u2A76', 1187,
+    '\u2ADC', 1188,
+    '\u2E9F', 1189,
+    '\u2EF3', 1190,
+    '\u2F00', 1191,
+    '\u2F01', 1192,
+    '\u2F02', 1193,
+    '\u2F03', 1194,
+    '\u2F04', 1195,
+    '\u2F05', 1196,
+    '\u2F06', 1197,
+    '\u2F07', 1198,
+    '\u2F08', 1199,
+    '\u2F09', 1200,
+    '\u2F0A', 1201,
+    '\u2F0B', 1202,
+    '\u2F0C', 1203,
+    '\u2F0D', 1204,
+    '\u2F0E', 1205,
+    '\u2F0F', 1206,
+    '\u2F10', 1207,
+    '\u2F11', 1208,
+    '\u2F12', 1209,
+    '\u2F13', 1210,
+    '\u2F14', 1211,
+    '\u2F15', 1212,
+    '\u2F16', 1213,
+    '\u2F17', 1214,
+    '\u2F18', 1215,
+    '\u2F19', 1216,
+    '\u2F1A', 1217,
+    '\u2F1B', 1218,
+    '\u2F1C', 1219,
+    '\u2F1D', 1220,
+    '\u2F1E', 1221,
+    '\u2F1F', 1222,
+    '\u2F20', 1223,
+    '\u2F21', 1224,
+    '\u2F22', 1225,
+    '\u2F23', 1226,
+    '\u2F24', 1227,
+    '\u2F25', 1228,
+    '\u2F26', 1229,
+    '\u2F27', 1230,
+    '\u2F28', 1231,
+    '\u2F29', 1232,
+    '\u2F2A', 1233,
+    '\u2F2B', 1234,
+    '\u2F2C', 1235,
+    '\u2F2D', 1236,
+    '\u2F2E', 1237,
+    '\u2F2F', 1238,
+    '\u2F30', 1239,
+    '\u2F31', 1240,
+    '\u2F32', 1241,
+    '\u2F33', 1242,
+    '\u2F34', 1243,
+    '\u2F35', 1244,
+    '\u2F36', 1245,
+    '\u2F37', 1246,
+    '\u2F38', 1247,
+    '\u2F39', 1248,
+    '\u2F3A', 1249,
+    '\u2F3B', 1250,
+    '\u2F3C', 1251,
+    '\u2F3D', 1252,
+    '\u2F3E', 1253,
+    '\u2F3F', 1254,
+    '\u2F40', 1255,
+    '\u2F41', 1256,
+    '\u2F42', 1257,
+    '\u2F43', 1258,
+    '\u2F44', 1259,
+    '\u2F45', 1260,
+    '\u2F46', 1261,
+    '\u2F47', 1262,
+    '\u2F48', 1263,
+    '\u2F49', 1264,
+    '\u2F4A', 1265,
+    '\u2F4B', 1266,
+    '\u2F4C', 1267,
+    '\u2F4D', 1268,
+    '\u2F4E', 1269,
+    '\u2F4F', 1270,
+    '\u2F50', 1271,
+    '\u2F51', 1272,
+    '\u2F52', 1273,
+    '\u2F53', 1274,
+    '\u2F54', 1275,
+    '\u2F55', 1276,
+    '\u2F56', 1277,
+    '\u2F57', 1278,
+    '\u2F58', 1279,
+    '\u2F59', 1280,
+    '\u2F5A', 1281,
+    '\u2F5B', 1282,
+    '\u2F5C', 1283,
+    '\u2F5D', 1284,
+    '\u2F5E', 1285,
+    '\u2F5F', 1286,
+    '\u2F60', 1287,
+    '\u2F61', 1288,
+    '\u2F62', 1289,
+    '\u2F63', 1290,
+    '\u2F64', 1291,
+    '\u2F65', 1292,
+    '\u2F66', 1293,
+    '\u2F67', 1294,
+    '\u2F68', 1295,
+    '\u2F69', 1296,
+    '\u2F6A', 1297,
+    '\u2F6B', 1298,
+    '\u2F6C', 1299,
+    '\u2F6D', 1300,
+    '\u2F6E', 1301,
+    '\u2F6F', 1302,
+    '\u2F70', 1303,
+    '\u2F71', 1304,
+    '\u2F72', 1305,
+    '\u2F73', 1306,
+    '\u2F74', 1307,
+    '\u2F75', 1308,
+    '\u2F76', 1309,
+    '\u2F77', 1310,
+    '\u2F78', 1311,
+    '\u2F79', 1312,
+    '\u2F7A', 1313,
+    '\u2F7B', 1314,
+    '\u2F7C', 1315,
+    '\u2F7D', 1316,
+    '\u2F7E', 1317,
+    '\u2F7F', 1318,
+    '\u2F80', 1319,
+    '\u2F81', 1320,
+    '\u2F82', 1321,
+    '\u2F83', 1322,
+    '\u2F84', 1323,
+    '\u2F85', 1324,
+    '\u2F86', 1325,
+    '\u2F87', 1326,
+    '\u2F88', 1327,
+    '\u2F89', 1328,
+    '\u2F8A', 1329,
+    '\u2F8B', 1330,
+    '\u2F8C', 1331,
+    '\u2F8D', 1332,
+    '\u2F8E', 1333,
+    '\u2F8F', 1334,
+    '\u2F90', 1335,
+    '\u2F91', 1336,
+    '\u2F92', 1337,
+    '\u2F93', 1338,
+    '\u2F94', 1339,
+    '\u2F95', 1340,
+    '\u2F96', 1341,
+    '\u2F97', 1342,
+    '\u2F98', 1343,
+    '\u2F99', 1344,
+    '\u2F9A', 1345,
+    '\u2F9B', 1346,
+    '\u2F9C', 1347,
+    '\u2F9D', 1348,
+    '\u2F9E', 1349,
+    '\u2F9F', 1350,
+    '\u2FA0', 1351,
+    '\u2FA1', 1352,
+    '\u2FA2', 1353,
+    '\u2FA3', 1354,
+    '\u2FA4', 1355,
+    '\u2FA5', 1356,
+    '\u2FA6', 1357,
+    '\u2FA7', 1358,
+    '\u2FA8', 1359,
+    '\u2FA9', 1360,
+    '\u2FAA', 1361,
+    '\u2FAB', 1362,
+    '\u2FAC', 1363,
+    '\u2FAD', 1364,
+    '\u2FAE', 1365,
+    '\u2FAF', 1366,
+    '\u2FB0', 1367,
+    '\u2FB1', 1368,
+    '\u2FB2', 1369,
+    '\u2FB3', 1370,
+    '\u2FB4', 1371,
+    '\u2FB5', 1372,
+    '\u2FB6', 1373,
+    '\u2FB7', 1374,
+    '\u2FB8', 1375,
+    '\u2FB9', 1376,
+    '\u2FBA', 1377,
+    '\u2FBB', 1378,
+    '\u2FBC', 1379,
+    '\u2FBD', 1380,
+    '\u2FBE', 1381,
+    '\u2FBF', 1382,
+    '\u2FC0', 1383,
+    '\u2FC1', 1384,
+    '\u2FC2', 1385,
+    '\u2FC3', 1386,
+    '\u2FC4', 1387,
+    '\u2FC5', 1388,
+    '\u2FC6', 1389,
+    '\u2FC7', 1390,
+    '\u2FC8', 1391,
+    '\u2FC9', 1392,
+    '\u2FCA', 1393,
+    '\u2FCB', 1394,
+    '\u2FCC', 1395,
+    '\u2FCD', 1396,
+    '\u2FCE', 1397,
+    '\u2FCF', 1398,
+    '\u2FD0', 1399,
+    '\u2FD1', 1400,
+    '\u2FD2', 1401,
+    '\u2FD3', 1402,
+    '\u2FD4', 1403,
+    '\u2FD5', 1404,
+    '\u3000', 0,
+    '\u3036', 1405,
+    '\u3038', 1214,
+    '\u3039', 1406,
+    '\u303A', 1407,
+    '\u304C', 1408,
+    '\u304E', 1409,
+    '\u3050', 1410,
+    '\u3052', 1411,
+    '\u3054', 1412,
+    '\u3056', 1413,
+    '\u3058', 1414,
+    '\u305A', 1415,
+    '\u305C', 1416,
+    '\u305E', 1417,
+    '\u3060', 1418,
+    '\u3062', 1419,
+    '\u3065', 1420,
+    '\u3067', 1421,
+    '\u3069', 1422,
+    '\u3070', 1423,
+    '\u3071', 1424,
+    '\u3073', 1425,
+    '\u3074', 1426,
+    '\u3076', 1427,
+    '\u3077', 1428,
+    '\u3079', 1429,
+    '\u307A', 1430,
+    '\u307C', 1431,
+    '\u307D', 1432,
+    '\u3094', 1433,
+    '\u309B', 1434,
+    '\u309C', 1435,
+    '\u309E', 1436,
+    '\u309F', 1437,
+    '\u30AC', 1438,
+    '\u30AE', 1439,
+    '\u30B0', 1440,
+    '\u30B2', 1441,
+    '\u30B4', 1442,
+    '\u30B6', 1443,
+    '\u30B8', 1444,
+    '\u30BA', 1445,
+    '\u30BC', 1446,
+    '\u30BE', 1447,
+    '\u30C0', 1448,
+    '\u30C2', 1449,
+    '\u30C5', 1450,
+    '\u30C7', 1451,
+    '\u30C9', 1452,
+    '\u30D0', 1453,
+    '\u30D1', 1454,
+    '\u30D3', 1455,
+    '\u30D4', 1456,
+    '\u30D6', 1457,
+    '\u30D7', 1458,
+    '\u30D9', 1459,
+    '\u30DA', 1460,
+    '\u30DC', 1461,
+    '\u30DD', 1462,
+    '\u30F4', 1463,
+    '\u30F7', 1464,
+    '\u30F8', 1465,
+    '\u30F9', 1466,
+    '\u30FA', 1467,
+    '\u30FE', 1468,
+    '\u30FF', 1469,
+    '\u3131', 1470,
+    '\u3132', 1471,
+    '\u3133', 1472,
+    '\u3134', 1473,
+    '\u3135', 1474,
+    '\u3136', 1475,
+    '\u3137', 1476,
+    '\u3138', 1477,
+    '\u3139', 1478,
+    '\u313A', 1479,
+    '\u313B', 1480,
+    '\u313C', 1481,
+    '\u313D', 1482,
+    '\u313E', 1483,
+    '\u313F', 1484,
+    '\u3140', 1485,
+    '\u3141', 1486,
+    '\u3142', 1487,
+    '\u3143', 1488,
+    '\u3144', 1489,
+    '\u3145', 1490,
+    '\u3146', 1491,
+    '\u3147', 1492,
+    '\u3148', 1493,
+    '\u3149', 1494,
+    '\u314A', 1495,
+    '\u314B', 1496,
+    '\u314C', 1497,
+    '\u314D', 1498,
+    '\u314E', 1499,
+    '\u314F', 1500,
+    '\u3150', 1501,
+    '\u3151', 1502,
+    '\u3152', 1503,
+    '\u3153', 1504,
+    '\u3154', 1505,
+    '\u3155', 1506,
+    '\u3156', 1507,
+    '\u3157', 1508,
+    '\u3158', 1509,
+    '\u3159', 1510,
+    '\u315A', 1511,
+    '\u315B', 1512,
+    '\u315C', 1513,
+    '\u315D', 1514,
+    '\u315E', 1515,
+    '\u315F', 1516,
+    '\u3160', 1517,
+    '\u3161', 1518,
+    '\u3162', 1519,
+    '\u3163', 1520,
+    '\u3164', 1521,
+    '\u3165', 1522,
+    '\u3166', 1523,
+    '\u3167', 1524,
+    '\u3168', 1525,
+    '\u3169', 1526,
+    '\u316A', 1527,
+    '\u316B', 1528,
+    '\u316C', 1529,
+    '\u316D', 1530,
+    '\u316E', 1531,
+    '\u316F', 1532,
+    '\u3170', 1533,
+    '\u3171', 1534,
+    '\u3172', 1535,
+    '\u3173', 1536,
+    '\u3174', 1537,
+    '\u3175', 1538,
+    '\u3176', 1539,
+    '\u3177', 1540,
+    '\u3178', 1541,
+    '\u3179', 1542,
+    '\u317A', 1543,
+    '\u317B', 1544,
+    '\u317C', 1545,
+    '\u317D', 1546,
+    '\u317E', 1547,
+    '\u317F', 1548,
+    '\u3180', 1549,
+    '\u3181', 1550,
+    '\u3182', 1551,
+    '\u3183', 1552,
+    '\u3184', 1553,
+    '\u3185', 1554,
+    '\u3186', 1555,
+    '\u3187', 1556,
+    '\u3188', 1557,
+    '\u3189', 1558,
+    '\u318A', 1559,
+    '\u318B', 1560,
+    '\u318C', 1561,
+    '\u318D', 1562,
+    '\u318E', 1563,
+    '\u3192', 1191,
+    '\u3193', 1197,
+    '\u3194', 1564,
+    '\u3195', 1565,
+    '\u3196', 1566,
+    '\u3197', 1567,
+    '\u3198', 1568,
+    '\u3199', 1569,
+    '\u319A', 1195,
+    '\u319B', 1570,
+    '\u319C', 1571,
+    '\u319D', 1572,
+    '\u319E', 1573,
+    '\u319F', 1199,
+    '\u3200', 1574,
+    '\u3201', 1575,
+    '\u3202', 1576,
+    '\u3203', 1577,
+    '\u3204', 1578,
+    '\u3205', 1579,
+    '\u3206', 1580,
+    '\u3207', 1581,
+    '\u3208', 1582,
+    '\u3209', 1583,
+    '\u320A', 1584,
+    '\u320B', 1585,
+    '\u320C', 1586,
+    '\u320D', 1587,
+    '\u320E', 1588,
+    '\u320F', 1589,
+    '\u3210', 1590,
+    '\u3211', 1591,
+    '\u3212', 1592,
+    '\u3213', 1593,
+    '\u3214', 1594,
+    '\u3215', 1595,
+    '\u3216', 1596,
+    '\u3217', 1597,
+    '\u3218', 1598,
+    '\u3219', 1599,
+    '\u321A', 1600,
+    '\u321B', 1601,
+    '\u321C', 1602,
+    '\u3220', 1603,
+    '\u3221', 1604,
+    '\u3222', 1605,
+    '\u3223', 1606,
+    '\u3224', 1607,
+    '\u3225', 1608,
+    '\u3226', 1609,
+    '\u3227', 1610,
+    '\u3228', 1611,
+    '\u3229', 1612,
+    '\u322A', 1613,
+    '\u322B', 1614,
+    '\u322C', 1615,
+    '\u322D', 1616,
+    '\u322E', 1617,
+    '\u322F', 1618,
+    '\u3230', 1619,
+    '\u3231', 1620,
+    '\u3232', 1621,
+    '\u3233', 1622,
+    '\u3234', 1623,
+    '\u3235', 1624,
+    '\u3236', 1625,
+    '\u3237', 1626,
+    '\u3238', 1627,
+    '\u3239', 1628,
+    '\u323A', 1629,
+    '\u323B', 1630,
+    '\u323C', 1631,
+    '\u323D', 1632,
+    '\u323E', 1633,
+    '\u323F', 1634,
+    '\u3240', 1635,
+    '\u3241', 1636,
+    '\u3242', 1637,
+    '\u3243', 1638,
+    '\u3251', 1639,
+    '\u3252', 1640,
+    '\u3253', 1641,
+    '\u3254', 1642,
+    '\u3255', 1643,
+    '\u3256', 1644,
+    '\u3257', 1645,
+    '\u3258', 1646,
+    '\u3259', 1647,
+    '\u325A', 1648,
+    '\u325B', 1649,
+    '\u325C', 1650,
+    '\u325D', 1651,
+    '\u325E', 1652,
+    '\u325F', 1653,
+    '\u3260', 1470,
+    '\u3261', 1473,
+    '\u3262', 1476,
+    '\u3263', 1478,
+    '\u3264', 1486,
+    '\u3265', 1487,
+    '\u3266', 1490,
+    '\u3267', 1492,
+    '\u3268', 1493,
+    '\u3269', 1495,
+    '\u326A', 1496,
+    '\u326B', 1497,
+    '\u326C', 1498,
+    '\u326D', 1499,
+    '\u326E', 1654,
+    '\u326F', 1655,
+    '\u3270', 1656,
+    '\u3271', 1657,
+    '\u3272', 1658,
+    '\u3273', 1659,
+    '\u3274', 1660,
+    '\u3275', 1661,
+    '\u3276', 1662,
+    '\u3277', 1663,
+    '\u3278', 1664,
+    '\u3279', 1665,
+    '\u327A', 1666,
+    '\u327B', 1667,
+    '\u3280', 1191,
+    '\u3281', 1197,
+    '\u3282', 1564,
+    '\u3283', 1565,
+    '\u3284', 1668,
+    '\u3285', 1669,
+    '\u3286', 1670,
+    '\u3287', 1202,
+    '\u3288', 1671,
+    '\u3289', 1214,
+    '\u328A', 1264,
+    '\u328B', 1276,
+    '\u328C', 1275,
+    '\u328D', 1265,
+    '\u328E', 1357,
+    '\u328F', 1222,
+    '\u3290', 1262,
+    '\u3291', 1672,
+    '\u3292', 1673,
+    '\u3293', 1674,
+    '\u3294', 1675,
+    '\u3295', 1676,
+    '\u3296', 1677,
+    '\u3297', 1678,
+    '\u3298', 1679,
+    '\u3299', 1680,
+    '\u329A', 1681,
+    '\u329B', 1228,
+    '\u329C', 1682,
+    '\u329D', 1683,
+    '\u329E', 1684,
+    '\u329F', 1685,
+    '\u32A0', 1686,
+    '\u32A1', 1687,
+    '\u32A2', 1688,
+    '\u32A3', 1689,
+    '\u32A4', 1566,
+    '\u32A5', 1567,
+    '\u32A6', 1568,
+    '\u32A7', 1690,
+    '\u32A8', 1691,
+    '\u32A9', 1692,
+    '\u32AA', 1693,
+    '\u32AB', 1694,
+    '\u32AC', 1695,
+    '\u32AD', 1696,
+    '\u32AE', 1697,
+    '\u32AF', 1698,
+    '\u32B0', 1699,
+    '\u32B1', 1700,
+    '\u32B2', 1701,
+    '\u32B3', 1702,
+    '\u32B4', 1703,
+    '\u32B5', 1704,
+    '\u32B6', 1705,
+    '\u32B7', 1706,
+    '\u32B8', 1707,
+    '\u32B9', 1708,
+    '\u32BA', 1709,
+    '\u32BB', 1710,
+    '\u32BC', 1711,
+    '\u32BD', 1712,
+    '\u32BE', 1713,
+    '\u32BF', 1714,
+    '\u32C0', 1715,
+    '\u32C1', 1716,
+    '\u32C2', 1717,
+    '\u32C3', 1718,
+    '\u32C4', 1719,
+    '\u32C5', 1720,
+    '\u32C6', 1721,
+    '\u32C7', 1722,
+    '\u32C8', 1723,
+    '\u32C9', 1724,
+    '\u32CA', 1725,
+    '\u32CB', 1726,
+    '\u32D0', 1727,
+    '\u32D1', 1728,
+    '\u32D2', 1729,
+    '\u32D3', 1730,
+    '\u32D4', 1731,
+    '\u32D5', 1732,
+    '\u32D6', 1733,
+    '\u32D7', 1734,
+    '\u32D8', 1735,
+    '\u32D9', 1736,
+    '\u32DA', 1737,
+    '\u32DB', 1738,
+    '\u32DC', 1739,
+    '\u32DD', 1740,
+    '\u32DE', 1741,
+    '\u32DF', 1742,
+    '\u32E0', 1743,
+    '\u32E1', 1744,
+    '\u32E2', 1745,
+    '\u32E3', 1746,
+    '\u32E4', 1747,
+    '\u32E5', 1748,
+    '\u32E6', 1749,
+    '\u32E7', 1750,
+    '\u32E8', 1751,
+    '\u32E9', 1752,
+    '\u32EA', 1753,
+    '\u32EB', 1754,
+    '\u32EC', 1755,
+    '\u32ED', 1756,
+    '\u32EE', 1757,
+    '\u32EF', 1758,
+    '\u32F0', 1759,
+    '\u32F1', 1760,
+    '\u32F2', 1761,
+    '\u32F3', 1762,
+    '\u32F4', 1763,
+    '\u32F5', 1764,
+    '\u32F6', 1765,
+    '\u32F7', 1766,
+    '\u32F8', 1767,
+    '\u32F9', 1768,
+    '\u32FA', 1769,
+    '\u32FB', 1770,
+    '\u32FC', 1771,
+    '\u32FD', 1772,
+    '\u32FE', 1773,
+    '\u3300', 1774,
+    '\u3301', 1775,
+    '\u3302', 1776,
+    '\u3303', 1777,
+    '\u3304', 1778,
+    '\u3305', 1779,
+    '\u3306', 1780,
+    '\u3307', 1781,
+    '\u3308', 1782,
+    '\u3309', 1783,
+    '\u330A', 1784,
+    '\u330B', 1785,
+    '\u330C', 1786,
+    '\u330D', 1787,
+    '\u330E', 1788,
+    '\u330F', 1789,
+    '\u3310', 1790,
+    '\u3311', 1791,
+    '\u3312', 1792,
+    '\u3313', 1793,
+    '\u3314', 1794,
+    '\u3315', 1795,
+    '\u3316', 1796,
+    '\u3317', 1797,
+    '\u3318', 1798,
+    '\u3319', 1799,
+    '\u331A', 1800,
+    '\u331B', 1801,
+    '\u331C', 1802,
+    '\u331D', 1803,
+    '\u331E', 1804,
+    '\u331F', 1805,
+    '\u3320', 1806,
+    '\u3321', 1807,
+    '\u3322', 1808,
+    '\u3323', 1809,
+    '\u3324', 1810,
+    '\u3325', 1811,
+    '\u3326', 1812,
+    '\u3327', 1813,
+    '\u3328', 1814,
+    '\u3329', 1815,
+    '\u332A', 1816,
+    '\u332B', 1817,
+    '\u332C', 1818,
+    '\u332D', 1819,
+    '\u332E', 1820,
+    '\u332F', 1821,
+    '\u3330', 1822,
+    '\u3331', 1823,
+    '\u3332', 1824,
+    '\u3333', 1825,
+    '\u3334', 1826,
+    '\u3335', 1827,
+    '\u3336', 1828,
+    '\u3337', 1829,
+    '\u3338', 1830,
+    '\u3339', 1831,
+    '\u333A', 1832,
+    '\u333B', 1833,
+    '\u333C', 1834,
+    '\u333D', 1835,
+    '\u333E', 1836,
+    '\u333F', 1837,
+    '\u3340', 1838,
+    '\u3341', 1839,
+    '\u3342', 1840,
+    '\u3343', 1841,
+    '\u3344', 1842,
+    '\u3345', 1843,
+    '\u3346', 1844,
+    '\u3347', 1845,
+    '\u3348', 1846,
+    '\u3349', 1847,
+    '\u334A', 1848,
+    '\u334B', 1849,
+    '\u334C', 1850,
+    '\u334D', 1851,
+    '\u334E', 1852,
+    '\u334F', 1853,
+    '\u3350', 1854,
+    '\u3351', 1855,
+    '\u3352', 1856,
+    '\u3353', 1857,
+    '\u3354', 1858,
+    '\u3355', 1859,
+    '\u3356', 1860,
+    '\u3357', 1861,
+    '\u3358', 1862,
+    '\u3359', 1863,
+    '\u335A', 1864,
+    '\u335B', 1865,
+    '\u335C', 1866,
+    '\u335D', 1867,
+    '\u335E', 1868,
+    '\u335F', 1869,
+    '\u3360', 1870,
+    '\u3361', 1871,
+    '\u3362', 1872,
+    '\u3363', 1873,
+    '\u3364', 1874,
+    '\u3365', 1875,
+    '\u3366', 1876,
+    '\u3367', 1877,
+    '\u3368', 1878,
+    '\u3369', 1879,
+    '\u336A', 1880,
+    '\u336B', 1881,
+    '\u336C', 1882,
+    '\u336D', 1883,
+    '\u336E', 1884,
+    '\u336F', 1885,
+    '\u3370', 1886,
+    '\u3371', 1887,
+    '\u3372', 1888,
+    '\u3373', 1889,
+    '\u3374', 1890,
+    '\u3375', 1891,
+    '\u3376', 1892,
+    '\u337B', 1893,
+    '\u337C', 1894,
+    '\u337D', 1895,
+    '\u337E', 1896,
+    '\u337F', 1897,
+    '\u3380', 1898,
+    '\u3381', 1899,
+    '\u3382', 1900,
+    '\u3383', 1901,
+    '\u3384', 1902,
+    '\u3385', 1903,
+    '\u3386', 1904,
+    '\u3387', 1905,
+    '\u3388', 1906,
+    '\u3389', 1907,
+    '\u338A', 1908,
+    '\u338B', 1909,
+    '\u338C', 1910,
+    '\u338D', 1911,
+    '\u338E', 1912,
+    '\u338F', 1913,
+    '\u3390', 1914,
+    '\u3391', 1915,
+    '\u3392', 1916,
+    '\u3393', 1917,
+    '\u3394', 1918,
+    '\u3395', 1919,
+    '\u3396', 1920,
+    '\u3397', 1921,
+    '\u3398', 1922,
+    '\u3399', 1923,
+    '\u339A', 1924,
+    '\u339B', 1925,
+    '\u339C', 1926,
+    '\u339D', 1927,
+    '\u339E', 1928,
+    '\u339F', 1929,
+    '\u33A0', 1930,
+    '\u33A1', 1931,
+    '\u33A2', 1932,
+    '\u33A3', 1933,
+    '\u33A4', 1934,
+    '\u33A5', 1935,
+    '\u33A6', 1936,
+    '\u33A7', 1937,
+    '\u33A8', 1938,
+    '\u33A9', 1939,
+    '\u33AA', 1940,
+    '\u33AB', 1941,
+    '\u33AC', 1942,
+    '\u33AD', 1943,
+    '\u33AE', 1944,
+    '\u33AF', 1945,
+    '\u33B0', 1946,
+    '\u33B1', 1947,
+    '\u33B2', 1948,
+    '\u33B3', 1949,
+    '\u33B4', 1950,
+    '\u33B5', 1951,
+    '\u33B6', 1952,
+    '\u33B7', 1953,
+    '\u33B8', 1954,
+    '\u33B9', 1955,
+    '\u33BA', 1956,
+    '\u33BB', 1957,
+    '\u33BC', 1958,
+    '\u33BD', 1959,
+    '\u33BE', 1960,
+    '\u33BF', 1961,
+    '\u33C0', 1962,
+    '\u33C1', 1963,
+    '\u33C2', 1964,
+    '\u33C3', 1965,
+    '\u33C4', 1966,
+    '\u33C5', 1967,
+    '\u33C6', 1968,
+    '\u33C7', 1969,
+    '\u33C8', 1970,
+    '\u33C9', 1971,
+    '\u33CA', 1972,
+    '\u33CB', 1973,
+    '\u33CC', 1974,
+    '\u33CD', 1975,
+    '\u33CE', 1976,
+    '\u33CF', 1977,
+    '\u33D0', 1978,
+    '\u33D1', 1979,
+    '\u33D2', 1980,
+    '\u33D3', 1981,
+    '\u33D4', 1982,
+    '\u33D5', 1983,
+    '\u33D6', 1984,
+    '\u33D7', 1985,
+    '\u33D8', 1986,
+    '\u33D9', 1987,
+    '\u33DA', 1988,
+    '\u33DB', 1989,
+    '\u33DC', 1990,
+    '\u33DD', 1991,
+    '\u33E0', 1992,
+    '\u33E1', 1993,
+    '\u33E2', 1994,
+    '\u33E3', 1995,
+    '\u33E4', 1996,
+    '\u33E5', 1997,
+    '\u33E6', 1998,
+    '\u33E7', 1999,
+    '\u33E8', 2000,
+    '\u33E9', 2001,
+    '\u33EA', 2002,
+    '\u33EB', 2003,
+    '\u33EC', 2004,
+    '\u33ED', 2005,
+    '\u33EE', 2006,
+    '\u33EF', 2007,
+    '\u33F0', 2008,
+    '\u33F1', 2009,
+    '\u33F2', 2010,
+    '\u33F3', 2011,
+    '\u33F4', 2012,
+    '\u33F5', 2013,
+    '\u33F6', 2014,
+    '\u33F7', 2015,
+    '\u33F8', 2016,
+    '\u33F9', 2017,
+    '\u33FA', 2018,
+    '\u33FB', 2019,
+    '\u33FC', 2020,
+    '\u33FD', 2021,
+    '\u33FE', 2022,
+    '\uF900', 2023,
+    '\uF901', 2024,
+    '\uF902', 1349,
+    '\uF903', 2025,
+    '\uF904', 2026,
+    '\uF905', 2027,
+    '\uF906', 2028,
+    '\uF907', 1403,
+    '\uF908', 1403,
+    '\uF909', 2029,
+    '\uF90A', 1357,
+    '\uF90B', 2030,
+    '\uF90C', 2031,
+    '\uF90D', 2032,
+    '\uF90E', 2033,
+    '\uF90F', 2034,
+    '\uF910', 2035,
+    '\uF911', 2036,
+    '\uF912', 2037,
+    '\uF913', 2038,
+    '\uF914', 2039,
+    '\uF915', 2040,
+    '\uF916', 2041,
+    '\uF917', 2042,
+    '\uF918', 2043,
+    '\uF919', 2044,
+    '\uF91A', 2045,
+    '\uF91B', 2046,
+    '\uF91C', 2047,
+    '\uF91D', 2048,
+    '\uF91E', 2049,
+    '\uF91F', 2050,
+    '\uF920', 2051,
+    '\uF921', 2052,
+    '\uF922', 2053,
+    '\uF923', 2054,
+    '\uF924', 2055,
+    '\uF925', 2056,
+    '\uF926', 2057,
+    '\uF927', 2058,
+    '\uF928', 2059,
+    '\uF929', 2060,
+    '\uF92A', 2061,
+    '\uF92B', 2062,
+    '\uF92C', 2063,
+    '\uF92D', 2064,
+    '\uF92E', 2065,
+    '\uF92F', 2066,
+    '\uF930', 2067,
+    '\uF931', 2068,
+    '\uF932', 2069,
+    '\uF933', 2070,
+    '\uF934', 1315,
+    '\uF935', 2071,
+    '\uF936', 2072,
+    '\uF937', 2073,
+    '\uF938', 2074,
+    '\uF939', 2075,
+    '\uF93A', 2076,
+    '\uF93B', 2077,
+    '\uF93C', 2078,
+    '\uF93D', 2079,
+    '\uF93E', 2080,
+    '\uF93F', 2081,
+    '\uF940', 1388,
+    '\uF941', 2082,
+    '\uF942', 2083,
+    '\uF943', 2084,
+    '\uF944', 2085,
+    '\uF945', 2086,
+    '\uF946', 2087,
+    '\uF947', 2088,
+    '\uF948', 2089,
+    '\uF949', 2090,
+    '\uF94A', 2091,
+    '\uF94B', 2092,
+    '\uF94C', 2093,
+    '\uF94D', 2094,
+    '\uF94E', 2095,
+    '\uF94F', 2096,
+    '\uF950', 2097,
+    '\uF951', 2098,
+    '\uF952', 2099,
+    '\uF953', 2100,
+    '\uF954', 2101,
+    '\uF955', 2102,
+    '\uF956', 2103,
+    '\uF957', 2104,
+    '\uF958', 2105,
+    '\uF959', 2106,
+    '\uF95A', 2107,
+    '\uF95B', 2108,
+    '\uF95C', 2039,
+    '\uF95D', 2109,
+    '\uF95E', 2110,
+    '\uF95F', 2111,
+    '\uF960', 2112,
+    '\uF961', 2113,
+    '\uF962', 2114,
+    '\uF963', 2115,
+    '\uF964', 2116,
+    '\uF965', 2117,
+    '\uF966', 2118,
+    '\uF967', 2119,
+    '\uF968', 2120,
+    '\uF969', 2121,
+    '\uF96A', 2122,
+    '\uF96B', 2123,
+    '\uF96C', 2124,
+    '\uF96D', 2125,
+    '\uF96E', 2126,
+    '\uF96F', 2127,
+    '\uF970', 2128,
+    '\uF971', 1351,
+    '\uF972', 2129,
+    '\uF973', 2130,
+    '\uF974', 2131,
+    '\uF975', 2132,
+    '\uF976', 2133,
+    '\uF977', 2134,
+    '\uF978', 2135,
+    '\uF979', 2136,
+    '\uF97A', 2137,
+    '\uF97B', 2138,
+    '\uF97C', 2139,
+    '\uF97D', 2140,
+    '\uF97E', 2141,
+    '\uF97F', 2142,
+    '\uF980', 2143,
+    '\uF981', 1228,
+    '\uF982', 2144,
+    '\uF983', 2145,
+    '\uF984', 2146,
+    '\uF985', 2147,
+    '\uF986', 2148,
+    '\uF987', 2149,
+    '\uF988', 2150,
+    '\uF989', 2151,
+    '\uF98A', 1209,
+    '\uF98B', 2152,
+    '\uF98C', 2153,
+    '\uF98D', 2154,
+    '\uF98E', 2155,
+    '\uF98F', 2156,
+    '\uF990', 2157,
+    '\uF991', 2158,
+    '\uF992', 2159,
+    '\uF993', 2160,
+    '\uF994', 2161,
+    '\uF995', 2162,
+    '\uF996', 2163,
+    '\uF997', 2164,
+    '\uF998', 2165,
+    '\uF999', 2166,
+    '\uF99A', 2167,
+    '\uF99B', 2168,
+    '\uF99C', 2169,
+    '\uF99D', 2170,
+    '\uF99E', 2171,
+    '\uF99F', 2172,
+    '\uF9A0', 2173,
+    '\uF9A1', 2127,
+    '\uF9A2', 2174,
+    '\uF9A3', 2175,
+    '\uF9A4', 2176,
+    '\uF9A5', 2177,
+    '\uF9A6', 2178,
+    '\uF9A7', 2179,
+    '\uF9A8', 2180,
+    '\uF9A9', 2181,
+    '\uF9AA', 2111,
+    '\uF9AB', 2182,
+    '\uF9AC', 2183,
+    '\uF9AD', 2184,
+    '\uF9AE', 2185,
+    '\uF9AF', 2186,
+    '\uF9B0', 2187,
+    '\uF9B1', 2188,
+    '\uF9B2', 2189,
+    '\uF9B3', 2190,
+    '\uF9B4', 2191,
+    '\uF9B5', 2192,
+    '\uF9B6', 2193,
+    '\uF9B7', 2194,
+    '\uF9B8', 2195,
+    '\uF9B9', 2196,
+    '\uF9BA', 2197,
+    '\uF9BB', 2198,
+    '\uF9BC', 2199,
+    '\uF9BD', 2200,
+    '\uF9BE', 2201,
+    '\uF9BF', 2039,
+    '\uF9C0', 2202,
+    '\uF9C1', 2203,
+    '\uF9C2', 2204,
+    '\uF9C3', 2205,
+    '\uF9C4', 1402,
+    '\uF9C5', 2206,
+    '\uF9C6', 2207,
+    '\uF9C7', 2208,
+    '\uF9C8', 2209,
+    '\uF9C9', 2210,
+    '\uF9CA', 2211,
+    '\uF9CB', 2212,
+    '\uF9CC', 2213,
+    '\uF9CD', 2214,
+    '\uF9CE', 2215,
+    '\uF9CF', 2216,
+    '\uF9D0', 2217,
+    '\uF9D1', 1669,
+    '\uF9D2', 2218,
+    '\uF9D3', 2219,
+    '\uF9D4', 2220,
+    '\uF9D5', 2221,
+    '\uF9D6', 2222,
+    '\uF9D7', 2223,
+    '\uF9D8', 2224,
+    '\uF9D9', 2225,
+    '\uF9DA', 2226,
+    '\uF9DB', 2113,
+    '\uF9DC', 2227,
+    '\uF9DD', 2228,
+    '\uF9DE', 2229,
+    '\uF9DF', 2230,
+    '\uF9E0', 2231,
+    '\uF9E1', 2232,
+    '\uF9E2', 2233,
+    '\uF9E3', 2234,
+    '\uF9E4', 2235,
+    '\uF9E5', 2236,
+    '\uF9E6', 2237,
+    '\uF9E7', 2238,
+    '\uF9E8', 2239,
+    '\uF9E9', 1356,
+    '\uF9EA', 2240,
+    '\uF9EB', 2241,
+    '\uF9EC', 2242,
+    '\uF9ED', 2243,
+    '\uF9EE', 2244,
+    '\uF9EF', 2245,
+    '\uF9F0', 2246,
+    '\uF9F1', 2247,
+    '\uF9F2', 2248,
+    '\uF9F3', 2249,
+    '\uF9F4', 2250,
+    '\uF9F5', 2251,
+    '\uF9F6', 2252,
+    '\uF9F7', 1307,
+    '\uF9F8', 2253,
+    '\uF9F9', 2254,
+    '\uF9FA', 2255,
+    '\uF9FB', 2256,
+    '\uF9FC', 2257,
+    '\uF9FD', 2258,
+    '\uF9FE', 2259,
+    '\uF9FF', 2260,
+    '\uFA00', 2261,
+    '\uFA01', 2262,
+    '\uFA02', 2263,
+    '\uFA03', 2264,
+    '\uFA04', 2265,
+    '\uFA05', 2266,
+    '\uFA06', 2267,
+    '\uFA07', 2268,
+    '\uFA08', 1334,
+    '\uFA09', 2269,
+    '\uFA0A', 1337,
+    '\uFA0B', 2270,
+    '\uFA0C', 2271,
+    '\uFA0D', 2272,
+    '\uFA10', 2273,
+    '\uFA12', 2274,
+    '\uFA15', 2275,
+    '\uFA16', 2276,
+    '\uFA17', 2277,
+    '\uFA18', 2278,
+    '\uFA19', 2279,
+    '\uFA1A', 2280,
+    '\uFA1B', 2281,
+    '\uFA1C', 2282,
+    '\uFA1D', 2283,
+    '\uFA1E', 1314,
+    '\uFA20', 2284,
+    '\uFA22', 2285,
+    '\uFA25', 2286,
+    '\uFA26', 2287,
+    '\uFA2A', 2288,
+    '\uFA2B', 2289,
+    '\uFA2C', 2290,
+    '\uFA2D', 2291,
+    '\uFA30', 2292,
+    '\uFA31', 2293,
+    '\uFA32', 2294,
+    '\uFA33', 2295,
+    '\uFA34', 2296,
+    '\uFA35', 2297,
+    '\uFA36', 2298,
+    '\uFA37', 2299,
+    '\uFA38', 2300,
+    '\uFA39', 2301,
+    '\uFA3A', 2302,
+    '\uFA3B', 2303,
+    '\uFA3C', 1235,
+    '\uFA3D', 2304,
+    '\uFA3E', 2305,
+    '\uFA3F', 2306,
+    '\uFA40', 2307,
+    '\uFA41', 2308,
+    '\uFA42', 2309,
+    '\uFA43', 2310,
+    '\uFA44', 2311,
+    '\uFA45', 2312,
+    '\uFA46', 2313,
+    '\uFA47', 2314,
+    '\uFA48', 2315,
+    '\uFA49', 2316,
+    '\uFA4A', 2317,
+    '\uFA4B', 2318,
+    '\uFA4C', 1674,
+    '\uFA4D', 2319,
+    '\uFA4E', 2320,
+    '\uFA4F', 2321,
+    '\uFA50', 2322,
+    '\uFA51', 1678,
+    '\uFA52', 2323,
+    '\uFA53', 2324,
+    '\uFA54', 2325,
+    '\uFA55', 2326,
+    '\uFA56', 2327,
+    '\uFA57', 2163,
+    '\uFA58', 2328,
+    '\uFA59', 2329,
+    '\uFA5A', 2330,
+    '\uFA5B', 2331,
+    '\uFA5C', 2332,
+    '\uFA5D', 2333,
+    '\uFA5E', 2333,
+    '\uFA5F', 2334,
+    '\uFA60', 2335,
+    '\uFA61', 2336,
+    '\uFA62', 2337,
+    '\uFA63', 2338,
+    '\uFA64', 2339,
+    '\uFA65', 2340,
+    '\uFA66', 2341,
+    '\uFA67', 2286,
+    '\uFA68', 2342,
+    '\uFA69', 2343,
+    '\uFA6A', 2344,
+    '\uFB00', 2345,
+    '\uFB01', 2346,
+    '\uFB02', 2347,
+    '\uFB03', 2348,
+    '\uFB04', 2349,
+    '\uFB05', 2350,
+    '\uFB06', 2350,
+    '\uFB13', 2351,
+    '\uFB14', 2352,
+    '\uFB15', 2353,
+    '\uFB16', 2354,
+    '\uFB17', 2355,
+    '\uFB1D', 2356,
+    '\uFB1F', 2357,
+    '\uFB20', 2358,
+    '\uFB21', 994,
+    '\uFB22', 997,
+    '\uFB23', 2359,
+    '\uFB24', 2360,
+    '\uFB25', 2361,
+    '\uFB26', 2362,
+    '\uFB27', 2363,
+    '\uFB28', 2364,
+    '\uFB29', 958,
+    '\uFB2A', 2365,
+    '\uFB2B', 2366,
+    '\uFB2C', 2367,
+    '\uFB2D', 2368,
+    '\uFB2E', 2369,
+    '\uFB2F', 2370,
+    '\uFB30', 2371,
+    '\uFB31', 2372,
+    '\uFB32', 2373,
+    '\uFB33', 2374,
+    '\uFB34', 2375,
+    '\uFB35', 2376,
+    '\uFB36', 2377,
+    '\uFB38', 2378,
+    '\uFB39', 2379,
+    '\uFB3A', 2380,
+    '\uFB3B', 2381,
+    '\uFB3C', 2382,
+    '\uFB3E', 2383,
+    '\uFB40', 2384,
+    '\uFB41', 2385,
+    '\uFB43', 2386,
+    '\uFB44', 2387,
+    '\uFB46', 2388,
+    '\uFB47', 2389,
+    '\uFB48', 2390,
+    '\uFB49', 2391,
+    '\uFB4A', 2392,
+    '\uFB4B', 2393,
+    '\uFB4C', 2394,
+    '\uFB4D', 2395,
+    '\uFB4E', 2396,
+    '\uFB4F', 2397,
+    '\uFB50', 2398,
+    '\uFB51', 2398,
+    '\uFB52', 2399,
+    '\uFB53', 2399,
+    '\uFB54', 2399,
+    '\uFB55', 2399,
+    '\uFB56', 2400,
+    '\uFB57', 2400,
+    '\uFB58', 2400,
+    '\uFB59', 2400,
+    '\uFB5A', 2401,
+    '\uFB5B', 2401,
+    '\uFB5C', 2401,
+    '\uFB5D', 2401,
+    '\uFB5E', 2402,
+    '\uFB5F', 2402,
+    '\uFB60', 2402,
+    '\uFB61', 2402,
+    '\uFB62', 2403,
+    '\uFB63', 2403,
+    '\uFB64', 2403,
+    '\uFB65', 2403,
+    '\uFB66', 2404,
+    '\uFB67', 2404,
+    '\uFB68', 2404,
+    '\uFB69', 2404,
+    '\uFB6A', 2405,
+    '\uFB6B', 2405,
+    '\uFB6C', 2405,
+    '\uFB6D', 2405,
+    '\uFB6E', 2406,
+    '\uFB6F', 2406,
+    '\uFB70', 2406,
+    '\uFB71', 2406,
+    '\uFB72', 2407,
+    '\uFB73', 2407,
+    '\uFB74', 2407,
+    '\uFB75', 2407,
+    '\uFB76', 2408,
+    '\uFB77', 2408,
+    '\uFB78', 2408,
+    '\uFB79', 2408,
+    '\uFB7A', 2409,
+    '\uFB7B', 2409,
+    '\uFB7C', 2409,
+    '\uFB7D', 2409,
+    '\uFB7E', 2410,
+    '\uFB7F', 2410,
+    '\uFB80', 2410,
+    '\uFB81', 2410,
+    '\uFB82', 2411,
+    '\uFB83', 2411,
+    '\uFB84', 2412,
+    '\uFB85', 2412,
+    '\uFB86', 2413,
+    '\uFB87', 2413,
+    '\uFB88', 2414,
+    '\uFB89', 2414,
+    '\uFB8A', 2415,
+    '\uFB8B', 2415,
+    '\uFB8C', 2416,
+    '\uFB8D', 2416,
+    '\uFB8E', 2417,
+    '\uFB8F', 2417,
+    '\uFB90', 2417,
+    '\uFB91', 2417,
+    '\uFB92', 2418,
+    '\uFB93', 2418,
+    '\uFB94', 2418,
+    '\uFB95', 2418,
+    '\uFB96', 2419,
+    '\uFB97', 2419,
+    '\uFB98', 2419,
+    '\uFB99', 2419,
+    '\uFB9A', 2420,
+    '\uFB9B', 2420,
+    '\uFB9C', 2420,
+    '\uFB9D', 2420,
+    '\uFB9E', 2421,
+    '\uFB9F', 2421,
+    '\uFBA0', 2422,
+    '\uFBA1', 2422,
+    '\uFBA2', 2422,
+    '\uFBA3', 2422,
+    '\uFBA4', 404,
+    '\uFBA5', 404,
+    '\uFBA6', 2423,
+    '\uFBA7', 2423,
+    '\uFBA8', 2423,
+    '\uFBA9', 2423,
+    '\uFBAA', 2424,
+    '\uFBAB', 2424,
+    '\uFBAC', 2424,
+    '\uFBAD', 2424,
+    '\uFBAE', 2425,
+    '\uFBAF', 2425,
+    '\uFBB0', 406,
+    '\uFBB1', 406,
+    '\uFBD3', 2426,
+    '\uFBD4', 2426,
+    '\uFBD5', 2426,
+    '\uFBD6', 2426,
+    '\uFBD7', 2427,
+    '\uFBD8', 2427,
+    '\uFBD9', 2428,
+    '\uFBDA', 2428,
+    '\uFBDB', 2429,
+    '\uFBDC', 2429,
+    '\uFBDD', 402,
+    '\uFBDE', 2430,
+    '\uFBDF', 2430,
+    '\uFBE0', 2431,
+    '\uFBE1', 2431,
+    '\uFBE2', 2432,
+    '\uFBE3', 2432,
+    '\uFBE4', 2433,
+    '\uFBE5', 2433,
+    '\uFBE6', 2433,
+    '\uFBE7', 2433,
+    '\uFBE8', 2434,
+    '\uFBE9', 2434,
+    '\uFBEA', 2435,
+    '\uFBEB', 2435,
+    '\uFBEC', 2436,
+    '\uFBED', 2436,
+    '\uFBEE', 2437,
+    '\uFBEF', 2437,
+    '\uFBF0', 2438,
+    '\uFBF1', 2438,
+    '\uFBF2', 2439,
+    '\uFBF3', 2439,
+    '\uFBF4', 2440,
+    '\uFBF5', 2440,
+    '\uFBF6', 2441,
+    '\uFBF7', 2441,
+    '\uFBF8', 2441,
+    '\uFBF9', 2442,
+    '\uFBFA', 2442,
+    '\uFBFB', 2442,
+    '\uFBFC', 2443,
+    '\uFBFD', 2443,
+    '\uFBFE', 2443,
+    '\uFBFF', 2443,
+    '\uFC00', 2444,
+    '\uFC01', 2445,
+    '\uFC02', 2446,
+    '\uFC03', 2442,
+    '\uFC04', 2447,
+    '\uFC05', 2448,
+    '\uFC06', 2449,
+    '\uFC07', 2450,
+    '\uFC08', 2451,
+    '\uFC09', 2452,
+    '\uFC0A', 2453,
+    '\uFC0B', 2454,
+    '\uFC0C', 2455,
+    '\uFC0D', 2456,
+    '\uFC0E', 2457,
+    '\uFC0F', 2458,
+    '\uFC10', 2459,
+    '\uFC11', 2460,
+    '\uFC12', 2461,
+    '\uFC13', 2462,
+    '\uFC14', 2463,
+    '\uFC15', 2464,
+    '\uFC16', 2465,
+    '\uFC17', 2466,
+    '\uFC18', 2467,
+    '\uFC19', 2468,
+    '\uFC1A', 2469,
+    '\uFC1B', 2470,
+    '\uFC1C', 2471,
+    '\uFC1D', 2472,
+    '\uFC1E', 2473,
+    '\uFC1F', 2474,
+    '\uFC20', 2475,
+    '\uFC21', 2476,
+    '\uFC22', 2477,
+    '\uFC23', 2478,
+    '\uFC24', 2479,
+    '\uFC25', 2480,
+    '\uFC26', 2481,
+    '\uFC27', 2482,
+    '\uFC28', 2483,
+    '\uFC29', 2484,
+    '\uFC2A', 2485,
+    '\uFC2B', 2486,
+    '\uFC2C', 2487,
+    '\uFC2D', 2488,
+    '\uFC2E', 2489,
+    '\uFC2F', 2490,
+    '\uFC30', 2491,
+    '\uFC31', 2492,
+    '\uFC32', 2493,
+    '\uFC33', 2494,
+    '\uFC34', 2495,
+    '\uFC35', 2496,
+    '\uFC36', 2497,
+    '\uFC37', 2498,
+    '\uFC38', 2499,
+    '\uFC39', 2500,
+    '\uFC3A', 2501,
+    '\uFC3B', 2502,
+    '\uFC3C', 2503,
+    '\uFC3D', 2504,
+    '\uFC3E', 2505,
+    '\uFC3F', 2506,
+    '\uFC40', 2507,
+    '\uFC41', 2508,
+    '\uFC42', 2509,
+    '\uFC43', 2510,
+    '\uFC44', 2511,
+    '\uFC45', 2512,
+    '\uFC46', 2513,
+    '\uFC47', 2514,
+    '\uFC48', 2515,
+    '\uFC49', 2516,
+    '\uFC4A', 2517,
+    '\uFC4B', 2518,
+    '\uFC4C', 2519,
+    '\uFC4D', 2520,
+    '\uFC4E', 2521,
+    '\uFC4F', 2522,
+    '\uFC50', 2523,
+    '\uFC51', 2524,
+    '\uFC52', 2525,
+    '\uFC53', 2526,
+    '\uFC54', 2527,
+    '\uFC55', 2528,
+    '\uFC56', 2529,
+    '\uFC57', 2530,
+    '\uFC58', 2531,
+    '\uFC59', 2532,
+    '\uFC5A', 2533,
+    '\uFC5B', 2534,
+    '\uFC5C', 2535,
+    '\uFC5D', 2536,
+    '\uFC5E', 2537,
+    '\uFC5F', 2538,
+    '\uFC60', 2539,
+    '\uFC61', 2540,
+    '\uFC62', 2541,
+    '\uFC63', 2542,
+    '\uFC64', 2543,
+    '\uFC65', 2544,
+    '\uFC66', 2446,
+    '\uFC67', 2545,
+    '\uFC68', 2442,
+    '\uFC69', 2447,
+    '\uFC6A', 2546,
+    '\uFC6B', 2547,
+    '\uFC6C', 2451,
+    '\uFC6D', 2548,
+    '\uFC6E', 2452,
+    '\uFC6F', 2453,
+    '\uFC70', 2549,
+    '\uFC71', 2550,
+    '\uFC72', 2457,
+    '\uFC73', 2551,
+    '\uFC74', 2458,
+    '\uFC75', 2459,
+    '\uFC76', 2552,
+    '\uFC77', 2553,
+    '\uFC78', 2461,
+    '\uFC79', 2554,
+    '\uFC7A', 2462,
+    '\uFC7B', 2463,
+    '\uFC7C', 2492,
+    '\uFC7D', 2493,
+    '\uFC7E', 2496,
+    '\uFC7F', 2497,
+    '\uFC80', 2498,
+    '\uFC81', 2502,
+    '\uFC82', 2503,
+    '\uFC83', 2504,
+    '\uFC84', 2505,
+    '\uFC85', 2509,
+    '\uFC86', 2510,
+    '\uFC87', 2511,
+    '\uFC88', 2555,
+    '\uFC89', 2515,
+    '\uFC8A', 2556,
+    '\uFC8B', 2557,
+    '\uFC8C', 2521,
+    '\uFC8D', 2558,
+    '\uFC8E', 2522,
+    '\uFC8F', 2523,
+    '\uFC90', 2536,
+    '\uFC91', 2559,
+    '\uFC92', 2560,
+    '\uFC93', 2531,
+    '\uFC94', 2561,
+    '\uFC95', 2532,
+    '\uFC96', 2533,
+    '\uFC97', 2444,
+    '\uFC98', 2445,
+    '\uFC99', 2562,
+    '\uFC9A', 2446,
+    '\uFC9B', 2563,
+    '\uFC9C', 2448,
+    '\uFC9D', 2449,
+    '\uFC9E', 2450,
+    '\uFC9F', 2451,
+    '\uFCA0', 2564,
+    '\uFCA1', 2454,
+    '\uFCA2', 2455,
+    '\uFCA3', 2456,
+    '\uFCA4', 2457,
+    '\uFCA5', 2565,
+    '\uFCA6', 2461,
+    '\uFCA7', 2464,
+    '\uFCA8', 2465,
+    '\uFCA9', 2466,
+    '\uFCAA', 2467,
+    '\uFCAB', 2468,
+    '\uFCAC', 2470,
+    '\uFCAD', 2471,
+    '\uFCAE', 2472,
+    '\uFCAF', 2473,
+    '\uFCB0', 2474,
+    '\uFCB1', 2475,
+    '\uFCB2', 2566,
+    '\uFCB3', 2476,
+    '\uFCB4', 2477,
+    '\uFCB5', 2478,
+    '\uFCB6', 2479,
+    '\uFCB7', 2480,
+    '\uFCB8', 2481,
+    '\uFCB9', 2483,
+    '\uFCBA', 2484,
+    '\uFCBB', 2485,
+    '\uFCBC', 2486,
+    '\uFCBD', 2487,
+    '\uFCBE', 2488,
+    '\uFCBF', 2489,
+    '\uFCC0', 2490,
+    '\uFCC1', 2491,
+    '\uFCC2', 2494,
+    '\uFCC3', 2495,
+    '\uFCC4', 2499,
+    '\uFCC5', 2500,
+    '\uFCC6', 2501,
+    '\uFCC7', 2502,
+    '\uFCC8', 2503,
+    '\uFCC9', 2506,
+    '\uFCCA', 2507,
+    '\uFCCB', 2508,
+    '\uFCCC', 2509,
+    '\uFCCD', 2567,
+    '\uFCCE', 2512,
+    '\uFCCF', 2513,
+    '\uFCD0', 2514,
+    '\uFCD1', 2515,
+    '\uFCD2', 2518,
+    '\uFCD3', 2519,
+    '\uFCD4', 2520,
+    '\uFCD5', 2521,
+    '\uFCD6', 2568,
+    '\uFCD7', 2524,
+    '\uFCD8', 2525,
+    '\uFCD9', 2569,
+    '\uFCDA', 2528,
+    '\uFCDB', 2529,
+    '\uFCDC', 2530,
+    '\uFCDD', 2531,
+    '\uFCDE', 2570,
+    '\uFCDF', 2446,
+    '\uFCE0', 2563,
+    '\uFCE1', 2451,
+    '\uFCE2', 2564,
+    '\uFCE3', 2457,
+    '\uFCE4', 2565,
+    '\uFCE5', 2461,
+    '\uFCE6', 2571,
+    '\uFCE7', 2474,
+    '\uFCE8', 2572,
+    '\uFCE9', 2573,
+    '\uFCEA', 2574,
+    '\uFCEB', 2502,
+    '\uFCEC', 2503,
+    '\uFCED', 2509,
+    '\uFCEE', 2521,
+    '\uFCEF', 2568,
+    '\uFCF0', 2531,
+    '\uFCF1', 2570,
+    '\uFCF2', 2575,
+    '\uFCF3', 2576,
+    '\uFCF4', 2577,
+    '\uFCF5', 2578,
+    '\uFCF6', 2579,
+    '\uFCF7', 2580,
+    '\uFCF8', 2581,
+    '\uFCF9', 2582,
+    '\uFCFA', 2583,
+    '\uFCFB', 2584,
+    '\uFCFC', 2585,
+    '\uFCFD', 2586,
+    '\uFCFE', 2587,
+    '\uFCFF', 2588,
+    '\uFD00', 2589,
+    '\uFD01', 2590,
+    '\uFD02', 2591,
+    '\uFD03', 2592,
+    '\uFD04', 2593,
+    '\uFD05', 2594,
+    '\uFD06', 2595,
+    '\uFD07', 2596,
+    '\uFD08', 2597,
+    '\uFD09', 2598,
+    '\uFD0A', 2599,
+    '\uFD0B', 2600,
+    '\uFD0C', 2573,
+    '\uFD0D', 2601,
+    '\uFD0E', 2602,
+    '\uFD0F', 2603,
+    '\uFD10', 2604,
+    '\uFD11', 2578,
+    '\uFD12', 2579,
+    '\uFD13', 2580,
+    '\uFD14', 2581,
+    '\uFD15', 2582,
+    '\uFD16', 2583,
+    '\uFD17', 2584,
+    '\uFD18', 2585,
+    '\uFD19', 2586,
+    '\uFD1A', 2587,
+    '\uFD1B', 2588,
+    '\uFD1C', 2589,
+    '\uFD1D', 2590,
+    '\uFD1E', 2591,
+    '\uFD1F', 2592,
+    '\uFD20', 2593,
+    '\uFD21', 2594,
+    '\uFD22', 2595,
+    '\uFD23', 2596,
+    '\uFD24', 2597,
+    '\uFD25', 2598,
+    '\uFD26', 2599,
+    '\uFD27', 2600,
+    '\uFD28', 2573,
+    '\uFD29', 2601,
+    '\uFD2A', 2602,
+    '\uFD2B', 2603,
+    '\uFD2C', 2604,
+    '\uFD2D', 2598,
+    '\uFD2E', 2599,
+    '\uFD2F', 2600,
+    '\uFD30', 2573,
+    '\uFD31', 2572,
+    '\uFD32', 2574,
+    '\uFD33', 2482,
+    '\uFD34', 2471,
+    '\uFD35', 2472,
+    '\uFD36', 2473,
+    '\uFD37', 2598,
+    '\uFD38', 2599,
+    '\uFD39', 2600,
+    '\uFD3A', 2482,
+    '\uFD3B', 2483,
+    '\uFD3C', 2605,
+    '\uFD3D', 2605,
+    '\uFD50', 2606,
+    '\uFD51', 2607,
+    '\uFD52', 2607,
+    '\uFD53', 2608,
+    '\uFD54', 2609,
+    '\uFD55', 2610,
+    '\uFD56', 2611,
+    '\uFD57', 2612,
+    '\uFD58', 2613,
+    '\uFD59', 2613,
+    '\uFD5A', 2614,
+    '\uFD5B', 2615,
+    '\uFD5C', 2616,
+    '\uFD5D', 2617,
+    '\uFD5E', 2618,
+    '\uFD5F', 2619,
+    '\uFD60', 2619,
+    '\uFD61', 2620,
+    '\uFD62', 2621,
+    '\uFD63', 2621,
+    '\uFD64', 2622,
+    '\uFD65', 2622,
+    '\uFD66', 2623,
+    '\uFD67', 2624,
+    '\uFD68', 2624,
+    '\uFD69', 2625,
+    '\uFD6A', 2626,
+    '\uFD6B', 2626,
+    '\uFD6C', 2627,
+    '\uFD6D', 2627,
+    '\uFD6E', 2628,
+    '\uFD6F', 2629,
+    '\uFD70', 2629,
+    '\uFD71', 2630,
+    '\uFD72', 2630,
+    '\uFD73', 2631,
+    '\uFD74', 2632,
+    '\uFD75', 2633,
+    '\uFD76', 2634,
+    '\uFD77', 2634,
+    '\uFD78', 2635,
+    '\uFD79', 2636,
+    '\uFD7A', 2637,
+    '\uFD7B', 2638,
+    '\uFD7C', 2639,
+    '\uFD7D', 2639,
+    '\uFD7E', 2640,
+    '\uFD7F', 2641,
+    '\uFD80', 2642,
+    '\uFD81', 2643,
+    '\uFD82', 2644,
+    '\uFD83', 2645,
+    '\uFD84', 2645,
+    '\uFD85', 2646,
+    '\uFD86', 2646,
+    '\uFD87', 2647,
+    '\uFD88', 2647,
+    '\uFD89', 2648,
+    '\uFD8A', 2649,
+    '\uFD8B', 2650,
+    '\uFD8C', 2651,
+    '\uFD8D', 2652,
+    '\uFD8E', 2653,
+    '\uFD8F', 2654,
+    '\uFD92', 2655,
+    '\uFD93', 2656,
+    '\uFD94', 2657,
+    '\uFD95', 2658,
+    '\uFD96', 2659,
+    '\uFD97', 2660,
+    '\uFD98', 2660,
+    '\uFD99', 2661,
+    '\uFD9A', 2662,
+    '\uFD9B', 2663,
+    '\uFD9C', 2664,
+    '\uFD9D', 2664,
+    '\uFD9E', 2665,
+    '\uFD9F', 2666,
+    '\uFDA0', 2667,
+    '\uFDA1', 2668,
+    '\uFDA2', 2669,
+    '\uFDA3', 2670,
+    '\uFDA4', 2671,
+    '\uFDA5', 2672,
+    '\uFDA6', 2673,
+    '\uFDA7', 2674,
+    '\uFDA8', 2675,
+    '\uFDA9', 2676,
+    '\uFDAA', 2677,
+    '\uFDAB', 2678,
+    '\uFDAC', 2679,
+    '\uFDAD', 2680,
+    '\uFDAE', 2681,
+    '\uFDAF', 2682,
+    '\uFDB0', 2683,
+    '\uFDB1', 2684,
+    '\uFDB2', 2685,
+    '\uFDB3', 2686,
+    '\uFDB4', 2640,
+    '\uFDB5', 2642,
+    '\uFDB6', 2687,
+    '\uFDB7', 2688,
+    '\uFDB8', 2689,
+    '\uFDB9', 2690,
+    '\uFDBA', 2691,
+    '\uFDBB', 2692,
+    '\uFDBC', 2691,
+    '\uFDBD', 2689,
+    '\uFDBE', 2693,
+    '\uFDBF', 2694,
+    '\uFDC0', 2695,
+    '\uFDC1', 2696,
+    '\uFDC2', 2697,
+    '\uFDC3', 2692,
+    '\uFDC4', 2633,
+    '\uFDC5', 2623,
+    '\uFDC6', 2698,
+    '\uFDC7', 2699,
+    '\uFDF0', 2700,
+    '\uFDF1', 2701,
+    '\uFDF2', 2702,
+    '\uFDF3', 2703,
+    '\uFDF4', 2704,
+    '\uFDF5', 2705,
+    '\uFDF6', 2706,
+    '\uFDF7', 2707,
+    '\uFDF8', 2708,
+    '\uFDF9', 2709,
+    '\uFDFA', 2710,
+    '\uFDFB', 2711,
+    '\uFDFC', 2712,
+    '\uFE30', 938,
+    '\uFE31', 2713,
+    '\uFE32', 2714,
+    '\uFE33', 2715,
+    '\uFE34', 2715,
+    '\uFE35', 961,
+    '\uFE36', 962,
+    '\uFE37', 2716,
+    '\uFE38', 2717,
+    '\uFE39', 2718,
+    '\uFE3A', 2719,
+    '\uFE3B', 2720,
+    '\uFE3C', 2721,
+    '\uFE3D', 2722,
+    '\uFE3E', 2723,
+    '\uFE3F', 1088,
+    '\uFE40', 1089,
+    '\uFE41', 2724,
+    '\uFE42', 2725,
+    '\uFE43', 2726,
+    '\uFE44', 2727,
+    '\uFE49', 945,
+    '\uFE4A', 945,
+    '\uFE4B', 945,
+    '\uFE4C', 945,
+    '\uFE4D', 2715,
+    '\uFE4E', 2715,
+    '\uFE4F', 2715,
+    '\uFE50', 2728,
+    '\uFE51', 2729,
+    '\uFE52', 937,
+    '\uFE54', 309,
+    '\uFE55', 2730,
+    '\uFE56', 2731,
+    '\uFE57', 2732,
+    '\uFE58', 2713,
+    '\uFE59', 961,
+    '\uFE5A', 962,
+    '\uFE5B', 2716,
+    '\uFE5C', 2717,
+    '\uFE5D', 2718,
+    '\uFE5E', 2719,
+    '\uFE5F', 2733,
+    '\uFE60', 2734,
+    '\uFE61', 2735,
+    '\uFE62', 958,
+    '\uFE63', 2736,
+    '\uFE64', 2737,
+    '\uFE65', 2738,
+    '\uFE66', 960,
+    '\uFE68', 2739,
+    '\uFE69', 2740,
+    '\uFE6A', 2741,
+    '\uFE6B', 2742,
+    '\uFE70', 2743,
+    '\uFE71', 2744,
+    '\uFE72', 2745,
+    '\uFE74', 2746,
+    '\uFE76', 2747,
+    '\uFE77', 2748,
+    '\uFE78', 2749,
+    '\uFE79', 2750,
+    '\uFE7A', 2751,
+    '\uFE7B', 2752,
+    '\uFE7C', 2753,
+    '\uFE7D', 2754,
+    '\uFE7E', 2755,
+    '\uFE7F', 2756,
+    '\uFE80', 2757,
+    '\uFE81', 395,
+    '\uFE82', 395,
+    '\uFE83', 396,
+    '\uFE84', 396,
+    '\uFE85', 397,
+    '\uFE86', 397,
+    '\uFE87', 398,
+    '\uFE88', 398,
+    '\uFE89', 399,
+    '\uFE8A', 399,
+    '\uFE8B', 399,
+    '\uFE8C', 399,
+    '\uFE8D', 2758,
+    '\uFE8E', 2758,
+    '\uFE8F', 2759,
+    '\uFE90', 2759,
+    '\uFE91', 2759,
+    '\uFE92', 2759,
+    '\uFE93', 2760,
+    '\uFE94', 2760,
+    '\uFE95', 2761,
+    '\uFE96', 2761,
+    '\uFE97', 2761,
+    '\uFE98', 2761,
+    '\uFE99', 2762,
+    '\uFE9A', 2762,
+    '\uFE9B', 2762,
+    '\uFE9C', 2762,
+    '\uFE9D', 2763,
+    '\uFE9E', 2763,
+    '\uFE9F', 2763,
+    '\uFEA0', 2763,
+    '\uFEA1', 2764,
+    '\uFEA2', 2764,
+    '\uFEA3', 2764,
+    '\uFEA4', 2764,
+    '\uFEA5', 2765,
+    '\uFEA6', 2765,
+    '\uFEA7', 2765,
+    '\uFEA8', 2765,
+    '\uFEA9', 2766,
+    '\uFEAA', 2766,
+    '\uFEAB', 2767,
+    '\uFEAC', 2767,
+    '\uFEAD', 2768,
+    '\uFEAE', 2768,
+    '\uFEAF', 2769,
+    '\uFEB0', 2769,
+    '\uFEB1', 2770,
+    '\uFEB2', 2770,
+    '\uFEB3', 2770,
+    '\uFEB4', 2770,
+    '\uFEB5', 2771,
+    '\uFEB6', 2771,
+    '\uFEB7', 2771,
+    '\uFEB8', 2771,
+    '\uFEB9', 2772,
+    '\uFEBA', 2772,
+    '\uFEBB', 2772,
+    '\uFEBC', 2772,
+    '\uFEBD', 2773,
+    '\uFEBE', 2773,
+    '\uFEBF', 2773,
+    '\uFEC0', 2773,
+    '\uFEC1', 2774,
+    '\uFEC2', 2774,
+    '\uFEC3', 2774,
+    '\uFEC4', 2774,
+    '\uFEC5', 2775,
+    '\uFEC6', 2775,
+    '\uFEC7', 2775,
+    '\uFEC8', 2775,
+    '\uFEC9', 2776,
+    '\uFECA', 2776,
+    '\uFECB', 2776,
+    '\uFECC', 2776,
+    '\uFECD', 2777,
+    '\uFECE', 2777,
+    '\uFECF', 2777,
+    '\uFED0', 2777,
+    '\uFED1', 2778,
+    '\uFED2', 2778,
+    '\uFED3', 2778,
+    '\uFED4', 2778,
+    '\uFED5', 2779,
+    '\uFED6', 2779,
+    '\uFED7', 2779,
+    '\uFED8', 2779,
+    '\uFED9', 2780,
+    '\uFEDA', 2780,
+    '\uFEDB', 2780,
+    '\uFEDC', 2780,
+    '\uFEDD', 2781,
+    '\uFEDE', 2781,
+    '\uFEDF', 2781,
+    '\uFEE0', 2781,
+    '\uFEE1', 2782,
+    '\uFEE2', 2782,
+    '\uFEE3', 2782,
+    '\uFEE4', 2782,
+    '\uFEE5', 2783,
+    '\uFEE6', 2783,
+    '\uFEE7', 2783,
+    '\uFEE8', 2783,
+    '\uFEE9', 2784,
+    '\uFEEA', 2784,
+    '\uFEEB', 2784,
+    '\uFEEC', 2784,
+    '\uFEED', 2785,
+    '\uFEEE', 2785,
+    '\uFEEF', 2434,
+    '\uFEF0', 2434,
+    '\uFEF1', 2786,
+    '\uFEF2', 2786,
+    '\uFEF3', 2786,
+    '\uFEF4', 2786,
+    '\uFEF5', 2787,
+    '\uFEF6', 2787,
+    '\uFEF7', 2788,
+    '\uFEF8', 2788,
+    '\uFEF9', 2789,
+    '\uFEFA', 2789,
+    '\uFEFB', 2790,
+    '\uFEFC', 2790,
+    '\uFF01', 2732,
+    '\uFF02', 2791,
+    '\uFF03', 2733,
+    '\uFF04', 2740,
+    '\uFF05', 2741,
+    '\uFF06', 2734,
+    '\uFF07', 2792,
+    '\uFF08', 961,
+    '\uFF09', 962,
+    '\uFF0A', 2735,
+    '\uFF0B', 958,
+    '\uFF0C', 2728,
+    '\uFF0D', 2736,
+    '\uFF0E', 937,
+    '\uFF0F', 2793,
+    '\uFF10', 950,
+    '\uFF11', 9,
+    '\uFF12', 4,
+    '\uFF13', 5,
+    '\uFF14', 952,
+    '\uFF15', 953,
+    '\uFF16', 954,
+    '\uFF17', 955,
+    '\uFF18', 956,
+    '\uFF19', 957,
+    '\uFF1A', 2730,
+    '\uFF1B', 309,
+    '\uFF1C', 2737,
+    '\uFF1D', 960,
+    '\uFF1E', 2738,
+    '\uFF1F', 2731,
+    '\uFF20', 2742,
+    '\uFF21', 1167,
+    '\uFF22', 989,
+    '\uFF23', 967,
+    '\uFF24', 1002,
+    '\uFF25', 991,
+    '\uFF26', 992,
+    '\uFF27', 1168,
+    '\uFF28', 974,
+    '\uFF29', 976,
+    '\uFF2A', 1169,
+    '\uFF2B', 988,
+    '\uFF2C', 977,
+    '\uFF2D', 993,
+    '\uFF2E', 978,
+    '\uFF2F', 1170,
+    '\uFF30', 980,
+    '\uFF31', 981,
+    '\uFF32', 982,
+    '\uFF33', 1171,
+    '\uFF34', 1172,
+    '\uFF35', 1173,
+    '\uFF36', 1020,
+    '\uFF37', 1174,
+    '\uFF38', 1025,
+    '\uFF39', 1175,
+    '\uFF3A', 986,
+    '\uFF3B', 2794,
+    '\uFF3C', 2739,
+    '\uFF3D', 2795,
+    '\uFF3E', 2796,
+    '\uFF3F', 2715,
+    '\uFF40', 925,
+    '\uFF41', 2,
+    '\uFF42', 1176,
+    '\uFF43', 1038,
+    '\uFF44', 1003,
+    '\uFF45', 990,
+    '\uFF46', 1177,
+    '\uFF47', 973,
+    '\uFF48', 284,
+    '\uFF49', 951,
+    '\uFF4A', 286,
+    '\uFF4B', 1178,
+    '\uFF4C', 300,
+    '\uFF4D', 1039,
+    '\uFF4E', 963,
+    '\uFF4F', 10,
+    '\uFF50', 1179,
+    '\uFF51', 1180,
+    '\uFF52', 287,
+    '\uFF53', 180,
+    '\uFF54', 1181,
+    '\uFF55', 1182,
+    '\uFF56', 1031,
+    '\uFF57', 291,
+    '\uFF58', 301,
+    '\uFF59', 292,
+    '\uFF5A', 1183,
+    '\uFF5B', 2716,
+    '\uFF5C', 2797,
+    '\uFF5D', 2717,
+    '\uFF5E', 2798,
+    '\uFF5F', 2799,
+    '\uFF60', 2800,
+    '\uFF61', 2801,
+    '\uFF62', 2724,
+    '\uFF63', 2725,
+    '\uFF64', 2729,
+    '\uFF65', 2802,
+    '\uFF66', 1773,
+    '\uFF67', 2803,
+    '\uFF68', 2804,
+    '\uFF69', 2805,
+    '\uFF6A', 2806,
+    '\uFF6B', 2807,
+    '\uFF6C', 2808,
+    '\uFF6D', 2809,
+    '\uFF6E', 2810,
+    '\uFF6F', 2811,
+    '\uFF70', 2812,
+    '\uFF71', 1727,
+    '\uFF72', 1728,
+    '\uFF73', 1729,
+    '\uFF74', 1730,
+    '\uFF75', 1731,
+    '\uFF76', 1732,
+    '\uFF77', 1733,
+    '\uFF78', 1734,
+    '\uFF79', 1735,
+    '\uFF7A', 1736,
+    '\uFF7B', 1737,
+    '\uFF7C', 1738,
+    '\uFF7D', 1739,
+    '\uFF7E', 1740,
+    '\uFF7F', 1741,
+    '\uFF80', 1742,
+    '\uFF81', 1743,
+    '\uFF82', 1744,
+    '\uFF83', 1745,
+    '\uFF84', 1746,
+    '\uFF85', 1747,
+    '\uFF86', 1748,
+    '\uFF87', 1749,
+    '\uFF88', 1750,
+    '\uFF89', 1751,
+    '\uFF8A', 1752,
+    '\uFF8B', 1753,
+    '\uFF8C', 1754,
+    '\uFF8D', 1755,
+    '\uFF8E', 1756,
+    '\uFF8F', 1757,
+    '\uFF90', 1758,
+    '\uFF91', 1759,
+    '\uFF92', 1760,
+    '\uFF93', 1761,
+    '\uFF94', 1762,
+    '\uFF95', 1763,
+    '\uFF96', 1764,
+    '\uFF97', 1765,
+    '\uFF98', 1766,
+    '\uFF99', 1767,
+    '\uFF9A', 1768,
+    '\uFF9B', 1769,
+    '\uFF9C', 1770,
+    '\uFF9D', 2813,
+    '\uFF9E', 2814,
+    '\uFF9F', 2815,
+    '\uFFA0', 1521,
+    '\uFFA1', 1470,
+    '\uFFA2', 1471,
+    '\uFFA3', 1472,
+    '\uFFA4', 1473,
+    '\uFFA5', 1474,
+    '\uFFA6', 1475,
+    '\uFFA7', 1476,
+    '\uFFA8', 1477,
+    '\uFFA9', 1478,
+    '\uFFAA', 1479,
+    '\uFFAB', 1480,
+    '\uFFAC', 1481,
+    '\uFFAD', 1482,
+    '\uFFAE', 1483,
+    '\uFFAF', 1484,
+    '\uFFB0', 1485,
+    '\uFFB1', 1486,
+    '\uFFB2', 1487,
+    '\uFFB3', 1488,
+    '\uFFB4', 1489,
+    '\uFFB5', 1490,
+    '\uFFB6', 1491,
+    '\uFFB7', 1492,
+    '\uFFB8', 1493,
+    '\uFFB9', 1494,
+    '\uFFBA', 1495,
+    '\uFFBB', 1496,
+    '\uFFBC', 1497,
+    '\uFFBD', 1498,
+    '\uFFBE', 1499,
+    '\uFFC2', 1500,
+    '\uFFC3', 1501,
+    '\uFFC4', 1502,
+    '\uFFC5', 1503,
+    '\uFFC6', 1504,
+    '\uFFC7', 1505,
+    '\uFFCA', 1506,
+    '\uFFCB', 1507,
+    '\uFFCC', 1508,
+    '\uFFCD', 1509,
+    '\uFFCE', 1510,
+    '\uFFCF', 1511,
+    '\uFFD2', 1512,
+    '\uFFD3', 1513,
+    '\uFFD4', 1514,
+    '\uFFD5', 1515,
+    '\uFFD6', 1516,
+    '\uFFD7', 1517,
+    '\uFFDA', 1518,
+    '\uFFDB', 1519,
+    '\uFFDC', 1520,
+    '\uFFE0', 2816,
+    '\uFFE1', 2817,
+    '\uFFE2', 2818,
+    '\uFFE3', 3,
+    '\uFFE4', 2819,
+    '\uFFE5', 2820,
+    '\uFFE6', 2821,
+    '\uFFE8', 2822,
+    '\uFFE9', 2823,
+    '\uFFEA', 2824,
+    '\uFFEB', 2825,
+    '\uFFEC', 2826,
+    '\uFFED', 2827,
+    '\uFFEE', 2828,
+  };
+}
diff --git a/csharp/DecompositionMappings.cs b/csharp/DecompositionMappings.cs
new file mode 100644 (file)
index 0000000..82d362e
--- /dev/null
@@ -0,0 +1,2837 @@
+// Do not edit !!!
+// this file is generated automatically
+
+public class DecompositionMappings
+{
+       public static readonly string[] m = new string[] {
+    "\u0020",
+    "\u0020\u0308",
+    "\u0061",
+    "\u0020\u0304",
+    "\u0032",
+    "\u0033",
+    "\u0020\u0301",
+    "\u03BC",
+    "\u0020\u0327",
+    "\u0031",
+    "\u006F",
+    "\u0031\u2044\u0034",
+    "\u0031\u2044\u0032",
+    "\u0033\u2044\u0034",
+    "\u0041\u0300",
+    "\u0041\u0301",
+    "\u0041\u0302",
+    "\u0041\u0303",
+    "\u0041\u0308",
+    "\u0041\u030A",
+    "\u0043\u0327",
+    "\u0045\u0300",
+    "\u0045\u0301",
+    "\u0045\u0302",
+    "\u0045\u0308",
+    "\u0049\u0300",
+    "\u0049\u0301",
+    "\u0049\u0302",
+    "\u0049\u0308",
+    "\u004E\u0303",
+    "\u004F\u0300",
+    "\u004F\u0301",
+    "\u004F\u0302",
+    "\u004F\u0303",
+    "\u004F\u0308",
+    "\u0055\u0300",
+    "\u0055\u0301",
+    "\u0055\u0302",
+    "\u0055\u0308",
+    "\u0059\u0301",
+    "\u0061\u0300",
+    "\u0061\u0301",
+    "\u0061\u0302",
+    "\u0061\u0303",
+    "\u0061\u0308",
+    "\u0061\u030A",
+    "\u0063\u0327",
+    "\u0065\u0300",
+    "\u0065\u0301",
+    "\u0065\u0302",
+    "\u0065\u0308",
+    "\u0069\u0300",
+    "\u0069\u0301",
+    "\u0069\u0302",
+    "\u0069\u0308",
+    "\u006E\u0303",
+    "\u006F\u0300",
+    "\u006F\u0301",
+    "\u006F\u0302",
+    "\u006F\u0303",
+    "\u006F\u0308",
+    "\u0075\u0300",
+    "\u0075\u0301",
+    "\u0075\u0302",
+    "\u0075\u0308",
+    "\u0079\u0301",
+    "\u0079\u0308",
+    "\u0041\u0304",
+    "\u0061\u0304",
+    "\u0041\u0306",
+    "\u0061\u0306",
+    "\u0041\u0328",
+    "\u0061\u0328",
+    "\u0043\u0301",
+    "\u0063\u0301",
+    "\u0043\u0302",
+    "\u0063\u0302",
+    "\u0043\u0307",
+    "\u0063\u0307",
+    "\u0043\u030C",
+    "\u0063\u030C",
+    "\u0044\u030C",
+    "\u0064\u030C",
+    "\u0045\u0304",
+    "\u0065\u0304",
+    "\u0045\u0306",
+    "\u0065\u0306",
+    "\u0045\u0307",
+    "\u0065\u0307",
+    "\u0045\u0328",
+    "\u0065\u0328",
+    "\u0045\u030C",
+    "\u0065\u030C",
+    "\u0047\u0302",
+    "\u0067\u0302",
+    "\u0047\u0306",
+    "\u0067\u0306",
+    "\u0047\u0307",
+    "\u0067\u0307",
+    "\u0047\u0327",
+    "\u0067\u0327",
+    "\u0048\u0302",
+    "\u0068\u0302",
+    "\u0049\u0303",
+    "\u0069\u0303",
+    "\u0049\u0304",
+    "\u0069\u0304",
+    "\u0049\u0306",
+    "\u0069\u0306",
+    "\u0049\u0328",
+    "\u0069\u0328",
+    "\u0049\u0307",
+    "\u0049\u004A",
+    "\u0069\u006A",
+    "\u004A\u0302",
+    "\u006A\u0302",
+    "\u004B\u0327",
+    "\u006B\u0327",
+    "\u004C\u0301",
+    "\u006C\u0301",
+    "\u004C\u0327",
+    "\u006C\u0327",
+    "\u004C\u030C",
+    "\u006C\u030C",
+    "\u004C\u00B7",
+    "\u006C\u00B7",
+    "\u004E\u0301",
+    "\u006E\u0301",
+    "\u004E\u0327",
+    "\u006E\u0327",
+    "\u004E\u030C",
+    "\u006E\u030C",
+    "\u02BC\u006E",
+    "\u004F\u0304",
+    "\u006F\u0304",
+    "\u004F\u0306",
+    "\u006F\u0306",
+    "\u004F\u030B",
+    "\u006F\u030B",
+    "\u0052\u0301",
+    "\u0072\u0301",
+    "\u0052\u0327",
+    "\u0072\u0327",
+    "\u0052\u030C",
+    "\u0072\u030C",
+    "\u0053\u0301",
+    "\u0073\u0301",
+    "\u0053\u0302",
+    "\u0073\u0302",
+    "\u0053\u0327",
+    "\u0073\u0327",
+    "\u0053\u030C",
+    "\u0073\u030C",
+    "\u0054\u0327",
+    "\u0074\u0327",
+    "\u0054\u030C",
+    "\u0074\u030C",
+    "\u0055\u0303",
+    "\u0075\u0303",
+    "\u0055\u0304",
+    "\u0075\u0304",
+    "\u0055\u0306",
+    "\u0075\u0306",
+    "\u0055\u030A",
+    "\u0075\u030A",
+    "\u0055\u030B",
+    "\u0075\u030B",
+    "\u0055\u0328",
+    "\u0075\u0328",
+    "\u0057\u0302",
+    "\u0077\u0302",
+    "\u0059\u0302",
+    "\u0079\u0302",
+    "\u0059\u0308",
+    "\u005A\u0301",
+    "\u007A\u0301",
+    "\u005A\u0307",
+    "\u007A\u0307",
+    "\u005A\u030C",
+    "\u007A\u030C",
+    "\u0073",
+    "\u004F\u031B",
+    "\u006F\u031B",
+    "\u0055\u031B",
+    "\u0075\u031B",
+    "\u0044\u005A\u030C",
+    "\u0044\u007A\u030C",
+    "\u0064\u007A\u030C",
+    "\u004C\u004A",
+    "\u004C\u006A",
+    "\u006C\u006A",
+    "\u004E\u004A",
+    "\u004E\u006A",
+    "\u006E\u006A",
+    "\u0041\u030C",
+    "\u0061\u030C",
+    "\u0049\u030C",
+    "\u0069\u030C",
+    "\u004F\u030C",
+    "\u006F\u030C",
+    "\u0055\u030C",
+    "\u0075\u030C",
+    "\u0055\u0308\u0304",
+    "\u0075\u0308\u0304",
+    "\u0055\u0308\u0301",
+    "\u0075\u0308\u0301",
+    "\u0055\u0308\u030C",
+    "\u0075\u0308\u030C",
+    "\u0055\u0308\u0300",
+    "\u0075\u0308\u0300",
+    "\u0041\u0308\u0304",
+    "\u0061\u0308\u0304",
+    "\u0041\u0307\u0304",
+    "\u0061\u0307\u0304",
+    "\u00C6\u0304",
+    "\u00E6\u0304",
+    "\u0047\u030C",
+    "\u0067\u030C",
+    "\u004B\u030C",
+    "\u006B\u030C",
+    "\u004F\u0328",
+    "\u006F\u0328",
+    "\u004F\u0328\u0304",
+    "\u006F\u0328\u0304",
+    "\u01B7\u030C",
+    "\u0292\u030C",
+    "\u006A\u030C",
+    "\u0044\u005A",
+    "\u0044\u007A",
+    "\u0064\u007A",
+    "\u0047\u0301",
+    "\u0067\u0301",
+    "\u004E\u0300",
+    "\u006E\u0300",
+    "\u0041\u030A\u0301",
+    "\u0061\u030A\u0301",
+    "\u00C6\u0301",
+    "\u00E6\u0301",
+    "\u00D8\u0301",
+    "\u00F8\u0301",
+    "\u0041\u030F",
+    "\u0061\u030F",
+    "\u0041\u0311",
+    "\u0061\u0311",
+    "\u0045\u030F",
+    "\u0065\u030F",
+    "\u0045\u0311",
+    "\u0065\u0311",
+    "\u0049\u030F",
+    "\u0069\u030F",
+    "\u0049\u0311",
+    "\u0069\u0311",
+    "\u004F\u030F",
+    "\u006F\u030F",
+    "\u004F\u0311",
+    "\u006F\u0311",
+    "\u0052\u030F",
+    "\u0072\u030F",
+    "\u0052\u0311",
+    "\u0072\u0311",
+    "\u0055\u030F",
+    "\u0075\u030F",
+    "\u0055\u0311",
+    "\u0075\u0311",
+    "\u0053\u0326",
+    "\u0073\u0326",
+    "\u0054\u0326",
+    "\u0074\u0326",
+    "\u0048\u030C",
+    "\u0068\u030C",
+    "\u0041\u0307",
+    "\u0061\u0307",
+    "\u0045\u0327",
+    "\u0065\u0327",
+    "\u004F\u0308\u0304",
+    "\u006F\u0308\u0304",
+    "\u004F\u0303\u0304",
+    "\u006F\u0303\u0304",
+    "\u004F\u0307",
+    "\u006F\u0307",
+    "\u004F\u0307\u0304",
+    "\u006F\u0307\u0304",
+    "\u0059\u0304",
+    "\u0079\u0304",
+    "\u0068",
+    "\u0266",
+    "\u006A",
+    "\u0072",
+    "\u0279",
+    "\u027B",
+    "\u0281",
+    "\u0077",
+    "\u0079",
+    "\u0020\u0306",
+    "\u0020\u0307",
+    "\u0020\u030A",
+    "\u0020\u0328",
+    "\u0020\u0303",
+    "\u0020\u030B",
+    "\u0263",
+    "\u006C",
+    "\u0078",
+    "\u0295",
+    "\u0300",
+    "\u0301",
+    "\u0313",
+    "\u0308\u0301",
+    "\u02B9",
+    "\u0020\u0345",
+    "\u003B",
+    "\u0020\u0308\u0301",
+    "\u0391\u0301",
+    "\u00B7",
+    "\u0395\u0301",
+    "\u0397\u0301",
+    "\u0399\u0301",
+    "\u039F\u0301",
+    "\u03A5\u0301",
+    "\u03A9\u0301",
+    "\u03B9\u0308\u0301",
+    "\u0399\u0308",
+    "\u03A5\u0308",
+    "\u03B1\u0301",
+    "\u03B5\u0301",
+    "\u03B7\u0301",
+    "\u03B9\u0301",
+    "\u03C5\u0308\u0301",
+    "\u03B9\u0308",
+    "\u03C5\u0308",
+    "\u03BF\u0301",
+    "\u03C5\u0301",
+    "\u03C9\u0301",
+    "\u03B2",
+    "\u03B8",
+    "\u03A5",
+    "\u03C6",
+    "\u03C0",
+    "\u03BA",
+    "\u03C1",
+    "\u03C2",
+    "\u0398",
+    "\u03B5",
+    "\u0415\u0300",
+    "\u0415\u0308",
+    "\u0413\u0301",
+    "\u0406\u0308",
+    "\u041A\u0301",
+    "\u0418\u0300",
+    "\u0423\u0306",
+    "\u0418\u0306",
+    "\u0438\u0306",
+    "\u0435\u0300",
+    "\u0435\u0308",
+    "\u0433\u0301",
+    "\u0456\u0308",
+    "\u043A\u0301",
+    "\u0438\u0300",
+    "\u0443\u0306",
+    "\u0474\u030F",
+    "\u0475\u030F",
+    "\u0416\u0306",
+    "\u0436\u0306",
+    "\u0410\u0306",
+    "\u0430\u0306",
+    "\u0410\u0308",
+    "\u0430\u0308",
+    "\u0415\u0306",
+    "\u0435\u0306",
+    "\u04D8\u0308",
+    "\u04D9\u0308",
+    "\u0416\u0308",
+    "\u0436\u0308",
+    "\u0417\u0308",
+    "\u0437\u0308",
+    "\u0418\u0304",
+    "\u0438\u0304",
+    "\u0418\u0308",
+    "\u0438\u0308",
+    "\u041E\u0308",
+    "\u043E\u0308",
+    "\u04E8\u0308",
+    "\u04E9\u0308",
+    "\u042D\u0308",
+    "\u044D\u0308",
+    "\u0423\u0304",
+    "\u0443\u0304",
+    "\u0423\u0308",
+    "\u0443\u0308",
+    "\u0423\u030B",
+    "\u0443\u030B",
+    "\u0427\u0308",
+    "\u0447\u0308",
+    "\u042B\u0308",
+    "\u044B\u0308",
+    "\u0565\u0582",
+    "\u0627\u0653",
+    "\u0627\u0654",
+    "\u0648\u0654",
+    "\u0627\u0655",
+    "\u064A\u0654",
+    "\u0627\u0674",
+    "\u0648\u0674",
+    "\u06C7\u0674",
+    "\u064A\u0674",
+    "\u06D5\u0654",
+    "\u06C1\u0654",
+    "\u06D2\u0654",
+    "\u0928\u093C",
+    "\u0930\u093C",
+    "\u0933\u093C",
+    "\u0915\u093C",
+    "\u0916\u093C",
+    "\u0917\u093C",
+    "\u091C\u093C",
+    "\u0921\u093C",
+    "\u0922\u093C",
+    "\u092B\u093C",
+    "\u092F\u093C",
+    "\u09C7\u09BE",
+    "\u09C7\u09D7",
+    "\u09A1\u09BC",
+    "\u09A2\u09BC",
+    "\u09AF\u09BC",
+    "\u0A32\u0A3C",
+    "\u0A38\u0A3C",
+    "\u0A16\u0A3C",
+    "\u0A17\u0A3C",
+    "\u0A1C\u0A3C",
+    "\u0A2B\u0A3C",
+    "\u0B47\u0B56",
+    "\u0B47\u0B3E",
+    "\u0B47\u0B57",
+    "\u0B21\u0B3C",
+    "\u0B22\u0B3C",
+    "\u0B92\u0BD7",
+    "\u0BC6\u0BBE",
+    "\u0BC7\u0BBE",
+    "\u0BC6\u0BD7",
+    "\u0C46\u0C56",
+    "\u0CBF\u0CD5",
+    "\u0CC6\u0CD5",
+    "\u0CC6\u0CD6",
+    "\u0CC6\u0CC2",
+    "\u0CC6\u0CC2\u0CD5",
+    "\u0D46\u0D3E",
+    "\u0D47\u0D3E",
+    "\u0D46\u0D57",
+    "\u0DD9\u0DCA",
+    "\u0DD9\u0DCF",
+    "\u0DD9\u0DCF\u0DCA",
+    "\u0DD9\u0DDF",
+    "\u0E4D\u0E32",
+    "\u0ECD\u0EB2",
+    "\u0EAB\u0E99",
+    "\u0EAB\u0EA1",
+    "\u0F0B",
+    "\u0F42\u0FB7",
+    "\u0F4C\u0FB7",
+    "\u0F51\u0FB7",
+    "\u0F56\u0FB7",
+    "\u0F5B\u0FB7",
+    "\u0F40\u0FB5",
+    "\u0F71\u0F72",
+    "\u0F71\u0F74",
+    "\u0FB2\u0F80",
+    "\u0FB2\u0F71\u0F80",
+    "\u0FB3\u0F80",
+    "\u0FB3\u0F71\u0F80",
+    "\u0F71\u0F80",
+    "\u0F92\u0FB7",
+    "\u0F9C\u0FB7",
+    "\u0FA1\u0FB7",
+    "\u0FA6\u0FB7",
+    "\u0FAB\u0FB7",
+    "\u0F90\u0FB5",
+    "\u1025\u102E",
+    "\u0041\u0325",
+    "\u0061\u0325",
+    "\u0042\u0307",
+    "\u0062\u0307",
+    "\u0042\u0323",
+    "\u0062\u0323",
+    "\u0042\u0331",
+    "\u0062\u0331",
+    "\u0043\u0327\u0301",
+    "\u0063\u0327\u0301",
+    "\u0044\u0307",
+    "\u0064\u0307",
+    "\u0044\u0323",
+    "\u0064\u0323",
+    "\u0044\u0331",
+    "\u0064\u0331",
+    "\u0044\u0327",
+    "\u0064\u0327",
+    "\u0044\u032D",
+    "\u0064\u032D",
+    "\u0045\u0304\u0300",
+    "\u0065\u0304\u0300",
+    "\u0045\u0304\u0301",
+    "\u0065\u0304\u0301",
+    "\u0045\u032D",
+    "\u0065\u032D",
+    "\u0045\u0330",
+    "\u0065\u0330",
+    "\u0045\u0327\u0306",
+    "\u0065\u0327\u0306",
+    "\u0046\u0307",
+    "\u0066\u0307",
+    "\u0047\u0304",
+    "\u0067\u0304",
+    "\u0048\u0307",
+    "\u0068\u0307",
+    "\u0048\u0323",
+    "\u0068\u0323",
+    "\u0048\u0308",
+    "\u0068\u0308",
+    "\u0048\u0327",
+    "\u0068\u0327",
+    "\u0048\u032E",
+    "\u0068\u032E",
+    "\u0049\u0330",
+    "\u0069\u0330",
+    "\u0049\u0308\u0301",
+    "\u0069\u0308\u0301",
+    "\u004B\u0301",
+    "\u006B\u0301",
+    "\u004B\u0323",
+    "\u006B\u0323",
+    "\u004B\u0331",
+    "\u006B\u0331",
+    "\u004C\u0323",
+    "\u006C\u0323",
+    "\u004C\u0323\u0304",
+    "\u006C\u0323\u0304",
+    "\u004C\u0331",
+    "\u006C\u0331",
+    "\u004C\u032D",
+    "\u006C\u032D",
+    "\u004D\u0301",
+    "\u006D\u0301",
+    "\u004D\u0307",
+    "\u006D\u0307",
+    "\u004D\u0323",
+    "\u006D\u0323",
+    "\u004E\u0307",
+    "\u006E\u0307",
+    "\u004E\u0323",
+    "\u006E\u0323",
+    "\u004E\u0331",
+    "\u006E\u0331",
+    "\u004E\u032D",
+    "\u006E\u032D",
+    "\u004F\u0303\u0301",
+    "\u006F\u0303\u0301",
+    "\u004F\u0303\u0308",
+    "\u006F\u0303\u0308",
+    "\u004F\u0304\u0300",
+    "\u006F\u0304\u0300",
+    "\u004F\u0304\u0301",
+    "\u006F\u0304\u0301",
+    "\u0050\u0301",
+    "\u0070\u0301",
+    "\u0050\u0307",
+    "\u0070\u0307",
+    "\u0052\u0307",
+    "\u0072\u0307",
+    "\u0052\u0323",
+    "\u0072\u0323",
+    "\u0052\u0323\u0304",
+    "\u0072\u0323\u0304",
+    "\u0052\u0331",
+    "\u0072\u0331",
+    "\u0053\u0307",
+    "\u0073\u0307",
+    "\u0053\u0323",
+    "\u0073\u0323",
+    "\u0053\u0301\u0307",
+    "\u0073\u0301\u0307",
+    "\u0053\u030C\u0307",
+    "\u0073\u030C\u0307",
+    "\u0053\u0323\u0307",
+    "\u0073\u0323\u0307",
+    "\u0054\u0307",
+    "\u0074\u0307",
+    "\u0054\u0323",
+    "\u0074\u0323",
+    "\u0054\u0331",
+    "\u0074\u0331",
+    "\u0054\u032D",
+    "\u0074\u032D",
+    "\u0055\u0324",
+    "\u0075\u0324",
+    "\u0055\u0330",
+    "\u0075\u0330",
+    "\u0055\u032D",
+    "\u0075\u032D",
+    "\u0055\u0303\u0301",
+    "\u0075\u0303\u0301",
+    "\u0055\u0304\u0308",
+    "\u0075\u0304\u0308",
+    "\u0056\u0303",
+    "\u0076\u0303",
+    "\u0056\u0323",
+    "\u0076\u0323",
+    "\u0057\u0300",
+    "\u0077\u0300",
+    "\u0057\u0301",
+    "\u0077\u0301",
+    "\u0057\u0308",
+    "\u0077\u0308",
+    "\u0057\u0307",
+    "\u0077\u0307",
+    "\u0057\u0323",
+    "\u0077\u0323",
+    "\u0058\u0307",
+    "\u0078\u0307",
+    "\u0058\u0308",
+    "\u0078\u0308",
+    "\u0059\u0307",
+    "\u0079\u0307",
+    "\u005A\u0302",
+    "\u007A\u0302",
+    "\u005A\u0323",
+    "\u007A\u0323",
+    "\u005A\u0331",
+    "\u007A\u0331",
+    "\u0068\u0331",
+    "\u0074\u0308",
+    "\u0077\u030A",
+    "\u0079\u030A",
+    "\u0061\u02BE",
+    "\u0041\u0323",
+    "\u0061\u0323",
+    "\u0041\u0309",
+    "\u0061\u0309",
+    "\u0041\u0302\u0301",
+    "\u0061\u0302\u0301",
+    "\u0041\u0302\u0300",
+    "\u0061\u0302\u0300",
+    "\u0041\u0302\u0309",
+    "\u0061\u0302\u0309",
+    "\u0041\u0302\u0303",
+    "\u0061\u0302\u0303",
+    "\u0041\u0323\u0302",
+    "\u0061\u0323\u0302",
+    "\u0041\u0306\u0301",
+    "\u0061\u0306\u0301",
+    "\u0041\u0306\u0300",
+    "\u0061\u0306\u0300",
+    "\u0041\u0306\u0309",
+    "\u0061\u0306\u0309",
+    "\u0041\u0306\u0303",
+    "\u0061\u0306\u0303",
+    "\u0041\u0323\u0306",
+    "\u0061\u0323\u0306",
+    "\u0045\u0323",
+    "\u0065\u0323",
+    "\u0045\u0309",
+    "\u0065\u0309",
+    "\u0045\u0303",
+    "\u0065\u0303",
+    "\u0045\u0302\u0301",
+    "\u0065\u0302\u0301",
+    "\u0045\u0302\u0300",
+    "\u0065\u0302\u0300",
+    "\u0045\u0302\u0309",
+    "\u0065\u0302\u0309",
+    "\u0045\u0302\u0303",
+    "\u0065\u0302\u0303",
+    "\u0045\u0323\u0302",
+    "\u0065\u0323\u0302",
+    "\u0049\u0309",
+    "\u0069\u0309",
+    "\u0049\u0323",
+    "\u0069\u0323",
+    "\u004F\u0323",
+    "\u006F\u0323",
+    "\u004F\u0309",
+    "\u006F\u0309",
+    "\u004F\u0302\u0301",
+    "\u006F\u0302\u0301",
+    "\u004F\u0302\u0300",
+    "\u006F\u0302\u0300",
+    "\u004F\u0302\u0309",
+    "\u006F\u0302\u0309",
+    "\u004F\u0302\u0303",
+    "\u006F\u0302\u0303",
+    "\u004F\u0323\u0302",
+    "\u006F\u0323\u0302",
+    "\u004F\u031B\u0301",
+    "\u006F\u031B\u0301",
+    "\u004F\u031B\u0300",
+    "\u006F\u031B\u0300",
+    "\u004F\u031B\u0309",
+    "\u006F\u031B\u0309",
+    "\u004F\u031B\u0303",
+    "\u006F\u031B\u0303",
+    "\u004F\u031B\u0323",
+    "\u006F\u031B\u0323",
+    "\u0055\u0323",
+    "\u0075\u0323",
+    "\u0055\u0309",
+    "\u0075\u0309",
+    "\u0055\u031B\u0301",
+    "\u0075\u031B\u0301",
+    "\u0055\u031B\u0300",
+    "\u0075\u031B\u0300",
+    "\u0055\u031B\u0309",
+    "\u0075\u031B\u0309",
+    "\u0055\u031B\u0303",
+    "\u0075\u031B\u0303",
+    "\u0055\u031B\u0323",
+    "\u0075\u031B\u0323",
+    "\u0059\u0300",
+    "\u0079\u0300",
+    "\u0059\u0323",
+    "\u0079\u0323",
+    "\u0059\u0309",
+    "\u0079\u0309",
+    "\u0059\u0303",
+    "\u0079\u0303",
+    "\u03B1\u0313",
+    "\u03B1\u0314",
+    "\u03B1\u0313\u0300",
+    "\u03B1\u0314\u0300",
+    "\u03B1\u0313\u0301",
+    "\u03B1\u0314\u0301",
+    "\u03B1\u0313\u0342",
+    "\u03B1\u0314\u0342",
+    "\u0391\u0313",
+    "\u0391\u0314",
+    "\u0391\u0313\u0300",
+    "\u0391\u0314\u0300",
+    "\u0391\u0313\u0301",
+    "\u0391\u0314\u0301",
+    "\u0391\u0313\u0342",
+    "\u0391\u0314\u0342",
+    "\u03B5\u0313",
+    "\u03B5\u0314",
+    "\u03B5\u0313\u0300",
+    "\u03B5\u0314\u0300",
+    "\u03B5\u0313\u0301",
+    "\u03B5\u0314\u0301",
+    "\u0395\u0313",
+    "\u0395\u0314",
+    "\u0395\u0313\u0300",
+    "\u0395\u0314\u0300",
+    "\u0395\u0313\u0301",
+    "\u0395\u0314\u0301",
+    "\u03B7\u0313",
+    "\u03B7\u0314",
+    "\u03B7\u0313\u0300",
+    "\u03B7\u0314\u0300",
+    "\u03B7\u0313\u0301",
+    "\u03B7\u0314\u0301",
+    "\u03B7\u0313\u0342",
+    "\u03B7\u0314\u0342",
+    "\u0397\u0313",
+    "\u0397\u0314",
+    "\u0397\u0313\u0300",
+    "\u0397\u0314\u0300",
+    "\u0397\u0313\u0301",
+    "\u0397\u0314\u0301",
+    "\u0397\u0313\u0342",
+    "\u0397\u0314\u0342",
+    "\u03B9\u0313",
+    "\u03B9\u0314",
+    "\u03B9\u0313\u0300",
+    "\u03B9\u0314\u0300",
+    "\u03B9\u0313\u0301",
+    "\u03B9\u0314\u0301",
+    "\u03B9\u0313\u0342",
+    "\u03B9\u0314\u0342",
+    "\u0399\u0313",
+    "\u0399\u0314",
+    "\u0399\u0313\u0300",
+    "\u0399\u0314\u0300",
+    "\u0399\u0313\u0301",
+    "\u0399\u0314\u0301",
+    "\u0399\u0313\u0342",
+    "\u0399\u0314\u0342",
+    "\u03BF\u0313",
+    "\u03BF\u0314",
+    "\u03BF\u0313\u0300",
+    "\u03BF\u0314\u0300",
+    "\u03BF\u0313\u0301",
+    "\u03BF\u0314\u0301",
+    "\u039F\u0313",
+    "\u039F\u0314",
+    "\u039F\u0313\u0300",
+    "\u039F\u0314\u0300",
+    "\u039F\u0313\u0301",
+    "\u039F\u0314\u0301",
+    "\u03C5\u0313",
+    "\u03C5\u0314",
+    "\u03C5\u0313\u0300",
+    "\u03C5\u0314\u0300",
+    "\u03C5\u0313\u0301",
+    "\u03C5\u0314\u0301",
+    "\u03C5\u0313\u0342",
+    "\u03C5\u0314\u0342",
+    "\u03A5\u0314",
+    "\u03A5\u0314\u0300",
+    "\u03A5\u0314\u0301",
+    "\u03A5\u0314\u0342",
+    "\u03C9\u0313",
+    "\u03C9\u0314",
+    "\u03C9\u0313\u0300",
+    "\u03C9\u0314\u0300",
+    "\u03C9\u0313\u0301",
+    "\u03C9\u0314\u0301",
+    "\u03C9\u0313\u0342",
+    "\u03C9\u0314\u0342",
+    "\u03A9\u0313",
+    "\u03A9\u0314",
+    "\u03A9\u0313\u0300",
+    "\u03A9\u0314\u0300",
+    "\u03A9\u0313\u0301",
+    "\u03A9\u0314\u0301",
+    "\u03A9\u0313\u0342",
+    "\u03A9\u0314\u0342",
+    "\u03B1\u0300",
+    "\u03B5\u0300",
+    "\u03B7\u0300",
+    "\u03B9\u0300",
+    "\u03BF\u0300",
+    "\u03C5\u0300",
+    "\u03C9\u0300",
+    "\u03B1\u0313\u0345",
+    "\u03B1\u0314\u0345",
+    "\u03B1\u0313\u0300\u0345",
+    "\u03B1\u0314\u0300\u0345",
+    "\u03B1\u0313\u0301\u0345",
+    "\u03B1\u0314\u0301\u0345",
+    "\u03B1\u0313\u0342\u0345",
+    "\u03B1\u0314\u0342\u0345",
+    "\u0391\u0313\u0345",
+    "\u0391\u0314\u0345",
+    "\u0391\u0313\u0300\u0345",
+    "\u0391\u0314\u0300\u0345",
+    "\u0391\u0313\u0301\u0345",
+    "\u0391\u0314\u0301\u0345",
+    "\u0391\u0313\u0342\u0345",
+    "\u0391\u0314\u0342\u0345",
+    "\u03B7\u0313\u0345",
+    "\u03B7\u0314\u0345",
+    "\u03B7\u0313\u0300\u0345",
+    "\u03B7\u0314\u0300\u0345",
+    "\u03B7\u0313\u0301\u0345",
+    "\u03B7\u0314\u0301\u0345",
+    "\u03B7\u0313\u0342\u0345",
+    "\u03B7\u0314\u0342\u0345",
+    "\u0397\u0313\u0345",
+    "\u0397\u0314\u0345",
+    "\u0397\u0313\u0300\u0345",
+    "\u0397\u0314\u0300\u0345",
+    "\u0397\u0313\u0301\u0345",
+    "\u0397\u0314\u0301\u0345",
+    "\u0397\u0313\u0342\u0345",
+    "\u0397\u0314\u0342\u0345",
+    "\u03C9\u0313\u0345",
+    "\u03C9\u0314\u0345",
+    "\u03C9\u0313\u0300\u0345",
+    "\u03C9\u0314\u0300\u0345",
+    "\u03C9\u0313\u0301\u0345",
+    "\u03C9\u0314\u0301\u0345",
+    "\u03C9\u0313\u0342\u0345",
+    "\u03C9\u0314\u0342\u0345",
+    "\u03A9\u0313\u0345",
+    "\u03A9\u0314\u0345",
+    "\u03A9\u0313\u0300\u0345",
+    "\u03A9\u0314\u0300\u0345",
+    "\u03A9\u0313\u0301\u0345",
+    "\u03A9\u0314\u0301\u0345",
+    "\u03A9\u0313\u0342\u0345",
+    "\u03A9\u0314\u0342\u0345",
+    "\u03B1\u0306",
+    "\u03B1\u0304",
+    "\u03B1\u0300\u0345",
+    "\u03B1\u0345",
+    "\u03B1\u0301\u0345",
+    "\u03B1\u0342",
+    "\u03B1\u0342\u0345",
+    "\u0391\u0306",
+    "\u0391\u0304",
+    "\u0391\u0300",
+    "\u0391\u0345",
+    "\u0020\u0313",
+    "\u03B9",
+    "\u0020\u0342",
+    "\u0020\u0308\u0342",
+    "\u03B7\u0300\u0345",
+    "\u03B7\u0345",
+    "\u03B7\u0301\u0345",
+    "\u03B7\u0342",
+    "\u03B7\u0342\u0345",
+    "\u0395\u0300",
+    "\u0397\u0300",
+    "\u0397\u0345",
+    "\u0020\u0313\u0300",
+    "\u0020\u0313\u0301",
+    "\u0020\u0313\u0342",
+    "\u03B9\u0306",
+    "\u03B9\u0304",
+    "\u03B9\u0308\u0300",
+    "\u03B9\u0342",
+    "\u03B9\u0308\u0342",
+    "\u0399\u0306",
+    "\u0399\u0304",
+    "\u0399\u0300",
+    "\u0020\u0314\u0300",
+    "\u0020\u0314\u0301",
+    "\u0020\u0314\u0342",
+    "\u03C5\u0306",
+    "\u03C5\u0304",
+    "\u03C5\u0308\u0300",
+    "\u03C1\u0313",
+    "\u03C1\u0314",
+    "\u03C5\u0342",
+    "\u03C5\u0308\u0342",
+    "\u03A5\u0306",
+    "\u03A5\u0304",
+    "\u03A5\u0300",
+    "\u03A1\u0314",
+    "\u0020\u0308\u0300",
+    "\u0060",
+    "\u03C9\u0300\u0345",
+    "\u03C9\u0345",
+    "\u03C9\u0301\u0345",
+    "\u03C9\u0342",
+    "\u03C9\u0342\u0345",
+    "\u039F\u0300",
+    "\u03A9\u0300",
+    "\u03A9\u0345",
+    "\u0020\u0314",
+    "\u2010",
+    "\u0020\u0333",
+    "\u002E",
+    "\u002E\u002E",
+    "\u002E\u002E\u002E",
+    "\u2032\u2032",
+    "\u2032\u2032\u2032",
+    "\u2035\u2035",
+    "\u2035\u2035\u2035",
+    "\u0021\u0021",
+    "\u0020\u0305",
+    "\u003F\u003F",
+    "\u003F\u0021",
+    "\u0021\u003F",
+    "\u2032\u2032\u2032\u2032",
+    "\u0030",
+    "\u0069",
+    "\u0034",
+    "\u0035",
+    "\u0036",
+    "\u0037",
+    "\u0038",
+    "\u0039",
+    "\u002B",
+    "\u2212",
+    "\u003D",
+    "\u0028",
+    "\u0029",
+    "\u006E",
+    "\u0052\u0073",
+    "\u0061\u002F\u0063",
+    "\u0061\u002F\u0073",
+    "\u0043",
+    "\u00B0\u0043",
+    "\u0063\u002F\u006F",
+    "\u0063\u002F\u0075",
+    "\u0190",
+    "\u00B0\u0046",
+    "\u0067",
+    "\u0048",
+    "\u0127",
+    "\u0049",
+    "\u004C",
+    "\u004E",
+    "\u004E\u006F",
+    "\u0050",
+    "\u0051",
+    "\u0052",
+    "\u0053\u004D",
+    "\u0054\u0045\u004C",
+    "\u0054\u004D",
+    "\u005A",
+    "\u03A9",
+    "\u004B",
+    "\u0042",
+    "\u0065",
+    "\u0045",
+    "\u0046",
+    "\u004D",
+    "\u05D0",
+    "\u05D1",
+    "\u05D2",
+    "\u05D3",
+    "\u03B3",
+    "\u0393",
+    "\u03A0",
+    "\u2211",
+    "\u0044",
+    "\u0064",
+    "\u0031\u2044\u0033",
+    "\u0032\u2044\u0033",
+    "\u0031\u2044\u0035",
+    "\u0032\u2044\u0035",
+    "\u0033\u2044\u0035",
+    "\u0034\u2044\u0035",
+    "\u0031\u2044\u0036",
+    "\u0035\u2044\u0036",
+    "\u0031\u2044\u0038",
+    "\u0033\u2044\u0038",
+    "\u0035\u2044\u0038",
+    "\u0037\u2044\u0038",
+    "\u0031\u2044",
+    "\u0049\u0049",
+    "\u0049\u0049\u0049",
+    "\u0049\u0056",
+    "\u0056",
+    "\u0056\u0049",
+    "\u0056\u0049\u0049",
+    "\u0056\u0049\u0049\u0049",
+    "\u0049\u0058",
+    "\u0058",
+    "\u0058\u0049",
+    "\u0058\u0049\u0049",
+    "\u0069\u0069",
+    "\u0069\u0069\u0069",
+    "\u0069\u0076",
+    "\u0076",
+    "\u0076\u0069",
+    "\u0076\u0069\u0069",
+    "\u0076\u0069\u0069\u0069",
+    "\u0069\u0078",
+    "\u0078\u0069",
+    "\u0078\u0069\u0069",
+    "\u0063",
+    "\u006D",
+    "\u2190\u0338",
+    "\u2192\u0338",
+    "\u2194\u0338",
+    "\u21D0\u0338",
+    "\u21D4\u0338",
+    "\u21D2\u0338",
+    "\u2203\u0338",
+    "\u2208\u0338",
+    "\u220B\u0338",
+    "\u2223\u0338",
+    "\u2225\u0338",
+    "\u222B\u222B",
+    "\u222B\u222B\u222B",
+    "\u222E\u222E",
+    "\u222E\u222E\u222E",
+    "\u223C\u0338",
+    "\u2243\u0338",
+    "\u2245\u0338",
+    "\u2248\u0338",
+    "\u003D\u0338",
+    "\u2261\u0338",
+    "\u224D\u0338",
+    "\u003C\u0338",
+    "\u003E\u0338",
+    "\u2264\u0338",
+    "\u2265\u0338",
+    "\u2272\u0338",
+    "\u2273\u0338",
+    "\u2276\u0338",
+    "\u2277\u0338",
+    "\u227A\u0338",
+    "\u227B\u0338",
+    "\u2282\u0338",
+    "\u2283\u0338",
+    "\u2286\u0338",
+    "\u2287\u0338",
+    "\u22A2\u0338",
+    "\u22A8\u0338",
+    "\u22A9\u0338",
+    "\u22AB\u0338",
+    "\u227C\u0338",
+    "\u227D\u0338",
+    "\u2291\u0338",
+    "\u2292\u0338",
+    "\u22B2\u0338",
+    "\u22B3\u0338",
+    "\u22B4\u0338",
+    "\u22B5\u0338",
+    "\u3008",
+    "\u3009",
+    "\u0031\u0030",
+    "\u0031\u0031",
+    "\u0031\u0032",
+    "\u0031\u0033",
+    "\u0031\u0034",
+    "\u0031\u0035",
+    "\u0031\u0036",
+    "\u0031\u0037",
+    "\u0031\u0038",
+    "\u0031\u0039",
+    "\u0032\u0030",
+    "\u0028\u0031\u0029",
+    "\u0028\u0032\u0029",
+    "\u0028\u0033\u0029",
+    "\u0028\u0034\u0029",
+    "\u0028\u0035\u0029",
+    "\u0028\u0036\u0029",
+    "\u0028\u0037\u0029",
+    "\u0028\u0038\u0029",
+    "\u0028\u0039\u0029",
+    "\u0028\u0031\u0030\u0029",
+    "\u0028\u0031\u0031\u0029",
+    "\u0028\u0031\u0032\u0029",
+    "\u0028\u0031\u0033\u0029",
+    "\u0028\u0031\u0034\u0029",
+    "\u0028\u0031\u0035\u0029",
+    "\u0028\u0031\u0036\u0029",
+    "\u0028\u0031\u0037\u0029",
+    "\u0028\u0031\u0038\u0029",
+    "\u0028\u0031\u0039\u0029",
+    "\u0028\u0032\u0030\u0029",
+    "\u0031\u002E",
+    "\u0032\u002E",
+    "\u0033\u002E",
+    "\u0034\u002E",
+    "\u0035\u002E",
+    "\u0036\u002E",
+    "\u0037\u002E",
+    "\u0038\u002E",
+    "\u0039\u002E",
+    "\u0031\u0030\u002E",
+    "\u0031\u0031\u002E",
+    "\u0031\u0032\u002E",
+    "\u0031\u0033\u002E",
+    "\u0031\u0034\u002E",
+    "\u0031\u0035\u002E",
+    "\u0031\u0036\u002E",
+    "\u0031\u0037\u002E",
+    "\u0031\u0038\u002E",
+    "\u0031\u0039\u002E",
+    "\u0032\u0030\u002E",
+    "\u0028\u0061\u0029",
+    "\u0028\u0062\u0029",
+    "\u0028\u0063\u0029",
+    "\u0028\u0064\u0029",
+    "\u0028\u0065\u0029",
+    "\u0028\u0066\u0029",
+    "\u0028\u0067\u0029",
+    "\u0028\u0068\u0029",
+    "\u0028\u0069\u0029",
+    "\u0028\u006A\u0029",
+    "\u0028\u006B\u0029",
+    "\u0028\u006C\u0029",
+    "\u0028\u006D\u0029",
+    "\u0028\u006E\u0029",
+    "\u0028\u006F\u0029",
+    "\u0028\u0070\u0029",
+    "\u0028\u0071\u0029",
+    "\u0028\u0072\u0029",
+    "\u0028\u0073\u0029",
+    "\u0028\u0074\u0029",
+    "\u0028\u0075\u0029",
+    "\u0028\u0076\u0029",
+    "\u0028\u0077\u0029",
+    "\u0028\u0078\u0029",
+    "\u0028\u0079\u0029",
+    "\u0028\u007A\u0029",
+    "\u0041",
+    "\u0047",
+    "\u004A",
+    "\u004F",
+    "\u0053",
+    "\u0054",
+    "\u0055",
+    "\u0057",
+    "\u0059",
+    "\u0062",
+    "\u0066",
+    "\u006B",
+    "\u0070",
+    "\u0071",
+    "\u0074",
+    "\u0075",
+    "\u007A",
+    "\u222B\u222B\u222B\u222B",
+    "\u003A\u003A\u003D",
+    "\u003D\u003D",
+    "\u003D\u003D\u003D",
+    "\u2ADD\u0338",
+    "\u6BCD",
+    "\u9F9F",
+    "\u4E00",
+    "\u4E28",
+    "\u4E36",
+    "\u4E3F",
+    "\u4E59",
+    "\u4E85",
+    "\u4E8C",
+    "\u4EA0",
+    "\u4EBA",
+    "\u513F",
+    "\u5165",
+    "\u516B",
+    "\u5182",
+    "\u5196",
+    "\u51AB",
+    "\u51E0",
+    "\u51F5",
+    "\u5200",
+    "\u529B",
+    "\u52F9",
+    "\u5315",
+    "\u531A",
+    "\u5338",
+    "\u5341",
+    "\u535C",
+    "\u5369",
+    "\u5382",
+    "\u53B6",
+    "\u53C8",
+    "\u53E3",
+    "\u56D7",
+    "\u571F",
+    "\u58EB",
+    "\u5902",
+    "\u590A",
+    "\u5915",
+    "\u5927",
+    "\u5973",
+    "\u5B50",
+    "\u5B80",
+    "\u5BF8",
+    "\u5C0F",
+    "\u5C22",
+    "\u5C38",
+    "\u5C6E",
+    "\u5C71",
+    "\u5DDB",
+    "\u5DE5",
+    "\u5DF1",
+    "\u5DFE",
+    "\u5E72",
+    "\u5E7A",
+    "\u5E7F",
+    "\u5EF4",
+    "\u5EFE",
+    "\u5F0B",
+    "\u5F13",
+    "\u5F50",
+    "\u5F61",
+    "\u5F73",
+    "\u5FC3",
+    "\u6208",
+    "\u6236",
+    "\u624B",
+    "\u652F",
+    "\u6534",
+    "\u6587",
+    "\u6597",
+    "\u65A4",
+    "\u65B9",
+    "\u65E0",
+    "\u65E5",
+    "\u66F0",
+    "\u6708",
+    "\u6728",
+    "\u6B20",
+    "\u6B62",
+    "\u6B79",
+    "\u6BB3",
+    "\u6BCB",
+    "\u6BD4",
+    "\u6BDB",
+    "\u6C0F",
+    "\u6C14",
+    "\u6C34",
+    "\u706B",
+    "\u722A",
+    "\u7236",
+    "\u723B",
+    "\u723F",
+    "\u7247",
+    "\u7259",
+    "\u725B",
+    "\u72AC",
+    "\u7384",
+    "\u7389",
+    "\u74DC",
+    "\u74E6",
+    "\u7518",
+    "\u751F",
+    "\u7528",
+    "\u7530",
+    "\u758B",
+    "\u7592",
+    "\u7676",
+    "\u767D",
+    "\u76AE",
+    "\u76BF",
+    "\u76EE",
+    "\u77DB",
+    "\u77E2",
+    "\u77F3",
+    "\u793A",
+    "\u79B8",
+    "\u79BE",
+    "\u7A74",
+    "\u7ACB",
+    "\u7AF9",
+    "\u7C73",
+    "\u7CF8",
+    "\u7F36",
+    "\u7F51",
+    "\u7F8A",
+    "\u7FBD",
+    "\u8001",
+    "\u800C",
+    "\u8012",
+    "\u8033",
+    "\u807F",
+    "\u8089",
+    "\u81E3",
+    "\u81EA",
+    "\u81F3",
+    "\u81FC",
+    "\u820C",
+    "\u821B",
+    "\u821F",
+    "\u826E",
+    "\u8272",
+    "\u8278",
+    "\u864D",
+    "\u866B",
+    "\u8840",
+    "\u884C",
+    "\u8863",
+    "\u897E",
+    "\u898B",
+    "\u89D2",
+    "\u8A00",
+    "\u8C37",
+    "\u8C46",
+    "\u8C55",
+    "\u8C78",
+    "\u8C9D",
+    "\u8D64",
+    "\u8D70",
+    "\u8DB3",
+    "\u8EAB",
+    "\u8ECA",
+    "\u8F9B",
+    "\u8FB0",
+    "\u8FB5",
+    "\u9091",
+    "\u9149",
+    "\u91C6",
+    "\u91CC",
+    "\u91D1",
+    "\u9577",
+    "\u9580",
+    "\u961C",
+    "\u96B6",
+    "\u96B9",
+    "\u96E8",
+    "\u9751",
+    "\u975E",
+    "\u9762",
+    "\u9769",
+    "\u97CB",
+    "\u97ED",
+    "\u97F3",
+    "\u9801",
+    "\u98A8",
+    "\u98DB",
+    "\u98DF",
+    "\u9996",
+    "\u9999",
+    "\u99AC",
+    "\u9AA8",
+    "\u9AD8",
+    "\u9ADF",
+    "\u9B25",
+    "\u9B2F",
+    "\u9B32",
+    "\u9B3C",
+    "\u9B5A",
+    "\u9CE5",
+    "\u9E75",
+    "\u9E7F",
+    "\u9EA5",
+    "\u9EBB",
+    "\u9EC3",
+    "\u9ECD",
+    "\u9ED1",
+    "\u9EF9",
+    "\u9EFD",
+    "\u9F0E",
+    "\u9F13",
+    "\u9F20",
+    "\u9F3B",
+    "\u9F4A",
+    "\u9F52",
+    "\u9F8D",
+    "\u9F9C",
+    "\u9FA0",
+    "\u3012",
+    "\u5344",
+    "\u5345",
+    "\u304B\u3099",
+    "\u304D\u3099",
+    "\u304F\u3099",
+    "\u3051\u3099",
+    "\u3053\u3099",
+    "\u3055\u3099",
+    "\u3057\u3099",
+    "\u3059\u3099",
+    "\u305B\u3099",
+    "\u305D\u3099",
+    "\u305F\u3099",
+    "\u3061\u3099",
+    "\u3064\u3099",
+    "\u3066\u3099",
+    "\u3068\u3099",
+    "\u306F\u3099",
+    "\u306F\u309A",
+    "\u3072\u3099",
+    "\u3072\u309A",
+    "\u3075\u3099",
+    "\u3075\u309A",
+    "\u3078\u3099",
+    "\u3078\u309A",
+    "\u307B\u3099",
+    "\u307B\u309A",
+    "\u3046\u3099",
+    "\u0020\u3099",
+    "\u0020\u309A",
+    "\u309D\u3099",
+    "\u3088\u308A",
+    "\u30AB\u3099",
+    "\u30AD\u3099",
+    "\u30AF\u3099",
+    "\u30B1\u3099",
+    "\u30B3\u3099",
+    "\u30B5\u3099",
+    "\u30B7\u3099",
+    "\u30B9\u3099",
+    "\u30BB\u3099",
+    "\u30BD\u3099",
+    "\u30BF\u3099",
+    "\u30C1\u3099",
+    "\u30C4\u3099",
+    "\u30C6\u3099",
+    "\u30C8\u3099",
+    "\u30CF\u3099",
+    "\u30CF\u309A",
+    "\u30D2\u3099",
+    "\u30D2\u309A",
+    "\u30D5\u3099",
+    "\u30D5\u309A",
+    "\u30D8\u3099",
+    "\u30D8\u309A",
+    "\u30DB\u3099",
+    "\u30DB\u309A",
+    "\u30A6\u3099",
+    "\u30EF\u3099",
+    "\u30F0\u3099",
+    "\u30F1\u3099",
+    "\u30F2\u3099",
+    "\u30FD\u3099",
+    "\u30B3\u30C8",
+    "\u1100",
+    "\u1101",
+    "\u11AA",
+    "\u1102",
+    "\u11AC",
+    "\u11AD",
+    "\u1103",
+    "\u1104",
+    "\u1105",
+    "\u11B0",
+    "\u11B1",
+    "\u11B2",
+    "\u11B3",
+    "\u11B4",
+    "\u11B5",
+    "\u111A",
+    "\u1106",
+    "\u1107",
+    "\u1108",
+    "\u1121",
+    "\u1109",
+    "\u110A",
+    "\u110B",
+    "\u110C",
+    "\u110D",
+    "\u110E",
+    "\u110F",
+    "\u1110",
+    "\u1111",
+    "\u1112",
+    "\u1161",
+    "\u1162",
+    "\u1163",
+    "\u1164",
+    "\u1165",
+    "\u1166",
+    "\u1167",
+    "\u1168",
+    "\u1169",
+    "\u116A",
+    "\u116B",
+    "\u116C",
+    "\u116D",
+    "\u116E",
+    "\u116F",
+    "\u1170",
+    "\u1171",
+    "\u1172",
+    "\u1173",
+    "\u1174",
+    "\u1175",
+    "\u1160",
+    "\u1114",
+    "\u1115",
+    "\u11C7",
+    "\u11C8",
+    "\u11CC",
+    "\u11CE",
+    "\u11D3",
+    "\u11D7",
+    "\u11D9",
+    "\u111C",
+    "\u11DD",
+    "\u11DF",
+    "\u111D",
+    "\u111E",
+    "\u1120",
+    "\u1122",
+    "\u1123",
+    "\u1127",
+    "\u1129",
+    "\u112B",
+    "\u112C",
+    "\u112D",
+    "\u112E",
+    "\u112F",
+    "\u1132",
+    "\u1136",
+    "\u1140",
+    "\u1147",
+    "\u114C",
+    "\u11F1",
+    "\u11F2",
+    "\u1157",
+    "\u1158",
+    "\u1159",
+    "\u1184",
+    "\u1185",
+    "\u1188",
+    "\u1191",
+    "\u1192",
+    "\u1194",
+    "\u119E",
+    "\u11A1",
+    "\u4E09",
+    "\u56DB",
+    "\u4E0A",
+    "\u4E2D",
+    "\u4E0B",
+    "\u7532",
+    "\u4E19",
+    "\u4E01",
+    "\u5929",
+    "\u5730",
+    "\u0028\u1100\u0029",
+    "\u0028\u1102\u0029",
+    "\u0028\u1103\u0029",
+    "\u0028\u1105\u0029",
+    "\u0028\u1106\u0029",
+    "\u0028\u1107\u0029",
+    "\u0028\u1109\u0029",
+    "\u0028\u110B\u0029",
+    "\u0028\u110C\u0029",
+    "\u0028\u110E\u0029",
+    "\u0028\u110F\u0029",
+    "\u0028\u1110\u0029",
+    "\u0028\u1111\u0029",
+    "\u0028\u1112\u0029",
+    "\u0028\u1100\u1161\u0029",
+    "\u0028\u1102\u1161\u0029",
+    "\u0028\u1103\u1161\u0029",
+    "\u0028\u1105\u1161\u0029",
+    "\u0028\u1106\u1161\u0029",
+    "\u0028\u1107\u1161\u0029",
+    "\u0028\u1109\u1161\u0029",
+    "\u0028\u110B\u1161\u0029",
+    "\u0028\u110C\u1161\u0029",
+    "\u0028\u110E\u1161\u0029",
+    "\u0028\u110F\u1161\u0029",
+    "\u0028\u1110\u1161\u0029",
+    "\u0028\u1111\u1161\u0029",
+    "\u0028\u1112\u1161\u0029",
+    "\u0028\u110C\u116E\u0029",
+    "\u0028\u4E00\u0029",
+    "\u0028\u4E8C\u0029",
+    "\u0028\u4E09\u0029",
+    "\u0028\u56DB\u0029",
+    "\u0028\u4E94\u0029",
+    "\u0028\u516D\u0029",
+    "\u0028\u4E03\u0029",
+    "\u0028\u516B\u0029",
+    "\u0028\u4E5D\u0029",
+    "\u0028\u5341\u0029",
+    "\u0028\u6708\u0029",
+    "\u0028\u706B\u0029",
+    "\u0028\u6C34\u0029",
+    "\u0028\u6728\u0029",
+    "\u0028\u91D1\u0029",
+    "\u0028\u571F\u0029",
+    "\u0028\u65E5\u0029",
+    "\u0028\u682A\u0029",
+    "\u0028\u6709\u0029",
+    "\u0028\u793E\u0029",
+    "\u0028\u540D\u0029",
+    "\u0028\u7279\u0029",
+    "\u0028\u8CA1\u0029",
+    "\u0028\u795D\u0029",
+    "\u0028\u52B4\u0029",
+    "\u0028\u4EE3\u0029",
+    "\u0028\u547C\u0029",
+    "\u0028\u5B66\u0029",
+    "\u0028\u76E3\u0029",
+    "\u0028\u4F01\u0029",
+    "\u0028\u8CC7\u0029",
+    "\u0028\u5354\u0029",
+    "\u0028\u796D\u0029",
+    "\u0028\u4F11\u0029",
+    "\u0028\u81EA\u0029",
+    "\u0028\u81F3\u0029",
+    "\u0032\u0031",
+    "\u0032\u0032",
+    "\u0032\u0033",
+    "\u0032\u0034",
+    "\u0032\u0035",
+    "\u0032\u0036",
+    "\u0032\u0037",
+    "\u0032\u0038",
+    "\u0032\u0039",
+    "\u0033\u0030",
+    "\u0033\u0031",
+    "\u0033\u0032",
+    "\u0033\u0033",
+    "\u0033\u0034",
+    "\u0033\u0035",
+    "\u1100\u1161",
+    "\u1102\u1161",
+    "\u1103\u1161",
+    "\u1105\u1161",
+    "\u1106\u1161",
+    "\u1107\u1161",
+    "\u1109\u1161",
+    "\u110B\u1161",
+    "\u110C\u1161",
+    "\u110E\u1161",
+    "\u110F\u1161",
+    "\u1110\u1161",
+    "\u1111\u1161",
+    "\u1112\u1161",
+    "\u4E94",
+    "\u516D",
+    "\u4E03",
+    "\u4E5D",
+    "\u682A",
+    "\u6709",
+    "\u793E",
+    "\u540D",
+    "\u7279",
+    "\u8CA1",
+    "\u795D",
+    "\u52B4",
+    "\u79D8",
+    "\u7537",
+    "\u9069",
+    "\u512A",
+    "\u5370",
+    "\u6CE8",
+    "\u9805",
+    "\u4F11",
+    "\u5199",
+    "\u6B63",
+    "\u5DE6",
+    "\u53F3",
+    "\u533B",
+    "\u5B97",
+    "\u5B66",
+    "\u76E3",
+    "\u4F01",
+    "\u8CC7",
+    "\u5354",
+    "\u591C",
+    "\u0033\u0036",
+    "\u0033\u0037",
+    "\u0033\u0038",
+    "\u0033\u0039",
+    "\u0034\u0030",
+    "\u0034\u0031",
+    "\u0034\u0032",
+    "\u0034\u0033",
+    "\u0034\u0034",
+    "\u0034\u0035",
+    "\u0034\u0036",
+    "\u0034\u0037",
+    "\u0034\u0038",
+    "\u0034\u0039",
+    "\u0035\u0030",
+    "\u0031\u6708",
+    "\u0032\u6708",
+    "\u0033\u6708",
+    "\u0034\u6708",
+    "\u0035\u6708",
+    "\u0036\u6708",
+    "\u0037\u6708",
+    "\u0038\u6708",
+    "\u0039\u6708",
+    "\u0031\u0030\u6708",
+    "\u0031\u0031\u6708",
+    "\u0031\u0032\u6708",
+    "\u30A2",
+    "\u30A4",
+    "\u30A6",
+    "\u30A8",
+    "\u30AA",
+    "\u30AB",
+    "\u30AD",
+    "\u30AF",
+    "\u30B1",
+    "\u30B3",
+    "\u30B5",
+    "\u30B7",
+    "\u30B9",
+    "\u30BB",
+    "\u30BD",
+    "\u30BF",
+    "\u30C1",
+    "\u30C4",
+    "\u30C6",
+    "\u30C8",
+    "\u30CA",
+    "\u30CB",
+    "\u30CC",
+    "\u30CD",
+    "\u30CE",
+    "\u30CF",
+    "\u30D2",
+    "\u30D5",
+    "\u30D8",
+    "\u30DB",
+    "\u30DE",
+    "\u30DF",
+    "\u30E0",
+    "\u30E1",
+    "\u30E2",
+    "\u30E4",
+    "\u30E6",
+    "\u30E8",
+    "\u30E9",
+    "\u30EA",
+    "\u30EB",
+    "\u30EC",
+    "\u30ED",
+    "\u30EF",
+    "\u30F0",
+    "\u30F1",
+    "\u30F2",
+    "\u30A2\u30CF\u309A\u30FC\u30C8",
+    "\u30A2\u30EB\u30D5\u30A1",
+    "\u30A2\u30F3\u30D8\u309A\u30A2",
+    "\u30A2\u30FC\u30EB",
+    "\u30A4\u30CB\u30F3\u30AF\u3099",
+    "\u30A4\u30F3\u30C1",
+    "\u30A6\u30A9\u30F3",
+    "\u30A8\u30B9\u30AF\u30FC\u30C8\u3099",
+    "\u30A8\u30FC\u30AB\u30FC",
+    "\u30AA\u30F3\u30B9",
+    "\u30AA\u30FC\u30E0",
+    "\u30AB\u30A4\u30EA",
+    "\u30AB\u30E9\u30C3\u30C8",
+    "\u30AB\u30ED\u30EA\u30FC",
+    "\u30AB\u3099\u30ED\u30F3",
+    "\u30AB\u3099\u30F3\u30DE",
+    "\u30AD\u3099\u30AB\u3099",
+    "\u30AD\u3099\u30CB\u30FC",
+    "\u30AD\u30E5\u30EA\u30FC",
+    "\u30AD\u3099\u30EB\u30BF\u3099\u30FC",
+    "\u30AD\u30ED",
+    "\u30AD\u30ED\u30AF\u3099\u30E9\u30E0",
+    "\u30AD\u30ED\u30E1\u30FC\u30C8\u30EB",
+    "\u30AD\u30ED\u30EF\u30C3\u30C8",
+    "\u30AF\u3099\u30E9\u30E0",
+    "\u30AF\u3099\u30E9\u30E0\u30C8\u30F3",
+    "\u30AF\u30EB\u30BB\u3099\u30A4\u30ED",
+    "\u30AF\u30ED\u30FC\u30CD",
+    "\u30B1\u30FC\u30B9",
+    "\u30B3\u30EB\u30CA",
+    "\u30B3\u30FC\u30DB\u309A",
+    "\u30B5\u30A4\u30AF\u30EB",
+    "\u30B5\u30F3\u30C1\u30FC\u30E0",
+    "\u30B7\u30EA\u30F3\u30AF\u3099",
+    "\u30BB\u30F3\u30C1",
+    "\u30BB\u30F3\u30C8",
+    "\u30BF\u3099\u30FC\u30B9",
+    "\u30C6\u3099\u30B7",
+    "\u30C8\u3099\u30EB",
+    "\u30C8\u30F3",
+    "\u30CA\u30CE",
+    "\u30CE\u30C3\u30C8",
+    "\u30CF\u30A4\u30C4",
+    "\u30CF\u309A\u30FC\u30BB\u30F3\u30C8",
+    "\u30CF\u309A\u30FC\u30C4",
+    "\u30CF\u3099\u30FC\u30EC\u30EB",
+    "\u30D2\u309A\u30A2\u30B9\u30C8\u30EB",
+    "\u30D2\u309A\u30AF\u30EB",
+    "\u30D2\u309A\u30B3",
+    "\u30D2\u3099\u30EB",
+    "\u30D5\u30A1\u30E9\u30C3\u30C8\u3099",
+    "\u30D5\u30A3\u30FC\u30C8",
+    "\u30D5\u3099\u30C3\u30B7\u30A7\u30EB",
+    "\u30D5\u30E9\u30F3",
+    "\u30D8\u30AF\u30BF\u30FC\u30EB",
+    "\u30D8\u309A\u30BD",
+    "\u30D8\u309A\u30CB\u30D2",
+    "\u30D8\u30EB\u30C4",
+    "\u30D8\u309A\u30F3\u30B9",
+    "\u30D8\u309A\u30FC\u30B7\u3099",
+    "\u30D8\u3099\u30FC\u30BF",
+    "\u30DB\u309A\u30A4\u30F3\u30C8",
+    "\u30DB\u3099\u30EB\u30C8",
+    "\u30DB\u30F3",
+    "\u30DB\u309A\u30F3\u30C8\u3099",
+    "\u30DB\u30FC\u30EB",
+    "\u30DB\u30FC\u30F3",
+    "\u30DE\u30A4\u30AF\u30ED",
+    "\u30DE\u30A4\u30EB",
+    "\u30DE\u30C3\u30CF",
+    "\u30DE\u30EB\u30AF",
+    "\u30DE\u30F3\u30B7\u30E7\u30F3",
+    "\u30DF\u30AF\u30ED\u30F3",
+    "\u30DF\u30EA",
+    "\u30DF\u30EA\u30CF\u3099\u30FC\u30EB",
+    "\u30E1\u30AB\u3099",
+    "\u30E1\u30AB\u3099\u30C8\u30F3",
+    "\u30E1\u30FC\u30C8\u30EB",
+    "\u30E4\u30FC\u30C8\u3099",
+    "\u30E4\u30FC\u30EB",
+    "\u30E6\u30A2\u30F3",
+    "\u30EA\u30C3\u30C8\u30EB",
+    "\u30EA\u30E9",
+    "\u30EB\u30D2\u309A\u30FC",
+    "\u30EB\u30FC\u30D5\u3099\u30EB",
+    "\u30EC\u30E0",
+    "\u30EC\u30F3\u30C8\u30B1\u3099\u30F3",
+    "\u30EF\u30C3\u30C8",
+    "\u0030\u70B9",
+    "\u0031\u70B9",
+    "\u0032\u70B9",
+    "\u0033\u70B9",
+    "\u0034\u70B9",
+    "\u0035\u70B9",
+    "\u0036\u70B9",
+    "\u0037\u70B9",
+    "\u0038\u70B9",
+    "\u0039\u70B9",
+    "\u0031\u0030\u70B9",
+    "\u0031\u0031\u70B9",
+    "\u0031\u0032\u70B9",
+    "\u0031\u0033\u70B9",
+    "\u0031\u0034\u70B9",
+    "\u0031\u0035\u70B9",
+    "\u0031\u0036\u70B9",
+    "\u0031\u0037\u70B9",
+    "\u0031\u0038\u70B9",
+    "\u0031\u0039\u70B9",
+    "\u0032\u0030\u70B9",
+    "\u0032\u0031\u70B9",
+    "\u0032\u0032\u70B9",
+    "\u0032\u0033\u70B9",
+    "\u0032\u0034\u70B9",
+    "\u0068\u0050\u0061",
+    "\u0064\u0061",
+    "\u0041\u0055",
+    "\u0062\u0061\u0072",
+    "\u006F\u0056",
+    "\u0070\u0063",
+    "\u5E73\u6210",
+    "\u662D\u548C",
+    "\u5927\u6B63",
+    "\u660E\u6CBB",
+    "\u682A\u5F0F\u4F1A\u793E",
+    "\u0070\u0041",
+    "\u006E\u0041",
+    "\u03BC\u0041",
+    "\u006D\u0041",
+    "\u006B\u0041",
+    "\u004B\u0042",
+    "\u004D\u0042",
+    "\u0047\u0042",
+    "\u0063\u0061\u006C",
+    "\u006B\u0063\u0061\u006C",
+    "\u0070\u0046",
+    "\u006E\u0046",
+    "\u03BC\u0046",
+    "\u03BC\u0067",
+    "\u006D\u0067",
+    "\u006B\u0067",
+    "\u0048\u007A",
+    "\u006B\u0048\u007A",
+    "\u004D\u0048\u007A",
+    "\u0047\u0048\u007A",
+    "\u0054\u0048\u007A",
+    "\u03BC\u006C",
+    "\u006D\u006C",
+    "\u0064\u006C",
+    "\u006B\u006C",
+    "\u0066\u006D",
+    "\u006E\u006D",
+    "\u03BC\u006D",
+    "\u006D\u006D",
+    "\u0063\u006D",
+    "\u006B\u006D",
+    "\u006D\u006D\u0032",
+    "\u0063\u006D\u0032",
+    "\u006D\u0032",
+    "\u006B\u006D\u0032",
+    "\u006D\u006D\u0033",
+    "\u0063\u006D\u0033",
+    "\u006D\u0033",
+    "\u006B\u006D\u0033",
+    "\u006D\u2215\u0073",
+    "\u006D\u2215\u0073\u0032",
+    "\u0050\u0061",
+    "\u006B\u0050\u0061",
+    "\u004D\u0050\u0061",
+    "\u0047\u0050\u0061",
+    "\u0072\u0061\u0064",
+    "\u0072\u0061\u0064\u2215\u0073",
+    "\u0072\u0061\u0064\u2215\u0073\u0032",
+    "\u0070\u0073",
+    "\u006E\u0073",
+    "\u03BC\u0073",
+    "\u006D\u0073",
+    "\u0070\u0056",
+    "\u006E\u0056",
+    "\u03BC\u0056",
+    "\u006D\u0056",
+    "\u006B\u0056",
+    "\u004D\u0056",
+    "\u0070\u0057",
+    "\u006E\u0057",
+    "\u03BC\u0057",
+    "\u006D\u0057",
+    "\u006B\u0057",
+    "\u004D\u0057",
+    "\u006B\u03A9",
+    "\u004D\u03A9",
+    "\u0061\u002E\u006D\u002E",
+    "\u0042\u0071",
+    "\u0063\u0063",
+    "\u0063\u0064",
+    "\u0043\u2215\u006B\u0067",
+    "\u0043\u006F\u002E",
+    "\u0064\u0042",
+    "\u0047\u0079",
+    "\u0068\u0061",
+    "\u0048\u0050",
+    "\u0069\u006E",
+    "\u004B\u004B",
+    "\u004B\u004D",
+    "\u006B\u0074",
+    "\u006C\u006D",
+    "\u006C\u006E",
+    "\u006C\u006F\u0067",
+    "\u006C\u0078",
+    "\u006D\u0062",
+    "\u006D\u0069\u006C",
+    "\u006D\u006F\u006C",
+    "\u0050\u0048",
+    "\u0070\u002E\u006D\u002E",
+    "\u0050\u0050\u004D",
+    "\u0050\u0052",
+    "\u0073\u0072",
+    "\u0053\u0076",
+    "\u0057\u0062",
+    "\u0031\u65E5",
+    "\u0032\u65E5",
+    "\u0033\u65E5",
+    "\u0034\u65E5",
+    "\u0035\u65E5",
+    "\u0036\u65E5",
+    "\u0037\u65E5",
+    "\u0038\u65E5",
+    "\u0039\u65E5",
+    "\u0031\u0030\u65E5",
+    "\u0031\u0031\u65E5",
+    "\u0031\u0032\u65E5",
+    "\u0031\u0033\u65E5",
+    "\u0031\u0034\u65E5",
+    "\u0031\u0035\u65E5",
+    "\u0031\u0036\u65E5",
+    "\u0031\u0037\u65E5",
+    "\u0031\u0038\u65E5",
+    "\u0031\u0039\u65E5",
+    "\u0032\u0030\u65E5",
+    "\u0032\u0031\u65E5",
+    "\u0032\u0032\u65E5",
+    "\u0032\u0033\u65E5",
+    "\u0032\u0034\u65E5",
+    "\u0032\u0035\u65E5",
+    "\u0032\u0036\u65E5",
+    "\u0032\u0037\u65E5",
+    "\u0032\u0038\u65E5",
+    "\u0032\u0039\u65E5",
+    "\u0033\u0030\u65E5",
+    "\u0033\u0031\u65E5",
+    "\u8C48",
+    "\u66F4",
+    "\u8CC8",
+    "\u6ED1",
+    "\u4E32",
+    "\u53E5",
+    "\u5951",
+    "\u5587",
+    "\u5948",
+    "\u61F6",
+    "\u7669",
+    "\u7F85",
+    "\u863F",
+    "\u87BA",
+    "\u88F8",
+    "\u908F",
+    "\u6A02",
+    "\u6D1B",
+    "\u70D9",
+    "\u73DE",
+    "\u843D",
+    "\u916A",
+    "\u99F1",
+    "\u4E82",
+    "\u5375",
+    "\u6B04",
+    "\u721B",
+    "\u862D",
+    "\u9E1E",
+    "\u5D50",
+    "\u6FEB",
+    "\u85CD",
+    "\u8964",
+    "\u62C9",
+    "\u81D8",
+    "\u881F",
+    "\u5ECA",
+    "\u6717",
+    "\u6D6A",
+    "\u72FC",
+    "\u90CE",
+    "\u4F86",
+    "\u51B7",
+    "\u52DE",
+    "\u64C4",
+    "\u6AD3",
+    "\u7210",
+    "\u76E7",
+    "\u8606",
+    "\u865C",
+    "\u8DEF",
+    "\u9732",
+    "\u9B6F",
+    "\u9DFA",
+    "\u788C",
+    "\u797F",
+    "\u7DA0",
+    "\u83C9",
+    "\u9304",
+    "\u8AD6",
+    "\u58DF",
+    "\u5F04",
+    "\u7C60",
+    "\u807E",
+    "\u7262",
+    "\u78CA",
+    "\u8CC2",
+    "\u96F7",
+    "\u58D8",
+    "\u5C62",
+    "\u6A13",
+    "\u6DDA",
+    "\u6F0F",
+    "\u7D2F",
+    "\u7E37",
+    "\u964B",
+    "\u52D2",
+    "\u808B",
+    "\u51DC",
+    "\u51CC",
+    "\u7A1C",
+    "\u7DBE",
+    "\u83F1",
+    "\u9675",
+    "\u8B80",
+    "\u62CF",
+    "\u8AFE",
+    "\u4E39",
+    "\u5BE7",
+    "\u6012",
+    "\u7387",
+    "\u7570",
+    "\u5317",
+    "\u78FB",
+    "\u4FBF",
+    "\u5FA9",
+    "\u4E0D",
+    "\u6CCC",
+    "\u6578",
+    "\u7D22",
+    "\u53C3",
+    "\u585E",
+    "\u7701",
+    "\u8449",
+    "\u8AAA",
+    "\u6BBA",
+    "\u6C88",
+    "\u62FE",
+    "\u82E5",
+    "\u63A0",
+    "\u7565",
+    "\u4EAE",
+    "\u5169",
+    "\u51C9",
+    "\u6881",
+    "\u7CE7",
+    "\u826F",
+    "\u8AD2",
+    "\u91CF",
+    "\u52F5",
+    "\u5442",
+    "\u5EEC",
+    "\u65C5",
+    "\u6FFE",
+    "\u792A",
+    "\u95AD",
+    "\u9A6A",
+    "\u9E97",
+    "\u9ECE",
+    "\u66C6",
+    "\u6B77",
+    "\u8F62",
+    "\u5E74",
+    "\u6190",
+    "\u6200",
+    "\u649A",
+    "\u6F23",
+    "\u7149",
+    "\u7489",
+    "\u79CA",
+    "\u7DF4",
+    "\u806F",
+    "\u8F26",
+    "\u84EE",
+    "\u9023",
+    "\u934A",
+    "\u5217",
+    "\u52A3",
+    "\u54BD",
+    "\u70C8",
+    "\u88C2",
+    "\u5EC9",
+    "\u5FF5",
+    "\u637B",
+    "\u6BAE",
+    "\u7C3E",
+    "\u7375",
+    "\u4EE4",
+    "\u56F9",
+    "\u5DBA",
+    "\u601C",
+    "\u73B2",
+    "\u7469",
+    "\u7F9A",
+    "\u8046",
+    "\u9234",
+    "\u96F6",
+    "\u9748",
+    "\u9818",
+    "\u4F8B",
+    "\u79AE",
+    "\u91B4",
+    "\u96B8",
+    "\u60E1",
+    "\u4E86",
+    "\u50DA",
+    "\u5BEE",
+    "\u5C3F",
+    "\u6599",
+    "\u71CE",
+    "\u7642",
+    "\u84FC",
+    "\u907C",
+    "\u6688",
+    "\u962E",
+    "\u5289",
+    "\u677B",
+    "\u67F3",
+    "\u6D41",
+    "\u6E9C",
+    "\u7409",
+    "\u7559",
+    "\u786B",
+    "\u7D10",
+    "\u985E",
+    "\u622E",
+    "\u9678",
+    "\u502B",
+    "\u5D19",
+    "\u6DEA",
+    "\u8F2A",
+    "\u5F8B",
+    "\u6144",
+    "\u6817",
+    "\u9686",
+    "\u5229",
+    "\u540F",
+    "\u5C65",
+    "\u6613",
+    "\u674E",
+    "\u68A8",
+    "\u6CE5",
+    "\u7406",
+    "\u75E2",
+    "\u7F79",
+    "\u88CF",
+    "\u88E1",
+    "\u96E2",
+    "\u533F",
+    "\u6EBA",
+    "\u541D",
+    "\u71D0",
+    "\u7498",
+    "\u85FA",
+    "\u96A3",
+    "\u9C57",
+    "\u9E9F",
+    "\u6797",
+    "\u6DCB",
+    "\u81E8",
+    "\u7B20",
+    "\u7C92",
+    "\u72C0",
+    "\u7099",
+    "\u8B58",
+    "\u4EC0",
+    "\u8336",
+    "\u523A",
+    "\u5207",
+    "\u5EA6",
+    "\u62D3",
+    "\u7CD6",
+    "\u5B85",
+    "\u6D1E",
+    "\u66B4",
+    "\u8F3B",
+    "\u964D",
+    "\u5ED3",
+    "\u5140",
+    "\u55C0",
+    "\u585A",
+    "\u6674",
+    "\u51DE",
+    "\u732A",
+    "\u76CA",
+    "\u793C",
+    "\u795E",
+    "\u7965",
+    "\u798F",
+    "\u9756",
+    "\u7CBE",
+    "\u8612",
+    "\u8AF8",
+    "\u9038",
+    "\u90FD",
+    "\u98EF",
+    "\u98FC",
+    "\u9928",
+    "\u9DB4",
+    "\u4FAE",
+    "\u50E7",
+    "\u514D",
+    "\u52C9",
+    "\u52E4",
+    "\u5351",
+    "\u559D",
+    "\u5606",
+    "\u5668",
+    "\u5840",
+    "\u58A8",
+    "\u5C64",
+    "\u6094",
+    "\u6168",
+    "\u618E",
+    "\u61F2",
+    "\u654F",
+    "\u65E2",
+    "\u6691",
+    "\u6885",
+    "\u6D77",
+    "\u6E1A",
+    "\u6F22",
+    "\u716E",
+    "\u722B",
+    "\u7422",
+    "\u7891",
+    "\u7949",
+    "\u7948",
+    "\u7950",
+    "\u7956",
+    "\u798D",
+    "\u798E",
+    "\u7A40",
+    "\u7A81",
+    "\u7BC0",
+    "\u7E09",
+    "\u7E41",
+    "\u7F72",
+    "\u8005",
+    "\u81ED",
+    "\u8279",
+    "\u8457",
+    "\u8910",
+    "\u8996",
+    "\u8B01",
+    "\u8B39",
+    "\u8CD3",
+    "\u8D08",
+    "\u8FB6",
+    "\u96E3",
+    "\u97FF",
+    "\u983B",
+    "\u0066\u0066",
+    "\u0066\u0069",
+    "\u0066\u006C",
+    "\u0066\u0066\u0069",
+    "\u0066\u0066\u006C",
+    "\u0073\u0074",
+    "\u0574\u0576",
+    "\u0574\u0565",
+    "\u0574\u056B",
+    "\u057E\u0576",
+    "\u0574\u056D",
+    "\u05D9\u05B4",
+    "\u05F2\u05B7",
+    "\u05E2",
+    "\u05D4",
+    "\u05DB",
+    "\u05DC",
+    "\u05DD",
+    "\u05E8",
+    "\u05EA",
+    "\u05E9\u05C1",
+    "\u05E9\u05C2",
+    "\u05E9\u05BC\u05C1",
+    "\u05E9\u05BC\u05C2",
+    "\u05D0\u05B7",
+    "\u05D0\u05B8",
+    "\u05D0\u05BC",
+    "\u05D1\u05BC",
+    "\u05D2\u05BC",
+    "\u05D3\u05BC",
+    "\u05D4\u05BC",
+    "\u05D5\u05BC",
+    "\u05D6\u05BC",
+    "\u05D8\u05BC",
+    "\u05D9\u05BC",
+    "\u05DA\u05BC",
+    "\u05DB\u05BC",
+    "\u05DC\u05BC",
+    "\u05DE\u05BC",
+    "\u05E0\u05BC",
+    "\u05E1\u05BC",
+    "\u05E3\u05BC",
+    "\u05E4\u05BC",
+    "\u05E6\u05BC",
+    "\u05E7\u05BC",
+    "\u05E8\u05BC",
+    "\u05E9\u05BC",
+    "\u05EA\u05BC",
+    "\u05D5\u05B9",
+    "\u05D1\u05BF",
+    "\u05DB\u05BF",
+    "\u05E4\u05BF",
+    "\u05D0\u05DC",
+    "\u0671",
+    "\u067B",
+    "\u067E",
+    "\u0680",
+    "\u067A",
+    "\u067F",
+    "\u0679",
+    "\u06A4",
+    "\u06A6",
+    "\u0684",
+    "\u0683",
+    "\u0686",
+    "\u0687",
+    "\u068D",
+    "\u068C",
+    "\u068E",
+    "\u0688",
+    "\u0698",
+    "\u0691",
+    "\u06A9",
+    "\u06AF",
+    "\u06B3",
+    "\u06B1",
+    "\u06BA",
+    "\u06BB",
+    "\u06C1",
+    "\u06BE",
+    "\u06D2",
+    "\u06AD",
+    "\u06C7",
+    "\u06C6",
+    "\u06C8",
+    "\u06CB",
+    "\u06C5",
+    "\u06C9",
+    "\u06D0",
+    "\u0649",
+    "\u064A\u0654\u0627",
+    "\u064A\u0654\u06D5",
+    "\u064A\u0654\u0648",
+    "\u064A\u0654\u06C7",
+    "\u064A\u0654\u06C6",
+    "\u064A\u0654\u06C8",
+    "\u064A\u0654\u06D0",
+    "\u064A\u0654\u0649",
+    "\u06CC",
+    "\u064A\u0654\u062C",
+    "\u064A\u0654\u062D",
+    "\u064A\u0654\u0645",
+    "\u064A\u0654\u064A",
+    "\u0628\u062C",
+    "\u0628\u062D",
+    "\u0628\u062E",
+    "\u0628\u0645",
+    "\u0628\u0649",
+    "\u0628\u064A",
+    "\u062A\u062C",
+    "\u062A\u062D",
+    "\u062A\u062E",
+    "\u062A\u0645",
+    "\u062A\u0649",
+    "\u062A\u064A",
+    "\u062B\u062C",
+    "\u062B\u0645",
+    "\u062B\u0649",
+    "\u062B\u064A",
+    "\u062C\u062D",
+    "\u062C\u0645",
+    "\u062D\u062C",
+    "\u062D\u0645",
+    "\u062E\u062C",
+    "\u062E\u062D",
+    "\u062E\u0645",
+    "\u0633\u062C",
+    "\u0633\u062D",
+    "\u0633\u062E",
+    "\u0633\u0645",
+    "\u0635\u062D",
+    "\u0635\u0645",
+    "\u0636\u062C",
+    "\u0636\u062D",
+    "\u0636\u062E",
+    "\u0636\u0645",
+    "\u0637\u062D",
+    "\u0637\u0645",
+    "\u0638\u0645",
+    "\u0639\u062C",
+    "\u0639\u0645",
+    "\u063A\u062C",
+    "\u063A\u0645",
+    "\u0641\u062C",
+    "\u0641\u062D",
+    "\u0641\u062E",
+    "\u0641\u0645",
+    "\u0641\u0649",
+    "\u0641\u064A",
+    "\u0642\u062D",
+    "\u0642\u0645",
+    "\u0642\u0649",
+    "\u0642\u064A",
+    "\u0643\u0627",
+    "\u0643\u062C",
+    "\u0643\u062D",
+    "\u0643\u062E",
+    "\u0643\u0644",
+    "\u0643\u0645",
+    "\u0643\u0649",
+    "\u0643\u064A",
+    "\u0644\u062C",
+    "\u0644\u062D",
+    "\u0644\u062E",
+    "\u0644\u0645",
+    "\u0644\u0649",
+    "\u0644\u064A",
+    "\u0645\u062C",
+    "\u0645\u062D",
+    "\u0645\u062E",
+    "\u0645\u0645",
+    "\u0645\u0649",
+    "\u0645\u064A",
+    "\u0646\u062C",
+    "\u0646\u062D",
+    "\u0646\u062E",
+    "\u0646\u0645",
+    "\u0646\u0649",
+    "\u0646\u064A",
+    "\u0647\u062C",
+    "\u0647\u0645",
+    "\u0647\u0649",
+    "\u0647\u064A",
+    "\u064A\u062C",
+    "\u064A\u062D",
+    "\u064A\u062E",
+    "\u064A\u0645",
+    "\u064A\u0649",
+    "\u064A\u064A",
+    "\u0630\u0670",
+    "\u0631\u0670",
+    "\u0649\u0670",
+    "\u0020\u064C\u0651",
+    "\u0020\u064D\u0651",
+    "\u0020\u064E\u0651",
+    "\u0020\u064F\u0651",
+    "\u0020\u0650\u0651",
+    "\u0020\u0651\u0670",
+    "\u064A\u0654\u0631",
+    "\u064A\u0654\u0632",
+    "\u064A\u0654\u0646",
+    "\u0628\u0631",
+    "\u0628\u0632",
+    "\u0628\u0646",
+    "\u062A\u0631",
+    "\u062A\u0632",
+    "\u062A\u0646",
+    "\u062B\u0631",
+    "\u062B\u0632",
+    "\u062B\u0646",
+    "\u0645\u0627",
+    "\u0646\u0631",
+    "\u0646\u0632",
+    "\u0646\u0646",
+    "\u064A\u0631",
+    "\u064A\u0632",
+    "\u064A\u0646",
+    "\u064A\u0654\u062E",
+    "\u064A\u0654\u0647",
+    "\u0628\u0647",
+    "\u062A\u0647",
+    "\u0635\u062E",
+    "\u0644\u0647",
+    "\u0646\u0647",
+    "\u0647\u0670",
+    "\u064A\u0647",
+    "\u062B\u0647",
+    "\u0633\u0647",
+    "\u0634\u0645",
+    "\u0634\u0647",
+    "\u0640\u064E\u0651",
+    "\u0640\u064F\u0651",
+    "\u0640\u0650\u0651",
+    "\u0637\u0649",
+    "\u0637\u064A",
+    "\u0639\u0649",
+    "\u0639\u064A",
+    "\u063A\u0649",
+    "\u063A\u064A",
+    "\u0633\u0649",
+    "\u0633\u064A",
+    "\u0634\u0649",
+    "\u0634\u064A",
+    "\u062D\u0649",
+    "\u062D\u064A",
+    "\u062C\u0649",
+    "\u062C\u064A",
+    "\u062E\u0649",
+    "\u062E\u064A",
+    "\u0635\u0649",
+    "\u0635\u064A",
+    "\u0636\u0649",
+    "\u0636\u064A",
+    "\u0634\u062C",
+    "\u0634\u062D",
+    "\u0634\u062E",
+    "\u0634\u0631",
+    "\u0633\u0631",
+    "\u0635\u0631",
+    "\u0636\u0631",
+    "\u0627\u064B",
+    "\u062A\u062C\u0645",
+    "\u062A\u062D\u062C",
+    "\u062A\u062D\u0645",
+    "\u062A\u062E\u0645",
+    "\u062A\u0645\u062C",
+    "\u062A\u0645\u062D",
+    "\u062A\u0645\u062E",
+    "\u062C\u0645\u062D",
+    "\u062D\u0645\u064A",
+    "\u062D\u0645\u0649",
+    "\u0633\u062D\u062C",
+    "\u0633\u062C\u062D",
+    "\u0633\u062C\u0649",
+    "\u0633\u0645\u062D",
+    "\u0633\u0645\u062C",
+    "\u0633\u0645\u0645",
+    "\u0635\u062D\u062D",
+    "\u0635\u0645\u0645",
+    "\u0634\u062D\u0645",
+    "\u0634\u062C\u064A",
+    "\u0634\u0645\u062E",
+    "\u0634\u0645\u0645",
+    "\u0636\u062D\u0649",
+    "\u0636\u062E\u0645",
+    "\u0637\u0645\u062D",
+    "\u0637\u0645\u0645",
+    "\u0637\u0645\u064A",
+    "\u0639\u062C\u0645",
+    "\u0639\u0645\u0645",
+    "\u0639\u0645\u0649",
+    "\u063A\u0645\u0645",
+    "\u063A\u0645\u064A",
+    "\u063A\u0645\u0649",
+    "\u0641\u062E\u0645",
+    "\u0642\u0645\u062D",
+    "\u0642\u0645\u0645",
+    "\u0644\u062D\u0645",
+    "\u0644\u062D\u064A",
+    "\u0644\u062D\u0649",
+    "\u0644\u062C\u062C",
+    "\u0644\u062E\u0645",
+    "\u0644\u0645\u062D",
+    "\u0645\u062D\u062C",
+    "\u0645\u062D\u0645",
+    "\u0645\u062D\u064A",
+    "\u0645\u062C\u062D",
+    "\u0645\u062C\u0645",
+    "\u0645\u062E\u062C",
+    "\u0645\u062E\u0645",
+    "\u0645\u062C\u062E",
+    "\u0647\u0645\u062C",
+    "\u0647\u0645\u0645",
+    "\u0646\u062D\u0645",
+    "\u0646\u062D\u0649",
+    "\u0646\u062C\u0645",
+    "\u0646\u062C\u0649",
+    "\u0646\u0645\u064A",
+    "\u0646\u0645\u0649",
+    "\u064A\u0645\u0645",
+    "\u0628\u062E\u064A",
+    "\u062A\u062C\u064A",
+    "\u062A\u062C\u0649",
+    "\u062A\u062E\u064A",
+    "\u062A\u062E\u0649",
+    "\u062A\u0645\u064A",
+    "\u062A\u0645\u0649",
+    "\u062C\u0645\u064A",
+    "\u062C\u062D\u0649",
+    "\u062C\u0645\u0649",
+    "\u0633\u062E\u0649",
+    "\u0635\u062D\u064A",
+    "\u0634\u062D\u064A",
+    "\u0636\u062D\u064A",
+    "\u0644\u062C\u064A",
+    "\u0644\u0645\u064A",
+    "\u064A\u062D\u064A",
+    "\u064A\u062C\u064A",
+    "\u064A\u0645\u064A",
+    "\u0645\u0645\u064A",
+    "\u0642\u0645\u064A",
+    "\u0646\u062D\u064A",
+    "\u0639\u0645\u064A",
+    "\u0643\u0645\u064A",
+    "\u0646\u062C\u062D",
+    "\u0645\u062E\u064A",
+    "\u0644\u062C\u0645",
+    "\u0643\u0645\u0645",
+    "\u062C\u062D\u064A",
+    "\u062D\u062C\u064A",
+    "\u0645\u062C\u064A",
+    "\u0641\u0645\u064A",
+    "\u0628\u062D\u064A",
+    "\u0633\u062E\u064A",
+    "\u0646\u062C\u064A",
+    "\u0635\u0644\u06D2",
+    "\u0642\u0644\u06D2",
+    "\u0627\u0644\u0644\u0647",
+    "\u0627\u0643\u0628\u0631",
+    "\u0645\u062D\u0645\u062F",
+    "\u0635\u0644\u0639\u0645",
+    "\u0631\u0633\u0648\u0644",
+    "\u0639\u0644\u064A\u0647",
+    "\u0648\u0633\u0644\u0645",
+    "\u0635\u0644\u0649",
+    "\u0635\u0644\u0649\u0020\u0627\u0644\u0644\u0647\u0020\u0639\u0644\u064A\u0647\u0020\u0648\u0633\u0644\u0645",
+    "\u062C\u0644\u0020\u062C\u0644\u0627\u0644\u0647",
+    "\u0631\u06CC\u0627\u0644",
+    "\u2014",
+    "\u2013",
+    "\u005F",
+    "\u007B",
+    "\u007D",
+    "\u3014",
+    "\u3015",
+    "\u3010",
+    "\u3011",
+    "\u300A",
+    "\u300B",
+    "\u300C",
+    "\u300D",
+    "\u300E",
+    "\u300F",
+    "\u002C",
+    "\u3001",
+    "\u003A",
+    "\u003F",
+    "\u0021",
+    "\u0023",
+    "\u0026",
+    "\u002A",
+    "\u002D",
+    "\u003C",
+    "\u003E",
+    "\\",
+    "\u0024",
+    "\u0025",
+    "\u0040",
+    "\u0020\u064B",
+    "\u0640\u064B",
+    "\u0020\u064C",
+    "\u0020\u064D",
+    "\u0020\u064E",
+    "\u0640\u064E",
+    "\u0020\u064F",
+    "\u0640\u064F",
+    "\u0020\u0650",
+    "\u0640\u0650",
+    "\u0020\u0651",
+    "\u0640\u0651",
+    "\u0020\u0652",
+    "\u0640\u0652",
+    "\u0621",
+    "\u0627",
+    "\u0628",
+    "\u0629",
+    "\u062A",
+    "\u062B",
+    "\u062C",
+    "\u062D",
+    "\u062E",
+    "\u062F",
+    "\u0630",
+    "\u0631",
+    "\u0632",
+    "\u0633",
+    "\u0634",
+    "\u0635",
+    "\u0636",
+    "\u0637",
+    "\u0638",
+    "\u0639",
+    "\u063A",
+    "\u0641",
+    "\u0642",
+    "\u0643",
+    "\u0644",
+    "\u0645",
+    "\u0646",
+    "\u0647",
+    "\u0648",
+    "\u064A",
+    "\u0644\u0627\u0653",
+    "\u0644\u0627\u0654",
+    "\u0644\u0627\u0655",
+    "\u0644\u0627",
+    "\"",
+    "\u0027",
+    "\u002F",
+    "\u005B",
+    "\u005D",
+    "\u005E",
+    "\u007C",
+    "\u007E",
+    "\u2985",
+    "\u2986",
+    "\u3002",
+    "\u30FB",
+    "\u30A1",
+    "\u30A3",
+    "\u30A5",
+    "\u30A7",
+    "\u30A9",
+    "\u30E3",
+    "\u30E5",
+    "\u30E7",
+    "\u30C3",
+    "\u30FC",
+    "\u30F3",
+    "\u3099",
+    "\u309A",
+    "\u00A2",
+    "\u00A3",
+    "\u00AC",
+    "\u00A6",
+    "\u00A5",
+    "\u20A9",
+    "\u2502",
+    "\u2190",
+    "\u2191",
+    "\u2192",
+    "\u2193",
+    "\u25A0",
+    "\u25CB",
+  };
+}
diff --git a/csharp/IDNA.cs b/csharp/IDNA.cs
new file mode 100644 (file)
index 0000000..b527efb
--- /dev/null
@@ -0,0 +1,306 @@
+/// <summary>
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+using System.Text;
+
+namespace Gnu.Inet.Encoding
+{      
+       public class IDNA
+       {
+               public const string ACE_PREFIX = "xn--";
+               
+               /// <summary>
+        /// Converts a Unicode string to ASCII using the procedure in RFC3490
+               /// section 4.1. Unassigned characters are not allowed and STD3 ASCII
+               /// rules are enforced. The input string may be a domain name
+               /// containing dots.
+               /// </summary>
+               /// <param name="input">Unicode string.</param>
+               /// <returns> Encoded string.</returns>
+               public static string ToASCII(string input)
+               {
+                       StringBuilder o = new StringBuilder();
+                       StringBuilder h = new StringBuilder();
+                       
+                       for (int i = 0; i < input.Length; i++)
+                       {
+                               char c = input[i];
+                               if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61')
+                               {
+                                       o.Append(ToASCII(h.ToString(), false, true));
+                    o.Append('.');
+                                       h = new StringBuilder();
+                               }
+                               else
+                               {
+                                       h.Append(c);
+                               }
+                       }
+                       o.Append(ToASCII(h.ToString(), false, true));
+                       return o.ToString();
+               }
+               
+               /// <summary>
+        /// Converts a Unicode string to ASCII using the procedure in RFC3490
+               /// section 4.1. Unassigned characters are not allowed and STD3 ASCII
+               /// rules are enforced.
+        /// </summary>
+               /// <param name="input">Unicode string.</param>
+               /// <param name="allowUnassigned">Unassigned characters, allowed or not?</param>
+               /// <param name="useSTD3ASCIIRules">STD3 ASCII rules, enforced or not?</param>
+               /// <returns> Encoded string.</returns>
+               public static string ToASCII(string input, bool allowUnassigned, bool useSTD3ASCIIRules)
+               {
+                       // Step 1: Check if the string contains code points outside
+                       //         the ASCII range 0..0x7c.
+                       
+                       bool nonASCII = false;
+                       
+                       for (int i = 0; i < input.Length; i++)
+                       {
+                               int c = input[i];
+                               if (c > 0x7f)
+                               {
+                                       nonASCII = true;
+                                       break;
+                               }
+                       }
+                       
+                       // Step 2: Perform the nameprep operation.
+                       
+                       if (nonASCII)
+                       {
+                               try
+                               {
+                                       input = Stringprep.NamePrep(input, allowUnassigned);
+                               }
+                               catch (StringprepException e)
+                               {
+                                       // TODO 
+                                       throw new IDNAException(e);
+                               }
+                       }
+                       
+                       // Step 3: - Verify the absence of non-LDH ASCII code points
+                       //    (char) 0..0x2c, 0x2e..0x2f, 0x3a..0x40, 0x5b..0x60,
+                       //    (char) 0x7b..0x7f
+                       //         - Verify the absence of leading and trailing
+                       //           hyphen-minus
+                       
+                       if (useSTD3ASCIIRules)
+                       {
+                               for (int i = 0; i < input.Length; i++)
+                               {
+                                       int c = input[i];
+                                       if ((c <= 0x2c) || (c >= 0x2e && c <= 0x2f) || (c >= 0x3a && c <= 0x40) || (c >= 0x5b && c <= 0x60) || (c >= 0x7b && c <= 0x7f))
+                                       {
+                                               throw new IDNAException(IDNAException.CONTAINS_NON_LDH);
+                                       }
+                               }
+                               
+                               if (input.StartsWith("-") || input.EndsWith("-"))
+                               {
+                                       throw new IDNAException(IDNAException.CONTAINS_HYPHEN);
+                               }
+                       }
+                       
+                       // Step 4: If all code points are inside 0..0x7f, skip to step 8
+                       
+                       nonASCII = false;
+                       
+                       for (int i = 0; i < input.Length; i++)
+                       {
+                               int c = input[i];
+                               if (c > 0x7f)
+                               {
+                                       nonASCII = true;
+                                       break;
+                               }
+                       }
+                       
+                       string output = input;
+                       
+                       if (nonASCII)
+                       {
+                               
+                               // Step 5: Verify that the sequence does not begin with the ACE prefix.
+                               
+                               if (input.StartsWith(ACE_PREFIX))
+                               {
+                                       throw new IDNAException(IDNAException.CONTAINS_ACE_PREFIX);
+                               }
+                               
+                               // Step 6: Punycode
+                               
+                               try
+                               {
+                                       output = Punycode.Encode(input);
+                               }
+                               catch (PunycodeException e)
+                               {
+                                       // TODO
+                                       throw new IDNAException(e);
+                               }
+                               
+                               // Step 7: Prepend the ACE prefix.
+                               
+                               output = ACE_PREFIX + output;
+                       }
+                       
+                       // Step 8: Check that the length is inside 1..63.
+                       
+                       if (output.Length < 1 || output.Length > 63)
+                       {
+                               throw new IDNAException(IDNAException.TOO_LONG);
+                       }
+                       
+                       return output;
+               }
+               
+               /// <summary>
+        /// Converts an ASCII-encoded string to Unicode. Unassigned
+               /// characters are not allowed and STD3 hostnames are enforced. Input
+               /// may be domain name containing dots.
+               /// </summary>
+               /// <param name="input">ASCII input string.</param>
+               /// <returns> Unicode string.</returns>
+               public static string ToUnicode(string input)
+               {
+            input = input.ToLower();
+                       StringBuilder o = new StringBuilder();
+                       StringBuilder h = new StringBuilder();
+                       
+                       for (int i = 0; i < input.Length; i++)
+                       {
+                               char c = input[i];
+                               if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61')
+                               {
+                                       o.Append(ToUnicode(h.ToString(), false, true));
+                                       o.Append(c);
+                                       h = new StringBuilder();
+                               }
+                               else
+                               {
+                                       h.Append(c);
+                               }
+                       }
+                       o.Append(ToUnicode(h.ToString(), false, true));
+                       return o.ToString();
+               }
+               
+               /// <summary>
+        /// Converts an ASCII-encoded string to Unicode.               
+               /// </summary>
+               /// <param name="input">ASCII input string.</param>
+               /// <param name="allowUnassigned">Allow unassigned Unicode characters.</param>
+               /// <param name="useSTD3ASCIIRules">Check that the output conforms to STD3.</param>
+               /// <returns>Unicode string.</returns>
+               public static string ToUnicode(string input, bool allowUnassigned, bool useSTD3ASCIIRules)
+               {
+                       string original = input;
+                       bool nonASCII = false;
+                       
+                       // Step 1: If all code points are inside 0..0x7f, skip to step 3.
+                       
+                       for (int i = 0; i < input.Length; i++)
+                       {
+                               int c = input[i];
+                               if (c > 0x7f)
+                               {
+                                       nonASCII = true;
+                                       break;
+                               }
+                       }
+                       
+                       // Step 2: Perform the Nameprep operation.
+                       
+                       if (nonASCII)
+                       {
+                               try
+                               {
+                                       input = Stringprep.NamePrep(input, allowUnassigned);
+                               }
+                               catch (StringprepException e)
+                               {
+                                       // ToUnicode never fails!
+                                       return original;
+                               }
+                       }
+                       
+                       // Step 3: Verify the sequence starts with the ACE prefix.
+                       
+                       if (!input.StartsWith(ACE_PREFIX))
+                       {
+                               // ToUnicode never fails!
+                               return original;
+                       }
+                       
+                       string stored = input;
+                       
+                       // Step 4: Remove the ACE prefix.
+                       
+                       input = input.Substring(ACE_PREFIX.Length);
+                       
+                       // Step 5: Decode using punycode
+                       
+                       string output;
+                       
+                       try
+                       {
+                               output = Punycode.Decode(input);
+                       }
+                       catch (PunycodeException e)
+                       {
+                               // ToUnicode never fails!
+                               return original;
+                       }
+                       
+                       // Step 6: Apply toASCII
+                       
+                       string ascii;
+                       
+                       try
+                       {
+                               ascii = ToASCII(output, allowUnassigned, useSTD3ASCIIRules);
+                       }
+                       catch (IDNAException e)
+                       {
+                               // ToUnicode never fails!
+                               return original;
+                       }
+                       
+                       // Step 7: Compare case-insensitively.
+                       
+                       if (!ascii.ToUpper().Equals(stored.ToUpper()))
+                       {
+                               // ToUnicode never fails!
+                               return original;
+                       }
+                       
+                       // Step 8: Return the result.
+                       
+                       return output;
+               }
+       }
+}
\ No newline at end of file
diff --git a/csharp/IDNAException.cs b/csharp/IDNAException.cs
new file mode 100644 (file)
index 0000000..a8d9373
--- /dev/null
@@ -0,0 +1,49 @@
+/// <summary>
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+
+namespace Gnu.Inet.Encoding
+{              
+       public class IDNAException : System.Exception
+       {
+               public static string CONTAINS_NON_LDH           = "Contains non-LDH characters.";
+               public static string CONTAINS_HYPHEN            = "Leading or trailing hyphen not allowed.";
+               public static string CONTAINS_ACE_PREFIX        = "ACE prefix (xn--) not allowed.";
+               public static string TOO_LONG                           = "String too long.";
+               
+               public IDNAException(string m) : base(m)
+               {
+               
+               }
+
+               // TODO
+               public IDNAException(StringprepException e) :base( "", e)
+               {
+               }
+               
+               public IDNAException(PunycodeException e) : base( "", e)
+               {
+               }
+       }
+}
\ No newline at end of file
diff --git a/csharp/Makefile.am b/csharp/Makefile.am
new file mode 100644 (file)
index 0000000..a54b8f2
--- /dev/null
@@ -0,0 +1,91 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+CSHARPCOMP = $(SHELL) $(top_builddir)/csharpcomp.sh
+CSHARPCOMPFLAGS =
+
+SOURCES = AssemblyInfo.cs IDNA.cs RFC3454.cs CombiningClass.cs \
+       IDNAException.cs Stringprep.cs Composition.cs NFKC.cs   \
+       StringprepException.cs DecompositionKeys.cs Punycode.cs \
+       DecompositionMappings.cs PunycodeException.cs
+
+SOURCES_GENERATE = generate/AssemblyInfo.cs \
+       generate/GenerateNFKC.cs generate/GenerateRFC3454.cs \
+       generate/HashSet.cs generate/Program.cs generate/Tokenizer.cs
+
+MSVSC = libidn.csproj libidn.csproj.user libidn_PPC.csdproj    \
+       libidn_PPC.csdproj.user libidn_PPC.sln libidn_PPC.suo   \
+       libidn.sln libidn.suo
+
+EXTRA_DIST = $(SOURCES) $(SOURCES_GENERATE) $(MSVSC)
+
+CLEANFILES = Libidn.dll
+
+ALL_LOCAL_TARGETS =
+INSTALLDIRS_LOCAL_TARGETS = 
+INSTALL_DATA_LOCAL_TARGETS =
+UNINSTALL_LOCAL_TARGETS =
+
+if CSHARP
+ALL_LOCAL_TARGETS += Libidn.dll
+INSTALLDIRS_LOCAL_TARGETS += install-dll-dir
+INSTALL_DATA_LOCAL_TARGETS += install-dll
+UNINSTALL_LOCAL_TARGETS += uninstall-dll
+
+Libidn.dll: $(SOURCES)
+       $(CSHARPCOMP) $(CSHARPCOMPFLAGS) -o $@ \
+               `for src in $(SOURCES); do echo $(srcdir)/$$src; done`
+
+SPEC = $(top_srcdir)/doc/specifications
+
+GenerateTables.exe: $(SOURCES_GENERATE)
+       $(CSHARPCOMP) $(CSHARPCOMPFLAGS) -o $@ \
+               `for src in $(SOURCES_GENERATE); do echo $(srcdir)/$$src; done`
+       if ! test -f rfc3454.txt; then \
+               ln -s $(SPEC)/rfc3454.txt . \
+               || cp $(SPEC)/rfc3454.txt .; \
+       fi
+       if ! test -f UnicodeData.txt; then \
+               ln -s $(SPEC)/UnicodeData-3.2.0.txt UnicodeData.txt \
+               || cp $(SPEC)/UnicodeData-3.2.0.txt UnicodeData.txt; \
+       fi
+       if ! test -f CompositionExclusions.txt; then \
+               ln -s $(SPEC)/CompositionExclusions-3.2.0.txt CompositionExclusions.txt \
+               || cp $(SPEC)/CompositionExclusions-3.2.0.txt CompositionExclusions.txt; \
+       fi
+
+RFC3454.cs CombiningClass.cs DecompositionKeys.cs DecompositionMappings.cs Composition.cs: $(GEN_SOURCES)
+       make GenerateTables.exe
+       ./GenerateTables.exe
+
+install-dll-dir:
+       $(mkinstalldirs) $(DESTDIR)$(libdir)
+
+install-dll: install-dll-dir
+       $(INSTALL_DATA) Libidn.dll $(DESTDIR)$(libdir)/Libidn.dll
+
+uninstall-dll:
+       rm -f $(DESTDIR)$(libdir)/Libidn.dll
+endif
+
+all-local: $(ALL_LOCAL_TARGETS)
+install-data-local: $(INSTALL_DATA_LOCAL_TARGETS)
+installdirs-local: $(INSTALLDIRS_LOCAL_TARGETS)
+uninstall-local: $(UNINSTALL_LOCAL_TARGETS)
diff --git a/csharp/Makefile.in b/csharp/Makefile.in
new file mode 100644 (file)
index 0000000..50d7f2f
--- /dev/null
@@ -0,0 +1,732 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@CSHARP_TRUE@am__append_1 = Libidn.dll
+@CSHARP_TRUE@am__append_2 = install-dll-dir
+@CSHARP_TRUE@am__append_3 = install-dll
+@CSHARP_TRUE@am__append_4 = uninstall-dll
+subdir = csharp
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = 
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+CSHARPCOMP = $(SHELL) $(top_builddir)/csharpcomp.sh
+SOURCES = AssemblyInfo.cs IDNA.cs RFC3454.cs CombiningClass.cs \
+       IDNAException.cs Stringprep.cs Composition.cs NFKC.cs   \
+       StringprepException.cs DecompositionKeys.cs Punycode.cs \
+       DecompositionMappings.cs PunycodeException.cs
+
+SOURCES_GENERATE = generate/AssemblyInfo.cs \
+       generate/GenerateNFKC.cs generate/GenerateRFC3454.cs \
+       generate/HashSet.cs generate/Program.cs generate/Tokenizer.cs
+
+MSVSC = libidn.csproj libidn.csproj.user libidn_PPC.csdproj    \
+       libidn_PPC.csdproj.user libidn_PPC.sln libidn_PPC.suo   \
+       libidn.sln libidn.suo
+
+EXTRA_DIST = $(SOURCES) $(SOURCES_GENERATE) $(MSVSC)
+CLEANFILES = Libidn.dll
+ALL_LOCAL_TARGETS = $(am__append_1)
+INSTALLDIRS_LOCAL_TARGETS = $(am__append_2)
+INSTALL_DATA_LOCAL_TARGETS = $(am__append_3)
+UNINSTALL_LOCAL_TARGETS = $(am__append_4)
+@CSHARP_TRUE@SPEC = $(top_srcdir)/doc/specifications
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu csharp/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu csharp/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile all-local
+installdirs: installdirs-local
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+       clean-libtool distclean distclean-generic distclean-libtool \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-data-local \
+       install-dvi install-dvi-am install-exec install-exec-am \
+       install-html install-html-am install-info install-info-am \
+       install-man install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs installdirs-local maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-local
+
+
+@CSHARP_TRUE@Libidn.dll: $(SOURCES)
+@CSHARP_TRUE@  $(CSHARPCOMP) $(CSHARPCOMPFLAGS) -o $@ \
+@CSHARP_TRUE@          `for src in $(SOURCES); do echo $(srcdir)/$$src; done`
+
+@CSHARP_TRUE@GenerateTables.exe: $(SOURCES_GENERATE)
+@CSHARP_TRUE@  $(CSHARPCOMP) $(CSHARPCOMPFLAGS) -o $@ \
+@CSHARP_TRUE@          `for src in $(SOURCES_GENERATE); do echo $(srcdir)/$$src; done`
+@CSHARP_TRUE@  if ! test -f rfc3454.txt; then \
+@CSHARP_TRUE@          ln -s $(SPEC)/rfc3454.txt . \
+@CSHARP_TRUE@          || cp $(SPEC)/rfc3454.txt .; \
+@CSHARP_TRUE@  fi
+@CSHARP_TRUE@  if ! test -f UnicodeData.txt; then \
+@CSHARP_TRUE@          ln -s $(SPEC)/UnicodeData-3.2.0.txt UnicodeData.txt \
+@CSHARP_TRUE@          || cp $(SPEC)/UnicodeData-3.2.0.txt UnicodeData.txt; \
+@CSHARP_TRUE@  fi
+@CSHARP_TRUE@  if ! test -f CompositionExclusions.txt; then \
+@CSHARP_TRUE@          ln -s $(SPEC)/CompositionExclusions-3.2.0.txt CompositionExclusions.txt \
+@CSHARP_TRUE@          || cp $(SPEC)/CompositionExclusions-3.2.0.txt CompositionExclusions.txt; \
+@CSHARP_TRUE@  fi
+
+@CSHARP_TRUE@RFC3454.cs CombiningClass.cs DecompositionKeys.cs DecompositionMappings.cs Composition.cs: $(GEN_SOURCES)
+@CSHARP_TRUE@  make GenerateTables.exe
+@CSHARP_TRUE@  ./GenerateTables.exe
+
+@CSHARP_TRUE@install-dll-dir:
+@CSHARP_TRUE@  $(mkinstalldirs) $(DESTDIR)$(libdir)
+
+@CSHARP_TRUE@install-dll: install-dll-dir
+@CSHARP_TRUE@  $(INSTALL_DATA) Libidn.dll $(DESTDIR)$(libdir)/Libidn.dll
+
+@CSHARP_TRUE@uninstall-dll:
+@CSHARP_TRUE@  rm -f $(DESTDIR)$(libdir)/Libidn.dll
+
+all-local: $(ALL_LOCAL_TARGETS)
+install-data-local: $(INSTALL_DATA_LOCAL_TARGETS)
+installdirs-local: $(INSTALLDIRS_LOCAL_TARGETS)
+uninstall-local: $(UNINSTALL_LOCAL_TARGETS)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/csharp/NFKC.cs b/csharp/NFKC.cs
new file mode 100644 (file)
index 0000000..26831b4
--- /dev/null
@@ -0,0 +1,374 @@
+/// <summary>
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+using System.Text;
+
+namespace Gnu.Inet.Encoding
+{              
+       public class NFKC
+       {
+               /// <summary>
+        /// Applies NFKC normalization to a string.
+        /// </summary>
+               /// <param name="in">The string to normalize.</param>
+               /// <returns> An NFKC normalized string.</returns>
+               public static string NormalizeNFKC(string sbIn)
+               {
+                       StringBuilder sbOut = new StringBuilder();
+                       
+                       for (int i = 0; i < sbIn.Length; i++)
+                       {
+                               char code = sbIn[i];
+                               
+                               // In Unicode 3.0, Hangul was defined as the block from U+AC00
+                               // to U+D7A3, however, since Unicode 3.2 the block extends until
+                               // U+D7AF. The decomposeHangul function only decomposes until
+                               // U+D7A3. Should this be changed?
+                               if (code >= 0xAC00 && code <= 0xD7AF)
+                               {
+                                       sbOut.Append(decomposeHangul(code));
+                               }
+                               else
+                               {
+                                       int index = decomposeIndex(code);
+                                       if (index == - 1)
+                                       {
+                                               sbOut.Append(code);
+                                       }
+                                       else
+                                       {
+                                               sbOut.Append(DecompositionMappings.m[index]);
+                                       }
+                               }
+                       }
+                       
+                       // Bring the stringbuffer into canonical order.
+                       canonicalOrdering(sbOut);
+                       
+                       // Do the canonical composition.
+                       int last_cc = 0;
+                       int last_start = 0;
+                       
+                       for (int i = 0; i < sbOut.Length; i++)
+                       {
+                               int cc = combiningClass(sbOut[i]);
+                               
+                               if (i > 0 && (last_cc == 0 || last_cc != cc))
+                               {
+                                       // Try to combine characters
+                                       char a = sbOut[last_start];
+                                       char b = sbOut[i];
+                                       
+                                       int c = compose(a, b);
+                                       
+                                       if (c != - 1)
+                                       {
+                                               sbOut[last_start] = (char) c;
+                                               //sbOut.deleteCharAt(i);
+                                               sbOut.Remove(i, 1);
+                                               i--;
+                                               
+                                               if (i == last_start)
+                                               {
+                                                       last_cc = 0;
+                                               }
+                                               else
+                                               {
+                                                       last_cc = combiningClass(sbOut[i - 1]);
+                                               }
+                                               continue;
+                                       }
+                               }
+                               
+                               if (cc == 0)
+                               {
+                                       last_start = i;
+                               }
+                               
+                               last_cc = cc;
+                       }
+                       
+                       return sbOut.ToString();
+               }
+               
+               
+               /// <summary>
+        /// Returns the index inside the decomposition table, implemented
+               /// using a binary search.
+               /// </summary>
+               /// <param name="c">Character to look up.</param>
+               /// <returns> Index if found, -1 otherwise.</returns>
+               internal static int decomposeIndex(char c)
+               {
+                       int start = 0;
+                       int end = DecompositionKeys.k.Length / 2;
+                       
+                       while (true)
+                       {
+                               int half = (start + end) / 2;
+                               int code = DecompositionKeys.k[half * 2];
+                               
+                               if (c == code)
+                               {
+                                       return DecompositionKeys.k[half * 2 + 1];
+                               }
+                               if (half == start)
+                               {
+                                       // Character not found
+                                       return - 1;
+                               }
+                               else if (c > code)
+                               {
+                                       start = half;
+                               }
+                               else
+                               {
+                                       end = half;
+                               }
+                       }
+               }
+               
+               /// <summary>
+        /// Returns the combining class of a given character.
+               /// </summary>
+               /// <param name="c">The character.</param>
+               /// <returns> The combining class.</returns>
+               internal static int combiningClass(char c)
+               {
+                       int h = c >> 8;
+                       int l = c & 0xff;
+                       
+                       int i = CombiningClass.i[h];
+                       if (i > - 1)
+                       {
+                               return CombiningClass.c[i, l];
+                       }
+                       else
+                       {
+                               return 0;
+                       }
+               }
+               
+               /// <summary>
+        /// Rearranges characters in a stringbuffer in order to respect the
+               /// canonical ordering properties.
+               /// </summary>
+               /// <param name="The">StringBuffer to rearrange.</param>
+               internal static void  canonicalOrdering(StringBuilder sbIn)
+               {
+                       bool isOrdered = false;
+                       
+                       while (!isOrdered)
+                       {
+                               isOrdered = true;
+                               
+
+                               // 24.10.2005
+                               int lastCC = 0;
+                               if (sbIn.Length > 0)
+                                       lastCC = combiningClass(sbIn[0]);
+                               
+                               for (int i = 0; i < sbIn.Length - 1; i++)
+                               {
+                                       int nextCC = combiningClass(sbIn[i + 1]);
+                                       if (nextCC != 0 && lastCC > nextCC)
+                                       {
+                                               for (int j = i + 1; j > 0; j--)
+                                               {
+                                                       if (combiningClass(sbIn[j - 1]) <= nextCC)
+                                                       {
+                                                               break;
+                                                       }
+                                                       char t = sbIn[j];
+                                                       sbIn[j] = sbIn[j - 1];
+                                                       sbIn[j - 1] = t;
+                                                       isOrdered = false;
+                                               }
+                                               nextCC = lastCC;
+                                       }
+                                       lastCC = nextCC;
+                               }
+                       }
+               }
+               
+               /// <summary>
+        /// Returns the index inside the composition table.            
+               /// </summary>
+               /// <param name="a">Character to look up.</param>
+               /// <returns> Index if found, -1 otherwise.</returns>
+               internal static int composeIndex(char a)
+               {
+                       if (a >> 8 >= Composition.composePage.Length)
+                       {
+                               return - 1;
+                       }
+                       int ap = Composition.composePage[a >> 8];
+                       if (ap == - 1)
+                       {
+                               return - 1;
+                       }
+                       return Composition.composeData[ap, a & 0xff];
+               }
+               
+               /// <summary>
+        /// Tries to compose two characters canonically.
+               /// </summary>
+               /// <param name="a">First character.</param>
+               /// <param name="b">Second character.</param>
+               /// <returns> The composed character or -1 if no composition could be found.</returns>
+               internal static int compose(char a, char b)
+               {
+                       int h = composeHangul(a, b);
+                       if (h != - 1)
+                       {
+                               return h;
+                       }
+                       
+                       int ai = composeIndex(a);
+                       
+                       if (ai >= Composition.singleFirstStart && ai < Composition.singleSecondStart)
+                       {
+                               if (b == Composition.singleFirst[ai - Composition.singleFirstStart, 0])                
+                               {
+                                       return Composition.singleFirst[ai - Composition.singleFirstStart, 1];                    
+                               }
+                               else
+                               {
+                                       return - 1;
+                               }
+                       }
+
+                       
+                       int bi = composeIndex(b);
+                       
+                       if (bi >= Composition.singleSecondStart)
+                       {
+                               if (a == Composition.singleSecond[bi - Composition.singleSecondStart,0])
+                               {
+                                       return Composition.singleSecond[bi - Composition.singleSecondStart,1];
+                               }
+                               else
+                               {
+                                       return - 1;
+                               }
+                       }
+                       
+                       if (ai >= 0 && ai < Composition.multiSecondStart && bi >= Composition.multiSecondStart && bi < Composition.singleFirstStart)
+                       {
+                               char[] f = Composition.multiFirst[ai];
+                               
+                               if (bi - Composition.multiSecondStart < f.Length)
+                               {
+                                       char r = f[bi - Composition.multiSecondStart];
+                                       if (r == 0)
+                                       {
+                                               return - 1;
+                                       }
+                                       else
+                                       {
+                                               return r;
+                                       }
+                               }
+                       }                       
+                       
+                       return - 1;
+               }
+               
+               /// <summary>
+        /// Entire hangul code copied from:
+               /// http://www.unicode.org/unicode/reports/tr15/
+               /// Several hangul specific constants
+               /// </summary>
+               internal const int SBase = 0xAC00;
+               internal const int LBase = 0x1100;
+               internal const int VBase = 0x1161;
+               internal const int TBase = 0x11A7;
+               internal const int LCount = 19;
+               internal const int VCount = 21;
+               internal const int TCount = 28;
+               
+               internal static readonly int NCount = VCount * TCount;
+               
+               internal static readonly int SCount = LCount * NCount;
+               
+               /// <summary>
+        /// Decomposes a hangul character.
+               /// </summary>
+               /// <param name="s">A character to decompose.</param>
+               /// <returns> A string containing the hangul decomposition of the input
+               /// character. If no hangul decomposition can be found, a string
+               /// containing the character itself is returned.</returns>
+               internal static string decomposeHangul(char s)
+               {
+                       int SIndex = s - SBase;
+                       if (SIndex < 0 || SIndex >= SCount)
+                       {
+                               return s.ToString();
+                       }
+                       StringBuilder result = new StringBuilder();
+                       int L = LBase + SIndex / NCount;
+                       int V = VBase + (SIndex % NCount) / TCount;
+                       int T = TBase + SIndex % TCount;
+                       result.Append((char) L);
+                       result.Append((char) V);
+                       if (T != TBase)
+                               result.Append((char) T);
+                       return result.ToString();
+               }
+               
+               /// <summary>
+        /// Composes two hangul characters.
+               /// </summary>
+               /// <param name="a">First character.</param>
+               /// <param name="b">Second character.</param>
+               /// <returns> Returns the composed character or -1 if the two characters cannot be composed.</returns>
+               internal static int composeHangul(char a, char b)
+               {
+                       // 1. check to see if two current characters are L and V
+                       int LIndex = a - LBase;
+                       if (0 <= LIndex && LIndex < LCount)
+                       {
+                               int VIndex = b - VBase;
+                               if (0 <= VIndex && VIndex < VCount)
+                               {
+                                       // make syllable of form LV
+                                       return SBase + (LIndex * VCount + VIndex) * TCount;
+                               }
+                       }
+                       
+                       // 2. check to see if two current characters are LV and T
+                       int SIndex = a - SBase;
+                       if (0 <= SIndex && SIndex < SCount && (SIndex % TCount) == 0)
+                       {
+                               int TIndex = b - TBase;
+                               if (0 <= TIndex && TIndex <= TCount)
+                               {
+                                       // make syllable of form LVT
+                                       return a + TIndex;
+                               }
+                       }
+                       return - 1;
+               }
+       }
+}
\ No newline at end of file
diff --git a/csharp/Punycode.cs b/csharp/Punycode.cs
new file mode 100644 (file)
index 0000000..4a9463a
--- /dev/null
@@ -0,0 +1,299 @@
+/// <summary>
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+using System.Text;
+
+namespace Gnu.Inet.Encoding
+{      
+       
+       public class Punycode
+       {
+               /* Punycode parameters */
+               internal const int TMIN = 1;
+               internal const int TMAX = 26;
+               internal const int BASE = 36;
+               internal const int INITIAL_N = 128;
+               internal const int INITIAL_BIAS = 72;
+               internal const int DAMP = 700;
+               internal const int SKEW = 38;
+               internal const char DELIMITER = '-';
+               
+               /// <summary>
+        /// Punycodes a unicode string.
+               /// </summary>
+               /// <param name="input">Unicode string.</param>
+               /// <returns> Punycoded string.</returns>
+               public static string Encode(string input)
+               {
+                       int n = INITIAL_N;
+                       int delta = 0;
+                       int bias = INITIAL_BIAS;
+                       StringBuilder output = new StringBuilder();
+                       
+                       // Copy all basic code points to the output
+                       int b = 0;
+                       for (int i = 0; i < input.Length; i++)
+                       {
+                               char c = input[i];
+                               if (IsBasic(c))
+                               {
+                                       output.Append(c);
+                                       b++;
+                               }
+                       }
+                       
+                       // Append delimiter
+                       if (b > 0)
+                       {
+                               output.Append(DELIMITER);
+                       }
+                       
+                       int h = b;
+                       while (h < input.Length)
+                       {
+                               int m = System.Int32.MaxValue;
+                               
+                               // Find the minimum code point >= n
+                               for (int i = 0; i < input.Length; i++)
+                               {
+                                       int c = input[i];
+                                       if (c >= n && c < m)
+                                       {
+                                               m = c;
+                                       }
+                               }
+                               
+                               if (m - n > (System.Int32.MaxValue - delta) / (h + 1))
+                               {
+                                       throw new PunycodeException(PunycodeException.OVERFLOW);
+                               }
+                               delta = delta + (m - n) * (h + 1);
+                               n = m;
+                               
+                               for (int j = 0; j < input.Length; j++)
+                               {
+                                       int c = input[j];
+                                       if (c < n)
+                                       {
+                                               delta++;
+                                               if (0 == delta)
+                                               {
+                                                       throw new PunycodeException(PunycodeException.OVERFLOW);
+                                               }
+                                       }
+                                       if (c == n)
+                                       {
+                                               int q = delta;
+                                               
+                                               for (int k = BASE; ; k += BASE)
+                                               {
+                                                       int t;
+                                                       if (k <= bias)
+                                                       {
+                                                               t = TMIN;
+                                                       }
+                                                       else if (k >= bias + TMAX)
+                                                       {
+                                                               t = TMAX;
+                                                       }
+                                                       else
+                                                       {
+                                                               t = k - bias;
+                                                       }
+                                                       if (q < t)
+                                                       {
+                                                               break;
+                                                       }
+                                                       output.Append((char) Digit2Codepoint(t + (q - t) % (BASE - t)));
+                                                       q = (q - t) / (BASE - t);
+                                               }
+                                               
+                                               output.Append((char) Digit2Codepoint(q));
+                                               bias = Adapt(delta, h + 1, h == b);
+                                               delta = 0;
+                                               h++;
+                                       }
+                               }
+                               
+                               delta++;
+                               n++;
+                       }
+                       
+                       return output.ToString();
+               }
+               
+               /// <summary>
+        /// Decode a punycoded string.
+               /// </summary>
+               /// <param name="input">Punycode string</param>
+               /// <returns> Unicode string.</returns>
+               public static string Decode(string input)
+               {
+                       int n = INITIAL_N;
+                       int i = 0;
+                       int bias = INITIAL_BIAS;
+                       StringBuilder output = new StringBuilder();
+                       
+                       int d = input.LastIndexOf((System.Char) DELIMITER);
+                       if (d > 0)
+                       {
+                               for (int j = 0; j < d; j++)
+                               {
+                                       char c = input[j];
+                                       if (!IsBasic(c))
+                                       {
+                                               throw new PunycodeException(PunycodeException.BAD_INPUT);
+                                       }
+                                       output.Append(c);
+                               }
+                               d++;
+                       }
+                       else
+                       {
+                               d = 0;
+                       }
+                       
+                       while (d < input.Length)
+                       {
+                               int oldi = i;
+                               int w = 1;
+                               
+                               for (int k = BASE; ; k += BASE)
+                               {
+                                       if (d == input.Length)
+                                       {
+                                               throw new PunycodeException(PunycodeException.BAD_INPUT);
+                                       }
+                                       int c = input[d++];
+                                       int digit = Codepoint2Digit(c);
+                                       if (digit > (System.Int32.MaxValue - i) / w)
+                                       {
+                                               throw new PunycodeException(PunycodeException.OVERFLOW);
+                                       }
+                                       
+                                       i = i + digit * w;
+                                       
+                                       int t;
+                                       if (k <= bias)
+                                       {
+                                               t = TMIN;
+                                       }
+                                       else if (k >= bias + TMAX)
+                                       {
+                                               t = TMAX;
+                                       }
+                                       else
+                                       {
+                                               t = k - bias;
+                                       }
+                                       if (digit < t)
+                                       {
+                                               break;
+                                       }
+                                       w = w * (BASE - t);
+                               }
+                               
+                               bias = Adapt(i - oldi, output.Length + 1, oldi == 0);
+                               
+                               if (i / (output.Length + 1) > Int32.MaxValue - n)
+                               {
+                                       throw new PunycodeException(PunycodeException.OVERFLOW);
+                               }
+                               
+                               n = n + i / (output.Length + 1);
+                               i = i % (output.Length + 1);
+                               // following overload is not supported on CF
+                               //output.Insert(i,(char) n);
+                               output.Insert(i, new char[1] { (char) n });
+                               i++;
+                       }
+                       
+                       return output.ToString();
+               }
+               
+               public static int Adapt(int delta, int numpoints, bool first)
+               {
+                       if (first)
+                       {
+                               delta = delta / DAMP;
+                       }
+                       else
+                       {
+                               delta = delta / 2;
+                       }
+                       
+                       delta = delta + (delta / numpoints);
+                       
+                       int k = 0;
+                       while (delta > ((BASE - TMIN) * TMAX) / 2)
+                       {
+                               delta = delta / (BASE - TMIN);
+                               k = k + BASE;
+                       }
+                       
+                       return k + ((BASE - TMIN + 1) * delta) / (delta + SKEW);
+               }
+               
+               public static bool IsBasic(char c)
+               {
+                       return c < 0x80;
+               }
+               
+               public static int Digit2Codepoint(int d)
+               {
+                       if (d < 26)
+                       {
+                               // 0..25 : 'a'..'z'
+                               return d + 'a';
+                       }
+                       else if (d < 36)
+                       {
+                               // 26..35 : '0'..'9';
+                               return d - 26 + '0';
+                       }
+                       else
+                       {
+                               throw new PunycodeException(PunycodeException.BAD_INPUT);
+                       }
+               }
+               
+               public static int Codepoint2Digit(int c)
+               {
+                       if (c - '0' < 10)
+                       {
+                               // '0'..'9' : 26..35
+                               return c - '0' + 26;
+                       }
+                       else if (c - 'a' < 26)
+                       {
+                               // 'a'..'z' : 0..25
+                               return c - 'a';
+                       }
+                       else
+                       {
+                               throw new PunycodeException(PunycodeException.BAD_INPUT);
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/csharp/PunycodeException.cs b/csharp/PunycodeException.cs
new file mode 100644 (file)
index 0000000..d1ec0f6
--- /dev/null
@@ -0,0 +1,42 @@
+/// <summary>
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+
+namespace Gnu.Inet.Encoding
+{
+       
+       public class PunycodeException : Exception
+       {
+               public static string OVERFLOW   = "Overflow.";
+               public static string BAD_INPUT  = "Bad input.";
+               
+               /// <summary>
+        /// Creates a new PunycodeException.
+               /// </summary>
+        /// <param name="message">message</param>
+               public PunycodeException(string message) : base(message)
+               {
+               }
+       }
+}
\ No newline at end of file
diff --git a/csharp/RFC3454.cs b/csharp/RFC3454.cs
new file mode 100644 (file)
index 0000000..e07a160
--- /dev/null
@@ -0,0 +1,4275 @@
+// Do not edit !!!
+// this file is generated automatically
+
+using System;
+
+namespace Gnu.Inet.Encoding{
+
+public class RFC3454
+{
+  public static char[][] A1 = new char[][] {\r
+    new char[] { '\u0221' },   /* 0221 */\r
+    new char[] { '\u0234', '\u024F' }, /* 0234-024F */\r
+    new char[] { '\u02AE', '\u02AF' }, /* 02AE-02AF */\r
+    new char[] { '\u02EF', '\u02FF' }, /* 02EF-02FF */\r
+    new char[] { '\u0350', '\u035F' }, /* 0350-035F */\r
+    new char[] { '\u0370', '\u0373' }, /* 0370-0373 */\r
+    new char[] { '\u0376', '\u0379' }, /* 0376-0379 */\r
+    new char[] { '\u037B', '\u037D' }, /* 037B-037D */\r
+    new char[] { '\u037F', '\u0383' }, /* 037F-0383 */\r
+    new char[] { '\u038B' },   /* 038B */\r
+    new char[] { '\u038D' },   /* 038D */\r
+    new char[] { '\u03A2' },   /* 03A2 */\r
+    new char[] { '\u03CF' },   /* 03CF */\r
+    new char[] { '\u03F7', '\u03FF' }, /* 03F7-03FF */\r
+    new char[] { '\u0487' },   /* 0487 */\r
+    new char[] { '\u04CF' },   /* 04CF */\r
+    new char[] { '\u04F6', '\u04F7' }, /* 04F6-04F7 */\r
+    new char[] { '\u04FA', '\u04FF' }, /* 04FA-04FF */\r
+    new char[] { '\u0510', '\u0530' }, /* 0510-0530 */\r
+    new char[] { '\u0557', '\u0558' }, /* 0557-0558 */\r
+    new char[] { '\u0560' },   /* 0560 */\r
+    new char[] { '\u0588' },   /* 0588 */\r
+    new char[] { '\u058B', '\u0590' }, /* 058B-0590 */\r
+    new char[] { '\u05A2' },   /* 05A2 */\r
+    new char[] { '\u05BA' },   /* 05BA */\r
+    new char[] { '\u05C5', '\u05CF' }, /* 05C5-05CF */\r
+    new char[] { '\u05EB', '\u05EF' }, /* 05EB-05EF */\r
+    new char[] { '\u05F5', '\u060B' }, /* 05F5-060B */\r
+    new char[] { '\u060D', '\u061A' }, /* 060D-061A */\r
+    new char[] { '\u061C', '\u061E' }, /* 061C-061E */\r
+    new char[] { '\u0620' },   /* 0620 */\r
+    new char[] { '\u063B', '\u063F' }, /* 063B-063F */\r
+    new char[] { '\u0656', '\u065F' }, /* 0656-065F */\r
+    new char[] { '\u06EE', '\u06EF' }, /* 06EE-06EF */\r
+    new char[] { '\u06FF' },   /* 06FF */\r
+    new char[] { '\u070E' },   /* 070E */\r
+    new char[] { '\u072D', '\u072F' }, /* 072D-072F */\r
+    new char[] { '\u074B', '\u077F' }, /* 074B-077F */\r
+    new char[] { '\u07B2', '\u0900' }, /* 07B2-0900 */\r
+    new char[] { '\u0904' },   /* 0904 */\r
+    new char[] { '\u093A', '\u093B' }, /* 093A-093B */\r
+    new char[] { '\u094E', '\u094F' }, /* 094E-094F */\r
+    new char[] { '\u0955', '\u0957' }, /* 0955-0957 */\r
+    new char[] { '\u0971', '\u0980' }, /* 0971-0980 */\r
+    new char[] { '\u0984' },   /* 0984 */\r
+    new char[] { '\u098D', '\u098E' }, /* 098D-098E */\r
+    new char[] { '\u0991', '\u0992' }, /* 0991-0992 */\r
+    new char[] { '\u09A9' },   /* 09A9 */\r
+    new char[] { '\u09B1' },   /* 09B1 */\r
+    new char[] { '\u09B3', '\u09B5' }, /* 09B3-09B5 */\r
+    new char[] { '\u09BA', '\u09BB' }, /* 09BA-09BB */\r
+    new char[] { '\u09BD' },   /* 09BD */\r
+    new char[] { '\u09C5', '\u09C6' }, /* 09C5-09C6 */\r
+    new char[] { '\u09C9', '\u09CA' }, /* 09C9-09CA */\r
+    new char[] { '\u09CE', '\u09D6' }, /* 09CE-09D6 */\r
+    new char[] { '\u09D8', '\u09DB' }, /* 09D8-09DB */\r
+    new char[] { '\u09DE' },   /* 09DE */\r
+    new char[] { '\u09E4', '\u09E5' }, /* 09E4-09E5 */\r
+    new char[] { '\u09FB', '\u0A01' }, /* 09FB-0A01 */\r
+    new char[] { '\u0A03', '\u0A04' }, /* 0A03-0A04 */\r
+    new char[] { '\u0A0B', '\u0A0E' }, /* 0A0B-0A0E */\r
+    new char[] { '\u0A11', '\u0A12' }, /* 0A11-0A12 */\r
+    new char[] { '\u0A29' },   /* 0A29 */\r
+    new char[] { '\u0A31' },   /* 0A31 */\r
+    new char[] { '\u0A34' },   /* 0A34 */\r
+    new char[] { '\u0A37' },   /* 0A37 */\r
+    new char[] { '\u0A3A', '\u0A3B' }, /* 0A3A-0A3B */\r
+    new char[] { '\u0A3D' },   /* 0A3D */\r
+    new char[] { '\u0A43', '\u0A46' }, /* 0A43-0A46 */\r
+    new char[] { '\u0A49', '\u0A4A' }, /* 0A49-0A4A */\r
+    new char[] { '\u0A4E', '\u0A58' }, /* 0A4E-0A58 */\r
+    new char[] { '\u0A5D' },   /* 0A5D */\r
+    new char[] { '\u0A5F', '\u0A65' }, /* 0A5F-0A65 */\r
+    new char[] { '\u0A75', '\u0A80' }, /* 0A75-0A80 */\r
+    new char[] { '\u0A84' },   /* 0A84 */\r
+    new char[] { '\u0A8C' },   /* 0A8C */\r
+    new char[] { '\u0A8E' },   /* 0A8E */\r
+    new char[] { '\u0A92' },   /* 0A92 */\r
+    new char[] { '\u0AA9' },   /* 0AA9 */\r
+    new char[] { '\u0AB1' },   /* 0AB1 */\r
+    new char[] { '\u0AB4' },   /* 0AB4 */\r
+    new char[] { '\u0ABA', '\u0ABB' }, /* 0ABA-0ABB */\r
+    new char[] { '\u0AC6' },   /* 0AC6 */\r
+    new char[] { '\u0ACA' },   /* 0ACA */\r
+    new char[] { '\u0ACE', '\u0ACF' }, /* 0ACE-0ACF */\r
+    new char[] { '\u0AD1', '\u0ADF' }, /* 0AD1-0ADF */\r
+    new char[] { '\u0AE1', '\u0AE5' }, /* 0AE1-0AE5 */\r
+    new char[] { '\u0AF0', '\u0B00' }, /* 0AF0-0B00 */\r
+    new char[] { '\u0B04' },   /* 0B04 */\r
+    new char[] { '\u0B0D', '\u0B0E' }, /* 0B0D-0B0E */\r
+    new char[] { '\u0B11', '\u0B12' }, /* 0B11-0B12 */\r
+    new char[] { '\u0B29' },   /* 0B29 */\r
+    new char[] { '\u0B31' },   /* 0B31 */\r
+    new char[] { '\u0B34', '\u0B35' }, /* 0B34-0B35 */\r
+    new char[] { '\u0B3A', '\u0B3B' }, /* 0B3A-0B3B */\r
+    new char[] { '\u0B44', '\u0B46' }, /* 0B44-0B46 */\r
+    new char[] { '\u0B49', '\u0B4A' }, /* 0B49-0B4A */\r
+    new char[] { '\u0B4E', '\u0B55' }, /* 0B4E-0B55 */\r
+    new char[] { '\u0B58', '\u0B5B' }, /* 0B58-0B5B */\r
+    new char[] { '\u0B5E' },   /* 0B5E */\r
+    new char[] { '\u0B62', '\u0B65' }, /* 0B62-0B65 */\r
+    new char[] { '\u0B71', '\u0B81' }, /* 0B71-0B81 */\r
+    new char[] { '\u0B84' },   /* 0B84 */\r
+    new char[] { '\u0B8B', '\u0B8D' }, /* 0B8B-0B8D */\r
+    new char[] { '\u0B91' },   /* 0B91 */\r
+    new char[] { '\u0B96', '\u0B98' }, /* 0B96-0B98 */\r
+    new char[] { '\u0B9B' },   /* 0B9B */\r
+    new char[] { '\u0B9D' },   /* 0B9D */\r
+    new char[] { '\u0BA0', '\u0BA2' }, /* 0BA0-0BA2 */\r
+    new char[] { '\u0BA5', '\u0BA7' }, /* 0BA5-0BA7 */\r
+    new char[] { '\u0BAB', '\u0BAD' }, /* 0BAB-0BAD */\r
+    new char[] { '\u0BB6' },   /* 0BB6 */\r
+    new char[] { '\u0BBA', '\u0BBD' }, /* 0BBA-0BBD */\r
+    new char[] { '\u0BC3', '\u0BC5' }, /* 0BC3-0BC5 */\r
+    new char[] { '\u0BC9' },   /* 0BC9 */\r
+    new char[] { '\u0BCE', '\u0BD6' }, /* 0BCE-0BD6 */\r
+    new char[] { '\u0BD8', '\u0BE6' }, /* 0BD8-0BE6 */\r
+    new char[] { '\u0BF3', '\u0C00' }, /* 0BF3-0C00 */\r
+    new char[] { '\u0C04' },   /* 0C04 */\r
+    new char[] { '\u0C0D' },   /* 0C0D */\r
+    new char[] { '\u0C11' },   /* 0C11 */\r
+    new char[] { '\u0C29' },   /* 0C29 */\r
+    new char[] { '\u0C34' },   /* 0C34 */\r
+    new char[] { '\u0C3A', '\u0C3D' }, /* 0C3A-0C3D */\r
+    new char[] { '\u0C45' },   /* 0C45 */\r
+    new char[] { '\u0C49' },   /* 0C49 */\r
+    new char[] { '\u0C4E', '\u0C54' }, /* 0C4E-0C54 */\r
+    new char[] { '\u0C57', '\u0C5F' }, /* 0C57-0C5F */\r
+    new char[] { '\u0C62', '\u0C65' }, /* 0C62-0C65 */\r
+    new char[] { '\u0C70', '\u0C81' }, /* 0C70-0C81 */\r
+    new char[] { '\u0C84' },   /* 0C84 */\r
+    new char[] { '\u0C8D' },   /* 0C8D */\r
+    new char[] { '\u0C91' },   /* 0C91 */\r
+    new char[] { '\u0CA9' },   /* 0CA9 */\r
+    new char[] { '\u0CB4' },   /* 0CB4 */\r
+    new char[] { '\u0CBA', '\u0CBD' }, /* 0CBA-0CBD */\r
+    new char[] { '\u0CC5' },   /* 0CC5 */\r
+    new char[] { '\u0CC9' },   /* 0CC9 */\r
+    new char[] { '\u0CCE', '\u0CD4' }, /* 0CCE-0CD4 */\r
+    new char[] { '\u0CD7', '\u0CDD' }, /* 0CD7-0CDD */\r
+    new char[] { '\u0CDF' },   /* 0CDF */\r
+    new char[] { '\u0CE2', '\u0CE5' }, /* 0CE2-0CE5 */\r
+    new char[] { '\u0CF0', '\u0D01' }, /* 0CF0-0D01 */\r
+    new char[] { '\u0D04' },   /* 0D04 */\r
+    new char[] { '\u0D0D' },   /* 0D0D */\r
+    new char[] { '\u0D11' },   /* 0D11 */\r
+    new char[] { '\u0D29' },   /* 0D29 */\r
+    new char[] { '\u0D3A', '\u0D3D' }, /* 0D3A-0D3D */\r
+    new char[] { '\u0D44', '\u0D45' }, /* 0D44-0D45 */\r
+    new char[] { '\u0D49' },   /* 0D49 */\r
+    new char[] { '\u0D4E', '\u0D56' }, /* 0D4E-0D56 */\r
+    new char[] { '\u0D58', '\u0D5F' }, /* 0D58-0D5F */\r
+    new char[] { '\u0D62', '\u0D65' }, /* 0D62-0D65 */\r
+    new char[] { '\u0D70', '\u0D81' }, /* 0D70-0D81 */\r
+    new char[] { '\u0D84' },   /* 0D84 */\r
+    new char[] { '\u0D97', '\u0D99' }, /* 0D97-0D99 */\r
+    new char[] { '\u0DB2' },   /* 0DB2 */\r
+    new char[] { '\u0DBC' },   /* 0DBC */\r
+    new char[] { '\u0DBE', '\u0DBF' }, /* 0DBE-0DBF */\r
+    new char[] { '\u0DC7', '\u0DC9' }, /* 0DC7-0DC9 */\r
+    new char[] { '\u0DCB', '\u0DCE' }, /* 0DCB-0DCE */\r
+    new char[] { '\u0DD5' },   /* 0DD5 */\r
+    new char[] { '\u0DD7' },   /* 0DD7 */\r
+    new char[] { '\u0DE0', '\u0DF1' }, /* 0DE0-0DF1 */\r
+    new char[] { '\u0DF5', '\u0E00' }, /* 0DF5-0E00 */\r
+    new char[] { '\u0E3B', '\u0E3E' }, /* 0E3B-0E3E */\r
+    new char[] { '\u0E5C', '\u0E80' }, /* 0E5C-0E80 */\r
+    new char[] { '\u0E83' },   /* 0E83 */\r
+    new char[] { '\u0E85', '\u0E86' }, /* 0E85-0E86 */\r
+    new char[] { '\u0E89' },   /* 0E89 */\r
+    new char[] { '\u0E8B', '\u0E8C' }, /* 0E8B-0E8C */\r
+    new char[] { '\u0E8E', '\u0E93' }, /* 0E8E-0E93 */\r
+    new char[] { '\u0E98' },   /* 0E98 */\r
+    new char[] { '\u0EA0' },   /* 0EA0 */\r
+    new char[] { '\u0EA4' },   /* 0EA4 */\r
+    new char[] { '\u0EA6' },   /* 0EA6 */\r
+    new char[] { '\u0EA8', '\u0EA9' }, /* 0EA8-0EA9 */\r
+    new char[] { '\u0EAC' },   /* 0EAC */\r
+    new char[] { '\u0EBA' },   /* 0EBA */\r
+    new char[] { '\u0EBE', '\u0EBF' }, /* 0EBE-0EBF */\r
+    new char[] { '\u0EC5' },   /* 0EC5 */\r
+    new char[] { '\u0EC7' },   /* 0EC7 */\r
+    new char[] { '\u0ECE', '\u0ECF' }, /* 0ECE-0ECF */\r
+    new char[] { '\u0EDA', '\u0EDB' }, /* 0EDA-0EDB */\r
+    new char[] { '\u0EDE', '\u0EFF' }, /* 0EDE-0EFF */\r
+    new char[] { '\u0F48' },   /* 0F48 */\r
+    new char[] { '\u0F6B', '\u0F70' }, /* 0F6B-0F70 */\r
+    new char[] { '\u0F8C', '\u0F8F' }, /* 0F8C-0F8F */\r
+    new char[] { '\u0F98' },   /* 0F98 */\r
+    new char[] { '\u0FBD' },   /* 0FBD */\r
+    new char[] { '\u0FCD', '\u0FCE' }, /* 0FCD-0FCE */\r
+    new char[] { '\u0FD0', '\u0FFF' }, /* 0FD0-0FFF */\r
+    new char[] { '\u1022' },   /* 1022 */\r
+    new char[] { '\u1028' },   /* 1028 */\r
+    new char[] { '\u102B' },   /* 102B */\r
+    new char[] { '\u1033', '\u1035' }, /* 1033-1035 */\r
+    new char[] { '\u103A', '\u103F' }, /* 103A-103F */\r
+    new char[] { '\u105A', '\u109F' }, /* 105A-109F */\r
+    new char[] { '\u10C6', '\u10CF' }, /* 10C6-10CF */\r
+    new char[] { '\u10F9', '\u10FA' }, /* 10F9-10FA */\r
+    new char[] { '\u10FC', '\u10FF' }, /* 10FC-10FF */\r
+    new char[] { '\u115A', '\u115E' }, /* 115A-115E */\r
+    new char[] { '\u11A3', '\u11A7' }, /* 11A3-11A7 */\r
+    new char[] { '\u11FA', '\u11FF' }, /* 11FA-11FF */\r
+    new char[] { '\u1207' },   /* 1207 */\r
+    new char[] { '\u1247' },   /* 1247 */\r
+    new char[] { '\u1249' },   /* 1249 */\r
+    new char[] { '\u124E', '\u124F' }, /* 124E-124F */\r
+    new char[] { '\u1257' },   /* 1257 */\r
+    new char[] { '\u1259' },   /* 1259 */\r
+    new char[] { '\u125E', '\u125F' }, /* 125E-125F */\r
+    new char[] { '\u1287' },   /* 1287 */\r
+    new char[] { '\u1289' },   /* 1289 */\r
+    new char[] { '\u128E', '\u128F' }, /* 128E-128F */\r
+    new char[] { '\u12AF' },   /* 12AF */\r
+    new char[] { '\u12B1' },   /* 12B1 */\r
+    new char[] { '\u12B6', '\u12B7' }, /* 12B6-12B7 */\r
+    new char[] { '\u12BF' },   /* 12BF */\r
+    new char[] { '\u12C1' },   /* 12C1 */\r
+    new char[] { '\u12C6', '\u12C7' }, /* 12C6-12C7 */\r
+    new char[] { '\u12CF' },   /* 12CF */\r
+    new char[] { '\u12D7' },   /* 12D7 */\r
+    new char[] { '\u12EF' },   /* 12EF */\r
+    new char[] { '\u130F' },   /* 130F */\r
+    new char[] { '\u1311' },   /* 1311 */\r
+    new char[] { '\u1316', '\u1317' }, /* 1316-1317 */\r
+    new char[] { '\u131F' },   /* 131F */\r
+    new char[] { '\u1347' },   /* 1347 */\r
+    new char[] { '\u135B', '\u1360' }, /* 135B-1360 */\r
+    new char[] { '\u137D', '\u139F' }, /* 137D-139F */\r
+    new char[] { '\u13F5', '\u1400' }, /* 13F5-1400 */\r
+    new char[] { '\u1677', '\u167F' }, /* 1677-167F */\r
+    new char[] { '\u169D', '\u169F' }, /* 169D-169F */\r
+    new char[] { '\u16F1', '\u16FF' }, /* 16F1-16FF */\r
+    new char[] { '\u170D' },   /* 170D */\r
+    new char[] { '\u1715', '\u171F' }, /* 1715-171F */\r
+    new char[] { '\u1737', '\u173F' }, /* 1737-173F */\r
+    new char[] { '\u1754', '\u175F' }, /* 1754-175F */\r
+    new char[] { '\u176D' },   /* 176D */\r
+    new char[] { '\u1771' },   /* 1771 */\r
+    new char[] { '\u1774', '\u177F' }, /* 1774-177F */\r
+    new char[] { '\u17DD', '\u17DF' }, /* 17DD-17DF */\r
+    new char[] { '\u17EA', '\u17FF' }, /* 17EA-17FF */\r
+    new char[] { '\u180F' },   /* 180F */\r
+    new char[] { '\u181A', '\u181F' }, /* 181A-181F */\r
+    new char[] { '\u1878', '\u187F' }, /* 1878-187F */\r
+    new char[] { '\u18AA', '\u1DFF' }, /* 18AA-1DFF */\r
+    new char[] { '\u1E9C', '\u1E9F' }, /* 1E9C-1E9F */\r
+    new char[] { '\u1EFA', '\u1EFF' }, /* 1EFA-1EFF */\r
+    new char[] { '\u1F16', '\u1F17' }, /* 1F16-1F17 */\r
+    new char[] { '\u1F1E', '\u1F1F' }, /* 1F1E-1F1F */\r
+    new char[] { '\u1F46', '\u1F47' }, /* 1F46-1F47 */\r
+    new char[] { '\u1F4E', '\u1F4F' }, /* 1F4E-1F4F */\r
+    new char[] { '\u1F58' },   /* 1F58 */\r
+    new char[] { '\u1F5A' },   /* 1F5A */\r
+    new char[] { '\u1F5C' },   /* 1F5C */\r
+    new char[] { '\u1F5E' },   /* 1F5E */\r
+    new char[] { '\u1F7E', '\u1F7F' }, /* 1F7E-1F7F */\r
+    new char[] { '\u1FB5' },   /* 1FB5 */\r
+    new char[] { '\u1FC5' },   /* 1FC5 */\r
+    new char[] { '\u1FD4', '\u1FD5' }, /* 1FD4-1FD5 */\r
+    new char[] { '\u1FDC' },   /* 1FDC */\r
+    new char[] { '\u1FF0', '\u1FF1' }, /* 1FF0-1FF1 */\r
+    new char[] { '\u1FF5' },   /* 1FF5 */\r
+    new char[] { '\u1FFF' },   /* 1FFF */\r
+    new char[] { '\u2053', '\u2056' }, /* 2053-2056 */\r
+    new char[] { '\u2058', '\u205E' }, /* 2058-205E */\r
+    new char[] { '\u2064', '\u2069' }, /* 2064-2069 */\r
+    new char[] { '\u2072', '\u2073' }, /* 2072-2073 */\r
+    new char[] { '\u208F', '\u209F' }, /* 208F-209F */\r
+    new char[] { '\u20B2', '\u20CF' }, /* 20B2-20CF */\r
+    new char[] { '\u20EB', '\u20FF' }, /* 20EB-20FF */\r
+    new char[] { '\u213B', '\u213C' }, /* 213B-213C */\r
+    new char[] { '\u214C', '\u2152' }, /* 214C-2152 */\r
+    new char[] { '\u2184', '\u218F' }, /* 2184-218F */\r
+    new char[] { '\u23CF', '\u23FF' }, /* 23CF-23FF */\r
+    new char[] { '\u2427', '\u243F' }, /* 2427-243F */\r
+    new char[] { '\u244B', '\u245F' }, /* 244B-245F */\r
+    new char[] { '\u24FF' },   /* 24FF */\r
+    new char[] { '\u2614', '\u2615' }, /* 2614-2615 */\r
+    new char[] { '\u2618' },   /* 2618 */\r
+    new char[] { '\u267E', '\u267F' }, /* 267E-267F */\r
+    new char[] { '\u268A', '\u2700' }, /* 268A-2700 */\r
+    new char[] { '\u2705' },   /* 2705 */\r
+    new char[] { '\u270A', '\u270B' }, /* 270A-270B */\r
+    new char[] { '\u2728' },   /* 2728 */\r
+    new char[] { '\u274C' },   /* 274C */\r
+    new char[] { '\u274E' },   /* 274E */\r
+    new char[] { '\u2753', '\u2755' }, /* 2753-2755 */\r
+    new char[] { '\u2757' },   /* 2757 */\r
+    new char[] { '\u275F', '\u2760' }, /* 275F-2760 */\r
+    new char[] { '\u2795', '\u2797' }, /* 2795-2797 */\r
+    new char[] { '\u27B0' },   /* 27B0 */\r
+    new char[] { '\u27BF', '\u27CF' }, /* 27BF-27CF */\r
+    new char[] { '\u27EC', '\u27EF' }, /* 27EC-27EF */\r
+    new char[] { '\u2B00', '\u2E7F' }, /* 2B00-2E7F */\r
+    new char[] { '\u2E9A' },   /* 2E9A */\r
+    new char[] { '\u2EF4', '\u2EFF' }, /* 2EF4-2EFF */\r
+    new char[] { '\u2FD6', '\u2FEF' }, /* 2FD6-2FEF */\r
+    new char[] { '\u2FFC', '\u2FFF' }, /* 2FFC-2FFF */\r
+    new char[] { '\u3040' },   /* 3040 */\r
+    new char[] { '\u3097', '\u3098' }, /* 3097-3098 */\r
+    new char[] { '\u3100', '\u3104' }, /* 3100-3104 */\r
+    new char[] { '\u312D', '\u3130' }, /* 312D-3130 */\r
+    new char[] { '\u318F' },   /* 318F */\r
+    new char[] { '\u31B8', '\u31EF' }, /* 31B8-31EF */\r
+    new char[] { '\u321D', '\u321F' }, /* 321D-321F */\r
+    new char[] { '\u3244', '\u3250' }, /* 3244-3250 */\r
+    new char[] { '\u327C', '\u327E' }, /* 327C-327E */\r
+    new char[] { '\u32CC', '\u32CF' }, /* 32CC-32CF */\r
+    new char[] { '\u32FF' },   /* 32FF */\r
+    new char[] { '\u3377', '\u337A' }, /* 3377-337A */\r
+    new char[] { '\u33DE', '\u33DF' }, /* 33DE-33DF */\r
+    new char[] { '\u33FF' },   /* 33FF */\r
+    new char[] { '\u4DB6', '\u4DFF' }, /* 4DB6-4DFF */\r
+    new char[] { '\u9FA6', '\u9FFF' }, /* 9FA6-9FFF */\r
+    new char[] { '\uA48D', '\uA48F' }, /* A48D-A48F */\r
+    new char[] { '\uA4C7', '\uABFF' }, /* A4C7-ABFF */\r
+    new char[] { '\uD7A4', '\uD7FF' }, /* D7A4-D7FF */\r
+    new char[] { '\uFA2E', '\uFA2F' }, /* FA2E-FA2F */\r
+    new char[] { '\uFA6B', '\uFAFF' }, /* FA6B-FAFF */\r
+    new char[] { '\uFB07', '\uFB12' }, /* FB07-FB12 */\r
+    new char[] { '\uFB18', '\uFB1C' }, /* FB18-FB1C */\r
+    new char[] { '\uFB37' },   /* FB37 */\r
+    new char[] { '\uFB3D' },   /* FB3D */\r
+    new char[] { '\uFB3F' },   /* FB3F */\r
+    new char[] { '\uFB42' },   /* FB42 */\r
+    new char[] { '\uFB45' },   /* FB45 */\r
+    new char[] { '\uFBB2', '\uFBD2' }, /* FBB2-FBD2 */\r
+    new char[] { '\uFD40', '\uFD4F' }, /* FD40-FD4F */\r
+    new char[] { '\uFD90', '\uFD91' }, /* FD90-FD91 */\r
+    new char[] { '\uFDC8', '\uFDCF' }, /* FDC8-FDCF */\r
+    new char[] { '\uFDFD', '\uFDFF' }, /* FDFD-FDFF */\r
+    new char[] { '\uFE10', '\uFE1F' }, /* FE10-FE1F */\r
+    new char[] { '\uFE24', '\uFE2F' }, /* FE24-FE2F */\r
+    new char[] { '\uFE47', '\uFE48' }, /* FE47-FE48 */\r
+    new char[] { '\uFE53' },   /* FE53 */\r
+    new char[] { '\uFE67' },   /* FE67 */\r
+    new char[] { '\uFE6C', '\uFE6F' }, /* FE6C-FE6F */\r
+    new char[] { '\uFE75' },   /* FE75 */\r
+    new char[] { '\uFEFD', '\uFEFE' }, /* FEFD-FEFE */\r
+    new char[] { '\uFF00' },   /* FF00 */\r
+    new char[] { '\uFFBF', '\uFFC1' }, /* FFBF-FFC1 */\r
+    new char[] { '\uFFC8', '\uFFC9' }, /* FFC8-FFC9 */\r
+    new char[] { '\uFFD0', '\uFFD1' }, /* FFD0-FFD1 */\r
+    new char[] { '\uFFD8', '\uFFD9' }, /* FFD8-FFD9 */\r
+    new char[] { '\uFFDD', '\uFFDF' }, /* FFDD-FFDF */\r
+    new char[] { '\uFFE7' },   /* FFE7 */\r
+    new char[] { '\uFFEF', '\uFFF8' }, /* FFEF-FFF8 */\r
+       /* Skip characters outside the range of .NET unicode 10000-102FF */
+       /* Skip characters outside the range of .NET unicode 1031F */
+       /* Skip characters outside the range of .NET unicode 10324-1032F */
+       /* Skip characters outside the range of .NET unicode 1034B-103FF */
+       /* Skip characters outside the range of .NET unicode 10426-10427 */
+       /* Skip characters outside the range of .NET unicode 1044E-1CFFF */
+       /* Skip characters outside the range of .NET unicode 1D0F6-1D0FF */
+       /* Skip characters outside the range of .NET unicode 1D127-1D129 */
+       /* Skip characters outside the range of .NET unicode 1D1DE-1D3FF */
+       /* Skip characters outside the range of .NET unicode 1D455 */
+       /* Skip characters outside the range of .NET unicode 1D49D */
+       /* Skip characters outside the range of .NET unicode 1D4A0-1D4A1 */
+       /* Skip characters outside the range of .NET unicode 1D4A3-1D4A4 */
+       /* Skip characters outside the range of .NET unicode 1D4A7-1D4A8 */
+       /* Skip characters outside the range of .NET unicode 1D4AD */
+       /* Skip characters outside the range of .NET unicode 1D4BA */
+       /* Skip characters outside the range of .NET unicode 1D4BC */
+       /* Skip characters outside the range of .NET unicode 1D4C1 */
+       /* Skip characters outside the range of .NET unicode 1D4C4 */
+       /* Skip characters outside the range of .NET unicode 1D506 */
+       /* Skip characters outside the range of .NET unicode 1D50B-1D50C */
+       /* Skip characters outside the range of .NET unicode 1D515 */
+       /* Skip characters outside the range of .NET unicode 1D51D */
+       /* Skip characters outside the range of .NET unicode 1D53A */
+       /* Skip characters outside the range of .NET unicode 1D53F */
+       /* Skip characters outside the range of .NET unicode 1D545 */
+       /* Skip characters outside the range of .NET unicode 1D547-1D549 */
+       /* Skip characters outside the range of .NET unicode 1D551 */
+       /* Skip characters outside the range of .NET unicode 1D6A4-1D6A7 */
+       /* Skip characters outside the range of .NET unicode 1D7CA-1D7CD */
+       /* Skip characters outside the range of .NET unicode 1D800-1FFFD */
+       /* Skip characters outside the range of .NET unicode 2A6D7-2F7FF */
+       /* Skip characters outside the range of .NET unicode 2FA1E-2FFFD */
+       /* Skip characters outside the range of .NET unicode 30000-3FFFD */
+       /* Skip characters outside the range of .NET unicode 40000-4FFFD */
+       /* Skip characters outside the range of .NET unicode 50000-5FFFD */
+       /* Skip characters outside the range of .NET unicode 60000-6FFFD */
+       /* Skip characters outside the range of .NET unicode 70000-7FFFD */
+       /* Skip characters outside the range of .NET unicode 80000-8FFFD */
+       /* Skip characters outside the range of .NET unicode 90000-9FFFD */
+       /* Skip characters outside the range of .NET unicode A0000-AFFFD */
+       /* Skip characters outside the range of .NET unicode B0000-BFFFD */
+       /* Skip characters outside the range of .NET unicode C0000-CFFFD */
+       /* Skip characters outside the range of .NET unicode D0000-DFFFD */
+       /* Skip characters outside the range of .NET unicode E0000 */
+       /* Skip characters outside the range of .NET unicode E0002-E001F */
+       /* Skip characters outside the range of .NET unicode E0080-EFFFD */
+  };\r
+
+  public static char[] B1 = new char[] {\r
+    '\u00AD',  /* 00AD; ; Map to nothing */\r
+    '\u034F',  /* 034F; ; Map to nothing */\r
+    '\u1806',  /* 1806; ; Map to nothing */\r
+    '\u180B',  /* 180B; ; Map to nothing */\r
+    '\u180C',  /* 180C; ; Map to nothing */\r
+    '\u180D',  /* 180D; ; Map to nothing */\r
+    '\u200B',  /* 200B; ; Map to nothing */\r
+    '\u200C',  /* 200C; ; Map to nothing */\r
+    '\u200D',  /* 200D; ; Map to nothing */\r
+    '\u2060',  /* 2060; ; Map to nothing */\r
+    '\uFE00',  /* FE00; ; Map to nothing */\r
+    '\uFE01',  /* FE01; ; Map to nothing */\r
+    '\uFE02',  /* FE02; ; Map to nothing */\r
+    '\uFE03',  /* FE03; ; Map to nothing */\r
+    '\uFE04',  /* FE04; ; Map to nothing */\r
+    '\uFE05',  /* FE05; ; Map to nothing */\r
+    '\uFE06',  /* FE06; ; Map to nothing */\r
+    '\uFE07',  /* FE07; ; Map to nothing */\r
+    '\uFE08',  /* FE08; ; Map to nothing */\r
+    '\uFE09',  /* FE09; ; Map to nothing */\r
+    '\uFE0A',  /* FE0A; ; Map to nothing */\r
+    '\uFE0B',  /* FE0B; ; Map to nothing */\r
+    '\uFE0C',  /* FE0C; ; Map to nothing */\r
+    '\uFE0D',  /* FE0D; ; Map to nothing */\r
+    '\uFE0E',  /* FE0E; ; Map to nothing */\r
+    '\uFE0F',  /* FE0F; ; Map to nothing */\r
+    '\uFEFF',  /* FEFF; ; Map to nothing */\r
+  };\r
+
+  public static char[] B2search = new char[] {\r
+    '\u0041',  /*0041; 0061; Case map*/\r
+    '\u0042',  /*0042; 0062; Case map*/\r
+    '\u0043',  /*0043; 0063; Case map*/\r
+    '\u0044',  /*0044; 0064; Case map*/\r
+    '\u0045',  /*0045; 0065; Case map*/\r
+    '\u0046',  /*0046; 0066; Case map*/\r
+    '\u0047',  /*0047; 0067; Case map*/\r
+    '\u0048',  /*0048; 0068; Case map*/\r
+    '\u0049',  /*0049; 0069; Case map*/\r
+    '\u004A',  /*004A; 006A; Case map*/\r
+    '\u004B',  /*004B; 006B; Case map*/\r
+    '\u004C',  /*004C; 006C; Case map*/\r
+    '\u004D',  /*004D; 006D; Case map*/\r
+    '\u004E',  /*004E; 006E; Case map*/\r
+    '\u004F',  /*004F; 006F; Case map*/\r
+    '\u0050',  /*0050; 0070; Case map*/\r
+    '\u0051',  /*0051; 0071; Case map*/\r
+    '\u0052',  /*0052; 0072; Case map*/\r
+    '\u0053',  /*0053; 0073; Case map*/\r
+    '\u0054',  /*0054; 0074; Case map*/\r
+    '\u0055',  /*0055; 0075; Case map*/\r
+    '\u0056',  /*0056; 0076; Case map*/\r
+    '\u0057',  /*0057; 0077; Case map*/\r
+    '\u0058',  /*0058; 0078; Case map*/\r
+    '\u0059',  /*0059; 0079; Case map*/\r
+    '\u005A',  /*005A; 007A; Case map*/\r
+    '\u00B5',  /*00B5; 03BC; Case map*/\r
+    '\u00C0',  /*00C0; 00E0; Case map*/\r
+    '\u00C1',  /*00C1; 00E1; Case map*/\r
+    '\u00C2',  /*00C2; 00E2; Case map*/\r
+    '\u00C3',  /*00C3; 00E3; Case map*/\r
+    '\u00C4',  /*00C4; 00E4; Case map*/\r
+    '\u00C5',  /*00C5; 00E5; Case map*/\r
+    '\u00C6',  /*00C6; 00E6; Case map*/\r
+    '\u00C7',  /*00C7; 00E7; Case map*/\r
+    '\u00C8',  /*00C8; 00E8; Case map*/\r
+    '\u00C9',  /*00C9; 00E9; Case map*/\r
+    '\u00CA',  /*00CA; 00EA; Case map*/\r
+    '\u00CB',  /*00CB; 00EB; Case map*/\r
+    '\u00CC',  /*00CC; 00EC; Case map*/\r
+    '\u00CD',  /*00CD; 00ED; Case map*/\r
+    '\u00CE',  /*00CE; 00EE; Case map*/\r
+    '\u00CF',  /*00CF; 00EF; Case map*/\r
+    '\u00D0',  /*00D0; 00F0; Case map*/\r
+    '\u00D1',  /*00D1; 00F1; Case map*/\r
+    '\u00D2',  /*00D2; 00F2; Case map*/\r
+    '\u00D3',  /*00D3; 00F3; Case map*/\r
+    '\u00D4',  /*00D4; 00F4; Case map*/\r
+    '\u00D5',  /*00D5; 00F5; Case map*/\r
+    '\u00D6',  /*00D6; 00F6; Case map*/\r
+    '\u00D8',  /*00D8; 00F8; Case map*/\r
+    '\u00D9',  /*00D9; 00F9; Case map*/\r
+    '\u00DA',  /*00DA; 00FA; Case map*/\r
+    '\u00DB',  /*00DB; 00FB; Case map*/\r
+    '\u00DC',  /*00DC; 00FC; Case map*/\r
+    '\u00DD',  /*00DD; 00FD; Case map*/\r
+    '\u00DE',  /*00DE; 00FE; Case map*/\r
+    '\u00DF',  /*00DF; 0073 0073; Case map*/\r
+    '\u0100',  /*0100; 0101; Case map*/\r
+    '\u0102',  /*0102; 0103; Case map*/\r
+    '\u0104',  /*0104; 0105; Case map*/\r
+    '\u0106',  /*0106; 0107; Case map*/\r
+    '\u0108',  /*0108; 0109; Case map*/\r
+    '\u010A',  /*010A; 010B; Case map*/\r
+    '\u010C',  /*010C; 010D; Case map*/\r
+    '\u010E',  /*010E; 010F; Case map*/\r
+    '\u0110',  /*0110; 0111; Case map*/\r
+    '\u0112',  /*0112; 0113; Case map*/\r
+    '\u0114',  /*0114; 0115; Case map*/\r
+    '\u0116',  /*0116; 0117; Case map*/\r
+    '\u0118',  /*0118; 0119; Case map*/\r
+    '\u011A',  /*011A; 011B; Case map*/\r
+    '\u011C',  /*011C; 011D; Case map*/\r
+    '\u011E',  /*011E; 011F; Case map*/\r
+    '\u0120',  /*0120; 0121; Case map*/\r
+    '\u0122',  /*0122; 0123; Case map*/\r
+    '\u0124',  /*0124; 0125; Case map*/\r
+    '\u0126',  /*0126; 0127; Case map*/\r
+    '\u0128',  /*0128; 0129; Case map*/\r
+    '\u012A',  /*012A; 012B; Case map*/\r
+    '\u012C',  /*012C; 012D; Case map*/\r
+    '\u012E',  /*012E; 012F; Case map*/\r
+    '\u0130',  /*0130; 0069 0307; Case map*/\r
+    '\u0132',  /*0132; 0133; Case map*/\r
+    '\u0134',  /*0134; 0135; Case map*/\r
+    '\u0136',  /*0136; 0137; Case map*/\r
+    '\u0139',  /*0139; 013A; Case map*/\r
+    '\u013B',  /*013B; 013C; Case map*/\r
+    '\u013D',  /*013D; 013E; Case map*/\r
+    '\u013F',  /*013F; 0140; Case map*/\r
+    '\u0141',  /*0141; 0142; Case map*/\r
+    '\u0143',  /*0143; 0144; Case map*/\r
+    '\u0145',  /*0145; 0146; Case map*/\r
+    '\u0147',  /*0147; 0148; Case map*/\r
+    '\u0149',  /*0149; 02BC 006E; Case map*/\r
+    '\u014A',  /*014A; 014B; Case map*/\r
+    '\u014C',  /*014C; 014D; Case map*/\r
+    '\u014E',  /*014E; 014F; Case map*/\r
+    '\u0150',  /*0150; 0151; Case map*/\r
+    '\u0152',  /*0152; 0153; Case map*/\r
+    '\u0154',  /*0154; 0155; Case map*/\r
+    '\u0156',  /*0156; 0157; Case map*/\r
+    '\u0158',  /*0158; 0159; Case map*/\r
+    '\u015A',  /*015A; 015B; Case map*/\r
+    '\u015C',  /*015C; 015D; Case map*/\r
+    '\u015E',  /*015E; 015F; Case map*/\r
+    '\u0160',  /*0160; 0161; Case map*/\r
+    '\u0162',  /*0162; 0163; Case map*/\r
+    '\u0164',  /*0164; 0165; Case map*/\r
+    '\u0166',  /*0166; 0167; Case map*/\r
+    '\u0168',  /*0168; 0169; Case map*/\r
+    '\u016A',  /*016A; 016B; Case map*/\r
+    '\u016C',  /*016C; 016D; Case map*/\r
+    '\u016E',  /*016E; 016F; Case map*/\r
+    '\u0170',  /*0170; 0171; Case map*/\r
+    '\u0172',  /*0172; 0173; Case map*/\r
+    '\u0174',  /*0174; 0175; Case map*/\r
+    '\u0176',  /*0176; 0177; Case map*/\r
+    '\u0178',  /*0178; 00FF; Case map*/\r
+    '\u0179',  /*0179; 017A; Case map*/\r
+    '\u017B',  /*017B; 017C; Case map*/\r
+    '\u017D',  /*017D; 017E; Case map*/\r
+    '\u017F',  /*017F; 0073; Case map*/\r
+    '\u0181',  /*0181; 0253; Case map*/\r
+    '\u0182',  /*0182; 0183; Case map*/\r
+    '\u0184',  /*0184; 0185; Case map*/\r
+    '\u0186',  /*0186; 0254; Case map*/\r
+    '\u0187',  /*0187; 0188; Case map*/\r
+    '\u0189',  /*0189; 0256; Case map*/\r
+    '\u018A',  /*018A; 0257; Case map*/\r
+    '\u018B',  /*018B; 018C; Case map*/\r
+    '\u018E',  /*018E; 01DD; Case map*/\r
+    '\u018F',  /*018F; 0259; Case map*/\r
+    '\u0190',  /*0190; 025B; Case map*/\r
+    '\u0191',  /*0191; 0192; Case map*/\r
+    '\u0193',  /*0193; 0260; Case map*/\r
+    '\u0194',  /*0194; 0263; Case map*/\r
+    '\u0196',  /*0196; 0269; Case map*/\r
+    '\u0197',  /*0197; 0268; Case map*/\r
+    '\u0198',  /*0198; 0199; Case map*/\r
+    '\u019C',  /*019C; 026F; Case map*/\r
+    '\u019D',  /*019D; 0272; Case map*/\r
+    '\u019F',  /*019F; 0275; Case map*/\r
+    '\u01A0',  /*01A0; 01A1; Case map*/\r
+    '\u01A2',  /*01A2; 01A3; Case map*/\r
+    '\u01A4',  /*01A4; 01A5; Case map*/\r
+    '\u01A6',  /*01A6; 0280; Case map*/\r
+    '\u01A7',  /*01A7; 01A8; Case map*/\r
+    '\u01A9',  /*01A9; 0283; Case map*/\r
+    '\u01AC',  /*01AC; 01AD; Case map*/\r
+    '\u01AE',  /*01AE; 0288; Case map*/\r
+    '\u01AF',  /*01AF; 01B0; Case map*/\r
+    '\u01B1',  /*01B1; 028A; Case map*/\r
+    '\u01B2',  /*01B2; 028B; Case map*/\r
+    '\u01B3',  /*01B3; 01B4; Case map*/\r
+    '\u01B5',  /*01B5; 01B6; Case map*/\r
+    '\u01B7',  /*01B7; 0292; Case map*/\r
+    '\u01B8',  /*01B8; 01B9; Case map*/\r
+    '\u01BC',  /*01BC; 01BD; Case map*/\r
+    '\u01C4',  /*01C4; 01C6; Case map*/\r
+    '\u01C5',  /*01C5; 01C6; Case map*/\r
+    '\u01C7',  /*01C7; 01C9; Case map*/\r
+    '\u01C8',  /*01C8; 01C9; Case map*/\r
+    '\u01CA',  /*01CA; 01CC; Case map*/\r
+    '\u01CB',  /*01CB; 01CC; Case map*/\r
+    '\u01CD',  /*01CD; 01CE; Case map*/\r
+    '\u01CF',  /*01CF; 01D0; Case map*/\r
+    '\u01D1',  /*01D1; 01D2; Case map*/\r
+    '\u01D3',  /*01D3; 01D4; Case map*/\r
+    '\u01D5',  /*01D5; 01D6; Case map*/\r
+    '\u01D7',  /*01D7; 01D8; Case map*/\r
+    '\u01D9',  /*01D9; 01DA; Case map*/\r
+    '\u01DB',  /*01DB; 01DC; Case map*/\r
+    '\u01DE',  /*01DE; 01DF; Case map*/\r
+    '\u01E0',  /*01E0; 01E1; Case map*/\r
+    '\u01E2',  /*01E2; 01E3; Case map*/\r
+    '\u01E4',  /*01E4; 01E5; Case map*/\r
+    '\u01E6',  /*01E6; 01E7; Case map*/\r
+    '\u01E8',  /*01E8; 01E9; Case map*/\r
+    '\u01EA',  /*01EA; 01EB; Case map*/\r
+    '\u01EC',  /*01EC; 01ED; Case map*/\r
+    '\u01EE',  /*01EE; 01EF; Case map*/\r
+    '\u01F0',  /*01F0; 006A 030C; Case map*/\r
+    '\u01F1',  /*01F1; 01F3; Case map*/\r
+    '\u01F2',  /*01F2; 01F3; Case map*/\r
+    '\u01F4',  /*01F4; 01F5; Case map*/\r
+    '\u01F6',  /*01F6; 0195; Case map*/\r
+    '\u01F7',  /*01F7; 01BF; Case map*/\r
+    '\u01F8',  /*01F8; 01F9; Case map*/\r
+    '\u01FA',  /*01FA; 01FB; Case map*/\r
+    '\u01FC',  /*01FC; 01FD; Case map*/\r
+    '\u01FE',  /*01FE; 01FF; Case map*/\r
+    '\u0200',  /*0200; 0201; Case map*/\r
+    '\u0202',  /*0202; 0203; Case map*/\r
+    '\u0204',  /*0204; 0205; Case map*/\r
+    '\u0206',  /*0206; 0207; Case map*/\r
+    '\u0208',  /*0208; 0209; Case map*/\r
+    '\u020A',  /*020A; 020B; Case map*/\r
+    '\u020C',  /*020C; 020D; Case map*/\r
+    '\u020E',  /*020E; 020F; Case map*/\r
+    '\u0210',  /*0210; 0211; Case map*/\r
+    '\u0212',  /*0212; 0213; Case map*/\r
+    '\u0214',  /*0214; 0215; Case map*/\r
+    '\u0216',  /*0216; 0217; Case map*/\r
+    '\u0218',  /*0218; 0219; Case map*/\r
+    '\u021A',  /*021A; 021B; Case map*/\r
+    '\u021C',  /*021C; 021D; Case map*/\r
+    '\u021E',  /*021E; 021F; Case map*/\r
+    '\u0220',  /*0220; 019E; Case map*/\r
+    '\u0222',  /*0222; 0223; Case map*/\r
+    '\u0224',  /*0224; 0225; Case map*/\r
+    '\u0226',  /*0226; 0227; Case map*/\r
+    '\u0228',  /*0228; 0229; Case map*/\r
+    '\u022A',  /*022A; 022B; Case map*/\r
+    '\u022C',  /*022C; 022D; Case map*/\r
+    '\u022E',  /*022E; 022F; Case map*/\r
+    '\u0230',  /*0230; 0231; Case map*/\r
+    '\u0232',  /*0232; 0233; Case map*/\r
+    '\u0345',  /*0345; 03B9; Case map*/\r
+    '\u037A',  /*037A; 0020 03B9; Additional folding*/\r
+    '\u0386',  /*0386; 03AC; Case map*/\r
+    '\u0388',  /*0388; 03AD; Case map*/\r
+    '\u0389',  /*0389; 03AE; Case map*/\r
+    '\u038A',  /*038A; 03AF; Case map*/\r
+    '\u038C',  /*038C; 03CC; Case map*/\r
+    '\u038E',  /*038E; 03CD; Case map*/\r
+    '\u038F',  /*038F; 03CE; Case map*/\r
+    '\u0390',  /*0390; 03B9 0308 0301; Case map*/\r
+    '\u0391',  /*0391; 03B1; Case map*/\r
+    '\u0392',  /*0392; 03B2; Case map*/\r
+    '\u0393',  /*0393; 03B3; Case map*/\r
+    '\u0394',  /*0394; 03B4; Case map*/\r
+    '\u0395',  /*0395; 03B5; Case map*/\r
+    '\u0396',  /*0396; 03B6; Case map*/\r
+    '\u0397',  /*0397; 03B7; Case map*/\r
+    '\u0398',  /*0398; 03B8; Case map*/\r
+    '\u0399',  /*0399; 03B9; Case map*/\r
+    '\u039A',  /*039A; 03BA; Case map*/\r
+    '\u039B',  /*039B; 03BB; Case map*/\r
+    '\u039C',  /*039C; 03BC; Case map*/\r
+    '\u039D',  /*039D; 03BD; Case map*/\r
+    '\u039E',  /*039E; 03BE; Case map*/\r
+    '\u039F',  /*039F; 03BF; Case map*/\r
+    '\u03A0',  /*03A0; 03C0; Case map*/\r
+    '\u03A1',  /*03A1; 03C1; Case map*/\r
+    '\u03A3',  /*03A3; 03C3; Case map*/\r
+    '\u03A4',  /*03A4; 03C4; Case map*/\r
+    '\u03A5',  /*03A5; 03C5; Case map*/\r
+    '\u03A6',  /*03A6; 03C6; Case map*/\r
+    '\u03A7',  /*03A7; 03C7; Case map*/\r
+    '\u03A8',  /*03A8; 03C8; Case map*/\r
+    '\u03A9',  /*03A9; 03C9; Case map*/\r
+    '\u03AA',  /*03AA; 03CA; Case map*/\r
+    '\u03AB',  /*03AB; 03CB; Case map*/\r
+    '\u03B0',  /*03B0; 03C5 0308 0301; Case map*/\r
+    '\u03C2',  /*03C2; 03C3; Case map*/\r
+    '\u03D0',  /*03D0; 03B2; Case map*/\r
+    '\u03D1',  /*03D1; 03B8; Case map*/\r
+    '\u03D2',  /*03D2; 03C5; Additional folding*/\r
+    '\u03D3',  /*03D3; 03CD; Additional folding*/\r
+    '\u03D4',  /*03D4; 03CB; Additional folding*/\r
+    '\u03D5',  /*03D5; 03C6; Case map*/\r
+    '\u03D6',  /*03D6; 03C0; Case map*/\r
+    '\u03D8',  /*03D8; 03D9; Case map*/\r
+    '\u03DA',  /*03DA; 03DB; Case map*/\r
+    '\u03DC',  /*03DC; 03DD; Case map*/\r
+    '\u03DE',  /*03DE; 03DF; Case map*/\r
+    '\u03E0',  /*03E0; 03E1; Case map*/\r
+    '\u03E2',  /*03E2; 03E3; Case map*/\r
+    '\u03E4',  /*03E4; 03E5; Case map*/\r
+    '\u03E6',  /*03E6; 03E7; Case map*/\r
+    '\u03E8',  /*03E8; 03E9; Case map*/\r
+    '\u03EA',  /*03EA; 03EB; Case map*/\r
+    '\u03EC',  /*03EC; 03ED; Case map*/\r
+    '\u03EE',  /*03EE; 03EF; Case map*/\r
+    '\u03F0',  /*03F0; 03BA; Case map*/\r
+    '\u03F1',  /*03F1; 03C1; Case map*/\r
+    '\u03F2',  /*03F2; 03C3; Case map*/\r
+    '\u03F4',  /*03F4; 03B8; Case map*/\r
+    '\u03F5',  /*03F5; 03B5; Case map*/\r
+    '\u0400',  /*0400; 0450; Case map*/\r
+    '\u0401',  /*0401; 0451; Case map*/\r
+    '\u0402',  /*0402; 0452; Case map*/\r
+    '\u0403',  /*0403; 0453; Case map*/\r
+    '\u0404',  /*0404; 0454; Case map*/\r
+    '\u0405',  /*0405; 0455; Case map*/\r
+    '\u0406',  /*0406; 0456; Case map*/\r
+    '\u0407',  /*0407; 0457; Case map*/\r
+    '\u0408',  /*0408; 0458; Case map*/\r
+    '\u0409',  /*0409; 0459; Case map*/\r
+    '\u040A',  /*040A; 045A; Case map*/\r
+    '\u040B',  /*040B; 045B; Case map*/\r
+    '\u040C',  /*040C; 045C; Case map*/\r
+    '\u040D',  /*040D; 045D; Case map*/\r
+    '\u040E',  /*040E; 045E; Case map*/\r
+    '\u040F',  /*040F; 045F; Case map*/\r
+    '\u0410',  /*0410; 0430; Case map*/\r
+    '\u0411',  /*0411; 0431; Case map*/\r
+    '\u0412',  /*0412; 0432; Case map*/\r
+    '\u0413',  /*0413; 0433; Case map*/\r
+    '\u0414',  /*0414; 0434; Case map*/\r
+    '\u0415',  /*0415; 0435; Case map*/\r
+    '\u0416',  /*0416; 0436; Case map*/\r
+    '\u0417',  /*0417; 0437; Case map*/\r
+    '\u0418',  /*0418; 0438; Case map*/\r
+    '\u0419',  /*0419; 0439; Case map*/\r
+    '\u041A',  /*041A; 043A; Case map*/\r
+    '\u041B',  /*041B; 043B; Case map*/\r
+    '\u041C',  /*041C; 043C; Case map*/\r
+    '\u041D',  /*041D; 043D; Case map*/\r
+    '\u041E',  /*041E; 043E; Case map*/\r
+    '\u041F',  /*041F; 043F; Case map*/\r
+    '\u0420',  /*0420; 0440; Case map*/\r
+    '\u0421',  /*0421; 0441; Case map*/\r
+    '\u0422',  /*0422; 0442; Case map*/\r
+    '\u0423',  /*0423; 0443; Case map*/\r
+    '\u0424',  /*0424; 0444; Case map*/\r
+    '\u0425',  /*0425; 0445; Case map*/\r
+    '\u0426',  /*0426; 0446; Case map*/\r
+    '\u0427',  /*0427; 0447; Case map*/\r
+    '\u0428',  /*0428; 0448; Case map*/\r
+    '\u0429',  /*0429; 0449; Case map*/\r
+    '\u042A',  /*042A; 044A; Case map*/\r
+    '\u042B',  /*042B; 044B; Case map*/\r
+    '\u042C',  /*042C; 044C; Case map*/\r
+    '\u042D',  /*042D; 044D; Case map*/\r
+    '\u042E',  /*042E; 044E; Case map*/\r
+    '\u042F',  /*042F; 044F; Case map*/\r
+    '\u0460',  /*0460; 0461; Case map*/\r
+    '\u0462',  /*0462; 0463; Case map*/\r
+    '\u0464',  /*0464; 0465; Case map*/\r
+    '\u0466',  /*0466; 0467; Case map*/\r
+    '\u0468',  /*0468; 0469; Case map*/\r
+    '\u046A',  /*046A; 046B; Case map*/\r
+    '\u046C',  /*046C; 046D; Case map*/\r
+    '\u046E',  /*046E; 046F; Case map*/\r
+    '\u0470',  /*0470; 0471; Case map*/\r
+    '\u0472',  /*0472; 0473; Case map*/\r
+    '\u0474',  /*0474; 0475; Case map*/\r
+    '\u0476',  /*0476; 0477; Case map*/\r
+    '\u0478',  /*0478; 0479; Case map*/\r
+    '\u047A',  /*047A; 047B; Case map*/\r
+    '\u047C',  /*047C; 047D; Case map*/\r
+    '\u047E',  /*047E; 047F; Case map*/\r
+    '\u0480',  /*0480; 0481; Case map*/\r
+    '\u048A',  /*048A; 048B; Case map*/\r
+    '\u048C',  /*048C; 048D; Case map*/\r
+    '\u048E',  /*048E; 048F; Case map*/\r
+    '\u0490',  /*0490; 0491; Case map*/\r
+    '\u0492',  /*0492; 0493; Case map*/\r
+    '\u0494',  /*0494; 0495; Case map*/\r
+    '\u0496',  /*0496; 0497; Case map*/\r
+    '\u0498',  /*0498; 0499; Case map*/\r
+    '\u049A',  /*049A; 049B; Case map*/\r
+    '\u049C',  /*049C; 049D; Case map*/\r
+    '\u049E',  /*049E; 049F; Case map*/\r
+    '\u04A0',  /*04A0; 04A1; Case map*/\r
+    '\u04A2',  /*04A2; 04A3; Case map*/\r
+    '\u04A4',  /*04A4; 04A5; Case map*/\r
+    '\u04A6',  /*04A6; 04A7; Case map*/\r
+    '\u04A8',  /*04A8; 04A9; Case map*/\r
+    '\u04AA',  /*04AA; 04AB; Case map*/\r
+    '\u04AC',  /*04AC; 04AD; Case map*/\r
+    '\u04AE',  /*04AE; 04AF; Case map*/\r
+    '\u04B0',  /*04B0; 04B1; Case map*/\r
+    '\u04B2',  /*04B2; 04B3; Case map*/\r
+    '\u04B4',  /*04B4; 04B5; Case map*/\r
+    '\u04B6',  /*04B6; 04B7; Case map*/\r
+    '\u04B8',  /*04B8; 04B9; Case map*/\r
+    '\u04BA',  /*04BA; 04BB; Case map*/\r
+    '\u04BC',  /*04BC; 04BD; Case map*/\r
+    '\u04BE',  /*04BE; 04BF; Case map*/\r
+    '\u04C1',  /*04C1; 04C2; Case map*/\r
+    '\u04C3',  /*04C3; 04C4; Case map*/\r
+    '\u04C5',  /*04C5; 04C6; Case map*/\r
+    '\u04C7',  /*04C7; 04C8; Case map*/\r
+    '\u04C9',  /*04C9; 04CA; Case map*/\r
+    '\u04CB',  /*04CB; 04CC; Case map*/\r
+    '\u04CD',  /*04CD; 04CE; Case map*/\r
+    '\u04D0',  /*04D0; 04D1; Case map*/\r
+    '\u04D2',  /*04D2; 04D3; Case map*/\r
+    '\u04D4',  /*04D4; 04D5; Case map*/\r
+    '\u04D6',  /*04D6; 04D7; Case map*/\r
+    '\u04D8',  /*04D8; 04D9; Case map*/\r
+    '\u04DA',  /*04DA; 04DB; Case map*/\r
+    '\u04DC',  /*04DC; 04DD; Case map*/\r
+    '\u04DE',  /*04DE; 04DF; Case map*/\r
+    '\u04E0',  /*04E0; 04E1; Case map*/\r
+    '\u04E2',  /*04E2; 04E3; Case map*/\r
+    '\u04E4',  /*04E4; 04E5; Case map*/\r
+    '\u04E6',  /*04E6; 04E7; Case map*/\r
+    '\u04E8',  /*04E8; 04E9; Case map*/\r
+    '\u04EA',  /*04EA; 04EB; Case map*/\r
+    '\u04EC',  /*04EC; 04ED; Case map*/\r
+    '\u04EE',  /*04EE; 04EF; Case map*/\r
+    '\u04F0',  /*04F0; 04F1; Case map*/\r
+    '\u04F2',  /*04F2; 04F3; Case map*/\r
+    '\u04F4',  /*04F4; 04F5; Case map*/\r
+    '\u04F8',  /*04F8; 04F9; Case map*/\r
+    '\u0500',  /*0500; 0501; Case map*/\r
+    '\u0502',  /*0502; 0503; Case map*/\r
+    '\u0504',  /*0504; 0505; Case map*/\r
+    '\u0506',  /*0506; 0507; Case map*/\r
+    '\u0508',  /*0508; 0509; Case map*/\r
+    '\u050A',  /*050A; 050B; Case map*/\r
+    '\u050C',  /*050C; 050D; Case map*/\r
+    '\u050E',  /*050E; 050F; Case map*/\r
+    '\u0531',  /*0531; 0561; Case map*/\r
+    '\u0532',  /*0532; 0562; Case map*/\r
+    '\u0533',  /*0533; 0563; Case map*/\r
+    '\u0534',  /*0534; 0564; Case map*/\r
+    '\u0535',  /*0535; 0565; Case map*/\r
+    '\u0536',  /*0536; 0566; Case map*/\r
+    '\u0537',  /*0537; 0567; Case map*/\r
+    '\u0538',  /*0538; 0568; Case map*/\r
+    '\u0539',  /*0539; 0569; Case map*/\r
+    '\u053A',  /*053A; 056A; Case map*/\r
+    '\u053B',  /*053B; 056B; Case map*/\r
+    '\u053C',  /*053C; 056C; Case map*/\r
+    '\u053D',  /*053D; 056D; Case map*/\r
+    '\u053E',  /*053E; 056E; Case map*/\r
+    '\u053F',  /*053F; 056F; Case map*/\r
+    '\u0540',  /*0540; 0570; Case map*/\r
+    '\u0541',  /*0541; 0571; Case map*/\r
+    '\u0542',  /*0542; 0572; Case map*/\r
+    '\u0543',  /*0543; 0573; Case map*/\r
+    '\u0544',  /*0544; 0574; Case map*/\r
+    '\u0545',  /*0545; 0575; Case map*/\r
+    '\u0546',  /*0546; 0576; Case map*/\r
+    '\u0547',  /*0547; 0577; Case map*/\r
+    '\u0548',  /*0548; 0578; Case map*/\r
+    '\u0549',  /*0549; 0579; Case map*/\r
+    '\u054A',  /*054A; 057A; Case map*/\r
+    '\u054B',  /*054B; 057B; Case map*/\r
+    '\u054C',  /*054C; 057C; Case map*/\r
+    '\u054D',  /*054D; 057D; Case map*/\r
+    '\u054E',  /*054E; 057E; Case map*/\r
+    '\u054F',  /*054F; 057F; Case map*/\r
+    '\u0550',  /*0550; 0580; Case map*/\r
+    '\u0551',  /*0551; 0581; Case map*/\r
+    '\u0552',  /*0552; 0582; Case map*/\r
+    '\u0553',  /*0553; 0583; Case map*/\r
+    '\u0554',  /*0554; 0584; Case map*/\r
+    '\u0555',  /*0555; 0585; Case map*/\r
+    '\u0556',  /*0556; 0586; Case map*/\r
+    '\u0587',  /*0587; 0565 0582; Case map*/\r
+    '\u1E00',  /*1E00; 1E01; Case map*/\r
+    '\u1E02',  /*1E02; 1E03; Case map*/\r
+    '\u1E04',  /*1E04; 1E05; Case map*/\r
+    '\u1E06',  /*1E06; 1E07; Case map*/\r
+    '\u1E08',  /*1E08; 1E09; Case map*/\r
+    '\u1E0A',  /*1E0A; 1E0B; Case map*/\r
+    '\u1E0C',  /*1E0C; 1E0D; Case map*/\r
+    '\u1E0E',  /*1E0E; 1E0F; Case map*/\r
+    '\u1E10',  /*1E10; 1E11; Case map*/\r
+    '\u1E12',  /*1E12; 1E13; Case map*/\r
+    '\u1E14',  /*1E14; 1E15; Case map*/\r
+    '\u1E16',  /*1E16; 1E17; Case map*/\r
+    '\u1E18',  /*1E18; 1E19; Case map*/\r
+    '\u1E1A',  /*1E1A; 1E1B; Case map*/\r
+    '\u1E1C',  /*1E1C; 1E1D; Case map*/\r
+    '\u1E1E',  /*1E1E; 1E1F; Case map*/\r
+    '\u1E20',  /*1E20; 1E21; Case map*/\r
+    '\u1E22',  /*1E22; 1E23; Case map*/\r
+    '\u1E24',  /*1E24; 1E25; Case map*/\r
+    '\u1E26',  /*1E26; 1E27; Case map*/\r
+    '\u1E28',  /*1E28; 1E29; Case map*/\r
+    '\u1E2A',  /*1E2A; 1E2B; Case map*/\r
+    '\u1E2C',  /*1E2C; 1E2D; Case map*/\r
+    '\u1E2E',  /*1E2E; 1E2F; Case map*/\r
+    '\u1E30',  /*1E30; 1E31; Case map*/\r
+    '\u1E32',  /*1E32; 1E33; Case map*/\r
+    '\u1E34',  /*1E34; 1E35; Case map*/\r
+    '\u1E36',  /*1E36; 1E37; Case map*/\r
+    '\u1E38',  /*1E38; 1E39; Case map*/\r
+    '\u1E3A',  /*1E3A; 1E3B; Case map*/\r
+    '\u1E3C',  /*1E3C; 1E3D; Case map*/\r
+    '\u1E3E',  /*1E3E; 1E3F; Case map*/\r
+    '\u1E40',  /*1E40; 1E41; Case map*/\r
+    '\u1E42',  /*1E42; 1E43; Case map*/\r
+    '\u1E44',  /*1E44; 1E45; Case map*/\r
+    '\u1E46',  /*1E46; 1E47; Case map*/\r
+    '\u1E48',  /*1E48; 1E49; Case map*/\r
+    '\u1E4A',  /*1E4A; 1E4B; Case map*/\r
+    '\u1E4C',  /*1E4C; 1E4D; Case map*/\r
+    '\u1E4E',  /*1E4E; 1E4F; Case map*/\r
+    '\u1E50',  /*1E50; 1E51; Case map*/\r
+    '\u1E52',  /*1E52; 1E53; Case map*/\r
+    '\u1E54',  /*1E54; 1E55; Case map*/\r
+    '\u1E56',  /*1E56; 1E57; Case map*/\r
+    '\u1E58',  /*1E58; 1E59; Case map*/\r
+    '\u1E5A',  /*1E5A; 1E5B; Case map*/\r
+    '\u1E5C',  /*1E5C; 1E5D; Case map*/\r
+    '\u1E5E',  /*1E5E; 1E5F; Case map*/\r
+    '\u1E60',  /*1E60; 1E61; Case map*/\r
+    '\u1E62',  /*1E62; 1E63; Case map*/\r
+    '\u1E64',  /*1E64; 1E65; Case map*/\r
+    '\u1E66',  /*1E66; 1E67; Case map*/\r
+    '\u1E68',  /*1E68; 1E69; Case map*/\r
+    '\u1E6A',  /*1E6A; 1E6B; Case map*/\r
+    '\u1E6C',  /*1E6C; 1E6D; Case map*/\r
+    '\u1E6E',  /*1E6E; 1E6F; Case map*/\r
+    '\u1E70',  /*1E70; 1E71; Case map*/\r
+    '\u1E72',  /*1E72; 1E73; Case map*/\r
+    '\u1E74',  /*1E74; 1E75; Case map*/\r
+    '\u1E76',  /*1E76; 1E77; Case map*/\r
+    '\u1E78',  /*1E78; 1E79; Case map*/\r
+    '\u1E7A',  /*1E7A; 1E7B; Case map*/\r
+    '\u1E7C',  /*1E7C; 1E7D; Case map*/\r
+    '\u1E7E',  /*1E7E; 1E7F; Case map*/\r
+    '\u1E80',  /*1E80; 1E81; Case map*/\r
+    '\u1E82',  /*1E82; 1E83; Case map*/\r
+    '\u1E84',  /*1E84; 1E85; Case map*/\r
+    '\u1E86',  /*1E86; 1E87; Case map*/\r
+    '\u1E88',  /*1E88; 1E89; Case map*/\r
+    '\u1E8A',  /*1E8A; 1E8B; Case map*/\r
+    '\u1E8C',  /*1E8C; 1E8D; Case map*/\r
+    '\u1E8E',  /*1E8E; 1E8F; Case map*/\r
+    '\u1E90',  /*1E90; 1E91; Case map*/\r
+    '\u1E92',  /*1E92; 1E93; Case map*/\r
+    '\u1E94',  /*1E94; 1E95; Case map*/\r
+    '\u1E96',  /*1E96; 0068 0331; Case map*/\r
+    '\u1E97',  /*1E97; 0074 0308; Case map*/\r
+    '\u1E98',  /*1E98; 0077 030A; Case map*/\r
+    '\u1E99',  /*1E99; 0079 030A; Case map*/\r
+    '\u1E9A',  /*1E9A; 0061 02BE; Case map*/\r
+    '\u1E9B',  /*1E9B; 1E61; Case map*/\r
+    '\u1EA0',  /*1EA0; 1EA1; Case map*/\r
+    '\u1EA2',  /*1EA2; 1EA3; Case map*/\r
+    '\u1EA4',  /*1EA4; 1EA5; Case map*/\r
+    '\u1EA6',  /*1EA6; 1EA7; Case map*/\r
+    '\u1EA8',  /*1EA8; 1EA9; Case map*/\r
+    '\u1EAA',  /*1EAA; 1EAB; Case map*/\r
+    '\u1EAC',  /*1EAC; 1EAD; Case map*/\r
+    '\u1EAE',  /*1EAE; 1EAF; Case map*/\r
+    '\u1EB0',  /*1EB0; 1EB1; Case map*/\r
+    '\u1EB2',  /*1EB2; 1EB3; Case map*/\r
+    '\u1EB4',  /*1EB4; 1EB5; Case map*/\r
+    '\u1EB6',  /*1EB6; 1EB7; Case map*/\r
+    '\u1EB8',  /*1EB8; 1EB9; Case map*/\r
+    '\u1EBA',  /*1EBA; 1EBB; Case map*/\r
+    '\u1EBC',  /*1EBC; 1EBD; Case map*/\r
+    '\u1EBE',  /*1EBE; 1EBF; Case map*/\r
+    '\u1EC0',  /*1EC0; 1EC1; Case map*/\r
+    '\u1EC2',  /*1EC2; 1EC3; Case map*/\r
+    '\u1EC4',  /*1EC4; 1EC5; Case map*/\r
+    '\u1EC6',  /*1EC6; 1EC7; Case map*/\r
+    '\u1EC8',  /*1EC8; 1EC9; Case map*/\r
+    '\u1ECA',  /*1ECA; 1ECB; Case map*/\r
+    '\u1ECC',  /*1ECC; 1ECD; Case map*/\r
+    '\u1ECE',  /*1ECE; 1ECF; Case map*/\r
+    '\u1ED0',  /*1ED0; 1ED1; Case map*/\r
+    '\u1ED2',  /*1ED2; 1ED3; Case map*/\r
+    '\u1ED4',  /*1ED4; 1ED5; Case map*/\r
+    '\u1ED6',  /*1ED6; 1ED7; Case map*/\r
+    '\u1ED8',  /*1ED8; 1ED9; Case map*/\r
+    '\u1EDA',  /*1EDA; 1EDB; Case map*/\r
+    '\u1EDC',  /*1EDC; 1EDD; Case map*/\r
+    '\u1EDE',  /*1EDE; 1EDF; Case map*/\r
+    '\u1EE0',  /*1EE0; 1EE1; Case map*/\r
+    '\u1EE2',  /*1EE2; 1EE3; Case map*/\r
+    '\u1EE4',  /*1EE4; 1EE5; Case map*/\r
+    '\u1EE6',  /*1EE6; 1EE7; Case map*/\r
+    '\u1EE8',  /*1EE8; 1EE9; Case map*/\r
+    '\u1EEA',  /*1EEA; 1EEB; Case map*/\r
+    '\u1EEC',  /*1EEC; 1EED; Case map*/\r
+    '\u1EEE',  /*1EEE; 1EEF; Case map*/\r
+    '\u1EF0',  /*1EF0; 1EF1; Case map*/\r
+    '\u1EF2',  /*1EF2; 1EF3; Case map*/\r
+    '\u1EF4',  /*1EF4; 1EF5; Case map*/\r
+    '\u1EF6',  /*1EF6; 1EF7; Case map*/\r
+    '\u1EF8',  /*1EF8; 1EF9; Case map*/\r
+    '\u1F08',  /*1F08; 1F00; Case map*/\r
+    '\u1F09',  /*1F09; 1F01; Case map*/\r
+    '\u1F0A',  /*1F0A; 1F02; Case map*/\r
+    '\u1F0B',  /*1F0B; 1F03; Case map*/\r
+    '\u1F0C',  /*1F0C; 1F04; Case map*/\r
+    '\u1F0D',  /*1F0D; 1F05; Case map*/\r
+    '\u1F0E',  /*1F0E; 1F06; Case map*/\r
+    '\u1F0F',  /*1F0F; 1F07; Case map*/\r
+    '\u1F18',  /*1F18; 1F10; Case map*/\r
+    '\u1F19',  /*1F19; 1F11; Case map*/\r
+    '\u1F1A',  /*1F1A; 1F12; Case map*/\r
+    '\u1F1B',  /*1F1B; 1F13; Case map*/\r
+    '\u1F1C',  /*1F1C; 1F14; Case map*/\r
+    '\u1F1D',  /*1F1D; 1F15; Case map*/\r
+    '\u1F28',  /*1F28; 1F20; Case map*/\r
+    '\u1F29',  /*1F29; 1F21; Case map*/\r
+    '\u1F2A',  /*1F2A; 1F22; Case map*/\r
+    '\u1F2B',  /*1F2B; 1F23; Case map*/\r
+    '\u1F2C',  /*1F2C; 1F24; Case map*/\r
+    '\u1F2D',  /*1F2D; 1F25; Case map*/\r
+    '\u1F2E',  /*1F2E; 1F26; Case map*/\r
+    '\u1F2F',  /*1F2F; 1F27; Case map*/\r
+    '\u1F38',  /*1F38; 1F30; Case map*/\r
+    '\u1F39',  /*1F39; 1F31; Case map*/\r
+    '\u1F3A',  /*1F3A; 1F32; Case map*/\r
+    '\u1F3B',  /*1F3B; 1F33; Case map*/\r
+    '\u1F3C',  /*1F3C; 1F34; Case map*/\r
+    '\u1F3D',  /*1F3D; 1F35; Case map*/\r
+    '\u1F3E',  /*1F3E; 1F36; Case map*/\r
+    '\u1F3F',  /*1F3F; 1F37; Case map*/\r
+    '\u1F48',  /*1F48; 1F40; Case map*/\r
+    '\u1F49',  /*1F49; 1F41; Case map*/\r
+    '\u1F4A',  /*1F4A; 1F42; Case map*/\r
+    '\u1F4B',  /*1F4B; 1F43; Case map*/\r
+    '\u1F4C',  /*1F4C; 1F44; Case map*/\r
+    '\u1F4D',  /*1F4D; 1F45; Case map*/\r
+    '\u1F50',  /*1F50; 03C5 0313; Case map*/\r
+    '\u1F52',  /*1F52; 03C5 0313 0300; Case map*/\r
+    '\u1F54',  /*1F54; 03C5 0313 0301; Case map*/\r
+    '\u1F56',  /*1F56; 03C5 0313 0342; Case map*/\r
+    '\u1F59',  /*1F59; 1F51; Case map*/\r
+    '\u1F5B',  /*1F5B; 1F53; Case map*/\r
+    '\u1F5D',  /*1F5D; 1F55; Case map*/\r
+    '\u1F5F',  /*1F5F; 1F57; Case map*/\r
+    '\u1F68',  /*1F68; 1F60; Case map*/\r
+    '\u1F69',  /*1F69; 1F61; Case map*/\r
+    '\u1F6A',  /*1F6A; 1F62; Case map*/\r
+    '\u1F6B',  /*1F6B; 1F63; Case map*/\r
+    '\u1F6C',  /*1F6C; 1F64; Case map*/\r
+    '\u1F6D',  /*1F6D; 1F65; Case map*/\r
+    '\u1F6E',  /*1F6E; 1F66; Case map*/\r
+    '\u1F6F',  /*1F6F; 1F67; Case map*/\r
+    '\u1F80',  /*1F80; 1F00 03B9; Case map*/\r
+    '\u1F81',  /*1F81; 1F01 03B9; Case map*/\r
+    '\u1F82',  /*1F82; 1F02 03B9; Case map*/\r
+    '\u1F83',  /*1F83; 1F03 03B9; Case map*/\r
+    '\u1F84',  /*1F84; 1F04 03B9; Case map*/\r
+    '\u1F85',  /*1F85; 1F05 03B9; Case map*/\r
+    '\u1F86',  /*1F86; 1F06 03B9; Case map*/\r
+    '\u1F87',  /*1F87; 1F07 03B9; Case map*/\r
+    '\u1F88',  /*1F88; 1F00 03B9; Case map*/\r
+    '\u1F89',  /*1F89; 1F01 03B9; Case map*/\r
+    '\u1F8A',  /*1F8A; 1F02 03B9; Case map*/\r
+    '\u1F8B',  /*1F8B; 1F03 03B9; Case map*/\r
+    '\u1F8C',  /*1F8C; 1F04 03B9; Case map*/\r
+    '\u1F8D',  /*1F8D; 1F05 03B9; Case map*/\r
+    '\u1F8E',  /*1F8E; 1F06 03B9; Case map*/\r
+    '\u1F8F',  /*1F8F; 1F07 03B9; Case map*/\r
+    '\u1F90',  /*1F90; 1F20 03B9; Case map*/\r
+    '\u1F91',  /*1F91; 1F21 03B9; Case map*/\r
+    '\u1F92',  /*1F92; 1F22 03B9; Case map*/\r
+    '\u1F93',  /*1F93; 1F23 03B9; Case map*/\r
+    '\u1F94',  /*1F94; 1F24 03B9; Case map*/\r
+    '\u1F95',  /*1F95; 1F25 03B9; Case map*/\r
+    '\u1F96',  /*1F96; 1F26 03B9; Case map*/\r
+    '\u1F97',  /*1F97; 1F27 03B9; Case map*/\r
+    '\u1F98',  /*1F98; 1F20 03B9; Case map*/\r
+    '\u1F99',  /*1F99; 1F21 03B9; Case map*/\r
+    '\u1F9A',  /*1F9A; 1F22 03B9; Case map*/\r
+    '\u1F9B',  /*1F9B; 1F23 03B9; Case map*/\r
+    '\u1F9C',  /*1F9C; 1F24 03B9; Case map*/\r
+    '\u1F9D',  /*1F9D; 1F25 03B9; Case map*/\r
+    '\u1F9E',  /*1F9E; 1F26 03B9; Case map*/\r
+    '\u1F9F',  /*1F9F; 1F27 03B9; Case map*/\r
+    '\u1FA0',  /*1FA0; 1F60 03B9; Case map*/\r
+    '\u1FA1',  /*1FA1; 1F61 03B9; Case map*/\r
+    '\u1FA2',  /*1FA2; 1F62 03B9; Case map*/\r
+    '\u1FA3',  /*1FA3; 1F63 03B9; Case map*/\r
+    '\u1FA4',  /*1FA4; 1F64 03B9; Case map*/\r
+    '\u1FA5',  /*1FA5; 1F65 03B9; Case map*/\r
+    '\u1FA6',  /*1FA6; 1F66 03B9; Case map*/\r
+    '\u1FA7',  /*1FA7; 1F67 03B9; Case map*/\r
+    '\u1FA8',  /*1FA8; 1F60 03B9; Case map*/\r
+    '\u1FA9',  /*1FA9; 1F61 03B9; Case map*/\r
+    '\u1FAA',  /*1FAA; 1F62 03B9; Case map*/\r
+    '\u1FAB',  /*1FAB; 1F63 03B9; Case map*/\r
+    '\u1FAC',  /*1FAC; 1F64 03B9; Case map*/\r
+    '\u1FAD',  /*1FAD; 1F65 03B9; Case map*/\r
+    '\u1FAE',  /*1FAE; 1F66 03B9; Case map*/\r
+    '\u1FAF',  /*1FAF; 1F67 03B9; Case map*/\r
+    '\u1FB2',  /*1FB2; 1F70 03B9; Case map*/\r
+    '\u1FB3',  /*1FB3; 03B1 03B9; Case map*/\r
+    '\u1FB4',  /*1FB4; 03AC 03B9; Case map*/\r
+    '\u1FB6',  /*1FB6; 03B1 0342; Case map*/\r
+    '\u1FB7',  /*1FB7; 03B1 0342 03B9; Case map*/\r
+    '\u1FB8',  /*1FB8; 1FB0; Case map*/\r
+    '\u1FB9',  /*1FB9; 1FB1; Case map*/\r
+    '\u1FBA',  /*1FBA; 1F70; Case map*/\r
+    '\u1FBB',  /*1FBB; 1F71; Case map*/\r
+    '\u1FBC',  /*1FBC; 03B1 03B9; Case map*/\r
+    '\u1FBE',  /*1FBE; 03B9; Case map*/\r
+    '\u1FC2',  /*1FC2; 1F74 03B9; Case map*/\r
+    '\u1FC3',  /*1FC3; 03B7 03B9; Case map*/\r
+    '\u1FC4',  /*1FC4; 03AE 03B9; Case map*/\r
+    '\u1FC6',  /*1FC6; 03B7 0342; Case map*/\r
+    '\u1FC7',  /*1FC7; 03B7 0342 03B9; Case map*/\r
+    '\u1FC8',  /*1FC8; 1F72; Case map*/\r
+    '\u1FC9',  /*1FC9; 1F73; Case map*/\r
+    '\u1FCA',  /*1FCA; 1F74; Case map*/\r
+    '\u1FCB',  /*1FCB; 1F75; Case map*/\r
+    '\u1FCC',  /*1FCC; 03B7 03B9; Case map*/\r
+    '\u1FD2',  /*1FD2; 03B9 0308 0300; Case map*/\r
+    '\u1FD3',  /*1FD3; 03B9 0308 0301; Case map*/\r
+    '\u1FD6',  /*1FD6; 03B9 0342; Case map*/\r
+    '\u1FD7',  /*1FD7; 03B9 0308 0342; Case map*/\r
+    '\u1FD8',  /*1FD8; 1FD0; Case map*/\r
+    '\u1FD9',  /*1FD9; 1FD1; Case map*/\r
+    '\u1FDA',  /*1FDA; 1F76; Case map*/\r
+    '\u1FDB',  /*1FDB; 1F77; Case map*/\r
+    '\u1FE2',  /*1FE2; 03C5 0308 0300; Case map*/\r
+    '\u1FE3',  /*1FE3; 03C5 0308 0301; Case map*/\r
+    '\u1FE4',  /*1FE4; 03C1 0313; Case map*/\r
+    '\u1FE6',  /*1FE6; 03C5 0342; Case map*/\r
+    '\u1FE7',  /*1FE7; 03C5 0308 0342; Case map*/\r
+    '\u1FE8',  /*1FE8; 1FE0; Case map*/\r
+    '\u1FE9',  /*1FE9; 1FE1; Case map*/\r
+    '\u1FEA',  /*1FEA; 1F7A; Case map*/\r
+    '\u1FEB',  /*1FEB; 1F7B; Case map*/\r
+    '\u1FEC',  /*1FEC; 1FE5; Case map*/\r
+    '\u1FF2',  /*1FF2; 1F7C 03B9; Case map*/\r
+    '\u1FF3',  /*1FF3; 03C9 03B9; Case map*/\r
+    '\u1FF4',  /*1FF4; 03CE 03B9; Case map*/\r
+    '\u1FF6',  /*1FF6; 03C9 0342; Case map*/\r
+    '\u1FF7',  /*1FF7; 03C9 0342 03B9; Case map*/\r
+    '\u1FF8',  /*1FF8; 1F78; Case map*/\r
+    '\u1FF9',  /*1FF9; 1F79; Case map*/\r
+    '\u1FFA',  /*1FFA; 1F7C; Case map*/\r
+    '\u1FFB',  /*1FFB; 1F7D; Case map*/\r
+    '\u1FFC',  /*1FFC; 03C9 03B9; Case map*/\r
+    '\u20A8',  /*20A8; 0072 0073; Additional folding*/\r
+    '\u2102',  /*2102; 0063; Additional folding*/\r
+    '\u2103',  /*2103; 00B0 0063; Additional folding*/\r
+    '\u2107',  /*2107; 025B; Additional folding*/\r
+    '\u2109',  /*2109; 00B0 0066; Additional folding*/\r
+    '\u210B',  /*210B; 0068; Additional folding*/\r
+    '\u210C',  /*210C; 0068; Additional folding*/\r
+    '\u210D',  /*210D; 0068; Additional folding*/\r
+    '\u2110',  /*2110; 0069; Additional folding*/\r
+    '\u2111',  /*2111; 0069; Additional folding*/\r
+    '\u2112',  /*2112; 006C; Additional folding*/\r
+    '\u2115',  /*2115; 006E; Additional folding*/\r
+    '\u2116',  /*2116; 006E 006F; Additional folding*/\r
+    '\u2119',  /*2119; 0070; Additional folding*/\r
+    '\u211A',  /*211A; 0071; Additional folding*/\r
+    '\u211B',  /*211B; 0072; Additional folding*/\r
+    '\u211C',  /*211C; 0072; Additional folding*/\r
+    '\u211D',  /*211D; 0072; Additional folding*/\r
+    '\u2120',  /*2120; 0073 006D; Additional folding*/\r
+    '\u2121',  /*2121; 0074 0065 006C; Additional folding*/\r
+    '\u2122',  /*2122; 0074 006D; Additional folding*/\r
+    '\u2124',  /*2124; 007A; Additional folding*/\r
+    '\u2126',  /*2126; 03C9; Case map*/\r
+    '\u2128',  /*2128; 007A; Additional folding*/\r
+    '\u212A',  /*212A; 006B; Case map*/\r
+    '\u212B',  /*212B; 00E5; Case map*/\r
+    '\u212C',  /*212C; 0062; Additional folding*/\r
+    '\u212D',  /*212D; 0063; Additional folding*/\r
+    '\u2130',  /*2130; 0065; Additional folding*/\r
+    '\u2131',  /*2131; 0066; Additional folding*/\r
+    '\u2133',  /*2133; 006D; Additional folding*/\r
+    '\u213E',  /*213E; 03B3; Additional folding*/\r
+    '\u213F',  /*213F; 03C0; Additional folding*/\r
+    '\u2145',  /*2145; 0064; Additional folding*/\r
+    '\u2160',  /*2160; 2170; Case map*/\r
+    '\u2161',  /*2161; 2171; Case map*/\r
+    '\u2162',  /*2162; 2172; Case map*/\r
+    '\u2163',  /*2163; 2173; Case map*/\r
+    '\u2164',  /*2164; 2174; Case map*/\r
+    '\u2165',  /*2165; 2175; Case map*/\r
+    '\u2166',  /*2166; 2176; Case map*/\r
+    '\u2167',  /*2167; 2177; Case map*/\r
+    '\u2168',  /*2168; 2178; Case map*/\r
+    '\u2169',  /*2169; 2179; Case map*/\r
+    '\u216A',  /*216A; 217A; Case map*/\r
+    '\u216B',  /*216B; 217B; Case map*/\r
+    '\u216C',  /*216C; 217C; Case map*/\r
+    '\u216D',  /*216D; 217D; Case map*/\r
+    '\u216E',  /*216E; 217E; Case map*/\r
+    '\u216F',  /*216F; 217F; Case map*/\r
+    '\u24B6',  /*24B6; 24D0; Case map*/\r
+    '\u24B7',  /*24B7; 24D1; Case map*/\r
+    '\u24B8',  /*24B8; 24D2; Case map*/\r
+    '\u24B9',  /*24B9; 24D3; Case map*/\r
+    '\u24BA',  /*24BA; 24D4; Case map*/\r
+    '\u24BB',  /*24BB; 24D5; Case map*/\r
+    '\u24BC',  /*24BC; 24D6; Case map*/\r
+    '\u24BD',  /*24BD; 24D7; Case map*/\r
+    '\u24BE',  /*24BE; 24D8; Case map*/\r
+    '\u24BF',  /*24BF; 24D9; Case map*/\r
+    '\u24C0',  /*24C0; 24DA; Case map*/\r
+    '\u24C1',  /*24C1; 24DB; Case map*/\r
+    '\u24C2',  /*24C2; 24DC; Case map*/\r
+    '\u24C3',  /*24C3; 24DD; Case map*/\r
+    '\u24C4',  /*24C4; 24DE; Case map*/\r
+    '\u24C5',  /*24C5; 24DF; Case map*/\r
+    '\u24C6',  /*24C6; 24E0; Case map*/\r
+    '\u24C7',  /*24C7; 24E1; Case map*/\r
+    '\u24C8',  /*24C8; 24E2; Case map*/\r
+    '\u24C9',  /*24C9; 24E3; Case map*/\r
+    '\u24CA',  /*24CA; 24E4; Case map*/\r
+    '\u24CB',  /*24CB; 24E5; Case map*/\r
+    '\u24CC',  /*24CC; 24E6; Case map*/\r
+    '\u24CD',  /*24CD; 24E7; Case map*/\r
+    '\u24CE',  /*24CE; 24E8; Case map*/\r
+    '\u24CF',  /*24CF; 24E9; Case map*/\r
+    '\u3371',  /*3371; 0068 0070 0061; Additional folding*/\r
+    '\u3373',  /*3373; 0061 0075; Additional folding*/\r
+    '\u3375',  /*3375; 006F 0076; Additional folding*/\r
+    '\u3380',  /*3380; 0070 0061; Additional folding*/\r
+    '\u3381',  /*3381; 006E 0061; Additional folding*/\r
+    '\u3382',  /*3382; 03BC 0061; Additional folding*/\r
+    '\u3383',  /*3383; 006D 0061; Additional folding*/\r
+    '\u3384',  /*3384; 006B 0061; Additional folding*/\r
+    '\u3385',  /*3385; 006B 0062; Additional folding*/\r
+    '\u3386',  /*3386; 006D 0062; Additional folding*/\r
+    '\u3387',  /*3387; 0067 0062; Additional folding*/\r
+    '\u338A',  /*338A; 0070 0066; Additional folding*/\r
+    '\u338B',  /*338B; 006E 0066; Additional folding*/\r
+    '\u338C',  /*338C; 03BC 0066; Additional folding*/\r
+    '\u3390',  /*3390; 0068 007A; Additional folding*/\r
+    '\u3391',  /*3391; 006B 0068 007A; Additional folding*/\r
+    '\u3392',  /*3392; 006D 0068 007A; Additional folding*/\r
+    '\u3393',  /*3393; 0067 0068 007A; Additional folding*/\r
+    '\u3394',  /*3394; 0074 0068 007A; Additional folding*/\r
+    '\u33A9',  /*33A9; 0070 0061; Additional folding*/\r
+    '\u33AA',  /*33AA; 006B 0070 0061; Additional folding*/\r
+    '\u33AB',  /*33AB; 006D 0070 0061; Additional folding*/\r
+    '\u33AC',  /*33AC; 0067 0070 0061; Additional folding*/\r
+    '\u33B4',  /*33B4; 0070 0076; Additional folding*/\r
+    '\u33B5',  /*33B5; 006E 0076; Additional folding*/\r
+    '\u33B6',  /*33B6; 03BC 0076; Additional folding*/\r
+    '\u33B7',  /*33B7; 006D 0076; Additional folding*/\r
+    '\u33B8',  /*33B8; 006B 0076; Additional folding*/\r
+    '\u33B9',  /*33B9; 006D 0076; Additional folding*/\r
+    '\u33BA',  /*33BA; 0070 0077; Additional folding*/\r
+    '\u33BB',  /*33BB; 006E 0077; Additional folding*/\r
+    '\u33BC',  /*33BC; 03BC 0077; Additional folding*/\r
+    '\u33BD',  /*33BD; 006D 0077; Additional folding*/\r
+    '\u33BE',  /*33BE; 006B 0077; Additional folding*/\r
+    '\u33BF',  /*33BF; 006D 0077; Additional folding*/\r
+    '\u33C0',  /*33C0; 006B 03C9; Additional folding*/\r
+    '\u33C1',  /*33C1; 006D 03C9; Additional folding*/\r
+    '\u33C3',  /*33C3; 0062 0071; Additional folding*/\r
+    '\u33C6',  /*33C6; 0063 2215 006B 0067; Additional folding*/\r
+    '\u33C7',  /*33C7; 0063 006F 002E; Additional folding*/\r
+    '\u33C8',  /*33C8; 0064 0062; Additional folding*/\r
+    '\u33C9',  /*33C9; 0067 0079; Additional folding*/\r
+    '\u33CB',  /*33CB; 0068 0070; Additional folding*/\r
+    '\u33CD',  /*33CD; 006B 006B; Additional folding*/\r
+    '\u33CE',  /*33CE; 006B 006D; Additional folding*/\r
+    '\u33D7',  /*33D7; 0070 0068; Additional folding*/\r
+    '\u33D9',  /*33D9; 0070 0070 006D; Additional folding*/\r
+    '\u33DA',  /*33DA; 0070 0072; Additional folding*/\r
+    '\u33DC',  /*33DC; 0073 0076; Additional folding*/\r
+    '\u33DD',  /*33DD; 0077 0062; Additional folding*/\r
+    '\uFB00',  /*FB00; 0066 0066; Case map*/\r
+    '\uFB01',  /*FB01; 0066 0069; Case map*/\r
+    '\uFB02',  /*FB02; 0066 006C; Case map*/\r
+    '\uFB03',  /*FB03; 0066 0066 0069; Case map*/\r
+    '\uFB04',  /*FB04; 0066 0066 006C; Case map*/\r
+    '\uFB05',  /*FB05; 0073 0074; Case map*/\r
+    '\uFB06',  /*FB06; 0073 0074; Case map*/\r
+    '\uFB13',  /*FB13; 0574 0576; Case map*/\r
+    '\uFB14',  /*FB14; 0574 0565; Case map*/\r
+    '\uFB15',  /*FB15; 0574 056B; Case map*/\r
+    '\uFB16',  /*FB16; 057E 0576; Case map*/\r
+    '\uFB17',  /*FB17; 0574 056D; Case map*/\r
+    '\uFF21',  /*FF21; FF41; Case map*/\r
+    '\uFF22',  /*FF22; FF42; Case map*/\r
+    '\uFF23',  /*FF23; FF43; Case map*/\r
+    '\uFF24',  /*FF24; FF44; Case map*/\r
+    '\uFF25',  /*FF25; FF45; Case map*/\r
+    '\uFF26',  /*FF26; FF46; Case map*/\r
+    '\uFF27',  /*FF27; FF47; Case map*/\r
+    '\uFF28',  /*FF28; FF48; Case map*/\r
+    '\uFF29',  /*FF29; FF49; Case map*/\r
+    '\uFF2A',  /*FF2A; FF4A; Case map*/\r
+    '\uFF2B',  /*FF2B; FF4B; Case map*/\r
+    '\uFF2C',  /*FF2C; FF4C; Case map*/\r
+    '\uFF2D',  /*FF2D; FF4D; Case map*/\r
+    '\uFF2E',  /*FF2E; FF4E; Case map*/\r
+    '\uFF2F',  /*FF2F; FF4F; Case map*/\r
+    '\uFF30',  /*FF30; FF50; Case map*/\r
+    '\uFF31',  /*FF31; FF51; Case map*/\r
+    '\uFF32',  /*FF32; FF52; Case map*/\r
+    '\uFF33',  /*FF33; FF53; Case map*/\r
+    '\uFF34',  /*FF34; FF54; Case map*/\r
+    '\uFF35',  /*FF35; FF55; Case map*/\r
+    '\uFF36',  /*FF36; FF56; Case map*/\r
+    '\uFF37',  /*FF37; FF57; Case map*/\r
+    '\uFF38',  /*FF38; FF58; Case map*/\r
+    '\uFF39',  /*FF39; FF59; Case map*/\r
+    '\uFF3A',  /*FF3A; FF5A; Case map*/\r
+  };\r
+
+  public static string[] B2replace = new string[] {\r
+    "\u0061",  /*0041; 0061; Case map*/\r
+    "\u0062",  /*0042; 0062; Case map*/\r
+    "\u0063",  /*0043; 0063; Case map*/\r
+    "\u0064",  /*0044; 0064; Case map*/\r
+    "\u0065",  /*0045; 0065; Case map*/\r
+    "\u0066",  /*0046; 0066; Case map*/\r
+    "\u0067",  /*0047; 0067; Case map*/\r
+    "\u0068",  /*0048; 0068; Case map*/\r
+    "\u0069",  /*0049; 0069; Case map*/\r
+    "\u006A",  /*004A; 006A; Case map*/\r
+    "\u006B",  /*004B; 006B; Case map*/\r
+    "\u006C",  /*004C; 006C; Case map*/\r
+    "\u006D",  /*004D; 006D; Case map*/\r
+    "\u006E",  /*004E; 006E; Case map*/\r
+    "\u006F",  /*004F; 006F; Case map*/\r
+    "\u0070",  /*0050; 0070; Case map*/\r
+    "\u0071",  /*0051; 0071; Case map*/\r
+    "\u0072",  /*0052; 0072; Case map*/\r
+    "\u0073",  /*0053; 0073; Case map*/\r
+    "\u0074",  /*0054; 0074; Case map*/\r
+    "\u0075",  /*0055; 0075; Case map*/\r
+    "\u0076",  /*0056; 0076; Case map*/\r
+    "\u0077",  /*0057; 0077; Case map*/\r
+    "\u0078",  /*0058; 0078; Case map*/\r
+    "\u0079",  /*0059; 0079; Case map*/\r
+    "\u007A",  /*005A; 007A; Case map*/\r
+    "\u03BC",  /*00B5; 03BC; Case map*/\r
+    "\u00E0",  /*00C0; 00E0; Case map*/\r
+    "\u00E1",  /*00C1; 00E1; Case map*/\r
+    "\u00E2",  /*00C2; 00E2; Case map*/\r
+    "\u00E3",  /*00C3; 00E3; Case map*/\r
+    "\u00E4",  /*00C4; 00E4; Case map*/\r
+    "\u00E5",  /*00C5; 00E5; Case map*/\r
+    "\u00E6",  /*00C6; 00E6; Case map*/\r
+    "\u00E7",  /*00C7; 00E7; Case map*/\r
+    "\u00E8",  /*00C8; 00E8; Case map*/\r
+    "\u00E9",  /*00C9; 00E9; Case map*/\r
+    "\u00EA",  /*00CA; 00EA; Case map*/\r
+    "\u00EB",  /*00CB; 00EB; Case map*/\r
+    "\u00EC",  /*00CC; 00EC; Case map*/\r
+    "\u00ED",  /*00CD; 00ED; Case map*/\r
+    "\u00EE",  /*00CE; 00EE; Case map*/\r
+    "\u00EF",  /*00CF; 00EF; Case map*/\r
+    "\u00F0",  /*00D0; 00F0; Case map*/\r
+    "\u00F1",  /*00D1; 00F1; Case map*/\r
+    "\u00F2",  /*00D2; 00F2; Case map*/\r
+    "\u00F3",  /*00D3; 00F3; Case map*/\r
+    "\u00F4",  /*00D4; 00F4; Case map*/\r
+    "\u00F5",  /*00D5; 00F5; Case map*/\r
+    "\u00F6",  /*00D6; 00F6; Case map*/\r
+    "\u00F8",  /*00D8; 00F8; Case map*/\r
+    "\u00F9",  /*00D9; 00F9; Case map*/\r
+    "\u00FA",  /*00DA; 00FA; Case map*/\r
+    "\u00FB",  /*00DB; 00FB; Case map*/\r
+    "\u00FC",  /*00DC; 00FC; Case map*/\r
+    "\u00FD",  /*00DD; 00FD; Case map*/\r
+    "\u00FE",  /*00DE; 00FE; Case map*/\r
+    "\u0073\u0073",    /*00DF; 0073 0073; Case map*/\r
+    "\u0101",  /*0100; 0101; Case map*/\r
+    "\u0103",  /*0102; 0103; Case map*/\r
+    "\u0105",  /*0104; 0105; Case map*/\r
+    "\u0107",  /*0106; 0107; Case map*/\r
+    "\u0109",  /*0108; 0109; Case map*/\r
+    "\u010B",  /*010A; 010B; Case map*/\r
+    "\u010D",  /*010C; 010D; Case map*/\r
+    "\u010F",  /*010E; 010F; Case map*/\r
+    "\u0111",  /*0110; 0111; Case map*/\r
+    "\u0113",  /*0112; 0113; Case map*/\r
+    "\u0115",  /*0114; 0115; Case map*/\r
+    "\u0117",  /*0116; 0117; Case map*/\r
+    "\u0119",  /*0118; 0119; Case map*/\r
+    "\u011B",  /*011A; 011B; Case map*/\r
+    "\u011D",  /*011C; 011D; Case map*/\r
+    "\u011F",  /*011E; 011F; Case map*/\r
+    "\u0121",  /*0120; 0121; Case map*/\r
+    "\u0123",  /*0122; 0123; Case map*/\r
+    "\u0125",  /*0124; 0125; Case map*/\r
+    "\u0127",  /*0126; 0127; Case map*/\r
+    "\u0129",  /*0128; 0129; Case map*/\r
+    "\u012B",  /*012A; 012B; Case map*/\r
+    "\u012D",  /*012C; 012D; Case map*/\r
+    "\u012F",  /*012E; 012F; Case map*/\r
+    "\u0069\u0307",    /*0130; 0069 0307; Case map*/\r
+    "\u0133",  /*0132; 0133; Case map*/\r
+    "\u0135",  /*0134; 0135; Case map*/\r
+    "\u0137",  /*0136; 0137; Case map*/\r
+    "\u013A",  /*0139; 013A; Case map*/\r
+    "\u013C",  /*013B; 013C; Case map*/\r
+    "\u013E",  /*013D; 013E; Case map*/\r
+    "\u0140",  /*013F; 0140; Case map*/\r
+    "\u0142",  /*0141; 0142; Case map*/\r
+    "\u0144",  /*0143; 0144; Case map*/\r
+    "\u0146",  /*0145; 0146; Case map*/\r
+    "\u0148",  /*0147; 0148; Case map*/\r
+    "\u02BC\u006E",    /*0149; 02BC 006E; Case map*/\r
+    "\u014B",  /*014A; 014B; Case map*/\r
+    "\u014D",  /*014C; 014D; Case map*/\r
+    "\u014F",  /*014E; 014F; Case map*/\r
+    "\u0151",  /*0150; 0151; Case map*/\r
+    "\u0153",  /*0152; 0153; Case map*/\r
+    "\u0155",  /*0154; 0155; Case map*/\r
+    "\u0157",  /*0156; 0157; Case map*/\r
+    "\u0159",  /*0158; 0159; Case map*/\r
+    "\u015B",  /*015A; 015B; Case map*/\r
+    "\u015D",  /*015C; 015D; Case map*/\r
+    "\u015F",  /*015E; 015F; Case map*/\r
+    "\u0161",  /*0160; 0161; Case map*/\r
+    "\u0163",  /*0162; 0163; Case map*/\r
+    "\u0165",  /*0164; 0165; Case map*/\r
+    "\u0167",  /*0166; 0167; Case map*/\r
+    "\u0169",  /*0168; 0169; Case map*/\r
+    "\u016B",  /*016A; 016B; Case map*/\r
+    "\u016D",  /*016C; 016D; Case map*/\r
+    "\u016F",  /*016E; 016F; Case map*/\r
+    "\u0171",  /*0170; 0171; Case map*/\r
+    "\u0173",  /*0172; 0173; Case map*/\r
+    "\u0175",  /*0174; 0175; Case map*/\r
+    "\u0177",  /*0176; 0177; Case map*/\r
+    "\u00FF",  /*0178; 00FF; Case map*/\r
+    "\u017A",  /*0179; 017A; Case map*/\r
+    "\u017C",  /*017B; 017C; Case map*/\r
+    "\u017E",  /*017D; 017E; Case map*/\r
+    "\u0073",  /*017F; 0073; Case map*/\r
+    "\u0253",  /*0181; 0253; Case map*/\r
+    "\u0183",  /*0182; 0183; Case map*/\r
+    "\u0185",  /*0184; 0185; Case map*/\r
+    "\u0254",  /*0186; 0254; Case map*/\r
+    "\u0188",  /*0187; 0188; Case map*/\r
+    "\u0256",  /*0189; 0256; Case map*/\r
+    "\u0257",  /*018A; 0257; Case map*/\r
+    "\u018C",  /*018B; 018C; Case map*/\r
+    "\u01DD",  /*018E; 01DD; Case map*/\r
+    "\u0259",  /*018F; 0259; Case map*/\r
+    "\u025B",  /*0190; 025B; Case map*/\r
+    "\u0192",  /*0191; 0192; Case map*/\r
+    "\u0260",  /*0193; 0260; Case map*/\r
+    "\u0263",  /*0194; 0263; Case map*/\r
+    "\u0269",  /*0196; 0269; Case map*/\r
+    "\u0268",  /*0197; 0268; Case map*/\r
+    "\u0199",  /*0198; 0199; Case map*/\r
+    "\u026F",  /*019C; 026F; Case map*/\r
+    "\u0272",  /*019D; 0272; Case map*/\r
+    "\u0275",  /*019F; 0275; Case map*/\r
+    "\u01A1",  /*01A0; 01A1; Case map*/\r
+    "\u01A3",  /*01A2; 01A3; Case map*/\r
+    "\u01A5",  /*01A4; 01A5; Case map*/\r
+    "\u0280",  /*01A6; 0280; Case map*/\r
+    "\u01A8",  /*01A7; 01A8; Case map*/\r
+    "\u0283",  /*01A9; 0283; Case map*/\r
+    "\u01AD",  /*01AC; 01AD; Case map*/\r
+    "\u0288",  /*01AE; 0288; Case map*/\r
+    "\u01B0",  /*01AF; 01B0; Case map*/\r
+    "\u028A",  /*01B1; 028A; Case map*/\r
+    "\u028B",  /*01B2; 028B; Case map*/\r
+    "\u01B4",  /*01B3; 01B4; Case map*/\r
+    "\u01B6",  /*01B5; 01B6; Case map*/\r
+    "\u0292",  /*01B7; 0292; Case map*/\r
+    "\u01B9",  /*01B8; 01B9; Case map*/\r
+    "\u01BD",  /*01BC; 01BD; Case map*/\r
+    "\u01C6",  /*01C4; 01C6; Case map*/\r
+    "\u01C6",  /*01C5; 01C6; Case map*/\r
+    "\u01C9",  /*01C7; 01C9; Case map*/\r
+    "\u01C9",  /*01C8; 01C9; Case map*/\r
+    "\u01CC",  /*01CA; 01CC; Case map*/\r
+    "\u01CC",  /*01CB; 01CC; Case map*/\r
+    "\u01CE",  /*01CD; 01CE; Case map*/\r
+    "\u01D0",  /*01CF; 01D0; Case map*/\r
+    "\u01D2",  /*01D1; 01D2; Case map*/\r
+    "\u01D4",  /*01D3; 01D4; Case map*/\r
+    "\u01D6",  /*01D5; 01D6; Case map*/\r
+    "\u01D8",  /*01D7; 01D8; Case map*/\r
+    "\u01DA",  /*01D9; 01DA; Case map*/\r
+    "\u01DC",  /*01DB; 01DC; Case map*/\r
+    "\u01DF",  /*01DE; 01DF; Case map*/\r
+    "\u01E1",  /*01E0; 01E1; Case map*/\r
+    "\u01E3",  /*01E2; 01E3; Case map*/\r
+    "\u01E5",  /*01E4; 01E5; Case map*/\r
+    "\u01E7",  /*01E6; 01E7; Case map*/\r
+    "\u01E9",  /*01E8; 01E9; Case map*/\r
+    "\u01EB",  /*01EA; 01EB; Case map*/\r
+    "\u01ED",  /*01EC; 01ED; Case map*/\r
+    "\u01EF",  /*01EE; 01EF; Case map*/\r
+    "\u006A\u030C",    /*01F0; 006A 030C; Case map*/\r
+    "\u01F3",  /*01F1; 01F3; Case map*/\r
+    "\u01F3",  /*01F2; 01F3; Case map*/\r
+    "\u01F5",  /*01F4; 01F5; Case map*/\r
+    "\u0195",  /*01F6; 0195; Case map*/\r
+    "\u01BF",  /*01F7; 01BF; Case map*/\r
+    "\u01F9",  /*01F8; 01F9; Case map*/\r
+    "\u01FB",  /*01FA; 01FB; Case map*/\r
+    "\u01FD",  /*01FC; 01FD; Case map*/\r
+    "\u01FF",  /*01FE; 01FF; Case map*/\r
+    "\u0201",  /*0200; 0201; Case map*/\r
+    "\u0203",  /*0202; 0203; Case map*/\r
+    "\u0205",  /*0204; 0205; Case map*/\r
+    "\u0207",  /*0206; 0207; Case map*/\r
+    "\u0209",  /*0208; 0209; Case map*/\r
+    "\u020B",  /*020A; 020B; Case map*/\r
+    "\u020D",  /*020C; 020D; Case map*/\r
+    "\u020F",  /*020E; 020F; Case map*/\r
+    "\u0211",  /*0210; 0211; Case map*/\r
+    "\u0213",  /*0212; 0213; Case map*/\r
+    "\u0215",  /*0214; 0215; Case map*/\r
+    "\u0217",  /*0216; 0217; Case map*/\r
+    "\u0219",  /*0218; 0219; Case map*/\r
+    "\u021B",  /*021A; 021B; Case map*/\r
+    "\u021D",  /*021C; 021D; Case map*/\r
+    "\u021F",  /*021E; 021F; Case map*/\r
+    "\u019E",  /*0220; 019E; Case map*/\r
+    "\u0223",  /*0222; 0223; Case map*/\r
+    "\u0225",  /*0224; 0225; Case map*/\r
+    "\u0227",  /*0226; 0227; Case map*/\r
+    "\u0229",  /*0228; 0229; Case map*/\r
+    "\u022B",  /*022A; 022B; Case map*/\r
+    "\u022D",  /*022C; 022D; Case map*/\r
+    "\u022F",  /*022E; 022F; Case map*/\r
+    "\u0231",  /*0230; 0231; Case map*/\r
+    "\u0233",  /*0232; 0233; Case map*/\r
+    "\u03B9",  /*0345; 03B9; Case map*/\r
+    "\u0020\u03B9",    /*037A; 0020 03B9; Additional folding*/\r
+    "\u03AC",  /*0386; 03AC; Case map*/\r
+    "\u03AD",  /*0388; 03AD; Case map*/\r
+    "\u03AE",  /*0389; 03AE; Case map*/\r
+    "\u03AF",  /*038A; 03AF; Case map*/\r
+    "\u03CC",  /*038C; 03CC; Case map*/\r
+    "\u03CD",  /*038E; 03CD; Case map*/\r
+    "\u03CE",  /*038F; 03CE; Case map*/\r
+    "\u03B9\u0308\u0301",      /*0390; 03B9 0308 0301; Case map*/\r
+    "\u03B1",  /*0391; 03B1; Case map*/\r
+    "\u03B2",  /*0392; 03B2; Case map*/\r
+    "\u03B3",  /*0393; 03B3; Case map*/\r
+    "\u03B4",  /*0394; 03B4; Case map*/\r
+    "\u03B5",  /*0395; 03B5; Case map*/\r
+    "\u03B6",  /*0396; 03B6; Case map*/\r
+    "\u03B7",  /*0397; 03B7; Case map*/\r
+    "\u03B8",  /*0398; 03B8; Case map*/\r
+    "\u03B9",  /*0399; 03B9; Case map*/\r
+    "\u03BA",  /*039A; 03BA; Case map*/\r
+    "\u03BB",  /*039B; 03BB; Case map*/\r
+    "\u03BC",  /*039C; 03BC; Case map*/\r
+    "\u03BD",  /*039D; 03BD; Case map*/\r
+    "\u03BE",  /*039E; 03BE; Case map*/\r
+    "\u03BF",  /*039F; 03BF; Case map*/\r
+    "\u03C0",  /*03A0; 03C0; Case map*/\r
+    "\u03C1",  /*03A1; 03C1; Case map*/\r
+    "\u03C3",  /*03A3; 03C3; Case map*/\r
+    "\u03C4",  /*03A4; 03C4; Case map*/\r
+    "\u03C5",  /*03A5; 03C5; Case map*/\r
+    "\u03C6",  /*03A6; 03C6; Case map*/\r
+    "\u03C7",  /*03A7; 03C7; Case map*/\r
+    "\u03C8",  /*03A8; 03C8; Case map*/\r
+    "\u03C9",  /*03A9; 03C9; Case map*/\r
+    "\u03CA",  /*03AA; 03CA; Case map*/\r
+    "\u03CB",  /*03AB; 03CB; Case map*/\r
+    "\u03C5\u0308\u0301",      /*03B0; 03C5 0308 0301; Case map*/\r
+    "\u03C3",  /*03C2; 03C3; Case map*/\r
+    "\u03B2",  /*03D0; 03B2; Case map*/\r
+    "\u03B8",  /*03D1; 03B8; Case map*/\r
+    "\u03C5",  /*03D2; 03C5; Additional folding*/\r
+    "\u03CD",  /*03D3; 03CD; Additional folding*/\r
+    "\u03CB",  /*03D4; 03CB; Additional folding*/\r
+    "\u03C6",  /*03D5; 03C6; Case map*/\r
+    "\u03C0",  /*03D6; 03C0; Case map*/\r
+    "\u03D9",  /*03D8; 03D9; Case map*/\r
+    "\u03DB",  /*03DA; 03DB; Case map*/\r
+    "\u03DD",  /*03DC; 03DD; Case map*/\r
+    "\u03DF",  /*03DE; 03DF; Case map*/\r
+    "\u03E1",  /*03E0; 03E1; Case map*/\r
+    "\u03E3",  /*03E2; 03E3; Case map*/\r
+    "\u03E5",  /*03E4; 03E5; Case map*/\r
+    "\u03E7",  /*03E6; 03E7; Case map*/\r
+    "\u03E9",  /*03E8; 03E9; Case map*/\r
+    "\u03EB",  /*03EA; 03EB; Case map*/\r
+    "\u03ED",  /*03EC; 03ED; Case map*/\r
+    "\u03EF",  /*03EE; 03EF; Case map*/\r
+    "\u03BA",  /*03F0; 03BA; Case map*/\r
+    "\u03C1",  /*03F1; 03C1; Case map*/\r
+    "\u03C3",  /*03F2; 03C3; Case map*/\r
+    "\u03B8",  /*03F4; 03B8; Case map*/\r
+    "\u03B5",  /*03F5; 03B5; Case map*/\r
+    "\u0450",  /*0400; 0450; Case map*/\r
+    "\u0451",  /*0401; 0451; Case map*/\r
+    "\u0452",  /*0402; 0452; Case map*/\r
+    "\u0453",  /*0403; 0453; Case map*/\r
+    "\u0454",  /*0404; 0454; Case map*/\r
+    "\u0455",  /*0405; 0455; Case map*/\r
+    "\u0456",  /*0406; 0456; Case map*/\r
+    "\u0457",  /*0407; 0457; Case map*/\r
+    "\u0458",  /*0408; 0458; Case map*/\r
+    "\u0459",  /*0409; 0459; Case map*/\r
+    "\u045A",  /*040A; 045A; Case map*/\r
+    "\u045B",  /*040B; 045B; Case map*/\r
+    "\u045C",  /*040C; 045C; Case map*/\r
+    "\u045D",  /*040D; 045D; Case map*/\r
+    "\u045E",  /*040E; 045E; Case map*/\r
+    "\u045F",  /*040F; 045F; Case map*/\r
+    "\u0430",  /*0410; 0430; Case map*/\r
+    "\u0431",  /*0411; 0431; Case map*/\r
+    "\u0432",  /*0412; 0432; Case map*/\r
+    "\u0433",  /*0413; 0433; Case map*/\r
+    "\u0434",  /*0414; 0434; Case map*/\r
+    "\u0435",  /*0415; 0435; Case map*/\r
+    "\u0436",  /*0416; 0436; Case map*/\r
+    "\u0437",  /*0417; 0437; Case map*/\r
+    "\u0438",  /*0418; 0438; Case map*/\r
+    "\u0439",  /*0419; 0439; Case map*/\r
+    "\u043A",  /*041A; 043A; Case map*/\r
+    "\u043B",  /*041B; 043B; Case map*/\r
+    "\u043C",  /*041C; 043C; Case map*/\r
+    "\u043D",  /*041D; 043D; Case map*/\r
+    "\u043E",  /*041E; 043E; Case map*/\r
+    "\u043F",  /*041F; 043F; Case map*/\r
+    "\u0440",  /*0420; 0440; Case map*/\r
+    "\u0441",  /*0421; 0441; Case map*/\r
+    "\u0442",  /*0422; 0442; Case map*/\r
+    "\u0443",  /*0423; 0443; Case map*/\r
+    "\u0444",  /*0424; 0444; Case map*/\r
+    "\u0445",  /*0425; 0445; Case map*/\r
+    "\u0446",  /*0426; 0446; Case map*/\r
+    "\u0447",  /*0427; 0447; Case map*/\r
+    "\u0448",  /*0428; 0448; Case map*/\r
+    "\u0449",  /*0429; 0449; Case map*/\r
+    "\u044A",  /*042A; 044A; Case map*/\r
+    "\u044B",  /*042B; 044B; Case map*/\r
+    "\u044C",  /*042C; 044C; Case map*/\r
+    "\u044D",  /*042D; 044D; Case map*/\r
+    "\u044E",  /*042E; 044E; Case map*/\r
+    "\u044F",  /*042F; 044F; Case map*/\r
+    "\u0461",  /*0460; 0461; Case map*/\r
+    "\u0463",  /*0462; 0463; Case map*/\r
+    "\u0465",  /*0464; 0465; Case map*/\r
+    "\u0467",  /*0466; 0467; Case map*/\r
+    "\u0469",  /*0468; 0469; Case map*/\r
+    "\u046B",  /*046A; 046B; Case map*/\r
+    "\u046D",  /*046C; 046D; Case map*/\r
+    "\u046F",  /*046E; 046F; Case map*/\r
+    "\u0471",  /*0470; 0471; Case map*/\r
+    "\u0473",  /*0472; 0473; Case map*/\r
+    "\u0475",  /*0474; 0475; Case map*/\r
+    "\u0477",  /*0476; 0477; Case map*/\r
+    "\u0479",  /*0478; 0479; Case map*/\r
+    "\u047B",  /*047A; 047B; Case map*/\r
+    "\u047D",  /*047C; 047D; Case map*/\r
+    "\u047F",  /*047E; 047F; Case map*/\r
+    "\u0481",  /*0480; 0481; Case map*/\r
+    "\u048B",  /*048A; 048B; Case map*/\r
+    "\u048D",  /*048C; 048D; Case map*/\r
+    "\u048F",  /*048E; 048F; Case map*/\r
+    "\u0491",  /*0490; 0491; Case map*/\r
+    "\u0493",  /*0492; 0493; Case map*/\r
+    "\u0495",  /*0494; 0495; Case map*/\r
+    "\u0497",  /*0496; 0497; Case map*/\r
+    "\u0499",  /*0498; 0499; Case map*/\r
+    "\u049B",  /*049A; 049B; Case map*/\r
+    "\u049D",  /*049C; 049D; Case map*/\r
+    "\u049F",  /*049E; 049F; Case map*/\r
+    "\u04A1",  /*04A0; 04A1; Case map*/\r
+    "\u04A3",  /*04A2; 04A3; Case map*/\r
+    "\u04A5",  /*04A4; 04A5; Case map*/\r
+    "\u04A7",  /*04A6; 04A7; Case map*/\r
+    "\u04A9",  /*04A8; 04A9; Case map*/\r
+    "\u04AB",  /*04AA; 04AB; Case map*/\r
+    "\u04AD",  /*04AC; 04AD; Case map*/\r
+    "\u04AF",  /*04AE; 04AF; Case map*/\r
+    "\u04B1",  /*04B0; 04B1; Case map*/\r
+    "\u04B3",  /*04B2; 04B3; Case map*/\r
+    "\u04B5",  /*04B4; 04B5; Case map*/\r
+    "\u04B7",  /*04B6; 04B7; Case map*/\r
+    "\u04B9",  /*04B8; 04B9; Case map*/\r
+    "\u04BB",  /*04BA; 04BB; Case map*/\r
+    "\u04BD",  /*04BC; 04BD; Case map*/\r
+    "\u04BF",  /*04BE; 04BF; Case map*/\r
+    "\u04C2",  /*04C1; 04C2; Case map*/\r
+    "\u04C4",  /*04C3; 04C4; Case map*/\r
+    "\u04C6",  /*04C5; 04C6; Case map*/\r
+    "\u04C8",  /*04C7; 04C8; Case map*/\r
+    "\u04CA",  /*04C9; 04CA; Case map*/\r
+    "\u04CC",  /*04CB; 04CC; Case map*/\r
+    "\u04CE",  /*04CD; 04CE; Case map*/\r
+    "\u04D1",  /*04D0; 04D1; Case map*/\r
+    "\u04D3",  /*04D2; 04D3; Case map*/\r
+    "\u04D5",  /*04D4; 04D5; Case map*/\r
+    "\u04D7",  /*04D6; 04D7; Case map*/\r
+    "\u04D9",  /*04D8; 04D9; Case map*/\r
+    "\u04DB",  /*04DA; 04DB; Case map*/\r
+    "\u04DD",  /*04DC; 04DD; Case map*/\r
+    "\u04DF",  /*04DE; 04DF; Case map*/\r
+    "\u04E1",  /*04E0; 04E1; Case map*/\r
+    "\u04E3",  /*04E2; 04E3; Case map*/\r
+    "\u04E5",  /*04E4; 04E5; Case map*/\r
+    "\u04E7",  /*04E6; 04E7; Case map*/\r
+    "\u04E9",  /*04E8; 04E9; Case map*/\r
+    "\u04EB",  /*04EA; 04EB; Case map*/\r
+    "\u04ED",  /*04EC; 04ED; Case map*/\r
+    "\u04EF",  /*04EE; 04EF; Case map*/\r
+    "\u04F1",  /*04F0; 04F1; Case map*/\r
+    "\u04F3",  /*04F2; 04F3; Case map*/\r
+    "\u04F5",  /*04F4; 04F5; Case map*/\r
+    "\u04F9",  /*04F8; 04F9; Case map*/\r
+    "\u0501",  /*0500; 0501; Case map*/\r
+    "\u0503",  /*0502; 0503; Case map*/\r
+    "\u0505",  /*0504; 0505; Case map*/\r
+    "\u0507",  /*0506; 0507; Case map*/\r
+    "\u0509",  /*0508; 0509; Case map*/\r
+    "\u050B",  /*050A; 050B; Case map*/\r
+    "\u050D",  /*050C; 050D; Case map*/\r
+    "\u050F",  /*050E; 050F; Case map*/\r
+    "\u0561",  /*0531; 0561; Case map*/\r
+    "\u0562",  /*0532; 0562; Case map*/\r
+    "\u0563",  /*0533; 0563; Case map*/\r
+    "\u0564",  /*0534; 0564; Case map*/\r
+    "\u0565",  /*0535; 0565; Case map*/\r
+    "\u0566",  /*0536; 0566; Case map*/\r
+    "\u0567",  /*0537; 0567; Case map*/\r
+    "\u0568",  /*0538; 0568; Case map*/\r
+    "\u0569",  /*0539; 0569; Case map*/\r
+    "\u056A",  /*053A; 056A; Case map*/\r
+    "\u056B",  /*053B; 056B; Case map*/\r
+    "\u056C",  /*053C; 056C; Case map*/\r
+    "\u056D",  /*053D; 056D; Case map*/\r
+    "\u056E",  /*053E; 056E; Case map*/\r
+    "\u056F",  /*053F; 056F; Case map*/\r
+    "\u0570",  /*0540; 0570; Case map*/\r
+    "\u0571",  /*0541; 0571; Case map*/\r
+    "\u0572",  /*0542; 0572; Case map*/\r
+    "\u0573",  /*0543; 0573; Case map*/\r
+    "\u0574",  /*0544; 0574; Case map*/\r
+    "\u0575",  /*0545; 0575; Case map*/\r
+    "\u0576",  /*0546; 0576; Case map*/\r
+    "\u0577",  /*0547; 0577; Case map*/\r
+    "\u0578",  /*0548; 0578; Case map*/\r
+    "\u0579",  /*0549; 0579; Case map*/\r
+    "\u057A",  /*054A; 057A; Case map*/\r
+    "\u057B",  /*054B; 057B; Case map*/\r
+    "\u057C",  /*054C; 057C; Case map*/\r
+    "\u057D",  /*054D; 057D; Case map*/\r
+    "\u057E",  /*054E; 057E; Case map*/\r
+    "\u057F",  /*054F; 057F; Case map*/\r
+    "\u0580",  /*0550; 0580; Case map*/\r
+    "\u0581",  /*0551; 0581; Case map*/\r
+    "\u0582",  /*0552; 0582; Case map*/\r
+    "\u0583",  /*0553; 0583; Case map*/\r
+    "\u0584",  /*0554; 0584; Case map*/\r
+    "\u0585",  /*0555; 0585; Case map*/\r
+    "\u0586",  /*0556; 0586; Case map*/\r
+    "\u0565\u0582",    /*0587; 0565 0582; Case map*/\r
+    "\u1E01",  /*1E00; 1E01; Case map*/\r
+    "\u1E03",  /*1E02; 1E03; Case map*/\r
+    "\u1E05",  /*1E04; 1E05; Case map*/\r
+    "\u1E07",  /*1E06; 1E07; Case map*/\r
+    "\u1E09",  /*1E08; 1E09; Case map*/\r
+    "\u1E0B",  /*1E0A; 1E0B; Case map*/\r
+    "\u1E0D",  /*1E0C; 1E0D; Case map*/\r
+    "\u1E0F",  /*1E0E; 1E0F; Case map*/\r
+    "\u1E11",  /*1E10; 1E11; Case map*/\r
+    "\u1E13",  /*1E12; 1E13; Case map*/\r
+    "\u1E15",  /*1E14; 1E15; Case map*/\r
+    "\u1E17",  /*1E16; 1E17; Case map*/\r
+    "\u1E19",  /*1E18; 1E19; Case map*/\r
+    "\u1E1B",  /*1E1A; 1E1B; Case map*/\r
+    "\u1E1D",  /*1E1C; 1E1D; Case map*/\r
+    "\u1E1F",  /*1E1E; 1E1F; Case map*/\r
+    "\u1E21",  /*1E20; 1E21; Case map*/\r
+    "\u1E23",  /*1E22; 1E23; Case map*/\r
+    "\u1E25",  /*1E24; 1E25; Case map*/\r
+    "\u1E27",  /*1E26; 1E27; Case map*/\r
+    "\u1E29",  /*1E28; 1E29; Case map*/\r
+    "\u1E2B",  /*1E2A; 1E2B; Case map*/\r
+    "\u1E2D",  /*1E2C; 1E2D; Case map*/\r
+    "\u1E2F",  /*1E2E; 1E2F; Case map*/\r
+    "\u1E31",  /*1E30; 1E31; Case map*/\r
+    "\u1E33",  /*1E32; 1E33; Case map*/\r
+    "\u1E35",  /*1E34; 1E35; Case map*/\r
+    "\u1E37",  /*1E36; 1E37; Case map*/\r
+    "\u1E39",  /*1E38; 1E39; Case map*/\r
+    "\u1E3B",  /*1E3A; 1E3B; Case map*/\r
+    "\u1E3D",  /*1E3C; 1E3D; Case map*/\r
+    "\u1E3F",  /*1E3E; 1E3F; Case map*/\r
+    "\u1E41",  /*1E40; 1E41; Case map*/\r
+    "\u1E43",  /*1E42; 1E43; Case map*/\r
+    "\u1E45",  /*1E44; 1E45; Case map*/\r
+    "\u1E47",  /*1E46; 1E47; Case map*/\r
+    "\u1E49",  /*1E48; 1E49; Case map*/\r
+    "\u1E4B",  /*1E4A; 1E4B; Case map*/\r
+    "\u1E4D",  /*1E4C; 1E4D; Case map*/\r
+    "\u1E4F",  /*1E4E; 1E4F; Case map*/\r
+    "\u1E51",  /*1E50; 1E51; Case map*/\r
+    "\u1E53",  /*1E52; 1E53; Case map*/\r
+    "\u1E55",  /*1E54; 1E55; Case map*/\r
+    "\u1E57",  /*1E56; 1E57; Case map*/\r
+    "\u1E59",  /*1E58; 1E59; Case map*/\r
+    "\u1E5B",  /*1E5A; 1E5B; Case map*/\r
+    "\u1E5D",  /*1E5C; 1E5D; Case map*/\r
+    "\u1E5F",  /*1E5E; 1E5F; Case map*/\r
+    "\u1E61",  /*1E60; 1E61; Case map*/\r
+    "\u1E63",  /*1E62; 1E63; Case map*/\r
+    "\u1E65",  /*1E64; 1E65; Case map*/\r
+    "\u1E67",  /*1E66; 1E67; Case map*/\r
+    "\u1E69",  /*1E68; 1E69; Case map*/\r
+    "\u1E6B",  /*1E6A; 1E6B; Case map*/\r
+    "\u1E6D",  /*1E6C; 1E6D; Case map*/\r
+    "\u1E6F",  /*1E6E; 1E6F; Case map*/\r
+    "\u1E71",  /*1E70; 1E71; Case map*/\r
+    "\u1E73",  /*1E72; 1E73; Case map*/\r
+    "\u1E75",  /*1E74; 1E75; Case map*/\r
+    "\u1E77",  /*1E76; 1E77; Case map*/\r
+    "\u1E79",  /*1E78; 1E79; Case map*/\r
+    "\u1E7B",  /*1E7A; 1E7B; Case map*/\r
+    "\u1E7D",  /*1E7C; 1E7D; Case map*/\r
+    "\u1E7F",  /*1E7E; 1E7F; Case map*/\r
+    "\u1E81",  /*1E80; 1E81; Case map*/\r
+    "\u1E83",  /*1E82; 1E83; Case map*/\r
+    "\u1E85",  /*1E84; 1E85; Case map*/\r
+    "\u1E87",  /*1E86; 1E87; Case map*/\r
+    "\u1E89",  /*1E88; 1E89; Case map*/\r
+    "\u1E8B",  /*1E8A; 1E8B; Case map*/\r
+    "\u1E8D",  /*1E8C; 1E8D; Case map*/\r
+    "\u1E8F",  /*1E8E; 1E8F; Case map*/\r
+    "\u1E91",  /*1E90; 1E91; Case map*/\r
+    "\u1E93",  /*1E92; 1E93; Case map*/\r
+    "\u1E95",  /*1E94; 1E95; Case map*/\r
+    "\u0068\u0331",    /*1E96; 0068 0331; Case map*/\r
+    "\u0074\u0308",    /*1E97; 0074 0308; Case map*/\r
+    "\u0077\u030A",    /*1E98; 0077 030A; Case map*/\r
+    "\u0079\u030A",    /*1E99; 0079 030A; Case map*/\r
+    "\u0061\u02BE",    /*1E9A; 0061 02BE; Case map*/\r
+    "\u1E61",  /*1E9B; 1E61; Case map*/\r
+    "\u1EA1",  /*1EA0; 1EA1; Case map*/\r
+    "\u1EA3",  /*1EA2; 1EA3; Case map*/\r
+    "\u1EA5",  /*1EA4; 1EA5; Case map*/\r
+    "\u1EA7",  /*1EA6; 1EA7; Case map*/\r
+    "\u1EA9",  /*1EA8; 1EA9; Case map*/\r
+    "\u1EAB",  /*1EAA; 1EAB; Case map*/\r
+    "\u1EAD",  /*1EAC; 1EAD; Case map*/\r
+    "\u1EAF",  /*1EAE; 1EAF; Case map*/\r
+    "\u1EB1",  /*1EB0; 1EB1; Case map*/\r
+    "\u1EB3",  /*1EB2; 1EB3; Case map*/\r
+    "\u1EB5",  /*1EB4; 1EB5; Case map*/\r
+    "\u1EB7",  /*1EB6; 1EB7; Case map*/\r
+    "\u1EB9",  /*1EB8; 1EB9; Case map*/\r
+    "\u1EBB",  /*1EBA; 1EBB; Case map*/\r
+    "\u1EBD",  /*1EBC; 1EBD; Case map*/\r
+    "\u1EBF",  /*1EBE; 1EBF; Case map*/\r
+    "\u1EC1",  /*1EC0; 1EC1; Case map*/\r
+    "\u1EC3",  /*1EC2; 1EC3; Case map*/\r
+    "\u1EC5",  /*1EC4; 1EC5; Case map*/\r
+    "\u1EC7",  /*1EC6; 1EC7; Case map*/\r
+    "\u1EC9",  /*1EC8; 1EC9; Case map*/\r
+    "\u1ECB",  /*1ECA; 1ECB; Case map*/\r
+    "\u1ECD",  /*1ECC; 1ECD; Case map*/\r
+    "\u1ECF",  /*1ECE; 1ECF; Case map*/\r
+    "\u1ED1",  /*1ED0; 1ED1; Case map*/\r
+    "\u1ED3",  /*1ED2; 1ED3; Case map*/\r
+    "\u1ED5",  /*1ED4; 1ED5; Case map*/\r
+    "\u1ED7",  /*1ED6; 1ED7; Case map*/\r
+    "\u1ED9",  /*1ED8; 1ED9; Case map*/\r
+    "\u1EDB",  /*1EDA; 1EDB; Case map*/\r
+    "\u1EDD",  /*1EDC; 1EDD; Case map*/\r
+    "\u1EDF",  /*1EDE; 1EDF; Case map*/\r
+    "\u1EE1",  /*1EE0; 1EE1; Case map*/\r
+    "\u1EE3",  /*1EE2; 1EE3; Case map*/\r
+    "\u1EE5",  /*1EE4; 1EE5; Case map*/\r
+    "\u1EE7",  /*1EE6; 1EE7; Case map*/\r
+    "\u1EE9",  /*1EE8; 1EE9; Case map*/\r
+    "\u1EEB",  /*1EEA; 1EEB; Case map*/\r
+    "\u1EED",  /*1EEC; 1EED; Case map*/\r
+    "\u1EEF",  /*1EEE; 1EEF; Case map*/\r
+    "\u1EF1",  /*1EF0; 1EF1; Case map*/\r
+    "\u1EF3",  /*1EF2; 1EF3; Case map*/\r
+    "\u1EF5",  /*1EF4; 1EF5; Case map*/\r
+    "\u1EF7",  /*1EF6; 1EF7; Case map*/\r
+    "\u1EF9",  /*1EF8; 1EF9; Case map*/\r
+    "\u1F00",  /*1F08; 1F00; Case map*/\r
+    "\u1F01",  /*1F09; 1F01; Case map*/\r
+    "\u1F02",  /*1F0A; 1F02; Case map*/\r
+    "\u1F03",  /*1F0B; 1F03; Case map*/\r
+    "\u1F04",  /*1F0C; 1F04; Case map*/\r
+    "\u1F05",  /*1F0D; 1F05; Case map*/\r
+    "\u1F06",  /*1F0E; 1F06; Case map*/\r
+    "\u1F07",  /*1F0F; 1F07; Case map*/\r
+    "\u1F10",  /*1F18; 1F10; Case map*/\r
+    "\u1F11",  /*1F19; 1F11; Case map*/\r
+    "\u1F12",  /*1F1A; 1F12; Case map*/\r
+    "\u1F13",  /*1F1B; 1F13; Case map*/\r
+    "\u1F14",  /*1F1C; 1F14; Case map*/\r
+    "\u1F15",  /*1F1D; 1F15; Case map*/\r
+    "\u1F20",  /*1F28; 1F20; Case map*/\r
+    "\u1F21",  /*1F29; 1F21; Case map*/\r
+    "\u1F22",  /*1F2A; 1F22; Case map*/\r
+    "\u1F23",  /*1F2B; 1F23; Case map*/\r
+    "\u1F24",  /*1F2C; 1F24; Case map*/\r
+    "\u1F25",  /*1F2D; 1F25; Case map*/\r
+    "\u1F26",  /*1F2E; 1F26; Case map*/\r
+    "\u1F27",  /*1F2F; 1F27; Case map*/\r
+    "\u1F30",  /*1F38; 1F30; Case map*/\r
+    "\u1F31",  /*1F39; 1F31; Case map*/\r
+    "\u1F32",  /*1F3A; 1F32; Case map*/\r
+    "\u1F33",  /*1F3B; 1F33; Case map*/\r
+    "\u1F34",  /*1F3C; 1F34; Case map*/\r
+    "\u1F35",  /*1F3D; 1F35; Case map*/\r
+    "\u1F36",  /*1F3E; 1F36; Case map*/\r
+    "\u1F37",  /*1F3F; 1F37; Case map*/\r
+    "\u1F40",  /*1F48; 1F40; Case map*/\r
+    "\u1F41",  /*1F49; 1F41; Case map*/\r
+    "\u1F42",  /*1F4A; 1F42; Case map*/\r
+    "\u1F43",  /*1F4B; 1F43; Case map*/\r
+    "\u1F44",  /*1F4C; 1F44; Case map*/\r
+    "\u1F45",  /*1F4D; 1F45; Case map*/\r
+    "\u03C5\u0313",    /*1F50; 03C5 0313; Case map*/\r
+    "\u03C5\u0313\u0300",      /*1F52; 03C5 0313 0300; Case map*/\r
+    "\u03C5\u0313\u0301",      /*1F54; 03C5 0313 0301; Case map*/\r
+    "\u03C5\u0313\u0342",      /*1F56; 03C5 0313 0342; Case map*/\r
+    "\u1F51",  /*1F59; 1F51; Case map*/\r
+    "\u1F53",  /*1F5B; 1F53; Case map*/\r
+    "\u1F55",  /*1F5D; 1F55; Case map*/\r
+    "\u1F57",  /*1F5F; 1F57; Case map*/\r
+    "\u1F60",  /*1F68; 1F60; Case map*/\r
+    "\u1F61",  /*1F69; 1F61; Case map*/\r
+    "\u1F62",  /*1F6A; 1F62; Case map*/\r
+    "\u1F63",  /*1F6B; 1F63; Case map*/\r
+    "\u1F64",  /*1F6C; 1F64; Case map*/\r
+    "\u1F65",  /*1F6D; 1F65; Case map*/\r
+    "\u1F66",  /*1F6E; 1F66; Case map*/\r
+    "\u1F67",  /*1F6F; 1F67; Case map*/\r
+    "\u1F00\u03B9",    /*1F80; 1F00 03B9; Case map*/\r
+    "\u1F01\u03B9",    /*1F81; 1F01 03B9; Case map*/\r
+    "\u1F02\u03B9",    /*1F82; 1F02 03B9; Case map*/\r
+    "\u1F03\u03B9",    /*1F83; 1F03 03B9; Case map*/\r
+    "\u1F04\u03B9",    /*1F84; 1F04 03B9; Case map*/\r
+    "\u1F05\u03B9",    /*1F85; 1F05 03B9; Case map*/\r
+    "\u1F06\u03B9",    /*1F86; 1F06 03B9; Case map*/\r
+    "\u1F07\u03B9",    /*1F87; 1F07 03B9; Case map*/\r
+    "\u1F00\u03B9",    /*1F88; 1F00 03B9; Case map*/\r
+    "\u1F01\u03B9",    /*1F89; 1F01 03B9; Case map*/\r
+    "\u1F02\u03B9",    /*1F8A; 1F02 03B9; Case map*/\r
+    "\u1F03\u03B9",    /*1F8B; 1F03 03B9; Case map*/\r
+    "\u1F04\u03B9",    /*1F8C; 1F04 03B9; Case map*/\r
+    "\u1F05\u03B9",    /*1F8D; 1F05 03B9; Case map*/\r
+    "\u1F06\u03B9",    /*1F8E; 1F06 03B9; Case map*/\r
+    "\u1F07\u03B9",    /*1F8F; 1F07 03B9; Case map*/\r
+    "\u1F20\u03B9",    /*1F90; 1F20 03B9; Case map*/\r
+    "\u1F21\u03B9",    /*1F91; 1F21 03B9; Case map*/\r
+    "\u1F22\u03B9",    /*1F92; 1F22 03B9; Case map*/\r
+    "\u1F23\u03B9",    /*1F93; 1F23 03B9; Case map*/\r
+    "\u1F24\u03B9",    /*1F94; 1F24 03B9; Case map*/\r
+    "\u1F25\u03B9",    /*1F95; 1F25 03B9; Case map*/\r
+    "\u1F26\u03B9",    /*1F96; 1F26 03B9; Case map*/\r
+    "\u1F27\u03B9",    /*1F97; 1F27 03B9; Case map*/\r
+    "\u1F20\u03B9",    /*1F98; 1F20 03B9; Case map*/\r
+    "\u1F21\u03B9",    /*1F99; 1F21 03B9; Case map*/\r
+    "\u1F22\u03B9",    /*1F9A; 1F22 03B9; Case map*/\r
+    "\u1F23\u03B9",    /*1F9B; 1F23 03B9; Case map*/\r
+    "\u1F24\u03B9",    /*1F9C; 1F24 03B9; Case map*/\r
+    "\u1F25\u03B9",    /*1F9D; 1F25 03B9; Case map*/\r
+    "\u1F26\u03B9",    /*1F9E; 1F26 03B9; Case map*/\r
+    "\u1F27\u03B9",    /*1F9F; 1F27 03B9; Case map*/\r
+    "\u1F60\u03B9",    /*1FA0; 1F60 03B9; Case map*/\r
+    "\u1F61\u03B9",    /*1FA1; 1F61 03B9; Case map*/\r
+    "\u1F62\u03B9",    /*1FA2; 1F62 03B9; Case map*/\r
+    "\u1F63\u03B9",    /*1FA3; 1F63 03B9; Case map*/\r
+    "\u1F64\u03B9",    /*1FA4; 1F64 03B9; Case map*/\r
+    "\u1F65\u03B9",    /*1FA5; 1F65 03B9; Case map*/\r
+    "\u1F66\u03B9",    /*1FA6; 1F66 03B9; Case map*/\r
+    "\u1F67\u03B9",    /*1FA7; 1F67 03B9; Case map*/\r
+    "\u1F60\u03B9",    /*1FA8; 1F60 03B9; Case map*/\r
+    "\u1F61\u03B9",    /*1FA9; 1F61 03B9; Case map*/\r
+    "\u1F62\u03B9",    /*1FAA; 1F62 03B9; Case map*/\r
+    "\u1F63\u03B9",    /*1FAB; 1F63 03B9; Case map*/\r
+    "\u1F64\u03B9",    /*1FAC; 1F64 03B9; Case map*/\r
+    "\u1F65\u03B9",    /*1FAD; 1F65 03B9; Case map*/\r
+    "\u1F66\u03B9",    /*1FAE; 1F66 03B9; Case map*/\r
+    "\u1F67\u03B9",    /*1FAF; 1F67 03B9; Case map*/\r
+    "\u1F70\u03B9",    /*1FB2; 1F70 03B9; Case map*/\r
+    "\u03B1\u03B9",    /*1FB3; 03B1 03B9; Case map*/\r
+    "\u03AC\u03B9",    /*1FB4; 03AC 03B9; Case map*/\r
+    "\u03B1\u0342",    /*1FB6; 03B1 0342; Case map*/\r
+    "\u03B1\u0342\u03B9",      /*1FB7; 03B1 0342 03B9; Case map*/\r
+    "\u1FB0",  /*1FB8; 1FB0; Case map*/\r
+    "\u1FB1",  /*1FB9; 1FB1; Case map*/\r
+    "\u1F70",  /*1FBA; 1F70; Case map*/\r
+    "\u1F71",  /*1FBB; 1F71; Case map*/\r
+    "\u03B1\u03B9",    /*1FBC; 03B1 03B9; Case map*/\r
+    "\u03B9",  /*1FBE; 03B9; Case map*/\r
+    "\u1F74\u03B9",    /*1FC2; 1F74 03B9; Case map*/\r
+    "\u03B7\u03B9",    /*1FC3; 03B7 03B9; Case map*/\r
+    "\u03AE\u03B9",    /*1FC4; 03AE 03B9; Case map*/\r
+    "\u03B7\u0342",    /*1FC6; 03B7 0342; Case map*/\r
+    "\u03B7\u0342\u03B9",      /*1FC7; 03B7 0342 03B9; Case map*/\r
+    "\u1F72",  /*1FC8; 1F72; Case map*/\r
+    "\u1F73",  /*1FC9; 1F73; Case map*/\r
+    "\u1F74",  /*1FCA; 1F74; Case map*/\r
+    "\u1F75",  /*1FCB; 1F75; Case map*/\r
+    "\u03B7\u03B9",    /*1FCC; 03B7 03B9; Case map*/\r
+    "\u03B9\u0308\u0300",      /*1FD2; 03B9 0308 0300; Case map*/\r
+    "\u03B9\u0308\u0301",      /*1FD3; 03B9 0308 0301; Case map*/\r
+    "\u03B9\u0342",    /*1FD6; 03B9 0342; Case map*/\r
+    "\u03B9\u0308\u0342",      /*1FD7; 03B9 0308 0342; Case map*/\r
+    "\u1FD0",  /*1FD8; 1FD0; Case map*/\r
+    "\u1FD1",  /*1FD9; 1FD1; Case map*/\r
+    "\u1F76",  /*1FDA; 1F76; Case map*/\r
+    "\u1F77",  /*1FDB; 1F77; Case map*/\r
+    "\u03C5\u0308\u0300",      /*1FE2; 03C5 0308 0300; Case map*/\r
+    "\u03C5\u0308\u0301",      /*1FE3; 03C5 0308 0301; Case map*/\r
+    "\u03C1\u0313",    /*1FE4; 03C1 0313; Case map*/\r
+    "\u03C5\u0342",    /*1FE6; 03C5 0342; Case map*/\r
+    "\u03C5\u0308\u0342",      /*1FE7; 03C5 0308 0342; Case map*/\r
+    "\u1FE0",  /*1FE8; 1FE0; Case map*/\r
+    "\u1FE1",  /*1FE9; 1FE1; Case map*/\r
+    "\u1F7A",  /*1FEA; 1F7A; Case map*/\r
+    "\u1F7B",  /*1FEB; 1F7B; Case map*/\r
+    "\u1FE5",  /*1FEC; 1FE5; Case map*/\r
+    "\u1F7C\u03B9",    /*1FF2; 1F7C 03B9; Case map*/\r
+    "\u03C9\u03B9",    /*1FF3; 03C9 03B9; Case map*/\r
+    "\u03CE\u03B9",    /*1FF4; 03CE 03B9; Case map*/\r
+    "\u03C9\u0342",    /*1FF6; 03C9 0342; Case map*/\r
+    "\u03C9\u0342\u03B9",      /*1FF7; 03C9 0342 03B9; Case map*/\r
+    "\u1F78",  /*1FF8; 1F78; Case map*/\r
+    "\u1F79",  /*1FF9; 1F79; Case map*/\r
+    "\u1F7C",  /*1FFA; 1F7C; Case map*/\r
+    "\u1F7D",  /*1FFB; 1F7D; Case map*/\r
+    "\u03C9\u03B9",    /*1FFC; 03C9 03B9; Case map*/\r
+    "\u0072\u0073",    /*20A8; 0072 0073; Additional folding*/\r
+    "\u0063",  /*2102; 0063; Additional folding*/\r
+    "\u00B0\u0063",    /*2103; 00B0 0063; Additional folding*/\r
+    "\u025B",  /*2107; 025B; Additional folding*/\r
+    "\u00B0\u0066",    /*2109; 00B0 0066; Additional folding*/\r
+    "\u0068",  /*210B; 0068; Additional folding*/\r
+    "\u0068",  /*210C; 0068; Additional folding*/\r
+    "\u0068",  /*210D; 0068; Additional folding*/\r
+    "\u0069",  /*2110; 0069; Additional folding*/\r
+    "\u0069",  /*2111; 0069; Additional folding*/\r
+    "\u006C",  /*2112; 006C; Additional folding*/\r
+    "\u006E",  /*2115; 006E; Additional folding*/\r
+    "\u006E\u006F",    /*2116; 006E 006F; Additional folding*/\r
+    "\u0070",  /*2119; 0070; Additional folding*/\r
+    "\u0071",  /*211A; 0071; Additional folding*/\r
+    "\u0072",  /*211B; 0072; Additional folding*/\r
+    "\u0072",  /*211C; 0072; Additional folding*/\r
+    "\u0072",  /*211D; 0072; Additional folding*/\r
+    "\u0073\u006D",    /*2120; 0073 006D; Additional folding*/\r
+    "\u0074\u0065\u006C",      /*2121; 0074 0065 006C; Additional folding*/\r
+    "\u0074\u006D",    /*2122; 0074 006D; Additional folding*/\r
+    "\u007A",  /*2124; 007A; Additional folding*/\r
+    "\u03C9",  /*2126; 03C9; Case map*/\r
+    "\u007A",  /*2128; 007A; Additional folding*/\r
+    "\u006B",  /*212A; 006B; Case map*/\r
+    "\u00E5",  /*212B; 00E5; Case map*/\r
+    "\u0062",  /*212C; 0062; Additional folding*/\r
+    "\u0063",  /*212D; 0063; Additional folding*/\r
+    "\u0065",  /*2130; 0065; Additional folding*/\r
+    "\u0066",  /*2131; 0066; Additional folding*/\r
+    "\u006D",  /*2133; 006D; Additional folding*/\r
+    "\u03B3",  /*213E; 03B3; Additional folding*/\r
+    "\u03C0",  /*213F; 03C0; Additional folding*/\r
+    "\u0064",  /*2145; 0064; Additional folding*/\r
+    "\u2170",  /*2160; 2170; Case map*/\r
+    "\u2171",  /*2161; 2171; Case map*/\r
+    "\u2172",  /*2162; 2172; Case map*/\r
+    "\u2173",  /*2163; 2173; Case map*/\r
+    "\u2174",  /*2164; 2174; Case map*/\r
+    "\u2175",  /*2165; 2175; Case map*/\r
+    "\u2176",  /*2166; 2176; Case map*/\r
+    "\u2177",  /*2167; 2177; Case map*/\r
+    "\u2178",  /*2168; 2178; Case map*/\r
+    "\u2179",  /*2169; 2179; Case map*/\r
+    "\u217A",  /*216A; 217A; Case map*/\r
+    "\u217B",  /*216B; 217B; Case map*/\r
+    "\u217C",  /*216C; 217C; Case map*/\r
+    "\u217D",  /*216D; 217D; Case map*/\r
+    "\u217E",  /*216E; 217E; Case map*/\r
+    "\u217F",  /*216F; 217F; Case map*/\r
+    "\u24D0",  /*24B6; 24D0; Case map*/\r
+    "\u24D1",  /*24B7; 24D1; Case map*/\r
+    "\u24D2",  /*24B8; 24D2; Case map*/\r
+    "\u24D3",  /*24B9; 24D3; Case map*/\r
+    "\u24D4",  /*24BA; 24D4; Case map*/\r
+    "\u24D5",  /*24BB; 24D5; Case map*/\r
+    "\u24D6",  /*24BC; 24D6; Case map*/\r
+    "\u24D7",  /*24BD; 24D7; Case map*/\r
+    "\u24D8",  /*24BE; 24D8; Case map*/\r
+    "\u24D9",  /*24BF; 24D9; Case map*/\r
+    "\u24DA",  /*24C0; 24DA; Case map*/\r
+    "\u24DB",  /*24C1; 24DB; Case map*/\r
+    "\u24DC",  /*24C2; 24DC; Case map*/\r
+    "\u24DD",  /*24C3; 24DD; Case map*/\r
+    "\u24DE",  /*24C4; 24DE; Case map*/\r
+    "\u24DF",  /*24C5; 24DF; Case map*/\r
+    "\u24E0",  /*24C6; 24E0; Case map*/\r
+    "\u24E1",  /*24C7; 24E1; Case map*/\r
+    "\u24E2",  /*24C8; 24E2; Case map*/\r
+    "\u24E3",  /*24C9; 24E3; Case map*/\r
+    "\u24E4",  /*24CA; 24E4; Case map*/\r
+    "\u24E5",  /*24CB; 24E5; Case map*/\r
+    "\u24E6",  /*24CC; 24E6; Case map*/\r
+    "\u24E7",  /*24CD; 24E7; Case map*/\r
+    "\u24E8",  /*24CE; 24E8; Case map*/\r
+    "\u24E9",  /*24CF; 24E9; Case map*/\r
+    "\u0068\u0070\u0061",      /*3371; 0068 0070 0061; Additional folding*/\r
+    "\u0061\u0075",    /*3373; 0061 0075; Additional folding*/\r
+    "\u006F\u0076",    /*3375; 006F 0076; Additional folding*/\r
+    "\u0070\u0061",    /*3380; 0070 0061; Additional folding*/\r
+    "\u006E\u0061",    /*3381; 006E 0061; Additional folding*/\r
+    "\u03BC\u0061",    /*3382; 03BC 0061; Additional folding*/\r
+    "\u006D\u0061",    /*3383; 006D 0061; Additional folding*/\r
+    "\u006B\u0061",    /*3384; 006B 0061; Additional folding*/\r
+    "\u006B\u0062",    /*3385; 006B 0062; Additional folding*/\r
+    "\u006D\u0062",    /*3386; 006D 0062; Additional folding*/\r
+    "\u0067\u0062",    /*3387; 0067 0062; Additional folding*/\r
+    "\u0070\u0066",    /*338A; 0070 0066; Additional folding*/\r
+    "\u006E\u0066",    /*338B; 006E 0066; Additional folding*/\r
+    "\u03BC\u0066",    /*338C; 03BC 0066; Additional folding*/\r
+    "\u0068\u007A",    /*3390; 0068 007A; Additional folding*/\r
+    "\u006B\u0068\u007A",      /*3391; 006B 0068 007A; Additional folding*/\r
+    "\u006D\u0068\u007A",      /*3392; 006D 0068 007A; Additional folding*/\r
+    "\u0067\u0068\u007A",      /*3393; 0067 0068 007A; Additional folding*/\r
+    "\u0074\u0068\u007A",      /*3394; 0074 0068 007A; Additional folding*/\r
+    "\u0070\u0061",    /*33A9; 0070 0061; Additional folding*/\r
+    "\u006B\u0070\u0061",      /*33AA; 006B 0070 0061; Additional folding*/\r
+    "\u006D\u0070\u0061",      /*33AB; 006D 0070 0061; Additional folding*/\r
+    "\u0067\u0070\u0061",      /*33AC; 0067 0070 0061; Additional folding*/\r
+    "\u0070\u0076",    /*33B4; 0070 0076; Additional folding*/\r
+    "\u006E\u0076",    /*33B5; 006E 0076; Additional folding*/\r
+    "\u03BC\u0076",    /*33B6; 03BC 0076; Additional folding*/\r
+    "\u006D\u0076",    /*33B7; 006D 0076; Additional folding*/\r
+    "\u006B\u0076",    /*33B8; 006B 0076; Additional folding*/\r
+    "\u006D\u0076",    /*33B9; 006D 0076; Additional folding*/\r
+    "\u0070\u0077",    /*33BA; 0070 0077; Additional folding*/\r
+    "\u006E\u0077",    /*33BB; 006E 0077; Additional folding*/\r
+    "\u03BC\u0077",    /*33BC; 03BC 0077; Additional folding*/\r
+    "\u006D\u0077",    /*33BD; 006D 0077; Additional folding*/\r
+    "\u006B\u0077",    /*33BE; 006B 0077; Additional folding*/\r
+    "\u006D\u0077",    /*33BF; 006D 0077; Additional folding*/\r
+    "\u006B\u03C9",    /*33C0; 006B 03C9; Additional folding*/\r
+    "\u006D\u03C9",    /*33C1; 006D 03C9; Additional folding*/\r
+    "\u0062\u0071",    /*33C3; 0062 0071; Additional folding*/\r
+    "\u0063\u2215\u006B\u0067",        /*33C6; 0063 2215 006B 0067; Additional folding*/\r
+    "\u0063\u006F\u002E",      /*33C7; 0063 006F 002E; Additional folding*/\r
+    "\u0064\u0062",    /*33C8; 0064 0062; Additional folding*/\r
+    "\u0067\u0079",    /*33C9; 0067 0079; Additional folding*/\r
+    "\u0068\u0070",    /*33CB; 0068 0070; Additional folding*/\r
+    "\u006B\u006B",    /*33CD; 006B 006B; Additional folding*/\r
+    "\u006B\u006D",    /*33CE; 006B 006D; Additional folding*/\r
+    "\u0070\u0068",    /*33D7; 0070 0068; Additional folding*/\r
+    "\u0070\u0070\u006D",      /*33D9; 0070 0070 006D; Additional folding*/\r
+    "\u0070\u0072",    /*33DA; 0070 0072; Additional folding*/\r
+    "\u0073\u0076",    /*33DC; 0073 0076; Additional folding*/\r
+    "\u0077\u0062",    /*33DD; 0077 0062; Additional folding*/\r
+    "\u0066\u0066",    /*FB00; 0066 0066; Case map*/\r
+    "\u0066\u0069",    /*FB01; 0066 0069; Case map*/\r
+    "\u0066\u006C",    /*FB02; 0066 006C; Case map*/\r
+    "\u0066\u0066\u0069",      /*FB03; 0066 0066 0069; Case map*/\r
+    "\u0066\u0066\u006C",      /*FB04; 0066 0066 006C; Case map*/\r
+    "\u0073\u0074",    /*FB05; 0073 0074; Case map*/\r
+    "\u0073\u0074",    /*FB06; 0073 0074; Case map*/\r
+    "\u0574\u0576",    /*FB13; 0574 0576; Case map*/\r
+    "\u0574\u0565",    /*FB14; 0574 0565; Case map*/\r
+    "\u0574\u056B",    /*FB15; 0574 056B; Case map*/\r
+    "\u057E\u0576",    /*FB16; 057E 0576; Case map*/\r
+    "\u0574\u056D",    /*FB17; 0574 056D; Case map*/\r
+    "\uFF41",  /*FF21; FF41; Case map*/\r
+    "\uFF42",  /*FF22; FF42; Case map*/\r
+    "\uFF43",  /*FF23; FF43; Case map*/\r
+    "\uFF44",  /*FF24; FF44; Case map*/\r
+    "\uFF45",  /*FF25; FF45; Case map*/\r
+    "\uFF46",  /*FF26; FF46; Case map*/\r
+    "\uFF47",  /*FF27; FF47; Case map*/\r
+    "\uFF48",  /*FF28; FF48; Case map*/\r
+    "\uFF49",  /*FF29; FF49; Case map*/\r
+    "\uFF4A",  /*FF2A; FF4A; Case map*/\r
+    "\uFF4B",  /*FF2B; FF4B; Case map*/\r
+    "\uFF4C",  /*FF2C; FF4C; Case map*/\r
+    "\uFF4D",  /*FF2D; FF4D; Case map*/\r
+    "\uFF4E",  /*FF2E; FF4E; Case map*/\r
+    "\uFF4F",  /*FF2F; FF4F; Case map*/\r
+    "\uFF50",  /*FF30; FF50; Case map*/\r
+    "\uFF51",  /*FF31; FF51; Case map*/\r
+    "\uFF52",  /*FF32; FF52; Case map*/\r
+    "\uFF53",  /*FF33; FF53; Case map*/\r
+    "\uFF54",  /*FF34; FF54; Case map*/\r
+    "\uFF55",  /*FF35; FF55; Case map*/\r
+    "\uFF56",  /*FF36; FF56; Case map*/\r
+    "\uFF57",  /*FF37; FF57; Case map*/\r
+    "\uFF58",  /*FF38; FF58; Case map*/\r
+    "\uFF59",  /*FF39; FF59; Case map*/\r
+    "\uFF5A",  /*FF3A; FF5A; Case map*/\r
+  };\r
+
+  public static char[] B3search = new char[] {\r
+    '\u0041',  /*0041; 0061; Case map*/\r
+    '\u0042',  /*0042; 0062; Case map*/\r
+    '\u0043',  /*0043; 0063; Case map*/\r
+    '\u0044',  /*0044; 0064; Case map*/\r
+    '\u0045',  /*0045; 0065; Case map*/\r
+    '\u0046',  /*0046; 0066; Case map*/\r
+    '\u0047',  /*0047; 0067; Case map*/\r
+    '\u0048',  /*0048; 0068; Case map*/\r
+    '\u0049',  /*0049; 0069; Case map*/\r
+    '\u004A',  /*004A; 006A; Case map*/\r
+    '\u004B',  /*004B; 006B; Case map*/\r
+    '\u004C',  /*004C; 006C; Case map*/\r
+    '\u004D',  /*004D; 006D; Case map*/\r
+    '\u004E',  /*004E; 006E; Case map*/\r
+    '\u004F',  /*004F; 006F; Case map*/\r
+    '\u0050',  /*0050; 0070; Case map*/\r
+    '\u0051',  /*0051; 0071; Case map*/\r
+    '\u0052',  /*0052; 0072; Case map*/\r
+    '\u0053',  /*0053; 0073; Case map*/\r
+    '\u0054',  /*0054; 0074; Case map*/\r
+    '\u0055',  /*0055; 0075; Case map*/\r
+    '\u0056',  /*0056; 0076; Case map*/\r
+    '\u0057',  /*0057; 0077; Case map*/\r
+    '\u0058',  /*0058; 0078; Case map*/\r
+    '\u0059',  /*0059; 0079; Case map*/\r
+    '\u005A',  /*005A; 007A; Case map*/\r
+    '\u00B5',  /*00B5; 03BC; Case map*/\r
+    '\u00C0',  /*00C0; 00E0; Case map*/\r
+    '\u00C1',  /*00C1; 00E1; Case map*/\r
+    '\u00C2',  /*00C2; 00E2; Case map*/\r
+    '\u00C3',  /*00C3; 00E3; Case map*/\r
+    '\u00C4',  /*00C4; 00E4; Case map*/\r
+    '\u00C5',  /*00C5; 00E5; Case map*/\r
+    '\u00C6',  /*00C6; 00E6; Case map*/\r
+    '\u00C7',  /*00C7; 00E7; Case map*/\r
+    '\u00C8',  /*00C8; 00E8; Case map*/\r
+    '\u00C9',  /*00C9; 00E9; Case map*/\r
+    '\u00CA',  /*00CA; 00EA; Case map*/\r
+    '\u00CB',  /*00CB; 00EB; Case map*/\r
+    '\u00CC',  /*00CC; 00EC; Case map*/\r
+    '\u00CD',  /*00CD; 00ED; Case map*/\r
+    '\u00CE',  /*00CE; 00EE; Case map*/\r
+    '\u00CF',  /*00CF; 00EF; Case map*/\r
+    '\u00D0',  /*00D0; 00F0; Case map*/\r
+    '\u00D1',  /*00D1; 00F1; Case map*/\r
+    '\u00D2',  /*00D2; 00F2; Case map*/\r
+    '\u00D3',  /*00D3; 00F3; Case map*/\r
+    '\u00D4',  /*00D4; 00F4; Case map*/\r
+    '\u00D5',  /*00D5; 00F5; Case map*/\r
+    '\u00D6',  /*00D6; 00F6; Case map*/\r
+    '\u00D8',  /*00D8; 00F8; Case map*/\r
+    '\u00D9',  /*00D9; 00F9; Case map*/\r
+    '\u00DA',  /*00DA; 00FA; Case map*/\r
+    '\u00DB',  /*00DB; 00FB; Case map*/\r
+    '\u00DC',  /*00DC; 00FC; Case map*/\r
+    '\u00DD',  /*00DD; 00FD; Case map*/\r
+    '\u00DE',  /*00DE; 00FE; Case map*/\r
+    '\u00DF',  /*00DF; 0073 0073; Case map*/\r
+    '\u0100',  /*0100; 0101; Case map*/\r
+    '\u0102',  /*0102; 0103; Case map*/\r
+    '\u0104',  /*0104; 0105; Case map*/\r
+    '\u0106',  /*0106; 0107; Case map*/\r
+    '\u0108',  /*0108; 0109; Case map*/\r
+    '\u010A',  /*010A; 010B; Case map*/\r
+    '\u010C',  /*010C; 010D; Case map*/\r
+    '\u010E',  /*010E; 010F; Case map*/\r
+    '\u0110',  /*0110; 0111; Case map*/\r
+    '\u0112',  /*0112; 0113; Case map*/\r
+    '\u0114',  /*0114; 0115; Case map*/\r
+    '\u0116',  /*0116; 0117; Case map*/\r
+    '\u0118',  /*0118; 0119; Case map*/\r
+    '\u011A',  /*011A; 011B; Case map*/\r
+    '\u011C',  /*011C; 011D; Case map*/\r
+    '\u011E',  /*011E; 011F; Case map*/\r
+    '\u0120',  /*0120; 0121; Case map*/\r
+    '\u0122',  /*0122; 0123; Case map*/\r
+    '\u0124',  /*0124; 0125; Case map*/\r
+    '\u0126',  /*0126; 0127; Case map*/\r
+    '\u0128',  /*0128; 0129; Case map*/\r
+    '\u012A',  /*012A; 012B; Case map*/\r
+    '\u012C',  /*012C; 012D; Case map*/\r
+    '\u012E',  /*012E; 012F; Case map*/\r
+    '\u0130',  /*0130; 0069 0307; Case map*/\r
+    '\u0132',  /*0132; 0133; Case map*/\r
+    '\u0134',  /*0134; 0135; Case map*/\r
+    '\u0136',  /*0136; 0137; Case map*/\r
+    '\u0139',  /*0139; 013A; Case map*/\r
+    '\u013B',  /*013B; 013C; Case map*/\r
+    '\u013D',  /*013D; 013E; Case map*/\r
+    '\u013F',  /*013F; 0140; Case map*/\r
+    '\u0141',  /*0141; 0142; Case map*/\r
+    '\u0143',  /*0143; 0144; Case map*/\r
+    '\u0145',  /*0145; 0146; Case map*/\r
+    '\u0147',  /*0147; 0148; Case map*/\r
+    '\u0149',  /*0149; 02BC 006E; Case map*/\r
+    '\u014A',  /*014A; 014B; Case map*/\r
+    '\u014C',  /*014C; 014D; Case map*/\r
+    '\u014E',  /*014E; 014F; Case map*/\r
+    '\u0150',  /*0150; 0151; Case map*/\r
+    '\u0152',  /*0152; 0153; Case map*/\r
+    '\u0154',  /*0154; 0155; Case map*/\r
+    '\u0156',  /*0156; 0157; Case map*/\r
+    '\u0158',  /*0158; 0159; Case map*/\r
+    '\u015A',  /*015A; 015B; Case map*/\r
+    '\u015C',  /*015C; 015D; Case map*/\r
+    '\u015E',  /*015E; 015F; Case map*/\r
+    '\u0160',  /*0160; 0161; Case map*/\r
+    '\u0162',  /*0162; 0163; Case map*/\r
+    '\u0164',  /*0164; 0165; Case map*/\r
+    '\u0166',  /*0166; 0167; Case map*/\r
+    '\u0168',  /*0168; 0169; Case map*/\r
+    '\u016A',  /*016A; 016B; Case map*/\r
+    '\u016C',  /*016C; 016D; Case map*/\r
+    '\u016E',  /*016E; 016F; Case map*/\r
+    '\u0170',  /*0170; 0171; Case map*/\r
+    '\u0172',  /*0172; 0173; Case map*/\r
+    '\u0174',  /*0174; 0175; Case map*/\r
+    '\u0176',  /*0176; 0177; Case map*/\r
+    '\u0178',  /*0178; 00FF; Case map*/\r
+    '\u0179',  /*0179; 017A; Case map*/\r
+    '\u017B',  /*017B; 017C; Case map*/\r
+    '\u017D',  /*017D; 017E; Case map*/\r
+    '\u017F',  /*017F; 0073; Case map*/\r
+    '\u0181',  /*0181; 0253; Case map*/\r
+    '\u0182',  /*0182; 0183; Case map*/\r
+    '\u0184',  /*0184; 0185; Case map*/\r
+    '\u0186',  /*0186; 0254; Case map*/\r
+    '\u0187',  /*0187; 0188; Case map*/\r
+    '\u0189',  /*0189; 0256; Case map*/\r
+    '\u018A',  /*018A; 0257; Case map*/\r
+    '\u018B',  /*018B; 018C; Case map*/\r
+    '\u018E',  /*018E; 01DD; Case map*/\r
+    '\u018F',  /*018F; 0259; Case map*/\r
+    '\u0190',  /*0190; 025B; Case map*/\r
+    '\u0191',  /*0191; 0192; Case map*/\r
+    '\u0193',  /*0193; 0260; Case map*/\r
+    '\u0194',  /*0194; 0263; Case map*/\r
+    '\u0196',  /*0196; 0269; Case map*/\r
+    '\u0197',  /*0197; 0268; Case map*/\r
+    '\u0198',  /*0198; 0199; Case map*/\r
+    '\u019C',  /*019C; 026F; Case map*/\r
+    '\u019D',  /*019D; 0272; Case map*/\r
+    '\u019F',  /*019F; 0275; Case map*/\r
+    '\u01A0',  /*01A0; 01A1; Case map*/\r
+    '\u01A2',  /*01A2; 01A3; Case map*/\r
+    '\u01A4',  /*01A4; 01A5; Case map*/\r
+    '\u01A6',  /*01A6; 0280; Case map*/\r
+    '\u01A7',  /*01A7; 01A8; Case map*/\r
+    '\u01A9',  /*01A9; 0283; Case map*/\r
+    '\u01AC',  /*01AC; 01AD; Case map*/\r
+    '\u01AE',  /*01AE; 0288; Case map*/\r
+    '\u01AF',  /*01AF; 01B0; Case map*/\r
+    '\u01B1',  /*01B1; 028A; Case map*/\r
+    '\u01B2',  /*01B2; 028B; Case map*/\r
+    '\u01B3',  /*01B3; 01B4; Case map*/\r
+    '\u01B5',  /*01B5; 01B6; Case map*/\r
+    '\u01B7',  /*01B7; 0292; Case map*/\r
+    '\u01B8',  /*01B8; 01B9; Case map*/\r
+    '\u01BC',  /*01BC; 01BD; Case map*/\r
+    '\u01C4',  /*01C4; 01C6; Case map*/\r
+    '\u01C5',  /*01C5; 01C6; Case map*/\r
+    '\u01C7',  /*01C7; 01C9; Case map*/\r
+    '\u01C8',  /*01C8; 01C9; Case map*/\r
+    '\u01CA',  /*01CA; 01CC; Case map*/\r
+    '\u01CB',  /*01CB; 01CC; Case map*/\r
+    '\u01CD',  /*01CD; 01CE; Case map*/\r
+    '\u01CF',  /*01CF; 01D0; Case map*/\r
+    '\u01D1',  /*01D1; 01D2; Case map*/\r
+    '\u01D3',  /*01D3; 01D4; Case map*/\r
+    '\u01D5',  /*01D5; 01D6; Case map*/\r
+    '\u01D7',  /*01D7; 01D8; Case map*/\r
+    '\u01D9',  /*01D9; 01DA; Case map*/\r
+    '\u01DB',  /*01DB; 01DC; Case map*/\r
+    '\u01DE',  /*01DE; 01DF; Case map*/\r
+    '\u01E0',  /*01E0; 01E1; Case map*/\r
+    '\u01E2',  /*01E2; 01E3; Case map*/\r
+    '\u01E4',  /*01E4; 01E5; Case map*/\r
+    '\u01E6',  /*01E6; 01E7; Case map*/\r
+    '\u01E8',  /*01E8; 01E9; Case map*/\r
+    '\u01EA',  /*01EA; 01EB; Case map*/\r
+    '\u01EC',  /*01EC; 01ED; Case map*/\r
+    '\u01EE',  /*01EE; 01EF; Case map*/\r
+    '\u01F0',  /*01F0; 006A 030C; Case map*/\r
+    '\u01F1',  /*01F1; 01F3; Case map*/\r
+    '\u01F2',  /*01F2; 01F3; Case map*/\r
+    '\u01F4',  /*01F4; 01F5; Case map*/\r
+    '\u01F6',  /*01F6; 0195; Case map*/\r
+    '\u01F7',  /*01F7; 01BF; Case map*/\r
+    '\u01F8',  /*01F8; 01F9; Case map*/\r
+    '\u01FA',  /*01FA; 01FB; Case map*/\r
+    '\u01FC',  /*01FC; 01FD; Case map*/\r
+    '\u01FE',  /*01FE; 01FF; Case map*/\r
+    '\u0200',  /*0200; 0201; Case map*/\r
+    '\u0202',  /*0202; 0203; Case map*/\r
+    '\u0204',  /*0204; 0205; Case map*/\r
+    '\u0206',  /*0206; 0207; Case map*/\r
+    '\u0208',  /*0208; 0209; Case map*/\r
+    '\u020A',  /*020A; 020B; Case map*/\r
+    '\u020C',  /*020C; 020D; Case map*/\r
+    '\u020E',  /*020E; 020F; Case map*/\r
+    '\u0210',  /*0210; 0211; Case map*/\r
+    '\u0212',  /*0212; 0213; Case map*/\r
+    '\u0214',  /*0214; 0215; Case map*/\r
+    '\u0216',  /*0216; 0217; Case map*/\r
+    '\u0218',  /*0218; 0219; Case map*/\r
+    '\u021A',  /*021A; 021B; Case map*/\r
+    '\u021C',  /*021C; 021D; Case map*/\r
+    '\u021E',  /*021E; 021F; Case map*/\r
+    '\u0220',  /*0220; 019E; Case map*/\r
+    '\u0222',  /*0222; 0223; Case map*/\r
+    '\u0224',  /*0224; 0225; Case map*/\r
+    '\u0226',  /*0226; 0227; Case map*/\r
+    '\u0228',  /*0228; 0229; Case map*/\r
+    '\u022A',  /*022A; 022B; Case map*/\r
+    '\u022C',  /*022C; 022D; Case map*/\r
+    '\u022E',  /*022E; 022F; Case map*/\r
+    '\u0230',  /*0230; 0231; Case map*/\r
+    '\u0232',  /*0232; 0233; Case map*/\r
+    '\u0345',  /*0345; 03B9; Case map*/\r
+    '\u0386',  /*0386; 03AC; Case map*/\r
+    '\u0388',  /*0388; 03AD; Case map*/\r
+    '\u0389',  /*0389; 03AE; Case map*/\r
+    '\u038A',  /*038A; 03AF; Case map*/\r
+    '\u038C',  /*038C; 03CC; Case map*/\r
+    '\u038E',  /*038E; 03CD; Case map*/\r
+    '\u038F',  /*038F; 03CE; Case map*/\r
+    '\u0390',  /*0390; 03B9 0308 0301; Case map*/\r
+    '\u0391',  /*0391; 03B1; Case map*/\r
+    '\u0392',  /*0392; 03B2; Case map*/\r
+    '\u0393',  /*0393; 03B3; Case map*/\r
+    '\u0394',  /*0394; 03B4; Case map*/\r
+    '\u0395',  /*0395; 03B5; Case map*/\r
+    '\u0396',  /*0396; 03B6; Case map*/\r
+    '\u0397',  /*0397; 03B7; Case map*/\r
+    '\u0398',  /*0398; 03B8; Case map*/\r
+    '\u0399',  /*0399; 03B9; Case map*/\r
+    '\u039A',  /*039A; 03BA; Case map*/\r
+    '\u039B',  /*039B; 03BB; Case map*/\r
+    '\u039C',  /*039C; 03BC; Case map*/\r
+    '\u039D',  /*039D; 03BD; Case map*/\r
+    '\u039E',  /*039E; 03BE; Case map*/\r
+    '\u039F',  /*039F; 03BF; Case map*/\r
+    '\u03A0',  /*03A0; 03C0; Case map*/\r
+    '\u03A1',  /*03A1; 03C1; Case map*/\r
+    '\u03A3',  /*03A3; 03C3; Case map*/\r
+    '\u03A4',  /*03A4; 03C4; Case map*/\r
+    '\u03A5',  /*03A5; 03C5; Case map*/\r
+    '\u03A6',  /*03A6; 03C6; Case map*/\r
+    '\u03A7',  /*03A7; 03C7; Case map*/\r
+    '\u03A8',  /*03A8; 03C8; Case map*/\r
+    '\u03A9',  /*03A9; 03C9; Case map*/\r
+    '\u03AA',  /*03AA; 03CA; Case map*/\r
+    '\u03AB',  /*03AB; 03CB; Case map*/\r
+    '\u03B0',  /*03B0; 03C5 0308 0301; Case map*/\r
+    '\u03C2',  /*03C2; 03C3; Case map*/\r
+    '\u03D0',  /*03D0; 03B2; Case map*/\r
+    '\u03D1',  /*03D1; 03B8; Case map*/\r
+    '\u03D5',  /*03D5; 03C6; Case map*/\r
+    '\u03D6',  /*03D6; 03C0; Case map*/\r
+    '\u03D8',  /*03D8; 03D9; Case map*/\r
+    '\u03DA',  /*03DA; 03DB; Case map*/\r
+    '\u03DC',  /*03DC; 03DD; Case map*/\r
+    '\u03DE',  /*03DE; 03DF; Case map*/\r
+    '\u03E0',  /*03E0; 03E1; Case map*/\r
+    '\u03E2',  /*03E2; 03E3; Case map*/\r
+    '\u03E4',  /*03E4; 03E5; Case map*/\r
+    '\u03E6',  /*03E6; 03E7; Case map*/\r
+    '\u03E8',  /*03E8; 03E9; Case map*/\r
+    '\u03EA',  /*03EA; 03EB; Case map*/\r
+    '\u03EC',  /*03EC; 03ED; Case map*/\r
+    '\u03EE',  /*03EE; 03EF; Case map*/\r
+    '\u03F0',  /*03F0; 03BA; Case map*/\r
+    '\u03F1',  /*03F1; 03C1; Case map*/\r
+    '\u03F2',  /*03F2; 03C3; Case map*/\r
+    '\u03F4',  /*03F4; 03B8; Case map*/\r
+    '\u03F5',  /*03F5; 03B5; Case map*/\r
+    '\u0400',  /*0400; 0450; Case map*/\r
+    '\u0401',  /*0401; 0451; Case map*/\r
+    '\u0402',  /*0402; 0452; Case map*/\r
+    '\u0403',  /*0403; 0453; Case map*/\r
+    '\u0404',  /*0404; 0454; Case map*/\r
+    '\u0405',  /*0405; 0455; Case map*/\r
+    '\u0406',  /*0406; 0456; Case map*/\r
+    '\u0407',  /*0407; 0457; Case map*/\r
+    '\u0408',  /*0408; 0458; Case map*/\r
+    '\u0409',  /*0409; 0459; Case map*/\r
+    '\u040A',  /*040A; 045A; Case map*/\r
+    '\u040B',  /*040B; 045B; Case map*/\r
+    '\u040C',  /*040C; 045C; Case map*/\r
+    '\u040D',  /*040D; 045D; Case map*/\r
+    '\u040E',  /*040E; 045E; Case map*/\r
+    '\u040F',  /*040F; 045F; Case map*/\r
+    '\u0410',  /*0410; 0430; Case map*/\r
+    '\u0411',  /*0411; 0431; Case map*/\r
+    '\u0412',  /*0412; 0432; Case map*/\r
+    '\u0413',  /*0413; 0433; Case map*/\r
+    '\u0414',  /*0414; 0434; Case map*/\r
+    '\u0415',  /*0415; 0435; Case map*/\r
+    '\u0416',  /*0416; 0436; Case map*/\r
+    '\u0417',  /*0417; 0437; Case map*/\r
+    '\u0418',  /*0418; 0438; Case map*/\r
+    '\u0419',  /*0419; 0439; Case map*/\r
+    '\u041A',  /*041A; 043A; Case map*/\r
+    '\u041B',  /*041B; 043B; Case map*/\r
+    '\u041C',  /*041C; 043C; Case map*/\r
+    '\u041D',  /*041D; 043D; Case map*/\r
+    '\u041E',  /*041E; 043E; Case map*/\r
+    '\u041F',  /*041F; 043F; Case map*/\r
+    '\u0420',  /*0420; 0440; Case map*/\r
+    '\u0421',  /*0421; 0441; Case map*/\r
+    '\u0422',  /*0422; 0442; Case map*/\r
+    '\u0423',  /*0423; 0443; Case map*/\r
+    '\u0424',  /*0424; 0444; Case map*/\r
+    '\u0425',  /*0425; 0445; Case map*/\r
+    '\u0426',  /*0426; 0446; Case map*/\r
+    '\u0427',  /*0427; 0447; Case map*/\r
+    '\u0428',  /*0428; 0448; Case map*/\r
+    '\u0429',  /*0429; 0449; Case map*/\r
+    '\u042A',  /*042A; 044A; Case map*/\r
+    '\u042B',  /*042B; 044B; Case map*/\r
+    '\u042C',  /*042C; 044C; Case map*/\r
+    '\u042D',  /*042D; 044D; Case map*/\r
+    '\u042E',  /*042E; 044E; Case map*/\r
+    '\u042F',  /*042F; 044F; Case map*/\r
+    '\u0460',  /*0460; 0461; Case map*/\r
+    '\u0462',  /*0462; 0463; Case map*/\r
+    '\u0464',  /*0464; 0465; Case map*/\r
+    '\u0466',  /*0466; 0467; Case map*/\r
+    '\u0468',  /*0468; 0469; Case map*/\r
+    '\u046A',  /*046A; 046B; Case map*/\r
+    '\u046C',  /*046C; 046D; Case map*/\r
+    '\u046E',  /*046E; 046F; Case map*/\r
+    '\u0470',  /*0470; 0471; Case map*/\r
+    '\u0472',  /*0472; 0473; Case map*/\r
+    '\u0474',  /*0474; 0475; Case map*/\r
+    '\u0476',  /*0476; 0477; Case map*/\r
+    '\u0478',  /*0478; 0479; Case map*/\r
+    '\u047A',  /*047A; 047B; Case map*/\r
+    '\u047C',  /*047C; 047D; Case map*/\r
+    '\u047E',  /*047E; 047F; Case map*/\r
+    '\u0480',  /*0480; 0481; Case map*/\r
+    '\u048A',  /*048A; 048B; Case map*/\r
+    '\u048C',  /*048C; 048D; Case map*/\r
+    '\u048E',  /*048E; 048F; Case map*/\r
+    '\u0490',  /*0490; 0491; Case map*/\r
+    '\u0492',  /*0492; 0493; Case map*/\r
+    '\u0494',  /*0494; 0495; Case map*/\r
+    '\u0496',  /*0496; 0497; Case map*/\r
+    '\u0498',  /*0498; 0499; Case map*/\r
+    '\u049A',  /*049A; 049B; Case map*/\r
+    '\u049C',  /*049C; 049D; Case map*/\r
+    '\u049E',  /*049E; 049F; Case map*/\r
+    '\u04A0',  /*04A0; 04A1; Case map*/\r
+    '\u04A2',  /*04A2; 04A3; Case map*/\r
+    '\u04A4',  /*04A4; 04A5; Case map*/\r
+    '\u04A6',  /*04A6; 04A7; Case map*/\r
+    '\u04A8',  /*04A8; 04A9; Case map*/\r
+    '\u04AA',  /*04AA; 04AB; Case map*/\r
+    '\u04AC',  /*04AC; 04AD; Case map*/\r
+    '\u04AE',  /*04AE; 04AF; Case map*/\r
+    '\u04B0',  /*04B0; 04B1; Case map*/\r
+    '\u04B2',  /*04B2; 04B3; Case map*/\r
+    '\u04B4',  /*04B4; 04B5; Case map*/\r
+    '\u04B6',  /*04B6; 04B7; Case map*/\r
+    '\u04B8',  /*04B8; 04B9; Case map*/\r
+    '\u04BA',  /*04BA; 04BB; Case map*/\r
+    '\u04BC',  /*04BC; 04BD; Case map*/\r
+    '\u04BE',  /*04BE; 04BF; Case map*/\r
+    '\u04C1',  /*04C1; 04C2; Case map*/\r
+    '\u04C3',  /*04C3; 04C4; Case map*/\r
+    '\u04C5',  /*04C5; 04C6; Case map*/\r
+    '\u04C7',  /*04C7; 04C8; Case map*/\r
+    '\u04C9',  /*04C9; 04CA; Case map*/\r
+    '\u04CB',  /*04CB; 04CC; Case map*/\r
+    '\u04CD',  /*04CD; 04CE; Case map*/\r
+    '\u04D0',  /*04D0; 04D1; Case map*/\r
+    '\u04D2',  /*04D2; 04D3; Case map*/\r
+    '\u04D4',  /*04D4; 04D5; Case map*/\r
+    '\u04D6',  /*04D6; 04D7; Case map*/\r
+    '\u04D8',  /*04D8; 04D9; Case map*/\r
+    '\u04DA',  /*04DA; 04DB; Case map*/\r
+    '\u04DC',  /*04DC; 04DD; Case map*/\r
+    '\u04DE',  /*04DE; 04DF; Case map*/\r
+    '\u04E0',  /*04E0; 04E1; Case map*/\r
+    '\u04E2',  /*04E2; 04E3; Case map*/\r
+    '\u04E4',  /*04E4; 04E5; Case map*/\r
+    '\u04E6',  /*04E6; 04E7; Case map*/\r
+    '\u04E8',  /*04E8; 04E9; Case map*/\r
+    '\u04EA',  /*04EA; 04EB; Case map*/\r
+    '\u04EC',  /*04EC; 04ED; Case map*/\r
+    '\u04EE',  /*04EE; 04EF; Case map*/\r
+    '\u04F0',  /*04F0; 04F1; Case map*/\r
+    '\u04F2',  /*04F2; 04F3; Case map*/\r
+    '\u04F4',  /*04F4; 04F5; Case map*/\r
+    '\u04F8',  /*04F8; 04F9; Case map*/\r
+    '\u0500',  /*0500; 0501; Case map*/\r
+    '\u0502',  /*0502; 0503; Case map*/\r
+    '\u0504',  /*0504; 0505; Case map*/\r
+    '\u0506',  /*0506; 0507; Case map*/\r
+    '\u0508',  /*0508; 0509; Case map*/\r
+    '\u050A',  /*050A; 050B; Case map*/\r
+    '\u050C',  /*050C; 050D; Case map*/\r
+    '\u050E',  /*050E; 050F; Case map*/\r
+    '\u0531',  /*0531; 0561; Case map*/\r
+    '\u0532',  /*0532; 0562; Case map*/\r
+    '\u0533',  /*0533; 0563; Case map*/\r
+    '\u0534',  /*0534; 0564; Case map*/\r
+    '\u0535',  /*0535; 0565; Case map*/\r
+    '\u0536',  /*0536; 0566; Case map*/\r
+    '\u0537',  /*0537; 0567; Case map*/\r
+    '\u0538',  /*0538; 0568; Case map*/\r
+    '\u0539',  /*0539; 0569; Case map*/\r
+    '\u053A',  /*053A; 056A; Case map*/\r
+    '\u053B',  /*053B; 056B; Case map*/\r
+    '\u053C',  /*053C; 056C; Case map*/\r
+    '\u053D',  /*053D; 056D; Case map*/\r
+    '\u053E',  /*053E; 056E; Case map*/\r
+    '\u053F',  /*053F; 056F; Case map*/\r
+    '\u0540',  /*0540; 0570; Case map*/\r
+    '\u0541',  /*0541; 0571; Case map*/\r
+    '\u0542',  /*0542; 0572; Case map*/\r
+    '\u0543',  /*0543; 0573; Case map*/\r
+    '\u0544',  /*0544; 0574; Case map*/\r
+    '\u0545',  /*0545; 0575; Case map*/\r
+    '\u0546',  /*0546; 0576; Case map*/\r
+    '\u0547',  /*0547; 0577; Case map*/\r
+    '\u0548',  /*0548; 0578; Case map*/\r
+    '\u0549',  /*0549; 0579; Case map*/\r
+    '\u054A',  /*054A; 057A; Case map*/\r
+    '\u054B',  /*054B; 057B; Case map*/\r
+    '\u054C',  /*054C; 057C; Case map*/\r
+    '\u054D',  /*054D; 057D; Case map*/\r
+    '\u054E',  /*054E; 057E; Case map*/\r
+    '\u054F',  /*054F; 057F; Case map*/\r
+    '\u0550',  /*0550; 0580; Case map*/\r
+    '\u0551',  /*0551; 0581; Case map*/\r
+    '\u0552',  /*0552; 0582; Case map*/\r
+    '\u0553',  /*0553; 0583; Case map*/\r
+    '\u0554',  /*0554; 0584; Case map*/\r
+    '\u0555',  /*0555; 0585; Case map*/\r
+    '\u0556',  /*0556; 0586; Case map*/\r
+    '\u0587',  /*0587; 0565 0582; Case map*/\r
+    '\u1E00',  /*1E00; 1E01; Case map*/\r
+    '\u1E02',  /*1E02; 1E03; Case map*/\r
+    '\u1E04',  /*1E04; 1E05; Case map*/\r
+    '\u1E06',  /*1E06; 1E07; Case map*/\r
+    '\u1E08',  /*1E08; 1E09; Case map*/\r
+    '\u1E0A',  /*1E0A; 1E0B; Case map*/\r
+    '\u1E0C',  /*1E0C; 1E0D; Case map*/\r
+    '\u1E0E',  /*1E0E; 1E0F; Case map*/\r
+    '\u1E10',  /*1E10; 1E11; Case map*/\r
+    '\u1E12',  /*1E12; 1E13; Case map*/\r
+    '\u1E14',  /*1E14; 1E15; Case map*/\r
+    '\u1E16',  /*1E16; 1E17; Case map*/\r
+    '\u1E18',  /*1E18; 1E19; Case map*/\r
+    '\u1E1A',  /*1E1A; 1E1B; Case map*/\r
+    '\u1E1C',  /*1E1C; 1E1D; Case map*/\r
+    '\u1E1E',  /*1E1E; 1E1F; Case map*/\r
+    '\u1E20',  /*1E20; 1E21; Case map*/\r
+    '\u1E22',  /*1E22; 1E23; Case map*/\r
+    '\u1E24',  /*1E24; 1E25; Case map*/\r
+    '\u1E26',  /*1E26; 1E27; Case map*/\r
+    '\u1E28',  /*1E28; 1E29; Case map*/\r
+    '\u1E2A',  /*1E2A; 1E2B; Case map*/\r
+    '\u1E2C',  /*1E2C; 1E2D; Case map*/\r
+    '\u1E2E',  /*1E2E; 1E2F; Case map*/\r
+    '\u1E30',  /*1E30; 1E31; Case map*/\r
+    '\u1E32',  /*1E32; 1E33; Case map*/\r
+    '\u1E34',  /*1E34; 1E35; Case map*/\r
+    '\u1E36',  /*1E36; 1E37; Case map*/\r
+    '\u1E38',  /*1E38; 1E39; Case map*/\r
+    '\u1E3A',  /*1E3A; 1E3B; Case map*/\r
+    '\u1E3C',  /*1E3C; 1E3D; Case map*/\r
+    '\u1E3E',  /*1E3E; 1E3F; Case map*/\r
+    '\u1E40',  /*1E40; 1E41; Case map*/\r
+    '\u1E42',  /*1E42; 1E43; Case map*/\r
+    '\u1E44',  /*1E44; 1E45; Case map*/\r
+    '\u1E46',  /*1E46; 1E47; Case map*/\r
+    '\u1E48',  /*1E48; 1E49; Case map*/\r
+    '\u1E4A',  /*1E4A; 1E4B; Case map*/\r
+    '\u1E4C',  /*1E4C; 1E4D; Case map*/\r
+    '\u1E4E',  /*1E4E; 1E4F; Case map*/\r
+    '\u1E50',  /*1E50; 1E51; Case map*/\r
+    '\u1E52',  /*1E52; 1E53; Case map*/\r
+    '\u1E54',  /*1E54; 1E55; Case map*/\r
+    '\u1E56',  /*1E56; 1E57; Case map*/\r
+    '\u1E58',  /*1E58; 1E59; Case map*/\r
+    '\u1E5A',  /*1E5A; 1E5B; Case map*/\r
+    '\u1E5C',  /*1E5C; 1E5D; Case map*/\r
+    '\u1E5E',  /*1E5E; 1E5F; Case map*/\r
+    '\u1E60',  /*1E60; 1E61; Case map*/\r
+    '\u1E62',  /*1E62; 1E63; Case map*/\r
+    '\u1E64',  /*1E64; 1E65; Case map*/\r
+    '\u1E66',  /*1E66; 1E67; Case map*/\r
+    '\u1E68',  /*1E68; 1E69; Case map*/\r
+    '\u1E6A',  /*1E6A; 1E6B; Case map*/\r
+    '\u1E6C',  /*1E6C; 1E6D; Case map*/\r
+    '\u1E6E',  /*1E6E; 1E6F; Case map*/\r
+    '\u1E70',  /*1E70; 1E71; Case map*/\r
+    '\u1E72',  /*1E72; 1E73; Case map*/\r
+    '\u1E74',  /*1E74; 1E75; Case map*/\r
+    '\u1E76',  /*1E76; 1E77; Case map*/\r
+    '\u1E78',  /*1E78; 1E79; Case map*/\r
+    '\u1E7A',  /*1E7A; 1E7B; Case map*/\r
+    '\u1E7C',  /*1E7C; 1E7D; Case map*/\r
+    '\u1E7E',  /*1E7E; 1E7F; Case map*/\r
+    '\u1E80',  /*1E80; 1E81; Case map*/\r
+    '\u1E82',  /*1E82; 1E83; Case map*/\r
+    '\u1E84',  /*1E84; 1E85; Case map*/\r
+    '\u1E86',  /*1E86; 1E87; Case map*/\r
+    '\u1E88',  /*1E88; 1E89; Case map*/\r
+    '\u1E8A',  /*1E8A; 1E8B; Case map*/\r
+    '\u1E8C',  /*1E8C; 1E8D; Case map*/\r
+    '\u1E8E',  /*1E8E; 1E8F; Case map*/\r
+    '\u1E90',  /*1E90; 1E91; Case map*/\r
+    '\u1E92',  /*1E92; 1E93; Case map*/\r
+    '\u1E94',  /*1E94; 1E95; Case map*/\r
+    '\u1E96',  /*1E96; 0068 0331; Case map*/\r
+    '\u1E97',  /*1E97; 0074 0308; Case map*/\r
+    '\u1E98',  /*1E98; 0077 030A; Case map*/\r
+    '\u1E99',  /*1E99; 0079 030A; Case map*/\r
+    '\u1E9A',  /*1E9A; 0061 02BE; Case map*/\r
+    '\u1E9B',  /*1E9B; 1E61; Case map*/\r
+    '\u1EA0',  /*1EA0; 1EA1; Case map*/\r
+    '\u1EA2',  /*1EA2; 1EA3; Case map*/\r
+    '\u1EA4',  /*1EA4; 1EA5; Case map*/\r
+    '\u1EA6',  /*1EA6; 1EA7; Case map*/\r
+    '\u1EA8',  /*1EA8; 1EA9; Case map*/\r
+    '\u1EAA',  /*1EAA; 1EAB; Case map*/\r
+    '\u1EAC',  /*1EAC; 1EAD; Case map*/\r
+    '\u1EAE',  /*1EAE; 1EAF; Case map*/\r
+    '\u1EB0',  /*1EB0; 1EB1; Case map*/\r
+    '\u1EB2',  /*1EB2; 1EB3; Case map*/\r
+    '\u1EB4',  /*1EB4; 1EB5; Case map*/\r
+    '\u1EB6',  /*1EB6; 1EB7; Case map*/\r
+    '\u1EB8',  /*1EB8; 1EB9; Case map*/\r
+    '\u1EBA',  /*1EBA; 1EBB; Case map*/\r
+    '\u1EBC',  /*1EBC; 1EBD; Case map*/\r
+    '\u1EBE',  /*1EBE; 1EBF; Case map*/\r
+    '\u1EC0',  /*1EC0; 1EC1; Case map*/\r
+    '\u1EC2',  /*1EC2; 1EC3; Case map*/\r
+    '\u1EC4',  /*1EC4; 1EC5; Case map*/\r
+    '\u1EC6',  /*1EC6; 1EC7; Case map*/\r
+    '\u1EC8',  /*1EC8; 1EC9; Case map*/\r
+    '\u1ECA',  /*1ECA; 1ECB; Case map*/\r
+    '\u1ECC',  /*1ECC; 1ECD; Case map*/\r
+    '\u1ECE',  /*1ECE; 1ECF; Case map*/\r
+    '\u1ED0',  /*1ED0; 1ED1; Case map*/\r
+    '\u1ED2',  /*1ED2; 1ED3; Case map*/\r
+    '\u1ED4',  /*1ED4; 1ED5; Case map*/\r
+    '\u1ED6',  /*1ED6; 1ED7; Case map*/\r
+    '\u1ED8',  /*1ED8; 1ED9; Case map*/\r
+    '\u1EDA',  /*1EDA; 1EDB; Case map*/\r
+    '\u1EDC',  /*1EDC; 1EDD; Case map*/\r
+    '\u1EDE',  /*1EDE; 1EDF; Case map*/\r
+    '\u1EE0',  /*1EE0; 1EE1; Case map*/\r
+    '\u1EE2',  /*1EE2; 1EE3; Case map*/\r
+    '\u1EE4',  /*1EE4; 1EE5; Case map*/\r
+    '\u1EE6',  /*1EE6; 1EE7; Case map*/\r
+    '\u1EE8',  /*1EE8; 1EE9; Case map*/\r
+    '\u1EEA',  /*1EEA; 1EEB; Case map*/\r
+    '\u1EEC',  /*1EEC; 1EED; Case map*/\r
+    '\u1EEE',  /*1EEE; 1EEF; Case map*/\r
+    '\u1EF0',  /*1EF0; 1EF1; Case map*/\r
+    '\u1EF2',  /*1EF2; 1EF3; Case map*/\r
+    '\u1EF4',  /*1EF4; 1EF5; Case map*/\r
+    '\u1EF6',  /*1EF6; 1EF7; Case map*/\r
+    '\u1EF8',  /*1EF8; 1EF9; Case map*/\r
+    '\u1F08',  /*1F08; 1F00; Case map*/\r
+    '\u1F09',  /*1F09; 1F01; Case map*/\r
+    '\u1F0A',  /*1F0A; 1F02; Case map*/\r
+    '\u1F0B',  /*1F0B; 1F03; Case map*/\r
+    '\u1F0C',  /*1F0C; 1F04; Case map*/\r
+    '\u1F0D',  /*1F0D; 1F05; Case map*/\r
+    '\u1F0E',  /*1F0E; 1F06; Case map*/\r
+    '\u1F0F',  /*1F0F; 1F07; Case map*/\r
+    '\u1F18',  /*1F18; 1F10; Case map*/\r
+    '\u1F19',  /*1F19; 1F11; Case map*/\r
+    '\u1F1A',  /*1F1A; 1F12; Case map*/\r
+    '\u1F1B',  /*1F1B; 1F13; Case map*/\r
+    '\u1F1C',  /*1F1C; 1F14; Case map*/\r
+    '\u1F1D',  /*1F1D; 1F15; Case map*/\r
+    '\u1F28',  /*1F28; 1F20; Case map*/\r
+    '\u1F29',  /*1F29; 1F21; Case map*/\r
+    '\u1F2A',  /*1F2A; 1F22; Case map*/\r
+    '\u1F2B',  /*1F2B; 1F23; Case map*/\r
+    '\u1F2C',  /*1F2C; 1F24; Case map*/\r
+    '\u1F2D',  /*1F2D; 1F25; Case map*/\r
+    '\u1F2E',  /*1F2E; 1F26; Case map*/\r
+    '\u1F2F',  /*1F2F; 1F27; Case map*/\r
+    '\u1F38',  /*1F38; 1F30; Case map*/\r
+    '\u1F39',  /*1F39; 1F31; Case map*/\r
+    '\u1F3A',  /*1F3A; 1F32; Case map*/\r
+    '\u1F3B',  /*1F3B; 1F33; Case map*/\r
+    '\u1F3C',  /*1F3C; 1F34; Case map*/\r
+    '\u1F3D',  /*1F3D; 1F35; Case map*/\r
+    '\u1F3E',  /*1F3E; 1F36; Case map*/\r
+    '\u1F3F',  /*1F3F; 1F37; Case map*/\r
+    '\u1F48',  /*1F48; 1F40; Case map*/\r
+    '\u1F49',  /*1F49; 1F41; Case map*/\r
+    '\u1F4A',  /*1F4A; 1F42; Case map*/\r
+    '\u1F4B',  /*1F4B; 1F43; Case map*/\r
+    '\u1F4C',  /*1F4C; 1F44; Case map*/\r
+    '\u1F4D',  /*1F4D; 1F45; Case map*/\r
+    '\u1F50',  /*1F50; 03C5 0313; Case map*/\r
+    '\u1F52',  /*1F52; 03C5 0313 0300; Case map*/\r
+    '\u1F54',  /*1F54; 03C5 0313 0301; Case map*/\r
+    '\u1F56',  /*1F56; 03C5 0313 0342; Case map*/\r
+    '\u1F59',  /*1F59; 1F51; Case map*/\r
+    '\u1F5B',  /*1F5B; 1F53; Case map*/\r
+    '\u1F5D',  /*1F5D; 1F55; Case map*/\r
+    '\u1F5F',  /*1F5F; 1F57; Case map*/\r
+    '\u1F68',  /*1F68; 1F60; Case map*/\r
+    '\u1F69',  /*1F69; 1F61; Case map*/\r
+    '\u1F6A',  /*1F6A; 1F62; Case map*/\r
+    '\u1F6B',  /*1F6B; 1F63; Case map*/\r
+    '\u1F6C',  /*1F6C; 1F64; Case map*/\r
+    '\u1F6D',  /*1F6D; 1F65; Case map*/\r
+    '\u1F6E',  /*1F6E; 1F66; Case map*/\r
+    '\u1F6F',  /*1F6F; 1F67; Case map*/\r
+    '\u1F80',  /*1F80; 1F00 03B9; Case map*/\r
+    '\u1F81',  /*1F81; 1F01 03B9; Case map*/\r
+    '\u1F82',  /*1F82; 1F02 03B9; Case map*/\r
+    '\u1F83',  /*1F83; 1F03 03B9; Case map*/\r
+    '\u1F84',  /*1F84; 1F04 03B9; Case map*/\r
+    '\u1F85',  /*1F85; 1F05 03B9; Case map*/\r
+    '\u1F86',  /*1F86; 1F06 03B9; Case map*/\r
+    '\u1F87',  /*1F87; 1F07 03B9; Case map*/\r
+    '\u1F88',  /*1F88; 1F00 03B9; Case map*/\r
+    '\u1F89',  /*1F89; 1F01 03B9; Case map*/\r
+    '\u1F8A',  /*1F8A; 1F02 03B9; Case map*/\r
+    '\u1F8B',  /*1F8B; 1F03 03B9; Case map*/\r
+    '\u1F8C',  /*1F8C; 1F04 03B9; Case map*/\r
+    '\u1F8D',  /*1F8D; 1F05 03B9; Case map*/\r
+    '\u1F8E',  /*1F8E; 1F06 03B9; Case map*/\r
+    '\u1F8F',  /*1F8F; 1F07 03B9; Case map*/\r
+    '\u1F90',  /*1F90; 1F20 03B9; Case map*/\r
+    '\u1F91',  /*1F91; 1F21 03B9; Case map*/\r
+    '\u1F92',  /*1F92; 1F22 03B9; Case map*/\r
+    '\u1F93',  /*1F93; 1F23 03B9; Case map*/\r
+    '\u1F94',  /*1F94; 1F24 03B9; Case map*/\r
+    '\u1F95',  /*1F95; 1F25 03B9; Case map*/\r
+    '\u1F96',  /*1F96; 1F26 03B9; Case map*/\r
+    '\u1F97',  /*1F97; 1F27 03B9; Case map*/\r
+    '\u1F98',  /*1F98; 1F20 03B9; Case map*/\r
+    '\u1F99',  /*1F99; 1F21 03B9; Case map*/\r
+    '\u1F9A',  /*1F9A; 1F22 03B9; Case map*/\r
+    '\u1F9B',  /*1F9B; 1F23 03B9; Case map*/\r
+    '\u1F9C',  /*1F9C; 1F24 03B9; Case map*/\r
+    '\u1F9D',  /*1F9D; 1F25 03B9; Case map*/\r
+    '\u1F9E',  /*1F9E; 1F26 03B9; Case map*/\r
+    '\u1F9F',  /*1F9F; 1F27 03B9; Case map*/\r
+    '\u1FA0',  /*1FA0; 1F60 03B9; Case map*/\r
+    '\u1FA1',  /*1FA1; 1F61 03B9; Case map*/\r
+    '\u1FA2',  /*1FA2; 1F62 03B9; Case map*/\r
+    '\u1FA3',  /*1FA3; 1F63 03B9; Case map*/\r
+    '\u1FA4',  /*1FA4; 1F64 03B9; Case map*/\r
+    '\u1FA5',  /*1FA5; 1F65 03B9; Case map*/\r
+    '\u1FA6',  /*1FA6; 1F66 03B9; Case map*/\r
+    '\u1FA7',  /*1FA7; 1F67 03B9; Case map*/\r
+    '\u1FA8',  /*1FA8; 1F60 03B9; Case map*/\r
+    '\u1FA9',  /*1FA9; 1F61 03B9; Case map*/\r
+    '\u1FAA',  /*1FAA; 1F62 03B9; Case map*/\r
+    '\u1FAB',  /*1FAB; 1F63 03B9; Case map*/\r
+    '\u1FAC',  /*1FAC; 1F64 03B9; Case map*/\r
+    '\u1FAD',  /*1FAD; 1F65 03B9; Case map*/\r
+    '\u1FAE',  /*1FAE; 1F66 03B9; Case map*/\r
+    '\u1FAF',  /*1FAF; 1F67 03B9; Case map*/\r
+    '\u1FB2',  /*1FB2; 1F70 03B9; Case map*/\r
+    '\u1FB3',  /*1FB3; 03B1 03B9; Case map*/\r
+    '\u1FB4',  /*1FB4; 03AC 03B9; Case map*/\r
+    '\u1FB6',  /*1FB6; 03B1 0342; Case map*/\r
+    '\u1FB7',  /*1FB7; 03B1 0342 03B9; Case map*/\r
+    '\u1FB8',  /*1FB8; 1FB0; Case map*/\r
+    '\u1FB9',  /*1FB9; 1FB1; Case map*/\r
+    '\u1FBA',  /*1FBA; 1F70; Case map*/\r
+    '\u1FBB',  /*1FBB; 1F71; Case map*/\r
+    '\u1FBC',  /*1FBC; 03B1 03B9; Case map*/\r
+    '\u1FBE',  /*1FBE; 03B9; Case map*/\r
+    '\u1FC2',  /*1FC2; 1F74 03B9; Case map*/\r
+    '\u1FC3',  /*1FC3; 03B7 03B9; Case map*/\r
+    '\u1FC4',  /*1FC4; 03AE 03B9; Case map*/\r
+    '\u1FC6',  /*1FC6; 03B7 0342; Case map*/\r
+    '\u1FC7',  /*1FC7; 03B7 0342 03B9; Case map*/\r
+    '\u1FC8',  /*1FC8; 1F72; Case map*/\r
+    '\u1FC9',  /*1FC9; 1F73; Case map*/\r
+    '\u1FCA',  /*1FCA; 1F74; Case map*/\r
+    '\u1FCB',  /*1FCB; 1F75; Case map*/\r
+    '\u1FCC',  /*1FCC; 03B7 03B9; Case map*/\r
+    '\u1FD2',  /*1FD2; 03B9 0308 0300; Case map*/\r
+    '\u1FD3',  /*1FD3; 03B9 0308 0301; Case map*/\r
+    '\u1FD6',  /*1FD6; 03B9 0342; Case map*/\r
+    '\u1FD7',  /*1FD7; 03B9 0308 0342; Case map*/\r
+    '\u1FD8',  /*1FD8; 1FD0; Case map*/\r
+    '\u1FD9',  /*1FD9; 1FD1; Case map*/\r
+    '\u1FDA',  /*1FDA; 1F76; Case map*/\r
+    '\u1FDB',  /*1FDB; 1F77; Case map*/\r
+    '\u1FE2',  /*1FE2; 03C5 0308 0300; Case map*/\r
+    '\u1FE3',  /*1FE3; 03C5 0308 0301; Case map*/\r
+    '\u1FE4',  /*1FE4; 03C1 0313; Case map*/\r
+    '\u1FE6',  /*1FE6; 03C5 0342; Case map*/\r
+    '\u1FE7',  /*1FE7; 03C5 0308 0342; Case map*/\r
+    '\u1FE8',  /*1FE8; 1FE0; Case map*/\r
+    '\u1FE9',  /*1FE9; 1FE1; Case map*/\r
+    '\u1FEA',  /*1FEA; 1F7A; Case map*/\r
+    '\u1FEB',  /*1FEB; 1F7B; Case map*/\r
+    '\u1FEC',  /*1FEC; 1FE5; Case map*/\r
+    '\u1FF2',  /*1FF2; 1F7C 03B9; Case map*/\r
+    '\u1FF3',  /*1FF3; 03C9 03B9; Case map*/\r
+    '\u1FF4',  /*1FF4; 03CE 03B9; Case map*/\r
+    '\u1FF6',  /*1FF6; 03C9 0342; Case map*/\r
+    '\u1FF7',  /*1FF7; 03C9 0342 03B9; Case map*/\r
+    '\u1FF8',  /*1FF8; 1F78; Case map*/\r
+    '\u1FF9',  /*1FF9; 1F79; Case map*/\r
+    '\u1FFA',  /*1FFA; 1F7C; Case map*/\r
+    '\u1FFB',  /*1FFB; 1F7D; Case map*/\r
+    '\u1FFC',  /*1FFC; 03C9 03B9; Case map*/\r
+    '\u2126',  /*2126; 03C9; Case map*/\r
+    '\u212A',  /*212A; 006B; Case map*/\r
+    '\u212B',  /*212B; 00E5; Case map*/\r
+    '\u2160',  /*2160; 2170; Case map*/\r
+    '\u2161',  /*2161; 2171; Case map*/\r
+    '\u2162',  /*2162; 2172; Case map*/\r
+    '\u2163',  /*2163; 2173; Case map*/\r
+    '\u2164',  /*2164; 2174; Case map*/\r
+    '\u2165',  /*2165; 2175; Case map*/\r
+    '\u2166',  /*2166; 2176; Case map*/\r
+    '\u2167',  /*2167; 2177; Case map*/\r
+    '\u2168',  /*2168; 2178; Case map*/\r
+    '\u2169',  /*2169; 2179; Case map*/\r
+    '\u216A',  /*216A; 217A; Case map*/\r
+    '\u216B',  /*216B; 217B; Case map*/\r
+    '\u216C',  /*216C; 217C; Case map*/\r
+    '\u216D',  /*216D; 217D; Case map*/\r
+    '\u216E',  /*216E; 217E; Case map*/\r
+    '\u216F',  /*216F; 217F; Case map*/\r
+    '\u24B6',  /*24B6; 24D0; Case map*/\r
+    '\u24B7',  /*24B7; 24D1; Case map*/\r
+    '\u24B8',  /*24B8; 24D2; Case map*/\r
+    '\u24B9',  /*24B9; 24D3; Case map*/\r
+    '\u24BA',  /*24BA; 24D4; Case map*/\r
+    '\u24BB',  /*24BB; 24D5; Case map*/\r
+    '\u24BC',  /*24BC; 24D6; Case map*/\r
+    '\u24BD',  /*24BD; 24D7; Case map*/\r
+    '\u24BE',  /*24BE; 24D8; Case map*/\r
+    '\u24BF',  /*24BF; 24D9; Case map*/\r
+    '\u24C0',  /*24C0; 24DA; Case map*/\r
+    '\u24C1',  /*24C1; 24DB; Case map*/\r
+    '\u24C2',  /*24C2; 24DC; Case map*/\r
+    '\u24C3',  /*24C3; 24DD; Case map*/\r
+    '\u24C4',  /*24C4; 24DE; Case map*/\r
+    '\u24C5',  /*24C5; 24DF; Case map*/\r
+    '\u24C6',  /*24C6; 24E0; Case map*/\r
+    '\u24C7',  /*24C7; 24E1; Case map*/\r
+    '\u24C8',  /*24C8; 24E2; Case map*/\r
+    '\u24C9',  /*24C9; 24E3; Case map*/\r
+    '\u24CA',  /*24CA; 24E4; Case map*/\r
+    '\u24CB',  /*24CB; 24E5; Case map*/\r
+    '\u24CC',  /*24CC; 24E6; Case map*/\r
+    '\u24CD',  /*24CD; 24E7; Case map*/\r
+    '\u24CE',  /*24CE; 24E8; Case map*/\r
+    '\u24CF',  /*24CF; 24E9; Case map*/\r
+    '\uFB00',  /*FB00; 0066 0066; Case map*/\r
+    '\uFB01',  /*FB01; 0066 0069; Case map*/\r
+    '\uFB02',  /*FB02; 0066 006C; Case map*/\r
+    '\uFB03',  /*FB03; 0066 0066 0069; Case map*/\r
+    '\uFB04',  /*FB04; 0066 0066 006C; Case map*/\r
+    '\uFB05',  /*FB05; 0073 0074; Case map*/\r
+    '\uFB06',  /*FB06; 0073 0074; Case map*/\r
+    '\uFB13',  /*FB13; 0574 0576; Case map*/\r
+    '\uFB14',  /*FB14; 0574 0565; Case map*/\r
+    '\uFB15',  /*FB15; 0574 056B; Case map*/\r
+    '\uFB16',  /*FB16; 057E 0576; Case map*/\r
+    '\uFB17',  /*FB17; 0574 056D; Case map*/\r
+    '\uFF21',  /*FF21; FF41; Case map*/\r
+    '\uFF22',  /*FF22; FF42; Case map*/\r
+    '\uFF23',  /*FF23; FF43; Case map*/\r
+    '\uFF24',  /*FF24; FF44; Case map*/\r
+    '\uFF25',  /*FF25; FF45; Case map*/\r
+    '\uFF26',  /*FF26; FF46; Case map*/\r
+    '\uFF27',  /*FF27; FF47; Case map*/\r
+    '\uFF28',  /*FF28; FF48; Case map*/\r
+    '\uFF29',  /*FF29; FF49; Case map*/\r
+    '\uFF2A',  /*FF2A; FF4A; Case map*/\r
+    '\uFF2B',  /*FF2B; FF4B; Case map*/\r
+    '\uFF2C',  /*FF2C; FF4C; Case map*/\r
+    '\uFF2D',  /*FF2D; FF4D; Case map*/\r
+    '\uFF2E',  /*FF2E; FF4E; Case map*/\r
+    '\uFF2F',  /*FF2F; FF4F; Case map*/\r
+    '\uFF30',  /*FF30; FF50; Case map*/\r
+    '\uFF31',  /*FF31; FF51; Case map*/\r
+    '\uFF32',  /*FF32; FF52; Case map*/\r
+    '\uFF33',  /*FF33; FF53; Case map*/\r
+    '\uFF34',  /*FF34; FF54; Case map*/\r
+    '\uFF35',  /*FF35; FF55; Case map*/\r
+    '\uFF36',  /*FF36; FF56; Case map*/\r
+    '\uFF37',  /*FF37; FF57; Case map*/\r
+    '\uFF38',  /*FF38; FF58; Case map*/\r
+    '\uFF39',  /*FF39; FF59; Case map*/\r
+    '\uFF3A',  /*FF3A; FF5A; Case map*/\r
+  };\r
+
+  public static string[] B3replace = new string[] {\r
+    "\u0061",  /*0041; 0061; Case map*/\r
+    "\u0062",  /*0042; 0062; Case map*/\r
+    "\u0063",  /*0043; 0063; Case map*/\r
+    "\u0064",  /*0044; 0064; Case map*/\r
+    "\u0065",  /*0045; 0065; Case map*/\r
+    "\u0066",  /*0046; 0066; Case map*/\r
+    "\u0067",  /*0047; 0067; Case map*/\r
+    "\u0068",  /*0048; 0068; Case map*/\r
+    "\u0069",  /*0049; 0069; Case map*/\r
+    "\u006A",  /*004A; 006A; Case map*/\r
+    "\u006B",  /*004B; 006B; Case map*/\r
+    "\u006C",  /*004C; 006C; Case map*/\r
+    "\u006D",  /*004D; 006D; Case map*/\r
+    "\u006E",  /*004E; 006E; Case map*/\r
+    "\u006F",  /*004F; 006F; Case map*/\r
+    "\u0070",  /*0050; 0070; Case map*/\r
+    "\u0071",  /*0051; 0071; Case map*/\r
+    "\u0072",  /*0052; 0072; Case map*/\r
+    "\u0073",  /*0053; 0073; Case map*/\r
+    "\u0074",  /*0054; 0074; Case map*/\r
+    "\u0075",  /*0055; 0075; Case map*/\r
+    "\u0076",  /*0056; 0076; Case map*/\r
+    "\u0077",  /*0057; 0077; Case map*/\r
+    "\u0078",  /*0058; 0078; Case map*/\r
+    "\u0079",  /*0059; 0079; Case map*/\r
+    "\u007A",  /*005A; 007A; Case map*/\r
+    "\u03BC",  /*00B5; 03BC; Case map*/\r
+    "\u00E0",  /*00C0; 00E0; Case map*/\r
+    "\u00E1",  /*00C1; 00E1; Case map*/\r
+    "\u00E2",  /*00C2; 00E2; Case map*/\r
+    "\u00E3",  /*00C3; 00E3; Case map*/\r
+    "\u00E4",  /*00C4; 00E4; Case map*/\r
+    "\u00E5",  /*00C5; 00E5; Case map*/\r
+    "\u00E6",  /*00C6; 00E6; Case map*/\r
+    "\u00E7",  /*00C7; 00E7; Case map*/\r
+    "\u00E8",  /*00C8; 00E8; Case map*/\r
+    "\u00E9",  /*00C9; 00E9; Case map*/\r
+    "\u00EA",  /*00CA; 00EA; Case map*/\r
+    "\u00EB",  /*00CB; 00EB; Case map*/\r
+    "\u00EC",  /*00CC; 00EC; Case map*/\r
+    "\u00ED",  /*00CD; 00ED; Case map*/\r
+    "\u00EE",  /*00CE; 00EE; Case map*/\r
+    "\u00EF",  /*00CF; 00EF; Case map*/\r
+    "\u00F0",  /*00D0; 00F0; Case map*/\r
+    "\u00F1",  /*00D1; 00F1; Case map*/\r
+    "\u00F2",  /*00D2; 00F2; Case map*/\r
+    "\u00F3",  /*00D3; 00F3; Case map*/\r
+    "\u00F4",  /*00D4; 00F4; Case map*/\r
+    "\u00F5",  /*00D5; 00F5; Case map*/\r
+    "\u00F6",  /*00D6; 00F6; Case map*/\r
+    "\u00F8",  /*00D8; 00F8; Case map*/\r
+    "\u00F9",  /*00D9; 00F9; Case map*/\r
+    "\u00FA",  /*00DA; 00FA; Case map*/\r
+    "\u00FB",  /*00DB; 00FB; Case map*/\r
+    "\u00FC",  /*00DC; 00FC; Case map*/\r
+    "\u00FD",  /*00DD; 00FD; Case map*/\r
+    "\u00FE",  /*00DE; 00FE; Case map*/\r
+    "\u0073\u0073",    /*00DF; 0073 0073; Case map*/\r
+    "\u0101",  /*0100; 0101; Case map*/\r
+    "\u0103",  /*0102; 0103; Case map*/\r
+    "\u0105",  /*0104; 0105; Case map*/\r
+    "\u0107",  /*0106; 0107; Case map*/\r
+    "\u0109",  /*0108; 0109; Case map*/\r
+    "\u010B",  /*010A; 010B; Case map*/\r
+    "\u010D",  /*010C; 010D; Case map*/\r
+    "\u010F",  /*010E; 010F; Case map*/\r
+    "\u0111",  /*0110; 0111; Case map*/\r
+    "\u0113",  /*0112; 0113; Case map*/\r
+    "\u0115",  /*0114; 0115; Case map*/\r
+    "\u0117",  /*0116; 0117; Case map*/\r
+    "\u0119",  /*0118; 0119; Case map*/\r
+    "\u011B",  /*011A; 011B; Case map*/\r
+    "\u011D",  /*011C; 011D; Case map*/\r
+    "\u011F",  /*011E; 011F; Case map*/\r
+    "\u0121",  /*0120; 0121; Case map*/\r
+    "\u0123",  /*0122; 0123; Case map*/\r
+    "\u0125",  /*0124; 0125; Case map*/\r
+    "\u0127",  /*0126; 0127; Case map*/\r
+    "\u0129",  /*0128; 0129; Case map*/\r
+    "\u012B",  /*012A; 012B; Case map*/\r
+    "\u012D",  /*012C; 012D; Case map*/\r
+    "\u012F",  /*012E; 012F; Case map*/\r
+    "\u0069\u0307",    /*0130; 0069 0307; Case map*/\r
+    "\u0133",  /*0132; 0133; Case map*/\r
+    "\u0135",  /*0134; 0135; Case map*/\r
+    "\u0137",  /*0136; 0137; Case map*/\r
+    "\u013A",  /*0139; 013A; Case map*/\r
+    "\u013C",  /*013B; 013C; Case map*/\r
+    "\u013E",  /*013D; 013E; Case map*/\r
+    "\u0140",  /*013F; 0140; Case map*/\r
+    "\u0142",  /*0141; 0142; Case map*/\r
+    "\u0144",  /*0143; 0144; Case map*/\r
+    "\u0146",  /*0145; 0146; Case map*/\r
+    "\u0148",  /*0147; 0148; Case map*/\r
+    "\u02BC\u006E",    /*0149; 02BC 006E; Case map*/\r
+    "\u014B",  /*014A; 014B; Case map*/\r
+    "\u014D",  /*014C; 014D; Case map*/\r
+    "\u014F",  /*014E; 014F; Case map*/\r
+    "\u0151",  /*0150; 0151; Case map*/\r
+    "\u0153",  /*0152; 0153; Case map*/\r
+    "\u0155",  /*0154; 0155; Case map*/\r
+    "\u0157",  /*0156; 0157; Case map*/\r
+    "\u0159",  /*0158; 0159; Case map*/\r
+    "\u015B",  /*015A; 015B; Case map*/\r
+    "\u015D",  /*015C; 015D; Case map*/\r
+    "\u015F",  /*015E; 015F; Case map*/\r
+    "\u0161",  /*0160; 0161; Case map*/\r
+    "\u0163",  /*0162; 0163; Case map*/\r
+    "\u0165",  /*0164; 0165; Case map*/\r
+    "\u0167",  /*0166; 0167; Case map*/\r
+    "\u0169",  /*0168; 0169; Case map*/\r
+    "\u016B",  /*016A; 016B; Case map*/\r
+    "\u016D",  /*016C; 016D; Case map*/\r
+    "\u016F",  /*016E; 016F; Case map*/\r
+    "\u0171",  /*0170; 0171; Case map*/\r
+    "\u0173",  /*0172; 0173; Case map*/\r
+    "\u0175",  /*0174; 0175; Case map*/\r
+    "\u0177",  /*0176; 0177; Case map*/\r
+    "\u00FF",  /*0178; 00FF; Case map*/\r
+    "\u017A",  /*0179; 017A; Case map*/\r
+    "\u017C",  /*017B; 017C; Case map*/\r
+    "\u017E",  /*017D; 017E; Case map*/\r
+    "\u0073",  /*017F; 0073; Case map*/\r
+    "\u0253",  /*0181; 0253; Case map*/\r
+    "\u0183",  /*0182; 0183; Case map*/\r
+    "\u0185",  /*0184; 0185; Case map*/\r
+    "\u0254",  /*0186; 0254; Case map*/\r
+    "\u0188",  /*0187; 0188; Case map*/\r
+    "\u0256",  /*0189; 0256; Case map*/\r
+    "\u0257",  /*018A; 0257; Case map*/\r
+    "\u018C",  /*018B; 018C; Case map*/\r
+    "\u01DD",  /*018E; 01DD; Case map*/\r
+    "\u0259",  /*018F; 0259; Case map*/\r
+    "\u025B",  /*0190; 025B; Case map*/\r
+    "\u0192",  /*0191; 0192; Case map*/\r
+    "\u0260",  /*0193; 0260; Case map*/\r
+    "\u0263",  /*0194; 0263; Case map*/\r
+    "\u0269",  /*0196; 0269; Case map*/\r
+    "\u0268",  /*0197; 0268; Case map*/\r
+    "\u0199",  /*0198; 0199; Case map*/\r
+    "\u026F",  /*019C; 026F; Case map*/\r
+    "\u0272",  /*019D; 0272; Case map*/\r
+    "\u0275",  /*019F; 0275; Case map*/\r
+    "\u01A1",  /*01A0; 01A1; Case map*/\r
+    "\u01A3",  /*01A2; 01A3; Case map*/\r
+    "\u01A5",  /*01A4; 01A5; Case map*/\r
+    "\u0280",  /*01A6; 0280; Case map*/\r
+    "\u01A8",  /*01A7; 01A8; Case map*/\r
+    "\u0283",  /*01A9; 0283; Case map*/\r
+    "\u01AD",  /*01AC; 01AD; Case map*/\r
+    "\u0288",  /*01AE; 0288; Case map*/\r
+    "\u01B0",  /*01AF; 01B0; Case map*/\r
+    "\u028A",  /*01B1; 028A; Case map*/\r
+    "\u028B",  /*01B2; 028B; Case map*/\r
+    "\u01B4",  /*01B3; 01B4; Case map*/\r
+    "\u01B6",  /*01B5; 01B6; Case map*/\r
+    "\u0292",  /*01B7; 0292; Case map*/\r
+    "\u01B9",  /*01B8; 01B9; Case map*/\r
+    "\u01BD",  /*01BC; 01BD; Case map*/\r
+    "\u01C6",  /*01C4; 01C6; Case map*/\r
+    "\u01C6",  /*01C5; 01C6; Case map*/\r
+    "\u01C9",  /*01C7; 01C9; Case map*/\r
+    "\u01C9",  /*01C8; 01C9; Case map*/\r
+    "\u01CC",  /*01CA; 01CC; Case map*/\r
+    "\u01CC",  /*01CB; 01CC; Case map*/\r
+    "\u01CE",  /*01CD; 01CE; Case map*/\r
+    "\u01D0",  /*01CF; 01D0; Case map*/\r
+    "\u01D2",  /*01D1; 01D2; Case map*/\r
+    "\u01D4",  /*01D3; 01D4; Case map*/\r
+    "\u01D6",  /*01D5; 01D6; Case map*/\r
+    "\u01D8",  /*01D7; 01D8; Case map*/\r
+    "\u01DA",  /*01D9; 01DA; Case map*/\r
+    "\u01DC",  /*01DB; 01DC; Case map*/\r
+    "\u01DF",  /*01DE; 01DF; Case map*/\r
+    "\u01E1",  /*01E0; 01E1; Case map*/\r
+    "\u01E3",  /*01E2; 01E3; Case map*/\r
+    "\u01E5",  /*01E4; 01E5; Case map*/\r
+    "\u01E7",  /*01E6; 01E7; Case map*/\r
+    "\u01E9",  /*01E8; 01E9; Case map*/\r
+    "\u01EB",  /*01EA; 01EB; Case map*/\r
+    "\u01ED",  /*01EC; 01ED; Case map*/\r
+    "\u01EF",  /*01EE; 01EF; Case map*/\r
+    "\u006A\u030C",    /*01F0; 006A 030C; Case map*/\r
+    "\u01F3",  /*01F1; 01F3; Case map*/\r
+    "\u01F3",  /*01F2; 01F3; Case map*/\r
+    "\u01F5",  /*01F4; 01F5; Case map*/\r
+    "\u0195",  /*01F6; 0195; Case map*/\r
+    "\u01BF",  /*01F7; 01BF; Case map*/\r
+    "\u01F9",  /*01F8; 01F9; Case map*/\r
+    "\u01FB",  /*01FA; 01FB; Case map*/\r
+    "\u01FD",  /*01FC; 01FD; Case map*/\r
+    "\u01FF",  /*01FE; 01FF; Case map*/\r
+    "\u0201",  /*0200; 0201; Case map*/\r
+    "\u0203",  /*0202; 0203; Case map*/\r
+    "\u0205",  /*0204; 0205; Case map*/\r
+    "\u0207",  /*0206; 0207; Case map*/\r
+    "\u0209",  /*0208; 0209; Case map*/\r
+    "\u020B",  /*020A; 020B; Case map*/\r
+    "\u020D",  /*020C; 020D; Case map*/\r
+    "\u020F",  /*020E; 020F; Case map*/\r
+    "\u0211",  /*0210; 0211; Case map*/\r
+    "\u0213",  /*0212; 0213; Case map*/\r
+    "\u0215",  /*0214; 0215; Case map*/\r
+    "\u0217",  /*0216; 0217; Case map*/\r
+    "\u0219",  /*0218; 0219; Case map*/\r
+    "\u021B",  /*021A; 021B; Case map*/\r
+    "\u021D",  /*021C; 021D; Case map*/\r
+    "\u021F",  /*021E; 021F; Case map*/\r
+    "\u019E",  /*0220; 019E; Case map*/\r
+    "\u0223",  /*0222; 0223; Case map*/\r
+    "\u0225",  /*0224; 0225; Case map*/\r
+    "\u0227",  /*0226; 0227; Case map*/\r
+    "\u0229",  /*0228; 0229; Case map*/\r
+    "\u022B",  /*022A; 022B; Case map*/\r
+    "\u022D",  /*022C; 022D; Case map*/\r
+    "\u022F",  /*022E; 022F; Case map*/\r
+    "\u0231",  /*0230; 0231; Case map*/\r
+    "\u0233",  /*0232; 0233; Case map*/\r
+    "\u03B9",  /*0345; 03B9; Case map*/\r
+    "\u03AC",  /*0386; 03AC; Case map*/\r
+    "\u03AD",  /*0388; 03AD; Case map*/\r
+    "\u03AE",  /*0389; 03AE; Case map*/\r
+    "\u03AF",  /*038A; 03AF; Case map*/\r
+    "\u03CC",  /*038C; 03CC; Case map*/\r
+    "\u03CD",  /*038E; 03CD; Case map*/\r
+    "\u03CE",  /*038F; 03CE; Case map*/\r
+    "\u03B9\u0308\u0301",      /*0390; 03B9 0308 0301; Case map*/\r
+    "\u03B1",  /*0391; 03B1; Case map*/\r
+    "\u03B2",  /*0392; 03B2; Case map*/\r
+    "\u03B3",  /*0393; 03B3; Case map*/\r
+    "\u03B4",  /*0394; 03B4; Case map*/\r
+    "\u03B5",  /*0395; 03B5; Case map*/\r
+    "\u03B6",  /*0396; 03B6; Case map*/\r
+    "\u03B7",  /*0397; 03B7; Case map*/\r
+    "\u03B8",  /*0398; 03B8; Case map*/\r
+    "\u03B9",  /*0399; 03B9; Case map*/\r
+    "\u03BA",  /*039A; 03BA; Case map*/\r
+    "\u03BB",  /*039B; 03BB; Case map*/\r
+    "\u03BC",  /*039C; 03BC; Case map*/\r
+    "\u03BD",  /*039D; 03BD; Case map*/\r
+    "\u03BE",  /*039E; 03BE; Case map*/\r
+    "\u03BF",  /*039F; 03BF; Case map*/\r
+    "\u03C0",  /*03A0; 03C0; Case map*/\r
+    "\u03C1",  /*03A1; 03C1; Case map*/\r
+    "\u03C3",  /*03A3; 03C3; Case map*/\r
+    "\u03C4",  /*03A4; 03C4; Case map*/\r
+    "\u03C5",  /*03A5; 03C5; Case map*/\r
+    "\u03C6",  /*03A6; 03C6; Case map*/\r
+    "\u03C7",  /*03A7; 03C7; Case map*/\r
+    "\u03C8",  /*03A8; 03C8; Case map*/\r
+    "\u03C9",  /*03A9; 03C9; Case map*/\r
+    "\u03CA",  /*03AA; 03CA; Case map*/\r
+    "\u03CB",  /*03AB; 03CB; Case map*/\r
+    "\u03C5\u0308\u0301",      /*03B0; 03C5 0308 0301; Case map*/\r
+    "\u03C3",  /*03C2; 03C3; Case map*/\r
+    "\u03B2",  /*03D0; 03B2; Case map*/\r
+    "\u03B8",  /*03D1; 03B8; Case map*/\r
+    "\u03C6",  /*03D5; 03C6; Case map*/\r
+    "\u03C0",  /*03D6; 03C0; Case map*/\r
+    "\u03D9",  /*03D8; 03D9; Case map*/\r
+    "\u03DB",  /*03DA; 03DB; Case map*/\r
+    "\u03DD",  /*03DC; 03DD; Case map*/\r
+    "\u03DF",  /*03DE; 03DF; Case map*/\r
+    "\u03E1",  /*03E0; 03E1; Case map*/\r
+    "\u03E3",  /*03E2; 03E3; Case map*/\r
+    "\u03E5",  /*03E4; 03E5; Case map*/\r
+    "\u03E7",  /*03E6; 03E7; Case map*/\r
+    "\u03E9",  /*03E8; 03E9; Case map*/\r
+    "\u03EB",  /*03EA; 03EB; Case map*/\r
+    "\u03ED",  /*03EC; 03ED; Case map*/\r
+    "\u03EF",  /*03EE; 03EF; Case map*/\r
+    "\u03BA",  /*03F0; 03BA; Case map*/\r
+    "\u03C1",  /*03F1; 03C1; Case map*/\r
+    "\u03C3",  /*03F2; 03C3; Case map*/\r
+    "\u03B8",  /*03F4; 03B8; Case map*/\r
+    "\u03B5",  /*03F5; 03B5; Case map*/\r
+    "\u0450",  /*0400; 0450; Case map*/\r
+    "\u0451",  /*0401; 0451; Case map*/\r
+    "\u0452",  /*0402; 0452; Case map*/\r
+    "\u0453",  /*0403; 0453; Case map*/\r
+    "\u0454",  /*0404; 0454; Case map*/\r
+    "\u0455",  /*0405; 0455; Case map*/\r
+    "\u0456",  /*0406; 0456; Case map*/\r
+    "\u0457",  /*0407; 0457; Case map*/\r
+    "\u0458",  /*0408; 0458; Case map*/\r
+    "\u0459",  /*0409; 0459; Case map*/\r
+    "\u045A",  /*040A; 045A; Case map*/\r
+    "\u045B",  /*040B; 045B; Case map*/\r
+    "\u045C",  /*040C; 045C; Case map*/\r
+    "\u045D",  /*040D; 045D; Case map*/\r
+    "\u045E",  /*040E; 045E; Case map*/\r
+    "\u045F",  /*040F; 045F; Case map*/\r
+    "\u0430",  /*0410; 0430; Case map*/\r
+    "\u0431",  /*0411; 0431; Case map*/\r
+    "\u0432",  /*0412; 0432; Case map*/\r
+    "\u0433",  /*0413; 0433; Case map*/\r
+    "\u0434",  /*0414; 0434; Case map*/\r
+    "\u0435",  /*0415; 0435; Case map*/\r
+    "\u0436",  /*0416; 0436; Case map*/\r
+    "\u0437",  /*0417; 0437; Case map*/\r
+    "\u0438",  /*0418; 0438; Case map*/\r
+    "\u0439",  /*0419; 0439; Case map*/\r
+    "\u043A",  /*041A; 043A; Case map*/\r
+    "\u043B",  /*041B; 043B; Case map*/\r
+    "\u043C",  /*041C; 043C; Case map*/\r
+    "\u043D",  /*041D; 043D; Case map*/\r
+    "\u043E",  /*041E; 043E; Case map*/\r
+    "\u043F",  /*041F; 043F; Case map*/\r
+    "\u0440",  /*0420; 0440; Case map*/\r
+    "\u0441",  /*0421; 0441; Case map*/\r
+    "\u0442",  /*0422; 0442; Case map*/\r
+    "\u0443",  /*0423; 0443; Case map*/\r
+    "\u0444",  /*0424; 0444; Case map*/\r
+    "\u0445",  /*0425; 0445; Case map*/\r
+    "\u0446",  /*0426; 0446; Case map*/\r
+    "\u0447",  /*0427; 0447; Case map*/\r
+    "\u0448",  /*0428; 0448; Case map*/\r
+    "\u0449",  /*0429; 0449; Case map*/\r
+    "\u044A",  /*042A; 044A; Case map*/\r
+    "\u044B",  /*042B; 044B; Case map*/\r
+    "\u044C",  /*042C; 044C; Case map*/\r
+    "\u044D",  /*042D; 044D; Case map*/\r
+    "\u044E",  /*042E; 044E; Case map*/\r
+    "\u044F",  /*042F; 044F; Case map*/\r
+    "\u0461",  /*0460; 0461; Case map*/\r
+    "\u0463",  /*0462; 0463; Case map*/\r
+    "\u0465",  /*0464; 0465; Case map*/\r
+    "\u0467",  /*0466; 0467; Case map*/\r
+    "\u0469",  /*0468; 0469; Case map*/\r
+    "\u046B",  /*046A; 046B; Case map*/\r
+    "\u046D",  /*046C; 046D; Case map*/\r
+    "\u046F",  /*046E; 046F; Case map*/\r
+    "\u0471",  /*0470; 0471; Case map*/\r
+    "\u0473",  /*0472; 0473; Case map*/\r
+    "\u0475",  /*0474; 0475; Case map*/\r
+    "\u0477",  /*0476; 0477; Case map*/\r
+    "\u0479",  /*0478; 0479; Case map*/\r
+    "\u047B",  /*047A; 047B; Case map*/\r
+    "\u047D",  /*047C; 047D; Case map*/\r
+    "\u047F",  /*047E; 047F; Case map*/\r
+    "\u0481",  /*0480; 0481; Case map*/\r
+    "\u048B",  /*048A; 048B; Case map*/\r
+    "\u048D",  /*048C; 048D; Case map*/\r
+    "\u048F",  /*048E; 048F; Case map*/\r
+    "\u0491",  /*0490; 0491; Case map*/\r
+    "\u0493",  /*0492; 0493; Case map*/\r
+    "\u0495",  /*0494; 0495; Case map*/\r
+    "\u0497",  /*0496; 0497; Case map*/\r
+    "\u0499",  /*0498; 0499; Case map*/\r
+    "\u049B",  /*049A; 049B; Case map*/\r
+    "\u049D",  /*049C; 049D; Case map*/\r
+    "\u049F",  /*049E; 049F; Case map*/\r
+    "\u04A1",  /*04A0; 04A1; Case map*/\r
+    "\u04A3",  /*04A2; 04A3; Case map*/\r
+    "\u04A5",  /*04A4; 04A5; Case map*/\r
+    "\u04A7",  /*04A6; 04A7; Case map*/\r
+    "\u04A9",  /*04A8; 04A9; Case map*/\r
+    "\u04AB",  /*04AA; 04AB; Case map*/\r
+    "\u04AD",  /*04AC; 04AD; Case map*/\r
+    "\u04AF",  /*04AE; 04AF; Case map*/\r
+    "\u04B1",  /*04B0; 04B1; Case map*/\r
+    "\u04B3",  /*04B2; 04B3; Case map*/\r
+    "\u04B5",  /*04B4; 04B5; Case map*/\r
+    "\u04B7",  /*04B6; 04B7; Case map*/\r
+    "\u04B9",  /*04B8; 04B9; Case map*/\r
+    "\u04BB",  /*04BA; 04BB; Case map*/\r
+    "\u04BD",  /*04BC; 04BD; Case map*/\r
+    "\u04BF",  /*04BE; 04BF; Case map*/\r
+    "\u04C2",  /*04C1; 04C2; Case map*/\r
+    "\u04C4",  /*04C3; 04C4; Case map*/\r
+    "\u04C6",  /*04C5; 04C6; Case map*/\r
+    "\u04C8",  /*04C7; 04C8; Case map*/\r
+    "\u04CA",  /*04C9; 04CA; Case map*/\r
+    "\u04CC",  /*04CB; 04CC; Case map*/\r
+    "\u04CE",  /*04CD; 04CE; Case map*/\r
+    "\u04D1",  /*04D0; 04D1; Case map*/\r
+    "\u04D3",  /*04D2; 04D3; Case map*/\r
+    "\u04D5",  /*04D4; 04D5; Case map*/\r
+    "\u04D7",  /*04D6; 04D7; Case map*/\r
+    "\u04D9",  /*04D8; 04D9; Case map*/\r
+    "\u04DB",  /*04DA; 04DB; Case map*/\r
+    "\u04DD",  /*04DC; 04DD; Case map*/\r
+    "\u04DF",  /*04DE; 04DF; Case map*/\r
+    "\u04E1",  /*04E0; 04E1; Case map*/\r
+    "\u04E3",  /*04E2; 04E3; Case map*/\r
+    "\u04E5",  /*04E4; 04E5; Case map*/\r
+    "\u04E7",  /*04E6; 04E7; Case map*/\r
+    "\u04E9",  /*04E8; 04E9; Case map*/\r
+    "\u04EB",  /*04EA; 04EB; Case map*/\r
+    "\u04ED",  /*04EC; 04ED; Case map*/\r
+    "\u04EF",  /*04EE; 04EF; Case map*/\r
+    "\u04F1",  /*04F0; 04F1; Case map*/\r
+    "\u04F3",  /*04F2; 04F3; Case map*/\r
+    "\u04F5",  /*04F4; 04F5; Case map*/\r
+    "\u04F9",  /*04F8; 04F9; Case map*/\r
+    "\u0501",  /*0500; 0501; Case map*/\r
+    "\u0503",  /*0502; 0503; Case map*/\r
+    "\u0505",  /*0504; 0505; Case map*/\r
+    "\u0507",  /*0506; 0507; Case map*/\r
+    "\u0509",  /*0508; 0509; Case map*/\r
+    "\u050B",  /*050A; 050B; Case map*/\r
+    "\u050D",  /*050C; 050D; Case map*/\r
+    "\u050F",  /*050E; 050F; Case map*/\r
+    "\u0561",  /*0531; 0561; Case map*/\r
+    "\u0562",  /*0532; 0562; Case map*/\r
+    "\u0563",  /*0533; 0563; Case map*/\r
+    "\u0564",  /*0534; 0564; Case map*/\r
+    "\u0565",  /*0535; 0565; Case map*/\r
+    "\u0566",  /*0536; 0566; Case map*/\r
+    "\u0567",  /*0537; 0567; Case map*/\r
+    "\u0568",  /*0538; 0568; Case map*/\r
+    "\u0569",  /*0539; 0569; Case map*/\r
+    "\u056A",  /*053A; 056A; Case map*/\r
+    "\u056B",  /*053B; 056B; Case map*/\r
+    "\u056C",  /*053C; 056C; Case map*/\r
+    "\u056D",  /*053D; 056D; Case map*/\r
+    "\u056E",  /*053E; 056E; Case map*/\r
+    "\u056F",  /*053F; 056F; Case map*/\r
+    "\u0570",  /*0540; 0570; Case map*/\r
+    "\u0571",  /*0541; 0571; Case map*/\r
+    "\u0572",  /*0542; 0572; Case map*/\r
+    "\u0573",  /*0543; 0573; Case map*/\r
+    "\u0574",  /*0544; 0574; Case map*/\r
+    "\u0575",  /*0545; 0575; Case map*/\r
+    "\u0576",  /*0546; 0576; Case map*/\r
+    "\u0577",  /*0547; 0577; Case map*/\r
+    "\u0578",  /*0548; 0578; Case map*/\r
+    "\u0579",  /*0549; 0579; Case map*/\r
+    "\u057A",  /*054A; 057A; Case map*/\r
+    "\u057B",  /*054B; 057B; Case map*/\r
+    "\u057C",  /*054C; 057C; Case map*/\r
+    "\u057D",  /*054D; 057D; Case map*/\r
+    "\u057E",  /*054E; 057E; Case map*/\r
+    "\u057F",  /*054F; 057F; Case map*/\r
+    "\u0580",  /*0550; 0580; Case map*/\r
+    "\u0581",  /*0551; 0581; Case map*/\r
+    "\u0582",  /*0552; 0582; Case map*/\r
+    "\u0583",  /*0553; 0583; Case map*/\r
+    "\u0584",  /*0554; 0584; Case map*/\r
+    "\u0585",  /*0555; 0585; Case map*/\r
+    "\u0586",  /*0556; 0586; Case map*/\r
+    "\u0565\u0582",    /*0587; 0565 0582; Case map*/\r
+    "\u1E01",  /*1E00; 1E01; Case map*/\r
+    "\u1E03",  /*1E02; 1E03; Case map*/\r
+    "\u1E05",  /*1E04; 1E05; Case map*/\r
+    "\u1E07",  /*1E06; 1E07; Case map*/\r
+    "\u1E09",  /*1E08; 1E09; Case map*/\r
+    "\u1E0B",  /*1E0A; 1E0B; Case map*/\r
+    "\u1E0D",  /*1E0C; 1E0D; Case map*/\r
+    "\u1E0F",  /*1E0E; 1E0F; Case map*/\r
+    "\u1E11",  /*1E10; 1E11; Case map*/\r
+    "\u1E13",  /*1E12; 1E13; Case map*/\r
+    "\u1E15",  /*1E14; 1E15; Case map*/\r
+    "\u1E17",  /*1E16; 1E17; Case map*/\r
+    "\u1E19",  /*1E18; 1E19; Case map*/\r
+    "\u1E1B",  /*1E1A; 1E1B; Case map*/\r
+    "\u1E1D",  /*1E1C; 1E1D; Case map*/\r
+    "\u1E1F",  /*1E1E; 1E1F; Case map*/\r
+    "\u1E21",  /*1E20; 1E21; Case map*/\r
+    "\u1E23",  /*1E22; 1E23; Case map*/\r
+    "\u1E25",  /*1E24; 1E25; Case map*/\r
+    "\u1E27",  /*1E26; 1E27; Case map*/\r
+    "\u1E29",  /*1E28; 1E29; Case map*/\r
+    "\u1E2B",  /*1E2A; 1E2B; Case map*/\r
+    "\u1E2D",  /*1E2C; 1E2D; Case map*/\r
+    "\u1E2F",  /*1E2E; 1E2F; Case map*/\r
+    "\u1E31",  /*1E30; 1E31; Case map*/\r
+    "\u1E33",  /*1E32; 1E33; Case map*/\r
+    "\u1E35",  /*1E34; 1E35; Case map*/\r
+    "\u1E37",  /*1E36; 1E37; Case map*/\r
+    "\u1E39",  /*1E38; 1E39; Case map*/\r
+    "\u1E3B",  /*1E3A; 1E3B; Case map*/\r
+    "\u1E3D",  /*1E3C; 1E3D; Case map*/\r
+    "\u1E3F",  /*1E3E; 1E3F; Case map*/\r
+    "\u1E41",  /*1E40; 1E41; Case map*/\r
+    "\u1E43",  /*1E42; 1E43; Case map*/\r
+    "\u1E45",  /*1E44; 1E45; Case map*/\r
+    "\u1E47",  /*1E46; 1E47; Case map*/\r
+    "\u1E49",  /*1E48; 1E49; Case map*/\r
+    "\u1E4B",  /*1E4A; 1E4B; Case map*/\r
+    "\u1E4D",  /*1E4C; 1E4D; Case map*/\r
+    "\u1E4F",  /*1E4E; 1E4F; Case map*/\r
+    "\u1E51",  /*1E50; 1E51; Case map*/\r
+    "\u1E53",  /*1E52; 1E53; Case map*/\r
+    "\u1E55",  /*1E54; 1E55; Case map*/\r
+    "\u1E57",  /*1E56; 1E57; Case map*/\r
+    "\u1E59",  /*1E58; 1E59; Case map*/\r
+    "\u1E5B",  /*1E5A; 1E5B; Case map*/\r
+    "\u1E5D",  /*1E5C; 1E5D; Case map*/\r
+    "\u1E5F",  /*1E5E; 1E5F; Case map*/\r
+    "\u1E61",  /*1E60; 1E61; Case map*/\r
+    "\u1E63",  /*1E62; 1E63; Case map*/\r
+    "\u1E65",  /*1E64; 1E65; Case map*/\r
+    "\u1E67",  /*1E66; 1E67; Case map*/\r
+    "\u1E69",  /*1E68; 1E69; Case map*/\r
+    "\u1E6B",  /*1E6A; 1E6B; Case map*/\r
+    "\u1E6D",  /*1E6C; 1E6D; Case map*/\r
+    "\u1E6F",  /*1E6E; 1E6F; Case map*/\r
+    "\u1E71",  /*1E70; 1E71; Case map*/\r
+    "\u1E73",  /*1E72; 1E73; Case map*/\r
+    "\u1E75",  /*1E74; 1E75; Case map*/\r
+    "\u1E77",  /*1E76; 1E77; Case map*/\r
+    "\u1E79",  /*1E78; 1E79; Case map*/\r
+    "\u1E7B",  /*1E7A; 1E7B; Case map*/\r
+    "\u1E7D",  /*1E7C; 1E7D; Case map*/\r
+    "\u1E7F",  /*1E7E; 1E7F; Case map*/\r
+    "\u1E81",  /*1E80; 1E81; Case map*/\r
+    "\u1E83",  /*1E82; 1E83; Case map*/\r
+    "\u1E85",  /*1E84; 1E85; Case map*/\r
+    "\u1E87",  /*1E86; 1E87; Case map*/\r
+    "\u1E89",  /*1E88; 1E89; Case map*/\r
+    "\u1E8B",  /*1E8A; 1E8B; Case map*/\r
+    "\u1E8D",  /*1E8C; 1E8D; Case map*/\r
+    "\u1E8F",  /*1E8E; 1E8F; Case map*/\r
+    "\u1E91",  /*1E90; 1E91; Case map*/\r
+    "\u1E93",  /*1E92; 1E93; Case map*/\r
+    "\u1E95",  /*1E94; 1E95; Case map*/\r
+    "\u0068\u0331",    /*1E96; 0068 0331; Case map*/\r
+    "\u0074\u0308",    /*1E97; 0074 0308; Case map*/\r
+    "\u0077\u030A",    /*1E98; 0077 030A; Case map*/\r
+    "\u0079\u030A",    /*1E99; 0079 030A; Case map*/\r
+    "\u0061\u02BE",    /*1E9A; 0061 02BE; Case map*/\r
+    "\u1E61",  /*1E9B; 1E61; Case map*/\r
+    "\u1EA1",  /*1EA0; 1EA1; Case map*/\r
+    "\u1EA3",  /*1EA2; 1EA3; Case map*/\r
+    "\u1EA5",  /*1EA4; 1EA5; Case map*/\r
+    "\u1EA7",  /*1EA6; 1EA7; Case map*/\r
+    "\u1EA9",  /*1EA8; 1EA9; Case map*/\r
+    "\u1EAB",  /*1EAA; 1EAB; Case map*/\r
+    "\u1EAD",  /*1EAC; 1EAD; Case map*/\r
+    "\u1EAF",  /*1EAE; 1EAF; Case map*/\r
+    "\u1EB1",  /*1EB0; 1EB1; Case map*/\r
+    "\u1EB3",  /*1EB2; 1EB3; Case map*/\r
+    "\u1EB5",  /*1EB4; 1EB5; Case map*/\r
+    "\u1EB7",  /*1EB6; 1EB7; Case map*/\r
+    "\u1EB9",  /*1EB8; 1EB9; Case map*/\r
+    "\u1EBB",  /*1EBA; 1EBB; Case map*/\r
+    "\u1EBD",  /*1EBC; 1EBD; Case map*/\r
+    "\u1EBF",  /*1EBE; 1EBF; Case map*/\r
+    "\u1EC1",  /*1EC0; 1EC1; Case map*/\r
+    "\u1EC3",  /*1EC2; 1EC3; Case map*/\r
+    "\u1EC5",  /*1EC4; 1EC5; Case map*/\r
+    "\u1EC7",  /*1EC6; 1EC7; Case map*/\r
+    "\u1EC9",  /*1EC8; 1EC9; Case map*/\r
+    "\u1ECB",  /*1ECA; 1ECB; Case map*/\r
+    "\u1ECD",  /*1ECC; 1ECD; Case map*/\r
+    "\u1ECF",  /*1ECE; 1ECF; Case map*/\r
+    "\u1ED1",  /*1ED0; 1ED1; Case map*/\r
+    "\u1ED3",  /*1ED2; 1ED3; Case map*/\r
+    "\u1ED5",  /*1ED4; 1ED5; Case map*/\r
+    "\u1ED7",  /*1ED6; 1ED7; Case map*/\r
+    "\u1ED9",  /*1ED8; 1ED9; Case map*/\r
+    "\u1EDB",  /*1EDA; 1EDB; Case map*/\r
+    "\u1EDD",  /*1EDC; 1EDD; Case map*/\r
+    "\u1EDF",  /*1EDE; 1EDF; Case map*/\r
+    "\u1EE1",  /*1EE0; 1EE1; Case map*/\r
+    "\u1EE3",  /*1EE2; 1EE3; Case map*/\r
+    "\u1EE5",  /*1EE4; 1EE5; Case map*/\r
+    "\u1EE7",  /*1EE6; 1EE7; Case map*/\r
+    "\u1EE9",  /*1EE8; 1EE9; Case map*/\r
+    "\u1EEB",  /*1EEA; 1EEB; Case map*/\r
+    "\u1EED",  /*1EEC; 1EED; Case map*/\r
+    "\u1EEF",  /*1EEE; 1EEF; Case map*/\r
+    "\u1EF1",  /*1EF0; 1EF1; Case map*/\r
+    "\u1EF3",  /*1EF2; 1EF3; Case map*/\r
+    "\u1EF5",  /*1EF4; 1EF5; Case map*/\r
+    "\u1EF7",  /*1EF6; 1EF7; Case map*/\r
+    "\u1EF9",  /*1EF8; 1EF9; Case map*/\r
+    "\u1F00",  /*1F08; 1F00; Case map*/\r
+    "\u1F01",  /*1F09; 1F01; Case map*/\r
+    "\u1F02",  /*1F0A; 1F02; Case map*/\r
+    "\u1F03",  /*1F0B; 1F03; Case map*/\r
+    "\u1F04",  /*1F0C; 1F04; Case map*/\r
+    "\u1F05",  /*1F0D; 1F05; Case map*/\r
+    "\u1F06",  /*1F0E; 1F06; Case map*/\r
+    "\u1F07",  /*1F0F; 1F07; Case map*/\r
+    "\u1F10",  /*1F18; 1F10; Case map*/\r
+    "\u1F11",  /*1F19; 1F11; Case map*/\r
+    "\u1F12",  /*1F1A; 1F12; Case map*/\r
+    "\u1F13",  /*1F1B; 1F13; Case map*/\r
+    "\u1F14",  /*1F1C; 1F14; Case map*/\r
+    "\u1F15",  /*1F1D; 1F15; Case map*/\r
+    "\u1F20",  /*1F28; 1F20; Case map*/\r
+    "\u1F21",  /*1F29; 1F21; Case map*/\r
+    "\u1F22",  /*1F2A; 1F22; Case map*/\r
+    "\u1F23",  /*1F2B; 1F23; Case map*/\r
+    "\u1F24",  /*1F2C; 1F24; Case map*/\r
+    "\u1F25",  /*1F2D; 1F25; Case map*/\r
+    "\u1F26",  /*1F2E; 1F26; Case map*/\r
+    "\u1F27",  /*1F2F; 1F27; Case map*/\r
+    "\u1F30",  /*1F38; 1F30; Case map*/\r
+    "\u1F31",  /*1F39; 1F31; Case map*/\r
+    "\u1F32",  /*1F3A; 1F32; Case map*/\r
+    "\u1F33",  /*1F3B; 1F33; Case map*/\r
+    "\u1F34",  /*1F3C; 1F34; Case map*/\r
+    "\u1F35",  /*1F3D; 1F35; Case map*/\r
+    "\u1F36",  /*1F3E; 1F36; Case map*/\r
+    "\u1F37",  /*1F3F; 1F37; Case map*/\r
+    "\u1F40",  /*1F48; 1F40; Case map*/\r
+    "\u1F41",  /*1F49; 1F41; Case map*/\r
+    "\u1F42",  /*1F4A; 1F42; Case map*/\r
+    "\u1F43",  /*1F4B; 1F43; Case map*/\r
+    "\u1F44",  /*1F4C; 1F44; Case map*/\r
+    "\u1F45",  /*1F4D; 1F45; Case map*/\r
+    "\u03C5\u0313",    /*1F50; 03C5 0313; Case map*/\r
+    "\u03C5\u0313\u0300",      /*1F52; 03C5 0313 0300; Case map*/\r
+    "\u03C5\u0313\u0301",      /*1F54; 03C5 0313 0301; Case map*/\r
+    "\u03C5\u0313\u0342",      /*1F56; 03C5 0313 0342; Case map*/\r
+    "\u1F51",  /*1F59; 1F51; Case map*/\r
+    "\u1F53",  /*1F5B; 1F53; Case map*/\r
+    "\u1F55",  /*1F5D; 1F55; Case map*/\r
+    "\u1F57",  /*1F5F; 1F57; Case map*/\r
+    "\u1F60",  /*1F68; 1F60; Case map*/\r
+    "\u1F61",  /*1F69; 1F61; Case map*/\r
+    "\u1F62",  /*1F6A; 1F62; Case map*/\r
+    "\u1F63",  /*1F6B; 1F63; Case map*/\r
+    "\u1F64",  /*1F6C; 1F64; Case map*/\r
+    "\u1F65",  /*1F6D; 1F65; Case map*/\r
+    "\u1F66",  /*1F6E; 1F66; Case map*/\r
+    "\u1F67",  /*1F6F; 1F67; Case map*/\r
+    "\u1F00\u03B9",    /*1F80; 1F00 03B9; Case map*/\r
+    "\u1F01\u03B9",    /*1F81; 1F01 03B9; Case map*/\r
+    "\u1F02\u03B9",    /*1F82; 1F02 03B9; Case map*/\r
+    "\u1F03\u03B9",    /*1F83; 1F03 03B9; Case map*/\r
+    "\u1F04\u03B9",    /*1F84; 1F04 03B9; Case map*/\r
+    "\u1F05\u03B9",    /*1F85; 1F05 03B9; Case map*/\r
+    "\u1F06\u03B9",    /*1F86; 1F06 03B9; Case map*/\r
+    "\u1F07\u03B9",    /*1F87; 1F07 03B9; Case map*/\r
+    "\u1F00\u03B9",    /*1F88; 1F00 03B9; Case map*/\r
+    "\u1F01\u03B9",    /*1F89; 1F01 03B9; Case map*/\r
+    "\u1F02\u03B9",    /*1F8A; 1F02 03B9; Case map*/\r
+    "\u1F03\u03B9",    /*1F8B; 1F03 03B9; Case map*/\r
+    "\u1F04\u03B9",    /*1F8C; 1F04 03B9; Case map*/\r
+    "\u1F05\u03B9",    /*1F8D; 1F05 03B9; Case map*/\r
+    "\u1F06\u03B9",    /*1F8E; 1F06 03B9; Case map*/\r
+    "\u1F07\u03B9",    /*1F8F; 1F07 03B9; Case map*/\r
+    "\u1F20\u03B9",    /*1F90; 1F20 03B9; Case map*/\r
+    "\u1F21\u03B9",    /*1F91; 1F21 03B9; Case map*/\r
+    "\u1F22\u03B9",    /*1F92; 1F22 03B9; Case map*/\r
+    "\u1F23\u03B9",    /*1F93; 1F23 03B9; Case map*/\r
+    "\u1F24\u03B9",    /*1F94; 1F24 03B9; Case map*/\r
+    "\u1F25\u03B9",    /*1F95; 1F25 03B9; Case map*/\r
+    "\u1F26\u03B9",    /*1F96; 1F26 03B9; Case map*/\r
+    "\u1F27\u03B9",    /*1F97; 1F27 03B9; Case map*/\r
+    "\u1F20\u03B9",    /*1F98; 1F20 03B9; Case map*/\r
+    "\u1F21\u03B9",    /*1F99; 1F21 03B9; Case map*/\r
+    "\u1F22\u03B9",    /*1F9A; 1F22 03B9; Case map*/\r
+    "\u1F23\u03B9",    /*1F9B; 1F23 03B9; Case map*/\r
+    "\u1F24\u03B9",    /*1F9C; 1F24 03B9; Case map*/\r
+    "\u1F25\u03B9",    /*1F9D; 1F25 03B9; Case map*/\r
+    "\u1F26\u03B9",    /*1F9E; 1F26 03B9; Case map*/\r
+    "\u1F27\u03B9",    /*1F9F; 1F27 03B9; Case map*/\r
+    "\u1F60\u03B9",    /*1FA0; 1F60 03B9; Case map*/\r
+    "\u1F61\u03B9",    /*1FA1; 1F61 03B9; Case map*/\r
+    "\u1F62\u03B9",    /*1FA2; 1F62 03B9; Case map*/\r
+    "\u1F63\u03B9",    /*1FA3; 1F63 03B9; Case map*/\r
+    "\u1F64\u03B9",    /*1FA4; 1F64 03B9; Case map*/\r
+    "\u1F65\u03B9",    /*1FA5; 1F65 03B9; Case map*/\r
+    "\u1F66\u03B9",    /*1FA6; 1F66 03B9; Case map*/\r
+    "\u1F67\u03B9",    /*1FA7; 1F67 03B9; Case map*/\r
+    "\u1F60\u03B9",    /*1FA8; 1F60 03B9; Case map*/\r
+    "\u1F61\u03B9",    /*1FA9; 1F61 03B9; Case map*/\r
+    "\u1F62\u03B9",    /*1FAA; 1F62 03B9; Case map*/\r
+    "\u1F63\u03B9",    /*1FAB; 1F63 03B9; Case map*/\r
+    "\u1F64\u03B9",    /*1FAC; 1F64 03B9; Case map*/\r
+    "\u1F65\u03B9",    /*1FAD; 1F65 03B9; Case map*/\r
+    "\u1F66\u03B9",    /*1FAE; 1F66 03B9; Case map*/\r
+    "\u1F67\u03B9",    /*1FAF; 1F67 03B9; Case map*/\r
+    "\u1F70\u03B9",    /*1FB2; 1F70 03B9; Case map*/\r
+    "\u03B1\u03B9",    /*1FB3; 03B1 03B9; Case map*/\r
+    "\u03AC\u03B9",    /*1FB4; 03AC 03B9; Case map*/\r
+    "\u03B1\u0342",    /*1FB6; 03B1 0342; Case map*/\r
+    "\u03B1\u0342\u03B9",      /*1FB7; 03B1 0342 03B9; Case map*/\r
+    "\u1FB0",  /*1FB8; 1FB0; Case map*/\r
+    "\u1FB1",  /*1FB9; 1FB1; Case map*/\r
+    "\u1F70",  /*1FBA; 1F70; Case map*/\r
+    "\u1F71",  /*1FBB; 1F71; Case map*/\r
+    "\u03B1\u03B9",    /*1FBC; 03B1 03B9; Case map*/\r
+    "\u03B9",  /*1FBE; 03B9; Case map*/\r
+    "\u1F74\u03B9",    /*1FC2; 1F74 03B9; Case map*/\r
+    "\u03B7\u03B9",    /*1FC3; 03B7 03B9; Case map*/\r
+    "\u03AE\u03B9",    /*1FC4; 03AE 03B9; Case map*/\r
+    "\u03B7\u0342",    /*1FC6; 03B7 0342; Case map*/\r
+    "\u03B7\u0342\u03B9",      /*1FC7; 03B7 0342 03B9; Case map*/\r
+    "\u1F72",  /*1FC8; 1F72; Case map*/\r
+    "\u1F73",  /*1FC9; 1F73; Case map*/\r
+    "\u1F74",  /*1FCA; 1F74; Case map*/\r
+    "\u1F75",  /*1FCB; 1F75; Case map*/\r
+    "\u03B7\u03B9",    /*1FCC; 03B7 03B9; Case map*/\r
+    "\u03B9\u0308\u0300",      /*1FD2; 03B9 0308 0300; Case map*/\r
+    "\u03B9\u0308\u0301",      /*1FD3; 03B9 0308 0301; Case map*/\r
+    "\u03B9\u0342",    /*1FD6; 03B9 0342; Case map*/\r
+    "\u03B9\u0308\u0342",      /*1FD7; 03B9 0308 0342; Case map*/\r
+    "\u1FD0",  /*1FD8; 1FD0; Case map*/\r
+    "\u1FD1",  /*1FD9; 1FD1; Case map*/\r
+    "\u1F76",  /*1FDA; 1F76; Case map*/\r
+    "\u1F77",  /*1FDB; 1F77; Case map*/\r
+    "\u03C5\u0308\u0300",      /*1FE2; 03C5 0308 0300; Case map*/\r
+    "\u03C5\u0308\u0301",      /*1FE3; 03C5 0308 0301; Case map*/\r
+    "\u03C1\u0313",    /*1FE4; 03C1 0313; Case map*/\r
+    "\u03C5\u0342",    /*1FE6; 03C5 0342; Case map*/\r
+    "\u03C5\u0308\u0342",      /*1FE7; 03C5 0308 0342; Case map*/\r
+    "\u1FE0",  /*1FE8; 1FE0; Case map*/\r
+    "\u1FE1",  /*1FE9; 1FE1; Case map*/\r
+    "\u1F7A",  /*1FEA; 1F7A; Case map*/\r
+    "\u1F7B",  /*1FEB; 1F7B; Case map*/\r
+    "\u1FE5",  /*1FEC; 1FE5; Case map*/\r
+    "\u1F7C\u03B9",    /*1FF2; 1F7C 03B9; Case map*/\r
+    "\u03C9\u03B9",    /*1FF3; 03C9 03B9; Case map*/\r
+    "\u03CE\u03B9",    /*1FF4; 03CE 03B9; Case map*/\r
+    "\u03C9\u0342",    /*1FF6; 03C9 0342; Case map*/\r
+    "\u03C9\u0342\u03B9",      /*1FF7; 03C9 0342 03B9; Case map*/\r
+    "\u1F78",  /*1FF8; 1F78; Case map*/\r
+    "\u1F79",  /*1FF9; 1F79; Case map*/\r
+    "\u1F7C",  /*1FFA; 1F7C; Case map*/\r
+    "\u1F7D",  /*1FFB; 1F7D; Case map*/\r
+    "\u03C9\u03B9",    /*1FFC; 03C9 03B9; Case map*/\r
+    "\u03C9",  /*2126; 03C9; Case map*/\r
+    "\u006B",  /*212A; 006B; Case map*/\r
+    "\u00E5",  /*212B; 00E5; Case map*/\r
+    "\u2170",  /*2160; 2170; Case map*/\r
+    "\u2171",  /*2161; 2171; Case map*/\r
+    "\u2172",  /*2162; 2172; Case map*/\r
+    "\u2173",  /*2163; 2173; Case map*/\r
+    "\u2174",  /*2164; 2174; Case map*/\r
+    "\u2175",  /*2165; 2175; Case map*/\r
+    "\u2176",  /*2166; 2176; Case map*/\r
+    "\u2177",  /*2167; 2177; Case map*/\r
+    "\u2178",  /*2168; 2178; Case map*/\r
+    "\u2179",  /*2169; 2179; Case map*/\r
+    "\u217A",  /*216A; 217A; Case map*/\r
+    "\u217B",  /*216B; 217B; Case map*/\r
+    "\u217C",  /*216C; 217C; Case map*/\r
+    "\u217D",  /*216D; 217D; Case map*/\r
+    "\u217E",  /*216E; 217E; Case map*/\r
+    "\u217F",  /*216F; 217F; Case map*/\r
+    "\u24D0",  /*24B6; 24D0; Case map*/\r
+    "\u24D1",  /*24B7; 24D1; Case map*/\r
+    "\u24D2",  /*24B8; 24D2; Case map*/\r
+    "\u24D3",  /*24B9; 24D3; Case map*/\r
+    "\u24D4",  /*24BA; 24D4; Case map*/\r
+    "\u24D5",  /*24BB; 24D5; Case map*/\r
+    "\u24D6",  /*24BC; 24D6; Case map*/\r
+    "\u24D7",  /*24BD; 24D7; Case map*/\r
+    "\u24D8",  /*24BE; 24D8; Case map*/\r
+    "\u24D9",  /*24BF; 24D9; Case map*/\r
+    "\u24DA",  /*24C0; 24DA; Case map*/\r
+    "\u24DB",  /*24C1; 24DB; Case map*/\r
+    "\u24DC",  /*24C2; 24DC; Case map*/\r
+    "\u24DD",  /*24C3; 24DD; Case map*/\r
+    "\u24DE",  /*24C4; 24DE; Case map*/\r
+    "\u24DF",  /*24C5; 24DF; Case map*/\r
+    "\u24E0",  /*24C6; 24E0; Case map*/\r
+    "\u24E1",  /*24C7; 24E1; Case map*/\r
+    "\u24E2",  /*24C8; 24E2; Case map*/\r
+    "\u24E3",  /*24C9; 24E3; Case map*/\r
+    "\u24E4",  /*24CA; 24E4; Case map*/\r
+    "\u24E5",  /*24CB; 24E5; Case map*/\r
+    "\u24E6",  /*24CC; 24E6; Case map*/\r
+    "\u24E7",  /*24CD; 24E7; Case map*/\r
+    "\u24E8",  /*24CE; 24E8; Case map*/\r
+    "\u24E9",  /*24CF; 24E9; Case map*/\r
+    "\u0066\u0066",    /*FB00; 0066 0066; Case map*/\r
+    "\u0066\u0069",    /*FB01; 0066 0069; Case map*/\r
+    "\u0066\u006C",    /*FB02; 0066 006C; Case map*/\r
+    "\u0066\u0066\u0069",      /*FB03; 0066 0066 0069; Case map*/\r
+    "\u0066\u0066\u006C",      /*FB04; 0066 0066 006C; Case map*/\r
+    "\u0073\u0074",    /*FB05; 0073 0074; Case map*/\r
+    "\u0073\u0074",    /*FB06; 0073 0074; Case map*/\r
+    "\u0574\u0576",    /*FB13; 0574 0576; Case map*/\r
+    "\u0574\u0565",    /*FB14; 0574 0565; Case map*/\r
+    "\u0574\u056B",    /*FB15; 0574 056B; Case map*/\r
+    "\u057E\u0576",    /*FB16; 057E 0576; Case map*/\r
+    "\u0574\u056D",    /*FB17; 0574 056D; Case map*/\r
+    "\uFF41",  /*FF21; FF41; Case map*/\r
+    "\uFF42",  /*FF22; FF42; Case map*/\r
+    "\uFF43",  /*FF23; FF43; Case map*/\r
+    "\uFF44",  /*FF24; FF44; Case map*/\r
+    "\uFF45",  /*FF25; FF45; Case map*/\r
+    "\uFF46",  /*FF26; FF46; Case map*/\r
+    "\uFF47",  /*FF27; FF47; Case map*/\r
+    "\uFF48",  /*FF28; FF48; Case map*/\r
+    "\uFF49",  /*FF29; FF49; Case map*/\r
+    "\uFF4A",  /*FF2A; FF4A; Case map*/\r
+    "\uFF4B",  /*FF2B; FF4B; Case map*/\r
+    "\uFF4C",  /*FF2C; FF4C; Case map*/\r
+    "\uFF4D",  /*FF2D; FF4D; Case map*/\r
+    "\uFF4E",  /*FF2E; FF4E; Case map*/\r
+    "\uFF4F",  /*FF2F; FF4F; Case map*/\r
+    "\uFF50",  /*FF30; FF50; Case map*/\r
+    "\uFF51",  /*FF31; FF51; Case map*/\r
+    "\uFF52",  /*FF32; FF52; Case map*/\r
+    "\uFF53",  /*FF33; FF53; Case map*/\r
+    "\uFF54",  /*FF34; FF54; Case map*/\r
+    "\uFF55",  /*FF35; FF55; Case map*/\r
+    "\uFF56",  /*FF36; FF56; Case map*/\r
+    "\uFF57",  /*FF37; FF57; Case map*/\r
+    "\uFF58",  /*FF38; FF58; Case map*/\r
+    "\uFF59",  /*FF39; FF59; Case map*/\r
+    "\uFF5A",  /*FF3A; FF5A; Case map*/\r
+  };\r
+
+  public static char[] C11 = new char[] {\r
+    '\u0020',  /* 0020; SPACE */\r
+  };\r
+
+  public static char[] C12 = new char[] {\r
+    '\u00A0',  /* 00A0; NO-BREAK SPACE */\r
+    '\u1680',  /* 1680; OGHAM SPACE MARK */\r
+    '\u2000',  /* 2000; EN QUAD */\r
+    '\u2001',  /* 2001; EM QUAD */\r
+    '\u2002',  /* 2002; EN SPACE */\r
+    '\u2003',  /* 2003; EM SPACE */\r
+    '\u2004',  /* 2004; THREE-PER-EM SPACE */\r
+    '\u2005',  /* 2005; FOUR-PER-EM SPACE */\r
+    '\u2006',  /* 2006; SIX-PER-EM SPACE */\r
+    '\u2007',  /* 2007; FIGURE SPACE */\r
+    '\u2008',  /* 2008; PUNCTUATION SPACE */\r
+    '\u2009',  /* 2009; THIN SPACE */\r
+    '\u200A',  /* 200A; HAIR SPACE */\r
+    '\u200B',  /* 200B; ZERO WIDTH SPACE */\r
+    '\u202F',  /* 202F; NARROW NO-BREAK SPACE */\r
+    '\u205F',  /* 205F; MEDIUM MATHEMATICAL SPACE */\r
+    '\u3000',  /* 3000; IDEOGRAPHIC SPACE */\r
+  };\r
+
+  public static char[][] C21 = new char[][] {\r
+    new char[] { '\u0000', '\u001F' }, /* 0000-001F; [CONTROL CHARACTERS] */\r
+    new char[] { '\u007F' },   /* 007F; DELETE */\r
+  };\r
+
+  public static char[][] C22 = new char[][] {\r
+    new char[] { '\u0080', '\u009F' }, /* 0080-009F; [CONTROL CHARACTERS] */\r
+    new char[] { '\u06DD' },   /* 06DD; ARABIC END OF AYAH */\r
+    new char[] { '\u070F' },   /* 070F; SYRIAC ABBREVIATION MARK */\r
+    new char[] { '\u180E' },   /* 180E; MONGOLIAN VOWEL SEPARATOR */\r
+    new char[] { '\u200C' },   /* 200C; ZERO WIDTH NON-JOINER */\r
+    new char[] { '\u200D' },   /* 200D; ZERO WIDTH JOINER */\r
+    new char[] { '\u2028' },   /* 2028; LINE SEPARATOR */\r
+    new char[] { '\u2029' },   /* 2029; PARAGRAPH SEPARATOR */\r
+    new char[] { '\u2060' },   /* 2060; WORD JOINER */\r
+    new char[] { '\u2061' },   /* 2061; FUNCTION APPLICATION */\r
+    new char[] { '\u2062' },   /* 2062; INVISIBLE TIMES */\r
+    new char[] { '\u2063' },   /* 2063; INVISIBLE SEPARATOR */\r
+    new char[] { '\u206A', '\u206F' }, /* 206A-206F; [CONTROL CHARACTERS] */\r
+    new char[] { '\uFEFF' },   /* FEFF; ZERO WIDTH NO-BREAK SPACE */\r
+    new char[] { '\uFFF9', '\uFFFC' }, /* FFF9-FFFC; [CONTROL CHARACTERS] */\r
+  };\r
+
+  public static char[][] C3 = new char[][] {\r
+    new char[] { '\uE000', '\uF8FF' }, /* E000-F8FF; [PRIVATE USE, PLANE 0] */\r
+  };\r
+
+  public static char[][] C4 = new char[][] {\r
+    new char[] { '\uFDD0', '\uFDEF' }, /* FDD0-FDEF; [NONCHARACTER CODE POINTS] */\r
+    new char[] { '\uFFFE', '\uFFFF' }, /* FFFE-FFFF; [NONCHARACTER CODE POINTS] */\r
+  };\r
+
+  public static char[][] C5 = new char[][] {\r
+    new char[] { '\uD800', '\uDFFF' }, /* D800-DFFF; [SURROGATE CODES] */\r
+  };\r
+
+  public static char[][] C6 = new char[][] {\r
+    new char[] { '\uFFF9' },   /* FFF9; INTERLINEAR ANNOTATION ANCHOR */\r
+    new char[] { '\uFFFA' },   /* FFFA; INTERLINEAR ANNOTATION SEPARATOR */\r
+    new char[] { '\uFFFB' },   /* FFFB; INTERLINEAR ANNOTATION TERMINATOR */\r
+    new char[] { '\uFFFC' },   /* FFFC; OBJECT REPLACEMENT CHARACTER */\r
+    new char[] { '\uFFFD' },   /* FFFD; REPLACEMENT CHARACTER */\r
+  };\r
+
+  public static char[][] C7 = new char[][] {\r
+    new char[] { '\u2FF0', '\u2FFB' }, /* 2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS] */\r
+  };\r
+
+  public static char[][] C8 = new char[][] {\r
+    new char[] { '\u0340' },   /* 0340; COMBINING GRAVE TONE MARK */\r
+    new char[] { '\u0341' },   /* 0341; COMBINING ACUTE TONE MARK */\r
+    new char[] { '\u200E' },   /* 200E; LEFT-TO-RIGHT MARK */\r
+    new char[] { '\u200F' },   /* 200F; RIGHT-TO-LEFT MARK */\r
+    new char[] { '\u202A' },   /* 202A; LEFT-TO-RIGHT EMBEDDING */\r
+    new char[] { '\u202B' },   /* 202B; RIGHT-TO-LEFT EMBEDDING */\r
+    new char[] { '\u202C' },   /* 202C; POP DIRECTIONAL FORMATTING */\r
+    new char[] { '\u202D' },   /* 202D; LEFT-TO-RIGHT OVERRIDE */\r
+    new char[] { '\u202E' },   /* 202E; RIGHT-TO-LEFT OVERRIDE */\r
+    new char[] { '\u206A' },   /* 206A; INHIBIT SYMMETRIC SWAPPING */\r
+    new char[] { '\u206B' },   /* 206B; ACTIVATE SYMMETRIC SWAPPING */\r
+    new char[] { '\u206C' },   /* 206C; INHIBIT ARABIC FORM SHAPING */\r
+    new char[] { '\u206D' },   /* 206D; ACTIVATE ARABIC FORM SHAPING */\r
+    new char[] { '\u206E' },   /* 206E; NATIONAL DIGIT SHAPES */\r
+    new char[] { '\u206F' },   /* 206F; NOMINAL DIGIT SHAPES */\r
+  };\r
+
+  public static char[][] D1 = new char[][] {\r
+    new char[] { '\u05BE' },   /* 05BE */\r
+    new char[] { '\u05C0' },   /* 05C0 */\r
+    new char[] { '\u05C3' },   /* 05C3 */\r
+    new char[] { '\u05D0', '\u05EA' }, /* 05D0-05EA */\r
+    new char[] { '\u05F0', '\u05F4' }, /* 05F0-05F4 */\r
+    new char[] { '\u061B' },   /* 061B */\r
+    new char[] { '\u061F' },   /* 061F */\r
+    new char[] { '\u0621', '\u063A' }, /* 0621-063A */\r
+    new char[] { '\u0640', '\u064A' }, /* 0640-064A */\r
+    new char[] { '\u066D', '\u066F' }, /* 066D-066F */\r
+    new char[] { '\u0671', '\u06D5' }, /* 0671-06D5 */\r
+    new char[] { '\u06DD' },   /* 06DD */\r
+    new char[] { '\u06E5', '\u06E6' }, /* 06E5-06E6 */\r
+    new char[] { '\u06FA', '\u06FE' }, /* 06FA-06FE */\r
+    new char[] { '\u0700', '\u070D' }, /* 0700-070D */\r
+    new char[] { '\u0710' },   /* 0710 */\r
+    new char[] { '\u0712', '\u072C' }, /* 0712-072C */\r
+    new char[] { '\u0780', '\u07A5' }, /* 0780-07A5 */\r
+    new char[] { '\u07B1' },   /* 07B1 */\r
+    new char[] { '\u200F' },   /* 200F */\r
+    new char[] { '\uFB1D' },   /* FB1D */\r
+    new char[] { '\uFB1F', '\uFB28' }, /* FB1F-FB28 */\r
+    new char[] { '\uFB2A', '\uFB36' }, /* FB2A-FB36 */\r
+    new char[] { '\uFB38', '\uFB3C' }, /* FB38-FB3C */\r
+    new char[] { '\uFB3E' },   /* FB3E */\r
+    new char[] { '\uFB40', '\uFB41' }, /* FB40-FB41 */\r
+    new char[] { '\uFB43', '\uFB44' }, /* FB43-FB44 */\r
+    new char[] { '\uFB46', '\uFBB1' }, /* FB46-FBB1 */\r
+    new char[] { '\uFBD3', '\uFD3D' }, /* FBD3-FD3D */\r
+    new char[] { '\uFD50', '\uFD8F' }, /* FD50-FD8F */\r
+    new char[] { '\uFD92', '\uFDC7' }, /* FD92-FDC7 */\r
+    new char[] { '\uFDF0', '\uFDFC' }, /* FDF0-FDFC */\r
+    new char[] { '\uFE70', '\uFE74' }, /* FE70-FE74 */\r
+    new char[] { '\uFE76', '\uFEFC' }, /* FE76-FEFC */\r
+  };\r
+
+  public static char[][] D2 = new char[][] {\r
+    new char[] { '\u0041', '\u005A' }, /* 0041-005A */\r
+    new char[] { '\u0061', '\u007A' }, /* 0061-007A */\r
+    new char[] { '\u00AA' },   /* 00AA */\r
+    new char[] { '\u00B5' },   /* 00B5 */\r
+    new char[] { '\u00BA' },   /* 00BA */\r
+    new char[] { '\u00C0', '\u00D6' }, /* 00C0-00D6 */\r
+    new char[] { '\u00D8', '\u00F6' }, /* 00D8-00F6 */\r
+    new char[] { '\u00F8', '\u0220' }, /* 00F8-0220 */\r
+    new char[] { '\u0222', '\u0233' }, /* 0222-0233 */\r
+    new char[] { '\u0250', '\u02AD' }, /* 0250-02AD */\r
+    new char[] { '\u02B0', '\u02B8' }, /* 02B0-02B8 */\r
+    new char[] { '\u02BB', '\u02C1' }, /* 02BB-02C1 */\r
+    new char[] { '\u02D0', '\u02D1' }, /* 02D0-02D1 */\r
+    new char[] { '\u02E0', '\u02E4' }, /* 02E0-02E4 */\r
+    new char[] { '\u02EE' },   /* 02EE */\r
+    new char[] { '\u037A' },   /* 037A */\r
+    new char[] { '\u0386' },   /* 0386 */\r
+    new char[] { '\u0388', '\u038A' }, /* 0388-038A */\r
+    new char[] { '\u038C' },   /* 038C */\r
+    new char[] { '\u038E', '\u03A1' }, /* 038E-03A1 */\r
+    new char[] { '\u03A3', '\u03CE' }, /* 03A3-03CE */\r
+    new char[] { '\u03D0', '\u03F5' }, /* 03D0-03F5 */\r
+    new char[] { '\u0400', '\u0482' }, /* 0400-0482 */\r
+    new char[] { '\u048A', '\u04CE' }, /* 048A-04CE */\r
+    new char[] { '\u04D0', '\u04F5' }, /* 04D0-04F5 */\r
+    new char[] { '\u04F8', '\u04F9' }, /* 04F8-04F9 */\r
+    new char[] { '\u0500', '\u050F' }, /* 0500-050F */\r
+    new char[] { '\u0531', '\u0556' }, /* 0531-0556 */\r
+    new char[] { '\u0559', '\u055F' }, /* 0559-055F */\r
+    new char[] { '\u0561', '\u0587' }, /* 0561-0587 */\r
+    new char[] { '\u0589' },   /* 0589 */\r
+    new char[] { '\u0903' },   /* 0903 */\r
+    new char[] { '\u0905', '\u0939' }, /* 0905-0939 */\r
+    new char[] { '\u093D', '\u0940' }, /* 093D-0940 */\r
+    new char[] { '\u0949', '\u094C' }, /* 0949-094C */\r
+    new char[] { '\u0950' },   /* 0950 */\r
+    new char[] { '\u0958', '\u0961' }, /* 0958-0961 */\r
+    new char[] { '\u0964', '\u0970' }, /* 0964-0970 */\r
+    new char[] { '\u0982', '\u0983' }, /* 0982-0983 */\r
+    new char[] { '\u0985', '\u098C' }, /* 0985-098C */\r
+    new char[] { '\u098F', '\u0990' }, /* 098F-0990 */\r
+    new char[] { '\u0993', '\u09A8' }, /* 0993-09A8 */\r
+    new char[] { '\u09AA', '\u09B0' }, /* 09AA-09B0 */\r
+    new char[] { '\u09B2' },   /* 09B2 */\r
+    new char[] { '\u09B6', '\u09B9' }, /* 09B6-09B9 */\r
+    new char[] { '\u09BE', '\u09C0' }, /* 09BE-09C0 */\r
+    new char[] { '\u09C7', '\u09C8' }, /* 09C7-09C8 */\r
+    new char[] { '\u09CB', '\u09CC' }, /* 09CB-09CC */\r
+    new char[] { '\u09D7' },   /* 09D7 */\r
+    new char[] { '\u09DC', '\u09DD' }, /* 09DC-09DD */\r
+    new char[] { '\u09DF', '\u09E1' }, /* 09DF-09E1 */\r
+    new char[] { '\u09E6', '\u09F1' }, /* 09E6-09F1 */\r
+    new char[] { '\u09F4', '\u09FA' }, /* 09F4-09FA */\r
+    new char[] { '\u0A05', '\u0A0A' }, /* 0A05-0A0A */\r
+    new char[] { '\u0A0F', '\u0A10' }, /* 0A0F-0A10 */\r
+    new char[] { '\u0A13', '\u0A28' }, /* 0A13-0A28 */\r
+    new char[] { '\u0A2A', '\u0A30' }, /* 0A2A-0A30 */\r
+    new char[] { '\u0A32', '\u0A33' }, /* 0A32-0A33 */\r
+    new char[] { '\u0A35', '\u0A36' }, /* 0A35-0A36 */\r
+    new char[] { '\u0A38', '\u0A39' }, /* 0A38-0A39 */\r
+    new char[] { '\u0A3E', '\u0A40' }, /* 0A3E-0A40 */\r
+    new char[] { '\u0A59', '\u0A5C' }, /* 0A59-0A5C */\r
+    new char[] { '\u0A5E' },   /* 0A5E */\r
+    new char[] { '\u0A66', '\u0A6F' }, /* 0A66-0A6F */\r
+    new char[] { '\u0A72', '\u0A74' }, /* 0A72-0A74 */\r
+    new char[] { '\u0A83' },   /* 0A83 */\r
+    new char[] { '\u0A85', '\u0A8B' }, /* 0A85-0A8B */\r
+    new char[] { '\u0A8D' },   /* 0A8D */\r
+    new char[] { '\u0A8F', '\u0A91' }, /* 0A8F-0A91 */\r
+    new char[] { '\u0A93', '\u0AA8' }, /* 0A93-0AA8 */\r
+    new char[] { '\u0AAA', '\u0AB0' }, /* 0AAA-0AB0 */\r
+    new char[] { '\u0AB2', '\u0AB3' }, /* 0AB2-0AB3 */\r
+    new char[] { '\u0AB5', '\u0AB9' }, /* 0AB5-0AB9 */\r
+    new char[] { '\u0ABD', '\u0AC0' }, /* 0ABD-0AC0 */\r
+    new char[] { '\u0AC9' },   /* 0AC9 */\r
+    new char[] { '\u0ACB', '\u0ACC' }, /* 0ACB-0ACC */\r
+    new char[] { '\u0AD0' },   /* 0AD0 */\r
+    new char[] { '\u0AE0' },   /* 0AE0 */\r
+    new char[] { '\u0AE6', '\u0AEF' }, /* 0AE6-0AEF */\r
+    new char[] { '\u0B02', '\u0B03' }, /* 0B02-0B03 */\r
+    new char[] { '\u0B05', '\u0B0C' }, /* 0B05-0B0C */\r
+    new char[] { '\u0B0F', '\u0B10' }, /* 0B0F-0B10 */\r
+    new char[] { '\u0B13', '\u0B28' }, /* 0B13-0B28 */\r
+    new char[] { '\u0B2A', '\u0B30' }, /* 0B2A-0B30 */\r
+    new char[] { '\u0B32', '\u0B33' }, /* 0B32-0B33 */\r
+    new char[] { '\u0B36', '\u0B39' }, /* 0B36-0B39 */\r
+    new char[] { '\u0B3D', '\u0B3E' }, /* 0B3D-0B3E */\r
+    new char[] { '\u0B40' },   /* 0B40 */\r
+    new char[] { '\u0B47', '\u0B48' }, /* 0B47-0B48 */\r
+    new char[] { '\u0B4B', '\u0B4C' }, /* 0B4B-0B4C */\r
+    new char[] { '\u0B57' },   /* 0B57 */\r
+    new char[] { '\u0B5C', '\u0B5D' }, /* 0B5C-0B5D */\r
+    new char[] { '\u0B5F', '\u0B61' }, /* 0B5F-0B61 */\r
+    new char[] { '\u0B66', '\u0B70' }, /* 0B66-0B70 */\r
+    new char[] { '\u0B83' },   /* 0B83 */\r
+    new char[] { '\u0B85', '\u0B8A' }, /* 0B85-0B8A */\r
+    new char[] { '\u0B8E', '\u0B90' }, /* 0B8E-0B90 */\r
+    new char[] { '\u0B92', '\u0B95' }, /* 0B92-0B95 */\r
+    new char[] { '\u0B99', '\u0B9A' }, /* 0B99-0B9A */\r
+    new char[] { '\u0B9C' },   /* 0B9C */\r
+    new char[] { '\u0B9E', '\u0B9F' }, /* 0B9E-0B9F */\r
+    new char[] { '\u0BA3', '\u0BA4' }, /* 0BA3-0BA4 */\r
+    new char[] { '\u0BA8', '\u0BAA' }, /* 0BA8-0BAA */\r
+    new char[] { '\u0BAE', '\u0BB5' }, /* 0BAE-0BB5 */\r
+    new char[] { '\u0BB7', '\u0BB9' }, /* 0BB7-0BB9 */\r
+    new char[] { '\u0BBE', '\u0BBF' }, /* 0BBE-0BBF */\r
+    new char[] { '\u0BC1', '\u0BC2' }, /* 0BC1-0BC2 */\r
+    new char[] { '\u0BC6', '\u0BC8' }, /* 0BC6-0BC8 */\r
+    new char[] { '\u0BCA', '\u0BCC' }, /* 0BCA-0BCC */\r
+    new char[] { '\u0BD7' },   /* 0BD7 */\r
+    new char[] { '\u0BE7', '\u0BF2' }, /* 0BE7-0BF2 */\r
+    new char[] { '\u0C01', '\u0C03' }, /* 0C01-0C03 */\r
+    new char[] { '\u0C05', '\u0C0C' }, /* 0C05-0C0C */\r
+    new char[] { '\u0C0E', '\u0C10' }, /* 0C0E-0C10 */\r
+    new char[] { '\u0C12', '\u0C28' }, /* 0C12-0C28 */\r
+    new char[] { '\u0C2A', '\u0C33' }, /* 0C2A-0C33 */\r
+    new char[] { '\u0C35', '\u0C39' }, /* 0C35-0C39 */\r
+    new char[] { '\u0C41', '\u0C44' }, /* 0C41-0C44 */\r
+    new char[] { '\u0C60', '\u0C61' }, /* 0C60-0C61 */\r
+    new char[] { '\u0C66', '\u0C6F' }, /* 0C66-0C6F */\r
+    new char[] { '\u0C82', '\u0C83' }, /* 0C82-0C83 */\r
+    new char[] { '\u0C85', '\u0C8C' }, /* 0C85-0C8C */\r
+    new char[] { '\u0C8E', '\u0C90' }, /* 0C8E-0C90 */\r
+    new char[] { '\u0C92', '\u0CA8' }, /* 0C92-0CA8 */\r
+    new char[] { '\u0CAA', '\u0CB3' }, /* 0CAA-0CB3 */\r
+    new char[] { '\u0CB5', '\u0CB9' }, /* 0CB5-0CB9 */\r
+    new char[] { '\u0CBE' },   /* 0CBE */\r
+    new char[] { '\u0CC0', '\u0CC4' }, /* 0CC0-0CC4 */\r
+    new char[] { '\u0CC7', '\u0CC8' }, /* 0CC7-0CC8 */\r
+    new char[] { '\u0CCA', '\u0CCB' }, /* 0CCA-0CCB */\r
+    new char[] { '\u0CD5', '\u0CD6' }, /* 0CD5-0CD6 */\r
+    new char[] { '\u0CDE' },   /* 0CDE */\r
+    new char[] { '\u0CE0', '\u0CE1' }, /* 0CE0-0CE1 */\r
+    new char[] { '\u0CE6', '\u0CEF' }, /* 0CE6-0CEF */\r
+    new char[] { '\u0D02', '\u0D03' }, /* 0D02-0D03 */\r
+    new char[] { '\u0D05', '\u0D0C' }, /* 0D05-0D0C */\r
+    new char[] { '\u0D0E', '\u0D10' }, /* 0D0E-0D10 */\r
+    new char[] { '\u0D12', '\u0D28' }, /* 0D12-0D28 */\r
+    new char[] { '\u0D2A', '\u0D39' }, /* 0D2A-0D39 */\r
+    new char[] { '\u0D3E', '\u0D40' }, /* 0D3E-0D40 */\r
+    new char[] { '\u0D46', '\u0D48' }, /* 0D46-0D48 */\r
+    new char[] { '\u0D4A', '\u0D4C' }, /* 0D4A-0D4C */\r
+    new char[] { '\u0D57' },   /* 0D57 */\r
+    new char[] { '\u0D60', '\u0D61' }, /* 0D60-0D61 */\r
+    new char[] { '\u0D66', '\u0D6F' }, /* 0D66-0D6F */\r
+    new char[] { '\u0D82', '\u0D83' }, /* 0D82-0D83 */\r
+    new char[] { '\u0D85', '\u0D96' }, /* 0D85-0D96 */\r
+    new char[] { '\u0D9A', '\u0DB1' }, /* 0D9A-0DB1 */\r
+    new char[] { '\u0DB3', '\u0DBB' }, /* 0DB3-0DBB */\r
+    new char[] { '\u0DBD' },   /* 0DBD */\r
+    new char[] { '\u0DC0', '\u0DC6' }, /* 0DC0-0DC6 */\r
+    new char[] { '\u0DCF', '\u0DD1' }, /* 0DCF-0DD1 */\r
+    new char[] { '\u0DD8', '\u0DDF' }, /* 0DD8-0DDF */\r
+    new char[] { '\u0DF2', '\u0DF4' }, /* 0DF2-0DF4 */\r
+    new char[] { '\u0E01', '\u0E30' }, /* 0E01-0E30 */\r
+    new char[] { '\u0E32', '\u0E33' }, /* 0E32-0E33 */\r
+    new char[] { '\u0E40', '\u0E46' }, /* 0E40-0E46 */\r
+    new char[] { '\u0E4F', '\u0E5B' }, /* 0E4F-0E5B */\r
+    new char[] { '\u0E81', '\u0E82' }, /* 0E81-0E82 */\r
+    new char[] { '\u0E84' },   /* 0E84 */\r
+    new char[] { '\u0E87', '\u0E88' }, /* 0E87-0E88 */\r
+    new char[] { '\u0E8A' },   /* 0E8A */\r
+    new char[] { '\u0E8D' },   /* 0E8D */\r
+    new char[] { '\u0E94', '\u0E97' }, /* 0E94-0E97 */\r
+    new char[] { '\u0E99', '\u0E9F' }, /* 0E99-0E9F */\r
+    new char[] { '\u0EA1', '\u0EA3' }, /* 0EA1-0EA3 */\r
+    new char[] { '\u0EA5' },   /* 0EA5 */\r
+    new char[] { '\u0EA7' },   /* 0EA7 */\r
+    new char[] { '\u0EAA', '\u0EAB' }, /* 0EAA-0EAB */\r
+    new char[] { '\u0EAD', '\u0EB0' }, /* 0EAD-0EB0 */\r
+    new char[] { '\u0EB2', '\u0EB3' }, /* 0EB2-0EB3 */\r
+    new char[] { '\u0EBD' },   /* 0EBD */\r
+    new char[] { '\u0EC0', '\u0EC4' }, /* 0EC0-0EC4 */\r
+    new char[] { '\u0EC6' },   /* 0EC6 */\r
+    new char[] { '\u0ED0', '\u0ED9' }, /* 0ED0-0ED9 */\r
+    new char[] { '\u0EDC', '\u0EDD' }, /* 0EDC-0EDD */\r
+    new char[] { '\u0F00', '\u0F17' }, /* 0F00-0F17 */\r
+    new char[] { '\u0F1A', '\u0F34' }, /* 0F1A-0F34 */\r
+    new char[] { '\u0F36' },   /* 0F36 */\r
+    new char[] { '\u0F38' },   /* 0F38 */\r
+    new char[] { '\u0F3E', '\u0F47' }, /* 0F3E-0F47 */\r
+    new char[] { '\u0F49', '\u0F6A' }, /* 0F49-0F6A */\r
+    new char[] { '\u0F7F' },   /* 0F7F */\r
+    new char[] { '\u0F85' },   /* 0F85 */\r
+    new char[] { '\u0F88', '\u0F8B' }, /* 0F88-0F8B */\r
+    new char[] { '\u0FBE', '\u0FC5' }, /* 0FBE-0FC5 */\r
+    new char[] { '\u0FC7', '\u0FCC' }, /* 0FC7-0FCC */\r
+    new char[] { '\u0FCF' },   /* 0FCF */\r
+    new char[] { '\u1000', '\u1021' }, /* 1000-1021 */\r
+    new char[] { '\u1023', '\u1027' }, /* 1023-1027 */\r
+    new char[] { '\u1029', '\u102A' }, /* 1029-102A */\r
+    new char[] { '\u102C' },   /* 102C */\r
+    new char[] { '\u1031' },   /* 1031 */\r
+    new char[] { '\u1038' },   /* 1038 */\r
+    new char[] { '\u1040', '\u1057' }, /* 1040-1057 */\r
+    new char[] { '\u10A0', '\u10C5' }, /* 10A0-10C5 */\r
+    new char[] { '\u10D0', '\u10F8' }, /* 10D0-10F8 */\r
+    new char[] { '\u10FB' },   /* 10FB */\r
+    new char[] { '\u1100', '\u1159' }, /* 1100-1159 */\r
+    new char[] { '\u115F', '\u11A2' }, /* 115F-11A2 */\r
+    new char[] { '\u11A8', '\u11F9' }, /* 11A8-11F9 */\r
+    new char[] { '\u1200', '\u1206' }, /* 1200-1206 */\r
+    new char[] { '\u1208', '\u1246' }, /* 1208-1246 */\r
+    new char[] { '\u1248' },   /* 1248 */\r
+    new char[] { '\u124A', '\u124D' }, /* 124A-124D */\r
+    new char[] { '\u1250', '\u1256' }, /* 1250-1256 */\r
+    new char[] { '\u1258' },   /* 1258 */\r
+    new char[] { '\u125A', '\u125D' }, /* 125A-125D */\r
+    new char[] { '\u1260', '\u1286' }, /* 1260-1286 */\r
+    new char[] { '\u1288' },   /* 1288 */\r
+    new char[] { '\u128A', '\u128D' }, /* 128A-128D */\r
+    new char[] { '\u1290', '\u12AE' }, /* 1290-12AE */\r
+    new char[] { '\u12B0' },   /* 12B0 */\r
+    new char[] { '\u12B2', '\u12B5' }, /* 12B2-12B5 */\r
+    new char[] { '\u12B8', '\u12BE' }, /* 12B8-12BE */\r
+    new char[] { '\u12C0' },   /* 12C0 */\r
+    new char[] { '\u12C2', '\u12C5' }, /* 12C2-12C5 */\r
+    new char[] { '\u12C8', '\u12CE' }, /* 12C8-12CE */\r
+    new char[] { '\u12D0', '\u12D6' }, /* 12D0-12D6 */\r
+    new char[] { '\u12D8', '\u12EE' }, /* 12D8-12EE */\r
+    new char[] { '\u12F0', '\u130E' }, /* 12F0-130E */\r
+    new char[] { '\u1310' },   /* 1310 */\r
+    new char[] { '\u1312', '\u1315' }, /* 1312-1315 */\r
+    new char[] { '\u1318', '\u131E' }, /* 1318-131E */\r
+    new char[] { '\u1320', '\u1346' }, /* 1320-1346 */\r
+    new char[] { '\u1348', '\u135A' }, /* 1348-135A */\r
+    new char[] { '\u1361', '\u137C' }, /* 1361-137C */\r
+    new char[] { '\u13A0', '\u13F4' }, /* 13A0-13F4 */\r
+    new char[] { '\u1401', '\u1676' }, /* 1401-1676 */\r
+    new char[] { '\u1681', '\u169A' }, /* 1681-169A */\r
+    new char[] { '\u16A0', '\u16F0' }, /* 16A0-16F0 */\r
+    new char[] { '\u1700', '\u170C' }, /* 1700-170C */\r
+    new char[] { '\u170E', '\u1711' }, /* 170E-1711 */\r
+    new char[] { '\u1720', '\u1731' }, /* 1720-1731 */\r
+    new char[] { '\u1735', '\u1736' }, /* 1735-1736 */\r
+    new char[] { '\u1740', '\u1751' }, /* 1740-1751 */\r
+    new char[] { '\u1760', '\u176C' }, /* 1760-176C */\r
+    new char[] { '\u176E', '\u1770' }, /* 176E-1770 */\r
+    new char[] { '\u1780', '\u17B6' }, /* 1780-17B6 */\r
+    new char[] { '\u17BE', '\u17C5' }, /* 17BE-17C5 */\r
+    new char[] { '\u17C7', '\u17C8' }, /* 17C7-17C8 */\r
+    new char[] { '\u17D4', '\u17DA' }, /* 17D4-17DA */\r
+    new char[] { '\u17DC' },   /* 17DC */\r
+    new char[] { '\u17E0', '\u17E9' }, /* 17E0-17E9 */\r
+    new char[] { '\u1810', '\u1819' }, /* 1810-1819 */\r
+    new char[] { '\u1820', '\u1877' }, /* 1820-1877 */\r
+    new char[] { '\u1880', '\u18A8' }, /* 1880-18A8 */\r
+    new char[] { '\u1E00', '\u1E9B' }, /* 1E00-1E9B */\r
+    new char[] { '\u1EA0', '\u1EF9' }, /* 1EA0-1EF9 */\r
+    new char[] { '\u1F00', '\u1F15' }, /* 1F00-1F15 */\r
+    new char[] { '\u1F18', '\u1F1D' }, /* 1F18-1F1D */\r
+    new char[] { '\u1F20', '\u1F45' }, /* 1F20-1F45 */\r
+    new char[] { '\u1F48', '\u1F4D' }, /* 1F48-1F4D */\r
+    new char[] { '\u1F50', '\u1F57' }, /* 1F50-1F57 */\r
+    new char[] { '\u1F59' },   /* 1F59 */\r
+    new char[] { '\u1F5B' },   /* 1F5B */\r
+    new char[] { '\u1F5D' },   /* 1F5D */\r
+    new char[] { '\u1F5F', '\u1F7D' }, /* 1F5F-1F7D */\r
+    new char[] { '\u1F80', '\u1FB4' }, /* 1F80-1FB4 */\r
+    new char[] { '\u1FB6', '\u1FBC' }, /* 1FB6-1FBC */\r
+    new char[] { '\u1FBE' },   /* 1FBE */\r
+    new char[] { '\u1FC2', '\u1FC4' }, /* 1FC2-1FC4 */\r
+    new char[] { '\u1FC6', '\u1FCC' }, /* 1FC6-1FCC */\r
+    new char[] { '\u1FD0', '\u1FD3' }, /* 1FD0-1FD3 */\r
+    new char[] { '\u1FD6', '\u1FDB' }, /* 1FD6-1FDB */\r
+    new char[] { '\u1FE0', '\u1FEC' }, /* 1FE0-1FEC */\r
+    new char[] { '\u1FF2', '\u1FF4' }, /* 1FF2-1FF4 */\r
+    new char[] { '\u1FF6', '\u1FFC' }, /* 1FF6-1FFC */\r
+    new char[] { '\u200E' },   /* 200E */\r
+    new char[] { '\u2071' },   /* 2071 */\r
+    new char[] { '\u207F' },   /* 207F */\r
+    new char[] { '\u2102' },   /* 2102 */\r
+    new char[] { '\u2107' },   /* 2107 */\r
+    new char[] { '\u210A', '\u2113' }, /* 210A-2113 */\r
+    new char[] { '\u2115' },   /* 2115 */\r
+    new char[] { '\u2119', '\u211D' }, /* 2119-211D */\r
+    new char[] { '\u2124' },   /* 2124 */\r
+    new char[] { '\u2126' },   /* 2126 */\r
+    new char[] { '\u2128' },   /* 2128 */\r
+    new char[] { '\u212A', '\u212D' }, /* 212A-212D */\r
+    new char[] { '\u212F', '\u2131' }, /* 212F-2131 */\r
+    new char[] { '\u2133', '\u2139' }, /* 2133-2139 */\r
+    new char[] { '\u213D', '\u213F' }, /* 213D-213F */\r
+    new char[] { '\u2145', '\u2149' }, /* 2145-2149 */\r
+    new char[] { '\u2160', '\u2183' }, /* 2160-2183 */\r
+    new char[] { '\u2336', '\u237A' }, /* 2336-237A */\r
+    new char[] { '\u2395' },   /* 2395 */\r
+    new char[] { '\u249C', '\u24E9' }, /* 249C-24E9 */\r
+    new char[] { '\u3005', '\u3007' }, /* 3005-3007 */\r
+    new char[] { '\u3021', '\u3029' }, /* 3021-3029 */\r
+    new char[] { '\u3031', '\u3035' }, /* 3031-3035 */\r
+    new char[] { '\u3038', '\u303C' }, /* 3038-303C */\r
+    new char[] { '\u3041', '\u3096' }, /* 3041-3096 */\r
+    new char[] { '\u309D', '\u309F' }, /* 309D-309F */\r
+    new char[] { '\u30A1', '\u30FA' }, /* 30A1-30FA */\r
+    new char[] { '\u30FC', '\u30FF' }, /* 30FC-30FF */\r
+    new char[] { '\u3105', '\u312C' }, /* 3105-312C */\r
+    new char[] { '\u3131', '\u318E' }, /* 3131-318E */\r
+    new char[] { '\u3190', '\u31B7' }, /* 3190-31B7 */\r
+    new char[] { '\u31F0', '\u321C' }, /* 31F0-321C */\r
+    new char[] { '\u3220', '\u3243' }, /* 3220-3243 */\r
+    new char[] { '\u3260', '\u327B' }, /* 3260-327B */\r
+    new char[] { '\u327F', '\u32B0' }, /* 327F-32B0 */\r
+    new char[] { '\u32C0', '\u32CB' }, /* 32C0-32CB */\r
+    new char[] { '\u32D0', '\u32FE' }, /* 32D0-32FE */\r
+    new char[] { '\u3300', '\u3376' }, /* 3300-3376 */\r
+    new char[] { '\u337B', '\u33DD' }, /* 337B-33DD */\r
+    new char[] { '\u33E0', '\u33FE' }, /* 33E0-33FE */\r
+    new char[] { '\u3400', '\u4DB5' }, /* 3400-4DB5 */\r
+    new char[] { '\u4E00', '\u9FA5' }, /* 4E00-9FA5 */\r
+    new char[] { '\uA000', '\uA48C' }, /* A000-A48C */\r
+    new char[] { '\uAC00', '\uD7A3' }, /* AC00-D7A3 */\r
+    new char[] { '\uD800', '\uFA2D' }, /* D800-FA2D */\r
+    new char[] { '\uFA30', '\uFA6A' }, /* FA30-FA6A */\r
+    new char[] { '\uFB00', '\uFB06' }, /* FB00-FB06 */\r
+    new char[] { '\uFB13', '\uFB17' }, /* FB13-FB17 */\r
+    new char[] { '\uFF21', '\uFF3A' }, /* FF21-FF3A */\r
+    new char[] { '\uFF41', '\uFF5A' }, /* FF41-FF5A */\r
+    new char[] { '\uFF66', '\uFFBE' }, /* FF66-FFBE */\r
+    new char[] { '\uFFC2', '\uFFC7' }, /* FFC2-FFC7 */\r
+    new char[] { '\uFFCA', '\uFFCF' }, /* FFCA-FFCF */\r
+    new char[] { '\uFFD2', '\uFFD7' }, /* FFD2-FFD7 */\r
+    new char[] { '\uFFDA', '\uFFDC' }, /* FFDA-FFDC */\r
+  };\r
+
+}
+}
diff --git a/csharp/Stringprep.cs b/csharp/Stringprep.cs
new file mode 100644 (file)
index 0000000..db79545
--- /dev/null
@@ -0,0 +1,464 @@
+/// <summary>
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+using System.Text;
+
+namespace Gnu.Inet.Encoding
+{      
+       /// <summary> This class offers static methods for preparing internationalized
+       /// strings. It supports the following stringprep profiles:
+       /// <ul>
+       /// <li>RFC3491 nameprep
+       /// <li>RFC3920 XMPP nodeprep and resourceprep
+       /// </ul>
+       /// Note that this implementation only supports 16-bit Unicode code
+       /// points.
+       /// </summary>
+       public class Stringprep
+       {
+               /// <summary> Preps a name according to the Stringprep profile defined in
+               /// RFC3491. Unassigned code points are not allowed.
+               /// *
+               /// </summary>
+               /// <param name="input">the name to prep.
+               /// </param>
+               /// <returns> the prepped name.
+               /// @throws StringprepException If the name cannot be prepped with
+               /// this profile.
+               /// @throws NullPointerException If the name is null.
+               /// 
+               /// </returns>
+               public static string NamePrep(string input)
+               {
+                       return NamePrep(input, false);
+               }
+               
+               /// <summary> Preps a name according to the Stringprep profile defined in
+               /// RFC3491.
+               /// *
+               /// </summary>
+               /// <param name="input">the name to prep.
+               /// </param>
+               /// <param name="allowUnassigned">true if the name may contain unassigned
+               /// code points.
+               /// </param>
+               /// <returns> the prepped name.
+               /// @throws StringprepException If the name cannot be prepped with
+               /// this profile.
+               /// @throws NullPointerException If the name is null.
+               /// 
+               /// </returns>
+               public static string NamePrep(string input, bool allowUnassigned)
+               {
+                       if (input == null)
+                       {
+                               throw new System.NullReferenceException();
+                       }
+                       
+                       StringBuilder s = new StringBuilder(input);
+                       
+                       if (!allowUnassigned && Contains(s, RFC3454.A1))
+                       {
+                               throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED);
+                       }
+                       
+                       Filter(s, RFC3454.B1);
+                       Map(s, RFC3454.B2search, RFC3454.B2replace);
+                       
+                       s = new StringBuilder(NFKC.NormalizeNFKC(s.ToString()));
+                       // B.3 is only needed if NFKC is not used, right?
+                       // map(s, RFC3454.B3search, RFC3454.B3replace);
+                       
+                       if (Contains(s, RFC3454.C12) || Contains(s, RFC3454.C22) || Contains(s, RFC3454.C3) || Contains(s, RFC3454.C4) || Contains(s, RFC3454.C5) || Contains(s, RFC3454.C6) || Contains(s, RFC3454.C7) || Contains(s, RFC3454.C8))
+                       {
+                               // Table C.9 only contains code points > 0xFFFF which Java
+                               // doesn't handle
+                               throw new StringprepException(StringprepException.CONTAINS_PROHIBITED);
+                       }
+                       
+                       // Bidi handling
+                       bool r = Contains(s, RFC3454.D1);
+                       bool l = Contains(s, RFC3454.D2);
+                       
+                       // RFC 3454, section 6, requirement 1: already handled above (table C.8)
+                       
+                       // RFC 3454, section 6, requirement 2
+                       if (r && l)
+                       {
+                               throw new StringprepException(StringprepException.BIDI_BOTHRAL);
+                       }
+                       
+                       // RFC 3454, section 6, requirement 3
+                       if (r)
+                       {
+                               if (!Contains(s[0], RFC3454.D1) || !Contains(s[s.Length - 1], RFC3454.D1))
+                               {
+                                       throw new StringprepException(StringprepException.BIDI_LTRAL);
+                               }
+                       }
+                       
+                       return s.ToString();
+               }
+               
+               /**
+               * Characters prohibited by RFC3920 nodeprep that aren't defined as
+               * part of the RFC3454 tables.
+               */
+               private static char [] RFC3920_NODEPREP_PROHIBIT = new char [] {
+                                '\u0022', '\u0026', '\'',     '\u002F',
+                                '\u003A', '\u003C', '\u003E', '\u0040'
+                };
+               
+               /// <summary> Preps a node name according to the Stringprep profile defined in
+               /// RFC3920. Unassigned code points are not allowed.
+               /// *
+               /// </summary>
+               /// <param name="input">the node name to prep.
+               /// </param>
+               /// <returns> the prepped node name.
+               /// @throws StringprepException If the node name cannot be prepped
+               /// with this profile.
+               /// @throws NullPointerException If the node name is null.
+               /// 
+               /// </returns>
+               public static string NodePrep(string input)
+               {
+                       return NodePrep(input, false);
+               }
+               
+               /// <summary>
+        /// Preps a node name according to the Stringprep profile defined in RFC3920.
+               /// </summary>
+               /// <param name="input">the node name to prep.
+               /// </param>
+               /// <param name="allowUnassigned">true if the node name may contain
+               /// unassigned code points.
+               /// </param>
+               /// <returns> the prepped node name.
+               /// @throws StringprepException If the node name cannot be prepped
+               /// with this profile.
+               /// @throws NullPointerException If the node name is null.
+               /// 
+               /// </returns>
+               public static string NodePrep(string input, bool allowUnassigned)
+               {
+                       if (input == null)
+                       {
+                               throw new System.NullReferenceException();
+                       }
+                       
+                       StringBuilder s = new StringBuilder(input);
+                       
+                       if (!allowUnassigned && Contains(s, RFC3454.A1))
+                       {
+                               throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED);
+                       }
+                       
+                       Filter(s, RFC3454.B1);
+                       Map(s, RFC3454.B2search, RFC3454.B2replace);
+                       
+                       s = new StringBuilder(NFKC.NormalizeNFKC(s.ToString()));
+                       
+                       if (Contains(s, RFC3454.C11) || Contains(s, RFC3454.C12) || Contains(s, RFC3454.C21) || Contains(s, RFC3454.C22) || Contains(s, RFC3454.C3) || Contains(s, RFC3454.C4) || Contains(s, RFC3454.C5) || Contains(s, RFC3454.C6) || Contains(s, RFC3454.C7) || Contains(s, RFC3454.C8) || Contains(s, RFC3920_NODEPREP_PROHIBIT))
+                       {
+                               // Table C.9 only contains code points > 0xFFFF which Java
+                               // doesn't handle
+                               throw new StringprepException(StringprepException.CONTAINS_PROHIBITED);
+                       }
+                       
+                       // Bidi handling
+                       bool r = Contains(s, RFC3454.D1);
+                       bool l = Contains(s, RFC3454.D2);
+                       
+                       // RFC 3454, section 6, requirement 1: already handled above (table C.8)
+                       
+                       // RFC 3454, section 6, requirement 2
+                       if (r && l)
+                       {
+                               throw new StringprepException(StringprepException.BIDI_BOTHRAL);
+                       }
+                       
+                       // RFC 3454, section 6, requirement 3
+                       if (r)
+                       {
+                               if (!Contains(s[0], RFC3454.D1) || !Contains(s[s.Length - 1], RFC3454.D1))
+                               {
+                                       throw new StringprepException(StringprepException.BIDI_LTRAL);
+                               }
+                       }
+                       
+                       return s.ToString();
+               }
+               
+               /// <summary>
+        /// Preps a resource name according to the Stringprep profile defined
+               /// in RFC3920. Unassigned code points are not allowed.
+               /// </summary>
+               /// <param name="input">the resource name to prep.
+               /// </param>
+               /// <returns> the prepped node name.
+               /// @throws StringprepException If the resource name cannot be prepped
+               /// with this profile.
+               /// @throws NullPointerException If the resource name is null.
+               /// 
+               /// </returns>
+               public static string ResourcePrep(string input)
+               {
+                       return ResourcePrep(input, false);
+               }
+               
+               /// <summary>
+        /// Preps a resource name according to the Stringprep profile defined
+               /// in RFC3920.
+               /// </summary>
+               /// <param name="input">the resource name to prep.
+               /// </param>
+               /// <param name="allowUnassigned">true if the resource name may contain
+               /// unassigned code points.
+               /// </param>
+               /// <returns>
+        /// the prepped node name.
+               /// @throws StringprepException If the resource name cannot be prepped
+               /// with this profile.
+               /// @throws NullPointerException If the resource name is null.
+               /// 
+               /// </returns>        
+               public static string ResourcePrep(string input, bool allowUnassigned)
+               {
+                       if (input == null)
+                       {
+                               throw new System.NullReferenceException();
+                       }
+                       
+                       StringBuilder s = new StringBuilder(input);
+                       
+                       if (!allowUnassigned && Contains(s, RFC3454.A1))
+                       {
+                               throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED);
+                       }
+                       
+                       Filter(s, RFC3454.B1);
+                       
+                       s = new StringBuilder(NFKC.NormalizeNFKC(s.ToString()));
+                       
+                       if (Contains(s, RFC3454.C12) || Contains(s, RFC3454.C21) || Contains(s, RFC3454.C22) || Contains(s, RFC3454.C3) || Contains(s, RFC3454.C4) || Contains(s, RFC3454.C5) || Contains(s, RFC3454.C6) || Contains(s, RFC3454.C7) || Contains(s, RFC3454.C8))
+                       {
+                               // Table C.9 only contains code points > 0xFFFF which Java
+                               // doesn't handle
+                               throw new StringprepException(StringprepException.CONTAINS_PROHIBITED);
+                       }
+                       
+                       // Bidi handling
+                       bool r = Contains(s, RFC3454.D1);
+                       bool l = Contains(s, RFC3454.D2);
+                       
+                       // RFC 3454, section 6, requirement 1: already handled above (table C.8)
+                       
+                       // RFC 3454, section 6, requirement 2
+                       if (r && l)
+                       {
+                               throw new StringprepException(StringprepException.BIDI_BOTHRAL);
+                       }
+                       
+                       // RFC 3454, section 6, requirement 3
+                       if (r)
+                       {
+                               if (!Contains(s[0], RFC3454.D1) || !Contains(s[s.Length - 1], RFC3454.D1))
+                               {
+                                       throw new StringprepException(StringprepException.BIDI_LTRAL);
+                               }
+                       }
+                       
+                       return s.ToString();
+               }
+               
+               internal static bool Contains(StringBuilder s, char[] p)
+               {
+                       for (int i = 0; i < p.Length; i++)
+                       {
+                               char c = p[i];
+                               for (int j = 0; j < s.Length; j++)
+                               {
+                                       if (c == s[j])
+                                       {
+                                               return true;
+                                       }
+                               }
+                       }
+                       return false;
+               }
+               
+               internal static bool Contains(StringBuilder s, char[][] p)
+               {
+                       for (int i = 0; i < p.Length; i++)
+                       {
+                               char[] r = p[i];
+                               if (1 == r.Length)
+                               {
+                                       char c = r[0];
+                                       for (int j = 0; j < s.Length; j++)
+                                       {
+                                               if (c == s[j])
+                                               {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                               else if (2 == r.Length)
+                               {
+                                       char f = r[0];
+                                       char t = r[1];
+                                       for (int j = 0; j < s.Length; j++)
+                                       {
+                                               if (f <= s[j] && t >= s[j])
+                                               {
+                                                       return true;
+                                               }
+                                       }
+                               }
+                       }
+                       return false;
+               }
+               
+               internal static bool Contains(char c, char[][] p)
+               {
+                       for (int i = 0; i < p.Length; i++)
+                       {
+                               char[] r = p[i];
+                               if (1 == r.Length)
+                               {
+                                       if (c == r[0])
+                                       {
+                                               return true;
+                                       }
+                               }
+                               else if (2 == r.Length)
+                               {
+                                       char f = r[0];
+                                       char t = r[1];
+                                       if (f <= c && t >= c)
+                                       {
+                                               return true;
+                                       }
+                               }
+                       }
+                       return false;
+               }
+               
+               internal static void Filter(StringBuilder s, char[] f)
+               {
+                       for (int i = 0; i < f.Length; i++)
+                       {
+                               char c = f[i];
+                               
+                               int j = 0;
+                               while (j < s.Length)
+                               {
+                                       if (c == s[j])
+                                       {
+                                               //s.deleteCharAt(j);
+                                               s.Remove(j, 1);
+                                       }
+                                       else
+                                       {
+                                               j++;
+                                       }
+                               }
+                       }
+               }
+               
+               internal static void Filter(StringBuilder s, char[][] f)
+               {
+                       for (int i = 0; i < f.Length; i++)
+                       {
+                               char[] r = f[i];
+                               
+                               if (1 == r.Length)
+                               {
+                                       char c = r[0];
+                                       
+                                       int j = 0;
+                                       while (j < s.Length)
+                                       {
+                                               if (c == s[j])
+                                               {
+                                                       //s.deleteCharAt(j);
+                                                       s.Remove(j, 1);
+                                               }
+                                               else
+                                               {
+                                                       j++;
+                                               }
+                                       }
+                               }
+                               else if (2 == r.Length)
+                               {
+                                       char from = r[0];
+                                       char to = r[1];
+                                       
+                                       int j = 0;
+                                       while (j < s.Length)
+                                       {
+                                               if (from <= s[j] && to >= s[j])
+                                               {
+                                                       //s.deleteCharAt(j);
+                                                       s.Remove(j, 1);
+                                               }
+                                               else
+                                               {
+                                                       j++;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               
+               internal static void Map(StringBuilder s, char[] search, string[] replace)
+               {
+                       for (int i = 0; i < search.Length; i++)
+                       {
+                               char c = search[i];
+                               
+                               int j = 0;
+                               while (j < s.Length)
+                               {
+                                       if (c == s[j])
+                                       {
+                                               //s.deleteCharAt(j);
+                                               s.Remove(j, 1);
+                                               if (null != replace[i])
+                                               {
+                                                       s.Insert(j, replace[i]);
+                                                       j += replace[i].Length - 1;
+                                               }
+                                       }
+                                       else
+                                       {
+                                               j++;
+                                       }
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/csharp/StringprepException.cs b/csharp/StringprepException.cs
new file mode 100644 (file)
index 0000000..cd9dcb6
--- /dev/null
@@ -0,0 +1,39 @@
+/// <summary>
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+
+namespace Gnu.Inet.Encoding
+{      
+       public class StringprepException : Exception
+       {
+               public static string CONTAINS_UNASSIGNED    = "Contains unassigned code points.";
+               public static string CONTAINS_PROHIBITED    = "Contains prohibited code points.";
+               public static string BIDI_BOTHRAL           = "Contains both R and AL code points.";
+               public static string BIDI_LTRAL             = "Leading and trailing code points not both R or AL.";
+
+        public StringprepException(string message) : base(message)
+               {
+               }
+       }
+}
\ No newline at end of file
diff --git a/csharp/generate/AssemblyInfo.cs b/csharp/generate/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..128672b
--- /dev/null
@@ -0,0 +1,55 @@
+/// <summary>\r
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.\r
+/// *\r
+/// Author: Alexander Gnauck AG-Software\r
+/// *\r
+/// This file is part of GNU Libidn.\r
+/// *\r
+/// This library is free software; you can redistribute it and/or\r
+/// modify it under the terms of the GNU Lesser General Public License\r
+/// as published by the Free Software Foundation; either version 2.1 of\r
+/// the License, or (at your option) any later version.\r
+/// *\r
+/// This library is distributed in the hope that it will be useful, but\r
+/// WITHOUT ANY WARRANTY; without even the implied warranty of\r
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+/// Lesser General Public License for more details.\r
+/// *\r
+/// You should have received a copy of the GNU Lesser General Public\r
+/// License along with this library; if not, write to the Free Software\r
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301\r
+/// USA\r
+/// </summary>\r
+using System.Reflection;\r
+using System.Runtime.CompilerServices;\r
+using System.Runtime.InteropServices;\r
+\r
+// General Information about an assembly is controlled through the following \r
+// set of attributes. Change these attribute values to modify the information\r
+// associated with an assembly.\r
+[assembly: AssemblyTitle("")]\r
+[assembly: AssemblyDescription("")]\r
+[assembly: AssemblyConfiguration("")]\r
+[assembly: AssemblyCompany("")]\r
+[assembly: AssemblyProduct("")]\r
+[assembly: AssemblyCopyright("")]\r
+[assembly: AssemblyTrademark("")]\r
+[assembly: AssemblyCulture("")]\r
+\r
+// Setting ComVisible to false makes the types in this assembly not visible \r
+// to COM components.  If you need to access a type in this assembly from \r
+// COM, set the ComVisible attribute to true on that type.\r
+[assembly: ComVisible(false)]\r
+\r
+// The following GUID is for the ID of the typelib if this project is exposed to COM\r
+[assembly: Guid("6D72484E-39BA-4312-9B64-74FD5CB81001")]\r
+\r
+// Version information for an assembly consists of the following four values:\r
+//\r
+//      Major Version\r
+//      Minor Version \r
+//      Build Number\r
+//      Revision\r
+//\r
+[assembly: AssemblyVersion("1.0.0.0")]\r
+[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file
diff --git a/csharp/generate/GenerateNFKC.cs b/csharp/generate/GenerateNFKC.cs
new file mode 100644 (file)
index 0000000..16744c4
--- /dev/null
@@ -0,0 +1,685 @@
+/// <summary>\r
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.\r
+/// *\r
+/// Author: Alexander Gnauck AG-Software\r
+/// *\r
+/// This file is part of GNU Libidn.\r
+/// *\r
+/// This library is free software; you can redistribute it and/or\r
+/// modify it under the terms of the GNU Lesser General Public License\r
+/// as published by the Free Software Foundation; either version 2.1 of\r
+/// the License, or (at your option) any later version.\r
+/// *\r
+/// This library is distributed in the hope that it will be useful, but\r
+/// WITHOUT ANY WARRANTY; without even the implied warranty of\r
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+/// Lesser General Public License for more details.\r
+/// *\r
+/// You should have received a copy of the GNU Lesser General Public\r
+/// License along with this library; if not, write to the Free Software\r
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301\r
+/// USA\r
+/// </summary>\r
+using System;\r
+using System.IO;\r
+using System.Collections;\r
+using System.Text;\r
+\r
+namespace gnu.inet.encoding.misc\r
+{\r
+    public class GenerateNFKC\r
+    {\r
+        internal static string stripComment(string sIn)\r
+        {\r
+            int c = sIn.IndexOf('#');\r
+            if (c == -1)\r
+            {\r
+                return sIn;\r
+            }\r
+            else\r
+            {\r
+                return sIn.Substring(0, (c) - (0));\r
+            }\r
+        }\r
+\r
+        internal static string[] split(string sIn, char sep)\r
+        {\r
+            StringBuilder sb = new StringBuilder(sIn);\r
+            int c = 0;\r
+            for (int i = 0; i < sb.Length; i++)\r
+            {\r
+                if (sb[i] == sep)\r
+                {\r
+                    c++;\r
+                }\r
+            }\r
+\r
+            string[] sOut = new string[c + 1];\r
+            c = 0;\r
+            int l = 0;\r
+            for (int i = 0; i < sb.Length; i++)\r
+            {\r
+                if (sb[i] == sep)\r
+                {\r
+                    if (l >= i)\r
+                    {\r
+                        sOut[c] = "";\r
+                    }\r
+                    else\r
+                    {\r
+                        // TODO, check this\r
+                        sOut[c] = sb.ToString(l, i-l);\r
+                    }\r
+                    l = i + 1;\r
+                    c++;\r
+                }\r
+            }\r
+            if (l < sb.Length)\r
+            {\r
+                sOut[c] = sb.ToString(l, sb.Length - l);\r
+            }\r
+            return sOut;\r
+        }\r
+\r
+        internal static bool isCompatibilityMapping(string sIn)\r
+        {\r
+            return sIn.Length > 0 && sIn[0] == '<';\r
+        }\r
+\r
+        internal static string stripCompatibilityTag(string sIn)\r
+        {\r
+            return sIn.Substring(sIn.IndexOf('>') + 2);\r
+        }\r
+\r
+        internal static string toString(string sIn)\r
+        {\r
+            StringBuilder sOut = new StringBuilder();\r
+            string[] chars = split(sIn, ' ');\r
+            for (int i = 0; i < chars.Length; i++)\r
+            {\r
+                if (chars[i].Equals("005C"))\r
+                {\r
+                    sOut.Append("\\\\");\r
+                }\r
+                else if (chars[i].Equals("0022"))\r
+                {\r
+                    sOut.Append("\\\"");\r
+                }\r
+                else\r
+                {\r
+                    sOut.Append("\\u");\r
+                    sOut.Append(chars[i]);\r
+                }\r
+            }\r
+            return sOut.ToString();\r
+        }\r
+            \r
+        internal static string decompose(string sIn, SortedList mappings)\r
+        {\r
+            StringBuilder sOut = new StringBuilder();\r
+            string[] c = split(sIn, ' ');\r
+\r
+            for (int i = 0; i < c.Length; i++)\r
+            {\r
+                if (mappings.ContainsKey(c[i]))\r
+                {\r
+                    if (sOut.Length > 0)\r
+                    {\r
+                        sOut.Append(" ");\r
+                    }\r
+                    sOut.Append(decompose((string)mappings[c[i]], mappings));\r
+                }\r
+                else\r
+                {\r
+                    if (sOut.Length > 0)\r
+                    {\r
+                        sOut.Append(" ");\r
+                    }\r
+                    sOut.Append(c[i]);\r
+                }\r
+            }\r
+\r
+            return sOut.ToString();\r
+        }\r
+            \r
+        public static void Generate()\r
+        {\r
+            // Check if the unicode files exist\r
+            {\r
+                FileInfo f1 = new FileInfo("CompositionExclusions.txt");\r
+                FileInfo f2 = new FileInfo("UnicodeData.txt");\r
+                bool tmpBool;\r
+                if (File.Exists(f1.FullName))\r
+                    tmpBool = true;\r
+                else\r
+                    tmpBool = Directory.Exists(f1.FullName);\r
+                bool tmpBool2;\r
+                if (File.Exists(f2.FullName))\r
+                    tmpBool2 = true;\r
+                else\r
+                    tmpBool2 = Directory.Exists(f2.FullName);\r
+                if (!tmpBool || !tmpBool2)\r
+                {\r
+                    Console.WriteLine("Unable to find UnicodeData.txt or CompositionExclusions.txt.");\r
+                    Console.WriteLine("Please download the latest version of these file from:");\r
+                    Console.WriteLine("http://www.unicode.org/Public/UNIDATA/");\r
+                    System.Environment.Exit(1);\r
+                }\r
+            }\r
+                    \r
+            ArrayList exclusions = new ArrayList();\r
+            {            \r
+                StreamReader r = new StreamReader("CompositionExclusions.txt", System.Text.Encoding.Default);\r
+                string line;\r
+                while (null != (line = r.ReadLine()))\r
+                {\r
+                    line = stripComment(line);\r
+                    line = line.Trim();\r
+                    if (line.Length == 0)\r
+                    {\r
+                        // Empty line\r
+                    }\r
+                    else if (line.Length == 4)\r
+                    {\r
+                        exclusions.Add(line);\r
+                    }\r
+                    else\r
+                    {\r
+                        // Skip code points > 0xffff\r
+                    }\r
+                }\r
+                r.Close();\r
+            }\r
+\r
+            // Read UnicodeData\r
+            \r
+            SortedList canonical = new SortedList();        \r
+            SortedList compatibility = new SortedList();        \r
+            SortedList combiningClasses = new SortedList();\r
+            {        \r
+                StreamReader r = new StreamReader("UnicodeData.txt", Encoding.Default);\r
+                string line;\r
+                while (null != (line = r.ReadLine()))\r
+                {\r
+                    line = stripComment(line);\r
+                    line = line.Trim();\r
+\r
+                    if (line.Length == 0)\r
+                    {\r
+                        // Empty line\r
+                    }\r
+                    else\r
+                    {\r
+                        string[] f = split(line, ';');\r
+\r
+                        if (f[0].Length == 4)\r
+                        {\r
+                            if (!f[5].Equals(""))\r
+                            {\r
+                                if (isCompatibilityMapping(f[5]))\r
+                                {\r
+                                    compatibility[f[0]] = stripCompatibilityTag(f[5]);\r
+                                }\r
+                                else\r
+                                {\r
+                                    compatibility[f[0]] = f[5];\r
+                                    if (!exclusions.Contains(f[0]))\r
+                                    {\r
+                                        canonical[f[0]] = f[5];\r
+                                    }\r
+                                }\r
+                            }\r
+                            if (!f[3].Equals("0"))\r
+                            {\r
+                                //UPGRADE_TODO: Method 'java.lang.Integer.parseInt' was converted to 'System.Convert.ToInt32' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073'"\r
+                                combiningClasses[(int)System.Convert.ToInt32(f[0], 16)] = f[3];\r
+                            }\r
+                        }\r
+                        else\r
+                        {\r
+                            // Skip code points > 0xffff\r
+                        }\r
+                    }\r
+                }\r
+                r.Close();\r
+            }\r
+\r
+            // Recursively apply compatibility mappings\r
+            while (true)\r
+            {\r
+                bool replaced = false;\r
+                            \r
+                IEnumerator i = new HashSet(compatibility.Keys).GetEnumerator();            \r
+                while (i.MoveNext())\r
+                {                \r
+                    string k = (string)i.Current;\r
+                    string v = (string)compatibility[k];\r
+\r
+                    string d = decompose(v, compatibility);\r
+                    if (!d.Equals(v))\r
+                    {\r
+                        replaced = true;\r
+                        compatibility[k] = d;\r
+                    }\r
+                }\r
+\r
+                if (!replaced)\r
+                {\r
+                    break;\r
+                }\r
+            }\r
+\r
+            // Eliminate duplicate mappings        \r
+            SortedList compatibilityKeys = new SortedList();\r
+            ArrayList compatibilityMappings = new ArrayList();\r
+            {            \r
+                IEnumerator i = new HashSet(compatibility.Keys).GetEnumerator();            \r
+                while (i.MoveNext())\r
+                {                \r
+                    string k = (string)i.Current;\r
+                    string v = (string)compatibility[k];\r
+\r
+                    int index = compatibilityMappings.IndexOf(v);\r
+                    if (index == -1)\r
+                    {\r
+                        index = compatibilityMappings.Count;\r
+                        compatibilityMappings.Add(v);\r
+                    }\r
+                    compatibilityKeys[k] = (int)index;\r
+                }\r
+            }\r
+\r
+            // Create composition tables        \r
+            SortedList firstMap = new SortedList();        \r
+            SortedList secondMap = new SortedList();\r
+            {            \r
+                IEnumerator i = new HashSet(canonical.Keys).GetEnumerator();            \r
+                while (i.MoveNext())\r
+                {                \r
+                    string k = (string)i.Current;\r
+                    string v = (string)canonical[k];\r
+\r
+                    string[] s = split(v, ' ');\r
+\r
+                    if (s.Length == 2)\r
+                    {\r
+                        // If both characters have the same combining class, they\r
+                        // won't be combined (in the sequence AB, B is blocked from\r
+                        // A if both have the same combining class)                    \r
+                        string cc1 = (string)combiningClasses[(int)System.Convert.ToInt32(s[0], 16)];                    \r
+                        string cc2 = (string)combiningClasses[(int)System.Convert.ToInt32(s[1], 16)];\r
+                        if (cc1 != null || (cc1 != null && cc1.Equals(cc2)))\r
+                        {\r
+                            // Ignore this composition                        \r
+                            // TODO check this\r
+                            //i.remove();                        \r
+                            canonical.Remove(k);\r
+                            continue;\r
+                        }\r
+\r
+                        if (firstMap.ContainsKey(s[0]))\r
+                        {\r
+                            int c = (int)firstMap[s[0]];\r
+                            firstMap[s[0]] = (int)(c + 1);\r
+                        }\r
+                        else\r
+                        {\r
+                            firstMap[s[0]] = 1;\r
+                        }\r
+\r
+                        if (secondMap.ContainsKey(s[1]))\r
+                        {\r
+                            int c = (int)secondMap[s[1]];\r
+                            secondMap[s[1]] = (int)(c + 1);\r
+                        }\r
+                        else\r
+                        {\r
+                            secondMap[s[1]] = 1;\r
+                        }\r
+                    }\r
+                    else if (s.Length > 2)\r
+                    {\r
+                        Console.WriteLine("? wrong canonical mapping for " + k);\r
+                        System.Environment.Exit(1);\r
+                    }\r
+                }\r
+            }\r
+                    \r
+            SortedList singleFirstComposition = new SortedList();        \r
+            SortedList singleSecondComposition = new SortedList();        \r
+            SortedList complexComposition = new SortedList();\r
+\r
+            int composeLookupMax = 0;\r
+            {            \r
+                IEnumerator i = new HashSet(canonical.Keys).GetEnumerator();         \r
+                while (i.MoveNext())\r
+                {                \r
+                    string k = (string) i.Current;\r
+                    string v = (string) canonical[k];\r
+\r
+                    string[] s = split(v, ' ');\r
+\r
+                    if (s.Length == 2)\r
+                    {\r
+                        // TODO, check this\r
+                        int first = 0;\r
+                        if(firstMap.Contains(s[0]))\r
+                            first = (int) firstMap[s[0]];\r
+                        \r
+                        int second = 0;\r
+                        if (secondMap.Contains(s[1]))\r
+                            second = (int) secondMap[s[1]];\r
+                        // TODO, check this\r
+\r
+                        if (first == 1)\r
+                        {\r
+                            singleFirstComposition[s[0]] = new string[] { s[1], k };                        \r
+                            composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[0], 16));\r
+                        }\r
+                        else if (second == 1)\r
+                        {\r
+                            singleSecondComposition[s[1]] = new string[] { s[0], k };                        \r
+                            composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[1], 16));\r
+                        }\r
+                        else\r
+                        {\r
+                            if (complexComposition.ContainsKey(s[0]))\r
+                            {                            \r
+                                SortedList m = (SortedList)complexComposition[s[0]];\r
+                                if (m.ContainsKey(s[1]))\r
+                                {\r
+                                    Console.WriteLine("? ambiguous canonical mapping for " + s[0]);\r
+                                    System.Environment.Exit(1);\r
+                                }\r
+                                m[s[1]] = k;\r
+                            }\r
+                            else\r
+                            {                            \r
+                                SortedList m = new SortedList();\r
+                                m[s[1]] = k;\r
+                                complexComposition[s[0]] = m;\r
+                            }                        \r
+                            composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[0], 16));                        \r
+                            composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[1], 16));\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+\r
+            Console.WriteLine("Generating CombiningClass.cs file...");\r
+\r
+            // Dump combining classes\r
+            {\r
+                StreamWriter w = new StreamWriter("CombiningClass.cs", false, Encoding.Default);\r
+                w.WriteLine("// Do not edit !!!");\r
+                w.WriteLine("// this file is generated automatically");\r
+                w.WriteLine();            \r
+                w.WriteLine("public class CombiningClass");            \r
+                w.WriteLine("{");            \r
+                w.WriteLine("\tpublic static readonly int[,] c = new int[,] {");\r
+                System.Text.StringBuilder index = new System.Text.StringBuilder();\r
+\r
+                int count = 0;\r
+\r
+                for (int i = 0; i < 256; i++)\r
+                {\r
+                    bool empty = true;\r
+\r
+                    StringBuilder page = new StringBuilder();\r
+                    page.Append("    { /* Page " + i + " */");\r
+\r
+                    for (int j = 0; j < 256; j++)\r
+                    {\r
+                        int c = (int)((i << 8) + j);\r
+                        string cc = (string)combiningClasses[c];\r
+\r
+                        if (0 == (j & 31))\r
+                        {\r
+                            page.Append("\r\n      ");\r
+                        }\r
+                        if (cc == null)\r
+                        {\r
+                            page.Append("0, ");\r
+                        }\r
+                        else\r
+                        {\r
+                            page.Append(cc + ", ");\r
+                            empty = false;\r
+                        }\r
+                    }\r
+                    page.Append("\r\n    },");\r
+\r
+                    index.Append("    ");\r
+\r
+                    if (!empty)\r
+                    {                    \r
+                        w.WriteLine(page.ToString());\r
+                        index.Append(count++);\r
+                        index.Append(",\r\n");\r
+                    }\r
+                    else\r
+                    {\r
+                        index.Append("-1,\r\n");\r
+                    }\r
+                }            \r
+                w.WriteLine("  };\r\n");\r
+                            \r
+                w.WriteLine("\tpublic static readonly int[] i = new int[] {");\r
+                w.Write(index.ToString());            \r
+                w.WriteLine("  };");            \r
+                w.WriteLine("}");            \r
+                w.Close();\r
+            }\r
+\r
+            //Console.WriteLine(" Ok.");\r
+            Console.WriteLine("Generating DecompositionKeys.cs file...");\r
+\r
+            // Dump compatibility decomposition\r
+            {\r
+                StreamWriter w = new StreamWriter("DecompositionKeys.cs", false, Encoding.Default);\r
+                w.WriteLine("// Do not edit !!!");\r
+                w.WriteLine("// this file is generated automatically");         \r
+                w.WriteLine();            \r
+                w.WriteLine("public class DecompositionKeys");            \r
+                w.WriteLine("{");\r
+\r
+                w.WriteLine("\tpublic static readonly int[] k = new int[] {");            \r
+                IEnumerator i = new HashSet(compatibilityKeys.Keys).GetEnumerator();            \r
+                while (i.MoveNext())\r
+                {            \r
+                    string k = (string)i.Current;\r
+                    int index = ((int)compatibilityKeys[k]);             \r
+                    w.WriteLine("    '\\u" + k + "', " + index + ",");\r
+                }            \r
+                w.WriteLine("  };");            \r
+                w.WriteLine("}");            \r
+                w.Close();\r
+            }\r
+\r
+            //Console.WriteLine(" Ok.");\r
+            Console.WriteLine("Generating DecompositionMappings.cs file...");\r
+\r
+            {\r
+                StreamWriter w = new StreamWriter("DecompositionMappings.cs", false, Encoding.Default);\r
+                w.WriteLine("// Do not edit !!!");\r
+                w.WriteLine("// this file is generated automatically");\r
+                w.WriteLine();            \r
+                w.WriteLine("public class DecompositionMappings");            \r
+                w.WriteLine("{");            \r
+                w.WriteLine("\tpublic static readonly string[] m = new string[] {");\r
+                IEnumerator i = compatibilityMappings.GetEnumerator();\r
+                while (i.MoveNext())\r
+                {                \r
+                    string m = (string)i.Current;             \r
+                    w.WriteLine("    \"" + toString(m) + "\",");\r
+                }            \r
+                w.WriteLine("  };");            \r
+                w.WriteLine("}");            \r
+                w.Close();\r
+            }\r
+\r
+            //Console.WriteLine(" Ok.");\r
+            Console.WriteLine("Generating Composition.cs file...");\r
+\r
+            // Dump canonical composition\r
+            {\r
+                StreamWriter w = new StreamWriter("Composition.cs", false, Encoding.Default);\r
+                w.WriteLine("// Do not edit !!!");\r
+                w.WriteLine("// this file is generated automatically");\r
+                w.WriteLine();            \r
+                w.WriteLine("public class Composition");            \r
+                w.WriteLine("{");\r
+\r
+                IEnumerator i;\r
+                int index = 0;\r
+                           \r
+                SortedList indices = new SortedList();\r
+                            \r
+                i = new HashSet(complexComposition.Keys).GetEnumerator();            \r
+                while (i.MoveNext())\r
+                {                \r
+                    string s0 = (string)i.Current;             \r
+                    indices[(int)System.Convert.ToInt32(s0, 16)] = (int)index;\r
+                    index++;\r
+                }\r
+\r
+                int multiSecondStart = index;\r
+                w.WriteLine("\t/* jagged Array */");\r
+                w.WriteLine("\tpublic static readonly char[][] multiFirst = new char[][] {");\r
+                //w.WriteLine("  public final static char[][] multiFirst = new char[][] {");\r
+                i = new HashSet(complexComposition.Keys).GetEnumerator();            \r
+                while (i.MoveNext())\r
+                {                \r
+                    string s0 = (string)i.Current;             \r
+                    SortedList m = (SortedList)complexComposition[s0];\r
+                                   \r
+                    SortedList line = new SortedList();\r
+                    int maxIndex = 1;\r
+                                    \r
+                    System.Collections.IEnumerator i2 = new HashSet(m.Keys).GetEnumerator();                \r
+                    while (i2.MoveNext())\r
+                    {                    \r
+                        string s1 = (string)i2.Current;\r
+                        string k = (string)m[s1];\r
+                                         \r
+                        int s1i = (int)System.Convert.ToInt32(s1, 16);\r
+\r
+                        if (!indices.ContainsKey(s1i))\r
+                        {\r
+                            indices[s1i] = (int)index;\r
+                            index++;\r
+                        }\r
+                        line[indices[s1i]] = k;\r
+                        maxIndex = System.Math.Max(maxIndex, ((int)indices[s1i]));\r
+                    }\r
+\r
+                    w.Write("\tnew char[] { ");\r
+                    for (int j = multiSecondStart; j <= maxIndex; j++)\r
+                    {\r
+                        if (line.ContainsKey((int)j))\r
+                        {\r
+                            string s = (string)line[(int)j];\r
+                            w.Write("'" + toString(s) + "', ");\r
+                        }\r
+                        else\r
+                        {\r
+                            //w.Write("       0, ");\r
+                            w.Write("'" + toString("0000") + "', ");\r
+                        }\r
+                    }                \r
+                    w.WriteLine("},");\r
+                }            \r
+                w.WriteLine("  };");\r
+\r
+                int singleFirstStart = index;\r
+\r
+                w.WriteLine("\tpublic static readonly char[,] singleFirst = new char[,] {");\r
+                i = new HashSet(singleFirstComposition.Keys).GetEnumerator();            \r
+                while (i.MoveNext())\r
+                {            \r
+                    string k = (string)i.Current;\r
+                    string[] v = ((string[])singleFirstComposition[k]);             \r
+                    w.WriteLine("    { '" + toString(v[0]) + "', '" + toString(v[1]) + "' },");\r
+                                    \r
+                    if (indices.ContainsKey((int)System.Convert.ToInt32(k, 16)))\r
+                    {\r
+                        Console.WriteLine(k + " already indexed!");\r
+                    }\r
+                                    \r
+                    indices[(int)System.Convert.ToInt32(k, 16)] = (int)index;\r
+                    index++;\r
+                }            \r
+                w.WriteLine("  };");\r
+\r
+                int singleSecondStart = index;\r
+                            \r
+                w.WriteLine("\tpublic static readonly char[,] singleSecond = new char[,] {");\r
+                i = new HashSet(singleSecondComposition.Keys).GetEnumerator();            \r
+                while (i.MoveNext())\r
+                {                \r
+                    string k = (string)i.Current;\r
+                    string[] v = ((string[])singleSecondComposition[k]);             \r
+                    w.WriteLine("    { '" + toString(v[0]) + "', '" + toString(v[1]) + "' },");\r
+                                    \r
+                    indices[(int)System.Convert.ToInt32(k, 16)] = (int)index;\r
+                    index++;\r
+                }            \r
+                w.WriteLine("  };");\r
+                            \r
+                w.WriteLine("\tpublic static readonly int multiSecondStart = " + multiSecondStart + ";");            \r
+                w.WriteLine("\tpublic static readonly int singleFirstStart = " + singleFirstStart + ";");            \r
+                w.WriteLine("\tpublic static readonly int singleSecondStart = " + singleSecondStart + ";");\r
+\r
+                System.Text.StringBuilder compositionPages = new System.Text.StringBuilder();\r
+                            \r
+                w.WriteLine("\tpublic static readonly int[] composePage = new int[] {");\r
+                int pageCount = 0;\r
+                for (int j = 0; j * 256 < composeLookupMax + 255; j++)\r
+                {\r
+                    bool empty = true;\r
+                    StringBuilder page = new StringBuilder();\r
+                    for (int k = 0; k < 256; k++)\r
+                    {\r
+                        if (k % 16 == 0)\r
+                        {\r
+                            page.Append("\r\n      ");\r
+                        }\r
+                        if (indices.ContainsKey((int)(j * 256 + k)))\r
+                        {\r
+                            page.Append(indices[(int)(j * 256 + k)]);\r
+                            page.Append(", ");\r
+                            empty = false;\r
+                        }\r
+                        else\r
+                        {\r
+                            page.Append("-1, ");\r
+                        }\r
+                    }\r
+\r
+                    if (empty)\r
+                    {                    \r
+                        w.WriteLine("    -1,");\r
+                    }\r
+                    else\r
+                    {                 \r
+                        w.WriteLine("    " + pageCount + ",");\r
+                        compositionPages.Append("\t{");\r
+                        compositionPages.Append(page);\r
+                        compositionPages.Append("\r\n    },\r\n");\r
+                        pageCount++;\r
+                    }\r
+                }            \r
+                w.WriteLine("  };");\r
+                //w.WriteLine("\t/* jagged Array */");                        \r
+                w.WriteLine("\tpublic static readonly int[,] composeData = new int[,] {");\r
+                w.Write(compositionPages);            \r
+                w.WriteLine("  };");                        \r
+                w.WriteLine("}");            \r
+                w.Close();\r
+            }\r
+\r
+            //Console.WriteLine(" Ok.");             \r
+            Console.WriteLine("Finished!");\r
+        }\r
+    }\r
+}
\ No newline at end of file
diff --git a/csharp/generate/GenerateRFC3454.cs b/csharp/generate/GenerateRFC3454.cs
new file mode 100644 (file)
index 0000000..0682e4b
--- /dev/null
@@ -0,0 +1,294 @@
+/// <summary>\r
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.\r
+/// *\r
+/// Author: Alexander Gnauck AG-Software\r
+/// *\r
+/// This file is part of GNU Libidn.\r
+/// *\r
+/// This library is free software; you can redistribute it and/or\r
+/// modify it under the terms of the GNU Lesser General Public License\r
+/// as published by the Free Software Foundation; either version 2.1 of\r
+/// the License, or (at your option) any later version.\r
+/// *\r
+/// This library is distributed in the hope that it will be useful, but\r
+/// WITHOUT ANY WARRANTY; without even the implied warranty of\r
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+/// Lesser General Public License for more details.\r
+/// *\r
+/// You should have received a copy of the GNU Lesser General Public\r
+/// License along with this library; if not, write to the Free Software\r
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301\r
+/// USA\r
+/// </summary>\r
+using System;\r
+using System.IO;\r
+using System.Text;\r
+\r
+namespace gnu.inet.encoding.misc\r
+{\r
+    public class GenerateRFC3454\r
+    {\r
+        internal const string FILE_RFC3454  = "rfc3454.txt";\r
+        internal const string FILE_OUTPUT   = "RFC3454.cs";\r
+                \r
+        public static void Generate()\r
+        {\r
+            if (!File.Exists(FILE_RFC3454))\r
+            {\r
+                Console.WriteLine("Unable to find rfc3454.txt.");\r
+                Console.WriteLine("Please download this file from:");\r
+                Console.WriteLine("http://www.ietf.org/rfc/rfc3454.txt");\r
+                \r
+                return;                \r
+            }\r
+\r
+            Console.WriteLine("Generating " + FILE_OUTPUT + " file...");\r
+                        \r
+            \r
+            StreamReader r = new StreamReader(FILE_RFC3454);            \r
+            StreamWriter w = new StreamWriter(FILE_OUTPUT);\r
+\r
+            w.WriteLine("// Do not edit !!!");\r
+            w.WriteLine("// this file is generated automatically");\r
+            w.WriteLine();\r
+            w.WriteLine("using System;");\r
+            w.WriteLine();\r
+            w.WriteLine("namespace Gnu.Inet.Encoding{");\r
+            w.WriteLine();\r
+            w.WriteLine("public class RFC3454");\r
+\r
+            w.WriteLine("{");\r
+\r
+            int n = 0;\r
+\r
+            string t = null;\r
+            System.Text.StringBuilder o1 = null;\r
+            System.Text.StringBuilder o2 = null;\r
+\r
+            while (true)\r
+            {\r
+                string line = r.ReadLine();\r
+                string l = line;\r
+                \r
+                if (null == l)\r
+                {\r
+                    break;\r
+                }\r
+                l = l.Trim();\r
+\r
+                if (l.Equals(""))\r
+                {\r
+                    // Ignore empty line\r
+                }\r
+                else if (-1 != l.IndexOf("\u000c"))\r
+                {\r
+                    // Ignore FF\r
+                }\r
+                else if (0 == l.IndexOf("RFC"))\r
+                {\r
+                    // Ignore page header\r
+                }\r
+                else if (0 == l.IndexOf("Hoffman & Blanchet"))\r
+                {\r
+                    // Ignore page footer\r
+                }\r
+                else if (-1 != l.IndexOf("----- Start Table "))\r
+                {\r
+                    // Start of a table\r
+                    t = l.Substring(l.IndexOf("Table") + 6, (l.LastIndexOf("-----") - 1) - (l.IndexOf("Table") + 6));\r
+                    o1 = new System.Text.StringBuilder();\r
+                    o2 = new System.Text.StringBuilder();\r
+                }\r
+                else if (-1 != l.IndexOf("----- End Table "))\r
+                {\r
+                    // End of a table\r
+                    if ("A.1".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] A1 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("B.1".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[] B1 = new char[] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("B.2".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[] B2search = new char[] {\r\n" + o1.ToString() + "  };\r\n");\r
+                        w.WriteLine("  public static string[] B2replace = new string[] {\r\n" + o2.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("B.3".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[] B3search = new char[] {\r\n" + o1.ToString() + "  };\r\n");\r
+                        w.WriteLine("  public static string[] B3replace = new string[] {\r\n" + o2.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.1.1".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[] C11 = new char[] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.1.2".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[] C12 = new char[] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.2.1".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] C21 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.2.2".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] C22 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.3".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] C3 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.4".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] C4 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.5".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] C5 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.6".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] C6 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.7".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] C7 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("C.8".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] C8 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("D.1".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] D1 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    else if ("D.2".Equals(t))\r
+                    {\r
+                        w.WriteLine("  public static char[][] D2 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");\r
+                    }\r
+                    t = null;\r
+                }\r
+                else if (null != t)\r
+                {\r
+                    // Filter comments\r
+                    if (-1 != l.LastIndexOf(";"))\r
+                    {\r
+                        string c = l.Substring(l.LastIndexOf(";")).Trim();\r
+                        try\r
+                        {                            \r
+                           Convert.ToInt32(c, 16);\r
+                        }\r
+                        catch\r
+                        {\r
+                            l = l.Substring(0, (l.LastIndexOf(";")) - (0));\r
+                        }\r
+                    }\r
+\r
+                    if ("A.1".Equals(t))\r
+                    {\r
+                        if (4 == l.Length)\r
+                        {\r
+                            o1.Append("    new char[] { '\\u");\r
+                            o1.Append(l);\r
+                            o1.Append("' },");\r
+                            o1.Append("\t/* " + line.Trim() + " */\r\n");\r
+                        }\r
+                        else if (5 == l.Length)\r
+                        {\r
+                            //Char\r
+                            o1.Append("\t/* Skip characters outside the range of .NET unicode " + line.Trim() + " */\n");\r
+                            //Console.WriteLine("Skip: " + l);                            \r
+                            // Skip characters outside the range of Java unicode\r
+                        }\r
+                        else if (9 == l.Length)\r
+                        {\r
+                            o1.Append("    new char[] { '\\u");\r
+                            o1.Append(l.Substring(0, (4) - (0)));\r
+                            o1.Append("', '\\u");\r
+                            o1.Append(l.Substring(5, (9) - (5)));\r
+                            o1.Append("' },");\r
+                            o1.Append("\t/* " + line.Trim() + " */\r\n");\r
+                        }\r
+                        else if (11 == l.Length)\r
+                        {\r
+                            o1.Append("\t/* Skip characters outside the range of .NET unicode " + line.Trim() + " */\n");\r
+                            //o1.AppendLine("// " + l);\r
+                            // Console.WriteLine("Skip: " + l);\r
+                            // Skip characters outside the range of Java unicode\r
+                        }\r
+                        else\r
+                        {\r
+                            Console.WriteLine("Unknown format of A.1 line: " + l);\r
+                        }\r
+                    }\r
+                    else if ("B.1".Equals(t))\r
+                    {\r
+                        Tokenizer tok = new Tokenizer(l, " ;");\r
+                        o1.Append("    '\\u" + tok.NextToken() + "',");\r
+                        o1.Append("\t/* " + line.Trim() + " */\r\n");\r
+                    }\r
+                    else if ("B.2".Equals(t) || "B.3".Equals(t))\r
+                    {\r
+                        Tokenizer tok = new Tokenizer(l, "; ");\r
+                        string c = tok.NextToken();\r
+                        if (c.Length == 4)\r
+                        {\r
+                            o1.Append("    '\\u" + c + "',");\r
+                            o1.Append("\t/*" + line.Trim() + "*/\r\n");\r
+                            if (tok.HasMoreTokens())\r
+                            {\r
+                                o2.Append("    \"");\r
+                                while (tok.HasMoreTokens())\r
+                                {\r
+                                    o2.Append("\\u" + tok.NextToken());\r
+                                }\r
+                                o2.Append("\",");\r
+                                o2.Append("\t/*" + line.Trim() + "*/\r\n");\r
+                            }\r
+                            else\r
+                            {\r
+                                o2.Append("    null,");\r
+                                o2.Append("\t/*" + line.Trim() + "*/\r\n");\r
+                            }\r
+                        }\r
+                    }\r
+                    else if ("C.1.1".Equals(t))\r
+                    {\r
+                        o1.Append("    '\\u" + l + "',");\r
+                        o1.Append("\t/* " + line.Trim() + " */\r\n");\r
+                    }\r
+                    else if ("C.1.2".Equals(t))\r
+                    {\r
+                        o1.Append("    '\\u" + l + "',");\r
+                        o1.Append("\t/* " + line.Trim() + " */\r\n");\r
+                    }\r
+                    else if ("C.2.1".Equals(t) || "C.2.2".Equals(t) || "C.3".Equals(t) || "C.4".Equals(t) || "C.5".Equals(t) || "C.6".Equals(t) || "C.7".Equals(t) || "C.8".Equals(t) || "D.1".Equals(t) || "D.2".Equals(t))\r
+                    {\r
+                        if (4 == l.Length)\r
+                        {\r
+                            o1.Append("    new char[] { '\\u" + l + "' },");\r
+                            o1.Append("\t/* " + line.Trim() + " */\r\n");\r
+                        }\r
+                        else if (9 == l.Length)\r
+                        {\r
+                            o1.Append("    new char[] { '\\u");\r
+                            o1.Append(l.Substring(0, (4) - (0)));\r
+                            o1.Append("', '\\u");\r
+                            o1.Append(l.Substring(5, (9) - (5)));\r
+                            o1.Append("' },");\r
+                            o1.Append("\t/* " + line.Trim() + " */\r\n");\r
+                        }\r
+                    }\r
+                }\r
+\r
+                n++;\r
+            }\r
+\r
+            w.WriteLine("}");\r
+            w.WriteLine("}");\r
+            w.Close();            \r
+        }\r
+    }\r
+}
\ No newline at end of file
diff --git a/csharp/generate/HashSet.cs b/csharp/generate/HashSet.cs
new file mode 100644 (file)
index 0000000..056b689
--- /dev/null
@@ -0,0 +1,91 @@
+/// <summary>\r
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.\r
+/// *\r
+/// Author: Alexander Gnauck AG-Software\r
+/// *\r
+/// This file is part of GNU Libidn.\r
+/// *\r
+/// This library is free software; you can redistribute it and/or\r
+/// modify it under the terms of the GNU Lesser General Public License\r
+/// as published by the Free Software Foundation; either version 2.1 of\r
+/// the License, or (at your option) any later version.\r
+/// *\r
+/// This library is distributed in the hope that it will be useful, but\r
+/// WITHOUT ANY WARRANTY; without even the implied warranty of\r
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+/// Lesser General Public License for more details.\r
+/// *\r
+/// You should have received a copy of the GNU Lesser General Public\r
+/// License along with this library; if not, write to the Free Software\r
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301\r
+/// USA\r
+/// </summary>\r
+using System;\r
+using System.Collections;\r
+\r
+namespace gnu.inet.encoding.misc\r
+{\r
+    /// <summary>\r
+    /// HashSet class.\r
+    /// </summary>    \r
+    public class HashSet : ArrayList\r
+    {\r
+        public HashSet() : base()\r
+        {\r
+        }\r
+\r
+        public HashSet(System.Collections.ICollection c)\r
+        {\r
+            this.AddAll(c);\r
+        }\r
+\r
+        public HashSet(int capacity) : base(capacity)\r
+        {\r
+        }\r
+\r
+        /// <summary>\r
+        /// Adds a new element to the ArrayList if it is not already present.\r
+        /// </summary>         \r
+        /// <param name="obj">Element to insert to the ArrayList.</param>\r
+        /// <returns>Returns true if the new element was inserted, false otherwise.</returns>\r
+        new public virtual bool Add(System.Object obj)\r
+        {\r
+            bool inserted;\r
+\r
+            if ((inserted = this.Contains(obj)) == false)\r
+            {\r
+                base.Add(obj);\r
+            }\r
+\r
+            return !inserted;\r
+        }\r
+\r
+        /// <summary>\r
+        /// Adds all the elements of the specified collection that are not present to the list.\r
+        /// </summary>\r
+        /// <param name="c">Collection where the new elements will be added</param>\r
+        /// <returns>Returns true if at least one element was added, false otherwise.</returns>\r
+        public bool AddAll(System.Collections.ICollection c)\r
+        {\r
+            System.Collections.IEnumerator e = new System.Collections.ArrayList(c).GetEnumerator();\r
+            bool added = false;\r
+\r
+            while (e.MoveNext() == true)\r
+            {\r
+                if (this.Add(e.Current) == true)\r
+                    added = true;\r
+            }\r
+\r
+            return added;\r
+        }\r
+\r
+        /// <summary>\r
+        /// Returns a copy of the HashSet instance.\r
+        /// </summary>         \r
+        /// <returns>Returns a shallow copy of the current HashSet.</returns>\r
+        public override System.Object Clone()\r
+        {\r
+            return base.MemberwiseClone();\r
+        }\r
+    }\r
+}
\ No newline at end of file
diff --git a/csharp/generate/Program.cs b/csharp/generate/Program.cs
new file mode 100644 (file)
index 0000000..82800d3
--- /dev/null
@@ -0,0 +1,39 @@
+/// <summary>\r
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.\r
+/// *\r
+/// Author: Alexander Gnauck AG-Software\r
+/// *\r
+/// This file is part of GNU Libidn.\r
+/// *\r
+/// This library is free software; you can redistribute it and/or\r
+/// modify it under the terms of the GNU Lesser General Public License\r
+/// as published by the Free Software Foundation; either version 2.1 of\r
+/// the License, or (at your option) any later version.\r
+/// *\r
+/// This library is distributed in the hope that it will be useful, but\r
+/// WITHOUT ANY WARRANTY; without even the implied warranty of\r
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+/// Lesser General Public License for more details.\r
+/// *\r
+/// You should have received a copy of the GNU Lesser General Public\r
+/// License along with this library; if not, write to the Free Software\r
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301\r
+/// USA\r
+/// </summary>\r
+using System;\r
+\r
+namespace gnu.inet.encoding.misc\r
+{\r
+    class Program\r
+    {\r
+        /// <summary>\r
+        /// Main entry point of this console app\r
+        /// </summary>\r
+        /// <param name="args"></param>\r
+        static void Main(string[] args)\r
+        {\r
+            GenerateRFC3454.Generate();\r
+            GenerateNFKC.Generate();\r
+        }\r
+    }\r
+}\r
diff --git a/csharp/generate/Tokenizer.cs b/csharp/generate/Tokenizer.cs
new file mode 100644 (file)
index 0000000..450077e
--- /dev/null
@@ -0,0 +1,223 @@
+/// <summary>\r
+/// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.\r
+/// *\r
+/// Author: Alexander Gnauck AG-Software\r
+/// *\r
+/// This file is part of GNU Libidn.\r
+/// *\r
+/// This library is free software; you can redistribute it and/or\r
+/// modify it under the terms of the GNU Lesser General Public License\r
+/// as published by the Free Software Foundation; either version 2.1 of\r
+/// the License, or (at your option) any later version.\r
+/// *\r
+/// This library is distributed in the hope that it will be useful, but\r
+/// WITHOUT ANY WARRANTY; without even the implied warranty of\r
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+/// Lesser General Public License for more details.\r
+/// *\r
+/// You should have received a copy of the GNU Lesser General Public\r
+/// License along with this library; if not, write to the Free Software\r
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301\r
+/// USA\r
+/// </summary>\r
+using System;\r
+using System.Collections;\r
+using System.Text;\r
+\r
+namespace gnu.inet.encoding.misc\r
+{\r
+    /// <summary>\r
+    /// The class performs token processing in strings\r
+    /// </summary>\r
+    public class Tokenizer : IEnumerator\r
+    {\r
+        /// Position over the string\r
+        private long currentPos = 0;\r
+\r
+        /// Include demiliters in the results.\r
+        private bool includeDelims = false;\r
+\r
+        /// Char representation of the String to tokenize.\r
+        private char[] chars = null;\r
+\r
+        //The tokenizer uses the default delimiter set: the space character, the tab character, the newline character, and the carriage-return character and the form-feed character\r
+        private string delimiters = " \t\n\r\f";\r
+\r
+        /// <summary>\r
+        /// Initializes a new class instance with a specified string to process\r
+        /// </summary>\r
+        /// <param name="source">String to tokenize</param>\r
+        public Tokenizer(string source)\r
+        {\r
+            this.chars = source.ToCharArray();\r
+        }\r
+\r
+        /// <summary>\r
+        /// Initializes a new class instance with a specified string to process\r
+        /// and the specified token delimiters to use\r
+        /// </summary>\r
+        /// <param name="source">String to tokenize</param>\r
+        /// <param name="delimiters">String containing the delimiters</param>\r
+        public Tokenizer(string source, string delimiters)\r
+            : this(source)\r
+        {\r
+            this.delimiters = delimiters;\r
+        }\r
+\r
+\r
+        /// <summary>\r
+        /// Initializes a new class instance with a specified string to process, the specified token \r
+        /// delimiters to use, and whether the delimiters must be included in the results.\r
+        /// </summary>\r
+        /// <param name="source">String to tokenize</param>\r
+        /// <param name="delimiters">String containing the delimiters</param>\r
+        /// <param name="includeDelims">Determines if delimiters are included in the results.</param>\r
+        public Tokenizer(string source, string delimiters, bool includeDelims)\r
+            : this(source, delimiters)\r
+        {\r
+            this.includeDelims = includeDelims;\r
+        }\r
+\r
+\r
+        /// <summary>\r
+        /// Returns the next token from the token list\r
+        /// </summary>\r
+        /// <returns>The string value of the token</returns>\r
+        public string NextToken()\r
+        {\r
+            return NextToken(this.delimiters);\r
+        }\r
+\r
+        /// <summary>\r
+        /// Returns the next token from the source string, using the provided\r
+        /// token delimiters\r
+        /// </summary>\r
+        /// <param name="delimiters">String containing the delimiters to use</param>\r
+        /// <returns>The string value of the token</returns>\r
+        public string NextToken(string delimiters)\r
+        {\r
+            //According to documentation, the usage of the received delimiters should be temporary (only for this call).\r
+            //However, it seems it is not true, so the following line is necessary.\r
+            this.delimiters = delimiters;\r
+\r
+            //at the end \r
+            if (this.currentPos == this.chars.Length)\r
+                throw new System.ArgumentOutOfRangeException();\r
+            //if over a delimiter and delimiters must be returned\r
+            else if ((System.Array.IndexOf(delimiters.ToCharArray(), chars[this.currentPos]) != -1)\r
+                     && this.includeDelims)\r
+                return "" + this.chars[this.currentPos++];\r
+            //need to get the token wo delimiters.\r
+            else\r
+                return nextToken(delimiters.ToCharArray());\r
+        }\r
+\r
+        //Returns the nextToken wo delimiters\r
+        private string nextToken(char[] delimiters)\r
+        {\r
+            string token = "";\r
+            long pos = this.currentPos;\r
+\r
+            //skip possible delimiters\r
+            while (System.Array.IndexOf(delimiters, this.chars[currentPos]) != -1)\r
+                //The last one is a delimiter (i.e there is no more tokens)\r
+                if (++this.currentPos == this.chars.Length)\r
+                {\r
+                    this.currentPos = pos;\r
+                    throw new System.ArgumentOutOfRangeException();\r
+                }\r
+\r
+            //getting the token\r
+            while (System.Array.IndexOf(delimiters, this.chars[this.currentPos]) == -1)\r
+            {\r
+               // don't use += to work around bug in compiler\r
+               // see https://bugzilla.novell.com/show_bug.cgi?id=372483\r
+                token = token + this.chars[this.currentPos];\r
+                //the last one is not a delimiter\r
+                if (++this.currentPos == this.chars.Length)\r
+                    break;\r
+            }\r
+            return token;\r
+        }\r
+\r
+\r
+        /// <summary>\r
+        /// Determines if there are more tokens to return from the source string\r
+        /// </summary>\r
+        /// <returns>True or false, depending if there are more tokens</returns>\r
+        public bool HasMoreTokens()\r
+        {\r
+            //keeping the current pos\r
+            long pos = this.currentPos;\r
+\r
+            try\r
+            {\r
+                this.NextToken();\r
+            }\r
+            catch (System.ArgumentOutOfRangeException)\r
+            {\r
+                return false;\r
+            }\r
+            finally\r
+            {\r
+                this.currentPos = pos;\r
+            }\r
+            return true;\r
+        }\r
+\r
+        /// <summary>\r
+        /// Remaining tokens count\r
+        /// </summary>\r
+        public int Count\r
+        {\r
+            get\r
+            {\r
+                //keeping the current pos\r
+                long pos = this.currentPos;\r
+                int i = 0;\r
+\r
+                try\r
+                {\r
+                    while (true)\r
+                    {\r
+                        this.NextToken();\r
+                        i++;\r
+                    }\r
+                }\r
+                catch (System.ArgumentOutOfRangeException)\r
+                {\r
+                    this.currentPos = pos;\r
+                    return i;\r
+                }\r
+            }\r
+        }\r
+\r
+        /// <summary>\r
+        ///  Performs the same action as NextToken.\r
+        /// </summary>\r
+        public System.Object Current\r
+        {\r
+            get\r
+            {\r
+                return (Object)this.NextToken();\r
+            }\r
+        }\r
+\r
+        /// <summary>\r
+        //  Performs the same action as HasMoreTokens.\r
+        /// </summary>\r
+        /// <returns>True or false, depending if there are more tokens</returns>\r
+        public bool MoveNext()\r
+        {\r
+            return this.HasMoreTokens();\r
+        }\r
+\r
+        /// <summary>\r
+        /// Does nothing.\r
+        /// </summary>\r
+        public void Reset()\r
+        {\r
+            ;\r
+        }\r
+    }\r
+}
\ No newline at end of file
diff --git a/csharp/libidn.csproj b/csharp/libidn.csproj
new file mode 100644 (file)
index 0000000..3f0be5b
--- /dev/null
@@ -0,0 +1,59 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" xmlns:Conversion="urn:Conversion">\r
+  <PropertyGroup>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{BED43666-B1A2-486D-871C-A65A2A925764}</ProjectGuid>\r
+    <RootNamespace />\r
+    <AssemblyName>libidn</AssemblyName>\r
+    <OutputType>Library</OutputType>\r
+    <ApplicationIcon />\r
+    <WarningLevel>1</WarningLevel>\r
+    <NoWarn />\r
+    <StartupObject />\r
+    <NoStdLib>False</NoStdLib>\r
+    <NoConfig>False</NoConfig>\r
+    <RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>\r
+    <PreBuildEvent />\r
+    <PostBuildEvent />\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>True</DebugSymbols>\r
+    <Optimize>False</Optimize>\r
+    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\r
+    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>\r
+    <DefineConstants />\r
+    <OutputPath>bin\Debug\</OutputPath>\r
+    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugSymbols>False</DebugSymbols>\r
+    <Optimize>False</Optimize>\r
+    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>\r
+    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>\r
+    <DefineConstants />\r
+    <OutputPath>bin\Release\</OutputPath>\r
+    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <Reference Include="System" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Compile Include="AssemblyInfo.cs" />\r
+    <Compile Include="CombiningClass.cs" />\r
+    <Compile Include="Composition.cs" />\r
+    <Compile Include="DecompositionKeys.cs" />\r
+    <Compile Include="DecompositionMappings.cs" />\r
+    <Compile Include="IDNA.cs" />\r
+    <Compile Include="IDNAException.cs" />\r
+    <Compile Include="NFKC.cs" />\r
+    <Compile Include="Punycode.cs" />\r
+    <Compile Include="PunycodeException.cs" />\r
+    <Compile Include="RFC3454.cs" />\r
+    <Compile Include="Stringprep.cs" />\r
+    <Compile Include="StringprepException.cs" />\r
+  </ItemGroup>\r
+  <ItemGroup />\r
+  <ItemGroup />\r
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />\r
+</Project>
\ No newline at end of file
diff --git a/csharp/libidn.csproj.user b/csharp/libidn.csproj.user
new file mode 100644 (file)
index 0000000..1126ff8
--- /dev/null
@@ -0,0 +1,10 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" xmlns:Conversion="urn:Conversion">\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <StartProgram />\r
+    <StartArguments />\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <StartProgram />\r
+    <StartArguments />\r
+  </PropertyGroup>\r
+</Project>
\ No newline at end of file
diff --git a/csharp/libidn.sln b/csharp/libidn.sln
new file mode 100644 (file)
index 0000000..a5cf359
--- /dev/null
@@ -0,0 +1,18 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 9.00\r
+# Visual Studio 2005\r
+# SharpDevelop 2.1.0.2376\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "libidn", "libidn.csproj", "{BED43666-B1A2-486D-871C-A65A2A925764}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Any CPU = Debug|Any CPU\r
+               Release|Any CPU = Release|Any CPU\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {BED43666-B1A2-486D-871C-A65A2A925764}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {BED43666-B1A2-486D-871C-A65A2A925764}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {BED43666-B1A2-486D-871C-A65A2A925764}.Release|Any CPU.Build.0 = Release|Any CPU\r
+               {BED43666-B1A2-486D-871C-A65A2A925764}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/csharp/libidn.suo b/csharp/libidn.suo
new file mode 100644 (file)
index 0000000..1de2971
Binary files /dev/null and b/csharp/libidn.suo differ
diff --git a/csharp/libidn_PPC.csdproj b/csharp/libidn_PPC.csdproj
new file mode 100644 (file)
index 0000000..46aa649
--- /dev/null
@@ -0,0 +1,186 @@
+<VisualStudioProject>\r
+    <ECSHARP\r
+        ProjectType = "Local"\r
+        ProductVersion = "7.10.3077"\r
+        SchemaVersion = "1.0"\r
+        ProjectGuid = "{D890E339-5F13-482B-BD29-C0ED806F41BD}"\r
+    >\r
+        <Build>\r
+            <Settings\r
+                ApplicationIcon = ""\r
+                AssemblyKeyContainerName = ""\r
+                AssemblyName = "libidn_PPC"\r
+                AssemblyOriginatorKeyFile = ""\r
+                DelaySign = "false"\r
+                OutputType = "Library"\r
+                OutputFileFolder = "\Program Files\libidn_PPC"\r
+                RootNamespace = "libidn_PPC"\r
+                StartupObject = ""\r
+            >\r
+                <Platform Name = "Pocket PC" />\r
+                <Config\r
+                    Name = "Debug|Pocket PC"\r
+                    AllowUnsafeBlocks = "false"\r
+                    BaseAddress = "0"\r
+                    CheckForOverflowUnderflow = "false"\r
+                    ConfigurationOverrideFile = ""\r
+                    DefineConstants = "DEBUG;TRACE"\r
+                    DocumentationFile = ""\r
+                    DebugSymbols = "true"\r
+                    FileAlignment = "4096"\r
+                    IncrementalBuild = "false"\r
+                    Optimize = "false"\r
+                    OutputPath = "bin\Debug\"\r
+                    RegisterForComInterop = "false"\r
+                    RemoveIntegerChecks = "false"\r
+                    TreatWarningsAsErrors = "false"\r
+                    WarningLevel = "4"\r
+                />\r
+                <Config\r
+                    Name = "Release|Pocket PC"\r
+                    AllowUnsafeBlocks = "false"\r
+                    BaseAddress = "0"\r
+                    CheckForOverflowUnderflow = "false"\r
+                    ConfigurationOverrideFile = ""\r
+                    DefineConstants = "TRACE"\r
+                    DocumentationFile = ""\r
+                    DebugSymbols = "false"\r
+                    FileAlignment = "4096"\r
+                    IncrementalBuild = "false"\r
+                    Optimize = "true"\r
+                    OutputPath = "bin\Release\"\r
+                    RegisterForComInterop = "false"\r
+                    RemoveIntegerChecks = "false"\r
+                    TreatWarningsAsErrors = "false"\r
+                    WarningLevel = "4"\r
+                />\r
+            </Settings>\r
+            <References>\r
+                <Reference\r
+                    Platform = "Pocket PC"\r
+                    Name = "MSCorLib"\r
+                    AssemblyName = "mscorlib"\r
+                    Private = "False"\r
+                />\r
+                <Reference\r
+                    Platform = "Pocket PC"\r
+                    Name = "System"\r
+                    AssemblyName = "System"\r
+                    Private = "False"\r
+                />\r
+                <Reference\r
+                    Platform = "Pocket PC"\r
+                    Name = "System.XML"\r
+                    AssemblyName = "System.Xml"\r
+                    Private = "False"\r
+                />\r
+                <Reference\r
+                    Platform = "Pocket PC"\r
+                    Name = "System.Data"\r
+                    AssemblyName = "System.Data"\r
+                    Private = "False"\r
+                />\r
+                <Reference\r
+                    Platform = "Pocket PC-Designer"\r
+                    Name = "System.CF.Design"\r
+                    AssemblyName = "System.CF.Design"\r
+                    Private = "False"\r
+                />\r
+                <Reference\r
+                    Platform = "Pocket PC-Designer"\r
+                    Name = "System.CF.Design.UI"\r
+                    AssemblyName = "System.CF.Design.UI"\r
+                    Private = "False"\r
+                />\r
+                <Reference\r
+                    Platform = "Pocket PC-Designer"\r
+                    Name = "System.CF.Windows.Forms"\r
+                    AssemblyName = "System.CF.Windows.Forms"\r
+                    Private = "False"\r
+                />\r
+                <Reference\r
+                    Platform = "Pocket PC-Designer"\r
+                    Name = "System.CF.Drawing"\r
+                    AssemblyName = "System.CF.Drawing"\r
+                    Private = "False"\r
+                />\r
+                <Reference\r
+                    Platform = "Pocket PC-Designer"\r
+                    Name = "System"\r
+                    AssemblyName = "System"\r
+                    Private = "False"\r
+                />\r
+            </References>\r
+        </Build>\r
+        <Files>\r
+            <Include>\r
+                <File\r
+                    RelPath = "AssemblyInfo.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "CombiningClass.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "Composition.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "DecompositionKeys.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "DecompositionMappings.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "IDNA.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "IDNAException.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "NFKC.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "Punycode.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "PunycodeException.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "RFC3454.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "Stringprep.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+                <File\r
+                    RelPath = "StringprepException.cs"\r
+                    SubType = "Code"\r
+                    BuildAction = "Compile"\r
+                />\r
+            </Include>\r
+        </Files>\r
+    </ECSHARP>\r
+</VisualStudioProject>\r
+\r
diff --git a/csharp/libidn_PPC.csdproj.user b/csharp/libidn_PPC.csdproj.user
new file mode 100644 (file)
index 0000000..f681a81
--- /dev/null
@@ -0,0 +1,55 @@
+<VisualStudioProject>\r
+    <ECSHARP>\r
+        <Build>\r
+            <Settings\r
+                DeploymentDevice = "Same as device of consuming project"\r
+                ReferencePath = ""\r
+            >\r
+                <Platform Name = "Pocket PC" />\r
+                <Config\r
+                    Name = "Debug|Pocket PC"\r
+                    EnableASPDebugging = "false"\r
+                    EnableASPXDebugging = "false"\r
+                    EnableUnmanagedDebugging = "false"\r
+                    EnableSQLServerDebugging = "false"\r
+                    RemoteDebugEnabled = "true"\r
+                    RemoteDebugMachine = ""\r
+                    StartAction = "Project"\r
+                    StartArguments = ""\r
+                    StartPage = ""\r
+                    StartProgram = ""\r
+                    StartURL = ""\r
+                    StartWorkingDirectory = ""\r
+                    StartWithIE = "true"\r
+                    SelectedDevice = "Same as device of consuming project"\r
+                    DeploymentPlatform = "Pocket PC"\r
+                />\r
+                <Config\r
+                    Name = "Release|Pocket PC"\r
+                    EnableASPDebugging = "false"\r
+                    EnableASPXDebugging = "false"\r
+                    EnableUnmanagedDebugging = "false"\r
+                    EnableSQLServerDebugging = "false"\r
+                    RemoteDebugEnabled = "true"\r
+                    RemoteDebugMachine = ""\r
+                    StartAction = "Project"\r
+                    StartArguments = ""\r
+                    StartPage = ""\r
+                    StartProgram = ""\r
+                    StartURL = ""\r
+                    StartWorkingDirectory = ""\r
+                    StartWithIE = "false"\r
+                    SelectedDevice = "Same as device of consuming project"\r
+                    DeploymentPlatform = "Pocket PC"\r
+                />\r
+            </Settings>\r
+        </Build>\r
+        <OtherProjectSettings\r
+            CopyProjectDestinationFolder = ""\r
+            CopyProjectUncPath = ""\r
+            CopyProjectOption = "0"\r
+            ProjectView = "ProjectFiles"\r
+        />\r
+    </ECSHARP>\r
+</VisualStudioProject>\r
+\r
diff --git a/csharp/libidn_PPC.sln b/csharp/libidn_PPC.sln
new file mode 100644 (file)
index 0000000..955a418
--- /dev/null
@@ -0,0 +1,23 @@
+Microsoft Visual Studio Solution File, Format Version 8.00\r
+Project("{20D4826A-C6FA-45DB-90F4-C717570B9F32}") = "libidn_PPC", "libidn_PPC.csdproj", "{D890E339-5F13-482B-BD29-C0ED806F41BD}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+       EndProjectSection\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfiguration) = preSolution\r
+               Debug = Debug\r
+               Release = Release\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfiguration) = postSolution\r
+               {D890E339-5F13-482B-BD29-C0ED806F41BD}.Debug.ActiveCfg = Debug|Pocket PC\r
+               {D890E339-5F13-482B-BD29-C0ED806F41BD}.Debug.Build.0 = Debug|Pocket PC\r
+               {D890E339-5F13-482B-BD29-C0ED806F41BD}.Debug.Deploy.0 = Debug|Pocket PC\r
+               {D890E339-5F13-482B-BD29-C0ED806F41BD}.Release.ActiveCfg = Release|Pocket PC\r
+               {D890E339-5F13-482B-BD29-C0ED806F41BD}.Release.Build.0 = Release|Pocket PC\r
+               {D890E339-5F13-482B-BD29-C0ED806F41BD}.Release.Deploy.0 = Release|Pocket PC\r
+       EndGlobalSection\r
+       GlobalSection(ExtensibilityGlobals) = postSolution\r
+       EndGlobalSection\r
+       GlobalSection(ExtensibilityAddIns) = postSolution\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/csharp/libidn_PPC.suo b/csharp/libidn_PPC.suo
new file mode 100644 (file)
index 0000000..f9e135a
Binary files /dev/null and b/csharp/libidn_PPC.suo differ
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644 (file)
index 0000000..1e3c040
--- /dev/null
@@ -0,0 +1,77 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+SUBDIRS = specifications tld java cyclo
+if ENABLE_GTK_DOC
+SUBDIRS += . reference
+endif
+
+EXTRA_DIST = gdoc libidn.html libidn.ps libidn.pdf texinfo.css \
+       components.fig
+
+info_TEXINFOS = libidn.texi
+libidn_TEXINFOS = fdl-1.3.texi gpl-3.0.texi lgpl-2.1.texi $(gdoc_TEXINFOS) \
+       libidn-components.eps libidn-components.png libidn-components.pdf
+
+imagesdir = $(infodir)
+images_DATA = libidn-components.png
+
+libidn-components.eps: components.fig
+       fig2dev -L eps $< $@
+
+libidn-components.png: components.fig
+       fig2dev -L png $< $@
+
+libidn-components.pdf: components.fig
+       fig2dev -L pdf $< $@
+
+AM_MAKEINFOFLAGS = -I $(top_builddir)/doc -I $(top_srcdir)/examples
+TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS)
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \
+       --no-split --number-sections --css-include=texinfo.css
+
+# Man pages.
+
+dist_man_MANS = idn.1 $(gdoc_MANS)
+MAINTAINERCLEANFILES = $(dist_man_MANS)
+
+idn.1: $(top_srcdir)/src/idn.c $(top_srcdir)/src/idn.ggo \
+               $(top_srcdir)/configure.ac
+       $(HELP2MAN) \
+               --name="Internationalized Domain Names command line tool" \
+               --output=$@ $(top_builddir)/src/idn$(EXEEXT)
+
+# GDOC
+
+GDOC_SRC = $(top_srcdir)/lib/idna.c $(top_srcdir)/lib/nfkc.c   \
+       $(top_srcdir)/lib/pr29.c $(top_srcdir)/lib/punycode.c   \
+       $(top_srcdir)/lib/stringprep.c $(top_srcdir)/lib/tld.c  \
+       $(top_srcdir)/lib/toutf8.c $(top_srcdir)/lib/version.c \
+       $(top_srcdir)/lib/idn-free.c \
+       $(top_srcdir)/lib/strerror-idna.c $(top_srcdir)/lib/strerror-pr29.c \
+       $(top_srcdir)/lib/strerror-punycode.c \
+       $(top_srcdir)/lib/strerror-stringprep.c \
+       $(top_srcdir)/lib/strerror-tld.c
+GDOC_TEXI_PREFIX = texi/
+GDOC_MAN_PREFIX = man/
+GDOC_MAN_EXTRA_ARGS = -module $(PACKAGE) -sourceversion $(VERSION) \
+       -bugsto $(PACKAGE_BUGREPORT) -pkg-name "$(PACKAGE_NAME)" \
+       -includefuncprefix -seeinfo $(PACKAGE) \
+       -copyright "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson" \
+       -verbatimcopying
+include $(srcdir)/Makefile.gdoci
diff --git a/doc/Makefile.gdoc b/doc/Makefile.gdoc
new file mode 100644 (file)
index 0000000..eb305bd
--- /dev/null
@@ -0,0 +1,648 @@
+# This file is automatically generated.  DO NOT EDIT!          -*- makefile -*-
+
+gdoc_TEXINFOS =
+gdoc_MANS =
+
+#
+### idna.c
+#
+gdoc_TEXINFOS += texi/idna.c.texi
+texi/idna.c.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# idna.c: idna_to_ascii_4i
+gdoc_TEXINFOS += texi/idna_to_ascii_4i.texi
+texi/idna_to_ascii_4i.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@
+
+gdoc_MANS += man/idna_to_ascii_4i.3
+man/idna_to_ascii_4i.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@
+
+# idna.c: idna_to_unicode_44i
+gdoc_TEXINFOS += texi/idna_to_unicode_44i.texi
+texi/idna_to_unicode_44i.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@
+
+gdoc_MANS += man/idna_to_unicode_44i.3
+man/idna_to_unicode_44i.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@
+
+# idna.c: idna_to_ascii_4z
+gdoc_TEXINFOS += texi/idna_to_ascii_4z.texi
+texi/idna_to_ascii_4z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@
+
+gdoc_MANS += man/idna_to_ascii_4z.3
+man/idna_to_ascii_4z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@
+
+# idna.c: idna_to_ascii_8z
+gdoc_TEXINFOS += texi/idna_to_ascii_8z.texi
+texi/idna_to_ascii_8z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@
+
+gdoc_MANS += man/idna_to_ascii_8z.3
+man/idna_to_ascii_8z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@
+
+# idna.c: idna_to_ascii_lz
+gdoc_TEXINFOS += texi/idna_to_ascii_lz.texi
+texi/idna_to_ascii_lz.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@
+
+gdoc_MANS += man/idna_to_ascii_lz.3
+man/idna_to_ascii_lz.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@
+
+# idna.c: idna_to_unicode_4z4z
+gdoc_TEXINFOS += texi/idna_to_unicode_4z4z.texi
+texi/idna_to_unicode_4z4z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@
+
+gdoc_MANS += man/idna_to_unicode_4z4z.3
+man/idna_to_unicode_4z4z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@
+
+# idna.c: idna_to_unicode_8z4z
+gdoc_TEXINFOS += texi/idna_to_unicode_8z4z.texi
+texi/idna_to_unicode_8z4z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@
+
+gdoc_MANS += man/idna_to_unicode_8z4z.3
+man/idna_to_unicode_8z4z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@
+
+# idna.c: idna_to_unicode_8z8z
+gdoc_TEXINFOS += texi/idna_to_unicode_8z8z.texi
+texi/idna_to_unicode_8z8z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@
+
+gdoc_MANS += man/idna_to_unicode_8z8z.3
+man/idna_to_unicode_8z8z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@
+
+# idna.c: idna_to_unicode_8zlz
+gdoc_TEXINFOS += texi/idna_to_unicode_8zlz.texi
+texi/idna_to_unicode_8zlz.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@
+
+gdoc_MANS += man/idna_to_unicode_8zlz.3
+man/idna_to_unicode_8zlz.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@
+
+# idna.c: idna_to_unicode_lzlz
+gdoc_TEXINFOS += texi/idna_to_unicode_lzlz.texi
+texi/idna_to_unicode_lzlz.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@
+
+gdoc_MANS += man/idna_to_unicode_lzlz.3
+man/idna_to_unicode_lzlz.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@
+
+
+#
+### nfkc.c
+#
+gdoc_TEXINFOS += texi/nfkc.c.texi
+texi/nfkc.c.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# nfkc.c: stringprep_utf8_to_unichar
+gdoc_TEXINFOS += texi/stringprep_utf8_to_unichar.texi
+texi/stringprep_utf8_to_unichar.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@
+
+gdoc_MANS += man/stringprep_utf8_to_unichar.3
+man/stringprep_utf8_to_unichar.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@
+
+# nfkc.c: stringprep_unichar_to_utf8
+gdoc_TEXINFOS += texi/stringprep_unichar_to_utf8.texi
+texi/stringprep_unichar_to_utf8.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@
+
+gdoc_MANS += man/stringprep_unichar_to_utf8.3
+man/stringprep_unichar_to_utf8.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@
+
+# nfkc.c: stringprep_utf8_to_ucs4
+gdoc_TEXINFOS += texi/stringprep_utf8_to_ucs4.texi
+texi/stringprep_utf8_to_ucs4.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@
+
+gdoc_MANS += man/stringprep_utf8_to_ucs4.3
+man/stringprep_utf8_to_ucs4.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@
+
+# nfkc.c: stringprep_ucs4_to_utf8
+gdoc_TEXINFOS += texi/stringprep_ucs4_to_utf8.texi
+texi/stringprep_ucs4_to_utf8.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@
+
+gdoc_MANS += man/stringprep_ucs4_to_utf8.3
+man/stringprep_ucs4_to_utf8.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@
+
+# nfkc.c: stringprep_utf8_nfkc_normalize
+gdoc_TEXINFOS += texi/stringprep_utf8_nfkc_normalize.texi
+texi/stringprep_utf8_nfkc_normalize.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@
+
+gdoc_MANS += man/stringprep_utf8_nfkc_normalize.3
+man/stringprep_utf8_nfkc_normalize.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@
+
+# nfkc.c: stringprep_ucs4_nfkc_normalize
+gdoc_TEXINFOS += texi/stringprep_ucs4_nfkc_normalize.texi
+texi/stringprep_ucs4_nfkc_normalize.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@
+
+gdoc_MANS += man/stringprep_ucs4_nfkc_normalize.3
+man/stringprep_ucs4_nfkc_normalize.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@
+
+
+#
+### pr29.c
+#
+gdoc_TEXINFOS += texi/pr29.c.texi
+texi/pr29.c.texi: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# pr29.c: pr29_4
+gdoc_TEXINFOS += texi/pr29_4.texi
+texi/pr29_4.texi: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4 $< > $@
+
+gdoc_MANS += man/pr29_4.3
+man/pr29_4.3: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4 $< > $@
+
+# pr29.c: pr29_4z
+gdoc_TEXINFOS += texi/pr29_4z.texi
+texi/pr29_4z.texi: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4z $< > $@
+
+gdoc_MANS += man/pr29_4z.3
+man/pr29_4z.3: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4z $< > $@
+
+# pr29.c: pr29_8z
+gdoc_TEXINFOS += texi/pr29_8z.texi
+texi/pr29_8z.texi: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_8z $< > $@
+
+gdoc_MANS += man/pr29_8z.3
+man/pr29_8z.3: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_8z $< > $@
+
+
+#
+### punycode.c
+#
+gdoc_TEXINFOS += texi/punycode.c.texi
+texi/punycode.c.texi: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# punycode.c: punycode_encode
+gdoc_TEXINFOS += texi/punycode_encode.texi
+texi/punycode_encode.texi: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_encode $< > $@
+
+gdoc_MANS += man/punycode_encode.3
+man/punycode_encode.3: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_encode $< > $@
+
+# punycode.c: punycode_decode
+gdoc_TEXINFOS += texi/punycode_decode.texi
+texi/punycode_decode.texi: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_decode $< > $@
+
+gdoc_MANS += man/punycode_decode.3
+man/punycode_decode.3: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_decode $< > $@
+
+
+#
+### stringprep.c
+#
+gdoc_TEXINFOS += texi/stringprep.c.texi
+texi/stringprep.c.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# stringprep.c: stringprep_4i
+gdoc_TEXINFOS += texi/stringprep_4i.texi
+texi/stringprep_4i.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4i $< > $@
+
+gdoc_MANS += man/stringprep_4i.3
+man/stringprep_4i.3: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4i $< > $@
+
+# stringprep.c: stringprep_4zi
+gdoc_TEXINFOS += texi/stringprep_4zi.texi
+texi/stringprep_4zi.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4zi $< > $@
+
+gdoc_MANS += man/stringprep_4zi.3
+man/stringprep_4zi.3: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4zi $< > $@
+
+# stringprep.c: stringprep
+gdoc_TEXINFOS += texi/stringprep.texi
+texi/stringprep.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep $< > $@
+
+gdoc_MANS += man/stringprep.3
+man/stringprep.3: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep $< > $@
+
+# stringprep.c: stringprep_profile
+gdoc_TEXINFOS += texi/stringprep_profile.texi
+texi/stringprep_profile.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_profile $< > $@
+
+gdoc_MANS += man/stringprep_profile.3
+man/stringprep_profile.3: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_profile $< > $@
+
+
+#
+### tld.c
+#
+gdoc_TEXINFOS += texi/tld.c.texi
+texi/tld.c.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# tld.c: tld_get_table
+gdoc_TEXINFOS += texi/tld_get_table.texi
+texi/tld_get_table.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_table $< > $@
+
+gdoc_MANS += man/tld_get_table.3
+man/tld_get_table.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_table $< > $@
+
+# tld.c: tld_default_table
+gdoc_TEXINFOS += texi/tld_default_table.texi
+texi/tld_default_table.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_default_table $< > $@
+
+gdoc_MANS += man/tld_default_table.3
+man/tld_default_table.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_default_table $< > $@
+
+# tld.c: tld_get_4
+gdoc_TEXINFOS += texi/tld_get_4.texi
+texi/tld_get_4.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4 $< > $@
+
+gdoc_MANS += man/tld_get_4.3
+man/tld_get_4.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4 $< > $@
+
+# tld.c: tld_get_4z
+gdoc_TEXINFOS += texi/tld_get_4z.texi
+texi/tld_get_4z.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4z $< > $@
+
+gdoc_MANS += man/tld_get_4z.3
+man/tld_get_4z.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4z $< > $@
+
+# tld.c: tld_get_z
+gdoc_TEXINFOS += texi/tld_get_z.texi
+texi/tld_get_z.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_z $< > $@
+
+gdoc_MANS += man/tld_get_z.3
+man/tld_get_z.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_z $< > $@
+
+# tld.c: tld_check_4t
+gdoc_TEXINFOS += texi/tld_check_4t.texi
+texi/tld_check_4t.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4t $< > $@
+
+gdoc_MANS += man/tld_check_4t.3
+man/tld_check_4t.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4t $< > $@
+
+# tld.c: tld_check_4tz
+gdoc_TEXINFOS += texi/tld_check_4tz.texi
+texi/tld_check_4tz.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4tz $< > $@
+
+gdoc_MANS += man/tld_check_4tz.3
+man/tld_check_4tz.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4tz $< > $@
+
+# tld.c: tld_check_4
+gdoc_TEXINFOS += texi/tld_check_4.texi
+texi/tld_check_4.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4 $< > $@
+
+gdoc_MANS += man/tld_check_4.3
+man/tld_check_4.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4 $< > $@
+
+# tld.c: tld_check_4z
+gdoc_TEXINFOS += texi/tld_check_4z.texi
+texi/tld_check_4z.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4z $< > $@
+
+gdoc_MANS += man/tld_check_4z.3
+man/tld_check_4z.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4z $< > $@
+
+# tld.c: tld_check_8z
+gdoc_TEXINFOS += texi/tld_check_8z.texi
+texi/tld_check_8z.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_8z $< > $@
+
+gdoc_MANS += man/tld_check_8z.3
+man/tld_check_8z.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_8z $< > $@
+
+# tld.c: tld_check_lz
+gdoc_TEXINFOS += texi/tld_check_lz.texi
+texi/tld_check_lz.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_lz $< > $@
+
+gdoc_MANS += man/tld_check_lz.3
+man/tld_check_lz.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_lz $< > $@
+
+
+#
+### toutf8.c
+#
+gdoc_TEXINFOS += texi/toutf8.c.texi
+texi/toutf8.c.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# toutf8.c: stringprep_locale_charset
+gdoc_TEXINFOS += texi/stringprep_locale_charset.texi
+texi/stringprep_locale_charset.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_charset $< > $@
+
+gdoc_MANS += man/stringprep_locale_charset.3
+man/stringprep_locale_charset.3: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_charset $< > $@
+
+# toutf8.c: stringprep_convert
+gdoc_TEXINFOS += texi/stringprep_convert.texi
+texi/stringprep_convert.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_convert $< > $@
+
+gdoc_MANS += man/stringprep_convert.3
+man/stringprep_convert.3: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_convert $< > $@
+
+# toutf8.c: stringprep_locale_to_utf8
+gdoc_TEXINFOS += texi/stringprep_locale_to_utf8.texi
+texi/stringprep_locale_to_utf8.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@
+
+gdoc_MANS += man/stringprep_locale_to_utf8.3
+man/stringprep_locale_to_utf8.3: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@
+
+# toutf8.c: stringprep_utf8_to_locale
+gdoc_TEXINFOS += texi/stringprep_utf8_to_locale.texi
+texi/stringprep_utf8_to_locale.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@
+
+gdoc_MANS += man/stringprep_utf8_to_locale.3
+man/stringprep_utf8_to_locale.3: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@
+
+
+#
+### version.c
+#
+gdoc_TEXINFOS += texi/version.c.texi
+texi/version.c.texi: ../lib/version.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# version.c: stringprep_check_version
+gdoc_TEXINFOS += texi/stringprep_check_version.texi
+texi/stringprep_check_version.texi: ../lib/version.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_check_version $< > $@
+
+gdoc_MANS += man/stringprep_check_version.3
+man/stringprep_check_version.3: ../lib/version.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_check_version $< > $@
+
+
+#
+### idn-free.c
+#
+gdoc_TEXINFOS += texi/idn-free.c.texi
+texi/idn-free.c.texi: ../lib/idn-free.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# idn-free.c: idn_free
+gdoc_TEXINFOS += texi/idn_free.texi
+texi/idn_free.texi: ../lib/idn-free.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idn_free $< > $@
+
+gdoc_MANS += man/idn_free.3
+man/idn_free.3: ../lib/idn-free.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idn_free $< > $@
+
+
+#
+### strerror-idna.c
+#
+gdoc_TEXINFOS += texi/strerror-idna.c.texi
+texi/strerror-idna.c.texi: ../lib/strerror-idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# strerror-idna.c: idna_strerror
+gdoc_TEXINFOS += texi/idna_strerror.texi
+texi/idna_strerror.texi: ../lib/strerror-idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_strerror $< > $@
+
+gdoc_MANS += man/idna_strerror.3
+man/idna_strerror.3: ../lib/strerror-idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_strerror $< > $@
+
+
+#
+### strerror-pr29.c
+#
+gdoc_TEXINFOS += texi/strerror-pr29.c.texi
+texi/strerror-pr29.c.texi: ../lib/strerror-pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# strerror-pr29.c: pr29_strerror
+gdoc_TEXINFOS += texi/pr29_strerror.texi
+texi/pr29_strerror.texi: ../lib/strerror-pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_strerror $< > $@
+
+gdoc_MANS += man/pr29_strerror.3
+man/pr29_strerror.3: ../lib/strerror-pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_strerror $< > $@
+
+
+#
+### strerror-punycode.c
+#
+gdoc_TEXINFOS += texi/strerror-punycode.c.texi
+texi/strerror-punycode.c.texi: ../lib/strerror-punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# strerror-punycode.c: punycode_strerror
+gdoc_TEXINFOS += texi/punycode_strerror.texi
+texi/punycode_strerror.texi: ../lib/strerror-punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_strerror $< > $@
+
+gdoc_MANS += man/punycode_strerror.3
+man/punycode_strerror.3: ../lib/strerror-punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_strerror $< > $@
+
+
+#
+### strerror-stringprep.c
+#
+gdoc_TEXINFOS += texi/strerror-stringprep.c.texi
+texi/strerror-stringprep.c.texi: ../lib/strerror-stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# strerror-stringprep.c: stringprep_strerror
+gdoc_TEXINFOS += texi/stringprep_strerror.texi
+texi/stringprep_strerror.texi: ../lib/strerror-stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_strerror $< > $@
+
+gdoc_MANS += man/stringprep_strerror.3
+man/stringprep_strerror.3: ../lib/strerror-stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_strerror $< > $@
+
+
+#
+### strerror-tld.c
+#
+gdoc_TEXINFOS += texi/strerror-tld.c.texi
+texi/strerror-tld.c.texi: ../lib/strerror-tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+
+# strerror-tld.c: tld_strerror
+gdoc_TEXINFOS += texi/tld_strerror.texi
+texi/tld_strerror.texi: ../lib/strerror-tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_strerror $< > $@
+
+gdoc_MANS += man/tld_strerror.3
+man/tld_strerror.3: ../lib/strerror-tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_strerror $< > $@
+
+
diff --git a/doc/Makefile.gdoci b/doc/Makefile.gdoci
new file mode 100644 (file)
index 0000000..b1f43f4
--- /dev/null
@@ -0,0 +1,55 @@
+# -*- makefile -*-
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+BUILT_SOURCES = Makefile.gdoc
+
+Makefile.gdoc: $(top_builddir)/configure Makefile.am Makefile.gdoci $(GDOC_SRC)
+       echo '# This file is automatically generated.  DO NOT EDIT!          -*- makefile -*-' > Makefile.gdoc
+       echo >> Makefile.gdoc
+       echo 'gdoc_TEXINFOS =' >> Makefile.gdoc
+       echo 'gdoc_MANS =' >> Makefile.gdoc
+       echo >> Makefile.gdoc
+       for file in $(GDOC_SRC); do \
+         shortfile=`basename $$file`; \
+         echo "#" >> Makefile.gdoc; \
+         echo "### $$shortfile" >> Makefile.gdoc; \
+         echo "#" >> Makefile.gdoc; \
+         echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$shortfile.texi" >> Makefile.gdoc; \
+         echo "$(GDOC_TEXI_PREFIX)$$shortfile.texi: $$file" >> Makefile.gdoc; \
+         echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/        /" >> Makefile.gdoc; \
+         echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) $$< > $$@' | sed "s/TAB/  /" >> Makefile.gdoc; \
+         echo >> Makefile.gdoc; \
+         functions=`$(PERL) $(srcdir)/gdoc -listfunc $$file`; \
+         for function in $$functions; do \
+           echo "# $$shortfile: $$function" >> Makefile.gdoc; \
+           echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$function.texi" >> Makefile.gdoc; \
+           echo "$(GDOC_TEXI_PREFIX)$$function.texi: $$file" >> Makefile.gdoc; \
+           echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/      /" >> Makefile.gdoc; \
+           echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/       /" >> Makefile.gdoc; \
+           echo >> Makefile.gdoc; \
+           echo "gdoc_MANS += $(GDOC_MAN_PREFIX)$$function.3" >> Makefile.gdoc; \
+           echo "$(GDOC_MAN_PREFIX)$$function.3: $$file" >> Makefile.gdoc; \
+           echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/      /" >> Makefile.gdoc; \
+           echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -man $$(GDOC_MAN_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/    /" >> Makefile.gdoc; \
+           echo >> Makefile.gdoc; \
+         done; \
+         echo >> Makefile.gdoc; \
+       done
+       $(MAKE) Makefile
+
+include Makefile.gdoc
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644 (file)
index 0000000..3d2f8fb
--- /dev/null
@@ -0,0 +1,1925 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# -*- makefile -*-
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This file is automatically generated.  DO NOT EDIT!          -*- makefile -*-
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@ENABLE_GTK_DOC_TRUE@am__append_1 = . reference
+DIST_COMMON = $(dist_man_MANS) $(libidn_TEXINFOS) \
+       $(srcdir)/Makefile.am $(srcdir)/Makefile.gdoc \
+       $(srcdir)/Makefile.gdoci $(srcdir)/Makefile.in \
+       $(srcdir)/stamp-vti $(srcdir)/version.texi
+subdir = doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+INFO_DEPS = $(srcdir)/libidn.info
+TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux
+DVIS = libidn.dvi
+PDFS = libidn.pdf
+PSS = libidn.ps
+HTMLS = libidn.html
+TEXINFOS = libidn.texi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+DVIPS = dvips
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \
+       "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(imagesdir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+man1dir = $(mandir)/man1
+man3dir = $(mandir)/man3
+NROFF = nroff
+MANS = $(dist_man_MANS)
+DATA = $(images_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = specifications tld java cyclo . reference
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = specifications tld java cyclo $(am__append_1)
+EXTRA_DIST = gdoc libidn.html libidn.ps libidn.pdf texinfo.css \
+       components.fig
+
+info_TEXINFOS = libidn.texi
+libidn_TEXINFOS = fdl-1.3.texi gpl-3.0.texi lgpl-2.1.texi $(gdoc_TEXINFOS) \
+       libidn-components.eps libidn-components.png libidn-components.pdf
+
+imagesdir = $(infodir)
+images_DATA = libidn-components.png
+AM_MAKEINFOFLAGS = -I $(top_builddir)/doc -I $(top_srcdir)/examples
+TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS)
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \
+       --no-split --number-sections --css-include=texinfo.css
+
+
+# Man pages.
+dist_man_MANS = idn.1 $(gdoc_MANS)
+MAINTAINERCLEANFILES = $(dist_man_MANS)
+
+# GDOC
+GDOC_SRC = $(top_srcdir)/lib/idna.c $(top_srcdir)/lib/nfkc.c   \
+       $(top_srcdir)/lib/pr29.c $(top_srcdir)/lib/punycode.c   \
+       $(top_srcdir)/lib/stringprep.c $(top_srcdir)/lib/tld.c  \
+       $(top_srcdir)/lib/toutf8.c $(top_srcdir)/lib/version.c \
+       $(top_srcdir)/lib/idn-free.c \
+       $(top_srcdir)/lib/strerror-idna.c $(top_srcdir)/lib/strerror-pr29.c \
+       $(top_srcdir)/lib/strerror-punycode.c \
+       $(top_srcdir)/lib/strerror-stringprep.c \
+       $(top_srcdir)/lib/strerror-tld.c
+
+GDOC_TEXI_PREFIX = texi/
+GDOC_MAN_PREFIX = man/
+GDOC_MAN_EXTRA_ARGS = -module $(PACKAGE) -sourceversion $(VERSION) \
+       -bugsto $(PACKAGE_BUGREPORT) -pkg-name "$(PACKAGE_NAME)" \
+       -includefuncprefix -seeinfo $(PACKAGE) \
+       -copyright "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson" \
+       -verbatimcopying
+
+BUILT_SOURCES = Makefile.gdoc
+
+#
+### idna.c
+#
+
+# idna.c: idna_to_ascii_4i
+
+# idna.c: idna_to_unicode_44i
+
+# idna.c: idna_to_ascii_4z
+
+# idna.c: idna_to_ascii_8z
+
+# idna.c: idna_to_ascii_lz
+
+# idna.c: idna_to_unicode_4z4z
+
+# idna.c: idna_to_unicode_8z4z
+
+# idna.c: idna_to_unicode_8z8z
+
+# idna.c: idna_to_unicode_8zlz
+
+# idna.c: idna_to_unicode_lzlz
+
+#
+### nfkc.c
+#
+
+# nfkc.c: stringprep_utf8_to_unichar
+
+# nfkc.c: stringprep_unichar_to_utf8
+
+# nfkc.c: stringprep_utf8_to_ucs4
+
+# nfkc.c: stringprep_ucs4_to_utf8
+
+# nfkc.c: stringprep_utf8_nfkc_normalize
+
+# nfkc.c: stringprep_ucs4_nfkc_normalize
+
+#
+### pr29.c
+#
+
+# pr29.c: pr29_4
+
+# pr29.c: pr29_4z
+
+# pr29.c: pr29_8z
+
+#
+### punycode.c
+#
+
+# punycode.c: punycode_encode
+
+# punycode.c: punycode_decode
+
+#
+### stringprep.c
+#
+
+# stringprep.c: stringprep_4i
+
+# stringprep.c: stringprep_4zi
+
+# stringprep.c: stringprep
+
+# stringprep.c: stringprep_profile
+
+#
+### tld.c
+#
+
+# tld.c: tld_get_table
+
+# tld.c: tld_default_table
+
+# tld.c: tld_get_4
+
+# tld.c: tld_get_4z
+
+# tld.c: tld_get_z
+
+# tld.c: tld_check_4t
+
+# tld.c: tld_check_4tz
+
+# tld.c: tld_check_4
+
+# tld.c: tld_check_4z
+
+# tld.c: tld_check_8z
+
+# tld.c: tld_check_lz
+
+#
+### toutf8.c
+#
+
+# toutf8.c: stringprep_locale_charset
+
+# toutf8.c: stringprep_convert
+
+# toutf8.c: stringprep_locale_to_utf8
+
+# toutf8.c: stringprep_utf8_to_locale
+
+#
+### version.c
+#
+
+# version.c: stringprep_check_version
+
+#
+### idn-free.c
+#
+
+# idn-free.c: idn_free
+
+#
+### strerror-idna.c
+#
+
+# strerror-idna.c: idna_strerror
+
+#
+### strerror-pr29.c
+#
+
+# strerror-pr29.c: pr29_strerror
+
+#
+### strerror-punycode.c
+#
+
+# strerror-punycode.c: punycode_strerror
+
+#
+### strerror-stringprep.c
+#
+
+# strerror-stringprep.c: stringprep_strerror
+
+#
+### strerror-tld.c
+#
+
+# strerror-tld.c: tld_strerror
+gdoc_TEXINFOS = texi/idna.c.texi texi/idna_to_ascii_4i.texi \
+       texi/idna_to_unicode_44i.texi texi/idna_to_ascii_4z.texi \
+       texi/idna_to_ascii_8z.texi texi/idna_to_ascii_lz.texi \
+       texi/idna_to_unicode_4z4z.texi texi/idna_to_unicode_8z4z.texi \
+       texi/idna_to_unicode_8z8z.texi texi/idna_to_unicode_8zlz.texi \
+       texi/idna_to_unicode_lzlz.texi texi/nfkc.c.texi \
+       texi/stringprep_utf8_to_unichar.texi \
+       texi/stringprep_unichar_to_utf8.texi \
+       texi/stringprep_utf8_to_ucs4.texi \
+       texi/stringprep_ucs4_to_utf8.texi \
+       texi/stringprep_utf8_nfkc_normalize.texi \
+       texi/stringprep_ucs4_nfkc_normalize.texi texi/pr29.c.texi \
+       texi/pr29_4.texi texi/pr29_4z.texi texi/pr29_8z.texi \
+       texi/punycode.c.texi texi/punycode_encode.texi \
+       texi/punycode_decode.texi texi/stringprep.c.texi \
+       texi/stringprep_4i.texi texi/stringprep_4zi.texi \
+       texi/stringprep.texi texi/stringprep_profile.texi \
+       texi/tld.c.texi texi/tld_get_table.texi \
+       texi/tld_default_table.texi texi/tld_get_4.texi \
+       texi/tld_get_4z.texi texi/tld_get_z.texi \
+       texi/tld_check_4t.texi texi/tld_check_4tz.texi \
+       texi/tld_check_4.texi texi/tld_check_4z.texi \
+       texi/tld_check_8z.texi texi/tld_check_lz.texi \
+       texi/toutf8.c.texi texi/stringprep_locale_charset.texi \
+       texi/stringprep_convert.texi \
+       texi/stringprep_locale_to_utf8.texi \
+       texi/stringprep_utf8_to_locale.texi texi/version.c.texi \
+       texi/stringprep_check_version.texi texi/idn-free.c.texi \
+       texi/idn_free.texi texi/strerror-idna.c.texi \
+       texi/idna_strerror.texi texi/strerror-pr29.c.texi \
+       texi/pr29_strerror.texi texi/strerror-punycode.c.texi \
+       texi/punycode_strerror.texi texi/strerror-stringprep.c.texi \
+       texi/stringprep_strerror.texi texi/strerror-tld.c.texi \
+       texi/tld_strerror.texi
+gdoc_MANS = man/idna_to_ascii_4i.3 man/idna_to_unicode_44i.3 \
+       man/idna_to_ascii_4z.3 man/idna_to_ascii_8z.3 \
+       man/idna_to_ascii_lz.3 man/idna_to_unicode_4z4z.3 \
+       man/idna_to_unicode_8z4z.3 man/idna_to_unicode_8z8z.3 \
+       man/idna_to_unicode_8zlz.3 man/idna_to_unicode_lzlz.3 \
+       man/stringprep_utf8_to_unichar.3 \
+       man/stringprep_unichar_to_utf8.3 man/stringprep_utf8_to_ucs4.3 \
+       man/stringprep_ucs4_to_utf8.3 \
+       man/stringprep_utf8_nfkc_normalize.3 \
+       man/stringprep_ucs4_nfkc_normalize.3 man/pr29_4.3 \
+       man/pr29_4z.3 man/pr29_8z.3 man/punycode_encode.3 \
+       man/punycode_decode.3 man/stringprep_4i.3 man/stringprep_4zi.3 \
+       man/stringprep.3 man/stringprep_profile.3 man/tld_get_table.3 \
+       man/tld_default_table.3 man/tld_get_4.3 man/tld_get_4z.3 \
+       man/tld_get_z.3 man/tld_check_4t.3 man/tld_check_4tz.3 \
+       man/tld_check_4.3 man/tld_check_4z.3 man/tld_check_8z.3 \
+       man/tld_check_lz.3 man/stringprep_locale_charset.3 \
+       man/stringprep_convert.3 man/stringprep_locale_to_utf8.3 \
+       man/stringprep_utf8_to_locale.3 man/stringprep_check_version.3 \
+       man/idn_free.3 man/idna_strerror.3 man/pr29_strerror.3 \
+       man/punycode_strerror.3 man/stringprep_strerror.3 \
+       man/tld_strerror.3
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .dvi .html .info .pdf .ps .texi
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/Makefile.gdoci $(srcdir)/Makefile.gdoc $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+.texi.info:
+       restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+       am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+       rm -rf $$backupdir && mkdir $$backupdir && \
+       if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+         for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+           if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+         done; \
+       else :; fi && \
+       cd "$$am__cwd"; \
+       if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+        -o $@ $<; \
+       then \
+         rc=0; \
+         $(am__cd) $(srcdir); \
+       else \
+         rc=$$?; \
+         $(am__cd) $(srcdir) && \
+         $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+       fi; \
+       rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+       TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+       $(TEXI2DVI) $<
+
+.texi.pdf:
+       TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+       $(TEXI2PDF) $<
+
+.texi.html:
+       rm -rf $(@:.html=.htp)
+       if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+        -o $(@:.html=.htp) $<; \
+       then \
+         rm -rf $@; \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+       else \
+         if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+           rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+         exit 1; \
+       fi
+$(srcdir)/libidn.info: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS)
+libidn.dvi: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS)
+libidn.pdf: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS)
+libidn.html: libidn.texi $(srcdir)/version.texi $(libidn_TEXINFOS)
+$(srcdir)/version.texi:  $(srcdir)/stamp-vti
+$(srcdir)/stamp-vti: libidn.texi $(top_srcdir)/configure
+       @(dir=.; test -f ./libidn.texi || dir=$(srcdir); \
+       set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/libidn.texi`; \
+       echo "@set UPDATED $$1 $$2 $$3"; \
+       echo "@set UPDATED-MONTH $$2 $$3"; \
+       echo "@set EDITION $(VERSION)"; \
+       echo "@set VERSION $(VERSION)") > vti.tmp
+       @cmp -s vti.tmp $(srcdir)/version.texi \
+         || (echo "Updating $(srcdir)/version.texi"; \
+             cp vti.tmp $(srcdir)/version.texi)
+       -@rm -f vti.tmp
+       @cp $(srcdir)/version.texi $@
+
+mostlyclean-vti:
+       -rm -f vti.tmp
+
+maintainer-clean-vti:
+       -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
+.dvi.ps:
+       TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+       $(DVIPS) -o $@ $<
+
+uninstall-dvi-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+         rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+       done
+
+uninstall-html-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+         rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+       done
+
+uninstall-info-am:
+       @$(PRE_UNINSTALL)
+       @if test -d '$(DESTDIR)$(infodir)' && \
+           (install-info --version && \
+            install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+         list='$(INFO_DEPS)'; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+           if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+           then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+         done; \
+       else :; fi
+       @$(NORMAL_UNINSTALL)
+       @list='$(INFO_DEPS)'; \
+       for file in $$list; do \
+         relfile=`echo "$$file" | sed 's|^.*/||'`; \
+         relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+         (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+            echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+            rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+          else :; fi); \
+       done
+
+uninstall-pdf-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+       done
+
+uninstall-ps-am:
+       @$(NORMAL_UNINSTALL)
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(psdir)/$$f"; \
+       done
+
+dist-info: $(INFO_DEPS)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; \
+       for base in $$list; do \
+         case $$base in \
+           $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$base; then d=.; else d=$(srcdir); fi; \
+         base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+           if test -f $$file; then \
+             relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+             test -f "$(distdir)/$$relfile" || \
+               cp -p $$file "$(distdir)/$$relfile"; \
+           else :; fi; \
+         done; \
+       done
+
+mostlyclean-aminfo:
+       -rm -rf libidn.aux libidn.cp libidn.cps libidn.fn libidn.fns libidn.ky \
+         libidn.kys libidn.log libidn.pg libidn.tmp libidn.toc \
+         libidn.tp libidn.tps libidn.vr libidn.vrs
+
+clean-aminfo:
+       -test -z "libidn.dvi libidn.pdf libidn.ps libidn.html" \
+       || rm -rf libidn.dvi libidn.pdf libidn.ps libidn.html
+
+maintainer-clean-aminfo:
+       @list='$(INFO_DEPS)'; for i in $$list; do \
+         i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+         echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+         rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+       done
+install-man1: $(dist_man_MANS)
+       @$(NORMAL_INSTALL)
+       test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+       @list=''; test -n "$(man1dir)" || exit 0; \
+       { for i in $$list; do echo "$$i"; done; \
+       l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+         sed -n '/\.1[a-z]*$$/p'; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+       done; }
+
+uninstall-man1:
+       @$(NORMAL_UNINSTALL)
+       @list=''; test -n "$(man1dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+         sed -n '/\.1[a-z]*$$/p'; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       test -z "$$files" || { \
+         echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+         cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+install-man3: $(dist_man_MANS)
+       @$(NORMAL_INSTALL)
+       test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)"
+       @list=''; test -n "$(man3dir)" || exit 0; \
+       { for i in $$list; do echo "$$i"; done; \
+       l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+         sed -n '/\.3[a-z]*$$/p'; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \
+         fi; \
+       done; \
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \
+       done; }
+
+uninstall-man3:
+       @$(NORMAL_UNINSTALL)
+       @list=''; test -n "$(man3dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+         sed -n '/\.3[a-z]*$$/p'; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       test -z "$$files" || { \
+         echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \
+         cd "$(DESTDIR)$(man3dir)" && rm -f $$files; }
+install-imagesDATA: $(images_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(imagesdir)" || $(MKDIR_P) "$(DESTDIR)$(imagesdir)"
+       @list='$(images_DATA)'; test -n "$(imagesdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(imagesdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(imagesdir)" || exit $$?; \
+       done
+
+uninstall-imagesDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(images_DATA)'; test -n "$(imagesdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(imagesdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(imagesdir)" && rm -f $$files
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @list='$(MANS)'; if test -n "$$list"; then \
+         list=`for p in $$list; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+         if test -n "$$list" && \
+           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+           echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+           echo "       typically \`make maintainer-clean' will remove them" >&2; \
+           exit 1; \
+         else :; fi; \
+       else :; fi
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-info
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(INFO_DEPS) $(MANS) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(imagesdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am: $(DVIS)
+
+html: html-recursive
+
+html-am: $(HTMLS)
+
+info: info-recursive
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-imagesDATA install-info-am install-man
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am: $(DVIS)
+       @$(NORMAL_INSTALL)
+       test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+       @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+       done
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am: $(HTMLS)
+       @$(NORMAL_INSTALL)
+       test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+       @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         $(am__strip_dir) \
+         if test -d "$$d$$p"; then \
+           echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+           echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+         else \
+           list2="$$list2 $$d$$p"; \
+         fi; \
+       done; \
+       test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+       done; }
+install-info: install-info-recursive
+
+install-info-am: $(INFO_DEPS)
+       @$(NORMAL_INSTALL)
+       test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+       for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+         esac; \
+         if test -f $$file; then d=.; else d=$(srcdir); fi; \
+         file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+         for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+                      $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+           if test -f $$ifile; then \
+             echo "$$ifile"; \
+           else : ; fi; \
+         done; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+       @$(POST_INSTALL)
+       @if (install-info --version && \
+            install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+         list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+         for file in $$list; do \
+           relfile=`echo "$$file" | sed 's|^.*/||'`; \
+           echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+           install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+         done; \
+       else : ; fi
+install-man: install-man1 install-man3
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am: $(PDFS)
+       @$(NORMAL_INSTALL)
+       test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+       @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+install-ps: install-ps-recursive
+
+install-ps-am: $(PSS)
+       @$(NORMAL_INSTALL)
+       test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+       @list='$(PSS)'; test -n "$(psdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+       maintainer-clean-generic maintainer-clean-vti
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-vti
+
+pdf: pdf-recursive
+
+pdf-am: $(PDFS)
+
+ps: ps-recursive
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-imagesDATA \
+       uninstall-info-am uninstall-man uninstall-pdf-am \
+       uninstall-ps-am
+
+uninstall-man: uninstall-man1 uninstall-man3
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+       ctags-recursive install install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-aminfo clean-generic \
+       clean-libtool ctags ctags-recursive dist-info distclean \
+       distclean-generic distclean-libtool distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-imagesDATA install-info install-info-am install-man \
+       install-man1 install-man3 install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-aminfo maintainer-clean-generic \
+       maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \
+       pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+       uninstall-dvi-am uninstall-html-am uninstall-imagesDATA \
+       uninstall-info-am uninstall-man uninstall-man1 uninstall-man3 \
+       uninstall-pdf-am uninstall-ps-am
+
+
+libidn-components.eps: components.fig
+       fig2dev -L eps $< $@
+
+libidn-components.png: components.fig
+       fig2dev -L png $< $@
+
+libidn-components.pdf: components.fig
+       fig2dev -L pdf $< $@
+
+idn.1: $(top_srcdir)/src/idn.c $(top_srcdir)/src/idn.ggo \
+               $(top_srcdir)/configure.ac
+       $(HELP2MAN) \
+               --name="Internationalized Domain Names command line tool" \
+               --output=$@ $(top_builddir)/src/idn$(EXEEXT)
+
+Makefile.gdoc: $(top_builddir)/configure Makefile.am Makefile.gdoci $(GDOC_SRC)
+       echo '# This file is automatically generated.  DO NOT EDIT!          -*- makefile -*-' > Makefile.gdoc
+       echo >> Makefile.gdoc
+       echo 'gdoc_TEXINFOS =' >> Makefile.gdoc
+       echo 'gdoc_MANS =' >> Makefile.gdoc
+       echo >> Makefile.gdoc
+       for file in $(GDOC_SRC); do \
+         shortfile=`basename $$file`; \
+         echo "#" >> Makefile.gdoc; \
+         echo "### $$shortfile" >> Makefile.gdoc; \
+         echo "#" >> Makefile.gdoc; \
+         echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$shortfile.texi" >> Makefile.gdoc; \
+         echo "$(GDOC_TEXI_PREFIX)$$shortfile.texi: $$file" >> Makefile.gdoc; \
+         echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/        /" >> Makefile.gdoc; \
+         echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) $$< > $$@' | sed "s/TAB/  /" >> Makefile.gdoc; \
+         echo >> Makefile.gdoc; \
+         functions=`$(PERL) $(srcdir)/gdoc -listfunc $$file`; \
+         for function in $$functions; do \
+           echo "# $$shortfile: $$function" >> Makefile.gdoc; \
+           echo "gdoc_TEXINFOS += $(GDOC_TEXI_PREFIX)$$function.texi" >> Makefile.gdoc; \
+           echo "$(GDOC_TEXI_PREFIX)$$function.texi: $$file" >> Makefile.gdoc; \
+           echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/      /" >> Makefile.gdoc; \
+           echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -texinfo $$(GDOC_TEXI_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/       /" >> Makefile.gdoc; \
+           echo >> Makefile.gdoc; \
+           echo "gdoc_MANS += $(GDOC_MAN_PREFIX)$$function.3" >> Makefile.gdoc; \
+           echo "$(GDOC_MAN_PREFIX)$$function.3: $$file" >> Makefile.gdoc; \
+           echo 'TABmkdir -p `dirname $$@`' | sed "s/TAB/      /" >> Makefile.gdoc; \
+           echo 'TAB$$(PERL) $$(top_srcdir)/doc/gdoc -man $$(GDOC_MAN_EXTRA_ARGS) -function'" $$function"' $$< > $$@' | sed "s/TAB/    /" >> Makefile.gdoc; \
+           echo >> Makefile.gdoc; \
+         done; \
+         echo >> Makefile.gdoc; \
+       done
+       $(MAKE) Makefile
+texi/idna.c.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/idna_to_ascii_4i.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@
+man/idna_to_ascii_4i.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4i $< > $@
+texi/idna_to_unicode_44i.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@
+man/idna_to_unicode_44i.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_44i $< > $@
+texi/idna_to_ascii_4z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@
+man/idna_to_ascii_4z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_4z $< > $@
+texi/idna_to_ascii_8z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@
+man/idna_to_ascii_8z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_8z $< > $@
+texi/idna_to_ascii_lz.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@
+man/idna_to_ascii_lz.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_ascii_lz $< > $@
+texi/idna_to_unicode_4z4z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@
+man/idna_to_unicode_4z4z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_4z4z $< > $@
+texi/idna_to_unicode_8z4z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@
+man/idna_to_unicode_8z4z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z4z $< > $@
+texi/idna_to_unicode_8z8z.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@
+man/idna_to_unicode_8z8z.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8z8z $< > $@
+texi/idna_to_unicode_8zlz.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@
+man/idna_to_unicode_8zlz.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_8zlz $< > $@
+texi/idna_to_unicode_lzlz.texi: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@
+man/idna_to_unicode_lzlz.3: ../lib/idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_to_unicode_lzlz $< > $@
+texi/nfkc.c.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/stringprep_utf8_to_unichar.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@
+man/stringprep_utf8_to_unichar.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_unichar $< > $@
+texi/stringprep_unichar_to_utf8.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@
+man/stringprep_unichar_to_utf8.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_unichar_to_utf8 $< > $@
+texi/stringprep_utf8_to_ucs4.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@
+man/stringprep_utf8_to_ucs4.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_ucs4 $< > $@
+texi/stringprep_ucs4_to_utf8.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@
+man/stringprep_ucs4_to_utf8.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_to_utf8 $< > $@
+texi/stringprep_utf8_nfkc_normalize.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@
+man/stringprep_utf8_nfkc_normalize.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_nfkc_normalize $< > $@
+texi/stringprep_ucs4_nfkc_normalize.texi: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@
+man/stringprep_ucs4_nfkc_normalize.3: ../lib/nfkc.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_ucs4_nfkc_normalize $< > $@
+texi/pr29.c.texi: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/pr29_4.texi: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4 $< > $@
+man/pr29_4.3: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4 $< > $@
+texi/pr29_4z.texi: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_4z $< > $@
+man/pr29_4z.3: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_4z $< > $@
+texi/pr29_8z.texi: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_8z $< > $@
+man/pr29_8z.3: ../lib/pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_8z $< > $@
+texi/punycode.c.texi: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/punycode_encode.texi: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_encode $< > $@
+man/punycode_encode.3: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_encode $< > $@
+texi/punycode_decode.texi: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_decode $< > $@
+man/punycode_decode.3: ../lib/punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_decode $< > $@
+texi/stringprep.c.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/stringprep_4i.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4i $< > $@
+man/stringprep_4i.3: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4i $< > $@
+texi/stringprep_4zi.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_4zi $< > $@
+man/stringprep_4zi.3: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_4zi $< > $@
+texi/stringprep.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep $< > $@
+man/stringprep.3: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep $< > $@
+texi/stringprep_profile.texi: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_profile $< > $@
+man/stringprep_profile.3: ../lib/stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_profile $< > $@
+texi/tld.c.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/tld_get_table.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_table $< > $@
+man/tld_get_table.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_table $< > $@
+texi/tld_default_table.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_default_table $< > $@
+man/tld_default_table.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_default_table $< > $@
+texi/tld_get_4.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4 $< > $@
+man/tld_get_4.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4 $< > $@
+texi/tld_get_4z.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_4z $< > $@
+man/tld_get_4z.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_4z $< > $@
+texi/tld_get_z.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_get_z $< > $@
+man/tld_get_z.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_get_z $< > $@
+texi/tld_check_4t.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4t $< > $@
+man/tld_check_4t.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4t $< > $@
+texi/tld_check_4tz.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4tz $< > $@
+man/tld_check_4tz.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4tz $< > $@
+texi/tld_check_4.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4 $< > $@
+man/tld_check_4.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4 $< > $@
+texi/tld_check_4z.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_4z $< > $@
+man/tld_check_4z.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_4z $< > $@
+texi/tld_check_8z.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_8z $< > $@
+man/tld_check_8z.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_8z $< > $@
+texi/tld_check_lz.texi: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_check_lz $< > $@
+man/tld_check_lz.3: ../lib/tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_check_lz $< > $@
+texi/toutf8.c.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/stringprep_locale_charset.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_charset $< > $@
+man/stringprep_locale_charset.3: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_charset $< > $@
+texi/stringprep_convert.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_convert $< > $@
+man/stringprep_convert.3: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_convert $< > $@
+texi/stringprep_locale_to_utf8.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@
+man/stringprep_locale_to_utf8.3: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_locale_to_utf8 $< > $@
+texi/stringprep_utf8_to_locale.texi: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@
+man/stringprep_utf8_to_locale.3: ../lib/toutf8.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_utf8_to_locale $< > $@
+texi/version.c.texi: ../lib/version.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/stringprep_check_version.texi: ../lib/version.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_check_version $< > $@
+man/stringprep_check_version.3: ../lib/version.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_check_version $< > $@
+texi/idn-free.c.texi: ../lib/idn-free.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/idn_free.texi: ../lib/idn-free.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idn_free $< > $@
+man/idn_free.3: ../lib/idn-free.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idn_free $< > $@
+texi/strerror-idna.c.texi: ../lib/strerror-idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/idna_strerror.texi: ../lib/strerror-idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function idna_strerror $< > $@
+man/idna_strerror.3: ../lib/strerror-idna.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function idna_strerror $< > $@
+texi/strerror-pr29.c.texi: ../lib/strerror-pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/pr29_strerror.texi: ../lib/strerror-pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function pr29_strerror $< > $@
+man/pr29_strerror.3: ../lib/strerror-pr29.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function pr29_strerror $< > $@
+texi/strerror-punycode.c.texi: ../lib/strerror-punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/punycode_strerror.texi: ../lib/strerror-punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function punycode_strerror $< > $@
+man/punycode_strerror.3: ../lib/strerror-punycode.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function punycode_strerror $< > $@
+texi/strerror-stringprep.c.texi: ../lib/strerror-stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/stringprep_strerror.texi: ../lib/strerror-stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function stringprep_strerror $< > $@
+man/stringprep_strerror.3: ../lib/strerror-stringprep.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function stringprep_strerror $< > $@
+texi/strerror-tld.c.texi: ../lib/strerror-tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) $< > $@
+texi/tld_strerror.texi: ../lib/strerror-tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -texinfo $(GDOC_TEXI_EXTRA_ARGS) -function tld_strerror $< > $@
+man/tld_strerror.3: ../lib/strerror-tld.c
+       mkdir -p `dirname $@`
+       $(PERL) $(top_srcdir)/doc/gdoc -man $(GDOC_MAN_EXTRA_ARGS) -function tld_strerror $< > $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/components.fig b/doc/components.fig
new file mode 100644 (file)
index 0000000..0a7570b
--- /dev/null
@@ -0,0 +1,96 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+6 3285 1845 4680 2295
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 4 0 0 5
+        4669 2295 4669 1845 3295 1845 3295 2295 4669 2295
+4 0 0 50 -1 16 11 0.0000 4 165 765 3600 2107 Nameprep\001
+-6
+6 2610 1845 3195 2295
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 3 0 0 5
+        3186 2295 3186 1845 2618 1845 2618 2295 3186 2295
+4 0 0 50 -1 16 11 0.0000 4 120 405 2700 2130 iSCSI\001
+-6
+6 1935 1845 2520 2295
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 3 0 0 5
+        2512 2295 2512 1845 1943 1845 1943 2295 2512 2295
+4 0 0 50 -1 16 11 0.0000 4 120 405 2025 2130 SASL\001
+-6
+6 1260 1845 1845 2295
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 3 0 0 5
+        1837 2295 1837 1845 1268 1845 1268 2295 1837 2295
+4 0 0 50 -1 16 11 0.0000 4 120 450 1327 2130 XMPP\001
+-6
+6 810 4545 6795 5175
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 4 0 0 5
+        6795 5159 810 5159 810 4560 6795 4560 6795 5159
+4 0 0 50 -1 18 11 0.0000 4 150 1305 3150 4905 GNU IDN Library\001
+-6
+6 4005 2835 5850 3510
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 4 0 0 5
+        5850 3508 5850 2837 4005 2837 4005 3508 5850 3508
+4 0 0 50 -1 16 10 0.0000 4 105 360 4751 3227 IDNA\001
+-6
+6 4050 900 5580 1440
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 4 0 0 5
+        5580 1398 5580 900 4050 900 4050 1398 5580 1398
+4 0 0 50 -1 16 11 0.0000 4 150 705 4455 1215 Punycode\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        2880 1398 2880 1848
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        3690 1395 3690 1848
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        2880 2298 2880 4573
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        2160 2298 2160 4573
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        1530 2298 1530 4573
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        1035 1398 1035 4573
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        1530 1398 1530 1848
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        2205 1398 2205 1848
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        3555 2298 3555 4573
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        4905 3506 4905 4573
+2 4 2 1 0 7 50 -1 -1 3.000 0 0 4 0 0 5
+        6795 6419 810 6419 810 5820 6795 5820 6795 6419
+2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 1 1 2
+       1 0 1.00 60.00 120.00
+       1 0 1.00 60.00 120.00
+        3735 5175 3735 5805
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 5 0 0 5
+        3916 1398 3916 900 765 900 765 1398 3916 1398
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        4365 2277 4365 2835
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        4860 1395 4860 2863
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 3 0 0 5
+        6795 1395 6795 900 5670 900 5670 1395 6795 1395
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 31.59 63.18
+        6165 1398 6165 4573
+4 0 0 50 -1 16 11 0.0000 4 165 765 3345 6157 Application\001
+4 0 0 50 -1 16 11 0.0000 4 165 765 1935 1215 StringPrep\001
+4 0 0 50 -1 16 11 0.0000 4 120 315 6075 1170 TLD\001
diff --git a/doc/cyclo/Makefile.am b/doc/cyclo/Makefile.am
new file mode 100644 (file)
index 0000000..2c72cfc
--- /dev/null
@@ -0,0 +1,30 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2008, 2009  Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+EXTRA_DIST = cyclo-libidn.html
+
+cyclo-libidn.html:
+       $(PMCCABE) ${top_srcdir}/lib/*.[ch] \
+               | sort -nr \
+               | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \
+                       -v lang=html -v name="$(PACKAGE_NAME)" \
+                       -v vcurl="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=%FILENAME%;hb=HEAD" \
+                       -v url="http://www.gnu.org/software/libidn/" \
+                       -v css=../../build-aux/pmccabe.css \
+                       > tmp
+       mv tmp $@
diff --git a/doc/cyclo/Makefile.in b/doc/cyclo/Makefile.in
new file mode 100644 (file)
index 0000000..ea4691b
--- /dev/null
@@ -0,0 +1,677 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2008, 2009  Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc/cyclo
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = cyclo-libidn.html
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/cyclo/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/cyclo/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+cyclo-libidn.html:
+       $(PMCCABE) ${top_srcdir}/lib/*.[ch] \
+               | sort -nr \
+               | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \
+                       -v lang=html -v name="$(PACKAGE_NAME)" \
+                       -v vcurl="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=%FILENAME%;hb=HEAD" \
+                       -v url="http://www.gnu.org/software/libidn/" \
+                       -v css=../../build-aux/pmccabe.css \
+                       > tmp
+       mv tmp $@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/cyclo/cyclo-libidn.html b/doc/cyclo/cyclo-libidn.html
new file mode 100644 (file)
index 0000000..b46c9b1
--- /dev/null
@@ -0,0 +1,2974 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<html>
+<!-- Generated by gnulib's pmccabe2html at 1244457672 -->
+<head>
+<title>Cyclomatic Complexity report for GNU Libidn</title>
+
+<meta name="description" content="Cyclomatic Complexity report for GNU Libidn">
+<meta name="keywords" content="Cyclomatic Complexity report for GNU Libidn">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="pmccabe2html">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<script language="javascript" type="text/javascript">
+function show_hide(idCapa, idButton, fuerzaVisibilidad){        var button = document.getElementById(idButton);        var capa = document.getElementById(idCapa);     if (capa)       {               if (fuerzaVisibilidad && fuerzaVisibilidad!="") {                       if (fuerzaVisibilidad=="visible") capa.style.display="";                        else capa.style.display="none";         }               else            {                       if (capa.style.display == "none") {                             capa.style.display = "";                                button.innerHTML = "&uarr;";                    } else {                                capa.style.display = "none";                                button.innerHTML = "&darr;";                        }               }       }}
+</script>
+<style type ="text/css" media="screen">
+<!--
+body {
+
+    font-family: Helvetica, sans-serif;
+
+}
+
+.page_title {
+
+    font: 18pt Georgia, serif;
+/*    font-size: 1.5em;
+    font-weight: bold; */
+    color: darkred;
+    border-bottom: 2px solid darkred;
+}
+
+.section_title {
+
+    font: 14pt Georgia, serif;
+    color: darkred;
+    border-bottom: 2px dashed darkred;
+}
+
+.report_timestamp {
+
+    color: darkred;
+    font-weight: bold;
+
+}
+
+.function_src {
+
+    text-align: left;
+    background: white;
+}
+
+.resume_table {
+
+}
+
+.resume_header_entry {
+    
+    color: black;
+}
+
+.resume_number_entry {
+
+    color: darkred;
+    font-weight: bold;
+    text-align: right;
+}
+
+.ranges_table {
+
+    border-spacing: 0px;
+    border-bottom: solid 2px black;
+    border-top: solid 2px black;
+    border-left: solid 2px black;
+    border-right: solid 2px black;
+}
+
+.ranges_header_entry {
+
+    padding: 5px;
+    border-bottom: solid 1px black;
+    font-size: 1em;
+    font-weight: bold;
+    color: darkred;
+    text-align: left;
+}
+
+.ranges_entry {
+
+}
+
+.ranges_entry_simple {
+
+    background: #87ff75; 
+
+}
+
+.ranges_entry_moderate {
+
+    background: #fffc60;
+
+}
+
+.ranges_entry_high {
+
+    background: #ff5a5d;
+
+}
+
+.ranges_entry_untestable {
+
+    background: #993300
+
+}
+
+
+.function_table {
+
+    border-spacing: 0px;
+    border-bottom: solid 2px black;
+    border-top: solid 2px black;
+    border-left: solid 2px black;
+    border-right: solid 2px black;
+}
+
+.function_table_caption {
+
+    font-size: 1.1em;
+    font-weight: bold;
+    color: black;
+    padding: 5px;
+}
+
+.function_table_header {
+    
+}
+
+
+.function_table_header_entry {
+
+    padding: 5px;
+    border-bottom: solid 1px black;
+    font-size: 1em;
+    font-weight: bold;
+    color: darkred;
+    text-align: left;
+}
+
+.function_entry {
+
+
+}
+
+
+.function_entry_simple {
+
+    background: #87ff75; 
+
+}
+
+.function_entry_moderate {
+
+    background: #fffc60;
+
+}
+
+.function_entry_high {
+
+    background: #ff5a5d;
+
+}
+
+.function_entry_untestable {
+
+    background: #993300
+
+}
+
+
+.function_entry_name {
+
+    font-size: 1em;
+    text-align: left;
+    font-weight: bold;
+    text-valign: top;
+
+    border-top: solid 1px black;
+    padding: 3px;
+}
+
+.function_entry_cyclo {
+
+    font-size: 1em;
+    text-align: right;
+    text-valign: top;
+
+    border-top: solid 1px black;
+    padding: 3px;
+}
+
+.function_entry_number {
+
+    font-size: 1em;
+    text-align: right;
+    text-valign: top;
+
+    border-top: solid 1px black;
+    padding: 3px;
+}
+
+.function_entry_filename {
+
+    font-size: 1em;
+    text-align: left;
+    text-valign: top;
+
+    border-top: solid 1px black;
+    padding: 3px;
+}
+
+.sidemenu {
+    
+    border: 1px black solid;
+    padding: 5px;
+
+}
+
+.sidemenuheader {
+    color: darkred;
+    font-size: 1.1em;
+    font-weight: bold;
+    border-bottom: 1px dashed darkred;
+}
+
+.sidemenuentry {
+
+
+}
+
+.menu {
+
+}
+
+-->
+</style />
+</head>
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<a href="http://www.gnu.org/software/libidn/">Back to GNU Libidn Homepage</a><br/><br/>
+<div class="page_title">GNU Libidn Cyclomatic Complexity Report</div>
+<p>Report generated at: <span class="report_timestamp">Mon Jun 08 12:41:12 CEST 2009</div></p>
+<div class="section_title">Resume</div>
+<br/>
+<table class="resume_table">
+<tr>
+<td class="resume_header_entry">
+Total number of functions
+</td>
+<td class="resume_number_entry">
+72
+</td>
+</tr>
+<tr>
+<td class="resume_header_entry">
+Number of low risk functions
+</td>
+<td class="resume_number_entry">
+61
+</td>
+</tr>
+<tr>
+<td class="resume_header_entry">
+Number of moderate risk functions
+</td>
+<td class="resume_number_entry">
+6
+</td>
+</tr>
+<tr>
+<td class="resume_header_entry">
+Number of high risk functions
+</td>
+<td class="resume_number_entry">
+5
+</td>
+</tr>
+<tr>
+<td class="resume_header_entry">
+Number of untestable functions
+</td>
+<td class="resume_number_entry">
+0
+</td>
+</tr>
+</table>
+<br/>
+<div class="section_title">Details for all functions</div>
+<p>Used ranges:</p>
+<table class="ranges_table">
+<tr>
+<td class="ranges_header_entry">
+&nbsp;
+</td>
+<td class="ranges_header_entry">
+Cyclomatic Complexity
+</td>
+<td class="ranges_header_entry">
+Risk Evaluation
+</td>
+</tr>
+<tr>
+<td class="ranges_entry_simple">
+&nbsp;
+</td>
+<td class="ranges_entry">
+0 - 10
+</td>
+<td class="ranges_entry">
+Simple module, without much risk
+</td>
+</tr>
+<tr>
+<td class="ranges_entry_moderate">
+&nbsp;
+</td>
+<td class="ranges_entry">
+11 - 20
+</td>
+<td class="ranges_entry">
+More complex module, moderate risk
+</td>
+</tr>
+<tr>
+<td class="ranges_entry_high">
+&nbsp;
+</td>
+<td class="ranges_entry">
+21 - 50
+</td>
+<td class="ranges_entry">
+Complex module, high risk
+</td>
+</tr>
+<tr>
+<td class="ranges_entry_untestable">
+&nbsp;
+</td>
+<td class="ranges_entry">
+greater than 50
+</td>
+<td class="ranges_entry">
+Untestable module, very high risk
+</td>
+</tr>
+</table>
+<br/>
+<table width="90%" class="function_table" cellpadding="0" cellspacing="0">
+<tr class="function_table_header">
+<td class="function_table_header_entry">
+
+</td>
+<td class="function_table_header_entry">
+Function Name
+</td>
+<td class="function_table_header_entry">
+Cyclomatic
+<br/>
+Complexity
+</td>
+<td class="function_table_header_entry">
+Number of
+<br/>
+Statements
+</td>
+<td class="function_table_header_entry">
+Number of
+<br/>
+Lines
+</td>
+<td class="function_table_header_entry">
+Source File
+</td>
+</tr>
+<tr class="function_entry_high">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('idna_to_ascii_4i_src', 'idna_to_ascii_4i_button')"><span id="idna_to_ascii_4i_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+idna_to_ascii_4i
+</td>
+<td class="function_entry_cyclo">
+37
+</td>
+<td class="function_entry_number">
+92
+</td>
+<td class="function_entry_number">
+191
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="idna_to_ascii_4i_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+int
+idna_to_ascii_4i (const uint32_t * in, size_t inlen, char *out, int flags)
+{
+  size_t len, outlen;
+  uint32_t *src;               /* XXX don't need to copy data? */
+  int rc;
+
+  /*
+   * ToASCII consists of the following steps:
+   *
+   * 1. If all code points in the sequence are in the ASCII range (0..7F)
+   * then skip to step 3.
+   */
+
+  {
+    size_t i;
+    int inasciirange;
+
+    inasciirange = 1;
+    for (i = 0; i < inlen; i++)
+      if (in[i] > 0x7F)
+       inasciirange = 0;
+    if (inasciirange)
+      {
+       src = malloc (sizeof (in[0]) * (inlen + 1));
+       if (src == NULL)
+         return IDNA_MALLOC_ERROR;
+
+       memcpy (src, in, sizeof (in[0]) * inlen);
+       src[inlen] = 0;
+
+       goto step3;
+      }
+  }
+
+  /*
+   * 2. Perform the steps specified in [NAMEPREP] and fail if there is
+   * an error. The AllowUnassigned flag is used in [NAMEPREP].
+   */
+
+  {
+    char *p;
+
+    p = stringprep_ucs4_to_utf8 (in, (ssize_t) inlen, NULL, NULL);
+    if (p == NULL)
+      return IDNA_MALLOC_ERROR;
+
+    len = strlen (p);
+    do
+      {
+       char *newp;
+
+       len = 2 * len + 10;     /* XXX better guess? */
+       newp = realloc (p, len);
+       if (newp == NULL)
+         {
+           free (p);
+           return IDNA_MALLOC_ERROR;
+         }
+       p = newp;
+
+       if (flags &amp; IDNA_ALLOW_UNASSIGNED)
+         rc = stringprep_nameprep (p, len);
+       else
+         rc = stringprep_nameprep_no_unassigned (p, len);
+      }
+    while (rc == STRINGPREP_TOO_SMALL_BUFFER);
+
+    if (rc != STRINGPREP_OK)
+      {
+       free (p);
+       return IDNA_STRINGPREP_ERROR;
+      }
+
+    src = stringprep_utf8_to_ucs4 (p, -1, NULL);
+
+    free (p);
+  }
+
+step3:
+  /*
+   * 3. If the UseSTD3ASCIIRules flag is set, then perform these checks:
+   *
+   * (a) Verify the absence of non-LDH ASCII code points; that is,
+   * the absence of 0..2C, 2E..2F, 3A..40, 5B..60, and 7B..7F.
+   *
+   * (b) Verify the absence of leading and trailing hyphen-minus;
+   * that is, the absence of U+002D at the beginning and end of
+   * the sequence.
+   */
+
+  if (flags &amp; IDNA_USE_STD3_ASCII_RULES)
+    {
+      size_t i;
+
+      for (i = 0; src[i]; i++)
+       if (src[i] <= 0x2C || src[i] == 0x2E || src[i] == 0x2F ||
+           (src[i] >= 0x3A &amp;& src[i] <= 0x40) ||
+           (src[i] >= 0x5B &amp;& src[i] <= 0x60) ||
+           (src[i] >= 0x7B &amp;& src[i] <= 0x7F))
+         {
+           free (src);
+           return IDNA_CONTAINS_NON_LDH;
+         }
+
+      if (src[0] == 0x002D || (i > 0 &amp;& src[i - 1] == 0x002D))
+       {
+         free (src);
+         return IDNA_CONTAINS_MINUS;
+       }
+    }
+
+  /*
+   * 4. If all code points in the sequence are in the ASCII range
+   * (0..7F), then skip to step 8.
+   */
+
+  {
+    size_t i;
+    int inasciirange;
+
+    inasciirange = 1;
+    for (i = 0; src[i]; i++)
+      {
+       if (src[i] > 0x7F)
+         inasciirange = 0;
+       /* copy string to output buffer if we are about to skip to step8 */
+       if (i < 64)
+         out[i] = src[i];
+      }
+    if (i < 64)
+      out[i] = '\0';
+    if (inasciirange)
+      goto step8;
+  }
+
+  /*
+   * 5. Verify that the sequence does NOT begin with the ACE prefix.
+   *
+   */
+
+  {
+    size_t i;
+    int match;
+
+    match = 1;
+    for (i = 0; match &amp;& i < strlen (IDNA_ACE_PREFIX); i++)
+      if (((uint32_t) IDNA_ACE_PREFIX[i] &amp; 0xFF) != src[i])
+       match = 0;
+    if (match)
+      {
+       free (src);
+       return IDNA_CONTAINS_ACE_PREFIX;
+      }
+  }
+
+  /*
+   * 6. Encode the sequence using the encoding algorithm in [PUNYCODE]
+   * and fail if there is an error.
+   */
+  for (len = 0; src[len]; len++)
+    ;
+  src[len] = '\0';
+  outlen = 63 - strlen (IDNA_ACE_PREFIX);
+  rc = punycode_encode (len, src, NULL,
+                       &amp;outlen, &out[strlen (IDNA_ACE_PREFIX)]);
+  if (rc != PUNYCODE_SUCCESS)
+    {
+      free (src);
+      return IDNA_PUNYCODE_ERROR;
+    }
+  out[strlen (IDNA_ACE_PREFIX) + outlen] = '\0';
+
+  /*
+   * 7. Prepend the ACE prefix.
+   */
+
+  memcpy (out, IDNA_ACE_PREFIX, strlen (IDNA_ACE_PREFIX));
+
+  /*
+   * 8. Verify that the number of code points is in the range 1 to 63
+   * inclusive (0 is excluded).
+   */
+
+step8:
+  free (src);
+  if (strlen (out) < 1 || strlen (out) > 63)
+    return IDNA_INVALID_LENGTH;
+
+  return IDNA_SUCCESS;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_high">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('stringprep_4i_src', 'stringprep_4i_button')"><span id="stringprep_4i_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+stringprep_4i
+</td>
+<td class="function_entry_cyclo">
+37
+</td>
+<td class="function_entry_number">
+76
+</td>
+<td class="function_entry_number">
+137
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/stringprep.c;hb=HEAD">lib/stringprep.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="stringprep_4i_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+int
+stringprep_4i (uint32_t * ucs4, size_t * len, size_t maxucs4len,
+              Stringprep_profile_flags flags,
+              const Stringprep_profile * profile)
+{
+  size_t i, j;
+  ssize_t k;
+  size_t ucs4len = *len;
+  int rc;
+
+  for (i = 0; profile[i].operation; i++)
+    {
+      switch (profile[i].operation)
+       {
+       case STRINGPREP_NFKC:
+         {
+           uint32_t *q = 0;
+
+           if (UNAPPLICAPLEFLAGS (flags, profile[i].flags))
+             break;
+
+           if (flags &amp; STRINGPREP_NO_NFKC && !profile[i].flags)
+             /* Profile requires NFKC, but callee asked for no NFKC. */
+             return STRINGPREP_FLAG_ERROR;
+
+           q = stringprep_ucs4_nfkc_normalize (ucs4, ucs4len);
+           if (!q)
+             return STRINGPREP_NFKC_FAILED;
+
+           for (ucs4len = 0; q[ucs4len]; ucs4len++)
+             ;
+
+           if (ucs4len >= maxucs4len)
+             {
+               free (q);
+               return STRINGPREP_TOO_SMALL_BUFFER;
+             }
+
+           memcpy (ucs4, q, ucs4len * sizeof (ucs4[0]));
+
+           free (q);
+         }
+         break;
+
+       case STRINGPREP_PROHIBIT_TABLE:
+         k = stringprep_find_string_in_table (ucs4, ucs4len,
+                                              NULL, profile[i].table);
+         if (k != -1)
+           return STRINGPREP_CONTAINS_PROHIBITED;
+         break;
+
+       case STRINGPREP_UNASSIGNED_TABLE:
+         if (UNAPPLICAPLEFLAGS (flags, profile[i].flags))
+           break;
+         if (flags &amp; STRINGPREP_NO_UNASSIGNED)
+           {
+             k = stringprep_find_string_in_table
+               (ucs4, ucs4len, NULL, profile[i].table);
+             if (k != -1)
+               return STRINGPREP_CONTAINS_UNASSIGNED;
+           }
+         break;
+
+       case STRINGPREP_MAP_TABLE:
+         if (UNAPPLICAPLEFLAGS (flags, profile[i].flags))
+           break;
+         rc = stringprep_apply_table_to_string
+           (ucs4, &amp;ucs4len, maxucs4len, profile[i].table);
+         if (rc != STRINGPREP_OK)
+           return rc;
+         break;
+
+       case STRINGPREP_BIDI_PROHIBIT_TABLE:
+       case STRINGPREP_BIDI_RAL_TABLE:
+       case STRINGPREP_BIDI_L_TABLE:
+         break;
+
+       case STRINGPREP_BIDI:
+         {
+           int done_prohibited = 0;
+           int done_ral = 0;
+           int done_l = 0;
+           size_t contains_ral = SIZE_MAX;
+           size_t contains_l = SIZE_MAX;
+
+           for (j = 0; profile[j].operation; j++)
+             if (profile[j].operation == STRINGPREP_BIDI_PROHIBIT_TABLE)
+               {
+                 done_prohibited = 1;
+                 k = stringprep_find_string_in_table (ucs4, ucs4len,
+                                                      NULL,
+                                                      profile[j].table);
+                 if (k != -1)
+                   return STRINGPREP_BIDI_CONTAINS_PROHIBITED;
+               }
+             else if (profile[j].operation == STRINGPREP_BIDI_RAL_TABLE)
+               {
+                 done_ral = 1;
+                 if (stringprep_find_string_in_table
+                     (ucs4, ucs4len, NULL, profile[j].table) != -1)
+                   contains_ral = j;
+               }
+             else if (profile[j].operation == STRINGPREP_BIDI_L_TABLE)
+               {
+                 done_l = 1;
+                 if (stringprep_find_string_in_table
+                     (ucs4, ucs4len, NULL, profile[j].table) != -1)
+                   contains_l = j;
+               }
+
+           if (!done_prohibited || !done_ral || !done_l)
+             return STRINGPREP_PROFILE_ERROR;
+
+           if (contains_ral != SIZE_MAX &amp;& contains_l != SIZE_MAX)
+             return STRINGPREP_BIDI_BOTH_L_AND_RAL;
+
+           if (contains_ral != SIZE_MAX)
+             {
+               if (!(stringprep_find_character_in_table
+                     (ucs4[0], profile[contains_ral].table) != -1 &amp;&
+                     stringprep_find_character_in_table
+                     (ucs4[ucs4len - 1], profile[contains_ral].table) != -1))
+                 return STRINGPREP_BIDI_LEADTRAIL_NOT_RAL;
+             }
+         }
+         break;
+
+       default:
+         return STRINGPREP_PROFILE_ERROR;
+         break;
+       }
+    }
+
+  *len = ucs4len;
+
+  return STRINGPREP_OK;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_high">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('_g_utf8_normalize_wc_src', '_g_utf8_normalize_wc_button')"><span id="_g_utf8_normalize_wc_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+_g_utf8_normalize_wc
+</td>
+<td class="function_entry_cyclo">
+30
+</td>
+<td class="function_entry_number">
+77
+</td>
+<td class="function_entry_number">
+135
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="_g_utf8_normalize_wc_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+static gunichar *
+_g_utf8_normalize_wc (const gchar * str, gssize max_len, GNormalizeMode mode)
+{
+  gsize n_wc;
+  gunichar *wc_buffer;
+  const char *p;
+  gsize last_start;
+  gboolean do_compat = (mode == G_NORMALIZE_NFKC || mode == G_NORMALIZE_NFKD);
+  gboolean do_compose = (mode == G_NORMALIZE_NFC || mode == G_NORMALIZE_NFKC);
+
+  n_wc = 0;
+  p = str;
+  while ((max_len < 0 || p < str + max_len) &amp;& *p)
+    {
+      const gchar *decomp;
+      gunichar wc = g_utf8_get_char (p);
+
+      if (wc >= 0xac00 &amp;& wc <= 0xd7af)
+       {
+         gsize result_len;
+         decompose_hangul (wc, NULL, &amp;result_len);
+         n_wc += result_len;
+       }
+      else
+       {
+         decomp = find_decomposition (wc, do_compat);
+
+         if (decomp)
+           n_wc += g_utf8_strlen (decomp, -1);
+         else
+           n_wc++;
+       }
+
+      p = g_utf8_next_char (p);
+    }
+
+  wc_buffer = g_new (gunichar, n_wc + 1);
+  if (!wc_buffer)
+    return NULL;
+
+  last_start = 0;
+  n_wc = 0;
+  p = str;
+  while ((max_len < 0 || p < str + max_len) &amp;& *p)
+    {
+      gunichar wc = g_utf8_get_char (p);
+      const gchar *decomp;
+      int cc;
+      gsize old_n_wc = n_wc;
+
+      if (wc >= 0xac00 &amp;& wc <= 0xd7af)
+       {
+         gsize result_len;
+         decompose_hangul (wc, wc_buffer + n_wc, &amp;result_len);
+         n_wc += result_len;
+       }
+      else
+       {
+         decomp = find_decomposition (wc, do_compat);
+
+         if (decomp)
+           {
+             const char *pd;
+             for (pd = decomp; *pd != '\0'; pd = g_utf8_next_char (pd))
+               wc_buffer[n_wc++] = g_utf8_get_char (pd);
+           }
+         else
+           wc_buffer[n_wc++] = wc;
+       }
+
+      if (n_wc > 0)
+       {
+         cc = COMBINING_CLASS (wc_buffer[old_n_wc]);
+
+         if (cc == 0)
+           {
+             g_unicode_canonical_ordering (wc_buffer + last_start,
+                                           n_wc - last_start);
+             last_start = old_n_wc;
+           }
+       }
+
+      p = g_utf8_next_char (p);
+    }
+
+  if (n_wc > 0)
+    {
+      g_unicode_canonical_ordering (wc_buffer + last_start,
+                                   n_wc - last_start);
+      last_start = n_wc;
+    }
+
+  wc_buffer[n_wc] = 0;
+
+  /* All decomposed and reordered */
+
+  if (do_compose &amp;& n_wc > 0)
+    {
+      gsize i, j;
+      int last_cc = 0;
+      last_start = 0;
+
+      for (i = 0; i < n_wc; i++)
+       {
+         int cc = COMBINING_CLASS (wc_buffer[i]);
+
+         if (i > 0 &amp;&
+             (last_cc == 0 || last_cc != cc) &amp;&
+             combine (wc_buffer[last_start], wc_buffer[i],
+                      &amp;wc_buffer[last_start]))
+           {
+             for (j = i + 1; j < n_wc; j++)
+               wc_buffer[j - 1] = wc_buffer[j];
+             n_wc--;
+             i--;
+
+             if (i == last_start)
+               last_cc = 0;
+             else
+               last_cc = COMBINING_CLASS (wc_buffer[i - 1]);
+
+             continue;
+           }
+
+         if (cc == 0)
+           last_start = i;
+
+         last_cc = cc;
+       }
+    }
+
+  wc_buffer[n_wc] = 0;
+
+  return wc_buffer;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_high">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('punycode_encode_src', 'punycode_encode_button')"><span id="punycode_encode_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+punycode_encode
+</td>
+<td class="function_entry_cyclo">
+22
+</td>
+<td class="function_entry_number">
+57
+</td>
+<td class="function_entry_number">
+111
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/punycode.c;hb=HEAD">lib/punycode.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="punycode_encode_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+int
+punycode_encode (size_t input_length,
+                const punycode_uint input[],
+                const unsigned char case_flags[],
+                size_t * output_length, char output[])
+{
+  punycode_uint input_len, n, delta, h, b, bias, j, m, q, k, t;
+  size_t out, max_out;
+
+  /* The Punycode spec assumes that the input length is the same type */
+  /* of integer as a code point, so we need to convert the size_t to  */
+  /* a punycode_uint, which could overflow.                           */
+
+  if (input_length > maxint)
+    return punycode_overflow;
+  input_len = (punycode_uint) input_length;
+
+  /* Initialize the state: */
+
+  n = initial_n;
+  delta = 0;
+  out = 0;
+  max_out = *output_length;
+  bias = initial_bias;
+
+  /* Handle the basic code points: */
+
+  for (j = 0; j < input_len; ++j)
+    {
+      if (basic (input[j]))
+       {
+         if (max_out - out < 2)
+           return punycode_big_output;
+         output[out++] = case_flags ?
+           encode_basic (input[j], case_flags[j]) : (char) input[j];
+       }
+      /* else if (input[j] < n) return punycode_bad_input; */
+      /* (not needed for Punycode with unsigned code points) */
+    }
+
+  h = b = (punycode_uint) out;
+  /* cannot overflow because out <= input_len <= maxint */
+
+  /* h is the number of code points that have been handled, b is the  */
+  /* number of basic code points, and out is the number of ASCII code */
+  /* points that have been output.                                    */
+
+  if (b > 0)
+    output[out++] = delimiter;
+
+  /* Main encoding loop: */
+
+  while (h < input_len)
+    {
+      /* All non-basic code points < n have been     */
+      /* handled already.  Find the next larger one: */
+
+      for (m = maxint, j = 0; j < input_len; ++j)
+       {
+         /* if (basic(input[j])) continue; */
+         /* (not needed for Punycode) */
+         if (input[j] >= n &amp;& input[j] < m)
+           m = input[j];
+       }
+
+      /* Increase delta enough to advance the decoder's    */
+      /* <n,i> state to <m,0>, but guard against overflow: */
+
+      if (m - n > (maxint - delta) / (h + 1))
+       return punycode_overflow;
+      delta += (m - n) * (h + 1);
+      n = m;
+
+      for (j = 0; j < input_len; ++j)
+       {
+         /* Punycode does not need to check whether input[j] is basic: */
+         if (input[j] < n /* || basic(input[j]) */ )
+           {
+             if (++delta == 0)
+               return punycode_overflow;
+           }
+
+         if (input[j] == n)
+           {
+             /* Represent delta as a generalized variable-length integer: */
+
+             for (q = delta, k = base;; k += base)
+               {
+                 if (out >= max_out)
+                   return punycode_big_output;
+                 t = k <= bias /* + tmin */ ? tmin :   /* +tmin not needed */
+                   k >= bias + tmax ? tmax : k - bias;
+                 if (q < t)
+                   break;
+                 output[out++] = encode_digit (t + (q - t) % (base - t), 0);
+                 q = (q - t) / (base - t);
+               }
+
+             output[out++] = encode_digit (q, case_flags &amp;& case_flags[j]);
+             bias = adapt (delta, h + 1, h == b);
+             delta = 0;
+             ++h;
+           }
+       }
+
+      ++delta, ++n;
+    }
+
+  *output_length = out;
+  return punycode_success;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_high">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('punycode_decode_src', 'punycode_decode_button')"><span id="punycode_decode_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+punycode_decode
+</td>
+<td class="function_entry_cyclo">
+21
+</td>
+<td class="function_entry_number">
+59
+</td>
+<td class="function_entry_number">
+101
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/punycode.c;hb=HEAD">lib/punycode.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="punycode_decode_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+int
+punycode_decode (size_t input_length,
+                const char input[],
+                size_t * output_length,
+                punycode_uint output[], unsigned char case_flags[])
+{
+  punycode_uint n, out, i, max_out, bias, oldi, w, k, digit, t;
+  size_t b, j, in;
+
+  /* Initialize the state: */
+
+  n = initial_n;
+  out = i = 0;
+  max_out = *output_length > maxint ? maxint
+    : (punycode_uint) * output_length;
+  bias = initial_bias;
+
+  /* Handle the basic code points:  Let b be the number of input code */
+  /* points before the last delimiter, or 0 if there is none, then    */
+  /* copy the first b code points to the output.                      */
+
+  for (b = j = 0; j < input_length; ++j)
+    if (delim (input[j]))
+      b = j;
+  if (b > max_out)
+    return punycode_big_output;
+
+  for (j = 0; j < b; ++j)
+    {
+      if (case_flags)
+       case_flags[out] = flagged (input[j]);
+      if (!basic (input[j]))
+       return punycode_bad_input;
+      output[out++] = input[j];
+    }
+
+  /* Main decoding loop:  Start just after the last delimiter if any  */
+  /* basic code points were copied; start at the beginning otherwise. */
+
+  for (in = b > 0 ? b + 1 : 0; in < input_length; ++out)
+    {
+
+      /* in is the index of the next ASCII code point to be consumed, */
+      /* and out is the number of code points in the output array.    */
+
+      /* Decode a generalized variable-length integer into delta,  */
+      /* which gets added to i.  The overflow checking is easier   */
+      /* if we increase i as we go, then subtract off its starting */
+      /* value at the end to obtain delta.                         */
+
+      for (oldi = i, w = 1, k = base;; k += base)
+       {
+         if (in >= input_length)
+           return punycode_bad_input;
+         digit = decode_digit (input[in++]);
+         if (digit >= base)
+           return punycode_bad_input;
+         if (digit > (maxint - i) / w)
+           return punycode_overflow;
+         i += digit * w;
+         t = k <= bias /* + tmin */ ? tmin :   /* +tmin not needed */
+           k >= bias + tmax ? tmax : k - bias;
+         if (digit < t)
+           break;
+         if (w > maxint / (base - t))
+           return punycode_overflow;
+         w *= (base - t);
+       }
+
+      bias = adapt (i - oldi, out + 1, oldi == 0);
+
+      /* i was supposed to wrap around from out+1 to 0,   */
+      /* incrementing n each time, so we'll fix that now: */
+
+      if (i / (out + 1) > maxint - n)
+       return punycode_overflow;
+      n += i / (out + 1);
+      i %= (out + 1);
+
+      /* Insert n at position i of the output: */
+
+      /* not needed for Punycode: */
+      /* if (basic(n)) return punycode_invalid_input; */
+      if (out >= max_out)
+       return punycode_big_output;
+
+      if (case_flags)
+       {
+         memmove (case_flags + i + 1, case_flags + i, out - i);
+         /* Case of last ASCII code point determines case flag: */
+         case_flags[i] = flagged (input[in - 1]);
+       }
+
+      memmove (output + i + 1, output + i, (out - i) * sizeof *output);
+      output[i++] = n;
+    }
+
+  *output_length = (size_t) out;
+  /* cannot overflow because out <= old value of *output_length */
+  return punycode_success;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_moderate">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('idna_to_ascii_4z_src', 'idna_to_ascii_4z_button')"><span id="idna_to_ascii_4z_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+idna_to_ascii_4z
+</td>
+<td class="function_entry_cyclo">
+15
+</td>
+<td class="function_entry_number">
+45
+</td>
+<td class="function_entry_number">
+82
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="idna_to_ascii_4z_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+int
+idna_to_ascii_4z (const uint32_t * input, char **output, int flags)
+{
+  const uint32_t *start = input;
+  const uint32_t *end = input;
+  char buf[64];
+  char *out = NULL;
+  int rc;
+
+  /* 1) Whenever dots are used as label separators, the following
+     characters MUST be recognized as dots: U+002E (full stop),
+     U+3002 (ideographic full stop), U+FF0E (fullwidth full stop),
+     U+FF61 (halfwidth ideographic full stop). */
+
+  if (input[0] == 0)
+    {
+      /* Handle implicit zero-length root label. */
+      *output = malloc (1);
+      if (!*output)
+       return IDNA_MALLOC_ERROR;
+      strcpy (*output, "");
+      return IDNA_SUCCESS;
+    }
+
+  if (DOTP (input[0]) &amp;& input[1] == 0)
+    {
+      /* Handle explicit zero-length root label. */
+      *output = malloc (2);
+      if (!*output)
+       return IDNA_MALLOC_ERROR;
+      strcpy (*output, ".");
+      return IDNA_SUCCESS;
+    }
+
+  *output = NULL;
+  do
+    {
+      end = start;
+
+      for (; *end &amp;& !DOTP (*end); end++)
+       ;
+
+      if (*end == '\0' &amp;& start == end)
+       {
+         /* Handle explicit zero-length root label. */
+         buf[0] = '\0';
+       }
+      else
+       {
+         rc = idna_to_ascii_4i (start, (size_t) (end - start), buf, flags);
+         if (rc != IDNA_SUCCESS)
+           return rc;
+       }
+
+      if (out)
+       {
+         char *newp = realloc (out, strlen (out) + 1 + strlen (buf) + 1);
+         if (!newp)
+           {
+             free (out);
+             return IDNA_MALLOC_ERROR;
+           }
+         out = newp;
+         strcat (out, ".");
+         strcat (out, buf);
+       }
+      else
+       {
+         out = (char *) malloc (strlen (buf) + 1);
+         if (!out)
+           return IDNA_MALLOC_ERROR;
+         strcpy (out, buf);
+       }
+
+      start = end + 1;
+    }
+  while (*end);
+
+  *output = out;
+
+  return IDNA_SUCCESS;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_moderate">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('g_utf8_to_ucs4_fast_src', 'g_utf8_to_ucs4_fast_button')"><span id="g_utf8_to_ucs4_fast_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+g_utf8_to_ucs4_fast
+</td>
+<td class="function_entry_cyclo">
+14
+</td>
+<td class="function_entry_number">
+50
+</td>
+<td class="function_entry_number">
+88
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="g_utf8_to_ucs4_fast_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+static gunichar *
+g_utf8_to_ucs4_fast (const gchar * str, glong len, glong * items_written)
+{
+  gint j, charlen;
+  gunichar *result;
+  gint n_chars, i;
+  const gchar *p;
+
+  g_return_val_if_fail (str != NULL, NULL);
+
+  p = str;
+  n_chars = 0;
+  if (len < 0)
+    {
+      while (*p)
+       {
+         p = g_utf8_next_char (p);
+         ++n_chars;
+       }
+    }
+  else
+    {
+      while (p < str + len &amp;& *p)
+       {
+         p = g_utf8_next_char (p);
+         ++n_chars;
+       }
+    }
+
+  result = g_new (gunichar, n_chars + 1);
+  if (!result)
+    return NULL;
+
+  p = str;
+  for (i = 0; i < n_chars; i++)
+    {
+      gunichar wc = ((const unsigned char *) p)[0];
+
+      if (wc < 0x80)
+       {
+         result[i] = wc;
+         p++;
+       }
+      else
+       {
+         if (wc < 0xe0)
+           {
+             charlen = 2;
+             wc &amp;= 0x1f;
+           }
+         else if (wc < 0xf0)
+           {
+             charlen = 3;
+             wc &amp;= 0x0f;
+           }
+         else if (wc < 0xf8)
+           {
+             charlen = 4;
+             wc &amp;= 0x07;
+           }
+         else if (wc < 0xfc)
+           {
+             charlen = 5;
+             wc &amp;= 0x03;
+           }
+         else
+           {
+             charlen = 6;
+             wc &amp;= 0x01;
+           }
+
+         for (j = 1; j < charlen; j++)
+           {
+             wc <<= 6;
+             wc |= ((const unsigned char *) p)[j] &amp; 0x3f;
+           }
+
+         result[i] = wc;
+         p += charlen;
+       }
+    }
+  result[i] = 0;
+
+  if (items_written)
+    *items_written = i;
+
+  return result;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_moderate">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('tld_get_4_src', 'tld_get_4_button')"><span id="tld_get_4_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+tld_get_4
+</td>
+<td class="function_entry_cyclo">
+13
+</td>
+<td class="function_entry_number">
+24
+</td>
+<td class="function_entry_number">
+36
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="tld_get_4_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+int
+tld_get_4 (const uint32_t * in, size_t inlen, char **out)
+{
+  const uint32_t *ipos;
+  size_t olen;
+
+  *out = NULL;
+  if (!in || inlen == 0)
+    return TLD_NODATA;
+
+  ipos = &amp;in[inlen - 1];
+  olen = 0;
+  /* Scan backwards for non(latin)letters. */
+  while (ipos >= in &amp;& ((*ipos >= 0x41 && *ipos <= 0x5A) ||
+                       (*ipos >= 0x61 &amp;& *ipos <= 0x7A)))
+    ipos--, olen++;
+
+  if (olen > 0 &amp;& DOTP (*ipos))    /* Found something that appears a TLD. */
+    {
+      char *out_s = malloc (sizeof (char) * (olen + 1));
+      char *opos = out_s;
+
+      if (!opos)
+       return TLD_MALLOC_ERROR;
+
+      ipos++;
+      /* Transcribe to lowercase ascii string. */
+      for (; ipos < &amp;in[inlen]; ipos++, opos++)
+       *opos = *ipos > 0x5A ? *ipos : *ipos + 0x20;
+      *opos = 0;
+      *out = out_s;
+      return TLD_SUCCESS;
+    }
+
+  return TLD_NO_TLD;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_moderate">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('idna_to_unicode_internal_src', 'idna_to_unicode_internal_button')"><span id="idna_to_unicode_internal_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+idna_to_unicode_internal
+</td>
+<td class="function_entry_cyclo">
+12
+</td>
+<td class="function_entry_number">
+47
+</td>
+<td class="function_entry_number">
+116
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="idna_to_unicode_internal_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+static int
+idna_to_unicode_internal (char *utf8in,
+                         uint32_t * out, size_t * outlen, int flags)
+{
+  int rc;
+  char tmpout[64];
+  size_t utf8len = strlen (utf8in) + 1;
+  size_t addlen = 0;
+
+  /*
+   * ToUnicode consists of the following steps:
+   *
+   * 1. If the sequence contains any code points outside the ASCII range
+   * (0..7F) then proceed to step 2, otherwise skip to step 3.
+   */
+
+  {
+    size_t i;
+    int inasciirange;
+
+    inasciirange = 1;
+    for (i = 0; utf8in[i]; i++)
+      if (utf8in[i] &amp; ~0x7F)
+       inasciirange = 0;
+    if (inasciirange)
+      goto step3;
+  }
+
+  /*
+   * 2. Perform the steps specified in [NAMEPREP] and fail if there is an
+   * error. (If step 3 of ToASCII is also performed here, it will not
+   * affect the overall behavior of ToUnicode, but it is not
+   * necessary.) The AllowUnassigned flag is used in [NAMEPREP].
+   */
+  do
+    {
+      char *newp = realloc (utf8in, utf8len + addlen);
+      if (newp == NULL)
+       {
+         free (utf8in);
+         return IDNA_MALLOC_ERROR;
+       }
+      utf8in = newp;
+      if (flags &amp; IDNA_ALLOW_UNASSIGNED)
+       rc = stringprep_nameprep (utf8in, utf8len + addlen);
+      else
+       rc = stringprep_nameprep_no_unassigned (utf8in, utf8len + addlen);
+      addlen += 1;
+    }
+  while (rc == STRINGPREP_TOO_SMALL_BUFFER);
+
+  if (rc != STRINGPREP_OK)
+    {
+      free (utf8in);
+      return IDNA_STRINGPREP_ERROR;
+    }
+
+  /* 3. Verify that the sequence begins with the ACE prefix, and save a
+   * copy of the sequence.
+   */
+
+step3:
+  if (memcmp (IDNA_ACE_PREFIX, utf8in, strlen (IDNA_ACE_PREFIX)) != 0)
+    {
+      free (utf8in);
+      return IDNA_NO_ACE_PREFIX;
+    }
+
+  /* 4. Remove the ACE prefix.
+   */
+
+  memmove (utf8in, &amp;utf8in[strlen (IDNA_ACE_PREFIX)],
+          strlen (utf8in) - strlen (IDNA_ACE_PREFIX) + 1);
+
+  /* 5. Decode the sequence using the decoding algorithm in [PUNYCODE]
+   * and fail if there is an error. Save a copy of the result of
+   * this step.
+   */
+
+  (*outlen)--;                 /* reserve one for the zero */
+
+  rc = punycode_decode (strlen (utf8in), utf8in, outlen, out, NULL);
+  if (rc != PUNYCODE_SUCCESS)
+    {
+      free (utf8in);
+      return IDNA_PUNYCODE_ERROR;
+    }
+
+  out[*outlen] = 0;            /* add zero */
+
+  /* 6. Apply ToASCII.
+   */
+
+  rc = idna_to_ascii_4i (out, *outlen, tmpout, flags);
+  if (rc != IDNA_SUCCESS)
+    {
+      free (utf8in);
+      return rc;
+    }
+
+  /* 7. Verify that the result of step 6 matches the saved copy from
+   * step 3, using a case-insensitive ASCII comparison.
+   */
+
+  if (c_strcasecmp (utf8in, tmpout + strlen (IDNA_ACE_PREFIX)) != 0)
+    {
+      free (utf8in);
+      return IDNA_ROUNDTRIP_VERIFY_ERROR;
+    }
+
+  /* 8. Return the saved copy from step 5.
+   */
+
+  free (utf8in);
+  return IDNA_SUCCESS;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_moderate">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('combine_src', 'combine_button')"><span id="combine_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+combine
+</td>
+<td class="function_entry_cyclo">
+12
+</td>
+<td class="function_entry_number">
+21
+</td>
+<td class="function_entry_number">
+54
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="combine_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+static gboolean
+combine (gunichar a, gunichar b, gunichar * result)
+{
+  gushort index_a, index_b;
+
+  if (combine_hangul (a, b, result))
+    return TRUE;
+
+  index_a = COMPOSE_INDEX (a);
+
+  if (index_a >= COMPOSE_FIRST_SINGLE_START &amp;& index_a < COMPOSE_SECOND_START)
+    {
+      if (b == compose_first_single[index_a - COMPOSE_FIRST_SINGLE_START][0])
+       {
+         *result =
+           compose_first_single[index_a - COMPOSE_FIRST_SINGLE_START][1];
+         return TRUE;
+       }
+      else
+       return FALSE;
+    }
+
+  index_b = COMPOSE_INDEX (b);
+
+  if (index_b >= COMPOSE_SECOND_SINGLE_START)
+    {
+      if (a ==
+         compose_second_single[index_b - COMPOSE_SECOND_SINGLE_START][0])
+       {
+         *result =
+           compose_second_single[index_b - COMPOSE_SECOND_SINGLE_START][1];
+         return TRUE;
+       }
+      else
+       return FALSE;
+    }
+
+  if (index_a >= COMPOSE_FIRST_START &amp;& index_a < COMPOSE_FIRST_SINGLE_START
+      &amp;& index_b >= COMPOSE_SECOND_START
+      &amp;& index_b < COMPOSE_SECOND_SINGLE_START)
+    {
+      gunichar res =
+       compose_array[index_a - COMPOSE_FIRST_START][index_b -
+                                                    COMPOSE_SECOND_START];
+
+      if (res)
+       {
+         *result = res;
+         return TRUE;
+       }
+    }
+
+  return FALSE;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_moderate">
+<td class="function_entry_filename">
+<a href="javascript:void(0);" title="show/hide function source" onClick="javascript:show_hide('_tld_checkchar_src', '_tld_checkchar_button')"><span id="_tld_checkchar_button">&darr;</span></a>
+</td>
+<td class="function_entry_name">
+_tld_checkchar
+</td>
+<td class="function_entry_cyclo">
+11
+</td>
+<td class="function_entry_number">
+15
+</td>
+<td class="function_entry_number">
+28
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr>
+<td colspan="6" height="0">
+<div id="_tld_checkchar_src" class="function_src" style="position: relative; display: none;">
+<pre class="function_src">
+static int
+_tld_checkchar (uint32_t ch, const Tld_table * tld)
+{
+  const Tld_table_element *s, *e, *m;
+
+  if (!tld)
+    return TLD_SUCCESS;
+
+  /* Check for [-a-z0-9.]. */
+  if ((ch >= 0x61 &amp;& ch <= 0x7A) ||
+      (ch >= 0x30 &amp;& ch <= 0x39) || ch == 0x2D || DOTP (ch))
+    return TLD_SUCCESS;
+
+  s = tld->valid;
+  e = s + tld->nvalid;
+  while (s < e)
+    {
+      m = s + ((e - s) >> 1);
+      if (ch < m->start)
+       e = m;
+      else if (ch > m->end)
+       s = m + 1;
+      else
+       return TLD_SUCCESS;
+    }
+
+  return TLD_INVALID;
+}
+</pre>
+</div>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+g_ucs4_to_utf8
+</td>
+<td class="function_entry_cyclo">
+10
+</td>
+<td class="function_entry_number">
+28
+</td>
+<td class="function_entry_number">
+47
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+find_decomposition
+</td>
+<td class="function_entry_cyclo">
+10
+</td>
+<td class="function_entry_number">
+21
+</td>
+<td class="function_entry_number">
+41
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+combine_hangul
+</td>
+<td class="function_entry_cyclo">
+10
+</td>
+<td class="function_entry_number">
+11
+</td>
+<td class="function_entry_number">
+23
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_profile
+</td>
+<td class="function_entry_cyclo">
+9
+</td>
+<td class="function_entry_number">
+24
+</td>
+<td class="function_entry_number">
+38
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/stringprep.c;hb=HEAD">lib/stringprep.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+g_utf8_strlen
+</td>
+<td class="function_entry_cyclo">
+9
+</td>
+<td class="function_entry_number">
+16
+</td>
+<td class="function_entry_number">
+37
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+g_unichar_to_utf8
+</td>
+<td class="function_entry_cyclo">
+8
+</td>
+<td class="function_entry_number">
+28
+</td>
+<td class="function_entry_number">
+50
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idna_to_unicode_4z4z
+</td>
+<td class="function_entry_cyclo">
+7
+</td>
+<td class="function_entry_number">
+38
+</td>
+<td class="function_entry_number">
+62
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+g_unicode_canonical_ordering
+</td>
+<td class="function_entry_cyclo">
+7
+</td>
+<td class="function_entry_number">
+24
+</td>
+<td class="function_entry_number">
+36
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+decompose_hangul
+</td>
+<td class="function_entry_cyclo">
+7
+</td>
+<td class="function_entry_number">
+16
+</td>
+<td class="function_entry_number">
+34
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+pr29_4
+</td>
+<td class="function_entry_cyclo">
+7
+</td>
+<td class="function_entry_number">
+15
+</td>
+<td class="function_entry_number">
+27
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/pr29.c;hb=HEAD">lib/pr29.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_find_character_in_table
+</td>
+<td class="function_entry_cyclo">
+6
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_number">
+21
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/stringprep.c;hb=HEAD">lib/stringprep.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep
+</td>
+<td class="function_entry_cyclo">
+6
+</td>
+<td class="function_entry_number">
+30
+</td>
+<td class="function_entry_number">
+53
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/stringprep.c;hb=HEAD">lib/stringprep.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_get_table
+</td>
+<td class="function_entry_cyclo">
+5
+</td>
+<td class="function_entry_number">
+9
+</td>
+<td class="function_entry_number">
+14
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_locale_charset
+</td>
+<td class="function_entry_cyclo">
+5
+</td>
+<td class="function_entry_number">
+7
+</td>
+<td class="function_entry_number">
+17
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/toutf8.c;hb=HEAD">lib/toutf8.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_apply_table_to_string
+</td>
+<td class="function_entry_cyclo">
+5
+</td>
+<td class="function_entry_number">
+13
+</td>
+<td class="function_entry_number">
+27
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/stringprep.c;hb=HEAD">lib/stringprep.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_check_4t
+</td>
+<td class="function_entry_cyclo">
+5
+</td>
+<td class="function_entry_number">
+13
+</td>
+<td class="function_entry_number">
+24
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_default_table
+</td>
+<td class="function_entry_cyclo">
+4
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_number">
+16
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+decode_digit
+</td>
+<td class="function_entry_cyclo">
+4
+</td>
+<td class="function_entry_number">
+4
+</td>
+<td class="function_entry_number">
+6
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/punycode.c;hb=HEAD">lib/punycode.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_check_4
+</td>
+<td class="function_entry_cyclo">
+4
+</td>
+<td class="function_entry_number">
+13
+</td>
+<td class="function_entry_number">
+28
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idna_to_unicode_44i
+</td>
+<td class="function_entry_cyclo">
+4
+</td>
+<td class="function_entry_number">
+12
+</td>
+<td class="function_entry_number">
+24
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_find_string_in_table
+</td>
+<td class="function_entry_cyclo">
+4
+</td>
+<td class="function_entry_number">
+10
+</td>
+<td class="function_entry_number">
+19
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/stringprep.c;hb=HEAD">lib/stringprep.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+first_column
+</td>
+<td class="function_entry_cyclo">
+4
+</td>
+<td class="function_entry_number">
+10
+</td>
+<td class="function_entry_number">
+12
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/pr29.c;hb=HEAD">lib/pr29.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+adapt
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+9
+</td>
+<td class="function_entry_number">
+16
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/punycode.c;hb=HEAD">lib/punycode.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_4zi_1
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_number">
+18
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/stringprep.c;hb=HEAD">lib/stringprep.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+combinationclass
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+7
+</td>
+<td class="function_entry_number">
+11
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/pr29.c;hb=HEAD">lib/pr29.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+in_last_column_row
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+7
+</td>
+<td class="function_entry_number">
+11
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/pr29.c;hb=HEAD">lib/pr29.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_check_4z
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+6
+</td>
+<td class="function_entry_number">
+14
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_4zi
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+6
+</td>
+<td class="function_entry_number">
+12
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/stringprep.c;hb=HEAD">lib/stringprep.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_check_4tz
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+6
+</td>
+<td class="function_entry_number">
+13
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_get_4z
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+6
+</td>
+<td class="function_entry_number">
+13
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_check_version
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+3
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/version.c;hb=HEAD">lib/version.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_get_z
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+14
+</td>
+<td class="function_entry_number">
+22
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_check_8z
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+11
+</td>
+<td class="function_entry_number">
+21
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_check_lz
+</td>
+<td class="function_entry_cyclo">
+3
+</td>
+<td class="function_entry_number">
+10
+</td>
+<td class="function_entry_number">
+20
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/tld.c;hb=HEAD">lib/tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+tld_strerror
+</td>
+<td class="function_entry_cyclo">
+7
+</td>
+<td class="function_entry_number">
+17
+</td>
+<td class="function_entry_number">
+40
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/strerror-tld.c;hb=HEAD">lib/strerror-tld.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+punycode_strerror
+</td>
+<td class="function_entry_cyclo">
+5
+</td>
+<td class="function_entry_number">
+13
+</td>
+<td class="function_entry_number">
+32
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/strerror-punycode.c;hb=HEAD">lib/strerror-punycode.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+pr29_strerror
+</td>
+<td class="function_entry_cyclo">
+4
+</td>
+<td class="function_entry_number">
+11
+</td>
+<td class="function_entry_number">
+28
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/strerror-pr29.c;hb=HEAD">lib/strerror-pr29.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idna_to_unicode_8z4z
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+9
+</td>
+<td class="function_entry_number">
+16
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idna_to_ascii_8z
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+9
+</td>
+<td class="function_entry_number">
+18
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idna_to_unicode_lzlz
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_number">
+15
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idna_to_unicode_8zlz
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_number">
+15
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idna_to_unicode_8z8z
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_number">
+15
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idna_to_ascii_lz
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_number">
+16
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idna.c;hb=HEAD">lib/idna.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+g_utf8_get_char
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_number">
+14
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+pr29_8z
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+8
+</td>
+<td class="function_entry_number">
+16
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/pr29.c;hb=HEAD">lib/pr29.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_convert
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+7
+</td>
+<td class="function_entry_number">
+16
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/toutf8.c;hb=HEAD">lib/toutf8.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+pr29_4z
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+6
+</td>
+<td class="function_entry_number">
+10
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/pr29.c;hb=HEAD">lib/pr29.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+encode_basic
+</td>
+<td class="function_entry_cyclo">
+2
+</td>
+<td class="function_entry_number">
+2
+</td>
+<td class="function_entry_number">
+6
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/punycode.c;hb=HEAD">lib/punycode.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_strerror
+</td>
+<td class="function_entry_cyclo">
+13
+</td>
+<td class="function_entry_number">
+29
+</td>
+<td class="function_entry_number">
+64
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/strerror-stringprep.c;hb=HEAD">lib/strerror-stringprep.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idna_strerror
+</td>
+<td class="function_entry_cyclo">
+13
+</td>
+<td class="function_entry_number">
+29
+</td>
+<td class="function_entry_number">
+64
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/strerror-idna.c;hb=HEAD">lib/strerror-idna.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_ucs4_nfkc_normalize
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+6
+</td>
+<td class="function_entry_number">
+12
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+g_utf8_normalize
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+5
+</td>
+<td class="function_entry_number">
+11
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_ucs4_to_utf8
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+1
+</td>
+<td class="function_entry_number">
+7
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+encode_digit
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+1
+</td>
+<td class="function_entry_number">
+7
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/punycode.c;hb=HEAD">lib/punycode.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_utf8_to_ucs4
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+1
+</td>
+<td class="function_entry_number">
+5
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_unichar_to_utf8
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+1
+</td>
+<td class="function_entry_number">
+5
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_utf8_to_unichar
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+1
+</td>
+<td class="function_entry_number">
+5
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/nfkc.c;hb=HEAD">lib/nfkc.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+idn_free
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+1
+</td>
+<td class="function_entry_number">
+5
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/idn-free.c;hb=HEAD">lib/idn-free.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_utf8_to_locale
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+1
+</td>
+<td class="function_entry_number">
+5
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/toutf8.c;hb=HEAD">lib/toutf8.c</a>
+</td>
+</tr>
+<tr class="function_entry_simple">
+<td class="function_entry_filename">
+&nbsp;
+</td>
+<td class="function_entry_name">
+stringprep_locale_to_utf8
+</td>
+<td class="function_entry_cyclo">
+1
+</td>
+<td class="function_entry_number">
+1
+</td>
+<td class="function_entry_number">
+5
+</td>
+<td class="function_entry_filename">
+<a href="http://git.savannah.gnu.org/gitweb/?p=libidn.git;a=blob;f=lib/toutf8.c;hb=HEAD">lib/toutf8.c</a>
+</td>
+</tr>
+</table>
+<hr color="black" size="2"/> Copyright (c) 2007, 2008 Free Software Foundation Inc.
+</body>
+</html>
diff --git a/doc/fdl-1.3.texi b/doc/fdl-1.3.texi
new file mode 100644 (file)
index 0000000..8805f1a
--- /dev/null
@@ -0,0 +1,506 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The ``Document'', below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as ``you''.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification.  Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.)  To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''.  Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''.  You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+  Copyright (C)  @var{year}  @var{your name}.
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.3
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.'' line with this:
+
+@smallexample
+@group
+    with the Invariant Sections being @var{list their titles}, with
+    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+    being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
diff --git a/doc/gdoc b/doc/gdoc
new file mode 100755 (executable)
index 0000000..82d9e0a
--- /dev/null
+++ b/doc/gdoc
@@ -0,0 +1,909 @@
+#!/usr/bin/perl
+
+## Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+##                    added -texinfo, -listfunc, -pkg-name
+##                    man page revamp
+##                    various improvements
+## Copyright (c) 2001, 2002 Nikos Mavrogiannopoulos
+##                    added -tex
+## Copyright (c) 1998 Michael Zucchi
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This will read a C source code file and scan for embedded comments
+# in the style of gnome comments (+minor extensions - see below).
+
+# usage:
+# gdoc [ -docbook | -html | -text | -man | -tex | -texinfo | -listfunc ]
+#      [ -sourceversion verno ] [ -include file | -includefuncprefix ]
+#      [ -bugsto address ] [ -pkg-name packagename ]
+#      [ -seeinfo infonode ] [ -copyright notice ] [ -verbatimcopying ]
+#      [ -function funcname [ -function funcname ...] ] c file(s)s > outputfile
+#
+#  Set output format using one of -docbook, -html, -text, -man, -tex,
+#  -texinfo, or -listfunc.  Default is man.
+#
+#  -sourceversion
+#       Version number for source code, e.g. '1.0.4'.  Used in 'man' headers.
+#       Defaults to using current date.
+#
+#  -include FILE
+#       For man pages, mention #include <FILE.h> in the synopsis.
+#
+#  -includefuncprefix
+#       For man pages, mention a #include <FILE.h> in the synopsis.
+#       The FILE derived from the function prefix.  For example, a
+#       function gss_init_sec_context will generate an include
+#       statement of #include <gss.h>.
+#
+#  -bugsto address
+#       For man pages, include a section about reporting bugs and mention
+#       the given e-mail address, e.g 'bug-libidn@gnu.org'.
+#
+#  -pkg-name packagename
+#       For man pages when -bugsto is used, also include help URLs to the
+#       the project's home page.  For example, "GNU Libidn".
+#
+#  -seeinfo infonode
+#       For man pages, include a section that point to an info manual
+#       for more information.
+#
+#  -copyright notice
+#       For man pages, include a copyright section with the given
+#       notice after a preamble.  Use, e.g., '2002, 2003 Simon Josefsson'.
+#
+#  -verbatimcopying
+#       For man pages, and when the -copyright parameter is used,
+#       add a licensing statement that say verbatim copying is permitted.
+#
+#  -function funcname
+#      If set, then only generate documentation for the given function(s).  All
+#      other functions are ignored.
+#
+#  c files - list of 'c' files to process
+#
+#  All output goes to stdout, with errors to stderr.
+
+#
+# format of comments.
+# In the following table, (...)? signifies optional structure.
+#                         (...)* signifies 0 or more structure elements
+# /**
+#  * function_name(:)? (- short description)?
+# (* @parameterx: (description of parameter x)?)*
+# (* a blank line)?
+#  * (Description:)? (Description of function)?
+#  * (Section header: (section description)? )*
+#  (*)?*/
+#
+# So .. the trivial example would be:
+#
+# /**
+#  * my_function
+#  **/
+#
+# If the Description: header tag is ommitted, then there must be a blank line
+# after the last parameter specification.
+# e.g.
+# /**
+#  * my_function - does my stuff
+#  * @my_arg: its mine damnit
+#  *
+#  * Does my stuff explained. 
+#  */
+#
+#  or, could also use:
+# /**
+#  * my_function - does my stuff
+#  * @my_arg: its mine damnit
+#  * Description: Does my stuff explained. 
+#  */
+# etc.
+#
+# All descriptions can be multiline, apart from the short function description.
+#
+# All descriptive text is further processed, scanning for the following special
+# patterns, which are highlighted appropriately.
+#
+# 'funcname()' - function
+# '$ENVVAR' - environmental variable OBSOLETE (?)
+# '#struct_name' - name of a structure
+# '@parameter' - name of a parameter
+# '%CONST' - name of a constant.
+
+#
+# Extensions for LaTeX:
+#
+# 1. the symbol '->' will be replaced with a rightarrow
+# 2. x^y with ${x}^{y}$.
+# 3. xxx\: with xxx:
+
+use POSIX qw(strftime);
+
+# match expressions used to find embedded type information
+$type_constant = "\\\%(\\w+)";
+$type_func = "(\\w+\\(\\))";
+$type_param = "\\\@(\\w+)";
+$type_struct = "\\\#(\\w+)";
+$type_env = "(\\\$\\w+)";
+
+
+# Output conversion substitutions.
+#  One for each output format
+
+# these work fairly well
+%highlights_html = ( $type_constant, "<i>\$1</i>",
+                    $type_func, "<b>\$1</b>",
+                    $type_struct, "<i>\$1</i>",
+                    $type_param, "<tt><b>\$1</b></tt>" );
+$blankline_html = "<p>";
+
+%highlights_texinfo = ( $type_constant, "\\\@code{\$1}",
+                       $type_func, "\\\@code{\$1}",
+                       $type_struct, "\\\@code{\$1}",
+                       $type_param, "\\\@code{\$1}" );
+$blankline_texinfo = "";
+
+%highlights_tex = ( $type_constant, "{\\\\it \$1}",
+                    $type_func, "{\\\\bf \$1}",
+                    $type_struct, "{\\\\it \$1}",
+                    $type_param, "{\\\\bf \$1}" );
+$blankline_tex = "\\\\";
+
+# sgml, docbook format
+%highlights_sgml = ( $type_constant, "<replaceable class=\"option\">\$1</replaceable>",
+                    $type_func, "<function>\$1</function>",
+                    $type_struct, "<structname>\$1</structname>",
+                    $type_env, "<envar>\$1</envar>",
+                    $type_param, "<parameter>\$1</parameter>" );
+$blankline_sgml = "</para><para>\n";
+
+# these are pretty rough
+%highlights_man = ( $type_constant, "\\\\fB\$1\\\\fP",
+                   $type_func, "\\\\fB\$1\\\\fP",
+                   $type_struct, "\\\\fB\$1\\\\fP",
+                   $type_param, "\\\\fI\$1\\\\fP" );
+$blankline_man = "";
+
+# text-mode
+%highlights_text = ( $type_constant, "\$1",
+                    $type_func, "\$1",
+                    $type_struct, "\$1",
+                    $type_param, "\$1" );
+$blankline_text = "";
+
+
+sub usage {
+    print "Usage: $0 [ -v ] [ -docbook | -html | -text | -man | -tex | -texinfo  -listfunc ]\n";
+    print "         [ -sourceversion verno ] [ -include file | -includefuncprefix ]\n";
+    print "         [ -bugsto address ] [ -seeinfo infonode ] [ -copyright notice]\n";
+    print "         [ -verbatimcopying ] [ -pkg-name packagename ]\n";
+    print "         [ -function funcname [ -function funcname ...] ]\n";
+    print "         c source file(s) > outputfile\n";
+    exit 1;
+}
+
+# read arguments
+if ($#ARGV==-1) {
+    usage();
+}
+
+$verbose = 0;
+$output_mode = "man";
+%highlights = %highlights_man;
+$blankline = $blankline_man;
+$modulename = "API Documentation";
+$sourceversion = strftime "%Y-%m-%d", localtime;
+$function_only = 0;
+while ($ARGV[0] =~ m/^-(.*)/) {
+    $cmd = shift @ARGV;
+    if ($cmd eq "-html") {
+       $output_mode = "html";
+       %highlights = %highlights_html;
+       $blankline = $blankline_html;
+    } elsif ($cmd eq "-man") {
+       $output_mode = "man";
+       %highlights = %highlights_man;
+       $blankline = $blankline_man;
+    } elsif ($cmd eq "-tex") {
+       $output_mode = "tex";
+       %highlights = %highlights_tex;
+       $blankline = $blankline_tex;
+    } elsif ($cmd eq "-texinfo") {
+       $output_mode = "texinfo";
+       %highlights = %highlights_texinfo;
+       $blankline = $blankline_texinfo;
+    } elsif ($cmd eq "-text") {
+       $output_mode = "text";
+       %highlights = %highlights_text;
+       $blankline = $blankline_text;
+    } elsif ($cmd eq "-docbook") {
+       $output_mode = "sgml";
+       %highlights = %highlights_sgml;
+       $blankline = $blankline_sgml;
+    } elsif ($cmd eq "-listfunc") {
+       $output_mode = "listfunc";
+    } elsif ($cmd eq "-module") { # not needed for sgml, inherits from calling document
+       $modulename = shift @ARGV;
+    } elsif ($cmd eq "-sourceversion") {
+       $sourceversion = shift @ARGV;
+    } elsif ($cmd eq "-include") {
+       $include = shift @ARGV;
+    } elsif ($cmd eq "-includefuncprefix") {
+       $includefuncprefix = 1;
+    } elsif ($cmd eq "-bugsto") {
+       $bugsto = shift @ARGV;
+    } elsif ($cmd eq "-pkg-name") {
+       $pkgname = shift @ARGV;
+    } elsif ($cmd eq "-copyright") {
+       $copyright = shift @ARGV;
+    } elsif ($cmd eq "-verbatimcopying") {
+       $verbatimcopying = 1;
+    } elsif ($cmd eq "-seeinfo") {
+       $seeinfo = shift @ARGV;
+    } elsif ($cmd eq "-function") { # to only output specific functions
+       $function_only = 1;
+       $function = shift @ARGV;
+       $function_table{$function} = 1;
+    } elsif ($cmd eq "-v") {
+       $verbose = 1;
+    } elsif (($cmd eq "-h") || ($cmd eq "--help")) {
+       usage();
+    }
+}
+
+##
+# dumps section contents to arrays/hashes intended for that purpose.
+#
+sub dump_section {
+    my $name = shift @_;
+    my $contents = join "\n", @_;
+
+    if ($name =~ m/$type_constant/) {
+       $name = $1;
+#      print STDERR "constant section '$1' = '$contents'\n";
+       $constants{$name} = $contents;
+    } elsif ($name =~ m/$type_param/) {
+#      print STDERR "parameter def '$1' = '$contents'\n";
+       $name = $1;
+       $parameters{$name} = $contents;
+    } else {
+#      print STDERR "other section '$name' = '$contents'\n";
+       $sections{$name} = $contents;
+       push @sectionlist, $name;
+    }
+}
+
+##
+# output function
+#
+# parameters, a hash.
+#  function => "function name"
+#  parameterlist => @list of parameters
+#  parameters => %parameter descriptions
+#  sectionlist => @list of sections
+#  sections => %descriont descriptions
+#  
+
+sub repstr {
+    $pattern = shift;
+    $repl = shift;
+    $match1 = shift;
+    $match2 = shift;
+    $match3 = shift;
+    $match4 = shift;
+
+    $output = $repl;
+    $output =~ s,\$1,$match1,g;
+    $output =~ s,\$2,$match2,g;
+    $output =~ s,\$3,$match3,g;
+    $output =~ s,\$4,$match4,g;
+
+    eval "\$return = qq/$output/";
+
+#    print "pattern $pattern matched 1=$match1 2=$match2 3=$match3 4=$match4 replace $repl yielded $output interpolated $return\n";
+
+    $return;
+}
+
+sub just_highlight {
+    my $contents = join "\n", @_;
+    my $line;
+    my $ret = "";
+
+    foreach $pattern (keys %highlights) {
+#      print "scanning pattern $pattern ($highlights{$pattern})\n";
+       $contents =~ s:$pattern:repstr($pattern, $highlights{$pattern}, $1, $2, $3, $4):gse;
+    }
+    foreach $line (split "\n", $contents) {
+       if ($line eq ""){
+           $ret = $ret . $lineprefix . $blankline;
+       } else {
+           $ret = $ret . $lineprefix . $line;
+       }
+       $ret = $ret . "\n";
+    }
+
+    return $ret;
+}
+
+sub output_highlight {
+    print (just_highlight (@_));
+}
+
+# output in texinfo
+sub output_texinfo {
+    my %args = %{$_[0]};
+    my ($parameter, $section);
+    my $count;
+
+    print "\@subheading ".$args{'function'}."\n";
+    print "\@anchor{".$args{'function'}."}\n";
+    print "\@deftypefun {" . $args{'functiontype'} . "} ";
+    print "{".$args{'function'}."} ";
+    print "(";
+    $count = 0;
+    foreach $parameter (@{$args{'parameterlist'}}) {
+       print $args{'parametertypes'}{$parameter}." \@var{".$parameter."}";
+       if ($count != $#{$args{'parameterlist'}}) {
+           $count++;
+           print ", ";
+       }
+    }
+    print ")\n";
+    foreach $parameter (@{$args{'parameterlist'}}) {
+       if ($args{'parameters'}{$parameter}) {
+           print "\@var{".$parameter."}: ";
+           output_highlight($args{'parameters'}{$parameter});
+           print "\n";
+       }
+    }
+    foreach $section (@{$args{'sectionlist'}}) {
+       print "\n\@strong{$section:} " if $section ne $section_default;
+       $args{'sections'}{$section} =~ s:([{}]):\@\1:gs;
+       output_highlight($args{'sections'}{$section});
+    }
+    print "\@end deftypefun\n\n";
+}
+
+# output in html
+sub output_html {
+    my %args = %{$_[0]};
+    my ($parameter, $section);
+    my $count;
+    print "\n\n<a name=\"". $args{'function'} . "\">&nbsp</a><h2>Function</h2>\n";
+
+    print "<i>".$args{'functiontype'}."</i>\n";
+    print "<b>".$args{'function'}."</b>\n";
+    print "(";
+    $count = 0;
+    foreach $parameter (@{$args{'parameterlist'}}) {
+       print "<i>".$args{'parametertypes'}{$parameter}."</i> <b>".$parameter."</b>\n";
+       if ($count != $#{$args{'parameterlist'}}) {
+           $count++;
+           print ", ";
+       }
+    }
+    print ")\n";
+
+    print "<h3>Arguments</h3>\n";
+    print "<dl>\n";
+    foreach $parameter (@{$args{'parameterlist'}}) {
+       print "<dt><i>".$args{'parametertypes'}{$parameter}."</i> <b>".$parameter."</b>\n";
+       print "<dd>";
+       output_highlight($args{'parameters'}{$parameter});
+    }
+    print "</dl>\n";
+    foreach $section (@{$args{'sectionlist'}}) {
+       print "<h3>$section</h3>\n";
+       print "<ul>\n";
+       output_highlight($args{'sections'}{$section});
+       print "</ul>\n";
+    }
+    print "<hr>\n";
+}
+
+# output in tex
+sub output_tex {
+    my %args = %{$_[0]};
+    my ($parameter, $section);
+    my $count;
+    my $func = $args{'function'};
+    my $param;
+    my $param2;
+    my $sec;
+    my $check;
+    my $type;
+
+    $func =~ s/_/\\_/g;
+
+    print "\n\n\\subsection{". $func . "}\n\\label{" . $args{'function'} . "}\n";
+
+    $type = $args{'functiontype'};
+    $type =~ s/_/\\_/g;
+
+    print "{\\it ".$type."}\n";
+    print "{\\bf ".$func."}\n";
+    print "(";
+    $count = 0;
+    foreach $parameter (@{$args{'parameterlist'}}) {
+        $param = $args{'parametertypes'}{$parameter};
+        $param2 = $parameter;
+       $param =~ s/_/\\_/g;
+        $param2 =~ s/_/\\_/g;
+
+       print "{\\it ".$param."} {\\bf ".$param2."}";
+       if ($count != $#{$args{'parameterlist'}}) {
+           $count++;
+           print ", ";
+       }
+    }
+    print ")\n";
+
+    print "\n{\\large{Arguments}}\n";
+
+    print "\\begin{itemize}\n";
+    $check=0;
+    foreach $parameter (@{$args{'parameterlist'}}) {
+        $param1 = $args{'parametertypes'}{$parameter};
+        $param1 =~ s/_/\\_/g;
+        $param2 = $parameter;
+       $param2 =~ s/_/\\_/g;
+
+       $check = 1;
+       print "\\item {\\it ".$param1."} {\\bf ".$param2."}: \n";
+#      print "\n";
+
+       $param3 = $args{'parameters'}{$parameter};
+       $param3 =~ s/#([a-zA-Z\_]+)/{\\it \1}/g;
+
+       $out = just_highlight($param3);
+       $out =~ s/_/\\_/g;
+       print $out;
+    }
+    if ($check==0) {
+       print "\\item void\n";
+    }
+    print "\\end{itemize}\n";
+
+    foreach $section (@{$args{'sectionlist'}}) {
+       $sec = $section;
+       $sec =~ s/_/\\_/g;
+       $sec =~ s/#([a-zA-Z\_]+)/{\\it \1}/g;
+
+       print "\n{\\large{$sec}}\\\\\n";
+       print "\\begin{rmfamily}\n";
+
+       $sec = $args{'sections'}{$section};
+       $sec =~ s/\\:/:/g;
+       $sec =~ s/#([a-zA-Z\_]+)/{\\it \1}/g;
+       $sec =~ s/->/\$\\rightarrow\$/g;
+       $sec =~ s/([0-9]+)\^([0-9]+)/\$\{\1\}\^\{\2\}\$/g;
+
+       $out = just_highlight($sec);
+       $out =~ s/_/\\_/g;
+
+       print $out;
+       print "\\end{rmfamily}\n";
+    }
+    print "\n";
+}
+
+
+# output in sgml DocBook
+sub output_sgml {
+    my %args = %{$_[0]};
+    my ($parameter, $section);
+    my $count;
+    my $id;
+
+    $id = $args{'module'}."-".$args{'function'};
+    $id =~ s/[^A-Za-z0-9]/-/g;
+
+    print "<refentry>\n";
+    print "<refmeta>\n";
+    print "<refentrytitle><phrase id=\"$id\">".$args{'function'}."</phrase></refentrytitle>\n";
+    print "</refmeta>\n";
+    print "<refnamediv>\n";
+    print " <refname>".$args{'function'}."</refname>\n";
+    print " <refpurpose>\n";
+    print "  ".$args{'purpose'}."\n";
+    print " </refpurpose>\n";
+    print "</refnamediv>\n";
+
+    print "<refsynopsisdiv>\n";
+    print " <title>Synopsis</title>\n";
+    print "  <funcsynopsis>\n";
+    print "   <funcdef>".$args{'functiontype'}." ";
+    print "<function>".$args{'function'}." ";
+    print "</function></funcdef>\n";
+
+#    print "<refsect1>\n";
+#    print " <title>Synopsis</title>\n";
+#    print "  <funcsynopsis>\n";
+#    print "   <funcdef>".$args{'functiontype'}." ";
+#    print "<function>".$args{'function'}." ";
+#    print "</function></funcdef>\n";
+
+    $count = 0;
+    if ($#{$args{'parameterlist'}} >= 0) {
+       foreach $parameter (@{$args{'parameterlist'}}) {
+           print "   <paramdef>".$args{'parametertypes'}{$parameter};
+           print " <parameter>$parameter</parameter></paramdef>\n";
+       }
+    } else {
+       print "  <void>\n";
+    }
+    print "  </funcsynopsis>\n";
+    print "</refsynopsisdiv>\n";
+#    print "</refsect1>\n";
+
+    # print parameters
+    print "<refsect1>\n <title>Arguments</title>\n";
+#    print "<para>\nArguments\n";
+    if ($#{$args{'parameterlist'}} >= 0) {
+       print " <variablelist>\n";
+       foreach $parameter (@{$args{'parameterlist'}}) {
+           print "  <varlistentry>\n   <term><parameter>$parameter</parameter></term>\n";
+           print "   <listitem>\n    <para>\n";
+           $lineprefix="     ";
+           output_highlight($args{'parameters'}{$parameter});
+           print "    </para>\n   </listitem>\n  </varlistentry>\n";
+       }
+       print " </variablelist>\n";
+    } else {
+       print " <para>\n  None\n </para>\n";
+    }
+    print "</refsect1>\n";
+
+    # print out each section
+    $lineprefix="   ";
+    foreach $section (@{$args{'sectionlist'}}) {
+       print "<refsect1>\n <title>$section</title>\n <para>\n";
+#      print "<para>\n$section\n";
+       if ($section =~ m/EXAMPLE/i) {
+           print "<example><para>\n";
+       }
+       output_highlight($args{'sections'}{$section});
+#      print "</para>";
+       if ($section =~ m/EXAMPLE/i) {
+           print "</para></example>\n";
+       }
+       print " </para>\n</refsect1>\n";
+    }
+
+    print "\n\n";
+}
+
+##
+# output in man
+sub output_man {
+    my %args = %{$_[0]};
+    my ($parameter, $section);
+    my $count;
+
+    print ".\\\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.\n";
+    print ".TH \"$args{'function'}\" 3 \"$args{'sourceversion'}\" \"". $args{'module'} . "\" \"". $args{'module'} . "\"\n";
+
+    print ".SH NAME\n";
+
+    print $args{'function'};
+    if ($args{'purpose'}) {
+       print " \\- " . $args{'purpose'} . "\n";
+    } else {
+       print " \\- API function\n";
+    }
+
+    print ".SH SYNOPSIS\n";
+    print ".B #include <". $args{'include'} . ">\n"
+       if $args{'include'};
+    print ".B #include <". lc((split /_/, $args{'function'})[0]) . ".h>\n"
+       if $args{'includefuncprefix'};
+    print ".sp\n";
+    print ".BI \"".$args{'functiontype'}." ".$args{'function'}."(";
+    $count = 0;
+    foreach $parameter (@{$args{'parameterlist'}}) {
+       print $args{'parametertypes'}{$parameter}." \" ".$parameter." \"";
+       if ($count != $#{$args{'parameterlist'}}) {
+           $count++;
+           print ", ";
+       }
+    }
+    print ");\"\n";
+
+    print ".SH ARGUMENTS\n";
+    foreach $parameter (@{$args{'parameterlist'}}) {
+       print ".IP \"".$args{'parametertypes'}{$parameter}." ".$parameter."\" 12\n";
+       $param = $args{'parameters'}{$parameter};
+       $param =~ s/-/\\-/g;
+       output_highlight($param);
+    }
+    foreach $section (@{$args{'sectionlist'}}) {
+       print ".SH \"" . uc($section) . "\"\n";
+       $sec = $args{'sections'}{$section};
+       $sec =~ s/-/\\-/g;
+       output_highlight($sec);
+    }
+
+    if ($args{'bugsto'}) {
+       print ".SH \"REPORTING BUGS\"\n";
+       print "Report bugs to <". $args{'bugsto'} . ">.\n";
+       if ($args{'pkgname'}) {
+           print $args{'pkgname'} . " home page: " .
+               "http://www.gnu.org/software/" . $args{'module'} . "/\n";
+       }
+       print "General help using GNU software: http://www.gnu.org/gethelp/\n";
+    }
+
+    if ($args{'copyright'}) {
+       print ".SH COPYRIGHT\n";
+       print "Copyright \\(co ". $args{'copyright'} . ".\n";
+       if ($args{'verbatimcopying'}) {
+           print ".br\n";
+           print "Copying and distribution of this file, with or without modification,\n";
+           print "are permitted in any medium without royalty provided the copyright\n";
+           print "notice and this notice are preserved.\n";
+       }
+    }
+
+    if ($args{'seeinfo'}) {
+       print ".SH \"SEE ALSO\"\n";
+       print "The full documentation for\n";
+       print ".B " . $args{'module'} . "\n";
+       print "is maintained as a Texinfo manual.  If the\n";
+       print ".B info\n";
+       print "and\n";
+       print ".B " . $args{'module'} . "\n";
+       print "programs are properly installed at your site, the command\n";
+       print ".IP\n";
+       print ".B info " . $args{'seeinfo'} . "\n";
+       print ".PP\n";
+       print "should give you access to the complete manual.\n";
+    }
+}
+
+sub output_listfunc {
+    my %args = %{$_[0]};
+    print $args{'function'} . "\n";
+}
+
+##
+# output in text
+sub output_text {
+    my %args = %{$_[0]};
+    my ($parameter, $section);
+
+    print "Function = ".$args{'function'}."\n";
+    print "  return type: ".$args{'functiontype'}."\n\n";
+    foreach $parameter (@{$args{'parameterlist'}}) {
+       print " ".$args{'parametertypes'}{$parameter}." ".$parameter."\n";
+       print "    -> ".$args{'parameters'}{$parameter}."\n";
+    }
+    foreach $section (@{$args{'sectionlist'}}) {
+       print " $section:\n";
+       print "    -> ";
+       output_highlight($args{'sections'}{$section});
+    }
+}
+
+##
+# generic output function - calls the right one based
+# on current output mode.
+sub output_function {
+#    output_html(@_);
+    eval "output_".$output_mode."(\@_);";
+}
+
+
+##
+# takes a function prototype and spits out all the details
+# stored in the global arrays/hsahes.
+sub dump_function {
+    my $prototype = shift @_;
+
+    if ($prototype =~ m/^()([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ ||
+       $prototype =~ m/^(\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ ||
+       $prototype =~ m/^(\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ ||
+       $prototype =~ m/^(\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ ||
+       $prototype =~ m/^(\w+\s+\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/)  {
+       $return_type = $1;
+       $function_name = $2;
+       $args = $3;
+
+#      print STDERR "ARGS = '$args'\n";
+
+       foreach $arg (split ',', $args) {
+           # strip leading/trailing spaces
+           $arg =~ s/^\s*//;
+           $arg =~ s/\s*$//;
+#          print STDERR "SCAN ARG: '$arg'\n";
+           @args = split('\s', $arg);
+
+#          print STDERR " -> @args\n";
+           $param = pop @args;
+#          print STDERR " -> @args\n";
+           if ($param =~ m/^(\*+)(.*)/) {
+               $param = $2;
+               push @args, $1;
+           }
+           if ($param =~ m/^(.*)(\[\])$/) {
+               $param = $1;
+               push @args, $2;
+           }
+#          print STDERR " :> @args\n";
+           $type = join " ", @args;
+
+           if ($parameters{$param} eq "" && $param != "void") {
+               $parameters{$param} = "-- undescribed --";
+               print STDERR "warning: $lineno: Function parameter '$param' not described in '$function_name'\n";
+           }
+
+           push @parameterlist, $param;
+           $parametertypes{$param} = $type;
+
+#          print STDERR "param = '$param', type = '$type'\n";
+       }
+    } else {
+       print STDERR "warning: $lineno: Cannot understand prototype: '$prototype'\n";
+       return;
+    }
+
+    if ($function_only==0 || defined($function_table{$function_name})) {
+       output_function({'function' => $function_name,
+                        'module' => $modulename,
+                        'sourceversion' => $sourceversion,
+                        'include' => $include,
+                        'includefuncprefix' => $includefuncprefix,
+                        'bugsto' => $bugsto,
+                        'pkgname' => $pkgname,
+                        'copyright' => $copyright,
+                        'verbatimcopying' => $verbatimcopying,
+                        'seeinfo' => $seeinfo,
+                        'functiontype' => $return_type,
+                        'parameterlist' => \@parameterlist,
+                        'parameters' => \%parameters,
+                        'parametertypes' => \%parametertypes,
+                        'sectionlist' => \@sectionlist,
+                        'sections' => \%sections,
+                        'purpose' => $function_purpose
+                        });
+    }
+}
+
+######################################################################
+# main
+# states
+# 0 - normal code
+# 1 - looking for function name
+# 2 - scanning field start.
+# 3 - scanning prototype.
+$state = 0;
+$section = "";
+
+$doc_special = "\@\%\$\#";
+
+$doc_start = "^/\\*\\*\$";
+$doc_end = "\\*/";
+$doc_com = "\\s*\\*\\s*";
+$doc_func = $doc_com."(\\w+):?";
+$doc_sect = $doc_com."([".$doc_special."[:upper:]][\\w ]+):\\s*(.*)";
+$doc_content = $doc_com."(.*)";
+
+%constants = ();
+%parameters = ();
+@parameterlist = ();
+%sections = ();
+@sectionlist = ();
+
+$contents = "";
+$section_default = "Description";      # default section
+$section = $section_default;
+
+$lineno = 0;
+foreach $file (@ARGV) {
+    if (!open(IN,"<$file")) {
+       print STDERR "Error: Cannot open file $file\n";
+       next;
+    }
+    while (<IN>) {
+       $lineno++;
+
+       if ($state == 0) {
+           if (/$doc_start/o) {
+               $state = 1;             # next line is always the function name
+           }
+       } elsif ($state == 1) { # this line is the function name (always)
+           if (/$doc_func/o) {
+               $function = $1;
+               $state = 2;
+               if (/-\s*(.*)/) {
+                   $function_purpose = $1;
+               } else {
+                   $function_purpose = "";
+               }
+               if ($verbose) {
+                   print STDERR "Info($lineno): Scanning doc for $function\n";
+               }
+           } else {
+               print STDERR "warning: $lineno: Cannot understand $_ on line $lineno",
+               " - I thought it was a doc line\n";
+               $state = 0;
+           }
+       } elsif ($state == 2) { # look for head: lines, and include content
+           if (/$doc_sect/o) {
+               $newsection = $1;
+               $newcontents = $2;
+
+               if ($contents ne "") {
+                   dump_section($section, $contents);
+                   $section = $section_default;
+               }
+
+               $contents = $newcontents;
+               if ($contents ne "") {
+                   $contents .= "\n";
+               }
+               $section = $newsection;
+           } elsif (/$doc_end/) {
+
+               if ($contents ne "") {
+                   dump_section($section, $contents);
+                   $section = $section_default;
+                   $contents = "";
+               }
+
+#          print STDERR "end of doc comment, looking for prototype\n";
+               $prototype = "";
+               $state = 3;
+           } elsif (/$doc_content/) {
+               # miguel-style comment kludge, look for blank lines after
+               # @parameter line to signify start of description
+               if ($1 eq "" && $section =~ m/^@/) {
+                   dump_section($section, $contents);
+                   $section = $section_default;
+                   $contents = "";
+               } else {
+                   $contents .= $1."\n";
+               }
+           } else {
+               # i dont know - bad line?  ignore.
+               print STDERR "warning: $lineno: Bad line: $_";
+           }
+       } elsif ($state == 3) { # scanning for function { (end of prototype)
+           if (m#\s*/\*\s+MACDOC\s*#io) {
+             # do nothing
+           }
+           elsif (/([^\{]*)/) {
+               $prototype .= $1;
+           }
+           if (/\{/) {
+               $prototype =~ s@/\*.*?\*/@@gos; # strip comments.
+               $prototype =~ s@[\r\n]+@ @gos; # strip newlines/cr's.
+               $prototype =~ s@^ +@@gos; # strip leading spaces
+               dump_function($prototype);
+
+               $function = "";
+               %constants = ();
+               %parameters = ();
+               %parametertypes = ();
+               @parameterlist = ();
+               %sections = ();
+               @sectionlist = ();
+               $prototype = "";
+
+               $state = 0;
+           }
+       }
+    }
+}
diff --git a/doc/gpl-3.0.texi b/doc/gpl-3.0.texi
new file mode 100644 (file)
index 0000000..97a17e1
--- /dev/null
@@ -0,0 +1,717 @@
+@c The GNU General Public License.
+@center Version 3, 29 June 2007
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+@end display
+
+@heading Preamble
+
+The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom
+to share and change all versions of a program---to make sure it remains
+free software for all its users.  We, the Free Software Foundation,
+use the GNU General Public License for most of our software; it
+applies also to any other work released this way by its authors.  You
+can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you
+have certain responsibilities if you distribute copies of the
+software, or if you modify it: responsibilities to respect the freedom
+of others.
+
+For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too,
+receive or can get the source code.  And you must show them these
+terms so they know their rights.
+
+Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the
+manufacturer can do so.  This is fundamentally incompatible with the
+aim of protecting users' freedom to change the software.  The
+systematic pattern of such abuse occurs in the area of products for
+individuals to use, which is precisely where it is most unacceptable.
+Therefore, we have designed this version of the GPL to prohibit the
+practice for those products.  If such problems arise substantially in
+other domains, we stand ready to extend this provision to those
+domains in future versions of the GPL, as needed to protect the
+freedom of users.
+
+Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish
+to avoid the special danger that patents applied to a free program
+could make it effectively proprietary.  To prevent this, the GPL
+assures that patents cannot be used to render the program non-free.
+
+The precise terms and conditions for copying, distribution and
+modification follow.
+
+@heading TERMS AND CONDITIONS
+
+@enumerate 0
+@item Definitions.
+
+``This License'' refers to version 3 of the GNU General Public License.
+
+``Copyright'' also means copyright-like laws that apply to other kinds
+of works, such as semiconductor masks.
+
+``The Program'' refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as ``you''.  ``Licensees'' and
+``recipients'' may be individuals or organizations.
+
+To ``modify'' a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of
+an exact copy.  The resulting work is called a ``modified version'' of
+the earlier work or a work ``based on'' the earlier work.
+
+A ``covered work'' means either the unmodified Program or a work based
+on the Program.
+
+To ``propagate'' a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+To ``convey'' a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user
+through a computer network, with no transfer of a copy, is not
+conveying.
+
+An interactive user interface displays ``Appropriate Legal Notices'' to
+the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+@item Source Code.
+
+The ``source code'' for a work means the preferred form of the work for
+making modifications to it.  ``Object code'' means any non-source form
+of a work.
+
+A ``Standard Interface'' means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+The ``System Libraries'' of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+``Major Component'', in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+The ``Corresponding Source'' for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+The Corresponding Source need not include anything that users can
+regenerate automatically from other parts of the Corresponding Source.
+
+The Corresponding Source for a work in source code form is that same
+work.
+
+@item Basic Permissions.
+
+All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+You may make, run and propagate covered works that you do not convey,
+without conditions so long as your license otherwise remains in force.
+You may convey covered works to others for the sole purpose of having
+them make modifications exclusively for you, or provide you with
+facilities for running those works, provided that you comply with the
+terms of this License in conveying all material for which you do not
+control copyright.  Those thus making or running the covered works for
+you must do so exclusively on your behalf, under your direction and
+control, on terms that prohibit them from making any copies of your
+copyrighted material outside their relationship with you.
+
+Conveying under any other circumstances is permitted solely under the
+conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+@item Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such
+circumvention is effected by exercising rights under this License with
+respect to the covered work, and you disclaim any intention to limit
+operation or modification of the work as a means of enforcing, against
+the work's users, your or third parties' legal rights to forbid
+circumvention of technological measures.
+
+@item Conveying Verbatim Copies.
+
+You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+@item Conveying Modified Source Versions.
+
+You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these
+conditions:
+
+@enumerate a
+@item
+The work must carry prominent notices stating that you modified it,
+and giving a relevant date.
+
+@item
+The work must carry prominent notices stating that it is released
+under this License and any conditions added under section 7.  This
+requirement modifies the requirement in section 4 to ``keep intact all
+notices''.
+
+@item
+You must license the entire work, as a whole, under this License to
+anyone who comes into possession of a copy.  This License will
+therefore apply, along with any applicable section 7 additional terms,
+to the whole of the work, and all its parts, regardless of how they
+are packaged.  This License gives no permission to license the work in
+any other way, but it does not invalidate such permission if you have
+separately received it.
+
+@item
+If the work has interactive user interfaces, each must display
+Appropriate Legal Notices; however, if the Program has interactive
+interfaces that do not display Appropriate Legal Notices, your work
+need not make them do so.
+@end enumerate
+
+A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+``aggregate'' if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+@item  Conveying Non-Source Forms.
+
+You may convey a covered work in object code form under the terms of
+sections 4 and 5, provided that you also convey the machine-readable
+Corresponding Source under the terms of this License, in one of these
+ways:
+
+@enumerate a
+@item
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by the
+Corresponding Source fixed on a durable physical medium customarily
+used for software interchange.
+
+@item
+Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by a written
+offer, valid for at least three years and valid for as long as you
+offer spare parts or customer support for that product model, to give
+anyone who possesses the object code either (1) a copy of the
+Corresponding Source for all the software in the product that is
+covered by this License, on a durable physical medium customarily used
+for software interchange, for a price no more than your reasonable
+cost of physically performing this conveying of source, or (2) access
+to copy the Corresponding Source from a network server at no charge.
+
+@item
+Convey individual copies of the object code with a copy of the written
+offer to provide the Corresponding Source.  This alternative is
+allowed only occasionally and noncommercially, and only if you
+received the object code with such an offer, in accord with subsection
+6b.
+
+@item
+Convey the object code by offering access from a designated place
+(gratis or for a charge), and offer equivalent access to the
+Corresponding Source in the same way through the same place at no
+further charge.  You need not require recipients to copy the
+Corresponding Source along with the object code.  If the place to copy
+the object code is a network server, the Corresponding Source may be
+on a different server (operated by you or a third party) that supports
+equivalent copying facilities, provided you maintain clear directions
+next to the object code saying where to find the Corresponding Source.
+Regardless of what server hosts the Corresponding Source, you remain
+obligated to ensure that it is available for as long as needed to
+satisfy these requirements.
+
+@item
+Convey the object code using peer-to-peer transmission, provided you
+inform other peers where the object code and Corresponding Source of
+the work are being offered to the general public at no charge under
+subsection 6d.
+
+@end enumerate
+
+A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+A ``User Product'' is either (1) a ``consumer product'', which means any
+tangible personal property which is normally used for personal,
+family, or household purposes, or (2) anything designed or sold for
+incorporation into a dwelling.  In determining whether a product is a
+consumer product, doubtful cases shall be resolved in favor of
+coverage.  For a particular product received by a particular user,
+``normally used'' refers to a typical or common use of that class of
+product, regardless of the status of the particular user or of the way
+in which the particular user actually uses, or expects or is expected
+to use, the product.  A product is a consumer product regardless of
+whether the product has substantial commercial, industrial or
+non-consumer uses, unless such uses represent the only significant
+mode of use of the product.
+
+``Installation Information'' for a User Product means any methods,
+procedures, authorization keys, or other information required to
+install and execute modified versions of a covered work in that User
+Product from a modified version of its Corresponding Source.  The
+information must suffice to ensure that the continued functioning of
+the modified object code is in no case prevented or interfered with
+solely because modification has been made.
+
+If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or
+updates for a work that has been modified or installed by the
+recipient, or for the User Product in which it has been modified or
+installed.  Access to a network may be denied when the modification
+itself materially and adversely affects the operation of the network
+or violates the rules and protocols for communication across the
+network.
+
+Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+@item Additional Terms.
+
+``Additional permissions'' are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders
+of that material) supplement the terms of this License with terms:
+
+@enumerate a
+@item
+Disclaiming warranty or limiting liability differently from the terms
+of sections 15 and 16 of this License; or
+
+@item
+Requiring preservation of specified reasonable legal notices or author
+attributions in that material or in the Appropriate Legal Notices
+displayed by works containing it; or
+
+@item
+Prohibiting misrepresentation of the origin of that material, or
+requiring that modified versions of such material be marked in
+reasonable ways as different from the original version; or
+
+@item
+Limiting the use for publicity purposes of names of licensors or
+authors of the material; or
+
+@item
+Declining to grant rights under trademark law for use of some trade
+names, trademarks, or service marks; or
+
+@item
+Requiring indemnification of licensors and authors of that material by
+anyone who conveys the material (or modified versions of it) with
+contractual assumptions of liability to the recipient, for any
+liability that these contractual assumptions directly impose on those
+licensors and authors.
+@end enumerate
+
+All other non-permissive additional terms are considered ``further
+restrictions'' within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions; the
+above requirements apply either way.
+
+@item Termination.
+
+You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+@item Acceptance Not Required for Having Copies.
+
+You are not required to accept this License in order to receive or run
+a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+@item Automatic Licensing of Downstream Recipients.
+
+Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+An ``entity transaction'' is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+@item Patents.
+
+A ``contributor'' is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's ``contributor version''.
+
+A contributor's ``essential patent claims'' are all patent claims owned
+or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, ``control'' includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+In the following three paragraphs, a ``patent license'' is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To ``grant'' such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  ``Knowingly relying'' means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+A patent license is ``discriminatory'' if it does not include within the
+scope of its coverage, prohibits the exercise of, or is conditioned on
+the non-exercise of one or more of the rights that are specifically
+granted under this License.  You may not convey a covered work if you
+are a party to an arrangement with a third party that is in the
+business of distributing software, under which you make payment to the
+third party based on the extent of your activity of conveying the
+work, and under which the third party grants, to any of the parties
+who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by
+you (or copies made from those copies), or (b) primarily for and in
+connection with specific products or compilations that contain the
+covered work, unless you entered into that arrangement, or that patent
+license was granted, prior to 28 March 2007.
+
+Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+@item No Surrender of Others' Freedom.
+
+If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey
+a covered work so as to satisfy simultaneously your obligations under
+this License and any other pertinent obligations, then as a
+consequence you may not convey it at all.  For example, if you agree
+to terms that obligate you to collect a royalty for further conveying
+from those to whom you convey the Program, the only way you could
+satisfy both those terms and this License would be to refrain entirely
+from conveying the Program.
+
+@item Use with the GNU Affero General Public License.
+
+Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+@item Revised Versions of this License.
+
+The Free Software Foundation may publish revised and/or new versions
+of the GNU General Public License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies that a certain numbered version of the GNU General Public
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that numbered version or
+of any later version published by the Free Software Foundation.  If
+the Program does not specify a version number of the GNU General
+Public License, you may choose any version ever published by the Free
+Software Foundation.
+
+If the Program specifies that a proxy can decide which future versions
+of the GNU General Public License can be used, that proxy's public
+statement of acceptance of a version permanently authorizes you to
+choose that version for the Program.
+
+Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+@item Disclaimer of Warranty.
+
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+@item Limitation of Liability.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
+CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
+NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
+LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
+TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+@item Interpretation of Sections 15 and 16.
+
+If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+@end enumerate
+
+@heading END OF TERMS AND CONDITIONS
+
+@heading How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the ``copyright'' line and a pointer to where the full notice is found.
+
+@smallexample
+@var{one line to give the program's name and a brief idea of what it does.}
+Copyright (C) @var{year} @var{name of author}
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see @url{http://www.gnu.org/licenses/}.
+@end smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+@smallexample
+@var{program} Copyright (C) @var{year} @var{name of author}
+This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type @samp{show c} for details.
+@end smallexample
+
+The hypothetical commands @samp{show w} and @samp{show c} should show
+the appropriate parts of the General Public License.  Of course, your
+program's commands might be different; for a GUI interface, you would
+use an ``about box''.
+
+You should also get your employer (if you work as a programmer) or school,
+if any, to sign a ``copyright disclaimer'' for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+@url{http://www.gnu.org/licenses/}.
+
+The GNU General Public License does not permit incorporating your
+program into proprietary programs.  If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library.  If this is what you want to do, use
+the GNU Lesser General Public License instead of this License.  But
+first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
diff --git a/doc/idn.1 b/doc/idn.1
new file mode 100644 (file)
index 0000000..a71f878
--- /dev/null
+++ b/doc/idn.1
@@ -0,0 +1,90 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.36.
+.TH IDN "1" "June 2009" "idn 1.15" "User Commands"
+.SH NAME
+idn \- Internationalized Domain Names command line tool
+.SH SYNOPSIS
+.B idn
+[\fIOPTION\fR]... [\fISTRINGS\fR]...
+.SH DESCRIPTION
+Internationalized Domain Name (IDN) convert STRINGS, or standard input.
+.PP
+Command line interface to the internationalized domain name library.
+.PP
+All strings are expected to be encoded in the preferred charset used
+by your locale.  Use `\-\-debug' to find out what this charset is.  You
+can override the charset used by setting environment variable CHARSET.
+.PP
+To process a string that starts with `\-', for example `\-foo', use `\-\-'
+to signal the end of parameters, as in `idn \fB\-\-quiet\fR \fB\-a\fR \fB\-\-\fR \fB\-foo\fR'.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Print help and exit
+.TP
+\fB\-V\fR, \fB\-\-version\fR
+Print version and exit
+.TP
+\fB\-s\fR, \fB\-\-stringprep\fR
+Prepare string according to nameprep profile
+.TP
+\fB\-d\fR, \fB\-\-punycode\-decode\fR
+Decode Punycode
+.TP
+\fB\-e\fR, \fB\-\-punycode\-encode\fR
+Encode Punycode
+.TP
+\fB\-a\fR, \fB\-\-idna\-to\-ascii\fR
+Convert to ACE according to IDNA (default mode)
+.TP
+\fB\-u\fR, \fB\-\-idna\-to\-unicode\fR
+Convert from ACE according to IDNA
+.TP
+\fB\-\-allow\-unassigned\fR
+Toggle IDNA AllowUnassigned flag (default off)
+.TP
+\fB\-\-usestd3asciirules\fR
+Toggle IDNA UseSTD3ASCIIRules flag (default off)
+.TP
+\fB\-\-no\-tld\fR
+Don't check string for TLD specific rules
+Only for \fB\-\-idna\-to\-ascii\fR and \fB\-\-idna\-to\-unicode\fR
+.TP
+\fB\-n\fR, \fB\-\-nfkc\fR
+Normalize string according to Unicode v3.2 NFKC
+.TP
+\fB\-p\fR, \fB\-\-profile\fR=\fISTRING\fR
+Use specified stringprep profile instead
+Valid stringprep profiles: `Nameprep',
+`iSCSI', `Nodeprep', `Resourceprep',
+`trace', `SASLprep'
+.TP
+\fB\-\-debug\fR
+Print debugging information
+.TP
+\fB\-\-quiet\fR
+Silent operation
+.SH AUTHOR
+Written by Simon Josefsson.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-libidn@gnu.org>.
+GNU Libidn home page: <http://www.gnu.org/software/libidn/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+.SH COPYRIGHT
+Copyright \(co 2009 Simon Josefsson.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
+.br
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B idn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B idn
+programs are properly installed at your site, the command
+.IP
+.B info idn
+.PP
+should give you access to the complete manual.
diff --git a/doc/java/Makefile.am b/doc/java/Makefile.am
new file mode 100644 (file)
index 0000000..918be92
--- /dev/null
@@ -0,0 +1,45 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if JAVA
+HTML = about.html deprecated.html package-list alphaindex.html         \
+       index.html serialized-form.html                                 \
+       resources/gjdochtml-clean-color1.css                            \
+       resources/gjdochtml-clean-layout.css resources/gjdoc.js         \
+       resources/inherit.png gnu/inet/encoding/classes.html            \
+       gnu/inet/encoding/CombiningClass.html                           \
+       gnu/inet/encoding/Composition.html                              \
+       gnu/inet/encoding/DecompositionKeys.html                        \
+       gnu/inet/encoding/DecompositionMappings.html                    \
+       gnu/inet/encoding/IDNAException.html                            \
+       gnu/inet/encoding/IDNA.html gnu/inet/encoding/NFKC.html         \
+       gnu/inet/encoding/package-summary.html                          \
+       gnu/inet/encoding/PunycodeException.html                        \
+       gnu/inet/encoding/Punycode.html gnu/inet/encoding/RFC3454.html  \
+       gnu/inet/encoding/StringprepException.html                      \
+       gnu/inet/encoding/Stringprep.html gnu/inet/encoding/tree.html
+EXTRA_DIST = $(HTML)
+
+all-local: $(HTML)
+
+$(HTML): $(top_srcdir)/java/gnu/inet/encoding/*.java
+       cd ../../java && make javadoc
+
+clean-local:
+       rm -f $(HTML)
+endif
diff --git a/doc/java/Makefile.in b/doc/java/Makefile.in
new file mode 100644 (file)
index 0000000..ab6694e
--- /dev/null
@@ -0,0 +1,694 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc/java
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@JAVA_TRUE@HTML = about.html deprecated.html package-list alphaindex.html              \
+@JAVA_TRUE@    index.html serialized-form.html                                 \
+@JAVA_TRUE@    resources/gjdochtml-clean-color1.css                            \
+@JAVA_TRUE@    resources/gjdochtml-clean-layout.css resources/gjdoc.js         \
+@JAVA_TRUE@    resources/inherit.png gnu/inet/encoding/classes.html            \
+@JAVA_TRUE@    gnu/inet/encoding/CombiningClass.html                           \
+@JAVA_TRUE@    gnu/inet/encoding/Composition.html                              \
+@JAVA_TRUE@    gnu/inet/encoding/DecompositionKeys.html                        \
+@JAVA_TRUE@    gnu/inet/encoding/DecompositionMappings.html                    \
+@JAVA_TRUE@    gnu/inet/encoding/IDNAException.html                            \
+@JAVA_TRUE@    gnu/inet/encoding/IDNA.html gnu/inet/encoding/NFKC.html         \
+@JAVA_TRUE@    gnu/inet/encoding/package-summary.html                          \
+@JAVA_TRUE@    gnu/inet/encoding/PunycodeException.html                        \
+@JAVA_TRUE@    gnu/inet/encoding/Punycode.html gnu/inet/encoding/RFC3454.html  \
+@JAVA_TRUE@    gnu/inet/encoding/StringprepException.html                      \
+@JAVA_TRUE@    gnu/inet/encoding/Stringprep.html gnu/inet/encoding/tree.html
+
+@JAVA_TRUE@EXTRA_DIST = $(HTML)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/java/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/java/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+@JAVA_FALSE@all-local:
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+@JAVA_FALSE@clean-local:
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+       clean-libtool clean-local distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       uninstall uninstall-am
+
+
+@JAVA_TRUE@all-local: $(HTML)
+
+@JAVA_TRUE@$(HTML): $(top_srcdir)/java/gnu/inet/encoding/*.java
+@JAVA_TRUE@    cd ../../java && make javadoc
+
+@JAVA_TRUE@clean-local:
+@JAVA_TRUE@    rm -f $(HTML)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/java/about.html b/doc/java/about.html
new file mode 100644 (file)
index 0000000..83162d6
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "./resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>About</title><script src="./resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content about" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="./gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="gnu/inet/encoding/tree.html">Tree</a></span> <span class="navbar item enabled"><a href="./alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="./deprecated.html">Deprecated</a></span> <span class="navbar item active">About</span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="./index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="about.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="about title">About</h1><p class="about generator">Generated by Gjdoc HtmlDoclet 0.7.9, part of <a href="http://www.gnu.org/software/classpath/cp-tools/" title="" target="_top">GNU Classpath Tools</a>, on June 8, 2009 10:39:59 AM GMT.</p><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="./gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="gnu/inet/encoding/tree.html">Tree</a></span> <span class="navbar item enabled"><a href="./alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="./deprecated.html">Deprecated</a></span> <span class="navbar item active">About</span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/alphaindex.html b/doc/java/alphaindex.html
new file mode 100644 (file)
index 0000000..a6f64c8
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "./resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Alphabetical Index</title><script src="./resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content index" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="./gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="gnu/inet/encoding/tree.html">Tree</a></span> <span class="navbar item active">Index</span> <span class="navbar item enabled"><a href="./deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="./about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="./index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="alphaindex.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="index title">Alphabetical Index</h1><div class="index letters"><span class="index letter"><a href="#A">A</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#B">B</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#C">C</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#D">D</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#E">E</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#I">I</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#K">K</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#M">M</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#N">N</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#O">O</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#P">P</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#R">R</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#S">S</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#T">T</a></span><span class="index letter spacer"> </span></div><a name="A" id="A"/><h2 class="index category header">A</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNA.html#ACE_PREFIX">ACE_PREFIX</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNA.html" title="Class in gnu.inet.encoding">IDNA</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Punycode.html#adapt(int,int,boolean)">adapt(int,int,boolean)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Punycode.html" title="Class in gnu.inet.encoding">Punycode</a></div><div class="description"></div></div></div><a name="B" id="B"/><h2 class="index category header">B</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/PunycodeException.html#BAD_INPUT">BAD_INPUT</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/StringprepException.html#BIDI_BOTHRAL">BIDI_BOTHRAL</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/StringprepException.html#BIDI_LTRAL">BIDI_LTRAL</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></div><div class="description"></div></div></div><a name="C" id="C"/><h2 class="index category header">C</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/CombiningClass.html#c">c</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/CombiningClass.html" title="Class in gnu.inet.encoding">CombiningClass</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Punycode.html#codepoint2digit(int)">codepoint2digit(int)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Punycode.html" title="Class in gnu.inet.encoding">Punycode</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/CombiningClass.html">CombiningClass</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/CombiningClass.html" title="Class in gnu.inet.encoding">CombiningClass</a></div><div class="description"> Auto-generated class containing Unicode NFKC tables.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Composition.html#composeData">composeData</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Composition.html#composePage">composePage</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/Composition.html">Composition</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></div><div class="description"> Auto-generated class containing Unicode NFKC tables.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNAException.html#CONTAINS_ACE_PREFIX">CONTAINS_ACE_PREFIX</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNAException.html#CONTAINS_HYPHEN">CONTAINS_HYPHEN</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNAException.html#CONTAINS_NON_LDH">CONTAINS_NON_LDH</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/StringprepException.html#CONTAINS_PROHIBITED">CONTAINS_PROHIBITED</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/StringprepException.html#CONTAINS_UNASSIGNED">CONTAINS_UNASSIGNED</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></div><div class="description"></div></div></div><a name="D" id="D"/><h2 class="index category header">D</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Punycode.html#decode(String)">decode(String)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Punycode.html" title="Class in gnu.inet.encoding">Punycode</a></div><div class="description"> Decode a punycoded string.</div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/DecompositionKeys.html">DecompositionKeys</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/DecompositionKeys.html" title="Class in gnu.inet.encoding">DecompositionKeys</a></div><div class="description"> Auto-generated class containing Unicode NFKC tables.</div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/DecompositionMappings.html">DecompositionMappings</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/DecompositionMappings.html" title="Class in gnu.inet.encoding">DecompositionMappings</a></div><div class="description"> Auto-generated class containing Unicode NFKC tables.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Punycode.html#digit2codepoint(int)">digit2codepoint(int)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Punycode.html" title="Class in gnu.inet.encoding">Punycode</a></div><div class="description"></div></div></div><a name="E" id="E"/><h2 class="index category header">E</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Punycode.html#encode(String)">encode(String)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Punycode.html" title="Class in gnu.inet.encoding">Punycode</a></div><div class="description"> Punycodes a unicode string.</div></div></div><a name="I" id="I"/><h2 class="index category header">I</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/CombiningClass.html#i">i</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/CombiningClass.html" title="Class in gnu.inet.encoding">CombiningClass</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/IDNA.html">IDNA</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNA.html" title="Class in gnu.inet.encoding">IDNA</a></div><div class="description"> This class offers static methods for converting internationalized
+ domain names to ACE and back.</div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/IDNAException.html">IDNAException</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></div><div class="description"> Exception handling for IDNA class.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNAException.html#IDNAException(gnu.inet.encoding.PunycodeException)">IDNAException(gnu.inet.encoding.PunycodeException)</a> - constructor for class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNAException.html#IDNAException(gnu.inet.encoding.StringprepException)">IDNAException(gnu.inet.encoding.StringprepException)</a> - constructor for class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNAException.html#IDNAException(String)">IDNAException(String)</a> - constructor for class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Punycode.html#isBasic(char)">isBasic(char)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Punycode.html" title="Class in gnu.inet.encoding">Punycode</a></div><div class="description"></div></div></div><a name="K" id="K"/><h2 class="index category header">K</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/DecompositionKeys.html#k">k</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/DecompositionKeys.html" title="Class in gnu.inet.encoding">DecompositionKeys</a></div><div class="description"></div></div></div><a name="M" id="M"/><h2 class="index category header">M</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/DecompositionMappings.html#m">m</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/DecompositionMappings.html" title="Class in gnu.inet.encoding">DecompositionMappings</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Composition.html#multiFirst">multiFirst</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Composition.html#multiSecondStart">multiSecondStart</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></div><div class="description"></div></div></div><a name="N" id="N"/><h2 class="index category header">N</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Stringprep.html#nameprep(String)">nameprep(String)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Stringprep.html" title="Class in gnu.inet.encoding">Stringprep</a></div><div class="description"> Preps a name according to the Stringprep profile defined in
+ RFC3491.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Stringprep.html#nameprep(String,boolean)">nameprep(String,boolean)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Stringprep.html" title="Class in gnu.inet.encoding">Stringprep</a></div><div class="description"> Preps a name according to the Stringprep profile defined in
+ RFC3491.</div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/NFKC.html">NFKC</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/NFKC.html" title="Class in gnu.inet.encoding">NFKC</a></div><div class="description"> This class offers static methods for Unicode NFKC string normalization.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Stringprep.html#nodeprep(String)">nodeprep(String)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Stringprep.html" title="Class in gnu.inet.encoding">Stringprep</a></div><div class="description"> Preps a node name according to the Stringprep profile defined in
+ RFC3920.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Stringprep.html#nodeprep(String,boolean)">nodeprep(String,boolean)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Stringprep.html" title="Class in gnu.inet.encoding">Stringprep</a></div><div class="description"> Preps a node name according to the Stringprep profile defined in
+ RFC3920.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/NFKC.html#normalizeNFKC(String)">normalizeNFKC(String)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/NFKC.html" title="Class in gnu.inet.encoding">NFKC</a></div><div class="description"> Applies NFKC normalization to a string.</div></div></div><a name="O" id="O"/><h2 class="index category header">O</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/PunycodeException.html#OVERFLOW">OVERFLOW</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a></div><div class="description"></div></div></div><a name="P" id="P"/><h2 class="index category header">P</h2><div class="index category"><div class="index entry"><div class="key"><a href="gnu/inet/encoding/Punycode.html">Punycode</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/Punycode.html" title="Class in gnu.inet.encoding">Punycode</a></div><div class="description"> This class offers static methods for encoding/decoding strings
+ using the Punycode algorithm.</div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/PunycodeException.html">PunycodeException</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a></div><div class="description"> Exception handling for Punycode class.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/PunycodeException.html#PunycodeException(String)">PunycodeException(String)</a> - constructor for class gnu.inet.encoding.<a href="./gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a></div><div class="description"> Creates a new PunycodeException.</div></div></div><a name="R" id="R"/><h2 class="index category header">R</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Stringprep.html#resourceprep(String)">resourceprep(String)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Stringprep.html" title="Class in gnu.inet.encoding">Stringprep</a></div><div class="description"> Preps a resource name according to the Stringprep profile defined
+ in RFC3920.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Stringprep.html#resourceprep(String,boolean)">resourceprep(String,boolean)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Stringprep.html" title="Class in gnu.inet.encoding">Stringprep</a></div><div class="description"> Preps a resource name according to the Stringprep profile defined
+ in RFC3920.</div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/RFC3454.html">RFC3454</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/RFC3454.html" title="Class in gnu.inet.encoding">RFC3454</a></div><div class="description"> Auto-generated class containing StringPrep mapping tables.</div></div></div><a name="S" id="S"/><h2 class="index category header">S</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Composition.html#singleFirst">singleFirst</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Composition.html#singleFirstStart">singleFirstStart</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Composition.html#singleSecond">singleSecond</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/Composition.html#singleSecondStart">singleSecondStart</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/Stringprep.html">Stringprep</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/Stringprep.html" title="Class in gnu.inet.encoding">Stringprep</a></div><div class="description"> This class offers static methods for preparing internationalized
+ strings.</div></div><div class="index entry"><div class="key"><a href="gnu/inet/encoding/StringprepException.html">StringprepException</a> - class gnu.inet.encoding.<a href="./gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></div><div class="description"> Exception handling for StringPrep class.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/StringprepException.html#StringprepException(String)">StringprepException(String)</a> - constructor for class gnu.inet.encoding.<a href="./gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></div><div class="description"></div></div></div><a name="T" id="T"/><h2 class="index category header">T</h2><div class="index category"><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNA.html#toASCII(String)">toASCII(String)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNA.html" title="Class in gnu.inet.encoding">IDNA</a></div><div class="description"> Converts a Unicode string to ASCII using the procedure in RFC3490
+ section 4.1.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNA.html#toASCII(String,boolean,boolean)">toASCII(String,boolean,boolean)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNA.html" title="Class in gnu.inet.encoding">IDNA</a></div><div class="description"> Converts a Unicode string to ASCII using the procedure in RFC3490
+ section 4.1.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNAException.html#TOO_LONG">TOO_LONG</a> - static field in class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNA.html#toUnicode(String)">toUnicode(String)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNA.html" title="Class in gnu.inet.encoding">IDNA</a></div><div class="description"> Converts an ASCII-encoded string to Unicode.</div></div><div class="index entry"><div class="key"><a href="./gnu/inet/encoding/IDNA.html#toUnicode(String,boolean,boolean)">toUnicode(String,boolean,boolean)</a> - static method in class gnu.inet.encoding.<a href="./gnu/inet/encoding/IDNA.html" title="Class in gnu.inet.encoding">IDNA</a></div><div class="description"> Converts an ASCII-encoded string to Unicode.</div></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="./gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="gnu/inet/encoding/tree.html">Tree</a></span> <span class="navbar item active">Index</span> <span class="navbar item enabled"><a href="./deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="./about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/deprecated.html b/doc/java/deprecated.html
new file mode 100644 (file)
index 0000000..e4b0025
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "./resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Deprecated API</title><script src="./resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content deprecated" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="./gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="gnu/inet/encoding/tree.html">Tree</a></span> <span class="navbar item enabled"><a href="./alphaindex.html">Index</a></span> <span class="navbar item active">Deprecated</span> <span class="navbar item enabled"><a href="./about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="./index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="deprecated.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="deprecation title">Deprecated API</h1><p class="dep-empty">No deprecated classes or class members in this API.</p><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="./gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="gnu/inet/encoding/tree.html">Tree</a></span> <span class="navbar item enabled"><a href="./alphaindex.html">Index</a></span> <span class="navbar item active">Deprecated</span> <span class="navbar item enabled"><a href="./about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/CombiningClass.html b/doc/java/gnu/inet/encoding/CombiningClass.html
new file mode 100644 (file)
index 0000000..5aabc84
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>CombiningClass</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.CombiningClass class"/><meta name="keywords" content="c"/><meta name="keywords" content="i"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi">Prev Class | <a href="../../../gnu/inet/encoding/Composition.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="CombiningClass.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | Method | Constr</td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | Method | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class CombiningClass</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.CombiningClass</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">CombiningClass</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> Auto-generated class containing Unicode NFKC tables.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int[][]</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#c">c</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int[]</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#i">i</a></code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="c" id="c"/><div class="member detail outer"><h3 class="member detail name">c</h3><pre class="member detail synopsis">public static final int[][] c</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="i" id="i"/><div class="member detail outer"><h3 class="member detail name">i</h3><pre class="member detail synopsis">public static final int[] i</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/Composition.html b/doc/java/gnu/inet/encoding/Composition.html
new file mode 100644 (file)
index 0000000..35b795c
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Composition</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.Composition class"/><meta name="keywords" content="multiFirst"/><meta name="keywords" content="singleFirst"/><meta name="keywords" content="singleSecond"/><meta name="keywords" content="multiSecondStart"/><meta name="keywords" content="singleFirstStart"/><meta name="keywords" content="singleSecondStart"/><meta name="keywords" content="composePage"/><meta name="keywords" content="composeData"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/CombiningClass.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/DecompositionKeys.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="Composition.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | Method | Constr</td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | Method | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class Composition</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.Composition</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">Composition</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> Auto-generated class containing Unicode NFKC tables.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int[][]</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#composeData">composeData</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int[]</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#composePage">composePage</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static char[][]</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#multiFirst">multiFirst</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#multiSecondStart">multiSecondStart</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static char[][]</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#singleFirst">singleFirst</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#singleFirstStart">singleFirstStart</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static char[][]</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#singleSecond">singleSecond</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#singleSecondStart">singleSecondStart</a></code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="composeData" id="composeData"/><div class="member detail outer"><h3 class="member detail name">composeData</h3><pre class="member detail synopsis">public static final int[][] composeData</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="composePage" id="composePage"/><div class="member detail outer"><h3 class="member detail name">composePage</h3><pre class="member detail synopsis">public static final int[] composePage</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="multiFirst" id="multiFirst"/><div class="member detail outer"><h3 class="member detail name">multiFirst</h3><pre class="member detail synopsis">public static final char[][] multiFirst</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="multiSecondStart" id="multiSecondStart"/><div class="member detail outer"><h3 class="member detail name">multiSecondStart</h3><pre class="member detail synopsis">public static final int multiSecondStart</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">144</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="singleFirst" id="singleFirst"/><div class="member detail outer"><h3 class="member detail name">singleFirst</h3><pre class="member detail synopsis">public static final char[][] singleFirst</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="singleFirstStart" id="singleFirstStart"/><div class="member detail outer"><h3 class="member detail name">singleFirstStart</h3><pre class="member detail synopsis">public static final int singleFirstStart</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">181</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="singleSecond" id="singleSecond"/><div class="member detail outer"><h3 class="member detail name">singleSecond</h3><pre class="member detail synopsis">public static final char[][] singleSecond</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="singleSecondStart" id="singleSecondStart"/><div class="member detail outer"><h3 class="member detail name">singleSecondStart</h3><pre class="member detail synopsis">public static final int singleSecondStart</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">391</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/DecompositionKeys.html b/doc/java/gnu/inet/encoding/DecompositionKeys.html
new file mode 100644 (file)
index 0000000..83d7784
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>DecompositionKeys</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.DecompositionKeys class"/><meta name="keywords" content="k"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/Composition.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/DecompositionMappings.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="DecompositionKeys.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | Method | Constr</td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | Method | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class DecompositionKeys</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.DecompositionKeys</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">DecompositionKeys</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> Auto-generated class containing Unicode NFKC tables.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int[]</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#k">k</a></code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="k" id="k"/><div class="member detail outer"><h3 class="member detail name">k</h3><pre class="member detail synopsis">public static final int[] k</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/DecompositionMappings.html b/doc/java/gnu/inet/encoding/DecompositionMappings.html
new file mode 100644 (file)
index 0000000..df872ca
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>DecompositionMappings</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.DecompositionMappings class"/><meta name="keywords" content="m"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/DecompositionKeys.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/IDNA.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="DecompositionMappings.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | Method | Constr</td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | Method | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class DecompositionMappings</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.DecompositionMappings</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">DecompositionMappings</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> Auto-generated class containing Unicode NFKC tables.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String[]</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#m">m</a></code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="m" id="m"/><div class="member detail outer"><h3 class="member detail name">m</h3><pre class="member detail synopsis">public static final String[] m</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/IDNA.html b/doc/java/gnu/inet/encoding/IDNA.html
new file mode 100644 (file)
index 0000000..5c1636f
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>IDNA</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.IDNA class"/><meta name="keywords" content="ACE_PREFIX"/><meta name="keywords" content="toASCII()"/><meta name="keywords" content="toUnicode()"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/DecompositionMappings.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/IDNAException.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="IDNA.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | <a href="#summary-methods">Method</a> | Constr</td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | <a href="#detail-methods">Method</a> | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class IDNA</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.IDNA</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">IDNA</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> This class offers static methods for converting internationalized
+ domain names to ACE and back.
+ <ul><li>RFC3490 IDNA
+ </li></ul>
+ Note that this implementation only supports 16-bit Unicode code
+ points.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#ACE_PREFIX">ACE_PREFIX</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#toASCII(String)">toASCII</a>(String&nbsp;input)</code></dt><dd class="description"> Converts a Unicode string to ASCII using the procedure in RFC3490
+ section 4.1.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#toASCII(String,boolean,boolean)">toASCII</a>(String&nbsp;input, boolean&nbsp;allowUnassigned, boolean&nbsp;useSTD3ASCIIRules)</code></dt><dd class="description"> Converts a Unicode string to ASCII using the procedure in RFC3490
+ section 4.1.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#toUnicode(String)">toUnicode</a>(String&nbsp;input)</code></dt><dd class="description"> Converts an ASCII-encoded string to Unicode.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#toUnicode(String,boolean,boolean)">toUnicode</a>(String&nbsp;input, boolean&nbsp;allowUnassigned, boolean&nbsp;useSTD3ASCIIRules)</code></dt><dd class="description"> Converts an ASCII-encoded string to Unicode.</dd></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="ACE_PREFIX" id="ACE_PREFIX"/><div class="member detail outer"><h3 class="member detail name">ACE_PREFIX</h3><pre class="member detail synopsis">public static final String ACE_PREFIX</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="toASCII(String)" id="toASCII(String)"/><div class="member detail outer"><h3 class="member detail name">toASCII</h3><pre class="member detail synopsis">public static String toASCII(String input)
+            throws <a href="../../../gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></pre><blockquote class="member detail name"><div class="member detail description"> Converts a Unicode string to ASCII using the procedure in RFC3490
+ section 4.1. Unassigned characters are not allowed and STD3 ASCII
+ rules are enforced. The input string may be a domain name
+ containing dots.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">Unicode string.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">Encoded string.</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="toASCII(String,boolean,boolean)" id="toASCII(String,boolean,boolean)"/><div class="member detail outer"><h3 class="member detail name">toASCII</h3><pre class="member detail synopsis">public static String toASCII(String input,
+                             boolean allowUnassigned,
+                             boolean useSTD3ASCIIRules)
+            throws <a href="../../../gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></pre><blockquote class="member detail name"><div class="member detail description"> Converts a Unicode string to ASCII using the procedure in RFC3490
+ section 4.1. Unassigned characters are not allowed and STD3 ASCII
+ rules are enforced.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">Unicode string.</span></dd><dd class="item"><code class="name">allowUnassigned</code><span class="separator"> - </span><span class="description">Unassigned characters, allowed or not?</span></dd><dd class="item"><code class="name">useSTD3ASCIIRules</code><span class="separator"> - </span><span class="description">STD3 ASCII rules, enforced or not?</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">Encoded string.</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="toUnicode(String)" id="toUnicode(String)"/><div class="member detail outer"><h3 class="member detail name">toUnicode</h3><pre class="member detail synopsis">public static String toUnicode(String input)</pre><blockquote class="member detail name"><div class="member detail description"> Converts an ASCII-encoded string to Unicode. Unassigned
+ characters are not allowed and STD3 hostnames are enforced. Input
+ may be domain name containing dots.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">ASCII input string.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">Unicode string.</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="toUnicode(String,boolean,boolean)" id="toUnicode(String,boolean,boolean)"/><div class="member detail outer"><h3 class="member detail name">toUnicode</h3><pre class="member detail synopsis">public static String toUnicode(String input,
+                               boolean allowUnassigned,
+                               boolean useSTD3ASCIIRules)</pre><blockquote class="member detail name"><div class="member detail description"> Converts an ASCII-encoded string to Unicode.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">ASCII input string.</span></dd><dd class="item"><code class="name">allowUnassigned</code><span class="separator"> - </span><span class="description">Allow unassigned Unicode characters.</span></dd><dd class="item"><code class="name">useSTD3ASCIIRules</code><span class="separator"> - </span><span class="description">Check that the output conforms to STD3.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">Unicode string.</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/IDNAException.html b/doc/java/gnu/inet/encoding/IDNAException.html
new file mode 100644 (file)
index 0000000..c64fd3e
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>IDNAException</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.IDNAException class"/><meta name="keywords" content="CONTAINS_NON_LDH"/><meta name="keywords" content="CONTAINS_HYPHEN"/><meta name="keywords" content="CONTAINS_ACE_PREFIX"/><meta name="keywords" content="TOO_LONG"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/IDNA.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/NFKC.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="IDNAException.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | Method | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | Method | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class IDNAException</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>Exception</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.IDNAException</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">IDNAException</b></code></div><div class="class synopsis superclass"><code>extends Exception</code></div></div><hr/><div class="class description"> Exception handling for IDNA class.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#CONTAINS_ACE_PREFIX">CONTAINS_ACE_PREFIX</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#CONTAINS_HYPHEN">CONTAINS_HYPHEN</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#CONTAINS_NON_LDH">CONTAINS_NON_LDH</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#TOO_LONG">TOO_LONG</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#IDNAException(String)">IDNAException</a>(String&nbsp;m)</code></dt></dl></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#IDNAException(gnu.inet.encoding.PunycodeException)">IDNAException</a>(<a href="../../../gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a>&nbsp;e)</code></dt></dl></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#IDNAException(gnu.inet.encoding.StringprepException)">IDNAException</a>(<a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a>&nbsp;e)</code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="CONTAINS_ACE_PREFIX" id="CONTAINS_ACE_PREFIX"/><div class="member detail outer"><h3 class="member detail name">CONTAINS_ACE_PREFIX</h3><pre class="member detail synopsis">public static String CONTAINS_ACE_PREFIX</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="CONTAINS_HYPHEN" id="CONTAINS_HYPHEN"/><div class="member detail outer"><h3 class="member detail name">CONTAINS_HYPHEN</h3><pre class="member detail synopsis">public static String CONTAINS_HYPHEN</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="CONTAINS_NON_LDH" id="CONTAINS_NON_LDH"/><div class="member detail outer"><h3 class="member detail name">CONTAINS_NON_LDH</h3><pre class="member detail synopsis">public static String CONTAINS_NON_LDH</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="TOO_LONG" id="TOO_LONG"/><div class="member detail outer"><h3 class="member detail name">TOO_LONG</h3><pre class="member detail synopsis">public static String TOO_LONG</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="IDNAException(String)" id="IDNAException(String)"/><div class="member detail outer"><h3 class="member detail name">IDNAException</h3><pre class="member detail synopsis">public IDNAException(String m)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="IDNAException(gnu.inet.encoding.PunycodeException)" id="IDNAException(gnu.inet.encoding.PunycodeException)"/><div class="member detail outer"><h3 class="member detail name">IDNAException</h3><pre class="member detail synopsis">public IDNAException(<a href="../../../gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a> e)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="IDNAException(gnu.inet.encoding.StringprepException)" id="IDNAException(gnu.inet.encoding.StringprepException)"/><div class="member detail outer"><h3 class="member detail name">IDNAException</h3><pre class="member detail synopsis">public IDNAException(<a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a> e)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/NFKC.html b/doc/java/gnu/inet/encoding/NFKC.html
new file mode 100644 (file)
index 0000000..4968cd8
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>NFKC</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.NFKC class"/><meta name="keywords" content="normalizeNFKC()"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/IDNAException.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/Punycode.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="NFKC.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | <a href="#summary-methods">Method</a> | Constr</td><td class="navi">Detail: Nested | Field | <a href="#detail-methods">Method</a> | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class NFKC</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.NFKC</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">NFKC</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> This class offers static methods for Unicode NFKC string normalization.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#normalizeNFKC(String)">normalizeNFKC</a>(String&nbsp;in)</code></dt><dd class="description"> Applies NFKC normalization to a string.</dd></dl></td></tr></table></dd></dl><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="normalizeNFKC(String)" id="normalizeNFKC(String)"/><div class="member detail outer"><h3 class="member detail name">normalizeNFKC</h3><pre class="member detail synopsis">public static String normalizeNFKC(String in)</pre><blockquote class="member detail name"><div class="member detail description"> Applies NFKC normalization to a string.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">in</code><span class="separator"> - </span><span class="description">The string to normalize.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">An NFKC normalized string.</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/Punycode.html b/doc/java/gnu/inet/encoding/Punycode.html
new file mode 100644 (file)
index 0000000..5251332
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Punycode</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.Punycode class"/><meta name="keywords" content="encode()"/><meta name="keywords" content="decode()"/><meta name="keywords" content="adapt()"/><meta name="keywords" content="isBasic()"/><meta name="keywords" content="digit2codepoint()"/><meta name="keywords" content="codepoint2digit()"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/NFKC.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/PunycodeException.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="Punycode.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | <a href="#summary-methods">Method</a> | Constr</td><td class="navi">Detail: Nested | Field | <a href="#detail-methods">Method</a> | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class Punycode</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.Punycode</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">Punycode</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> This class offers static methods for encoding/decoding strings
+ using the Punycode algorithm.
+ <ul><li>RFC3492 Punycode
+ </li></ul>
+ Note that this implementation only supports 16-bit Unicode code
+ points.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#adapt(int,int,boolean)">adapt</a>(int&nbsp;delta, int&nbsp;numpoints, boolean&nbsp;first)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#codepoint2digit(int)">codepoint2digit</a>(int&nbsp;c)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#decode(String)">decode</a>(String&nbsp;input)</code></dt><dd class="description"> Decode a punycoded string.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#digit2codepoint(int)">digit2codepoint</a>(int&nbsp;d)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#encode(String)">encode</a>(String&nbsp;input)</code></dt><dd class="description"> Punycodes a unicode string.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#isBasic(char)">isBasic</a>(char&nbsp;c)</code></dt></dl></td></tr></table></dd></dl><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="adapt(int,int,boolean)" id="adapt(int,int,boolean)"/><div class="member detail outer"><h3 class="member detail name">adapt</h3><pre class="member detail synopsis">public static final int adapt(int delta,
+                              int numpoints,
+                              boolean first)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="codepoint2digit(int)" id="codepoint2digit(int)"/><div class="member detail outer"><h3 class="member detail name">codepoint2digit</h3><pre class="member detail synopsis">public static final int codepoint2digit(int c)
+            throws <a href="../../../gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a></pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="decode(String)" id="decode(String)"/><div class="member detail outer"><h3 class="member detail name">decode</h3><pre class="member detail synopsis">public static String decode(String input)
+            throws <a href="../../../gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a></pre><blockquote class="member detail name"><div class="member detail description"> Decode a punycoded string.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">Punycode string</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">Unicode string.</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="digit2codepoint(int)" id="digit2codepoint(int)"/><div class="member detail outer"><h3 class="member detail name">digit2codepoint</h3><pre class="member detail synopsis">public static final int digit2codepoint(int d)
+            throws <a href="../../../gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a></pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="encode(String)" id="encode(String)"/><div class="member detail outer"><h3 class="member detail name">encode</h3><pre class="member detail synopsis">public static String encode(String input)
+            throws <a href="../../../gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a></pre><blockquote class="member detail name"><div class="member detail description"> Punycodes a unicode string.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">Unicode string.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">Punycoded string.</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="isBasic(char)" id="isBasic(char)"/><div class="member detail outer"><h3 class="member detail name">isBasic</h3><pre class="member detail synopsis">public static final boolean isBasic(char c)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/PunycodeException.html b/doc/java/gnu/inet/encoding/PunycodeException.html
new file mode 100644 (file)
index 0000000..e39c457
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>PunycodeException</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.PunycodeException class"/><meta name="keywords" content="OVERFLOW"/><meta name="keywords" content="BAD_INPUT"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/Punycode.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/RFC3454.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="PunycodeException.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | Method | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | Method | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class PunycodeException</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>Exception</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.PunycodeException</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">PunycodeException</b></code></div><div class="class synopsis superclass"><code>extends Exception</code></div></div><hr/><div class="class description"> Exception handling for Punycode class.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#BAD_INPUT">BAD_INPUT</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#OVERFLOW">OVERFLOW</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#PunycodeException(String)">PunycodeException</a>(String&nbsp;m)</code></dt><dd class="description"> Creates a new PunycodeException.</dd></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="BAD_INPUT" id="BAD_INPUT"/><div class="member detail outer"><h3 class="member detail name">BAD_INPUT</h3><pre class="member detail synopsis">public static String BAD_INPUT</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="OVERFLOW" id="OVERFLOW"/><div class="member detail outer"><h3 class="member detail name">OVERFLOW</h3><pre class="member detail synopsis">public static String OVERFLOW</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="PunycodeException(String)" id="PunycodeException(String)"/><div class="member detail outer"><h3 class="member detail name">PunycodeException</h3><pre class="member detail synopsis">public PunycodeException(String m)</pre><blockquote class="member detail name"><div class="member detail description"> Creates a new PunycodeException.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">m</code><span class="separator"> - </span><span class="description">message.</span></dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/RFC3454.html b/doc/java/gnu/inet/encoding/RFC3454.html
new file mode 100644 (file)
index 0000000..b7bbc04
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>RFC3454</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.RFC3454 class"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/PunycodeException.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/Stringprep.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="RFC3454.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | Method | Constr</td><td class="navi">Detail: Nested | Field | Method | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class RFC3454</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.RFC3454</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">RFC3454</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> Auto-generated class containing StringPrep mapping tables.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/Stringprep.html b/doc/java/gnu/inet/encoding/Stringprep.html
new file mode 100644 (file)
index 0000000..0143355
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Stringprep</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.Stringprep class"/><meta name="keywords" content="nameprep()"/><meta name="keywords" content="nodeprep()"/><meta name="keywords" content="resourceprep()"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/RFC3454.html">Prev Class</a> | <a href="../../../gnu/inet/encoding/StringprepException.html">Next Class</a></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="Stringprep.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | <a href="#summary-methods">Method</a> | Constr</td><td class="navi">Detail: Nested | Field | <a href="#detail-methods">Method</a> | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class Stringprep</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.Stringprep</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">Stringprep</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> This class offers static methods for preparing internationalized
+ strings. It supports the following stringprep profiles:
+ <ul><li>RFC3491 nameprep
+ </li><li>RFC3920 XMPP nodeprep and resourceprep
+ </li></ul>
+ Note that this implementation only supports 16-bit Unicode code
+ points.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#nameprep(String)">nameprep</a>(String&nbsp;input)</code></dt><dd class="description"> Preps a name according to the Stringprep profile defined in
+ RFC3491.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#nameprep(String,boolean)">nameprep</a>(String&nbsp;input, boolean&nbsp;allowUnassigned)</code></dt><dd class="description"> Preps a name according to the Stringprep profile defined in
+ RFC3491.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#nodeprep(String)">nodeprep</a>(String&nbsp;input)</code></dt><dd class="description"> Preps a node name according to the Stringprep profile defined in
+ RFC3920.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#nodeprep(String,boolean)">nodeprep</a>(String&nbsp;input, boolean&nbsp;allowUnassigned)</code></dt><dd class="description"> Preps a node name according to the Stringprep profile defined in
+ RFC3920.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#resourceprep(String)">resourceprep</a>(String&nbsp;input)</code></dt><dd class="description"> Preps a resource name according to the Stringprep profile defined
+ in RFC3920.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#resourceprep(String,boolean)">resourceprep</a>(String&nbsp;input, boolean&nbsp;allowUnassigned)</code></dt><dd class="description"> Preps a resource name according to the Stringprep profile defined
+ in RFC3920.</dd></dl></td></tr></table></dd></dl><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="nameprep(String)" id="nameprep(String)"/><div class="member detail outer"><h3 class="member detail name">nameprep</h3><pre class="member detail synopsis">public static String nameprep(String input)
+            throws <a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a>,
+                   NullPointerException</pre><blockquote class="member detail name"><div class="member detail description"> Preps a name according to the Stringprep profile defined in
+ RFC3491. Unassigned code points are not allowed.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">the name to prep.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">the prepped name.</dd></dl></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Throws:</b></dt><dd class="member detail thrown item"><code class="name"><a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></code><span class="separator"> - </span><span class="description">If the name cannot be prepped with
+this profile.</span></dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="nameprep(String,boolean)" id="nameprep(String,boolean)"/><div class="member detail outer"><h3 class="member detail name">nameprep</h3><pre class="member detail synopsis">public static String nameprep(String input,
+                              boolean allowUnassigned)
+            throws <a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a>,
+                   NullPointerException</pre><blockquote class="member detail name"><div class="member detail description"> Preps a name according to the Stringprep profile defined in
+ RFC3491.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">the name to prep.</span></dd><dd class="item"><code class="name">allowUnassigned</code><span class="separator"> - </span><span class="description">true if the name may contain unassigned
+code points.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">the prepped name.</dd></dl></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Throws:</b></dt><dd class="member detail thrown item"><code class="name"><a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></code><span class="separator"> - </span><span class="description">If the name cannot be prepped with
+this profile.</span></dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="nodeprep(String)" id="nodeprep(String)"/><div class="member detail outer"><h3 class="member detail name">nodeprep</h3><pre class="member detail synopsis">public static String nodeprep(String input)
+            throws <a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a>,
+                   NullPointerException</pre><blockquote class="member detail name"><div class="member detail description"> Preps a node name according to the Stringprep profile defined in
+ RFC3920. Unassigned code points are not allowed.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">the node name to prep.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">the prepped node name.</dd></dl></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Throws:</b></dt><dd class="member detail thrown item"><code class="name"><a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></code><span class="separator"> - </span><span class="description">If the node name cannot be prepped
+with this profile.</span></dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="nodeprep(String,boolean)" id="nodeprep(String,boolean)"/><div class="member detail outer"><h3 class="member detail name">nodeprep</h3><pre class="member detail synopsis">public static String nodeprep(String input,
+                              boolean allowUnassigned)
+            throws <a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a>,
+                   NullPointerException</pre><blockquote class="member detail name"><div class="member detail description"> Preps a node name according to the Stringprep profile defined in
+ RFC3920.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">the node name to prep.</span></dd><dd class="item"><code class="name">allowUnassigned</code><span class="separator"> - </span><span class="description">true if the node name may contain
+unassigned code points.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">the prepped node name.</dd></dl></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Throws:</b></dt><dd class="member detail thrown item"><code class="name"><a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></code><span class="separator"> - </span><span class="description">If the node name cannot be prepped
+with this profile.</span></dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="resourceprep(String)" id="resourceprep(String)"/><div class="member detail outer"><h3 class="member detail name">resourceprep</h3><pre class="member detail synopsis">public static String resourceprep(String input)
+            throws <a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a>,
+                   NullPointerException</pre><blockquote class="member detail name"><div class="member detail description"> Preps a resource name according to the Stringprep profile defined
+ in RFC3920. Unassigned code points are not allowed.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">the resource name to prep.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">the prepped node name.</dd></dl></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Throws:</b></dt><dd class="member detail thrown item"><code class="name"><a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></code><span class="separator"> - </span><span class="description">If the resource name cannot be prepped
+with this profile.</span></dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="resourceprep(String,boolean)" id="resourceprep(String,boolean)"/><div class="member detail outer"><h3 class="member detail name">resourceprep</h3><pre class="member detail synopsis">public static String resourceprep(String input,
+                                  boolean allowUnassigned)
+            throws <a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a>,
+                   NullPointerException</pre><blockquote class="member detail name"><div class="member detail description"> Preps a resource name according to the Stringprep profile defined
+ in RFC3920.
+</div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">input</code><span class="separator"> - </span><span class="description">the resource name to prep.</span></dd><dd class="item"><code class="name">allowUnassigned</code><span class="separator"> - </span><span class="description">true if the resource name may contain
+unassigned code points.</span></dd></dl></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">the prepped node name.</dd></dl></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Throws:</b></dt><dd class="member detail thrown item"><code class="name"><a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></code><span class="separator"> - </span><span class="description">If the resource name cannot be prepped
+with this profile.</span></dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/StringprepException.html b/doc/java/gnu/inet/encoding/StringprepException.html
new file mode 100644 (file)
index 0000000..c0d6438
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>StringprepException</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding.StringprepException class"/><meta name="keywords" content="CONTAINS_UNASSIGNED"/><meta name="keywords" content="CONTAINS_PROHIBITED"/><meta name="keywords" content="BIDI_BOTHRAL"/><meta name="keywords" content="BIDI_LTRAL"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../gnu/inet/encoding/Stringprep.html">Prev Class</a> | Next Class</td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="StringprepException.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | Method | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | Method | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">gnu.inet.encoding</h3><h1 class="class title-class">Class StringprepException</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>Exception</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>gnu.inet.encoding.StringprepException</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">StringprepException</b></code></div><div class="class synopsis superclass"><code>extends Exception</code></div></div><hr/><div class="class description"> Exception handling for StringPrep class.
+</div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#BIDI_BOTHRAL">BIDI_BOTHRAL</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#BIDI_LTRAL">BIDI_LTRAL</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#CONTAINS_PROHIBITED">CONTAINS_PROHIBITED</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#CONTAINS_UNASSIGNED">CONTAINS_UNASSIGNED</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#StringprepException(String)">StringprepException</a>(String&nbsp;m)</code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="BIDI_BOTHRAL" id="BIDI_BOTHRAL"/><div class="member detail outer"><h3 class="member detail name">BIDI_BOTHRAL</h3><pre class="member detail synopsis">public static String BIDI_BOTHRAL</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="BIDI_LTRAL" id="BIDI_LTRAL"/><div class="member detail outer"><h3 class="member detail name">BIDI_LTRAL</h3><pre class="member detail synopsis">public static String BIDI_LTRAL</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="CONTAINS_PROHIBITED" id="CONTAINS_PROHIBITED"/><div class="member detail outer"><h3 class="member detail name">CONTAINS_PROHIBITED</h3><pre class="member detail synopsis">public static String CONTAINS_PROHIBITED</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="CONTAINS_UNASSIGNED" id="CONTAINS_UNASSIGNED"/><div class="member detail outer"><h3 class="member detail name">CONTAINS_UNASSIGNED</h3><pre class="member detail synopsis">public static String CONTAINS_UNASSIGNED</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="StringprepException(String)" id="StringprepException(String)"/><div class="member detail outer"><h3 class="member detail name">StringprepException</h3><pre class="member detail synopsis">public StringprepException(String m)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/classes.html b/doc/java/gnu/inet/encoding/classes.html
new file mode 100644 (file)
index 0000000..fd7f91d
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>gnu.inet.encoding Class Menu</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="menu classes" onload="if(parent.contentPageLoaded)parent.contentPageLoaded()"><h4 class="classes menu-title"><a href="package-summary.html" title="" target="content">gnu.inet.encoding</a></h4><div class="classes menu-list"><p class="classes menu-subtitle">Classes</p><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/CombiningClass.html" title="gnu.inet.encoding.CombiningClass" target="content">CombiningClass</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/Composition.html" title="gnu.inet.encoding.Composition" target="content">Composition</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/DecompositionKeys.html" title="gnu.inet.encoding.DecompositionKeys" target="content">DecompositionKeys</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/DecompositionMappings.html" title="gnu.inet.encoding.DecompositionMappings" target="content">DecompositionMappings</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/IDNA.html" title="gnu.inet.encoding.IDNA" target="content">IDNA</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/IDNAException.html" title="gnu.inet.encoding.IDNAException" target="content">IDNAException</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/NFKC.html" title="gnu.inet.encoding.NFKC" target="content">NFKC</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/Punycode.html" title="gnu.inet.encoding.Punycode" target="content">Punycode</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/PunycodeException.html" title="gnu.inet.encoding.PunycodeException" target="content">PunycodeException</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/RFC3454.html" title="gnu.inet.encoding.RFC3454" target="content">RFC3454</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/Stringprep.html" title="gnu.inet.encoding.Stringprep" target="content">Stringprep</a></span><br/><span class="classes menu-entry class"><a href="../../../gnu/inet/encoding/StringprepException.html" title="gnu.inet.encoding.StringprepException" target="content">StringprepException</a></span><br/></div></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/package-summary.html b/doc/java/gnu/inet/encoding/package-summary.html
new file mode 100644 (file)
index 0000000..0c592e9
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>gnu.inet.encoding</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="gnu.inet.encoding packages"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content package" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item active">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi">Prev Package | Next Package</td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="package-summary.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="package title">Package gnu.inet.encoding</h1><div class="package description top"></div><dl class="table container"><dd><table class="package summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Class Summary</h2></td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/CombiningClass.html" title="Class in gnu.inet.encoding">CombiningClass</a></td><td class="right"> Auto-generated class containing Unicode NFKC tables.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></td><td class="right"> Auto-generated class containing Unicode NFKC tables.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/DecompositionKeys.html" title="Class in gnu.inet.encoding">DecompositionKeys</a></td><td class="right"> Auto-generated class containing Unicode NFKC tables.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/DecompositionMappings.html" title="Class in gnu.inet.encoding">DecompositionMappings</a></td><td class="right"> Auto-generated class containing Unicode NFKC tables.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/IDNA.html" title="Class in gnu.inet.encoding">IDNA</a></td><td class="right"> This class offers static methods for converting internationalized
+ domain names to ACE and back.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/IDNAException.html" title="Class in gnu.inet.encoding">IDNAException</a></td><td class="right"> Exception handling for IDNA class.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/NFKC.html" title="Class in gnu.inet.encoding">NFKC</a></td><td class="right"> This class offers static methods for Unicode NFKC string normalization.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/Punycode.html" title="Class in gnu.inet.encoding">Punycode</a></td><td class="right"> This class offers static methods for encoding/decoding strings
+ using the Punycode algorithm.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/PunycodeException.html" title="Class in gnu.inet.encoding">PunycodeException</a></td><td class="right"> Exception handling for Punycode class.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/RFC3454.html" title="Class in gnu.inet.encoding">RFC3454</a></td><td class="right"> Auto-generated class containing StringPrep mapping tables.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/Stringprep.html" title="Class in gnu.inet.encoding">Stringprep</a></td><td class="right"> This class offers static methods for preparing internationalized
+ strings.</td></tr><tr><td class="left"><a href="../../../gnu/inet/encoding/StringprepException.html" title="Class in gnu.inet.encoding">StringprepException</a></td><td class="right"> Exception handling for StringPrep class.</td></tr></table></dd></dl>
+<a name="description" id="description"/><div class="package description full"></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item active">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/gnu/inet/encoding/tree.html b/doc/java/gnu/inet/encoding/tree.html
new file mode 100644 (file)
index 0000000..6ecb9cd
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>gnu.inet.encoding Hierarchy</title><script src="../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content packagetree" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="tree.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="package tree title">Hierarchy for Package gnu.inet.encoding</h1><h2 class="package tree section title">Class Hierarchy</h2><ul class="tree"><li class="node"><div>java.lang.Object</div></li><li class="level"><ul><li class="node"><div>gnu.inet.encoding.<b class="tree link"><a href="../../../gnu/inet/encoding/CombiningClass.html" title="Class in gnu.inet.encoding">CombiningClass</a></b></div></li><li class="node"><div>gnu.inet.encoding.<b class="tree link"><a href="../../../gnu/inet/encoding/Composition.html" title="Class in gnu.inet.encoding">Composition</a></b></div></li><li class="node"><div>gnu.inet.encoding.<b class="tree link"><a href="../../../gnu/inet/encoding/DecompositionKeys.html" title="Class in gnu.inet.encoding">DecompositionKeys</a></b></div></li><li class="node"><div>gnu.inet.encoding.<b class="tree link"><a href="../../../gnu/inet/encoding/DecompositionMappings.html" title="Class in gnu.inet.encoding">DecompositionMappings</a></b></div></li><li class="node"><div>gnu.inet.encoding.<b class="tree link"><a href="../../../gnu/inet/encoding/IDNA.html" title="Class in gnu.inet.encoding">IDNA</a></b></div></li><li class="node"><div>gnu.inet.encoding.<b class="tree link"><a href="../../../gnu/inet/encoding/NFKC.html" title="Class in gnu.inet.encoding">NFKC</a></b></div></li><li class="node"><div>gnu.inet.encoding.<b class="tree link"><a href="../../../gnu/inet/encoding/Punycode.html" title="Class in gnu.inet.encoding">Punycode</a></b></div></li><li class="node"><div>gnu.inet.encoding.<b class="tree link"><a href="../../../gnu/inet/encoding/RFC3454.html" title="Class in gnu.inet.encoding">RFC3454</a></b></div></li><li class="node"><div>gnu.inet.encoding.<b class="tree link"><a href="../../../gnu/inet/encoding/Stringprep.html" title="Class in gnu.inet.encoding">Stringprep</a></b></div></li></ul></li></ul><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/java/index.html b/doc/java/index.html
new file mode 100644 (file)
index 0000000..8565935
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Generated API Documentation</title><script src="./resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><frameset cols="20%,80%"><frame src="gnu/inet/encoding/classes.html" name="classes"/><frame src="gnu/inet/encoding/package-summary.html" name="content"/></frameset></html>
\ No newline at end of file
diff --git a/doc/java/package-list b/doc/java/package-list
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/doc/java/resources/gjdoc.js b/doc/java/resources/gjdoc.js
new file mode 100644 (file)
index 0000000..91f8ba2
--- /dev/null
@@ -0,0 +1,115 @@
+/* gjdoc.js
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This file is part of GNU Classpath.
+
+ GNU Classpath is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ GNU Classpath is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNU Classpath; see the file COPYING.  If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/**
+ *  Sets a new stylesheet for a single frame.
+ */
+function setStyleSheetForFrame(title, frame_name)
+{
+   var i, num, a, main;
+   f = eval("top.frames." + frame_name);
+   for(i=0; (a = f.document.getElementsByTagName("link")[i]); i++) {
+      if(a.getAttribute("rel").indexOf("style") != -1
+         && a.getAttribute("title")) {
+         a.disabled = true;
+         a.disabled = (a.getAttribute("title") != title);
+      }
+   }
+}
+
+/**
+ *  Sets a new stylesheet for a single document.
+ */
+function setStyleSheetForDocument(title) 
+{
+   var i, num, a, main;
+   for(i=0; (a = top.document.getElementsByTagName("link")[i]); i++) {
+      if(a.getAttribute("rel").indexOf("style") != -1
+         && a.getAttribute("title")) {
+         a.disabled = true;
+         a.disabled = (a.getAttribute("title") != title);        
+      }
+   }
+}
+
+/**
+ *  Sets a new stylesheets for all frames.
+ */
+function setStyleSheet(title)
+{
+   var i, num, a, main;
+   num = top.frames.length;
+   if (num > 0) {
+      for (i=0; i<num; i++) {
+         setStyleSheetForFrame(title, top.frames[i].name);
+      }
+   }
+   else {
+      setStyleSheetForDocument(title);
+   }
+   top.selectedSheet = title;
+   return false;
+}
+
+/**
+ *  Returns the title of the set of stylesheets that is active in the
+ *  given frame.
+ */
+function getActiveStylesheetTitle(frame)
+{ 
+   for(i=0; (a = frame.document.getElementsByTagName("link")[i]); i++) {
+      if(a.getAttribute("rel").indexOf("style") != -1
+         && a.getAttribute("title")) {
+         if (!a.disabled) {
+            return a.getAttribute("title");
+         }    
+      }
+   }
+   return "";
+}
+
+/**
+ *  Invoked when a page in the main content frame has been loaded.
+ */
+function contentPageLoaded(title) 
+{ 
+   if (title) {
+      top.document.title = title;
+   }
+   /** 20050204: removed since there is only one stylesheet at the time
+   if (top.frames.length > 0) {
+      setStyleSheet(getActiveStylesheetTitle(top.frames.packages), "content");
+   }
+   else if (top.selectedSheet) { 
+      setStyleSheet(top.selectedSheet, "content");
+   }
+   **/
+}
+
+/**
+ *  Invoked when a page in one of the two frames on the left hand has
+ *  been loaded.
+ */
+function secondaryPageLoaded(frame_name)
+{ 
+   /** 20050204: removed since there is only one stylesheet at the time
+   setStyleSheet(getActiveStylesheetTitle(top.frames.packages), frame_name);
+   **/
+}
diff --git a/doc/java/resources/gjdochtml-clean-color1.css b/doc/java/resources/gjdochtml-clean-color1.css
new file mode 100644 (file)
index 0000000..28452fa
--- /dev/null
@@ -0,0 +1,80 @@
+/* gjdochtml-clean-layout.css
+   Copyright (C) 2004 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA. */
+
+/* --- GNU Clean Style: Color Scheme #1 --- */
+
+[class~="title"],
+[class="table header"],
+[class="table sub header"],
+[class="section header"],
+[class="serialized package header"],
+[class="serialized class header"]
+{
+        background-color: #E8EAFF;
+}
+
+[class~="navbar"][class~="item"]
+{
+         border-color: #000000;
+         color: #000000;
+}
+
+[class~="navbar"][class~="item"][class~="disabled"]
+{
+         border-color: #aaaaaa;
+         color: #aaaaaa;
+}
+
+[class~="navbar"][class~="item"][class~="active"]
+{
+        color: #000000;
+        background-color: #E8EAFF;
+}
+
+[class~="navbar"][class~="item"][class~="active"]
+{
+        border-color:  #222222;
+}
+
+.navbar .header a
+{
+        color: #777777;
+}
+
+a[href] {
+  color: #141EB8;
+}
+
+a[href]:visited {
+  color: #0C126E;
+}
+
+
+/* ---- source highlighting ---- */
+
+.comment      { color: #777777; }
+.tag          { color: #444444; }
+.keyword      { color: #B36B00; }
+.header.type  { color: #00248F; }
+.type         { color: #0033CC; }
+.literal      { color: #809FFF; }
+.variable     { color: #007D48; }
+.method       { color: #B32400; }
+.line-number  { color: #AAAAAA; }
diff --git a/doc/java/resources/gjdochtml-clean-layout.css b/doc/java/resources/gjdochtml-clean-layout.css
new file mode 100644 (file)
index 0000000..9d45909
--- /dev/null
@@ -0,0 +1,460 @@
+/* gjdochtml-clean-layout.css
+   Copyright (C) 2004 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA. */
+
+/* --- GNU Clean Style: Layout --- */
+
+body
+{
+        background: white;
+        color: black;
+}
+
+body.content
+{
+        margin-left: 1.3em;        
+        margin-right: 1.3em;        
+        margin-top: 0.9em;        
+        margin-bottom: 1.3em;        
+}
+
+div[class="class title outer"]
+{
+        margin: 0em;
+        margin-bottom: 1em;
+        border: 1px solid;
+        padding: 10pt;
+}
+
+[class="class title-package"]
+{
+        margin: 0em;
+        padding: 0em;
+}
+
+[class="class title-class"]
+{
+        margin: 0em;
+        margin-top: 0.2em;
+        padding: 0em;
+}
+
+[class="table header"],
+[class="table sub header"]
+{
+        margin: 0em;
+        padding: 0.25em;
+}
+
+[class="section header"]
+{
+        margin: 0em;
+        padding: 0.25em;
+        border: 1px solid;
+}
+
+.serialized.package.header
+{
+        margin: 0em;
+        padding: 0.25em;
+        border: 1px solid;
+        margin-bottom: 1em;
+}
+
+
+.serialized.class.header
+{
+        margin: 0em;
+        padding: 0.25em;
+        padding-left: 3.25em;
+        border: 1px solid;
+        text-indent: -3em;
+        font-weight: normal;
+        font-size: 1.2em;
+}
+
+.serialized.section.header
+{
+        font-size: 1.15em;
+}
+
+div.serialized.section
+{
+        padding-left: 1em;
+}
+
+.summary td,
+.summary .inherited
+{
+        padding: 0.25em;
+}
+
+table[border]
+{
+        border-spacing: 0em;
+        border-collapse: collapse;
+}
+
+table[border] td
+{
+        border-spacing: 0em;
+        border-collapse: collapse;
+}
+
+hr
+{
+        border-top: 1px solid;
+        border-bottom: 0px;
+        border-left: 0px;
+        border-right: 0px;
+}
+
+.class.summary .left
+{
+        width: 10%;
+}
+
+.class.summary td.left
+{
+        text-align: right;
+}
+
+.class.summary .left .synopsis
+{
+        font-size: small;
+}
+
+
+[class="package summary left"]
+{
+        width: 20%;
+}
+
+ul.inheritance
+{       
+        margin-left: 1.8em;
+        padding-left: 0em;
+        marker-offset: 0em !important;
+        list-style-type: none;
+        list-style-image: none;
+}
+
+li.inheritance
+{
+        margin: 0em !important;
+        margin-top: 0.1em !important;
+        padding: 0em !important;
+        marker-offset: 0em !important;
+}
+
+ul.inheritance > li.inheritance:before
+{
+        display: marker;
+        width: 12px;
+        margin: 0em !important;
+        padding: 0em !important;
+        marker-offset: 0em !important;
+        content: url(inherit.png);
+        vertical-align: center !important;
+}
+
+[class="inheritance 0"] > li.inheritance:before
+{
+        display: none;
+}
+
+ul [class="inheritance 0"]
+{
+        margin-left: 12px !important;
+        padding-left: 0em;
+        list-style-type: none !important;
+        list-style-image: none !important;
+}
+
+.inheritance-tree
+{
+        position: relative;
+        left: -24px;
+}
+
+.synopsis.outer
+{
+        padding: 0em;
+        margin-bottom: 0.3em;
+}
+
+.synopsis.outer > *
+{
+        margin: 0em;
+        padding: 0em;
+        line-height: 1.0em;
+}
+
+div.navbar.div
+{
+        padding: 0em;
+        margin: 0em;
+        position: relative;
+        left: -0.2em;
+}
+
+.navbar.div,
+.navbar.div tr,
+.navbar.div td
+{
+        margin: 0em;
+        padding: 0em;
+        border-spacing: 0em;
+        border-collapse: collapse;
+}
+
+table.navbar.div
+{
+        width: 100%;
+}
+
+table.navbar.div td
+{
+        line-height: 1.9em;
+        text-align: top;
+}
+
+.navbar.item
+{
+        /* float: left; */
+        border: 1px solid;
+        /* width: 7.5em; */
+        text-align: center;
+        margin: 0.05em;
+        padding-top: 0.2em;
+        padding-bottom: 0.3em;
+        padding-left: 0.5em;
+        padding-right: 0.5em;
+        font-size: 0.75em;
+        margin-bottom: 0.5em;
+}
+
+.navbar.item.active
+{
+        /* font-weight: bold; */
+        border: 1px solid;
+}
+
+[class~="title"]
+{
+        border: 1px solid;
+        padding: 0.3em;
+        margin-top: 0em;
+}
+
+.table.container,
+.table.container dd
+{
+        padding: 0em;
+        margin: 0em;
+}
+
+.overview.summary
+{
+        padding: 0em;
+        margin: 0em;
+}
+
+.summary
+{
+        margin-bottom: 1.2em;
+}
+        
+table.navbar.top
+{
+        margin-bottom: 1em !important;
+}
+
+.package.description
+{
+        margin-top: 0.0em;
+        margin-bottom: 1.0em;
+}
+
+.class.description
+{
+        margin-top: 1em;
+        margin-bottom: 0.8em;
+}
+
+[class="overview description top"]
+{
+        margin-top: 0.0em;
+        margin-bottom: 1.0em;
+}
+
+[class="overview description full"]
+{
+        margin-top: 1.0em;
+        margin-bottom: 0.0em;
+}
+
+.class.summary .right .list
+{
+        margin: 0em;
+        padding: 0em;  
+}
+
+.class.summary .right .list .synopsis
+{
+        margin: 0em;
+        padding: 0em;         
+}
+
+.classes .menu-subtitle
+{
+        padding: 0em;
+        margin-top: 0.5em;
+        margin-bottom: 0em;
+}
+
+.menu-title
+{
+        padding: 0em;
+        margin-top: 0.8em;
+        margin-bottom: 0.2em;
+}
+
+.menu-entry
+{
+        font-size: 0.8em;
+}
+
+.class.summary .right
+{
+        vertical-align: top;
+}
+
+.class.summary .right .list
+{
+        vertical-align: top;
+}
+
+.navi
+{
+        padding-top: 0.5em;
+        font-size: x-small;
+}
+
+.navbar .header
+{
+        vertical-align: top;
+}
+
+.navbar .header span
+{
+        border: none;
+        white-space: nowrap;
+        padding-top: 0.2em;
+        padding-bottom: 0.3em;
+        padding-left: 0.5em;
+}
+
+.navbar .header a
+{
+        font-weight: bold;
+        font-size: 11pt;
+}
+
+h1
+{
+        font-size: 1.5em;
+}
+
+h2
+{
+        font-size: 1.3em;
+}
+
+h3
+{
+        font-size: 1.1em;
+}
+
+.summary .right .synopsis
+{
+        padding-left: 5.25em !important;
+        text-indent: -5em !important;
+}
+
+.summary .right .description
+{
+        text-indent: 1em !important;
+        padding-top: 0.25em !important;
+        padding-bottom: 0.1em !important;
+        padding-left: 0.25em !important;
+}
+
+td.usage.summary
+{
+        vertical-align: top;
+}
+
+.index .entry .description
+{
+        padding-left: 3em;
+}
+
+.index .entry .key
+{
+        padding-left: 5.25em;
+        text-indent: -5em;
+}
+
+.dep-list .summary .description
+{
+        padding-top: 0.1em;
+        padding-left: 3em;
+}
+
+.dep-toc .header
+{
+        padding-bottom: 0em;
+        margin-bottom: 0.2em;
+}
+
+.dep-toc .list
+{
+        margin-top: 0em;
+        margin-bottom: 1.5em;
+        padding-top: 0em;
+        padding-bottom: 0em;
+        padding-left: 2em;
+}
+
+ul.tree li.node
+{
+        list-style-type: disc;
+}
+
+ul.tree ul
+{
+        margin-left: 0em;
+        padding-left: 1.8em;
+}
+
+li.level
+{
+        list-style-type: none;
+}
diff --git a/doc/java/resources/inherit.png b/doc/java/resources/inherit.png
new file mode 100644 (file)
index 0000000..50ca474
Binary files /dev/null and b/doc/java/resources/inherit.png differ
diff --git a/doc/java/serialized-form.html b/doc/java/serialized-form.html
new file mode 100644 (file)
index 0000000..ce406aa
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "./resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Serialized Form</title><script src="./resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content deprecated" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="./gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="gnu/inet/encoding/tree.html">Tree</a></span> <span class="navbar item enabled"><a href="./alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="./deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="./about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="./index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="serialized-form.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="serialized title">Serialized Form</h1><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="./gnu/inet/encoding/package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="gnu/inet/encoding/tree.html">Tree</a></span> <span class="navbar item enabled"><a href="./alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="./deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="./about.html">About</a></span></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/doc/lgpl-2.1.texi b/doc/lgpl-2.1.texi
new file mode 100644 (file)
index 0000000..a2ba64b
--- /dev/null
@@ -0,0 +1,561 @@
+@c The GNU Lesser General Public License.
+@center Version 2.1, February 1999
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 1991, 1999 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+as the successor of the GNU Library Public License, version 2, hence the
+version number 2.1.]
+@end display
+
+@subheading Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software---to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software---typically libraries---of the Free
+Software Foundation and other authors who decide to use it.  You can use
+it too, but we suggest you first think carefully about whether this
+license or the ordinary General Public License is the better strategy to
+use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of it
+in new free programs; and that you are informed that you can do these
+things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the @dfn{Lesser} General Public License because it
+does @emph{Less} to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+``work based on the library'' and a ``work that uses the library''.  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+@subheading TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+@enumerate 0
+@item
+This License Agreement applies to any software library or other program
+which contains a notice placed by the copyright holder or other
+authorized party saying it may be distributed under the terms of this
+Lesser General Public License (also called ``this License'').  Each
+licensee is addressed as ``you''.
+
+  A ``library'' means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The ``Library'', below, refers to any such software library or work
+which has been distributed under these terms.  A ``work based on the
+Library'' means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term ``modification''.)
+
+  ``Source code'' for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+@item
+You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+@item
+You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+@enumerate a
+@item
+The modified work must itself be a software library.
+
+@item
+You must cause the files modified to carry prominent notices
+stating that you changed the files and the date of any change.
+
+@item
+You must cause the whole of the work to be licensed at no
+charge to all third parties under the terms of this License.
+
+@item
+If a facility in the modified Library refers to a function or a
+table of data to be supplied by an application program that uses
+the facility, other than as an argument passed when the facility
+is invoked, then you must make a good faith effort to ensure that,
+in the event an application does not supply such function or
+table, the facility still operates, and performs whatever part of
+its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has
+a purpose that is entirely well-defined independent of the
+application.  Therefore, Subsection 2d requires that any
+application-supplied function or table used by this function must
+be optional: if the application does not supply it, the square
+root function must still compute square roots.)
+@end enumerate
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+@item
+You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+@item
+You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+@item
+A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a ``work that uses the Library''.  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a ``work that uses the Library'' with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a ``work that uses the
+library''.  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a ``work that uses the Library'' uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+@item
+As an exception to the Sections above, you may also combine or
+link a ``work that uses the Library'' with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+@enumerate a
+@item
+Accompany the work with the complete corresponding
+machine-readable source code for the Library including whatever
+changes were used in the work (which must be distributed under
+Sections 1 and 2 above); and, if the work is an executable linked
+with the Library, with the complete machine-readable ``work that
+uses the Library'', as object code and/or source code, so that the
+user can modify the Library and then relink to produce a modified
+executable containing the modified Library.  (It is understood
+that the user who changes the contents of definitions files in the
+Library will not necessarily be able to recompile the application
+to use the modified definitions.)
+
+@item
+Use a suitable shared library mechanism for linking with the Library.  A
+suitable mechanism is one that (1) uses at run time a copy of the
+library already present on the user's computer system, rather than
+copying library functions into the executable, and (2) will operate
+properly with a modified version of the library, if the user installs
+one, as long as the modified version is interface-compatible with the
+version that the work was made with.
+
+@item
+Accompany the work with a written offer, valid for at
+least three years, to give the same user the materials
+specified in Subsection 6a, above, for a charge no more
+than the cost of performing this distribution.
+
+@item
+If distribution of the work is made by offering access to copy
+from a designated place, offer equivalent access to copy the above
+specified materials from the same place.
+
+@item
+Verify that the user has already received a copy of these
+materials or that you have already sent this user a copy.
+@end enumerate
+
+  For an executable, the required form of the ``work that uses the
+Library'' must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies the
+executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+@item
+You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+@enumerate a
+@item
+Accompany the combined library with a copy of the same work
+based on the Library, uncombined with any other library
+facilities.  This must be distributed under the terms of the
+Sections above.
+
+@item
+Give prominent notice with the combined library of the fact
+that part of it is a work based on the Library, and explaining
+where to find the accompanying uncombined form of the same work.
+@end enumerate
+
+@item
+You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+@item
+You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+@item
+Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+@item
+If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+@item
+If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+@item
+The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+``any later version'', you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+@item
+If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+@iftex
+@heading NO WARRANTY
+@end iftex
+@ifinfo
+@center NO WARRANTY
+
+@end ifinfo
+
+@item
+BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY ``AS IS'' WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+@item
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+@end enumerate
+
+@iftex
+@heading END OF TERMS AND CONDITIONS
+@end iftex
+@ifinfo
+@center END OF TERMS AND CONDITIONS
+
+@end ifinfo
+
+@page
+@subheading How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+``copyright'' line and a pointer to where the full notice is found.
+
+@smallexample
+@var{one line to give the library's name and an idea of what it does.}
+Copyright (C) @var{year}  @var{name of author}
+
+This library is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or (at
+your option) any later version.
+
+This library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+USA.
+@end smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the library, if
+necessary.  Here is a sample; alter the names:
+
+@smallexample
+Yoyodyne, Inc., hereby disclaims all copyright interest in the library
+`Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+@var{signature of Ty Coon}, 1 April 1990
+Ty Coon, President of Vice
+@end smallexample
+
+That's all there is to it!
diff --git a/doc/libidn-components.eps b/doc/libidn-components.eps
new file mode 100644 (file)
index 0000000..2f83eee
--- /dev/null
@@ -0,0 +1,331 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: components.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 5a
+%%CreationDate: Mon Jun  8 12:40:03 2009
+%%BoundingBox: 0 0 382 350
+%Magnification: 1.0000
+%%EndComments
+%%BeginProlog
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+/pageheader {
+save
+newpath 0 350 moveto 0 0 lineto 382 0 lineto 382 350 lineto closepath clip newpath
+-47.4 405.1 translate
+1 -1 scale
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06299 0.06299 sc
+} bind def
+/pagefooter {
+$F2psEnd
+restore
+} bind def
+%%EndProlog
+pageheader
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+0 slj
+0 slc
+7.500 slw
+n 3355 1845 m 3295 1845 3295 2235 60 arcto 4 {pop} repeat
+  3295 2295 4609 2295 60 arcto 4 {pop} repeat
+  4669 2295 4669 1905 60 arcto 4 {pop} repeat
+  4669 1845 3355 1845 60 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 2663 1845 m 2618 1845 2618 2250 45 arcto 4 {pop} repeat
+  2618 2295 3141 2295 45 arcto 4 {pop} repeat
+  3186 2295 3186 1890 45 arcto 4 {pop} repeat
+  3186 1845 2663 1845 45 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 1988 1845 m 1943 1845 1943 2250 45 arcto 4 {pop} repeat
+  1943 2295 2467 2295 45 arcto 4 {pop} repeat
+  2512 2295 2512 1890 45 arcto 4 {pop} repeat
+  2512 1845 1988 1845 45 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 1313 1845 m 1268 1845 1268 2250 45 arcto 4 {pop} repeat
+  1268 2295 1792 2295 45 arcto 4 {pop} repeat
+  1837 2295 1837 1890 45 arcto 4 {pop} repeat
+  1837 1845 1313 1845 45 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 870 4560 m 810 4560 810 5099 60 arcto 4 {pop} repeat
+  810 5159 6735 5159 60 arcto 4 {pop} repeat
+  6795 5159 6795 4620 60 arcto 4 {pop} repeat
+  6795 4560 870 4560 60 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 4065 2837 m 4005 2837 4005 3448 60 arcto 4 {pop} repeat
+  4005 3508 5790 3508 60 arcto 4 {pop} repeat
+  5850 3508 5850 2897 60 arcto 4 {pop} repeat
+  5850 2837 4065 2837 60 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 4110 900 m 4050 900 4050 1338 60 arcto 4 {pop} repeat
+  4050 1398 5520 1398 60 arcto 4 {pop} repeat
+  5580 1398 5580 960 60 arcto 4 {pop} repeat
+  5580 900 4110 900 60 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+2864 1768 m 2864 1863 l 2895 1863 l 2895 1768 l 2895 1768 l 2880 1832 l 2864 1768 l cp
+eoclip
+n 2880 1398 m
+ 2880 1848 l gs col0 s gr gr
+
+% arrowhead
+n 2864 1768 m 2880 1832 l 2895 1768 l 2864 1768 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+3674 1768 m 3674 1863 l 3705 1863 l 3705 1768 l 3705 1768 l 3690 1832 l 3674 1768 l cp
+eoclip
+n 3690 1395 m
+ 3690 1848 l gs col0 s gr gr
+
+% arrowhead
+n 3674 1768 m 3690 1832 l 3705 1768 l 3674 1768 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+2864 4493 m 2864 4588 l 2895 4588 l 2895 4493 l 2895 4493 l 2880 4557 l 2864 4493 l cp
+eoclip
+n 2880 2298 m
+ 2880 4573 l gs col0 s gr gr
+
+% arrowhead
+n 2864 4493 m 2880 4557 l 2895 4493 l 2864 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+2144 4493 m 2144 4588 l 2175 4588 l 2175 4493 l 2175 4493 l 2160 4557 l 2144 4493 l cp
+eoclip
+n 2160 2298 m
+ 2160 4573 l gs col0 s gr gr
+
+% arrowhead
+n 2144 4493 m 2160 4557 l 2175 4493 l 2144 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+1514 4493 m 1514 4588 l 1545 4588 l 1545 4493 l 1545 4493 l 1530 4557 l 1514 4493 l cp
+eoclip
+n 1530 2298 m
+ 1530 4573 l gs col0 s gr gr
+
+% arrowhead
+n 1514 4493 m 1530 4557 l 1545 4493 l 1514 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+1019 4493 m 1019 4588 l 1050 4588 l 1050 4493 l 1050 4493 l 1035 4557 l 1019 4493 l cp
+eoclip
+n 1035 1398 m
+ 1035 4573 l gs col0 s gr gr
+
+% arrowhead
+n 1019 4493 m 1035 4557 l 1050 4493 l 1019 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+1514 1768 m 1514 1863 l 1545 1863 l 1545 1768 l 1545 1768 l 1530 1832 l 1514 1768 l cp
+eoclip
+n 1530 1398 m
+ 1530 1848 l gs col0 s gr gr
+
+% arrowhead
+n 1514 1768 m 1530 1832 l 1545 1768 l 1514 1768 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+2189 1768 m 2189 1863 l 2220 1863 l 2220 1768 l 2220 1768 l 2205 1832 l 2189 1768 l cp
+eoclip
+n 2205 1398 m
+ 2205 1848 l gs col0 s gr gr
+
+% arrowhead
+n 2189 1768 m 2205 1832 l 2220 1768 l 2189 1768 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+3539 4493 m 3539 4588 l 3570 4588 l 3570 4493 l 3570 4493 l 3555 4557 l 3539 4493 l cp
+eoclip
+n 3555 2298 m
+ 3555 4573 l gs col0 s gr gr
+
+% arrowhead
+n 3539 4493 m 3555 4557 l 3570 4493 l 3539 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+4889 4493 m 4889 4588 l 4920 4588 l 4920 4493 l 4920 4493 l 4905 4557 l 4889 4493 l cp
+eoclip
+n 4905 3506 m
+ 4905 4573 l gs col0 s gr gr
+
+% arrowhead
+n 4889 4493 m 4905 4557 l 4920 4493 l 4889 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+ [15 45] 45 sd
+n 870 5820 m 810 5820 810 6359 60 arcto 4 {pop} repeat
+  810 6419 6735 6419 60 arcto 4 {pop} repeat
+  6795 6419 6795 5880 60 arcto 4 {pop} repeat
+  6795 5820 870 5820 60 arcto 4 {pop} repeat
+ cp gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+3705 5669 m 3705 5820 l 3765 5820 l 3765 5669 l 3765 5669 l 3735 5789 l 3705 5669 l cp
+3765 5311 m 3765 5160 l 3705 5160 l 3705 5311 l 3705 5311 l 3735 5191 l 3765 5311 l cp
+eoclip
+n 3735 5175 m
+ 3735 5805 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 3765 5311 m 3735 5191 l 3705 5311 l 3765 5311 l  cp gs col7 1.00 shd ef gr  col0 s
+% arrowhead
+n 3705 5669 m 3735 5789 l 3765 5669 l 3705 5669 l  cp gs col7 1.00 shd ef gr  col0 s
+% Polyline
+n 840 900 m 765 900 765 1323 75 arcto 4 {pop} repeat
+  765 1398 3841 1398 75 arcto 4 {pop} repeat
+  3916 1398 3916 975 75 arcto 4 {pop} repeat
+  3916 900 840 900 75 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+4349 2755 m 4349 2850 l 4380 2850 l 4380 2755 l 4380 2755 l 4365 2819 l 4349 2755 l cp
+eoclip
+n 4365 2277 m
+ 4365 2835 l gs col0 s gr gr
+
+% arrowhead
+n 4349 2755 m 4365 2819 l 4380 2755 l 4349 2755 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+4844 2783 m 4844 2878 l 4875 2878 l 4875 2783 l 4875 2783 l 4860 2847 l 4844 2783 l cp
+eoclip
+n 4860 1395 m
+ 4860 2863 l gs col0 s gr gr
+
+% arrowhead
+n 4844 2783 m 4860 2847 l 4875 2783 l 4844 2783 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 5715 900 m 5670 900 5670 1350 45 arcto 4 {pop} repeat
+  5670 1395 6750 1395 45 arcto 4 {pop} repeat
+  6795 1395 6795 945 45 arcto 4 {pop} repeat
+  6795 900 5715 900 45 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+6149 4493 m 6149 4588 l 6180 4588 l 6180 4493 l 6180 4493 l 6165 4557 l 6149 4493 l cp
+eoclip
+n 6165 1398 m
+ 6165 4573 l gs col0 s gr gr
+
+% arrowhead
+n 6149 4493 m 6165 4557 l 6180 4493 l 6149 4493 l  cp gs 0.00 setgray ef gr  col0 s
+/Helvetica ff 165.00 scf sf
+3600 2107 m
+gs 1 -1 sc (Nameprep) col0 sh gr
+/Helvetica ff 165.00 scf sf
+2700 2130 m
+gs 1 -1 sc (iSCSI) col0 sh gr
+/Helvetica ff 165.00 scf sf
+2025 2130 m
+gs 1 -1 sc (SASL) col0 sh gr
+/Helvetica ff 165.00 scf sf
+1327 2130 m
+gs 1 -1 sc (XMPP) col0 sh gr
+/Helvetica-Bold ff 165.00 scf sf
+3150 4905 m
+gs 1 -1 sc (GNU IDN Library) col0 sh gr
+/Helvetica ff 150.00 scf sf
+4751 3227 m
+gs 1 -1 sc (IDNA) col0 sh gr
+/Helvetica ff 165.00 scf sf
+4455 1215 m
+gs 1 -1 sc (Punycode) col0 sh gr
+/Helvetica ff 165.00 scf sf
+3345 6157 m
+gs 1 -1 sc (Application) col0 sh gr
+/Helvetica ff 165.00 scf sf
+1935 1215 m
+gs 1 -1 sc (StringPrep) col0 sh gr
+/Helvetica ff 165.00 scf sf
+6075 1170 m
+gs 1 -1 sc (TLD) col0 sh gr
+% here ends figure;
+pagefooter
+showpage
+%%Trailer
+%EOF
diff --git a/doc/libidn-components.pdf b/doc/libidn-components.pdf
new file mode 100644 (file)
index 0000000..21eb383
Binary files /dev/null and b/doc/libidn-components.pdf differ
diff --git a/doc/libidn-components.png b/doc/libidn-components.png
new file mode 100644 (file)
index 0000000..697d948
Binary files /dev/null and b/doc/libidn-components.png differ
diff --git a/doc/libidn.html b/doc/libidn.html
new file mode 100644 (file)
index 0000000..ed91b72
--- /dev/null
@@ -0,0 +1,6098 @@
+<html lang="en">
+<head>
+<title>GNU Libidn</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="description" content="GNU Libidn">
+<meta name="generator" content="makeinfo 4.13">
+<link title="Top" rel="top" href="#Top">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is last updated 28 May 2009 for version
+1.15 of GNU Libidn.
+
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, no Front-Cover Texts, and
+     no Back-Cover Texts.  A copy of the license is included in the
+     section entitled "GNU Free Documentation License".
+   -->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+body { 
+       margin: 2%;
+       padding: 0 5%;
+       background: #ffffff;
+}
+h1,h2,h3,h4,h5 {
+    font-weight: bold;
+    padding: 5px 5px 5px 5px;
+    background-color: #c2e0ff;
+    color: #336699;
+}
+h1 {
+    padding: 2em 2em 2em 5%;
+    color: white;
+    background: #336699;
+    text-align: center;
+    letter-spacing: 3px;
+}
+h2 { text-decoration: underline; }
+pre {
+  margin: 0 5%;
+  padding: 0.5em;
+}
+pre.example {
+  border: solid 1px;
+  background: #eeeeff;
+  padding-bottom: 1em;
+}
+pre.verbatim {
+  border: solid 1px gray;
+  background: white;
+  padding-bottom: 1em;
+}
+div.node {
+  margin: 0 -5% 0 -2%;
+  padding: 0.5em 0.5em;
+  margin-top: 0.5em;
+  margin-bottom: 0.5em;
+  font-weight: bold;
+}
+dd, li {
+  padding-top: 0.1em;
+  padding-bottom: 0.1em;
+}
+--></style>
+</head>
+<body>
+<h1 class="settitle">GNU Libidn</h1>
+   <div class="contents">
+<h2>Table of Contents</h2>
+<ul>
+<li><a name="toc_Top" href="#Top">GNU Libidn</a>
+<li><a name="toc_Introduction" href="#Introduction">1 Introduction</a>
+<ul>
+<li><a href="#Getting-Started">1.1 Getting Started</a>
+<li><a href="#Features">1.2 Features</a>
+<li><a href="#Library-Overview">1.3 Library Overview</a>
+<li><a href="#Supported-Platforms">1.4 Supported Platforms</a>
+<li><a href="#Getting-help">1.5 Getting help</a>
+<li><a href="#Commercial-Support">1.6 Commercial Support</a>
+<li><a href="#Downloading-and-Installing">1.7 Downloading and Installing</a>
+<ul>
+<li><a href="#Installing-under-Windows">1.7.1 Installing under Windows</a>
+</li></ul>
+<li><a href="#Bug-Reports">1.8 Bug Reports</a>
+<li><a href="#Contributing">1.9 Contributing</a>
+</li></ul>
+<li><a name="toc_Preparation" href="#Preparation">2 Preparation</a>
+<ul>
+<li><a href="#Header">2.1 Header</a>
+<li><a href="#Initialization">2.2 Initialization</a>
+<li><a href="#Version-Check">2.3 Version Check</a>
+<li><a href="#Building-the-source">2.4 Building the source</a>
+<li><a href="#Autoconf-tests">2.5 Autoconf tests</a>
+<li><a href="#Memory-handling-under-Windows">2.6 Memory handling under Windows</a>
+<li><a href="#Memory-handling-under-Windows">2.7 Header file <code>idn-free.h</code></a>
+<li><a href="#Memory-handling-under-Windows">2.8 Memory de-allocation function</a>
+</li></ul>
+<li><a name="toc_Utility-Functions" href="#Utility-Functions">3 Utility Functions</a>
+<ul>
+<li><a href="#Utility-Functions">3.1 Header file <code>stringprep.h</code></a>
+<li><a href="#Utility-Functions">3.2 Unicode Encoding Transformation</a>
+<li><a href="#Utility-Functions">3.3 Unicode Normalization</a>
+<li><a href="#Utility-Functions">3.4 Character Set Conversion</a>
+</li></ul>
+<li><a name="toc_Stringprep-Functions" href="#Stringprep-Functions">4 Stringprep Functions</a>
+<ul>
+<li><a href="#Stringprep-Functions">4.1 Header file <code>stringprep.h</code></a>
+<li><a href="#Stringprep-Functions">4.2 Defining A Stringprep Profile</a>
+<li><a href="#Stringprep-Functions">4.3 Control Flags</a>
+<li><a href="#Stringprep-Functions">4.4 Core Functions</a>
+<li><a href="#Stringprep-Functions">4.5 Error Handling</a>
+<li><a href="#Stringprep-Functions">4.6 Stringprep Profile Macros</a>
+</li></ul>
+<li><a name="toc_Punycode-Functions" href="#Punycode-Functions">5 Punycode Functions</a>
+<ul>
+<li><a href="#Punycode-Functions">5.1 Header file <code>punycode.h</code></a>
+<li><a href="#Punycode-Functions">5.2 Unicode Code Point Data Type</a>
+<li><a href="#Punycode-Functions">5.3 Core Functions</a>
+<li><a href="#Punycode-Functions">5.4 Error Handling</a>
+</li></ul>
+<li><a name="toc_IDNA-Functions" href="#IDNA-Functions">6 IDNA Functions</a>
+<ul>
+<li><a href="#IDNA-Functions">6.1 Header file <code>idna.h</code></a>
+<li><a href="#IDNA-Functions">6.2 Control Flags</a>
+<li><a href="#IDNA-Functions">6.3 Prefix String</a>
+<li><a href="#IDNA-Functions">6.4 Core Functions</a>
+<li><a href="#IDNA-Functions">6.5 Simplified ToASCII Interface</a>
+<li><a href="#IDNA-Functions">6.6 Simplified ToUnicode Interface</a>
+<li><a href="#IDNA-Functions">6.7 Error Handling</a>
+</li></ul>
+<li><a name="toc_TLD-Functions" href="#TLD-Functions">7 TLD Functions</a>
+<ul>
+<li><a href="#TLD-Functions">7.1 Header file <code>tld.h</code></a>
+<li><a href="#TLD-Functions">7.2 Core Functions</a>
+<li><a href="#TLD-Functions">7.3 Utility Functions</a>
+<li><a href="#TLD-Functions">7.4 High-Level Wrapper Functions</a>
+<li><a href="#TLD-Functions">7.5 Error Handling</a>
+</li></ul>
+<li><a name="toc_PR29-Functions" href="#PR29-Functions">8 PR29 Functions</a>
+<ul>
+<li><a href="#PR29-Functions">8.1 Header file <code>pr29.h</code></a>
+<li><a href="#PR29-Functions">8.2 Core Functions</a>
+<li><a href="#PR29-Functions">8.3 Utility Functions</a>
+<li><a href="#PR29-Functions">8.4 Error Handling</a>
+</li></ul>
+<li><a name="toc_Examples" href="#Examples">9 Examples</a>
+<ul>
+<li><a href="#Example-1">9.1 Example 1</a>
+<li><a href="#Example-2">9.2 Example 2</a>
+<li><a href="#Example-3">9.3 Example 3</a>
+<li><a href="#Example-4">9.4 Example 4</a>
+<li><a href="#Example-5">9.5 Example 5</a>
+</li></ul>
+<li><a name="toc_Invoking-idn" href="#Invoking-idn">10 Invoking idn</a>
+<ul>
+<li><a href="#Invoking-idn">10.1 Name</a>
+<li><a href="#Invoking-idn">10.2 Description</a>
+<li><a href="#Invoking-idn">10.3 Options</a>
+<li><a href="#Invoking-idn">10.4 Environment Variables</a>
+<li><a href="#Invoking-idn">10.5 Examples</a>
+<li><a href="#Invoking-idn">10.6 Troubleshooting</a>
+</li></ul>
+<li><a name="toc_Emacs-API" href="#Emacs-API">11 Emacs API</a>
+<ul>
+<li><a href="#Emacs-API">11.1 Punycode Emacs API</a>
+<li><a href="#Emacs-API">11.2 IDNA Emacs API</a>
+</li></ul>
+<li><a name="toc_Java-API" href="#Java-API">12 Java API</a>
+<ul>
+<li><a href="#Java-API">12.1 Overview</a>
+<li><a href="#Java-API">12.2 Miscellaneous Programs</a>
+<ul>
+<li><a href="#Java-API">12.2.1 GenerateRFC3454</a>
+<li><a href="#Java-API">12.2.2 GenerateNFKC</a>
+<li><a href="#Java-API">12.2.3 TestIDNA</a>
+<li><a href="#Java-API">12.2.4 TestNFKC</a>
+</li></ul>
+<li><a href="#Java-API">12.3 Possible Problems</a>
+<li><a href="#Java-API">12.4 A Note on Java and Unicode</a>
+</li></ul>
+<li><a name="toc_C_0023-API" href="#C_0023-API">13 C# API</a>
+<li><a name="toc_Acknowledgements" href="#Acknowledgements">14 Acknowledgements</a>
+<li><a name="toc_History" href="#History">15 History</a>
+<li><a name="toc_PR29-discussion" href="#PR29-discussion">Appendix A PR29 discussion</a>
+<li><a name="toc_On-Label-Separators" href="#On-Label-Separators">Appendix B On Label Separators</a>
+<ul>
+<li><a href="#On-Label-Separators">B.1 Recommended Workaround</a>
+</li></ul>
+<li><a name="toc_Copying-Information" href="#Copying-Information">Appendix C Copying Information</a>
+<ul>
+<li><a href="#GNU-Free-Documentation-License">C.1 GNU Free Documentation License</a>
+<li><a href="#GNU-LGPL">C.2 GNU Lesser General Public License</a>
+<li><a href="#GNU-GPL">C.3 GNU General Public License</a>
+</li></ul>
+<li><a name="toc_Function-and-Variable-Index" href="#Function-and-Variable-Index">Function and Variable Index</a>
+<li><a name="toc_Concept-Index" href="#Concept-Index">Concept Index</a>
+</li></ul>
+</div>
+
+
+
+<div class="node">
+<a name="Top"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Introduction">Introduction</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#dir">(dir)</a>
+
+</div>
+
+<h2 class="unnumbered">GNU Libidn</h2>
+
+<p>This manual is last updated 28 May 2009 for version
+1.15 of GNU Libidn.
+
+   <p>Copyright &copy; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+
+   <blockquote>
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+copy of the license is included in the section entitled &ldquo;GNU Free
+Documentation License&rdquo;. 
+</blockquote>
+
+<ul class="menu">
+<li><a accesskey="1" href="#Introduction">Introduction</a>:            How to use this manual. 
+<li><a accesskey="2" href="#Preparation">Preparation</a>:                      What you should do before using the library. 
+<li><a accesskey="3" href="#Utility-Functions">Utility Functions</a>:          Unicode transformation utility functions. 
+<li><a accesskey="4" href="#Stringprep-Functions">Stringprep Functions</a>:    Stringprep functions. 
+<li><a accesskey="5" href="#Punycode-Functions">Punycode Functions</a>:                Punycode functions. 
+<li><a accesskey="6" href="#IDNA-Functions">IDNA Functions</a>:                IDNA functions. 
+<li><a accesskey="7" href="#TLD-Functions">TLD Functions</a>:          TLD functions. 
+<li><a accesskey="8" href="#PR29-Functions">PR29 Functions</a>:                Detect strings non-idempotent under NFKC. 
+<li><a accesskey="9" href="#Examples">Examples</a>:                     Demonstrate how to use the library. 
+<li><a href="#Invoking-idn">Invoking idn</a>:          Command line interface to the library. 
+<li><a href="#Emacs-API">Emacs API</a>:                    Emacs Lisp API for Libidn. 
+<li><a href="#Java-API">Java API</a>:                     Notes on the Java port of Libidn. 
+<li><a href="#C_0023-API">C# API</a>:                       Notes on the C# port of Libidn. 
+<li><a href="#Acknowledgements">Acknowledgements</a>:             Whom to blame. 
+<li><a href="#History">History</a>:                      Rough outline of development history.
+
+</li></ul>
+<p>Appendices
+
+</p>
+<ul class="menu">
+<li><a href="#PR29-discussion">PR29 discussion</a>:              Implementation aspects of the PR29 flaw. 
+<li><a href="#On-Label-Separators">On Label Separators</a>:          Discussions of a flaw in the IDNA spec. 
+<li><a href="#Copying-Information">Copying Information</a>:            License text covering the Libidn library.
+
+</li></ul>
+<p>Indices
+
+</p>
+<ul class="menu">
+<li><a href="#Function-and-Variable-Index">Function and Variable Index</a>
+<li><a href="#Concept-Index">Concept Index</a>
+
+   </ul>
+
+<div class="node">
+<a name="Introduction"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Preparation">Preparation</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Top">Top</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">1 Introduction</h2>
+
+<p>GNU Libidn is a fully documented implementation of the Stringprep,
+Punycode and IDNA specifications.  Libidn's purpose is to encode and
+decode internationalized domain names.  The native C, C# and Java
+libraries are available under the GNU Lesser General Public License
+version 2.1 or later (see <a href="#GNU-LGPL">GNU LGPL</a>).
+
+   <p>The library contains a generic Stringprep implementation.  Profiles
+for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included. 
+Punycode and ASCII Compatible Encoding (ACE) via IDNA are supported. 
+A mechanism to define Top-Level Domain (TLD) specific validation
+tables, and to compare strings against those tables, is included. 
+Default tables for some TLDs are also included.
+
+   <p>The Stringprep API consists of two main functions, one for converting
+data from the system's native representation into UTF-8, and one
+function to perform the Stringprep processing.  Adding a new
+Stringprep profile for your application within the API is
+straightforward.  The Punycode API consists of one encoding function
+and one decoding function.  The IDNA API consists of the ToASCII and
+ToUnicode functions, as well as an high-level interface for converting
+entire domain names to and from the ACE encoded form.  The TLD API
+consists of one set of functions to extract the TLD name from a domain
+string, one set of functions to locate the proper TLD table to use
+based on the TLD name, and core functions to validate a string against
+a TLD table, and some utility wrappers to perform all the steps in one
+call.
+
+   <p>The library is used by, e.g., GNU SASL and Shishi to process user
+names and passwords.  Libidn can be built into GNU Libc to enable a
+new system-wide getaddrinfo flag for IDN processing.
+
+   <p>Libidn is developed for the GNU/Linux system, but runs on over 20 Unix
+platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.  The
+library is written in C and (parts of) the API is also accessible from
+C++, Emacs Lisp, Python and Java.  A native Java and C# port is
+included.
+
+   <p>Also included is a command line tool, several self tests, code
+examples, and more, all licensed under the GNU General Public License
+version 3.0 or later (see <a href="#GNU-GPL">GNU GPL</a>).
+
+<ul class="menu">
+<li><a accesskey="1" href="#Getting-Started">Getting Started</a>
+<li><a accesskey="2" href="#Features">Features</a>
+<li><a accesskey="3" href="#Library-Overview">Library Overview</a>
+<li><a accesskey="4" href="#Supported-Platforms">Supported Platforms</a>
+<li><a accesskey="5" href="#Getting-help">Getting help</a>
+<li><a accesskey="6" href="#Commercial-Support">Commercial Support</a>
+<li><a accesskey="7" href="#Downloading-and-Installing">Downloading and Installing</a>
+<li><a accesskey="8" href="#Bug-Reports">Bug Reports</a>
+<li><a accesskey="9" href="#Contributing">Contributing</a>
+</ul>
+
+<div class="node">
+<a name="Getting-Started"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Features">Features</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.1 Getting Started</h3>
+
+<p>This manual documents the library programming interface.  All
+functions and data types provided by the library are explained. 
+Included are also examples, and documentation for the command line
+tool <samp><span class="file">idn</span></samp> that provide a quick interface to the library.  The
+Emacs Lisp bindings for the library is also discussed.
+
+   <p>The reader is assumed to possess basic familiarity with
+internationalization concepts and network programming in C or C++.
+
+   <p>This manual can be used in several ways.  If read from the beginning
+to the end, it gives a good introduction into the library and how it
+can be used in an application.  Forward references are included where
+necessary.  Later on, the manual can be used as a reference manual to
+get just the information needed about any particular interface of the
+library.  Experienced programmers might want to start looking at the
+examples at the end of the manual (see <a href="#Examples">Examples</a>), and then only
+read up those parts of the interface which are unclear.
+
+<div class="node">
+<a name="Features"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Library-Overview">Library Overview</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Getting-Started">Getting Started</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.2 Features</h3>
+
+<p>This library might have a couple of advantages over other libraries
+doing a similar job.
+
+     <dl>
+<dt>It's Free Software<dd>Anybody can use, modify, and redistribute it under the terms of the
+GNU Lesser General Public License version 2.1 or later (see <a href="#GNU-LGPL">GNU LGPL</a>).
+
+     <br><dt>It's thread-safe<dd>No global state is kept in the library.  All functions are reentrant.
+
+     <br><dt>It's portable<dd>The code is intended to be written in pure ANSI C89.  It has been
+tested on many Unix like operating systems, and Windows.
+
+     <br><dt>It's modularized<dd>The library is composed of several modules, and the only interaction
+between modules is through each modules' public API.  If you only need
+one piece of functionality, it is possible to take the files you need
+and incorporate them into your own project.
+
+     <br><dt>It's not bloated<dd>The design of the library is based on the smallest API necessary to
+implement the basic functionality.  It has been carefully extended
+with a small number of high-level wrappers to make it comfortable to
+use the library.  However, it does not implement additional
+functionality just for the sake of completeness.
+
+     <br><dt>It's documented<dd>Sadly, not all software comes with documentation these days.  This one
+does.
+
+   </dl>
+
+<div class="node">
+<a name="Library-Overview"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Supported-Platforms">Supported Platforms</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Features">Features</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.3 Library Overview</h3>
+
+<p>The following illustration show the components that make up Libidn,
+and how your application relates to the library.  In the illustration,
+various components are shown as boxes.  You see the generic StringPrep
+component, the various StringPrep profiles including Nameprep, the
+Punycode component, the IDNA component, and the TLD component.  The
+arrows indicate aggregation, e.g., IDNA uses Punycode and Nameprep,
+and in turn Nameprep uses the generic StringPrep interface.  The
+interfaces to all components are available for applications, no
+component within the library is hidden from the application.
+
+   <div class="block-image"><img src="libidn-components.png" alt="libidn-components.png"></div>
+
+<div class="node">
+<a name="Supported-Platforms"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Getting-help">Getting help</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Library-Overview">Library Overview</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.4 Supported Platforms</h3>
+
+<p>Libidn has at some point in time been tested on the following
+platforms.  Online build reports for each platforms and Libidn version
+is available at <a href="http://autobuild.josefsson.org/libidn/">http://autobuild.josefsson.org/libidn/</a>.
+
+     <ol type=1 start=1>
+
+     <li>Debian GNU/Linux 3.0 (Woody)
+<a name="index-Debian-1"></a>
+GCC 2.95.4 and GNU Make. This is the main development platform. 
+<code>alphaev67-unknown-linux-gnu</code>, <code>alphaev6-unknown-linux-gnu</code>,
+<code>arm-unknown-linux-gnu</code>, <code>armv4l-unknown-linux-gnu</code>,
+<code>hppa-unknown-linux-gnu</code>, <code>hppa64-unknown-linux-gnu</code>,
+<code>i686-pc-linux-gnu</code>, <code>ia64-unknown-linux-gnu</code>,
+<code>m68k-unknown-linux-gnu</code>, <code>mips-unknown-linux-gnu</code>,
+<code>mipsel-unknown-linux-gnu</code>, <code>powerpc-unknown-linux-gnu</code>,
+<code>s390-ibm-linux-gnu</code>, <code>sparc-unknown-linux-gnu</code>,
+<code>sparc64-unknown-linux-gnu</code>.
+
+     <li>Debian GNU/Linux 2.1
+<a name="index-Debian-2"></a>
+GCC 2.95.1 and GNU Make. <code>armv4l-unknown-linux-gnu</code>.
+
+     <li>Tru64 UNIX
+<a name="index-Tru64-3"></a>
+Tru64 UNIX C compiler and Tru64 Make. <code>alphaev67-dec-osf5.1</code>,
+<code>alphaev68-dec-osf5.1</code>.
+
+     <li>SuSE Linux 7.1
+<a name="index-SuSE-4"></a>
+GCC 2.96 and GNU Make. <code>alphaev6-unknown-linux-gnu</code>,
+<code>alphaev67-unknown-linux-gnu</code>.
+
+     <li>SuSE Linux 7.2a
+<a name="index-SuSE-Linux-5"></a>
+GCC 3.0 and GNU Make. <code>ia64-unknown-linux-gnu</code>.
+
+     <li>SuSE Linux
+<a name="index-SuSE-Linux-6"></a>
+GCC 3.2.2 and GNU Make.  <code>x86_64-unknown-linux-gnu</code> (AMD64
+Opteron &ldquo;Melody&rdquo;).
+
+     <li>SuSE Enterprise Server 9 on IBM OpenPower 720
+<a name="index-SuSE-Linux-7"></a><a name="index-OpenPower-720-8"></a>
+GCC 3.3.3 and GNU Make.  <code>powerpc64-unknown-linux-gnu</code>.
+
+     <li>RedHat Linux 7.2
+<a name="index-RedHat-9"></a>
+GCC 2.96 and GNU Make. <code>alphaev6-unknown-linux-gnu</code>,
+<code>alphaev67-unknown-linux-gnu</code>, <code>ia64-unknown-linux-gnu</code>.
+
+     <li>RedHat Linux 8.0
+<a name="index-RedHat-10"></a>
+GCC 3.2 and GNU Make. <code>i686-pc-linux-gnu</code>.
+
+     <li>RedHat Advanced Server 2.1
+<a name="index-RedHat-Advanced-Server-11"></a>
+GCC 2.96 and GNU Make. <code>i686-pc-linux-gnu</code>.
+
+     <li>Slackware Linux 8.0.01
+<a name="index-RedHat-12"></a>
+GCC 2.95.3 and GNU Make. <code>i686-pc-linux-gnu</code>.
+
+     <li>Mandrake Linux 9.0
+<a name="index-Mandrake-13"></a>
+GCC 3.2 and GNU Make. <code>i686-pc-linux-gnu</code>.
+
+     <li>IRIX 6.5
+<a name="index-IRIX-14"></a>
+MIPS C compiler, IRIX Make. <code>mips-sgi-irix6.5</code>.
+
+     <li>AIX 4.3.2
+<a name="index-AIX-15"></a>
+IBM C for AIX compiler, AIX Make.  <code>rs6000-ibm-aix4.3.2.0</code>.
+
+     <li>Microsoft Windows 2000 (Cygwin)
+<a name="index-Windows-16"></a>
+GCC 3.2, GNU make. <code>i686-pc-cygwin</code>.
+
+     <li>HP-UX 11
+<a name="index-HP_002dUX-17"></a>
+HP-UX C compiler and HP Make. <code>ia64-hp-hpux11.22</code>,
+<code>hppa2.0w-hp-hpux11.11</code>.
+
+     <li>SUN Solaris 2.7
+<a name="index-Solaris-18"></a>
+GCC 3.0.4 and GNU Make. <code>sparc-sun-solaris2.7</code>.
+
+     <li>SUN Solaris 2.8
+<a name="index-Solaris-19"></a>
+Sun WorkShop Compiler C 6.0 and SUN Make. <code>sparc-sun-solaris2.8</code>.
+
+     <li>SUN Solaris 2.9
+<a name="index-Solaris-20"></a>
+Sun Forte Developer 7 C compiler and GNU
+Make. <code>sparc-sun-solaris2.9</code>.
+
+     <li>NetBSD 1.6
+<a name="index-NetBSD-21"></a>
+GCC 2.95.3 and GNU Make. <code>alpha-unknown-netbsd1.6</code>,
+<code>i386-unknown-netbsdelf1.6</code>.
+
+     <li>OpenBSD 3.1 and 3.2
+<a name="index-OpenBSD-22"></a>
+GCC 2.95.3 and GNU Make. <code>alpha-unknown-openbsd3.1</code>,
+<code>i386-unknown-openbsd3.1</code>.
+
+     <li>FreeBSD 4.7 and 4.8
+<a name="index-FreeBSD-23"></a>
+GCC 2.95.4 and GNU Make. <code>alpha-unknown-freebsd4.7</code>,
+<code>alpha-unknown-freebsd4.8</code>, <code>i386-unknown-freebsd4.7</code>,
+<code>i386-unknown-freebsd4.8</code>.
+
+     <li>MacOS X 10.2 Server Edition
+<a name="index-MacOS-X-24"></a>
+GCC 3.1 and GNU Make. <code>powerpc-apple-darwin6.5</code>.
+
+     <li>MacOS X 10.4 &ldquo;Tiger&rdquo; with Xcode 2.0
+<a name="index-MacOS-X-25"></a>
+GCC 4.0 and GNU Make. <code>powerpc-apple-darwin8.0</code>.
+
+     <li>Cross compiled to uClinux/uClibc on Motorola Coldfire
+<a name="index-Motorola-Coldfire-26"></a><a name="index-uClinux-27"></a><a name="index-uClibc-28"></a>
+GCC 3.4 and GNU Make <code>m68k-uclinux-elf</code>.
+
+     <li>Cross compiled to ARM using Glibc
+<a name="index-ARM-29"></a>
+GCC 2.95 and GNU Make <code>arm-linux</code>.
+
+     <li>Cross compiled to Mingw32. 
+<a name="index-Windows-30"></a><a name="index-Microsoft-31"></a><a name="index-mingw32-32"></a>
+GCC 3.4.4 and GNU Make <code>i586-mingw32msvc</code>.
+
+        </ol>
+
+   <p>If you use Libidn on, or port Libidn to, a new platform please report
+it to the author.
+
+<div class="node">
+<a name="Getting-help"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Commercial-Support">Commercial Support</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Supported-Platforms">Supported Platforms</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.5 Getting help</h3>
+
+<p>A mailing list where users of Libidn may help each other exists, and
+you can reach it by sending e-mail to <a href="mailto:help-libidn@gnu.org">help-libidn@gnu.org</a>. 
+Archives of the mailing list discussions, and an interface to manage
+subscriptions, is available through the World Wide Web at
+<a href="http://lists.gnu.org/mailman/listinfo/help-libidn">http://lists.gnu.org/mailman/listinfo/help-libidn</a>.
+
+<div class="node">
+<a name="Commercial-Support"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Downloading-and-Installing">Downloading and Installing</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Getting-help">Getting help</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.6 Commercial Support</h3>
+
+<p>Commercial support is available for users of GNU Libidn.  The kind of
+support that can be purchased may include:
+
+     <ul>
+<li>Implement new features. 
+Such as country code specific profiling to support a restricted subset
+of Unicode.
+
+     <li>Port Libidn to new platforms. 
+This could include porting Libidn to an embedded platforms that may
+need memory or size optimization.
+
+     <li>Integrating IDN support in your existing project.
+
+     <li>System design of components related to IDN.
+
+   </ul>
+
+   <p>If you are interested, please write to:
+
+<pre class="verbatim">Simon Josefsson Datakonsult
+Hagagatan 24
+113 47 Stockholm
+Sweden
+
+E-mail: simon@josefsson.org
+</pre>
+
+   <p>If your company provide support related to GNU Libidn and would like
+to be mentioned here, contact the author (see <a href="#Bug-Reports">Bug Reports</a>).
+
+<div class="node">
+<a name="Downloading-and-Installing"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Bug-Reports">Bug Reports</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Commercial-Support">Commercial Support</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.7 Downloading and Installing</h3>
+
+<p><a name="index-Installation-33"></a><a name="index-Download-34"></a>
+The package can be downloaded from several places, including:
+
+   <p><a href="ftp://alpha.gnu.org/pub/gnu/libidn/">ftp://alpha.gnu.org/pub/gnu/libidn/</a>
+
+   <p>The latest version is stored in a file, e.g.,
+&lsquo;<samp><span class="samp">libidn-1.15.tar.gz</span></samp>&rsquo; where the &lsquo;<samp><span class="samp">1.15</span></samp>&rsquo;
+value is the highest version number in the directory.
+
+   <p>The package is then extracted, configured and built like many other
+packages that use Autoconf.  For detailed information on configuring
+and building it, refer to the <samp><span class="file">INSTALL</span></samp> file that is part of the
+distribution archive.
+
+   <p>Here is an example terminal session that download, configure, build
+and install the package.  You will need a few basic tools, such as
+&lsquo;<samp><span class="samp">sh</span></samp>&rsquo;, &lsquo;<samp><span class="samp">make</span></samp>&rsquo; and &lsquo;<samp><span class="samp">cc</span></samp>&rsquo;.
+
+<pre class="example">     $ wget -q ftp://alpha.gnu.org/pub/gnu/libidn/libidn-1.15.tar.gz
+     $ tar xfz libidn-1.15.tar.gz
+     $ cd libidn-1.15/
+     $ ./configure
+     ...
+     $ make
+     ...
+     $ make install
+     ...
+</pre>
+   <p>After that Libidn should be properly installed and ready for use.
+
+   <p>A few <code>configure</code> options may be relevant, summarized in the
+table.
+
+     <dl>
+<dt><code>--enable-java</code><dd>Build the Java port into a *.JAR file.  See <a href="#Java-API">Java API</a>, for more
+information.
+
+     <br><dt><code>--disable-tld</code><dd>Disable the TLD module.  This would typically only be useful if you
+are building on a memory restricted platforms.  See <a href="#TLD-Functions">TLD Functions</a>,
+for more information.
+
+     <br><dt><code>--enable-csharp[=IMPL]</code><dd>Build the <code>C#</code> port into a <code>*.DLL</code> file.  See <a href="#C_0023-API">C# API</a>, for
+more information.  Here, <code>IMPL</code> is <code>pnet</code> or <code>mono</code>,
+indicating whether the PNET <samp><span class="command">cscc</span></samp> compiler or the Mono
+<samp><span class="command">mcs</span></samp> compiler should be used, respectively.
+
+   </dl>
+
+   <p>For the complete list, refer to the output from <code>configure
+--help</code>.
+
+<ul class="menu">
+<li><a accesskey="1" href="#Installing-under-Windows">Installing under Windows</a>:     Windows specific build instructions. 
+</ul>
+
+<div class="node">
+<a name="Installing-under-Windows"></a>
+<p><hr>
+Up:&nbsp;<a rel="up" accesskey="u" href="#Downloading-and-Installing">Downloading and Installing</a>
+
+</div>
+
+<h4 class="subsection">1.7.1 Installing under Windows</h4>
+
+<p>There are two ways to build Libidn on Windows: via MinGW or via Visual
+Studio.
+
+   <p>With MinGW, you can build a Libidn DLL and use it from other
+applications.  After installing MinGW (<a href="http://mingw.org/">http://mingw.org/</a>) follow
+the generic installation instructions (see <a href="#Downloading-and-Installing">Downloading and Installing</a>).  The DLL is installed by default.
+
+   <p>For information on how to use the DLL in other applications, see:
+<a href="http://www.mingw.org/mingwfaq.shtml#faq-msvcdll">http://www.mingw.org/mingwfaq.shtml#faq-msvcdll</a>.
+
+   <p>You can build Libidn as a native Visual Studio C++ project.  This
+allows you to build the code for other platforms that VS supports,
+such as Windows Mobile.  You need Visual Studio 2005 or later.
+
+   <p>First download and unpack the archive as described in the generic
+installation instructions (see <a href="#Downloading-and-Installing">Downloading and Installing</a>).  Don't
+run <code>./configure</code>.  Instead, start Visual Studio and open the
+project file <samp><span class="file">win32/libidn.sln</span></samp> inside the Libidn directory.  You
+should be able to build the project using Build Project.
+
+   <p>Output libraries will be written into the <code>win32/lib</code> (or
+<code>win32/lib/debug</code> for Debug versions) folder.
+
+   <p>When working with Windows you may want to look into the special memory
+handling functions that may be needed (see <a href="#Memory-handling-under-Windows">Memory handling under Windows</a>).
+
+<div class="node">
+<a name="Bug-Reports"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Contributing">Contributing</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Downloading-and-Installing">Downloading and Installing</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.8 Bug Reports</h3>
+
+<p><a name="index-Reporting-Bugs-35"></a>
+If you think you have found a bug in Libidn, please investigate it and
+report it.
+
+     <ul>
+<li>Please make sure that the bug is really in Libidn, and
+preferably also check that it hasn't already been fixed in the latest
+version.
+
+     <li>You have to send us a test case that makes it possible for us to
+reproduce the bug.
+
+     <li>You also have to explain what is wrong; if you get a crash, or
+if the results printed are not good and in that case, in what way. 
+Make sure that the bug report includes all information you would need
+to fix this kind of bug for someone else.
+
+   </ul>
+
+   <p>Please make an effort to produce a self-contained report, with
+something definite that can be tested or debugged.  Vague queries or
+piecemeal messages are difficult to act on and don't help the
+development effort.
+
+   <p>If your bug report is good, we will do our best to help you to get a
+corrected version of the software; if the bug report is poor, we won't
+do anything about it (apart from asking you to send better bug
+reports).
+
+   <p>If you think something in this manual is unclear, or downright
+incorrect, or if the language needs to be improved, please also send a
+note.
+
+   <p>Send your bug report to:
+
+<div align="center">&lsquo;<samp><span class="samp">bug-libidn@gnu.org</span></samp>&rsquo;</div>
+
+<div class="node">
+<a name="Contributing"></a>
+<p><hr>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Bug-Reports">Bug Reports</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Introduction">Introduction</a>
+
+</div>
+
+<h3 class="section">1.9 Contributing</h3>
+
+<p><a name="index-Contributing-36"></a><a name="index-Hacking-37"></a>
+If you want to submit a patch for inclusion &ndash; from solve a typo you
+discovered, up to adding support for a new feature &ndash; you should
+submit it as a bug report (see <a href="#Bug-Reports">Bug Reports</a>).  There are some
+things that you can do to increase the chances for it to be included
+in the official package.
+
+   <p>Unless your patch is very small (say, under 10 lines) we require that
+you assign the copyright of your work to the Free Software Foundation. 
+This is to protect the freedom of the project.  If you have not
+already signed papers, we will send you the necessary information when
+you submit your contribution.
+
+   <p>For contributions that doesn't consist of actual programming code, the
+only guidelines are common sense.  Use it.
+
+   <p>For code contributions, a number of style guides will help you:
+
+     <ul>
+<li>Coding Style. 
+Follow the GNU Standards document (see <a href="standards.html#Top">GNU Coding Standards</a>).
+
+     <p>If you normally code using another coding standard, there is no
+problem, but you should use &lsquo;<samp><span class="samp">indent</span></samp>&rsquo; to reformat the code
+(see <a href="indent.html#Top">GNU Indent</a>) before submitting your work.
+
+     <li>Use the unified diff format &lsquo;<samp><span class="samp">diff -u</span></samp>&rsquo;.
+
+     <li>Return errors. 
+No reason whatsoever should abort the execution of the library.  Even
+memory allocation errors, e.g. when malloc return NULL, should work
+although result in an error code.
+
+     <li>Design with thread safety in mind. 
+Don't use global variables and the like.
+
+     <li>Avoid using the C math library. 
+It causes problems for embedded implementations, and in most
+situations it is very easy to avoid using it.
+
+     <li>Document your functions. 
+Use comments before each function headers, that, if properly
+formatted, are extracted into GTK-DOC web pages.  Don't forget to
+update the Texinfo manual as well.
+
+     <li>Supply a ChangeLog and NEWS entries, where appropriate.
+
+   </ul>
+
+<!-- ********************************************************** -->
+<!-- *******************  Preparation  ************************ -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="Preparation"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Utility-Functions">Utility Functions</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Introduction">Introduction</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">2 Preparation</h2>
+
+<p>To use `Libidn', you have to perform some changes to your sources and
+the build system.  The necessary changes are small and explained in
+the following sections.  At the end of this chapter, it is described
+how the library is initialized, and how the requirements of the
+library are verified.
+
+   <p>A faster way to find out how to adapt your application for use with
+`Libidn' may be to look at the examples at the end of this manual
+(see <a href="#Examples">Examples</a>).
+
+<ul class="menu">
+<li><a accesskey="1" href="#Header">Header</a>
+<li><a accesskey="2" href="#Initialization">Initialization</a>
+<li><a accesskey="3" href="#Version-Check">Version Check</a>
+<li><a accesskey="4" href="#Building-the-source">Building the source</a>
+<li><a accesskey="5" href="#Autoconf-tests">Autoconf tests</a>
+<li><a accesskey="6" href="#Memory-handling-under-Windows">Memory handling under Windows</a>
+</ul>
+
+<div class="node">
+<a name="Header"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Initialization">Initialization</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Preparation">Preparation</a>
+
+</div>
+
+<h3 class="section">2.1 Header</h3>
+
+<p>The library contains a few independent parts, and each part export the
+interfaces (data types and functions) in a header file.  You must
+include the appropriate header files in all programs using the
+library, either directly or through some other header file, like this:
+
+<pre class="example">     #include &lt;stringprep.h&gt;
+</pre>
+   <p>The header files and the functions they define are categorized as
+follows:
+
+     <dl>
+<dt>stringprep.h<dd>
+The low-level stringprep API entry point.  For IDN applications, this
+is usually invoked via IDNA. Some applications, specifically non-IDN
+ones, may want to prepare strings directly though, and should include
+this header file.
+
+     <p>The name space of the stringprep part of Libidn is <code>stringprep*</code>
+for function names, <code>Stringprep*</code> for data types and
+<code>STRINGPREP_*</code> for other symbols.  In addition,
+<code>_stringprep*</code> is reserved for internal use and should never be
+used by applications.
+
+     <br><dt>punycode.h<dd>
+The entry point to Punycode encoding and decoding functions.  Normally
+punycode is used via the idna.h interface, but some application may
+want to perform raw punycode operations.
+
+     <p>The name space of the punycode part of Libidn is <code>punycode_*</code> for
+function names, <code>Punycode*</code> for data types and <code>PUNYCODE_*</code>
+for other symbols.  In addition, <code>_punycode*</code> is reserved for
+internal use and should never be used by applications. 
+<br><dt>idna.h<dd>
+The entry point to the IDNA functions.  This is the normal entry point
+for applications that need IDN functionality.
+
+     <p>The name space of the IDNA part of Libidn is <code>idna_*</code> for
+function names, <code>Idna*</code> for data types and <code>IDNA_*</code> for
+other symbols.  In addition, <code>_idna*</code> is reserved for internal
+use and should never be used by applications.
+
+     <br><dt>tld.h<dd>
+The entry point to the TLD functions.  Normal applications are not
+expected to need this functionality, but it is present for
+applications that are used by TLDs to validate customer input.
+
+     <p>The name space of the TLD part of Libidn is <code>tld_*</code> for function
+names, <code>Tld_*</code> for data types and <code>TLD_*</code> for other symbols. 
+In addition, <code>_tld*</code> is reserved for internal use and should
+never be used by applications.
+
+     <br><dt>pr29.h<dd>
+The entry point to the PR29 functions.  These functions are used to
+detect &ldquo;problem sequences&rdquo; (see <a href="#PR29-Functions">PR29 Functions</a>), mostly for use
+in security critical applications.
+
+     <p>The name space of the PR29 part of Libidn is <code>pr29_*</code> for
+function names, <code>Pr29_*</code> for data types and <code>PR29_*</code> for
+other symbols.  In addition, <code>_pr29*</code> is reserved for internal
+use and should never be used by applications.
+
+     <br><dt>idn-free.h<dd>
+The entry point to the Windows memory de-allocation function
+(see <a href="#Memory-handling-under-Windows">Memory handling under Windows</a>).  It contains only one
+function <code>idn_free</code>.
+
+   </dl>
+
+   <p>All header files defined and use the symbol <code>IDNAPI</code> to decorate
+the API functions.
+
+<div class="node">
+<a name="Initialization"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Version-Check">Version Check</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Header">Header</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Preparation">Preparation</a>
+
+</div>
+
+<h3 class="section">2.2 Initialization</h3>
+
+<p>Libidn is stateless and does not need any initialization.
+
+<div class="node">
+<a name="Version-Check"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Building-the-source">Building the source</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Initialization">Initialization</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Preparation">Preparation</a>
+
+</div>
+
+<h3 class="section">2.3 Version Check</h3>
+
+<p>It is often desirable to check that the version of `Libidn' used is
+indeed one which fits all requirements.  Even with binary
+compatibility new features may have been introduced but due to problem
+with the dynamic linker an old version is actually used.  So you may
+want to check that the version is okay right after program startup.
+
+<h4 class="subheading">stringprep_check_version</h4>
+
+<p><a name="stringprep_005fcheck_005fversion"></a>
+
+<div class="defun">
+&mdash; Function: const char * <b>stringprep_check_version</b> (<var>const char * req_version</var>)<var><a name="index-stringprep_005fcheck_005fversion-38"></a></var><br>
+<blockquote><p><var>req_version</var>: Required version number, or NULL.
+
+        <p>Check that the version of the library is at minimum the requested one
+and return the version string; return NULL if the condition is not
+satisfied.  If a NULL is passed to this function, no check is done,
+but the version string is simply returned.
+
+        <p>See <code>STRINGPREP_VERSION</code> for a suitable <code>req_version</code> string.
+
+        <p><strong>Return value:</strong> Version string of run-time library, or NULL if the
+run-time library does not meet the required version number. 
+</p></blockquote></div>
+
+   <p>The normal way to use the function is to put something similar to the
+following first in your <code>main</code>:
+
+<pre class="example">       if (!stringprep_check_version (STRINGPREP_VERSION))
+         {
+           printf ("stringprep_check_version() failed:\n"
+                   "Header file incompatible with shared library.\n");
+           exit(1);
+         }
+</pre>
+   <div class="node">
+<a name="Building-the-source"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Autoconf-tests">Autoconf tests</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Version-Check">Version Check</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Preparation">Preparation</a>
+
+</div>
+
+<h3 class="section">2.4 Building the source</h3>
+
+<p><a name="index-Compiling-your-application-39"></a>
+If you want to compile a source file including e.g. the `idna.h' header
+file, you must make sure that the compiler can find it in the
+directory hierarchy.  This is accomplished by adding the path to the
+directory in which the header file is located to the compilers include
+file search path (via the <samp><span class="option">-I</span></samp> option).
+
+   <p>However, the path to the include file is determined at the time the
+source is configured.  To solve this problem, `Libidn' uses the
+external package <samp><span class="command">pkg-config</span></samp> that knows the path to the
+include file and other configuration options.  The options that need
+to be added to the compiler invocation at compile time are output by
+the <samp><span class="option">--cflags</span></samp> option to <samp><span class="command">pkg-config libidn</span></samp>.  The
+following example shows how it can be used at the command line:
+
+<pre class="example">     gcc -c foo.c `pkg-config libidn --cflags`
+</pre>
+   <p>Adding the output of &lsquo;<samp><span class="samp">pkg-config libidn --cflags</span></samp>&rsquo; to the
+compilers command line will ensure that the compiler can find e.g. the
+idna.h header file.
+
+   <p>A similar problem occurs when linking the program with the library. 
+Again, the compiler has to find the library files.  For this to work,
+the path to the library files has to be added to the library search
+path (via the <samp><span class="option">-L</span></samp> option).  For this, the option
+<samp><span class="option">--libs</span></samp> to <samp><span class="command">pkg-config libidn</span></samp> can be used.  For
+convenience, this option also outputs all other options that are
+required to link the program with the `libidn' libarary.  The example
+shows how to link <samp><span class="file">foo.o</span></samp> with the `libidn' library to a program
+<samp><span class="command">foo</span></samp>.
+
+<pre class="example">     gcc -o foo foo.o `pkg-config libidn --libs`
+</pre>
+   <p>Of course you can also combine both examples to a single command by
+specifying both options to <samp><span class="command">pkg-config</span></samp>:
+
+<pre class="example">     gcc -o foo foo.c `pkg-config libidn --cflags --libs`
+</pre>
+   <div class="node">
+<a name="Autoconf-tests"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Memory-handling-under-Windows">Memory handling under Windows</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Building-the-source">Building the source</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Preparation">Preparation</a>
+
+</div>
+
+<h3 class="section">2.5 Autoconf tests</h3>
+
+<p><a name="index-Autoconf-tests-40"></a><a name="index-Configure-tests-41"></a>
+If your project uses Autoconf (see <a href="autoconf.html#Top">GNU Autoconf</a>)
+to check for installed libraries, you might find the following snippet
+illustrative.  It add a new <samp><span class="file">configure</span></samp> parameter
+<code>--with-libidn</code>, and check for <samp><span class="file">idna.h</span></samp> and &lsquo;<samp><span class="samp">-lidn</span></samp>&rsquo;
+(possibly below the directory specified as the optional argument to
+<code>--with-libidn</code>), and define the <acronym>CPP</acronym> symbol
+<code>LIBIDN</code> if the library is found.  The default behaviour is to
+search for the library and enable the functionality (that is, define
+the symbol) when the library is found, but if you wish to make the
+default behaviour of your package be that Libidn is not used (even if
+it is installed on the system), change &lsquo;<samp><span class="samp">libidn=yes</span></samp>&rsquo; to
+&lsquo;<samp><span class="samp">libidn=no</span></samp>&rsquo; on the third line.
+
+<pre class="example">     AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
+                                     [Support IDN (needs GNU Libidn)]),
+       libidn=$withval, libidn=yes)
+     if test "$libidn" != "no"; then
+       if test "$libidn" != "yes"; then
+         LDFLAGS="${LDFLAGS} -L$libidn/lib"
+         CPPFLAGS="${CPPFLAGS} -I$libidn/include"
+       fi
+       AC_CHECK_HEADER(idna.h,
+         AC_CHECK_LIB(idn, stringprep_check_version,
+           [libidn=yes LIBS="${LIBS} -lidn"], libidn=no),
+         libidn=no)
+     fi
+     if test "$libidn" != "no" ; then
+       AC_DEFINE(LIBIDN, 1, [Define to 1 if you want IDN support.])
+     else
+       AC_MSG_WARN([Libidn not found])
+     fi
+     AC_MSG_CHECKING([if Libidn should be used])
+     AC_MSG_RESULT($libidn)
+</pre>
+   <p>If you require that your users have installed <code>pkg-config</code> (which
+I cannot recommend generally), the above can be done more easily as
+follows.
+
+<pre class="example">     AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
+                                     [Support IDN (needs GNU Libidn)]),
+       libidn=$withval, libidn=yes)
+     if test "$libidn" != "no" ; then
+       PKG_CHECK_MODULES(LIBIDN, libidn &gt;= 0.0.0, [libidn=yes], [libidn=no])
+       if test "$libidn" != "yes" ; then
+         libidn=no
+         AC_MSG_WARN([Libidn not found])
+       else
+         libidn=yes
+         AC_DEFINE(LIBIDN, 1, [Define to 1 if you want Libidn.])
+       fi
+     fi
+     AC_MSG_CHECKING([if Libidn should be used])
+     AC_MSG_RESULT($libidn)
+</pre>
+   <div class="node">
+<a name="Memory-handling-under-Windows"></a>
+<p><hr>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Autoconf-tests">Autoconf tests</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Preparation">Preparation</a>
+
+</div>
+
+<h3 class="section">2.6 Memory handling under Windows</h3>
+
+<p><a name="index-free-42"></a><a name="index-Memory-handling-43"></a><a name="index-de_002dallocation-44"></a><a name="index-heap-memory-45"></a>
+Several functions in the library allocates memory.  The memory is
+expected to be de-allocated using the <code>free</code> function.  Under
+Windows, it is sometimes necessary to de-allocate memory in the same
+module that allocated a memory region.  The reason is that different
+modules use separate heap memory regions.  To solve this problem we
+provide a function to de-allocate memory inside the library.
+
+   <p>Note that we do not recommend using this interface generally if you do
+not care about Windows portability.
+
+<h3 class="section">2.7 Header file <code>idn-free.h</code></h3>
+
+<p>To use the function explained in this chapter, you need to include the
+file <samp><span class="file">idn-free.h</span></samp> using:
+
+<pre class="example">     #include &lt;idn-free.h&gt;
+</pre>
+   <h3 class="section">2.8 Memory de-allocation function</h3>
+
+<h4 class="subheading">idn_free</h4>
+
+<p><a name="idn_005ffree"></a>
+
+<div class="defun">
+&mdash; Function: void <b>idn_free</b> (<var>void * ptr</var>)<var><a name="index-idn_005ffree-46"></a></var><br>
+<blockquote><p><var>ptr</var>: memory region to deallocate, or <code>NULL</code>.
+
+        <p>Deallocates memory region by calling <code>free()</code>.  If <code>ptr</code> is <code>NULL</code> no
+operation is performed.
+
+        <p>Normally applications de-allocate strings allocated by libidn by
+calling <code>free()</code> directly.  Under Windows, different parts of the
+same application may use different heap memory, and then it is
+important to deallocate memory allocated within the same module
+that allocated it.  This function makes that possible. 
+</p></blockquote></div>
+
+<!-- ********************************************************** -->
+<!-- ********************  Utility Functions ****************** -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="Utility-Functions"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Stringprep-Functions">Stringprep Functions</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Preparation">Preparation</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">3 Utility Functions</h2>
+
+<p><a name="index-Utility-Functions-47"></a>
+The rest of this library makes extensive use of Unicode characters. 
+In order to interface this library with the outside world, your
+application may need to make various Unicode transformations.
+
+<h3 class="section">3.1 Header file <code>stringprep.h</code></h3>
+
+<p>To use the functions explained in this chapter, you need to include
+the file <samp><span class="file">stringprep.h</span></samp> using:
+
+<pre class="example">     #include &lt;stringprep.h&gt;
+</pre>
+   <h3 class="section">3.2 Unicode Encoding Transformation</h3>
+
+<h4 class="subheading">stringprep_unichar_to_utf8</h4>
+
+<p><a name="stringprep_005funichar_005fto_005futf8"></a>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep_unichar_to_utf8</b> (<var>uint32_t c, char * outbuf</var>)<var><a name="index-stringprep_005funichar_005fto_005futf8-48"></a></var><br>
+<blockquote><p><var>c</var>: a ISO10646 character code
+
+        <p><var>outbuf</var>: output buffer, must have at least 6 bytes of space. 
+If <code>NULL</code>, the length will be computed and returned
+and nothing will be written to <code>outbuf</code>.
+
+        <p>Converts a single character to UTF-8.
+
+        <p><strong>Return value:</strong> number of bytes written. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep_utf8_to_unichar</h4>
+
+<p><a name="stringprep_005futf8_005fto_005funichar"></a>
+
+<div class="defun">
+&mdash; Function: uint32_t <b>stringprep_utf8_to_unichar</b> (<var>const char * p</var>)<var><a name="index-stringprep_005futf8_005fto_005funichar-49"></a></var><br>
+<blockquote><p><var>p</var>: a pointer to Unicode character encoded as UTF-8
+
+        <p>Converts a sequence of bytes encoded as UTF-8 to a Unicode character. 
+If <code>p</code> does not point to a valid UTF-8 encoded character, results are
+undefined.
+
+        <p><strong>Return value:</strong> the resulting character. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep_ucs4_to_utf8</h4>
+
+<p><a name="stringprep_005fucs4_005fto_005futf8"></a>
+
+<div class="defun">
+&mdash; Function: char * <b>stringprep_ucs4_to_utf8</b> (<var>const uint32_t * str, ssize_t len, size_t * items_read, size_t * items_written</var>)<var><a name="index-stringprep_005fucs4_005fto_005futf8-50"></a></var><br>
+<blockquote><p><var>str</var>: a UCS-4 encoded string
+
+        <p><var>len</var>: the maximum length of <code>str</code> to use. If <code>len</code> &lt; 0, then
+the string is terminated with a 0 character.
+
+        <p><var>items_read</var>: location to store number of characters read read, or <code>NULL</code>.
+
+        <p><var>items_written</var>: location to store number of bytes written or <code>NULL</code>. 
+The value here stored does not include the trailing 0
+byte.
+
+        <p>Convert a string from a 32-bit fixed width representation as UCS-4. 
+to UTF-8. The result will be terminated with a 0 byte.
+
+        <p><strong>Return value:</strong> a pointer to a newly allocated UTF-8 string. 
+This value must be deallocated by the caller. 
+If an error occurs, <code>NULL</code> will be returned and <code>error</code>
+set. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep_utf8_to_ucs4</h4>
+
+<p><a name="stringprep_005futf8_005fto_005fucs4"></a>
+
+<div class="defun">
+&mdash; Function: uint32_t * <b>stringprep_utf8_to_ucs4</b> (<var>const char * str, ssize_t len, size_t * items_written</var>)<var><a name="index-stringprep_005futf8_005fto_005fucs4-51"></a></var><br>
+<blockquote><p><var>str</var>: a UTF-8 encoded string
+
+        <p><var>len</var>: the maximum length of <code>str</code> to use. If <code>len</code> &lt; 0, then
+the string is nul-terminated.
+
+        <p><var>items_written</var>: location to store the number of characters in the
+result, or <code>NULL</code>.
+
+        <p>Convert a string from UTF-8 to a 32-bit fixed width
+representation as UCS-4, assuming valid UTF-8 input. 
+This function does no error checking on the input.
+
+        <p><strong>Return value:</strong> a pointer to a newly allocated UCS-4 string. 
+This value must be deallocated by the caller. 
+</p></blockquote></div>
+
+<h3 class="section">3.3 Unicode Normalization</h3>
+
+<h4 class="subheading">stringprep_ucs4_nfkc_normalize</h4>
+
+<p><a name="stringprep_005fucs4_005fnfkc_005fnormalize"></a>
+
+<div class="defun">
+&mdash; Function: uint32_t * <b>stringprep_ucs4_nfkc_normalize</b> (<var>uint32_t * str, ssize_t len</var>)<var><a name="index-stringprep_005fucs4_005fnfkc_005fnormalize-52"></a></var><br>
+<blockquote><p><var>str</var>: a Unicode string.
+
+        <p><var>len</var>: length of <code>str</code> array, or -1 if <code>str</code> is nul-terminated.
+
+        <p>Converts UCS4 string into UTF-8 and runs
+<code>stringprep_utf8_nfkc_normalize()</code>.
+
+        <p><strong>Return value:</strong> a newly allocated Unicode string, that is the NFKC
+normalized form of <code>str</code>. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep_utf8_nfkc_normalize</h4>
+
+<p><a name="stringprep_005futf8_005fnfkc_005fnormalize"></a>
+
+<div class="defun">
+&mdash; Function: char * <b>stringprep_utf8_nfkc_normalize</b> (<var>const char * str, ssize_t len</var>)<var><a name="index-stringprep_005futf8_005fnfkc_005fnormalize-53"></a></var><br>
+<blockquote><p><var>str</var>: a UTF-8 encoded string.
+
+        <p><var>len</var>: length of <code>str</code>, in bytes, or -1 if <code>str</code> is nul-terminated.
+
+        <p>Converts a string into canonical form, standardizing
+such issues as whether a character with an accent
+is represented as a base character and combining
+accent or as a single precomposed character.
+
+        <p>The normalization mode is NFKC (ALL COMPOSE).  It standardizes
+differences that do not affect the text content, such as the
+above-mentioned accent representation. It standardizes the
+"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
+the standard forms (in this case DIGIT THREE). Formatting
+information may be lost but for most text operations such
+characters should be considered the same. It returns a result with
+composed forms rather than a maximally decomposed form.
+
+        <p><strong>Return value:</strong> a newly allocated string, that is the
+NFKC normalized form of <code>str</code>. 
+</p></blockquote></div>
+
+<h3 class="section">3.4 Character Set Conversion</h3>
+
+<h4 class="subheading">stringprep_locale_charset</h4>
+
+<p><a name="stringprep_005flocale_005fcharset"></a>
+
+<div class="defun">
+&mdash; Function: const char * <b>stringprep_locale_charset</b> (<var> void</var>)<var><a name="index-stringprep_005flocale_005fcharset-54"></a></var><br>
+<blockquote>
+        <p>Find out current locale charset.  The function respect the CHARSET
+environment variable, but typically uses nl_langinfo(CODESET) when
+it is supported.  It fall back on "ASCII" if CHARSET isn't set and
+nl_langinfo isn't supported or return anything.
+
+        <p>Note that this function return the application's locale's preferred
+charset (or thread's locale's preffered charset, if your system
+support thread-specific locales).  It does not return what the
+system may be using.  Thus, if you receive data from external
+sources you cannot in general use this function to guess what
+charset it is encoded in.  Use stringprep_convert from the external
+representation into the charset returned by this function, to have
+data in the locale encoding.
+
+        <p><strong>Return value:</strong> Return the character set used by the current locale. 
+It will never return NULL, but use "ASCII" as a fallback. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep_convert</h4>
+
+<p><a name="stringprep_005fconvert"></a>
+
+<div class="defun">
+&mdash; Function: char * <b>stringprep_convert</b> (<var>const char * str, const char * to_codeset, const char * from_codeset</var>)<var><a name="index-stringprep_005fconvert-55"></a></var><br>
+<blockquote><p><var>str</var>: input zero-terminated string.
+
+        <p><var>to_codeset</var>: name of destination character set.
+
+        <p><var>from_codeset</var>: name of origin character set, as used by <code>str</code>.
+
+        <p>Convert the string from one character set to another using the
+system's <code>iconv()</code> function.
+
+        <p><strong>Return value:</strong> Returns newly allocated zero-terminated string which
+is <code>str</code> transcoded into to_codeset. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep_locale_to_utf8</h4>
+
+<p><a name="stringprep_005flocale_005fto_005futf8"></a>
+
+<div class="defun">
+&mdash; Function: char * <b>stringprep_locale_to_utf8</b> (<var>const char * str</var>)<var><a name="index-stringprep_005flocale_005fto_005futf8-56"></a></var><br>
+<blockquote><p><var>str</var>: input zero terminated string.
+
+        <p>Convert string encoded in the locale's character set into UTF-8 by
+using <code>stringprep_convert()</code>.
+
+        <p><strong>Return value:</strong> Returns newly allocated zero-terminated string which
+is <code>str</code> transcoded into UTF-8. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep_utf8_to_locale</h4>
+
+<p><a name="stringprep_005futf8_005fto_005flocale"></a>
+
+<div class="defun">
+&mdash; Function: char * <b>stringprep_utf8_to_locale</b> (<var>const char * str</var>)<var><a name="index-stringprep_005futf8_005fto_005flocale-57"></a></var><br>
+<blockquote><p><var>str</var>: input zero terminated string.
+
+        <p>Convert string encoded in UTF-8 into the locale's character set by
+using <code>stringprep_convert()</code>.
+
+        <p><strong>Return value:</strong> Returns newly allocated zero-terminated string which
+is <code>str</code> transcoded into the locale's character set. 
+</p></blockquote></div>
+
+<!-- ********************************************************** -->
+<!-- ******************  Stringprep Functions ***************** -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="Stringprep-Functions"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Punycode-Functions">Punycode Functions</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Utility-Functions">Utility Functions</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">4 Stringprep Functions</h2>
+
+<p><a name="index-Stringprep-Functions-58"></a>
+Stringprep describes a framework for preparing Unicode text strings in
+order to increase the likelihood that string input and string
+comparison work in ways that make sense for typical users throughout
+the world. The stringprep protocol is useful for protocol identifier
+values, company and personal names, internationalized domain names,
+and other text strings.
+
+<h3 class="section">4.1 Header file <code>stringprep.h</code></h3>
+
+<p>To use the functions explained in this chapter, you need to include
+the file <samp><span class="file">stringprep.h</span></samp> using:
+
+<pre class="example">     #include &lt;stringprep.h&gt;
+</pre>
+   <h3 class="section">4.2 Defining A Stringprep Profile</h3>
+
+<p>Further types and structures are defined for applications that want to
+specify their own stringprep profile.  As these are fairly obscure,
+and by necessity tied to the implementation, we do not document them
+here.  Look into the <samp><span class="file">stringprep.h</span></samp> header file, and the
+<samp><span class="file">profiles.c</span></samp> source code for the details.
+
+<h3 class="section">4.3 Control Flags</h3>
+
+<div class="defun">
+&mdash; Stringprep flags: Stringprep_profile_flags <b>STRINGPREP_NO_NFKC</b><var><a name="index-STRINGPREP_005fNO_005fNFKC-59"></a></var><br>
+<blockquote><p>Disable the NFKC normalization, as well as selecting the non-NFKC case
+folding tables.  Usually the profile specifies BIDI and NFKC settings,
+and applications should not override it unless in special situations. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Stringprep flags: Stringprep_profile_flags <b>STRINGPREP_NO_BIDI</b><var><a name="index-STRINGPREP_005fNO_005fBIDI-60"></a></var><br>
+<blockquote><p>Disable the BIDI step.  Usually the profile specifies BIDI and NFKC
+settings, and applications should not override it unless in special
+situations. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Stringprep flags: Stringprep_profile_flags <b>STRINGPREP_NO_UNASSIGNED</b><var><a name="index-STRINGPREP_005fNO_005fUNASSIGNED-61"></a></var><br>
+<blockquote><p>Make the library return with an error if string contains unassigned
+characters according to profile. 
+</p></blockquote></div>
+
+<h3 class="section">4.4 Core Functions</h3>
+
+<h4 class="subheading">stringprep_4i</h4>
+
+<p><a name="stringprep_005f4i"></a>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep_4i</b> (<var>uint32_t * ucs4, size_t * len, size_t maxucs4len, Stringprep_profile_flags flags, const Stringprep_profile * profile</var>)<var><a name="index-stringprep_005f4i-62"></a></var><br>
+<blockquote><p><var>ucs4</var>: input/output array with string to prepare.
+
+        <p><var>len</var>: on input, length of input array with Unicode code points,
+on exit, length of output array with Unicode code points.
+
+        <p><var>maxucs4len</var>: maximum length of input/output array.
+
+        <p><var>flags</var>: a <code>Stringprep_profile_flags</code> value, or 0.
+
+        <p><var>profile</var>: pointer to <code>Stringprep_profile</code> to use.
+
+        <p>Prepare the input UCS-4 string according to the stringprep profile,
+and write back the result to the input string.
+
+        <p>The input is not required to be zero terminated (<code>ucs4</code>[<code>len</code>] = 0). 
+The output will not be zero terminated unless <code>ucs4</code>[<code>len</code>] = 0. 
+Instead, see <code>stringprep_4zi()</code> if your input is zero terminated or
+if you want the output to be.
+
+        <p>Since the stringprep operation can expand the string, <code>maxucs4len</code>
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+
+        <p>The <code>flags</code> are one of <code>Stringprep_profile_flags</code> values, or 0.
+
+        <p>The <code>profile</code> contain the <code>Stringprep_profile</code> instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+
+        <p><strong>Return value:</strong> Returns <code>STRINGPREP_OK</code> iff successful, or an
+<code>Stringprep_rc</code> error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep_4zi</h4>
+
+<p><a name="stringprep_005f4zi"></a>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep_4zi</b> (<var>uint32_t * ucs4, size_t maxucs4len, Stringprep_profile_flags flags, const Stringprep_profile * profile</var>)<var><a name="index-stringprep_005f4zi-63"></a></var><br>
+<blockquote><p><var>ucs4</var>: input/output array with zero terminated string to prepare.
+
+        <p><var>maxucs4len</var>: maximum length of input/output array.
+
+        <p><var>flags</var>: a <code>Stringprep_profile_flags</code> value, or 0.
+
+        <p><var>profile</var>: pointer to <code>Stringprep_profile</code> to use.
+
+        <p>Prepare the input zero terminated UCS-4 string according to the
+stringprep profile, and write back the result to the input string.
+
+        <p>Since the stringprep operation can expand the string, <code>maxucs4len</code>
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+
+        <p>The <code>flags</code> are one of <code>Stringprep_profile_flags</code> values, or 0.
+
+        <p>The <code>profile</code> contain the <code>Stringprep_profile</code> instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+
+        <p><strong>Return value:</strong> Returns <code>STRINGPREP_OK</code> iff successful, or an
+<code>Stringprep_rc</code> error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep</h4>
+
+<p><a name="stringprep"></a>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep</b> (<var>char * in, size_t maxlen, Stringprep_profile_flags flags, const Stringprep_profile * profile</var>)<var><a name="index-stringprep-64"></a></var><br>
+<blockquote><p><var>in</var>: input/ouput array with string to prepare.
+
+        <p><var>maxlen</var>: maximum length of input/output array.
+
+        <p><var>flags</var>: a <code>Stringprep_profile_flags</code> value, or 0.
+
+        <p><var>profile</var>: pointer to <code>Stringprep_profile</code> to use.
+
+        <p>Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and write back the result to the input string.
+
+        <p>Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+<code>stringprep_locale_to_utf8()</code>.
+
+        <p>Since the stringprep operation can expand the string, <code>maxlen</code>
+indicate how large the buffer holding the string is.  This function
+will not read or write to characters outside that size.
+
+        <p>The <code>flags</code> are one of <code>Stringprep_profile_flags</code> values, or 0.
+
+        <p>The <code>profile</code> contain the <code>Stringprep_profile</code> instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+
+        <p><strong>Return value:</strong> Returns <code>STRINGPREP_OK</code> iff successful, or an error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">stringprep_profile</h4>
+
+<p><a name="stringprep_005fprofile"></a>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep_profile</b> (<var>const char * in, char ** out, const char * profile, Stringprep_profile_flags flags</var>)<var><a name="index-stringprep_005fprofile-65"></a></var><br>
+<blockquote><p><var>in</var>: input array with UTF-8 string to prepare.
+
+        <p><var>out</var>: output variable with pointer to newly allocate string.
+
+        <p><var>profile</var>: name of stringprep profile to use.
+
+        <p><var>flags</var>: a <code>Stringprep_profile_flags</code> value, or 0.
+
+        <p>Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and return the result in a newly allocated
+variable.
+
+        <p>Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+<code>stringprep_locale_to_utf8()</code>.
+
+        <p>The output <code>out</code> variable must be deallocated by the caller.
+
+        <p>The <code>flags</code> are one of <code>Stringprep_profile_flags</code> values, or 0.
+
+        <p>The <code>profile</code> specifies the name of the stringprep profile to use. 
+It must be one of the internally supported stringprep profiles.
+
+        <p><strong>Return value:</strong> Returns <code>STRINGPREP_OK</code> iff successful, or an error code. 
+</p></blockquote></div>
+
+<h3 class="section">4.5 Error Handling</h3>
+
+<h4 class="subheading">stringprep_strerror</h4>
+
+<p><a name="stringprep_005fstrerror"></a>
+
+<div class="defun">
+&mdash; Function: const char * <b>stringprep_strerror</b> (<var>Stringprep_rc rc</var>)<var><a name="index-stringprep_005fstrerror-66"></a></var><br>
+<blockquote><p><var>rc</var>: a <code>Stringprep_rc</code> return code.
+
+        <p>Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+        <p><strong>STRINGPREP_OK:</strong> Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+        <p><strong>STRINGPREP_CONTAINS_UNASSIGNED:</strong> String contain unassigned Unicode
+code points, which is forbidden by the profile.
+
+        <p><strong>STRINGPREP_CONTAINS_PROHIBITED:</strong> String contain code points
+prohibited by the profile.
+
+        <p><strong>STRINGPREP_BIDI_BOTH_L_AND_RAL:</strong> String contain code points with
+conflicting bidirection category.
+
+        <p><strong>STRINGPREP_BIDI_LEADTRAIL_NOT_RAL:</strong> Leading and trailing character
+in string not of proper bidirectional category.
+
+        <p><strong>STRINGPREP_BIDI_CONTAINS_PROHIBITED:</strong> Contains prohibited code
+points detected by bidirectional code.
+
+        <p><strong>STRINGPREP_TOO_SMALL_BUFFER:</strong> Buffer handed to function was too
+small.  This usually indicate a problem in the calling
+application.
+
+        <p><strong>STRINGPREP_PROFILE_ERROR:</strong> The stringprep profile was inconsistent. 
+This usually indicate an internal error in the library.
+
+        <p><strong>STRINGPREP_FLAG_ERROR:</strong> The supplied flag conflicted with profile. 
+This usually indicate a problem in the calling application.
+
+        <p><strong>STRINGPREP_UNKNOWN_PROFILE:</strong> The supplied profile name was not
+known to the library.
+
+        <p><strong>STRINGPREP_NFKC_FAILED:</strong> The Unicode NFKC operation failed.  This
+usually indicate an internal error in the library.
+
+        <p><strong>STRINGPREP_MALLOC_ERROR:</strong> The <code>malloc()</code> was out of memory.  This is
+usually a fatal error.
+
+        <p><strong>Return value:</strong> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <code>rc</code>. 
+</p></blockquote></div>
+
+<h3 class="section">4.6 Stringprep Profile Macros</h3>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep_nameprep_no_unassigned</b> (<var>char * in, int maxlen</var>)<var><a name="index-stringprep_005fnameprep_005fno_005funassigned-67"></a></var><br>
+<blockquote>
+        <p><var>in</var>: input/ouput array with string to prepare.
+
+        <p><var>maxlen</var>: maximum length of input/output array.
+
+        <p>Prepare the input UTF-8 string according to the nameprep profile.  The
+AllowUnassigned flag is false, use <code>stringprep_nameprep</code> for
+true AllowUnassigned.  Returns 0 iff successful, or an error code. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep_iscsi</b> (<var>char * in, int maxlen</var>)<var><a name="index-stringprep_005fiscsi-68"></a></var><br>
+<blockquote>
+        <p><var>in</var>: input/ouput array with string to prepare.
+
+        <p><var>maxlen</var>: maximum length of input/output array.
+
+        <p>Prepare the input UTF-8 string according to the draft iSCSI stringprep
+profile.  Returns 0 iff successful, or an error code. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep_plain</b> (<var>char * in, int maxlen</var>)<var><a name="index-stringprep_005fplain-69"></a></var><br>
+<blockquote>
+        <p><var>in</var>: input/ouput array with string to prepare.
+
+        <p><var>maxlen</var>: maximum length of input/output array.
+
+        <p>Prepare the input UTF-8 string according to the draft SASL ANONYMOUS
+profile.  Returns 0 iff successful, or an error code. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep_xmpp_nodeprep</b> (<var>char * in, int maxlen</var>)<var><a name="index-stringprep_005fxmpp_005fnodeprep-70"></a></var><br>
+<blockquote>
+        <p><var>in</var>: input/ouput array with string to prepare.
+
+        <p><var>maxlen</var>: maximum length of input/output array.
+
+        <p>Prepare the input UTF-8 string according to the draft XMPP node
+identifier profile.  Returns 0 iff successful, or an error code. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Function: int <b>stringprep_xmpp_resourceprep</b> (<var>char * in, int maxlen</var>)<var><a name="index-stringprep_005fxmpp_005fresourceprep-71"></a></var><br>
+<blockquote>
+        <p><var>in</var>: input/ouput array with string to prepare.
+
+        <p><var>maxlen</var>: maximum length of input/output array.
+
+        <p>Prepare the input UTF-8 string according to the draft XMPP resource
+identifier profile.  Returns 0 iff successful, or an error code. 
+</p></blockquote></div>
+
+<!-- ********************************************************** -->
+<!-- *******************  Punycode Functions ****************** -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="Punycode-Functions"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#IDNA-Functions">IDNA Functions</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Stringprep-Functions">Stringprep Functions</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">5 Punycode Functions</h2>
+
+<p><a name="index-Punycode-Functions-72"></a>
+Punycode is a simple and efficient transfer encoding syntax designed
+for use with Internationalized Domain Names in Applications. It
+uniquely and reversibly transforms a Unicode string into an ASCII
+string. ASCII characters in the Unicode string are represented
+literally, and non-ASCII characters are represented by ASCII
+characters that are allowed in host name labels (letters, digits, and
+hyphens). A general algorithm called Bootstring allows a string of
+basic code points to uniquely represent any string of code points
+drawn from a larger set. Punycode is an instance of Bootstring that
+uses particular parameter values, appropriate for IDNA.
+
+<h3 class="section">5.1 Header file <code>punycode.h</code></h3>
+
+<p>To use the functions explained in this chapter, you need to include
+the file <samp><span class="file">punycode.h</span></samp> using:
+
+<pre class="example">     #include &lt;punycode.h&gt;
+</pre>
+   <h3 class="section">5.2 Unicode Code Point Data Type</h3>
+
+<p>The punycode function uses a special type to denote Unicode code
+points.  It is guaranteed to always be a 32 bit unsigned integer.
+
+<div class="defun">
+&mdash; Punycode Unicode code point: uint32_t <b>punycode_uint</b><var><a name="index-punycode_005fuint-73"></a></var><br>
+<blockquote><p>A unsigned integer that hold Unicode code points. 
+</p></blockquote></div>
+
+<h3 class="section">5.3 Core Functions</h3>
+
+<p>Note that the current implementation will fail if the
+<code>input_length</code> exceed 4294967295 (the size of
+<code>punycode_uint</code>).  This restriction may be removed in the future. 
+Meanwhile applications are encouraged to not depend on this problem,
+and use <code>sizeof</code> to initialize <code>input_length</code> and
+<code>output_length</code>.
+
+   <p>The functions provided are the following two entry points:
+
+<h4 class="subheading">punycode_encode</h4>
+
+<p><a name="punycode_005fencode"></a>
+
+<div class="defun">
+&mdash; Function: int <b>punycode_encode</b> (<var>size_t input_length, const punycode_uint </var>[]<var> input, const unsigned char </var>[]<var> case_flags, size_t * output_length, char </var>[]<var> output</var>)<var><a name="index-punycode_005fencode-74"></a></var><br>
+<blockquote><p><var>input_length</var>: The number of code points in the <code>input</code> array and
+the number of flags in the <code>case_flags</code> array.
+
+        <p><var>input</var>: An array of code points.  They are presumed to be Unicode
+code points, but that is not strictly REQUIRED.  The array
+contains code points, not code units.  UTF-16 uses code units
+D800 through DFFF to refer to code points 10000..10FFFF.  The
+code points D800..DFFF do not occur in any valid Unicode string. 
+The code points that can occur in Unicode strings (0..D7FF and
+E000..10FFFF) are also called Unicode scalar values.
+
+        <p><var>case_flags</var>: A <code>NULL</code> pointer or an array of boolean values parallel
+to the <code>input</code> array.  Nonzero (true, flagged) suggests that the
+corresponding Unicode character be forced to uppercase after
+being decoded (if possible), and zero (false, unflagged) suggests
+that it be forced to lowercase (if possible).  ASCII code points
+(0..7F) are encoded literally, except that ASCII letters are
+forced to uppercase or lowercase according to the corresponding
+case flags.  If <code>case_flags</code> is a <code>NULL</code> pointer then ASCII letters
+are left as they are, and other code points are treated as
+unflagged.
+
+        <p><var>output_length</var>: The caller passes in the maximum number of ASCII
+code points that it can receive.  On successful return it will
+contain the number of ASCII code points actually output.
+
+        <p><var>output</var>: An array of ASCII code points.  It is *not*
+null-terminated; it will contain zeros if and only if the <code>input</code>
+contains zeros.  (Of course the caller can leave room for a
+terminator and add one if needed.)
+
+        <p>Converts a sequence of code points (presumed to be Unicode code
+points) to Punycode.
+
+        <p><strong>Return value:</strong> The return value can be any of the <code>Punycode_status</code>
+values defined above except <code>PUNYCODE_BAD_INPUT</code>.  If not
+<code>PUNYCODE_SUCCESS</code>, then <code>output_size</code> and <code>output</code> might contain
+garbage. 
+</p></blockquote></div>
+
+<h4 class="subheading">punycode_decode</h4>
+
+<p><a name="punycode_005fdecode"></a>
+
+<div class="defun">
+&mdash; Function: int <b>punycode_decode</b> (<var>size_t input_length, const char </var>[]<var> input, size_t * output_length, punycode_uint </var>[]<var> output, unsigned char </var>[]<var> case_flags</var>)<var><a name="index-punycode_005fdecode-75"></a></var><br>
+<blockquote><p><var>input_length</var>: The number of ASCII code points in the <code>input</code> array.
+
+        <p><var>input</var>: An array of ASCII code points (0..7F).
+
+        <p><var>output_length</var>: The caller passes in the maximum number of code
+points that it can receive into the <code>output</code> array (which is also
+the maximum number of flags that it can receive into the
+<code>case_flags</code> array, if <code>case_flags</code> is not a <code>NULL</code> pointer).  On
+successful return it will contain the number of code points
+actually output (which is also the number of flags actually
+output, if case_flags is not a null pointer).  The decoder will
+never need to output more code points than the number of ASCII
+code points in the input, because of the way the encoding is
+defined.  The number of code points output cannot exceed the
+maximum possible value of a punycode_uint, even if the supplied
+<code>output_length</code> is greater than that.
+
+        <p><var>output</var>: An array of code points like the input argument of
+<code>punycode_encode()</code> (see above).
+
+        <p><var>case_flags</var>: A <code>NULL</code> pointer (if the flags are not needed by the
+caller) or an array of boolean values parallel to the <code>output</code>
+array.  Nonzero (true, flagged) suggests that the corresponding
+Unicode character be forced to uppercase by the caller (if
+possible), and zero (false, unflagged) suggests that it be forced
+to lowercase (if possible).  ASCII code points (0..7F) are output
+already in the proper case, but their flags will be set
+appropriately so that applying the flags would be harmless.
+
+        <p>Converts Punycode to a sequence of code points (presumed to be
+Unicode code points).
+
+        <p><strong>Return value:</strong> The return value can be any of the <code>Punycode_status</code>
+values defined above.  If not <code>PUNYCODE_SUCCESS</code>, then
+<code>output_length</code>, <code>output</code>, and <code>case_flags</code> might contain garbage. 
+</p></blockquote></div>
+
+<h3 class="section">5.4 Error Handling</h3>
+
+<h4 class="subheading">punycode_strerror</h4>
+
+<p><a name="punycode_005fstrerror"></a>
+
+<div class="defun">
+&mdash; Function: const char * <b>punycode_strerror</b> (<var>Punycode_status rc</var>)<var><a name="index-punycode_005fstrerror-76"></a></var><br>
+<blockquote><p><var>rc</var>: an <code>Punycode_status</code> return code.
+
+        <p>Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+        <p><strong>PUNYCODE_SUCCESS:</strong> Successful operation.  This value is guaranteed
+to always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+        <p><strong>PUNYCODE_BAD_INPUT:</strong> Input is invalid.
+
+        <p><strong>PUNYCODE_BIG_OUTPUT:</strong> Output would exceed the space provided.
+
+        <p><strong>PUNYCODE_OVERFLOW:</strong> Input needs wider integers to process.
+
+        <p><strong>Return value:</strong> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <code>rc</code>. 
+</p></blockquote></div>
+
+<!-- ********************************************************** -->
+<!-- ********************* IDNA Functions ********************* -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="IDNA-Functions"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#TLD-Functions">TLD Functions</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Punycode-Functions">Punycode Functions</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">6 IDNA Functions</h2>
+
+<p><a name="index-IDNA-Functions-77"></a>
+Until now, there has been no standard method for domain names to use
+characters outside the ASCII repertoire. The IDNA document defines
+internationalized domain names (IDNs) and a mechanism called IDNA for
+handling them in a standard fashion. IDNs use characters drawn from a
+large repertoire (Unicode), but IDNA allows the non-ASCII characters
+to be represented using only the ASCII characters already allowed in
+so-called host names today. This backward-compatible representation is
+required in existing protocols like DNS, so that IDNs can be
+introduced with no changes to the existing infrastructure. IDNA is
+only meant for processing domain names, not free text.
+
+<h3 class="section">6.1 Header file <code>idna.h</code></h3>
+
+<p>To use the functions explained in this chapter, you need to include
+the file <samp><span class="file">idna.h</span></samp> using:
+
+<pre class="example">     #include &lt;idna.h&gt;
+</pre>
+   <h3 class="section">6.2 Control Flags</h3>
+
+<p>The IDNA <code>flags</code> parameter can take on the following values, or a
+bit-wise inclusive or of any subset of the parameters:
+
+<div class="defun">
+&mdash; Return code: Idna_flags <b>IDNA_ALLOW_UNASSIGNED</b><var><a name="index-IDNA_005fALLOW_005fUNASSIGNED-78"></a></var><br>
+<blockquote><p>Allow unassigned Unicode code points. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Return code: Idna_flags <b>IDNA_USE_STD3_ASCII_RULES</b><var><a name="index-IDNA_005fUSE_005fSTD3_005fASCII_005fRULES-79"></a></var><br>
+<blockquote><p>Check output to make sure it is a STD3 conforming host name. 
+</p></blockquote></div>
+
+<h3 class="section">6.3 Prefix String</h3>
+
+<div class="defun">
+&mdash; Macro: #define <b>IDNA_ACE_PREFIX</b><var><a name="index-IDNA_005fACE_005fPREFIX-80"></a></var><br>
+<blockquote><p>String with the official IDNA prefix, <code>xn--</code>. 
+</p></blockquote></div>
+
+<h3 class="section">6.4 Core Functions</h3>
+
+<p>The idea behind the IDNA function names are as follows: the
+<code>idna_to_ascii_4i</code> and <code>idna_to_unicode_44i</code> functions are
+the core IDNA primitives.  The <code>4</code> indicate that the function
+takes UCS-4 strings (i.e., Unicode code points encoded in a 32-bit
+unsigned integer type) of the specified length.  The <code>i</code> indicate
+that the data is written &ldquo;inline&rdquo; into the buffer.  This means the
+caller is responsible for allocating (and deallocating) the string,
+and providing the library with the allocated length of the string. 
+The output length is written in the output length variable.  The
+remaining functions all contain the <code>z</code> indicator, which means
+the strings are zero terminated.  All output strings are allocated by
+the library, and must be deallocated by the caller.  The <code>4</code>
+indicator again means that the string is UCS-4, the <code>8</code> means the
+strings are UTF-8 and the <code>l</code> indicator means the strings are
+encoded in the encoding used by the current locale.
+
+   <p>The functions provided are the following entry points:
+
+<h4 class="subheading">idna_to_ascii_4i</h4>
+
+<p><a name="idna_005fto_005fascii_005f4i"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_ascii_4i</b> (<var>const uint32_t * in, size_t inlen, char * out, int flags</var>)<var><a name="index-idna_005fto_005fascii_005f4i-81"></a></var><br>
+<blockquote><p><var>in</var>: input array with unicode code points.
+
+        <p><var>inlen</var>: length of input array with unicode code points.
+
+        <p><var>out</var>: output zero terminated string that must have room for at
+least 63 characters plus the terminating zero.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>The ToASCII operation takes a sequence of Unicode code points that
+make up one domain label and transforms it into a sequence of code
+points in the ASCII range (0..7F). If ToASCII succeeds, the
+original sequence and the resulting sequence are equivalent labels.
+
+        <p>It is important to note that the ToASCII operation can fail. ToASCII
+fails if any step of it fails. If any step of the ToASCII operation
+fails on any label in a domain name, that domain name MUST NOT be used
+as an internationalized domain name. The method for deadling with this
+failure is application-specific.
+
+        <p>The inputs to ToASCII are a sequence of code points, the AllowUnassigned
+flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a
+sequence of ASCII code points or a failure condition.
+
+        <p>ToASCII never alters a sequence of code points that are all in the ASCII
+range to begin with (although it could fail). Applying the ToASCII
+operation multiple times has exactly the same effect as applying it just
+once.
+
+        <p><strong>Return value:</strong> Returns 0 on success, or an <code>Idna_rc</code> error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">idna_to_unicode_44i</h4>
+
+<p><a name="idna_005fto_005funicode_005f44i"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_unicode_44i</b> (<var>const uint32_t * in, size_t inlen, uint32_t * out, size_t * outlen, int flags</var>)<var><a name="index-idna_005fto_005funicode_005f44i-82"></a></var><br>
+<blockquote><p><var>in</var>: input array with unicode code points.
+
+        <p><var>inlen</var>: length of input array with unicode code points.
+
+        <p><var>out</var>: output array with unicode code points.
+
+        <p><var>outlen</var>: on input, maximum size of output array with unicode code points,
+on exit, actual size of output array with unicode code points.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>The ToUnicode operation takes a sequence of Unicode code points
+that make up one domain label and returns a sequence of Unicode
+code points. If the input sequence is a label in ACE form, then the
+result is an equivalent internationalized label that is not in ACE
+form, otherwise the original sequence is returned unaltered.
+
+        <p>ToUnicode never fails. If any step fails, then the original input
+sequence is returned immediately in that step.
+
+        <p>The Punycode decoder can never output more code points than it
+inputs, but Nameprep can, and therefore ToUnicode can.  Note that
+the number of octets needed to represent a sequence of code points
+depends on the particular character encoding used.
+
+        <p>The inputs to ToUnicode are a sequence of code points, the
+AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of
+ToUnicode is always a sequence of Unicode code points.
+
+        <p><strong>Return value:</strong> Returns <code>Idna_rc</code> error condition, but it must only be
+used for debugging purposes.  The output buffer is always
+guaranteed to contain the correct data according to the
+specification (sans malloc induced errors).  NB!  This means that
+you normally ignore the return code from this function, as
+checking it means breaking the standard. 
+</p></blockquote></div>
+
+<h3 class="section">6.5 Simplified ToASCII Interface</h3>
+
+<h4 class="subheading">idna_to_ascii_4z</h4>
+
+<p><a name="idna_005fto_005fascii_005f4z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_ascii_4z</b> (<var>const uint32_t * input, char ** output, int flags</var>)<var><a name="index-idna_005fto_005fascii_005f4z-83"></a></var><br>
+<blockquote><p><var>input</var>: zero terminated input Unicode string.
+
+        <p><var>output</var>: pointer to newly allocated output string.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>Convert UCS-4 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.
+
+        <p><strong>Return value:</strong> Returns <code>IDNA_SUCCESS</code> on success, or error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">idna_to_ascii_8z</h4>
+
+<p><a name="idna_005fto_005fascii_005f8z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_ascii_8z</b> (<var>const char * input, char ** output, int flags</var>)<var><a name="index-idna_005fto_005fascii_005f8z-84"></a></var><br>
+<blockquote><p><var>input</var>: zero terminated input UTF-8 string.
+
+        <p><var>output</var>: pointer to newly allocated output string.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>Convert UTF-8 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.
+
+        <p><strong>Return value:</strong> Returns <code>IDNA_SUCCESS</code> on success, or error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">idna_to_ascii_lz</h4>
+
+<p><a name="idna_005fto_005fascii_005flz"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_ascii_lz</b> (<var>const char * input, char ** output, int flags</var>)<var><a name="index-idna_005fto_005fascii_005flz-85"></a></var><br>
+<blockquote><p><var>input</var>: zero terminated input string encoded in the current locale's
+character set.
+
+        <p><var>output</var>: pointer to newly allocated output string.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>Convert domain name in the locale's encoding to ASCII string.  The
+domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.
+
+        <p><strong>Return value:</strong> Returns <code>IDNA_SUCCESS</code> on success, or error code. 
+</p></blockquote></div>
+
+<h3 class="section">6.6 Simplified ToUnicode Interface</h3>
+
+<h4 class="subheading">idna_to_unicode_4z4z</h4>
+
+<p><a name="idna_005fto_005funicode_005f4z4z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_unicode_4z4z</b> (<var>const uint32_t * input, uint32_t ** output, int flags</var>)<var><a name="index-idna_005fto_005funicode_005f4z4z-86"></a></var><br>
+<blockquote><p><var>input</var>: zero-terminated Unicode string.
+
+        <p><var>output</var>: pointer to newly allocated output Unicode string.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>Convert possibly ACE encoded domain name in UCS-4 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+
+        <p><strong>Return value:</strong> Returns <code>IDNA_SUCCESS</code> on success, or error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">idna_to_unicode_8z4z</h4>
+
+<p><a name="idna_005fto_005funicode_005f8z4z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_unicode_8z4z</b> (<var>const char * input, uint32_t ** output, int flags</var>)<var><a name="index-idna_005fto_005funicode_005f8z4z-87"></a></var><br>
+<blockquote><p><var>input</var>: zero-terminated UTF-8 string.
+
+        <p><var>output</var>: pointer to newly allocated output Unicode string.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>Convert possibly ACE encoded domain name in UTF-8 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+
+        <p><strong>Return value:</strong> Returns <code>IDNA_SUCCESS</code> on success, or error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">idna_to_unicode_8z8z</h4>
+
+<p><a name="idna_005fto_005funicode_005f8z8z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_unicode_8z8z</b> (<var>const char * input, char ** output, int flags</var>)<var><a name="index-idna_005fto_005funicode_005f8z8z-88"></a></var><br>
+<blockquote><p><var>input</var>: zero-terminated UTF-8 string.
+
+        <p><var>output</var>: pointer to newly allocated output UTF-8 string.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>Convert possibly ACE encoded domain name in UTF-8 format into a
+UTF-8 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+
+        <p><strong>Return value:</strong> Returns <code>IDNA_SUCCESS</code> on success, or error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">idna_to_unicode_8zlz</h4>
+
+<p><a name="idna_005fto_005funicode_005f8zlz"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_unicode_8zlz</b> (<var>const char * input, char ** output, int flags</var>)<var><a name="index-idna_005fto_005funicode_005f8zlz-89"></a></var><br>
+<blockquote><p><var>input</var>: zero-terminated UTF-8 string.
+
+        <p><var>output</var>: pointer to newly allocated output string encoded in the
+current locale's character set.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>Convert possibly ACE encoded domain name in UTF-8 format into a
+string encoded in the current locale's character set.  The domain
+name may contain several labels, separated by dots.  The output
+buffer must be deallocated by the caller.
+
+        <p><strong>Return value:</strong> Returns <code>IDNA_SUCCESS</code> on success, or error code. 
+</p></blockquote></div>
+
+<h4 class="subheading">idna_to_unicode_lzlz</h4>
+
+<p><a name="idna_005fto_005funicode_005flzlz"></a>
+
+<div class="defun">
+&mdash; Function: int <b>idna_to_unicode_lzlz</b> (<var>const char * input, char ** output, int flags</var>)<var><a name="index-idna_005fto_005funicode_005flzlz-90"></a></var><br>
+<blockquote><p><var>input</var>: zero-terminated string encoded in the current locale's
+character set.
+
+        <p><var>output</var>: pointer to newly allocated output string encoded in the
+current locale's character set.
+
+        <p><var>flags</var>: an <code>Idna_flags</code> value, e.g., <code>IDNA_ALLOW_UNASSIGNED</code> or
+<code>IDNA_USE_STD3_ASCII_RULES</code>.
+
+        <p>Convert possibly ACE encoded domain name in the locale's character
+set into a string encoded in the current locale's character set. 
+The domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.
+
+        <p><strong>Return value:</strong> Returns <code>IDNA_SUCCESS</code> on success, or error code. 
+</p></blockquote></div>
+
+<h3 class="section">6.7 Error Handling</h3>
+
+<h4 class="subheading">idna_strerror</h4>
+
+<p><a name="idna_005fstrerror"></a>
+
+<div class="defun">
+&mdash; Function: const char * <b>idna_strerror</b> (<var>Idna_rc rc</var>)<var><a name="index-idna_005fstrerror-91"></a></var><br>
+<blockquote><p><var>rc</var>: an <code>Idna_rc</code> return code.
+
+        <p>Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+        <p><strong>IDNA_SUCCESS:</strong> Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+        <p><strong>IDNA_STRINGPREP_ERROR:</strong> Error during string preparation.
+
+        <p><strong>IDNA_PUNYCODE_ERROR:</strong> Error during punycode operation.
+
+        <p><strong>IDNA_CONTAINS_NON_LDH:</strong> For IDNA_USE_STD3_ASCII_RULES, indicate that
+the string contains non-LDH ASCII characters.
+
+        <p><strong>IDNA_CONTAINS_MINUS:</strong> For IDNA_USE_STD3_ASCII_RULES, indicate that
+the string contains a leading or trailing hyphen-minus (U+002D).
+
+        <p><strong>IDNA_INVALID_LENGTH:</strong> The final output string is not within the
+(inclusive) range 1 to 63 characters.
+
+        <p><strong>IDNA_NO_ACE_PREFIX:</strong> The string does not contain the ACE prefix
+(for ToUnicode).
+
+        <p><strong>IDNA_ROUNDTRIP_VERIFY_ERROR:</strong> The ToASCII operation on output
+string does not equal the input.
+
+        <p><strong>IDNA_CONTAINS_ACE_PREFIX:</strong> The input contains the ACE prefix (for
+ToASCII).
+
+        <p><strong>IDNA_ICONV_ERROR:</strong> Could not convert string in locale encoding.
+
+        <p><strong>IDNA_MALLOC_ERROR:</strong> Could not allocate buffer (this is typically a
+fatal error).
+
+        <p><strong>IDNA_DLOPEN_ERROR:</strong> Could not dlopen the libcidn DSO (only used
+internally in libc).
+
+        <p><strong>Return value:</strong> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <code>rc</code>. 
+</p></blockquote></div>
+
+<!-- ********************************************************** -->
+<!-- ********************** TLD Functions ********************* -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="TLD-Functions"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#PR29-Functions">PR29 Functions</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#IDNA-Functions">IDNA Functions</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">7 TLD Functions</h2>
+
+<p><a name="index-TLD-Functions-92"></a>
+Organizations that manage some Top Level Domains (<acronym>TLD</acronym>s) have
+published tables with characters they accept within the domain.  The
+reason may be to reduce complexity that come from using the full
+Unicode range, and to protect themselves from future (backwards
+incompatible) changes in the IDN or Unicode specifications.  Libidn
+implement an infrastructure for defining and checking strings against
+such tables.  Libidn also ship some tables from <acronym>TLD</acronym>s that we
+have managed to get permission to use them from.  Because these tables
+are even less static than Unicode or StringPrep tables, it is likely
+that they will be updated from time to time (even in backwards
+incompatibe ways).  The Libidn interface provide a &ldquo;version&rdquo; field
+for each <acronym>TLD</acronym> table, which can be compared for equality to
+guarantee the same operation over time.
+
+   <p>From a design point of view, you can regard the <acronym>TLD</acronym> tables
+for IDN as the &ldquo;localization&rdquo; step that come after the
+&ldquo;internationalization&rdquo; step provided by the IETF standards.
+
+   <p>The TLD functionality rely on up-to-date tables.  The latest version
+of Libidn aim to provide these, but tables with unclear copying
+conditions, or generally experimental tables, are not included.  Some
+such tables can be found at <a href="http://tldchk.berlios.de">http://tldchk.berlios.de</a>.
+
+<h3 class="section">7.1 Header file <code>tld.h</code></h3>
+
+<p>To use the functions explained in this chapter, you need to include
+the file <samp><span class="file">tld.h</span></samp> using:
+
+<pre class="example">     #include &lt;tld.h&gt;
+</pre>
+   <!-- @section Data Types -->
+<!-- @deftp {Data type} {Tld_table_element} @var{start} @var{end} -->
+<!-- @example -->
+<!-- /* Interval of valid code points in the TLD. */ -->
+<!-- struct Tld_table_element -->
+<!-- @{ -->
+<!-- uint32_t start;           /* Start of range. */ -->
+<!-- uint32_t end;             /* End of range, end == start if single. */ -->
+<!-- @}; -->
+<!-- typedef struct Tld_table_element Tld_table_element; -->
+<!-- @end example -->
+<!-- This @code{struct} contain the @var{start} and @var{end} positions -->
+<!-- (inclusive) of a range.  If the range is a single (i.e., starts and -->
+<!-- ends in the same character), then set @var{end} to the same as -->
+<!-- @var{start}.  This structure is normally used as an array. -->
+<!-- @end deftp -->
+<!-- @deftp {Data type} {Tld_table} @var{name} @var{version} @var{nvalid} @var{valid} -->
+<!-- @example -->
+<!-- /* List valid code points in a TLD. */ -->
+<!-- struct Tld_table -->
+<!-- @{ -->
+<!-- char *name;                       /* TLD name, e.g., "no". */ -->
+<!-- char *version;            /* Version string from TLD file. */ -->
+<!-- size_t nvalid;            /* Number of entries in data. */ -->
+<!-- Tld_table_element *valid[];       /* Sorted array of valid code points. */ -->
+<!-- @}; -->
+<!-- typedef struct Tld_table Tld_table; -->
+<!-- @end example -->
+<!-- In this @code{struct}, the @var{name} field is a string (@samp{char*}) -->
+<!-- indicating the TLD name (e.g., ``no'').  The @var{version} field is a -->
+<!-- string (@samp{char*}) containing a free form humanly readable string -->
+<!-- that can be used for equality comparison to compare different versions -->
+<!-- of the table.  The @var{nvalid} field indicate how many entries there -->
+<!-- are in @var{valid}, which brings us finally to @var{valid} that -->
+<!-- contain the actual code points that are valid for this TLD (see -->
+<!-- @code{Tld_table_element} above). -->
+<!-- @end deftp -->
+<h3 class="section">7.2 Core Functions</h3>
+
+<h4 class="subheading">tld_check_4t</h4>
+
+<p><a name="tld_005fcheck_005f4t"></a>
+
+<div class="defun">
+&mdash; Function: int <b>tld_check_4t</b> (<var>const uint32_t * in, size_t inlen, size_t * errpos, const Tld_table * tld</var>)<var><a name="index-tld_005fcheck_005f4t-93"></a></var><br>
+<blockquote><p><var>in</var>: Array of unicode code points to process. Does not need to be
+zero terminated.
+
+        <p><var>inlen</var>: Number of unicode code points.
+
+        <p><var>errpos</var>: Position of offending character is returned here.
+
+        <p><var>tld</var>: A <code>Tld_table</code> data structure representing the restrictions for
+which the input should be tested.
+
+        <p>Test each of the code points in <code>in</code> for whether or not
+they are allowed by the data structure in <code>tld</code>, return
+the position of the first character for which this is not
+the case in <code>errpos</code>.
+
+        <p><strong>Return value:</strong> Returns the <code>Tld_rc</code> value <code>TLD_SUCCESS</code> if all code
+points are valid or when <code>tld</code> is null, <code>TLD_INVALID</code> if a
+character is not allowed, or additional error codes on general
+failure conditions. 
+</p></blockquote></div>
+
+<h4 class="subheading">tld_check_4tz</h4>
+
+<p><a name="tld_005fcheck_005f4tz"></a>
+
+<div class="defun">
+&mdash; Function: int <b>tld_check_4tz</b> (<var>const uint32_t * in, size_t * errpos, const Tld_table * tld</var>)<var><a name="index-tld_005fcheck_005f4tz-94"></a></var><br>
+<blockquote><p><var>in</var>: Zero terminated array of unicode code points to process.
+
+        <p><var>errpos</var>: Position of offending character is returned here.
+
+        <p><var>tld</var>: A <code>Tld_table</code> data structure representing the restrictions for
+which the input should be tested.
+
+        <p>Test each of the code points in <code>in</code> for whether or not
+they are allowed by the data structure in <code>tld</code>, return
+the position of the first character for which this is not
+the case in <code>errpos</code>.
+
+        <p><strong>Return value:</strong> Returns the <code>Tld_rc</code> value <code>TLD_SUCCESS</code> if all code
+points are valid or when <code>tld</code> is null, <code>TLD_INVALID</code> if a
+character is not allowed, or additional error codes on general
+failure conditions. 
+</p></blockquote></div>
+
+<h3 class="section">7.3 Utility Functions</h3>
+
+<h4 class="subheading">tld_get_4</h4>
+
+<p><a name="tld_005fget_005f4"></a>
+
+<div class="defun">
+&mdash; Function: int <b>tld_get_4</b> (<var>const uint32_t * in, size_t inlen, char ** out</var>)<var><a name="index-tld_005fget_005f4-95"></a></var><br>
+<blockquote><p><var>in</var>: Array of unicode code points to process. Does not need to be
+zero terminated.
+
+        <p><var>inlen</var>: Number of unicode code points.
+
+        <p><var>out</var>: Zero terminated ascii result string pointer.
+
+        <p>Isolate the top-level domain of <code>in</code> and return it as an ASCII
+string in <code>out</code>.
+
+        <p><strong>Return value:</strong> Return <code>TLD_SUCCESS</code> on success, or the corresponding
+<code>Tld_rc</code> error code otherwise. 
+</p></blockquote></div>
+
+<h4 class="subheading">tld_get_4z</h4>
+
+<p><a name="tld_005fget_005f4z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>tld_get_4z</b> (<var>const uint32_t * in, char ** out</var>)<var><a name="index-tld_005fget_005f4z-96"></a></var><br>
+<blockquote><p><var>in</var>: Zero terminated array of unicode code points to process.
+
+        <p><var>out</var>: Zero terminated ascii result string pointer.
+
+        <p>Isolate the top-level domain of <code>in</code> and return it as an ASCII
+string in <code>out</code>.
+
+        <p><strong>Return value:</strong> Return <code>TLD_SUCCESS</code> on success, or the corresponding
+<code>Tld_rc</code> error code otherwise. 
+</p></blockquote></div>
+
+<h4 class="subheading">tld_get_z</h4>
+
+<p><a name="tld_005fget_005fz"></a>
+
+<div class="defun">
+&mdash; Function: int <b>tld_get_z</b> (<var>const char * in, char ** out</var>)<var><a name="index-tld_005fget_005fz-97"></a></var><br>
+<blockquote><p><var>in</var>: Zero terminated character array to process.
+
+        <p><var>out</var>: Zero terminated ascii result string pointer.
+
+        <p>Isolate the top-level domain of <code>in</code> and return it as an ASCII
+string in <code>out</code>.  The input string <code>in</code> may be UTF-8, ISO-8859-1 or
+any ASCII compatible character encoding.
+
+        <p><strong>Return value:</strong> Return <code>TLD_SUCCESS</code> on success, or the corresponding
+<code>Tld_rc</code> error code otherwise. 
+</p></blockquote></div>
+
+<h4 class="subheading">tld_get_table</h4>
+
+<p><a name="tld_005fget_005ftable"></a>
+
+<div class="defun">
+&mdash; Function: const Tld_table * <b>tld_get_table</b> (<var>const char * tld, const Tld_table ** tables</var>)<var><a name="index-tld_005fget_005ftable-98"></a></var><br>
+<blockquote><p><var>tld</var>: TLD name (e.g. "com") as zero terminated ASCII byte string.
+
+        <p><var>tables</var>: Zero terminated array of <code>Tld_table</code> info-structures for
+TLDs.
+
+        <p>Get the TLD table for a named TLD by searching through the given
+TLD table array.
+
+        <p><strong>Return value:</strong> Return structure corresponding to TLD <code>tld</code> by going
+thru <code>tables</code>, or return <code>NULL</code> if no such structure is found. 
+</p></blockquote></div>
+
+<h4 class="subheading">tld_default_table</h4>
+
+<p><a name="tld_005fdefault_005ftable"></a>
+
+<div class="defun">
+&mdash; Function: const Tld_table * <b>tld_default_table</b> (<var>const char * tld, const Tld_table ** overrides</var>)<var><a name="index-tld_005fdefault_005ftable-99"></a></var><br>
+<blockquote><p><var>tld</var>: TLD name (e.g. "com") as zero terminated ASCII byte string.
+
+        <p><var>overrides</var>: Additional zero terminated array of <code>Tld_table</code>
+info-structures for TLDs, or <code>NULL</code> to only use library deault
+tables.
+
+        <p>Get the TLD table for a named TLD, using the internal defaults,
+possibly overrided by the (optional) supplied tables.
+
+        <p><strong>Return value:</strong> Return structure corresponding to TLD <code>tld_str</code>, first
+looking through <code>overrides</code> then thru built-in list, or <code>NULL</code> if
+no such structure found. 
+</p></blockquote></div>
+
+<h3 class="section">7.4 High-Level Wrapper Functions</h3>
+
+<h4 class="subheading">tld_check_4</h4>
+
+<p><a name="tld_005fcheck_005f4"></a>
+
+<div class="defun">
+&mdash; Function: int <b>tld_check_4</b> (<var>const uint32_t * in, size_t inlen, size_t * errpos, const Tld_table ** overrides</var>)<var><a name="index-tld_005fcheck_005f4-100"></a></var><br>
+<blockquote><p><var>in</var>: Array of unicode code points to process. Does not need to be
+zero terminated.
+
+        <p><var>inlen</var>: Number of unicode code points.
+
+        <p><var>errpos</var>: Position of offending character is returned here.
+
+        <p><var>overrides</var>: A <code>Tld_table</code> array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+        <p>Test each of the code points in <code>in</code> for whether or not they are
+allowed by the information in <code>overrides</code> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <code>overrides</code>, the information in <code>overrides</code> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <code>overrides</code> is <code>NULL</code>, only the built-in
+information is used.  The position of the first offending character
+is returned in <code>errpos</code>.
+
+        <p><strong>Return value:</strong> Returns the <code>Tld_rc</code> value <code>TLD_SUCCESS</code> if all code
+points are valid or when <code>tld</code> is null, <code>TLD_INVALID</code> if a
+character is not allowed, or additional error codes on general
+failure conditions. 
+</p></blockquote></div>
+
+<h4 class="subheading">tld_check_4z</h4>
+
+<p><a name="tld_005fcheck_005f4z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>tld_check_4z</b> (<var>const uint32_t * in, size_t * errpos, const Tld_table ** overrides</var>)<var><a name="index-tld_005fcheck_005f4z-101"></a></var><br>
+<blockquote><p><var>in</var>: Zero-terminated array of unicode code points to process.
+
+        <p><var>errpos</var>: Position of offending character is returned here.
+
+        <p><var>overrides</var>: A <code>Tld_table</code> array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+        <p>Test each of the code points in <code>in</code> for whether or not they are
+allowed by the information in <code>overrides</code> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <code>overrides</code>, the information in <code>overrides</code> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <code>overrides</code> is <code>NULL</code>, only the built-in
+information is used.  The position of the first offending character
+is returned in <code>errpos</code>.
+
+        <p><strong>Return value:</strong> Returns the <code>Tld_rc</code> value <code>TLD_SUCCESS</code> if all code
+points are valid or when <code>tld</code> is null, <code>TLD_INVALID</code> if a
+character is not allowed, or additional error codes on general
+failure conditions. 
+</p></blockquote></div>
+
+<h4 class="subheading">tld_check_8z</h4>
+
+<p><a name="tld_005fcheck_005f8z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>tld_check_8z</b> (<var>const char * in, size_t * errpos, const Tld_table ** overrides</var>)<var><a name="index-tld_005fcheck_005f8z-102"></a></var><br>
+<blockquote><p><var>in</var>: Zero-terminated UTF8 string to process.
+
+        <p><var>errpos</var>: Position of offending character is returned here.
+
+        <p><var>overrides</var>: A <code>Tld_table</code> array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+        <p>Test each of the characters in <code>in</code> for whether or not they are
+allowed by the information in <code>overrides</code> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <code>overrides</code>, the information in <code>overrides</code> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <code>overrides</code> is <code>NULL</code>, only the built-in
+information is used.  The position of the first offending character
+is returned in <code>errpos</code>.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.
+
+        <p><strong>Return value:</strong> Returns the <code>Tld_rc</code> value <code>TLD_SUCCESS</code> if all
+characters are valid or when <code>tld</code> is null, <code>TLD_INVALID</code> if a
+character is not allowed, or additional error codes on general
+failure conditions. 
+</p></blockquote></div>
+
+<h4 class="subheading">tld_check_lz</h4>
+
+<p><a name="tld_005fcheck_005flz"></a>
+
+<div class="defun">
+&mdash; Function: int <b>tld_check_lz</b> (<var>const char * in, size_t * errpos, const Tld_table ** overrides</var>)<var><a name="index-tld_005fcheck_005flz-103"></a></var><br>
+<blockquote><p><var>in</var>: Zero-terminated string in the current locales encoding to process.
+
+        <p><var>errpos</var>: Position of offending character is returned here.
+
+        <p><var>overrides</var>: A <code>Tld_table</code> array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+        <p>Test each of the characters in <code>in</code> for whether or not they are
+allowed by the information in <code>overrides</code> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <code>overrides</code>, the information in <code>overrides</code> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <code>overrides</code> is <code>NULL</code>, only the built-in
+information is used.  The position of the first offending character
+is returned in <code>errpos</code>.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.
+
+        <p><strong>Return value:</strong> Returns the <code>Tld_rc</code> value <code>TLD_SUCCESS</code> if all
+characters are valid or when <code>tld</code> is null, <code>TLD_INVALID</code> if a
+character is not allowed, or additional error codes on general
+failure conditions. 
+</p></blockquote></div>
+
+<h3 class="section">7.5 Error Handling</h3>
+
+<h4 class="subheading">tld_strerror</h4>
+
+<p><a name="tld_005fstrerror"></a>
+
+<div class="defun">
+&mdash; Function: const char * <b>tld_strerror</b> (<var>Tld_rc rc</var>)<var><a name="index-tld_005fstrerror-104"></a></var><br>
+<blockquote><p><var>rc</var>: tld return code
+
+        <p>Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+        <p><strong>TLD_SUCCESS:</strong> Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+        <p><strong>TLD_INVALID:</strong> Invalid character found.
+
+        <p><strong>TLD_NODATA:</strong> No input data was provided.
+
+        <p><strong>TLD_MALLOC_ERROR:</strong> Error during memory allocation.
+
+        <p><strong>TLD_ICONV_ERROR:</strong> Error during iconv string conversion.
+
+        <p><strong>TLD_NO_TLD:</strong> No top-level domain found in domain string.
+
+        <p><strong>Return value:</strong> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <code>rc</code>. 
+</p></blockquote></div>
+
+<!-- ********************************************************** -->
+<!-- ********************** PR29 Functions ******************** -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="PR29-Functions"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Examples">Examples</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#TLD-Functions">TLD Functions</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">8 PR29 Functions</h2>
+
+<p><a name="index-PR29-Functions-105"></a>
+A deficiency in the specification of Unicode Normalization Forms has
+been found.  The consequence is that some strings can be normalized
+into different strings by different implementations.  In other words,
+two different implementations may return different output for the same
+input (because the interpretation of the specification is
+ambiguous). Further, an implementation invoked again on the one of the
+output strings may return a different string (because one of the
+interpretation of the ambiguous specification make normalization
+non-idempotent).  Fortunately, only a select few character sequence
+exhibit this problem, and none of them are expected to occur in
+natural languages (due to different linguistic uses of the involved
+characters).
+
+   <p>A full discussion of the problem may be found at:
+
+   <p><a href="http://www.unicode.org/review/pr-29.html">http://www.unicode.org/review/pr-29.html</a>
+
+   <p>The PR29 functions below allow you to detect the problem sequence.  So
+when would you want to use these functions?  For most applications,
+such as those using Nameprep for IDN, this is likely only to be an
+interoperability problem.  Thus, you may not want to care about it, as
+the character sequences will rarely occur naturally.  However, if you
+are using a profile, such as SASLPrep, to process authentication
+tokens; authorization tokens; or passwords, there is a real danger
+that attackers may try to use the peculiarities in these strings to
+attack parts of your system.  As only a small number of strings, and
+no naturally occurring strings, exhibit this problem, the conservative
+approach of rejecting the strings is recommended.  If this approach is
+not used, you should instead verify that all parts of your system,
+that process the tokens and passwords, use a NFKC implementation that
+produce the same output for the same input.
+
+   <p>Technically inclined readers may be interested in knowing more about
+the implementation aspects of the PR29 flaw. See <a href="#PR29-discussion">PR29 discussion</a>.
+
+<h3 class="section">8.1 Header file <code>pr29.h</code></h3>
+
+<p>To use the functions explained in this chapter, you need to include
+the file <samp><span class="file">pr29.h</span></samp> using:
+
+<pre class="example">     #include &lt;pr29.h&gt;
+</pre>
+   <h3 class="section">8.2 Core Functions</h3>
+
+<h4 class="subheading">pr29_4</h4>
+
+<p><a name="pr29_005f4"></a>
+
+<div class="defun">
+&mdash; Function: int <b>pr29_4</b> (<var>const uint32_t * in, size_t len</var>)<var><a name="index-pr29_005f4-106"></a></var><br>
+<blockquote><p><var>in</var>: input array with unicode code points.
+
+        <p><var>len</var>: length of input array with unicode code points.
+
+        <p>Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+
+        <p><strong>Return value:</strong> Returns the <code>Pr29_rc</code> value <code>PR29_SUCCESS</code> on success,
+and <code>PR29_PROBLEM</code> if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations). 
+</p></blockquote></div>
+
+<h3 class="section">8.3 Utility Functions</h3>
+
+<h4 class="subheading">pr29_4z</h4>
+
+<p><a name="pr29_005f4z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>pr29_4z</b> (<var>const uint32_t * in</var>)<var><a name="index-pr29_005f4z-107"></a></var><br>
+<blockquote><p><var>in</var>: zero terminated array of Unicode code points.
+
+        <p>Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+
+        <p><strong>Return value:</strong> Returns the <code>Pr29_rc</code> value <code>PR29_SUCCESS</code> on success,
+and <code>PR29_PROBLEM</code> if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations). 
+</p></blockquote></div>
+
+<h4 class="subheading">pr29_8z</h4>
+
+<p><a name="pr29_005f8z"></a>
+
+<div class="defun">
+&mdash; Function: int <b>pr29_8z</b> (<var>const char * in</var>)<var><a name="index-pr29_005f8z-108"></a></var><br>
+<blockquote><p><var>in</var>: zero terminated input UTF-8 string.
+
+        <p>Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+
+        <p><strong>Return value:</strong> Returns the <code>Pr29_rc</code> value <code>PR29_SUCCESS</code> on success,
+and <code>PR29_PROBLEM</code> if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations), or <code>PR29_STRINGPREP_ERROR</code> if there was a
+problem converting the string from UTF-8 to UCS-4. 
+</p></blockquote></div>
+
+<h3 class="section">8.4 Error Handling</h3>
+
+<h4 class="subheading">pr29_strerror</h4>
+
+<p><a name="pr29_005fstrerror"></a>
+
+<div class="defun">
+&mdash; Function: const char * <b>pr29_strerror</b> (<var>Pr29_rc rc</var>)<var><a name="index-pr29_005fstrerror-109"></a></var><br>
+<blockquote><p><var>rc</var>: an <code>Pr29_rc</code> return code.
+
+        <p>Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+        <p><strong>PR29_SUCCESS:</strong> Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+        <p><strong>PR29_PROBLEM:</strong> A problem sequence was encountered.
+
+        <p><strong>PR29_STRINGPREP_ERROR:</strong> The character set conversion failed (only
+for <code>pr29_8()</code> and <code>pr29_8z()</code>).
+
+        <p><strong>Return value:</strong> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <code>rc</code>. 
+</p></blockquote></div>
+
+<!-- ********************************************************** -->
+<!-- ***********************  Examples  *********************** -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="Examples"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Invoking-idn">Invoking idn</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#PR29-Functions">PR29 Functions</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">9 Examples</h2>
+
+<p><a name="index-Examples-110"></a>
+This chapter contains example code which illustrate how `Libidn' can
+be used when writing your own application.
+
+<ul class="menu">
+<li><a accesskey="1" href="#Example-1">Example 1</a>:          Example using stringprep. 
+<li><a accesskey="2" href="#Example-2">Example 2</a>:          Example using punycode. 
+<li><a accesskey="3" href="#Example-3">Example 3</a>:          Example using IDNA ToASCII. 
+<li><a accesskey="4" href="#Example-4">Example 4</a>:          Example using IDNA ToUnicode. 
+<li><a accesskey="5" href="#Example-5">Example 5</a>:          Example using TLD checking. 
+</ul>
+
+<div class="node">
+<a name="Example-1"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Example-2">Example 2</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Examples">Examples</a>
+
+</div>
+
+<h3 class="section">9.1 Example 1</h3>
+
+<p>This example demonstrates how the stringprep functions are used.
+
+<pre class="verbatim">/* example.c --- Example code showing how to use stringprep().
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see &lt;http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include &lt;stdio.h>
+#include &lt;stdlib.h>
+#include &lt;string.h>
+#include &lt;locale.h>         /* setlocale() */
+#include &lt;stringprep.h>
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example example.c `pkg-config --cflags --libs libidn`
+ * $ ./example
+ * Input string encoded as `ISO-8859-1': ª
+ * Before locale2utf8 (length 2): aa 0a
+ * Before stringprep (length 3): c2 aa 0a
+ * After stringprep (length 2): 61 0a
+ * $
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  int rc;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+
+  printf ("Input string encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+
+  printf ("Before locale2utf8 (length %d): ", strlen (buf));
+  for (i = 0; i &lt; strlen (buf); i++)
+    printf ("%02x ", buf[i] &amp; 0xFF);
+  printf ("\n");
+
+  p = stringprep_locale_to_utf8 (buf);
+  if (p)
+    {
+      strcpy (buf, p);
+      free (p);
+    }
+  else
+    printf ("Could not convert string to UTF-8, continuing anyway...\n");
+
+  printf ("Before stringprep (length %d): ", strlen (buf));
+  for (i = 0; i &lt; strlen (buf); i++)
+    printf ("%02x ", buf[i] &amp; 0xFF);
+  printf ("\n");
+
+  rc = stringprep (buf, BUFSIZ, 0, stringprep_nameprep);
+  if (rc != STRINGPREP_OK)
+    printf ("Stringprep failed (%d): %s\n", rc, stringprep_strerror (rc));
+  else
+    {
+      printf ("After stringprep (length %d): ", strlen (buf));
+      for (i = 0; i &lt; strlen (buf); i++)
+       printf ("%02x ", buf[i] &amp; 0xFF);
+      printf ("\n");
+    }
+
+  return 0;
+}
+</pre>
+<div class="node">
+<a name="Example-2"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Example-3">Example 3</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Example-1">Example 1</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Examples">Examples</a>
+
+</div>
+
+<h3 class="section">9.2 Example 2</h3>
+
+<p>This example demonstrates how the punycode functions are used.
+
+<pre class="verbatim">/* example2.c --- Example code showing how to use punycode.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ * Copyright (C) 2002  Adam M. Costello
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see &lt;http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include &lt;locale.h>         /* setlocale() */
+
+/*
+ * This file is derived from RFC 3492 written by Adam M. Costello.
+ *
+ * Disclaimer and license: Regarding this entire document or any
+ * portion of it (including the pseudocode and C code), the author
+ * makes no guarantees and is not responsible for any damage resulting
+ * from its use.  The author grants irrevocable permission to anyone
+ * to use, modify, and distribute it in any way that does not diminish
+ * the rights of anyone else to use, modify, and distribute it,
+ * provided that redistributed derivative works do not contain
+ * misleading author or version information.  Derivative works need
+ * not be licensed under similar terms.
+ *
+ */
+
+#include &lt;assert.h>
+#include &lt;stdio.h>
+#include &lt;stdlib.h>
+#include &lt;string.h>
+
+#include &lt;punycode.h>
+
+/* For testing, we'll just set some compile-time limits rather than */
+/* use malloc(), and set a compile-time option rather than using a  */
+/* command-line option.                                             */
+
+enum
+{
+  unicode_max_length = 256,
+  ace_max_length = 256
+};
+
+static void
+usage (char **argv)
+{
+  fprintf (stderr,
+          "\n"
+          "%s -e reads code points and writes a Punycode string.\n"
+          "%s -d reads a Punycode string and writes code points.\n"
+          "\n"
+          "Input and output are plain text in the native character set.\n"
+          "Code points are in the form u+hex separated by whitespace.\n"
+          "Although the specification allows Punycode strings to contain\n"
+          "any characters from the ASCII repertoire, this test code\n"
+          "supports only the printable characters, and needs the Punycode\n"
+          "string to be followed by a newline.\n"
+          "The case of the u in u+hex is the force-to-uppercase flag.\n",
+          argv[0], argv[0]);
+  exit (EXIT_FAILURE);
+}
+
+static void
+fail (const char *msg)
+{
+  fputs (msg, stderr);
+  exit (EXIT_FAILURE);
+}
+
+static const char too_big[] =
+  "input or output is too large, recompile with larger limits\n";
+static const char invalid_input[] = "invalid input\n";
+static const char overflow[] = "arithmetic overflow\n";
+static const char io_error[] = "I/O error\n";
+
+/* The following string is used to convert printable */
+/* characters between ASCII and the native charset:  */
+
+static const char print_ascii[] = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" " !\"#$%&amp;'()*+,-./" "0123456789:;&lt;=>?" "\0x40"  /* at sign */
+  "ABCDEFGHIJKLMNO"
+  "PQRSTUVWXYZ[\\]^_" "`abcdefghijklmno" "pqrstuvwxyz{|}~\n";
+
+int
+main (int argc, char **argv)
+{
+  enum punycode_status status;
+  int r;
+  size_t input_length, output_length, j;
+  unsigned char case_flags[unicode_max_length];
+
+  setlocale (LC_ALL, "");
+
+  if (argc != 2)
+    usage (argv);
+  if (argv[1][0] != '-')
+    usage (argv);
+  if (argv[1][2] != 0)
+    usage (argv);
+
+  if (argv[1][1] == 'e')
+    {
+      uint32_t input[unicode_max_length];
+      unsigned long codept;
+      char output[ace_max_length + 1], uplus[3];
+      int c;
+
+      /* Read the input code points: */
+
+      input_length = 0;
+
+      for (;;)
+       {
+         r = scanf ("%2s%lx", uplus, &amp;codept);
+         if (ferror (stdin))
+           fail (io_error);
+         if (r == EOF || r == 0)
+           break;
+
+         if (r != 2 || uplus[1] != '+' || codept > (uint32_t) - 1)
+           {
+             fail (invalid_input);
+           }
+
+         if (input_length == unicode_max_length)
+           fail (too_big);
+
+         if (uplus[0] == 'u')
+           case_flags[input_length] = 0;
+         else if (uplus[0] == 'U')
+           case_flags[input_length] = 1;
+         else
+           fail (invalid_input);
+
+         input[input_length++] = codept;
+       }
+
+      /* Encode: */
+
+      output_length = ace_max_length;
+      status = punycode_encode (input_length, input, case_flags,
+                               &amp;output_length, output);
+      if (status == punycode_bad_input)
+       fail (invalid_input);
+      if (status == punycode_big_output)
+       fail (too_big);
+      if (status == punycode_overflow)
+       fail (overflow);
+      assert (status == punycode_success);
+
+      /* Convert to native charset and output: */
+
+      for (j = 0; j &lt; output_length; ++j)
+       {
+         c = output[j];
+         assert (c >= 0 &amp;&amp; c &lt;= 127);
+         if (print_ascii[c] == 0)
+           fail (invalid_input);
+         output[j] = print_ascii[c];
+       }
+
+      output[j] = 0;
+      r = puts (output);
+      if (r == EOF)
+       fail (io_error);
+      return EXIT_SUCCESS;
+    }
+
+  if (argv[1][1] == 'd')
+    {
+      char input[ace_max_length + 2], *p, *pp;
+      uint32_t output[unicode_max_length];
+
+      /* Read the Punycode input string and convert to ASCII: */
+
+      fgets (input, ace_max_length + 2, stdin);
+      if (ferror (stdin))
+       fail (io_error);
+      if (feof (stdin))
+       fail (invalid_input);
+      input_length = strlen (input) - 1;
+      if (input[input_length] != '\n')
+       fail (too_big);
+      input[input_length] = 0;
+
+      for (p = input; *p != 0; ++p)
+       {
+         pp = strchr (print_ascii, *p);
+         if (pp == 0)
+           fail (invalid_input);
+         *p = pp - print_ascii;
+       }
+
+      /* Decode: */
+
+      output_length = unicode_max_length;
+      status = punycode_decode (input_length, input, &amp;output_length,
+                               output, case_flags);
+      if (status == punycode_bad_input)
+       fail (invalid_input);
+      if (status == punycode_big_output)
+       fail (too_big);
+      if (status == punycode_overflow)
+       fail (overflow);
+      assert (status == punycode_success);
+
+      /* Output the result: */
+
+      for (j = 0; j &lt; output_length; ++j)
+       {
+         r = printf ("%s+%04lX\n",
+                     case_flags[j] ? "U" : "u", (unsigned long) output[j]);
+         if (r &lt; 0)
+           fail (io_error);
+       }
+
+      return EXIT_SUCCESS;
+    }
+
+  usage (argv);
+  return EXIT_SUCCESS;         /* not reached, but quiets compiler warning */
+}
+</pre>
+<div class="node">
+<a name="Example-3"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Example-4">Example 4</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Example-2">Example 2</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Examples">Examples</a>
+
+</div>
+
+<h3 class="section">9.3 Example 3</h3>
+
+<p>This example demonstrates how the library is used to convert
+internationalized domain names into ASCII compatible names.
+
+<pre class="verbatim">/* example3.c --- Example ToASCII() code showing how to use Libidn.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see &lt;http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include &lt;stdio.h>
+#include &lt;stdlib.h>
+#include &lt;string.h>
+#include &lt;locale.h>         /* setlocale() */
+#include &lt;stringprep.h>             /* stringprep_locale_charset() */
+#include &lt;idna.h>           /* idna_to_ascii_lz() */
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example3 example3.c `pkg-config --cflags --libs libidn`
+ * $ ./example3
+ * Input domain encoded as `ISO-8859-1': www.räksmörgåsª.example
+ * Read string (length 23): 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 aa 2e 65 78 61 6d 70 6c 65
+ * ACE label (length 33): 'www.xn--rksmrgsa-0zap8p.example'
+ * 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65
+ * $
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  int rc;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+
+  printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+  buf[strlen (buf) - 1] = '\0';
+
+  printf ("Read string (length %d): ", strlen (buf));
+  for (i = 0; i &lt; strlen (buf); i++)
+    printf ("%02x ", buf[i] &amp; 0xFF);
+  printf ("\n");
+
+  rc = idna_to_ascii_lz (buf, &amp;p, 0);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("ToASCII() failed (%d): %s\n", rc, idna_strerror (rc));
+      exit (1);
+    }
+
+  printf ("ACE label (length %d): '%s'\n", strlen (p), p);
+  for (i = 0; i &lt; strlen (p); i++)
+    printf ("%02x ", p[i] &amp; 0xFF);
+  printf ("\n");
+
+  free (p);
+
+  return 0;
+}
+</pre>
+<div class="node">
+<a name="Example-4"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Example-5">Example 5</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Example-3">Example 3</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Examples">Examples</a>
+
+</div>
+
+<h3 class="section">9.4 Example 4</h3>
+
+<p>This example demonstrates how the library is used to convert ASCII
+compatible names to internationalized domain names.
+
+<pre class="verbatim">/* example4.c --- Example ToUnicode() code showing how to use Libidn.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see &lt;http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include &lt;stdio.h>
+#include &lt;stdlib.h>
+#include &lt;string.h>
+#include &lt;locale.h>         /* setlocale() */
+#include &lt;stringprep.h>             /* stringprep_locale_charset() */
+#include &lt;idna.h>           /* idna_to_unicode_lzlz() */
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example4 example4.c `pkg-config --cflags --libs libidn`
+ * $ ./example4
+ * Input domain encoded as `ISO-8859-1': www.xn--rksmrgsa-0zap8p.example
+ * Read string (length 33): 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65
+ * ACE label (length 23): 'www.räksmörgåsa.example'
+ * 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 61 2e 65 78 61 6d 70 6c 65
+ * $
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  int rc;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+
+  printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+  buf[strlen (buf) - 1] = '\0';
+
+  printf ("Read string (length %d): ", strlen (buf));
+  for (i = 0; i &lt; strlen (buf); i++)
+    printf ("%02x ", buf[i] &amp; 0xFF);
+  printf ("\n");
+
+  rc = idna_to_unicode_lzlz (buf, &amp;p, 0);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("ToUnicode() failed (%d): %s\n", rc, idna_strerror (rc));
+      exit (1);
+    }
+
+  printf ("ACE label (length %d): '%s'\n", strlen (p), p);
+  for (i = 0; i &lt; strlen (p); i++)
+    printf ("%02x ", p[i] &amp; 0xFF);
+  printf ("\n");
+
+  free (p);
+
+  return 0;
+}
+</pre>
+<div class="node">
+<a name="Example-5"></a>
+<p><hr>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Example-4">Example 4</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Examples">Examples</a>
+
+</div>
+
+<h3 class="section">9.5 Example 5</h3>
+
+<p>This example demonstrates how the library is used to check a string
+for invalid characters within a specific TLD.
+
+<pre class="verbatim">/* example5.c --- Example TLD checking.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see &lt;http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include &lt;stdio.h>
+#include &lt;stdlib.h>
+#include &lt;string.h>
+
+/* Get stringprep_locale_charset, etc. */
+#include &lt;stringprep.h>
+
+/* Get idna_to_ascii_8z, etc. */
+#include &lt;idna.h>
+
+/* Get tld_check_4z. */
+#include &lt;tld.h>
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example5 example5.c `pkg-config --cflags --libs libidn`
+ * $ ./example5
+ * Input domain encoded as `UTF-8': fooß.no
+ * Read string (length 8): 66 6f 6f c3 9f 2e 6e 6f
+ * ToASCII string (length 8): fooss.no
+ * ToUnicode string: U+0066 U+006f U+006f U+0073 U+0073 U+002e U+006e U+006f
+ * Domain accepted by TLD check
+ *
+ * $ ./example5
+ * Input domain encoded as `UTF-8': gr€€n.no
+ * Read string (length 12): 67 72 e2 82 ac e2 82 ac 6e 2e 6e 6f
+ * ToASCII string (length 16): xn--grn-l50aa.no
+ * ToUnicode string: U+0067 U+0072 U+20ac U+20ac U+006e U+002e U+006e U+006f
+ * Domain rejected by TLD check, Unicode position 2
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  uint32_t *r;
+  int rc;
+  size_t errpos, i;
+
+  printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+  buf[strlen (buf) - 1] = '\0';
+
+  printf ("Read string (length %d): ", strlen (buf));
+  for (i = 0; i &lt; strlen (buf); i++)
+    printf ("%02x ", buf[i] &amp; 0xFF);
+  printf ("\n");
+
+  p = stringprep_locale_to_utf8 (buf);
+  if (p)
+    {
+      strcpy (buf, p);
+      free (p);
+    }
+  else
+    printf ("Could not convert string to UTF-8, continuing anyway...\n");
+
+  rc = idna_to_ascii_8z (buf, &amp;p, 0);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("idna_to_ascii_8z failed (%d): %s\n", rc, idna_strerror (rc));
+      return 2;
+    }
+
+  printf ("ToASCII string (length %d): %s\n", strlen (p), p);
+
+  rc = idna_to_unicode_8z4z (p, &amp;r, 0);
+  free (p);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("idna_to_unicode_8z4z failed (%d): %s\n",
+             rc, idna_strerror (rc));
+      return 2;
+    }
+
+  printf ("ToUnicode string: ");
+  for (i = 0; r[i]; i++)
+    printf ("U+%04x ", r[i]);
+  printf ("\n");
+
+  rc = tld_check_4z (r, &amp;errpos, NULL);
+  free (r);
+  if (rc == TLD_INVALID)
+    {
+      printf ("Domain rejected by TLD check, Unicode position %d\n", errpos);
+      return 1;
+    }
+  else if (rc != TLD_SUCCESS)
+    {
+      printf ("tld_check_4z() failed (%d): %s\n", rc, tld_strerror (rc));
+      return 2;
+    }
+
+  printf ("Domain accepted by TLD check\n");
+
+  return 0;
+}
+</pre>
+<!-- ********************************************************** -->
+<!-- *********************  Invoking idn  ********************* -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="Invoking-idn"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Emacs-API">Emacs API</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Examples">Examples</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">10 Invoking idn</h2>
+
+<p><a name="index-idn-111"></a><a name="index-invoking-_0040command_007bidn_007d-112"></a><a name="index-command-line-113"></a>
+
+<h3 class="section">10.1 Name</h3>
+
+<p>GNU Libidn (idn) &ndash; Internationalized Domain Names command line tool
+
+<h3 class="section">10.2 Description</h3>
+
+<p><code>idn</code> allows internationalized string preparation
+(&lsquo;<samp><span class="samp">stringprep</span></samp>&rsquo;), encoding and decoding of punycode data, and IDNA
+ToASCII/ToUnicode operations to be performed on the command line.
+
+   <p>If strings are specified on the command line, they are used as input
+and the computed output is printed to standard output <code>stdout</code>. 
+If no strings are specified on the command line, the program read
+data, line by line, from the standard input <code>stdin</code>, and print
+the computed output to standard output.  What processing is performed
+(e.g., ToASCII, or Punycode encode) is indicated by options.  If any
+errors are encountered, the execution of the applications is aborted.
+
+   <p>All strings are expected to be encoded in the preferred charset used
+by your locale.  Use <code>--debug</code> to find out what this charset is. 
+You can override the charset used by setting environment variable
+<code>CHARSET</code>.
+
+   <p>To process a string that starts with <code>-</code>, for example
+<code>-foo</code>, use <code>--</code> to signal the end of parameters, as in
+<code>idn --quiet -a -- -foo</code>.
+
+<h3 class="section">10.3 Options</h3>
+
+<p><code>idn</code> recognizes these commands:
+
+<pre class="verbatim">  -h, --help               Print help and exit
+
+  -V, --version            Print version and exit
+
+  -s, --stringprep         Prepare string according to nameprep profile
+
+  -d, --punycode-decode    Decode Punycode
+
+  -e, --punycode-encode    Encode Punycode
+
+  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)
+
+  -u, --idna-to-unicode    Convert from ACE according to IDNA
+
+      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)
+
+      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)
+
+      --no-tld             Don't check string for TLD specific rules
+                             Only for --idna-to-ascii and --idna-to-unicode
+
+  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC
+
+  -p, --profile=STRING     Use specified stringprep profile instead
+                             Valid stringprep profiles: `Nameprep',
+                             `iSCSI', `Nodeprep', `Resourceprep', 
+                             `trace', `SASLprep'
+
+      --debug              Print debugging information
+
+      --quiet              Silent operation
+</pre>
+
+<h3 class="section">10.4 Environment Variables</h3>
+
+<p>The <var>CHARSET</var> environment variable can be used to override what
+character set to be used for decoding incoming data (i.e., on the
+command line or on the standard input stream), and to encode data to
+the standard output.  If your system is set up correctly, however, the
+application will guess which character set is used automatically. 
+Example usage:
+
+<pre class="example">     $ CHARSET=ISO-8859-1 idn --punycode-encode
+     ...
+</pre>
+   <h3 class="section">10.5 Examples</h3>
+
+<p>Standard usage, reading input from standard input:
+
+<pre class="example">     jas@latte:~$ idn
+     libidn 0.3.5
+     Copyright 2002, 2003 Simon Josefsson.
+     GNU Libidn comes with NO WARRANTY, to the extent permitted by law.
+     You may redistribute copies of GNU Libidn under the terms of
+     the GNU Lesser General Public License.  For more information
+     about these matters, see the file named COPYING.LIB.
+     Type each input string on a line by itself, terminated by a newline character.
+     r&auml;ksm&ouml;rg&aring;s.se
+     xn--rksmrgs-5wao1o.se
+     jas@latte:~$
+</pre>
+   <p>Reading input from command line, and disabling copyright and license
+information:
+
+<pre class="example">     jas@latte:~$ idn --quiet r&auml;ksm&ouml;rg&aring;s.se bl&aring;b&aelig;rgr&oslash;d.no
+     xn--rksmrgs-5wao1o.se
+     xn--blbrgrd-fxak7p.no
+     jas@latte:~$
+</pre>
+   <p>Accessing a specific StringPrep profile directly:
+
+<pre class="example">     jas@latte:~$ idn --quiet --profile=SASLprep --stringprep te&szlig;t&ordf;
+     te&szlig;ta
+     jas@latte:~$
+</pre>
+   <h3 class="section">10.6 Troubleshooting</h3>
+
+<p>Getting character data encoded right, and making sure Libidn use the
+same encoding, can be difficult.  The reason for this is that most
+systems encode character data in more than one character encoding,
+i.e., using <code>UTF-8</code> together with <code>ISO-8859-1</code> or
+<code>ISO-2022-JP</code>.  This problem is likely to continue to exist until
+only one character encoding come out as the evolutionary winner, or
+(more likely, at least to some extents) forever.
+
+   <p>The first step to troubleshooting character encoding problems with
+Libidn is to use the &lsquo;<samp><span class="samp">--debug</span></samp>&rsquo; parameter to find out which
+character set encoding &lsquo;<samp><span class="samp">idn</span></samp>&rsquo; believe your locale uses.
+
+<pre class="example">     jas@latte:~$ idn --debug --quiet ""
+     system locale uses charset `UTF-8'.
+     
+     jas@latte:~$
+</pre>
+   <p>If it prints <code>ANSI_X3.4-1968</code> (i.e., <code>US-ASCII</code>), this
+indicate you have not configured your locale properly.  To configure
+the locale, you can, for example, use &lsquo;<samp><span class="samp">LANG=sv_SE.UTF-8; export
+LANG</span></samp>&rsquo; at a <code>/bin/sh</code> prompt, to set up your locale for a Swedish
+environment using <code>UTF-8</code> as the encoding.
+
+   <p>Sometimes &lsquo;<samp><span class="samp">idn</span></samp>&rsquo; appear to be unable to translate from your system
+locale into <code>UTF-8</code> (which is used internally), and you get an
+error like the following:
+
+<pre class="example">     jas@latte:~$ idn --quiet foo
+     idn: could not convert from ISO-8859-1 to UTF-8.
+     jas@latte:~$
+</pre>
+   <p>The simplest explanation is that you haven't installed the
+&lsquo;<samp><span class="samp">iconv</span></samp>&rsquo; conversion tools.  You can find it as a standalone
+library in <acronym>GNU</acronym> Libiconv
+(<a href="http://www.gnu.org/software/libiconv/">http://www.gnu.org/software/libiconv/</a>).  On many
+<acronym>GNU</acronym>/Linux systems, this library is part of the system, but
+you may have to install additional packages (e.g., &lsquo;<samp><span class="samp">glibc-locale</span></samp>&rsquo;
+for Debian) to be able to use it.
+
+   <p>Another explanation is that the error is correct and you are feeding
+&lsquo;<samp><span class="samp">idn</span></samp>&rsquo; invalid data.  This can happen inadvertently if you are not
+careful with the character set encodings you use.  For example, if
+your shell run in a <code>ISO-8859-1</code> environment, and you invoke
+&lsquo;<samp><span class="samp">idn</span></samp>&rsquo; with the &lsquo;<samp><span class="samp">CHARSET</span></samp>&rsquo; environment variable as follows,
+you will feed it <code>ISO-8859-1</code> characters but force it to believe
+they are <code>UTF-8</code>.  Naturally this will lead to an error, unless
+the byte sequences happen to be parsable as <code>UTF-8</code>.  Note that
+even if you don't get an error, the output may be incorrect in this
+situation, because <code>ISO-8859-1</code> and <code>UTF-8</code> does not in
+general encode the same characters as the same byte sequences.
+
+<pre class="example">     jas@latte:~$ idn --quiet --debug ""
+     system locale uses charset `ISO-8859-1'.
+     
+     jas@latte:~$ CHARSET=UTF-8 idn --quiet --debug r&auml;ksm&ouml;rg&aring;s
+     system locale uses charset `UTF-8'.
+     input[0] = U+0072
+     input[1] = U+4af3
+     input[2] = U+006d
+     input[3] = U+1b29e5
+     input[4] = U+0073
+     output[0] = U+0078
+     output[1] = U+006e
+     output[2] = U+002d
+     output[3] = U+002d
+     output[4] = U+0072
+     output[5] = U+006d
+     output[6] = U+0073
+     output[7] = U+002d
+     output[8] = U+0068
+     output[9] = U+0069
+     output[10] = U+0036
+     output[11] = U+0064
+     output[12] = U+0035
+     output[13] = U+0039
+     output[14] = U+0037
+     output[15] = U+0035
+     output[16] = U+0035
+     output[17] = U+0032
+     output[18] = U+0061
+     xn--rms-hi6d597552a
+     jas@latte:~$
+</pre>
+   <p>The sense moral here is to forget about &lsquo;<samp><span class="samp">CHARSET</span></samp>&rsquo; (configure your
+locales properly instead) unless you know what you are doing, and if
+you want to use it, do it carefully, after verifying with
+&lsquo;<samp><span class="samp">--debug</span></samp>&rsquo; that you get the desired results.
+
+<div class="node">
+<a name="Emacs-API"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Java-API">Java API</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Invoking-idn">Invoking idn</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">11 Emacs API</h2>
+
+<p>Included in Libidn are <samp><span class="file">punycode.el</span></samp> and <samp><span class="file">idna.el</span></samp> that
+provides an Emacs Lisp API to (a limited set of) the Libidn API.  This
+section describes the API.  Currently the IDNA API always set the
+<code>UseSTD3ASCIIRules</code> flag and clear the <code>AllowUnassigned</code>
+flag, in the future there may be functionality to specify these flags
+via the API.
+
+<h3 class="section">11.1 Punycode Emacs API</h3>
+
+<div class="defun">
+&mdash; Variable: <b>punycode-program</b><var><a name="index-punycode_002dprogram-114"></a></var><br>
+<blockquote><p>Name of the GNU Libidn <samp><span class="file">idn</span></samp> application.  The default is
+&lsquo;<samp><span class="samp">idn</span></samp>&rsquo;.  This variable can be customized. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Variable: <b>punycode-environment</b><var><a name="index-punycode_002denvironment-115"></a></var><br>
+<blockquote><p>List of environment variable definitions prepended to
+&lsquo;<samp><span class="samp">process-environment</span></samp>&rsquo;.  The default is &lsquo;<samp><span class="samp">("CHARSET=UTF-8")</span></samp>&rsquo;. 
+This variable can be customized. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Variable: <b>punycode-encode-parameters</b><var><a name="index-punycode_002dencode_002dparameters-116"></a></var><br>
+<blockquote><p>List of parameters passed to <var>punycode-program</var> to invoke punycode
+encoding mode.  The default is &lsquo;<samp><span class="samp">("--quiet" "--punycode-encode")</span></samp>&rsquo;. 
+This variable can be customized. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Variable: <b>punycode-decode-parameters</b><var><a name="index-punycode_002ddecode_002dparameters-117"></a></var><br>
+<blockquote><p>Parameters passed to <var>punycode-program</var> to invoke punycode
+decoding mode.  The default is &lsquo;<samp><span class="samp">("--quiet" "--punycode-decode")</span></samp>&rsquo;. 
+This variable can be customized. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Function: <b>punycode-encode</b><var> string<a name="index-punycode_002dencode-118"></a></var><br>
+<blockquote><p>Returns a Punycode encoding of the <var>string</var>, after converting the
+input into UTF-8. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Function: <b>punycode-decode</b><var> string<a name="index-punycode_002ddecode-119"></a></var><br>
+<blockquote><p>Returns a possibly multibyte string which is the decoding of the
+<var>string</var> which is a punycode encoded string. 
+</p></blockquote></div>
+
+<h3 class="section">11.2 IDNA Emacs API</h3>
+
+<div class="defun">
+&mdash; Variable: <b>idna-program</b><var><a name="index-idna_002dprogram-120"></a></var><br>
+<blockquote><p>Name of the GNU Libidn <samp><span class="file">idn</span></samp> application.  The default is
+&lsquo;<samp><span class="samp">idn</span></samp>&rsquo;.  This variable can be customized. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Variable: <b>idna-environment</b><var><a name="index-idna_002denvironment-121"></a></var><br>
+<blockquote><p>List of environment variable definitions prepended to
+&lsquo;<samp><span class="samp">process-environment</span></samp>&rsquo;.  The default is &lsquo;<samp><span class="samp">("CHARSET=UTF-8")</span></samp>&rsquo;. 
+This variable can be customized. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Variable: <b>idna-to-ascii-parameters</b><var><a name="index-idna_002dto_002dascii_002dparameters-122"></a></var><br>
+<blockquote><p>List of parameters passed to <var>idna-program</var> to invoke IDNA ToASCII
+mode.  The default is &lsquo;<samp><span class="samp">("--quiet" "--idna-to-ascii"
+"--usestd3asciirules")</span></samp>&rsquo;.  This variable can be customized. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Variable: <b>idna-to-unicode-parameters</b><var><a name="index-idna_002dto_002dunicode_002dparameters-123"></a></var><br>
+<blockquote><p>Parameters passed <var>idna-program</var> to invoke IDNA ToUnicode mode. 
+The default is &lsquo;<samp><span class="samp">("--quiet" "--idna-to-unicode"
+"--usestd3asciirules")</span></samp>&rsquo;.  This variable can be customized. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Function: <b>idna-to-ascii</b><var> string<a name="index-idna_002dto_002dascii-124"></a></var><br>
+<blockquote><p>Returns an ASCII Compatible Encoding (ACE) of the string computed by
+the IDNA ToASCII operation on the input <var>string</var>, after converting
+the input to UTF-8. 
+</p></blockquote></div>
+
+<div class="defun">
+&mdash; Function: <b>idna-to-unicode</b><var> string<a name="index-idna_002dto_002dunicode-125"></a></var><br>
+<blockquote><p>Returns a possibly multibyte string which is the output of the IDNA
+ToUnicode operation computed on the input <var>string</var>. 
+</p></blockquote></div>
+
+<div class="node">
+<a name="Java-API"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#C_0023-API">C# API</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Emacs-API">Emacs API</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">12 Java API</h2>
+
+<p>Libidn has been ported to the Java programming language, and as a
+consequence most of the API is available to native Java applications. 
+This section contain notes on this support, complete documentation is
+pending.
+
+   <p>The Java library, if Libidn has been built with Java support
+(see <a href="#Downloading-and-Installing">Downloading and Installing</a>), will be placed in
+<samp><span class="file">java/libidn-1.15.jar</span></samp>.  The source code is located in
+<samp><span class="file">java/gnu/inet/encoding/</span></samp>.
+
+<h3 class="section">12.1 Overview</h3>
+
+<p>This package provides a Java implementation of the Internationalized
+Domain Names in Applications (IDNA) standard. It is written entirely
+in Java and does not require any additional libraries to be set up.
+
+   <p>The gnu.inet.encoding.IDNA class offers two public functions, toASCII
+and toUnicode which can be used as follows:
+
+<pre class="example">     gnu.inet.encoding.IDNA.toASCII("bl&ouml;ds.z&uuml;g");
+     gnu.inet.encoding.IDNA.toUnicode("xn--blds-6qa.xn--zg-xka");
+</pre>
+   <h3 class="section">12.2 Miscellaneous Programs</h3>
+
+<p>The <samp><span class="file">misc/</span></samp> directory contains several programs that are related
+to the Java part of GNU Libidn, but that don't need to be included in
+the main source tree.
+
+<h4 class="subsection">12.2.1 GenerateRFC3454</h4>
+
+<p>This program parses RFC3454 and creates the RFC3454.java program that
+is required during the StringPrep phase.
+
+   <p>The RFC can be found at various locations, for example at
+<a href="http://www.ietf.org/rfc/rfc3454.txt">http://www.ietf.org/rfc/rfc3454.txt</a>.
+
+   <p>Invoke the program as follows:
+
+<pre class="example">     $ java GenerateRFC3454
+     Creating RFC3454.java... Ok.
+</pre>
+   <h4 class="subsection">12.2.2 GenerateNFKC</h4>
+
+<p>The GenerateNFKC program parses the Unicode character database file
+and generates all the tables required for NFKC. This program requires
+the two files UnicodeData.txt and CompositionExclusions.txt of version
+3.2 of the Unicode files. Note that RFC3454 (Stringprep) defines that
+Unicode version 3.2 is to be used, not the latest version.
+
+   <p>The Unicode data files can be found at
+<a href="http://www.unicode.org/Public/">http://www.unicode.org/Public/</a>.
+
+   <p>Invoke the program as follows:
+
+<pre class="example">     $ java GenerateNFKC
+     Creating CombiningClass.java... Ok.
+     Creating DecompositionKeys.java... Ok.
+     Creating DecompositionMappings.java... Ok.
+     Creating Composition.java... Ok.
+</pre>
+   <h4 class="subsection">12.2.3 TestIDNA</h4>
+
+<p>The TestIDNA program allows to test the IDNA implementation manually
+or against Simon Josefsson's test vectors.
+
+   <p>The test vectors can be found at the Libidn homepage,
+<a href="http://www.gnu.org/software/libidn/">http://www.gnu.org/software/libidn/</a>.
+
+   <p>To test the tranformation manually, use:
+
+<pre class="example">     $ java -cp .:../libidn.jar TestIDNA -a &lt;string to test&gt;
+     Input: &lt;string to test&gt;
+     Output: &lt;toASCII(string to test)&gt;
+     $ java -cp .:../libidn.jar TestIDNA -u &lt;string to test&gt;
+     Input: &lt;string to test&gt;
+     Output: &lt;toUnicode(string to test)&gt;
+</pre>
+   <p>To test against draft-josefsson-idn-test-vectors.html, use:
+
+<pre class="example">     $ java -cp .:../libidn.jar TestIDNA -t
+     No errors detected!
+</pre>
+   <h4 class="subsection">12.2.4 TestNFKC</h4>
+
+<p>The TestNFKC program allows to test the NFKC implementation manually
+or against the NormalizationTest.txt file from the Unicode data files.
+
+   <p>To test the normalization manually, use:
+
+<pre class="example">     $ java -cp .:../libidn.jar TestNFKC &lt;string to test&gt;
+     Input: &lt;string to test&gt;
+     Output: &lt;nfkc version of the string to test&gt;
+</pre>
+   <p>To test against NormalizationTest.txt:
+
+<pre class="example">     $ java -cp .:../libidn.jar TestNFKC
+     No errors detected!
+</pre>
+   <h3 class="section">12.3 Possible Problems</h3>
+
+<p>Beware of Bugs: This Java API needs a lot more testing, especially
+with "exotic" character sets. While it works for me, it may not work
+for you.
+
+   <p>Encoding of your Java sources: If you are using non-ASCII characters
+in your Java source code, make sure javac compiles your programs with
+the correct encoding. If necessary specify the encoding using the
+-encoding parameter.
+
+   <p>Java Unicode handling: Java 1.4 only handles 16-bit Unicode code
+points (i.e. characters in the Basic Multilingual Plane), this
+implementation therefore ignores all references to so-called
+Supplementary Characters (U+10000 to U+10FFFF). Starting from Java
+1.5, these characters will also be supported by Java, but this will
+require changes to this library.  See also the next section.
+
+<h3 class="section">12.4 A Note on Java and Unicode</h3>
+
+<p>This library uses Java's builtin 'char' datatype. Up to Java 1.4, this
+datatype only supports 16-bit Unicode code points, also called the
+Basic Multilingual Plane. For this reason, this library doesn't work
+for Supplementary Characters (i.e. characters from U+10000 to
+U+10FFFF). All references to such characters are silently ignored.
+
+   <p>Starting from Java 1.5, also Supplementary Characters will be
+supported. However, this will require changes in the present version
+of the library. Java 1.5 is currently in beta status.
+
+   <p>For more information refer to the documentation of java.lang.Character
+in the JDK API.
+
+<div class="node">
+<a name="C%23-API"></a>
+<a name="C_0023-API"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Acknowledgements">Acknowledgements</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Java-API">Java API</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">13 C# API</h2>
+
+<p>The Libidn library has been ported to the C# language.  The port
+reside in the top-level <samp><span class="file">csharp/</span></samp> directory.  Currently, no
+further documentation about the implementation or the API is
+available.  However, the C# port was based on the Java port, and the
+API is exactly the same as in the Java version.  The help files for
+the Java API may thus be useful.
+
+<!-- ********************************************************** -->
+<!-- *******************  Acknowledgements  ******************* -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="Acknowledgements"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#History">History</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#C_0023-API">C# API</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">14 Acknowledgements</h2>
+
+<p>The punycode implementation was taken from the IETF IDN Punycode
+specification, by Adam M. Costello.  The TLD code was contributed by
+Thomas Jacob.  The Java implementation was contributed by Oliver Hitz. 
+The C# implementation was contributed by Alexander Gnauck.  The
+Unicode tables were provided by Unicode, Inc.  Some functions for
+dealing with Unicode (see nfkc.c and toutf8.c) were borrowed from
+GLib, downloaded from <a href="http://www.gtk.org/">http://www.gtk.org/</a>.  The manual borrowed
+text from Libgcrypt by Werner Koch.
+
+   <p>Inspiration for many things that, consciously or not, have gone into
+this package is due to a number of free software package that the
+author has been exposed to.  The author wishes to acknowledge the free
+software community in general, for giving an example on what role
+software development can play in the modern society.
+
+   <p>Several people reported bugs, sent patches or suggested improvements,
+see the file THANKS in the top-level directory of the source code.
+
+<!-- ********************************************************** -->
+<!-- ************************  History  *********************** -->
+<!-- ********************************************************** -->
+<div class="node">
+<a name="History"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#PR29-discussion">PR29 discussion</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Acknowledgements">Acknowledgements</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="chapter">15 History</h2>
+
+<p>The complete history of user visible changes is stored in the file
+<samp><span class="file">NEWS</span></samp> in the top-level directory of the source code tree.  The
+complete history of modifications to each file is stored in the file
+<samp><span class="file">ChangeLog</span></samp> in the same directory.  This section contain a
+condensed version of that information, in the form of &ldquo;milestones&rdquo;
+for the project.
+
+     <dl>
+<dt>Stringprep implementation.<dd>Version 0.0.0 released on 2002-11-05.
+
+     <br><dt>IDNA and Punycode implementations, part of the GNU project.<dd>Version 0.1.0 released on 2003-01-05.
+
+     <br><dt>Uses official IDNA ACE prefix <code>xn--</code>.<dd>Version 0.1.7 released on 2003-02-12.
+
+     <br><dt>Command line interface.<dd>Version 0.1.11 released on 2003-02-26.
+
+     <br><dt>GNU Libc add-on proposed.<dd>Version 0.1.12 released on 2003-03-06.
+
+     <br><dt>Interoperability testing during IDNConnect.<dd>Version 0.3.1 released on 2003-10-02.
+
+     <br><dt>TLD restriction testing.<dd>Version 0.4.0 released on 2004-02-28.
+
+     <br><dt>GNU Libc add-on integrated.<dd>Version 0.4.1 released on 2004-03-08.
+
+     <br><dt>Native Java implementation.<dd>Version 0.4.2-0.4.9 released between 2004-03-20 and 2004-06-11.
+
+     <br><dt>PR-29 functions for &ldquo;problem sequences&rdquo;.<dd>Version 0.5.0 released on 2004-06-26.
+
+     <br><dt>Many small portability fixes and wider use.<dd>Version 0.5.1 through 0.5.20, released between 2004-07-09 and
+2005-10-23.
+
+     <br><dt>Native C# implementation.<dd>Version 0.6.0 released on 2005-12-03.
+
+     <br><dt>Windows support through cross-compilation.<dd>Version 0.6.1 released on 2006-01-20.
+
+     <br><dt>Library declared stable by releasing v1.0.<dd>Version 1.0 released on 2007-07-31.
+
+   </dl>
+
+<div class="node">
+<a name="PR29-discussion"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#On-Label-Separators">On Label Separators</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#History">History</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="appendix">Appendix A PR29 discussion</h2>
+
+<p>If you wish to experiment with a modified Unicode NFKC implementation
+according to the PR29 proposal, you may find the following bug report
+useful.  However, I have not verified that the suggested modifications
+are correct.  For reference, I'm including my response to the report
+as well.
+
+<pre class="verbatim">From: Rick McGowan &lt;rick@unicode.org>
+Subject: Possible bug and status of PR 29 change(s)
+To: bug-libidn@gnu.org
+Date: Wed, 27 Oct 2004 14:49:17 -0700
+
+Hello. On behalf of the Unicode Consortium editorial committee, I would  
+like to find out more information about the PR 29 fixes, if any, and  
+functions in Libidn. Your implementation was listed in the text of PR29 as  
+needing investigation, so I am following up on several implementations.
+
+The UTC has accepted the proposed fix to D2 as outlined in PR29, and a new  
+draft of UAX #15 has been issued.
+
+I have looked at Libidn 0.5.8 (today), and there may still be a possible  
+bug in NFKC.java and nfkc.c.
+
+------------------------------------------------------
+
+1. In NFKC.java, this line in canonicalOrdering():
+
+      if (i > 0 &amp;&amp; (last_cc == 0 || last_cc != cc)) {
+
+should perhaps be changed to:
+
+      if (i > 0 &amp;&amp; (last_cc == 0 || last_cc &lt; cc)) {
+
+but I'm not sure of the sense of this comparison.
+
+------------------------------------------------------
+
+2. In nfkc.c, function _g_utf8_normalize_wc() has this code:
+
+         if (i > 0 &amp;&amp;
+             (last_cc == 0 || last_cc != cc) &amp;&amp;
+             combine (wc_buffer[last_start], wc_buffer[i],
+                      &amp;wc_buffer[last_start]))
+           {
+
+This appears to have the same bug as the current Python implementation (in  
+Python 2.3.4). The code should be checking, as per new rule D2 UAX #15  
+update, that the next combining character is the same or HIGHER than the  
+current one. It now checks to see if it's non-zero and not equal.
+
+The above line(s) should perhaps be changed to:
+
+         if (i > 0 &amp;&amp;
+             (last_cc == 0 || last_cc &lt; cc) &amp;&amp;
+             combine (wc_buffer[last_start], wc_buffer[i],
+                      &amp;wc_buffer[last_start]))
+           {
+
+but I'm not sure of the sense of the comparison (&lt; or > or &lt;=?) here.
+
+In the text of PR29, I will be marking Libidn as "needs change" and adding  
+the version number that I checked. If any further change is made, please  
+let me know the release version, and I'll update again.
+
+Regards,
+       Rick McGowan
+</pre>
+
+<pre class="verbatim">From: Simon Josefsson &lt;jas@extundo.com>
+Subject: Re: Possible bug and status of PR 29 change(s)
+To: Rick McGowan &lt;rick@unicode.org>
+Cc: bug-libidn@gnu.org
+Date: Thu, 28 Oct 2004 09:47:47 +0200
+
+Rick McGowan &lt;rick@unicode.org> writes:
+
+> Hello. On behalf of the Unicode Consortium editorial committee, I would  
+> like to find out more information about the PR 29 fixes, if any, and  
+> functions in Libidn. Your implementation was listed in the text of PR29 as  
+> needing investigation, so I am following up on several implementations.
+>
+> The UTC has accepted the proposed fix to D2 as outlined in PR29, and a new  
+> draft of UAX #15 has been issued.
+>
+> I have looked at Libidn 0.5.8 (today), and there may still be a possible  
+> bug in NFKC.java and nfkc.c.
+
+Hello Rick.
+
+I believe the current behavior is intentional.  Libidn do not aim to
+implement latest-and-greatest NFKC, it aim to implement the NFKC
+functionality required for StringPrep and IDN.  As you may know,
+StringPrep/IDN reference Unicode 3.2.0, and explicitly says any later
+changes (which I consider PR29 as) do not apply.
+
+In fact, I believe that would I incorporate the changes suggested in
+PR29, I would in fact be violating the IDN specifications.
+
+Thanks for looking into the code and finding the place where the
+change could be made.  I'll see if I can mention this in the manual
+somewhere, for technically interested readers.
+
+Regards,
+Simon
+</pre>
+
+<div class="node">
+<a name="On-Label-Separators"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Copying-Information">Copying Information</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#PR29-discussion">PR29 discussion</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="appendix">Appendix B On Label Separators</h2>
+
+<p>Some strings contains characters whose NFKC normalized form contain
+the ASCII dot (0x2E, &ldquo;.&rdquo;).  Examples of these characters are U+2024
+(ONE DOT LEADER) and U+248C (DIGIT FIVE FULL STOP).  The strings have
+the interesting property that their IDNA ToASCII output will contain
+embedded dots.  For example:
+
+<pre class="example">     ToASCII (hi U+248C com) = hi5.com
+     ToASCII (r&auml;ksm&ouml;rg&aring;s U+2024 com) = xn--rksmrgs.com-l8as9u
+</pre>
+   <p>This demonstrate the two general cases: The first where the ASCII dot
+is part of an output that do not begin with the IDN prefix
+<code>xn--</code>.  The second example illustrate when the dot is part of
+IDN prefixed with <code>xn--</code>.
+
+   <p>The input strings are, from the DNS point of view, a single label. 
+The IDNA algorithm translate one label at a time.  Thus, the output is
+expected to be only one label.  What is important here is to make sure
+the DNS resolver receives the correct query.  The DNS protocol does
+not use the dot to delimit labels on the wire, rather it uses
+length-value pairs.  Thus the correct query would be for
+<code>{7}hi5.com</code> and <code>{22}xn--rksmrgs.com-l8as9u</code>
+respectively.
+
+   <p>Some implementations <a rel="footnote" href="#fn-1" name="fnd-1"><sup>1</sup></a> have decided that
+these inputs strings are potentially confusing for the user.  The
+string <code>hi U+248C com</code> looks like <code>hi5.com</code> on systems that
+support Unicode properly.  These implementations do not follow RFC
+3490.  They yield:
+
+<pre class="example">     ToASCII (hi U+248C com) = hi5.com
+     ToASCII (r&auml;ksm&ouml;rg&aring;s U+2024 com) = xn--rksmrgs-5wao1o.com
+</pre>
+   <p>The DNS query they perform are <code>{3}hi5{3}com</code> and
+<code>{18}xn--rksmrgs-5wao1o{3}com</code> respectively.  Arguably, this
+leads to a better user experience, and suggests that the IDNA
+specification is sub-optimal in this area.
+
+<h3 class="section">B.1 Recommended Workaround</h3>
+
+<p>It has been suggested to normalize the entire input string using NFKC
+before passing it to IDNA ToASCII.  You may use
+<code>stringprep_utf8_nfkc_normalize</code> or
+<code>stringprep_ucs4_nfkc_normalize</code>.  This appears to lead to
+similar behaviour as IE/Firefox, which would avoid the problem, but
+this needs to be confirmed.  Feel free to discuss the issue with us.
+
+   <p>Alternative workarounds are being considered.  Eventually Libidn may
+implement a new flag to the <code>idna_*</code> functions that implements a
+recommended way to work around this problem.
+
+<div class="node">
+<a name="Copying-Information"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Function-and-Variable-Index">Function and Variable Index</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#On-Label-Separators">On Label Separators</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="appendix">Appendix C Copying Information</h2>
+
+<ul class="menu">
+<li><a accesskey="1" href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>:    License for copying this manual. 
+<li><a accesskey="2" href="#GNU-LGPL">GNU LGPL</a>:                          License for copying the library. 
+<li><a accesskey="3" href="#GNU-GPL">GNU GPL</a>:                           License for copying the programs. 
+</ul>
+
+<div class="node">
+<a name="GNU-Free-Documentation-License"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#GNU-LGPL">GNU LGPL</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Copying-Information">Copying Information</a>
+
+</div>
+
+<h3 class="appendixsec">C.1 GNU Free Documentation License</h3>
+
+<p><a name="index-FDL_002c-GNU-Free-Documentation-License-126"></a>
+
+<!-- The GNU Free Documentation License. -->
+<div align="center">Version 1.3, 3 November 2008</div>
+
+<!-- This file is intended to be included within another document, -->
+<!-- hence no sectioning command or @node. -->
+<pre class="display">     Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+     <a href="http://fsf.org/">http://fsf.org/</a>
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+</pre>
+     <ol type=1 start=0>
+<li>PREAMBLE
+
+     <p>The purpose of this License is to make a manual, textbook, or other
+functional and useful document <dfn>free</dfn> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially. 
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+     <p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+     <p>We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+     <li>APPLICABILITY AND DEFINITIONS
+
+     <p>This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The &ldquo;Document&rdquo;, below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as &ldquo;you&rdquo;.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+     <p>A &ldquo;Modified Version&rdquo; of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+     <p>A &ldquo;Secondary Section&rdquo; is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+     <p>The &ldquo;Invariant Sections&rdquo; are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+     <p>The &ldquo;Cover Texts&rdquo; are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+     <p>A &ldquo;Transparent&rdquo; copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent. 
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
+
+     <p>Examples of suitable formats for Transparent copies include plain
+<span class="sc">ascii</span> without markup, Texinfo input format, LaTeX input
+format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
+<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
+PostScript or <acronym>PDF</acronym> designed for human modification.  Examples
+of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
+<acronym>JPG</acronym>.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <acronym>SGML</acronym> or
+<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
+not generally available, and the machine-generated <acronym>HTML</acronym>,
+PostScript or <acronym>PDF</acronym> produced by some word processors for
+output purposes only.
+
+     <p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, &ldquo;Title Page&rdquo; means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+     <p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
+of the Document to the public.
+
+     <p>A section &ldquo;Entitled XYZ&rdquo; means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.)  To &ldquo;Preserve the Title&rdquo;
+of such a section when you modify the Document means that it remains a
+section &ldquo;Entitled XYZ&rdquo; according to this definition.
+
+     <p>The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+     <li>VERBATIM COPYING
+
+     <p>You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+     <p>You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+     <li>COPYING IN QUANTITY
+
+     <p>If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition. 
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+     <p>If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+     <p>If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material. 
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+     <p>It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+     <li>MODIFICATIONS
+
+     <p>You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+          <ol type=A start=1>
+<li>Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+          <li>List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+          <li>State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+          <li>Preserve all the copyright notices of the Document.
+
+          <li>Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+          <li>Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+          <li>Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+          <li>Include an unaltered copy of this License.
+
+          <li>Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section Entitled &ldquo;History&rdquo; in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+          <li>Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the &ldquo;History&rdquo; section. 
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+          <li>For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+          <li>Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+
+          <li>Delete any section Entitled &ldquo;Endorsements&rdquo;.  Such a section
+may not be included in the Modified Version.
+
+          <li>Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
+to conflict in title with any Invariant Section.
+
+          <li>Preserve any Warranty Disclaimers.
+          </ol>
+
+     <p>If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice. 
+These titles must be distinct from any other section titles.
+
+     <p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
+nothing but endorsements of your Modified Version by various
+parties&mdash;for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+     <p>You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+     <p>The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+     <li>COMBINING DOCUMENTS
+
+     <p>You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+     <p>The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number. 
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+     <p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
+in the various original documents, forming one section Entitled
+&ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
+and any sections Entitled &ldquo;Dedications&rdquo;.  You must delete all
+sections Entitled &ldquo;Endorsements.&rdquo;
+
+     <li>COLLECTIONS OF DOCUMENTS
+
+     <p>You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+     <p>You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+     <li>AGGREGATION WITH INDEPENDENT WORKS
+
+     <p>A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit. 
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+     <p>If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form. 
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+     <li>TRANSLATION
+
+     <p>Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4. 
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+     <p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
+&ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+     <li>TERMINATION
+
+     <p>You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+     <p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+     <p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+     <p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+     <li>FUTURE REVISIONS OF THIS LICENSE
+
+     <p>The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
+
+     <p>Each version of the License is given a distinguishing version number. 
+If the Document specifies that a particular numbered version of this
+License &ldquo;or any later version&rdquo; applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+     <li>RELICENSING
+
+     <p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+&ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+     <p>&ldquo;CC-BY-SA&rdquo; means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+     <p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+     <p>An MMC is &ldquo;eligible for relicensing&rdquo; if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+     <p>The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+        </ol>
+
+<h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
+
+<p>To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+<pre class="smallexample">       Copyright (C)  <var>year</var>  <var>your name</var>.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.3
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+</pre>
+   <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the &ldquo;with<small class="dots">...</small>Texts.&rdquo; line with this:
+
+<pre class="smallexample">         with the Invariant Sections being <var>list their titles</var>, with
+         the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
+         being <var>list</var>.
+</pre>
+   <p>If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+   <p>If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+<!-- Local Variables: -->
+<!-- ispell-local-pdict: "ispell-dict" -->
+<!-- End: -->
+<div class="node">
+<a name="GNU-LGPL"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#GNU-GPL">GNU GPL</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Copying-Information">Copying Information</a>
+
+</div>
+
+<h3 class="appendixsec">C.2 GNU Lesser General Public License</h3>
+
+<p><a name="index-LGPL_002c-GNU-Lesser-General-Public-License-127"></a><a name="index-License_002c-GNU-LGPL-128"></a>
+
+<!-- The GNU Lesser General Public License. -->
+<div align="center">Version 2.1, February 1999</div>
+
+<!-- This file is intended to be included within another document, -->
+<!-- hence no sectioning command or @node. -->
+<pre class="display">     Copyright &copy; 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+     
+     [This is the first released version of the Lesser GPL.  It also counts
+     as the successor of the GNU Library Public License, version 2, hence the
+     version number 2.1.]
+</pre>
+   <h4 class="subheading">Preamble</h4>
+
+<p>The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software&mdash;to make sure the software is free for all its users.
+
+   <p>This license, the Lesser General Public License, applies to some
+specially designated software&mdash;typically libraries&mdash;of the Free
+Software Foundation and other authors who decide to use it.  You can use
+it too, but we suggest you first think carefully about whether this
+license or the ordinary General Public License is the better strategy to
+use in any particular case, based on the explanations below.
+
+   <p>When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of it
+in new free programs; and that you are informed that you can do these
+things.
+
+   <p>To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+   <p>For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+   <p>We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+   <p>To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+   <p>Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+   <p>Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+   <p>When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+   <p>We call this license the <dfn>Lesser</dfn> General Public License because it
+does <em>Less</em> to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+   <p>For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+   <p>In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+   <p>Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+   <p>The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+&ldquo;work based on the library&rdquo; and a &ldquo;work that uses the library&rdquo;.  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+<h4 class="subheading">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</h4>
+
+     <ol type=1 start=0>
+<li>This License Agreement applies to any software library or other program
+which contains a notice placed by the copyright holder or other
+authorized party saying it may be distributed under the terms of this
+Lesser General Public License (also called &ldquo;this License&rdquo;).  Each
+licensee is addressed as &ldquo;you&rdquo;.
+
+     <p>A &ldquo;library&rdquo; means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+     <p>The &ldquo;Library&rdquo;, below, refers to any such software library or work
+which has been distributed under these terms.  A &ldquo;work based on the
+Library&rdquo; means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term &ldquo;modification&rdquo;.)
+
+     <p>&ldquo;Source code&rdquo; for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+     <p>Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+     <li>You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+     <p>You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+     <li>You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+          <ol type=a start=1>
+<li>The modified work must itself be a software library.
+
+          <li>You must cause the files modified to carry prominent notices
+stating that you changed the files and the date of any change.
+
+          <li>You must cause the whole of the work to be licensed at no
+charge to all third parties under the terms of this License.
+
+          <li>If a facility in the modified Library refers to a function or a
+table of data to be supplied by an application program that uses
+the facility, other than as an argument passed when the facility
+is invoked, then you must make a good faith effort to ensure that,
+in the event an application does not supply such function or
+table, the facility still operates, and performs whatever part of
+its purpose remains meaningful.
+
+          <p>(For example, a function in a library to compute square roots has
+a purpose that is entirely well-defined independent of the
+application.  Therefore, Subsection 2d requires that any
+application-supplied function or table used by this function must
+be optional: if the application does not supply it, the square
+root function must still compute square roots.)
+          </ol>
+
+     <p>These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+     <p>Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+     <p>In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+     <li>You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+     <p>Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+     <p>This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+     <li>You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+     <p>If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+     <li>A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a &ldquo;work that uses the Library&rdquo;.  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+     <p>However, linking a &ldquo;work that uses the Library&rdquo; with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a &ldquo;work that uses the
+library&rdquo;.  The executable is therefore covered by this License. 
+Section 6 states terms for distribution of such executables.
+
+     <p>When a &ldquo;work that uses the Library&rdquo; uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not. 
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+     <p>If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+     <p>Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6. 
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+     <li>As an exception to the Sections above, you may also combine or
+link a &ldquo;work that uses the Library&rdquo; with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+     <p>You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+          <ol type=a start=1>
+<li>Accompany the work with the complete corresponding
+machine-readable source code for the Library including whatever
+changes were used in the work (which must be distributed under
+Sections 1 and 2 above); and, if the work is an executable linked
+with the Library, with the complete machine-readable &ldquo;work that
+uses the Library&rdquo;, as object code and/or source code, so that the
+user can modify the Library and then relink to produce a modified
+executable containing the modified Library.  (It is understood
+that the user who changes the contents of definitions files in the
+Library will not necessarily be able to recompile the application
+to use the modified definitions.)
+
+          <li>Use a suitable shared library mechanism for linking with the Library.  A
+suitable mechanism is one that (1) uses at run time a copy of the
+library already present on the user's computer system, rather than
+copying library functions into the executable, and (2) will operate
+properly with a modified version of the library, if the user installs
+one, as long as the modified version is interface-compatible with the
+version that the work was made with.
+
+          <li>Accompany the work with a written offer, valid for at
+least three years, to give the same user the materials
+specified in Subsection 6a, above, for a charge no more
+than the cost of performing this distribution.
+
+          <li>If distribution of the work is made by offering access to copy
+from a designated place, offer equivalent access to copy the above
+specified materials from the same place.
+
+          <li>Verify that the user has already received a copy of these
+materials or that you have already sent this user a copy.
+          </ol>
+
+     <p>For an executable, the required form of the &ldquo;work that uses the
+Library&rdquo; must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies the
+executable.
+
+     <p>It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+     <li>You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+          <ol type=a start=1>
+<li>Accompany the combined library with a copy of the same work
+based on the Library, uncombined with any other library
+facilities.  This must be distributed under the terms of the
+Sections above.
+
+          <li>Give prominent notice with the combined library of the fact
+that part of it is a work based on the Library, and explaining
+where to find the accompanying uncombined form of the same work.
+          </ol>
+
+     <li>You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+     <li>You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+     <li>Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein. 
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+     <li>If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+     <p>If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+     <p>It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+     <p>This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+     <li>If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+     <li>The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time. 
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+     <p>Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+&ldquo;any later version&rdquo;, you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+     <li>If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+     <li>BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY &ldquo;AS IS&rdquo; WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+     <li>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+     </ol>
+
+<h4 class="subheading">How to Apply These Terms to Your New Libraries</h4>
+
+<p>If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+   <p>To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+&ldquo;copyright&rdquo; line and a pointer to where the full notice is found.
+
+<pre class="smallexample">     <var>one line to give the library's name and an idea of what it does.</var>
+     Copyright (C) <var>year</var>  <var>name of author</var>
+     
+     This library is free software; you can redistribute it and/or modify it
+     under the terms of the GNU Lesser General Public License as published by
+     the Free Software Foundation; either version 2.1 of the License, or (at
+     your option) any later version.
+     
+     This library is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Lesser General Public License for more details.
+     
+     You should have received a copy of the GNU Lesser General Public
+     License along with this library; if not, write to the Free Software
+     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+     USA.
+</pre>
+   <p>Also add information on how to contact you by electronic and paper mail.
+
+   <p>You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a &ldquo;copyright disclaimer&rdquo; for the library, if
+necessary.  Here is a sample; alter the names:
+
+<pre class="smallexample">     Yoyodyne, Inc., hereby disclaims all copyright interest in the library
+     `Frob' (a library for tweaking knobs) written by James Random Hacker.
+     
+     <var>signature of Ty Coon</var>, 1 April 1990
+     Ty Coon, President of Vice
+</pre>
+   <p>That's all there is to it!
+
+<div class="node">
+<a name="GNU-GPL"></a>
+<p><hr>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#GNU-LGPL">GNU LGPL</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Copying-Information">Copying Information</a>
+
+</div>
+
+<h3 class="appendixsec">C.3 GNU General Public License</h3>
+
+<p><a name="index-GPL_002c-GNU-General-Public-License-129"></a><a name="index-License_002c-GNU-GPL-130"></a>
+
+<!-- The GNU General Public License. -->
+<div align="center">Version 3, 29 June 2007</div>
+
+<!-- This file is intended to be included within another document, -->
+<!-- hence no sectioning command or @node. -->
+<pre class="display">     Copyright &copy; 2007 Free Software Foundation, Inc. <a href="http://fsf.org/">http://fsf.org/</a>
+     
+     Everyone is permitted to copy and distribute verbatim copies of this
+     license document, but changing it is not allowed.
+</pre>
+   <h3 class="heading">Preamble</h3>
+
+<p>The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+   <p>The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom
+to share and change all versions of a program&mdash;to make sure it remains
+free software for all its users.  We, the Free Software Foundation,
+use the GNU General Public License for most of our software; it
+applies also to any other work released this way by its authors.  You
+can apply it to your programs, too.
+
+   <p>When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+   <p>To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you
+have certain responsibilities if you distribute copies of the
+software, or if you modify it: responsibilities to respect the freedom
+of others.
+
+   <p>For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too,
+receive or can get the source code.  And you must show them these
+terms so they know their rights.
+
+   <p>Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+   <p>For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+   <p>Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the
+manufacturer can do so.  This is fundamentally incompatible with the
+aim of protecting users' freedom to change the software.  The
+systematic pattern of such abuse occurs in the area of products for
+individuals to use, which is precisely where it is most unacceptable. 
+Therefore, we have designed this version of the GPL to prohibit the
+practice for those products.  If such problems arise substantially in
+other domains, we stand ready to extend this provision to those
+domains in future versions of the GPL, as needed to protect the
+freedom of users.
+
+   <p>Finally, every program is threatened constantly by software patents. 
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish
+to avoid the special danger that patents applied to a free program
+could make it effectively proprietary.  To prevent this, the GPL
+assures that patents cannot be used to render the program non-free.
+
+   <p>The precise terms and conditions for copying, distribution and
+modification follow.
+
+<h3 class="heading">TERMS AND CONDITIONS</h3>
+
+     <ol type=1 start=0>
+<li>Definitions.
+
+     <p>&ldquo;This License&rdquo; refers to version 3 of the GNU General Public License.
+
+     <p>&ldquo;Copyright&rdquo; also means copyright-like laws that apply to other kinds
+of works, such as semiconductor masks.
+
+     <p>&ldquo;The Program&rdquo; refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as &ldquo;you&rdquo;.  &ldquo;Licensees&rdquo; and
+&ldquo;recipients&rdquo; may be individuals or organizations.
+
+     <p>To &ldquo;modify&rdquo; a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of
+an exact copy.  The resulting work is called a &ldquo;modified version&rdquo; of
+the earlier work or a work &ldquo;based on&rdquo; the earlier work.
+
+     <p>A &ldquo;covered work&rdquo; means either the unmodified Program or a work based
+on the Program.
+
+     <p>To &ldquo;propagate&rdquo; a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+     <p>To &ldquo;convey&rdquo; a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user
+through a computer network, with no transfer of a copy, is not
+conveying.
+
+     <p>An interactive user interface displays &ldquo;Appropriate Legal Notices&rdquo; to
+the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+     <li>Source Code.
+
+     <p>The &ldquo;source code&rdquo; for a work means the preferred form of the work for
+making modifications to it.  &ldquo;Object code&rdquo; means any non-source form
+of a work.
+
+     <p>A &ldquo;Standard Interface&rdquo; means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+     <p>The &ldquo;System Libraries&rdquo; of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+&ldquo;Major Component&rdquo;, in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+     <p>The &ldquo;Corresponding Source&rdquo; for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+     <p>The Corresponding Source need not include anything that users can
+regenerate automatically from other parts of the Corresponding Source.
+
+     <p>The Corresponding Source for a work in source code form is that same
+work.
+
+     <li>Basic Permissions.
+
+     <p>All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+     <p>You may make, run and propagate covered works that you do not convey,
+without conditions so long as your license otherwise remains in force. 
+You may convey covered works to others for the sole purpose of having
+them make modifications exclusively for you, or provide you with
+facilities for running those works, provided that you comply with the
+terms of this License in conveying all material for which you do not
+control copyright.  Those thus making or running the covered works for
+you must do so exclusively on your behalf, under your direction and
+control, on terms that prohibit them from making any copies of your
+copyrighted material outside their relationship with you.
+
+     <p>Conveying under any other circumstances is permitted solely under the
+conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+     <li>Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+     <p>No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+     <p>When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such
+circumvention is effected by exercising rights under this License with
+respect to the covered work, and you disclaim any intention to limit
+operation or modification of the work as a means of enforcing, against
+the work's users, your or third parties' legal rights to forbid
+circumvention of technological measures.
+
+     <li>Conveying Verbatim Copies.
+
+     <p>You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+     <p>You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+     <li>Conveying Modified Source Versions.
+
+     <p>You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these
+conditions:
+
+          <ol type=a start=1>
+<li>The work must carry prominent notices stating that you modified it,
+and giving a relevant date.
+
+          <li>The work must carry prominent notices stating that it is released
+under this License and any conditions added under section 7.  This
+requirement modifies the requirement in section 4 to &ldquo;keep intact all
+notices&rdquo;.
+
+          <li>You must license the entire work, as a whole, under this License to
+anyone who comes into possession of a copy.  This License will
+therefore apply, along with any applicable section 7 additional terms,
+to the whole of the work, and all its parts, regardless of how they
+are packaged.  This License gives no permission to license the work in
+any other way, but it does not invalidate such permission if you have
+separately received it.
+
+          <li>If the work has interactive user interfaces, each must display
+Appropriate Legal Notices; however, if the Program has interactive
+interfaces that do not display Appropriate Legal Notices, your work
+need not make them do so.
+          </ol>
+
+     <p>A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+&ldquo;aggregate&rdquo; if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+     <li>Conveying Non-Source Forms.
+
+     <p>You may convey a covered work in object code form under the terms of
+sections 4 and 5, provided that you also convey the machine-readable
+Corresponding Source under the terms of this License, in one of these
+ways:
+
+          <ol type=a start=1>
+<li>Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by the
+Corresponding Source fixed on a durable physical medium customarily
+used for software interchange.
+
+          <li>Convey the object code in, or embodied in, a physical product
+(including a physical distribution medium), accompanied by a written
+offer, valid for at least three years and valid for as long as you
+offer spare parts or customer support for that product model, to give
+anyone who possesses the object code either (1) a copy of the
+Corresponding Source for all the software in the product that is
+covered by this License, on a durable physical medium customarily used
+for software interchange, for a price no more than your reasonable
+cost of physically performing this conveying of source, or (2) access
+to copy the Corresponding Source from a network server at no charge.
+
+          <li>Convey individual copies of the object code with a copy of the written
+offer to provide the Corresponding Source.  This alternative is
+allowed only occasionally and noncommercially, and only if you
+received the object code with such an offer, in accord with subsection
+6b.
+
+          <li>Convey the object code by offering access from a designated place
+(gratis or for a charge), and offer equivalent access to the
+Corresponding Source in the same way through the same place at no
+further charge.  You need not require recipients to copy the
+Corresponding Source along with the object code.  If the place to copy
+the object code is a network server, the Corresponding Source may be
+on a different server (operated by you or a third party) that supports
+equivalent copying facilities, provided you maintain clear directions
+next to the object code saying where to find the Corresponding Source. 
+Regardless of what server hosts the Corresponding Source, you remain
+obligated to ensure that it is available for as long as needed to
+satisfy these requirements.
+
+          <li>Convey the object code using peer-to-peer transmission, provided you
+inform other peers where the object code and Corresponding Source of
+the work are being offered to the general public at no charge under
+subsection 6d.
+
+          </ol>
+
+     <p>A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+     <p>A &ldquo;User Product&rdquo; is either (1) a &ldquo;consumer product&rdquo;, which means any
+tangible personal property which is normally used for personal,
+family, or household purposes, or (2) anything designed or sold for
+incorporation into a dwelling.  In determining whether a product is a
+consumer product, doubtful cases shall be resolved in favor of
+coverage.  For a particular product received by a particular user,
+&ldquo;normally used&rdquo; refers to a typical or common use of that class of
+product, regardless of the status of the particular user or of the way
+in which the particular user actually uses, or expects or is expected
+to use, the product.  A product is a consumer product regardless of
+whether the product has substantial commercial, industrial or
+non-consumer uses, unless such uses represent the only significant
+mode of use of the product.
+
+     <p>&ldquo;Installation Information&rdquo; for a User Product means any methods,
+procedures, authorization keys, or other information required to
+install and execute modified versions of a covered work in that User
+Product from a modified version of its Corresponding Source.  The
+information must suffice to ensure that the continued functioning of
+the modified object code is in no case prevented or interfered with
+solely because modification has been made.
+
+     <p>If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+     <p>The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or
+updates for a work that has been modified or installed by the
+recipient, or for the User Product in which it has been modified or
+installed.  Access to a network may be denied when the modification
+itself materially and adversely affects the operation of the network
+or violates the rules and protocols for communication across the
+network.
+
+     <p>Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+     <li>Additional Terms.
+
+     <p>&ldquo;Additional permissions&rdquo; are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions. 
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+     <p>When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+     <p>Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders
+of that material) supplement the terms of this License with terms:
+
+          <ol type=a start=1>
+<li>Disclaiming warranty or limiting liability differently from the terms
+of sections 15 and 16 of this License; or
+
+          <li>Requiring preservation of specified reasonable legal notices or author
+attributions in that material or in the Appropriate Legal Notices
+displayed by works containing it; or
+
+          <li>Prohibiting misrepresentation of the origin of that material, or
+requiring that modified versions of such material be marked in
+reasonable ways as different from the original version; or
+
+          <li>Limiting the use for publicity purposes of names of licensors or
+authors of the material; or
+
+          <li>Declining to grant rights under trademark law for use of some trade
+names, trademarks, or service marks; or
+
+          <li>Requiring indemnification of licensors and authors of that material by
+anyone who conveys the material (or modified versions of it) with
+contractual assumptions of liability to the recipient, for any
+liability that these contractual assumptions directly impose on those
+licensors and authors.
+          </ol>
+
+     <p>All other non-permissive additional terms are considered &ldquo;further
+restrictions&rdquo; within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+     <p>If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+     <p>Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions; the
+above requirements apply either way.
+
+     <li>Termination.
+
+     <p>You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+     <p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+     <p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+     <p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+     <li>Acceptance Not Required for Having Copies.
+
+     <p>You are not required to accept this License in order to receive or run
+a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+     <li>Automatic Licensing of Downstream Recipients.
+
+     <p>Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+     <p>An &ldquo;entity transaction&rdquo; is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+     <p>You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+     <li>Patents.
+
+     <p>A &ldquo;contributor&rdquo; is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's &ldquo;contributor version&rdquo;.
+
+     <p>A contributor's &ldquo;essential patent claims&rdquo; are all patent claims owned
+or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, &ldquo;control&rdquo; includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+     <p>Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+     <p>In the following three paragraphs, a &ldquo;patent license&rdquo; is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To &ldquo;grant&rdquo; such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+     <p>If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  &ldquo;Knowingly relying&rdquo; means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+     <p>If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+     <p>A patent license is &ldquo;discriminatory&rdquo; if it does not include within the
+scope of its coverage, prohibits the exercise of, or is conditioned on
+the non-exercise of one or more of the rights that are specifically
+granted under this License.  You may not convey a covered work if you
+are a party to an arrangement with a third party that is in the
+business of distributing software, under which you make payment to the
+third party based on the extent of your activity of conveying the
+work, and under which the third party grants, to any of the parties
+who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by
+you (or copies made from those copies), or (b) primarily for and in
+connection with specific products or compilations that contain the
+covered work, unless you entered into that arrangement, or that patent
+license was granted, prior to 28 March 2007.
+
+     <p>Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+     <li>No Surrender of Others' Freedom.
+
+     <p>If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey
+a covered work so as to satisfy simultaneously your obligations under
+this License and any other pertinent obligations, then as a
+consequence you may not convey it at all.  For example, if you agree
+to terms that obligate you to collect a royalty for further conveying
+from those to whom you convey the Program, the only way you could
+satisfy both those terms and this License would be to refrain entirely
+from conveying the Program.
+
+     <li>Use with the GNU Affero General Public License.
+
+     <p>Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+     <li>Revised Versions of this License.
+
+     <p>The Free Software Foundation may publish revised and/or new versions
+of the GNU General Public License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+     <p>Each version is given a distinguishing version number.  If the Program
+specifies that a certain numbered version of the GNU General Public
+License &ldquo;or any later version&rdquo; applies to it, you have the option of
+following the terms and conditions either of that numbered version or
+of any later version published by the Free Software Foundation.  If
+the Program does not specify a version number of the GNU General
+Public License, you may choose any version ever published by the Free
+Software Foundation.
+
+     <p>If the Program specifies that a proxy can decide which future versions
+of the GNU General Public License can be used, that proxy's public
+statement of acceptance of a version permanently authorizes you to
+choose that version for the Program.
+
+     <p>Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+     <li>Disclaimer of Warranty.
+
+     <p>THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM &ldquo;AS IS&rdquo; WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+     <li>Limitation of Liability.
+
+     <p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
+CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
+NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
+LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
+TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+     <li>Interpretation of Sections 15 and 16.
+
+     <p>If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+     </ol>
+
+<h3 class="heading">END OF TERMS AND CONDITIONS</h3>
+
+<h3 class="heading">How to Apply These Terms to Your New Programs</h3>
+
+<p>If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+   <p>To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the &ldquo;copyright&rdquo; line and a pointer to where the full notice is found.
+
+<pre class="smallexample">     <var>one line to give the program's name and a brief idea of what it does.</var>
+     Copyright (C) <var>year</var> <var>name of author</var>
+     
+     This program is free software: you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published by
+     the Free Software Foundation, either version 3 of the License, or (at
+     your option) any later version.
+     
+     This program is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+     
+     You should have received a copy of the GNU General Public License
+     along with this program.  If not, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.
+</pre>
+   <p>Also add information on how to contact you by electronic and paper mail.
+
+   <p>If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+<pre class="smallexample">     <var>program</var> Copyright (C) <var>year</var> <var>name of author</var>
+     This program comes with ABSOLUTELY NO WARRANTY; for details type &lsquo;<samp><span class="samp">show w</span></samp>&rsquo;.
+     This is free software, and you are welcome to redistribute it
+     under certain conditions; type &lsquo;<samp><span class="samp">show c</span></samp>&rsquo; for details.
+</pre>
+   <p>The hypothetical commands &lsquo;<samp><span class="samp">show w</span></samp>&rsquo; and &lsquo;<samp><span class="samp">show c</span></samp>&rsquo; should show
+the appropriate parts of the General Public License.  Of course, your
+program's commands might be different; for a GUI interface, you would
+use an &ldquo;about box&rdquo;.
+
+   <p>You should also get your employer (if you work as a programmer) or school,
+if any, to sign a &ldquo;copyright disclaimer&rdquo; for the program, if necessary. 
+For more information on this, and how to apply and follow the GNU GPL, see
+<a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.
+
+   <p>The GNU General Public License does not permit incorporating your
+program into proprietary programs.  If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library.  If this is what you want to do, use
+the GNU Lesser General Public License instead of this License.  But
+first, please read <a href="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</a>.
+
+<div class="node">
+<a name="Function-and-Variable-Index"></a>
+<p><hr>
+Next:&nbsp;<a rel="next" accesskey="n" href="#Concept-Index">Concept Index</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Copying-Information">Copying Information</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="unnumbered">Function and Variable Index</h2>
+
+<ul class="index-fn" compact>
+<li><a href="#index-idn_005ffree-46"><code>idn_free</code></a>: <a href="#Memory-handling-under-Windows">Memory handling under Windows</a></li>
+<li><a href="#index-idna_002dto_002dascii-124"><code>idna-to-ascii</code></a>: <a href="#Emacs-API">Emacs API</a></li>
+<li><a href="#index-idna_002dto_002dunicode-125"><code>idna-to-unicode</code></a>: <a href="#Emacs-API">Emacs API</a></li>
+<li><a href="#index-idna_005fstrerror-91"><code>idna_strerror</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005fascii_005f4i-81"><code>idna_to_ascii_4i</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005fascii_005f4z-83"><code>idna_to_ascii_4z</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005fascii_005f8z-84"><code>idna_to_ascii_8z</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005fascii_005flz-85"><code>idna_to_ascii_lz</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005funicode_005f44i-82"><code>idna_to_unicode_44i</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005funicode_005f4z4z-86"><code>idna_to_unicode_4z4z</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005funicode_005f8z4z-87"><code>idna_to_unicode_8z4z</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005funicode_005f8z8z-88"><code>idna_to_unicode_8z8z</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005funicode_005f8zlz-89"><code>idna_to_unicode_8zlz</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-idna_005fto_005funicode_005flzlz-90"><code>idna_to_unicode_lzlz</code></a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-pr29_005f4-106"><code>pr29_4</code></a>: <a href="#PR29-Functions">PR29 Functions</a></li>
+<li><a href="#index-pr29_005f4z-107"><code>pr29_4z</code></a>: <a href="#PR29-Functions">PR29 Functions</a></li>
+<li><a href="#index-pr29_005f8z-108"><code>pr29_8z</code></a>: <a href="#PR29-Functions">PR29 Functions</a></li>
+<li><a href="#index-pr29_005fstrerror-109"><code>pr29_strerror</code></a>: <a href="#PR29-Functions">PR29 Functions</a></li>
+<li><a href="#index-punycode_002ddecode-119"><code>punycode-decode</code></a>: <a href="#Emacs-API">Emacs API</a></li>
+<li><a href="#index-punycode_002dencode-118"><code>punycode-encode</code></a>: <a href="#Emacs-API">Emacs API</a></li>
+<li><a href="#index-punycode_005fdecode-75"><code>punycode_decode</code></a>: <a href="#Punycode-Functions">Punycode Functions</a></li>
+<li><a href="#index-punycode_005fencode-74"><code>punycode_encode</code></a>: <a href="#Punycode-Functions">Punycode Functions</a></li>
+<li><a href="#index-punycode_005fstrerror-76"><code>punycode_strerror</code></a>: <a href="#Punycode-Functions">Punycode Functions</a></li>
+<li><a href="#index-stringprep-64"><code>stringprep</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-stringprep_005f4i-62"><code>stringprep_4i</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-stringprep_005f4zi-63"><code>stringprep_4zi</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-stringprep_005fcheck_005fversion-38"><code>stringprep_check_version</code></a>: <a href="#Version-Check">Version Check</a></li>
+<li><a href="#index-stringprep_005fconvert-55"><code>stringprep_convert</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005fiscsi-68"><code>stringprep_iscsi</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-stringprep_005flocale_005fcharset-54"><code>stringprep_locale_charset</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005flocale_005fto_005futf8-56"><code>stringprep_locale_to_utf8</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005fnameprep_005fno_005funassigned-67"><code>stringprep_nameprep_no_unassigned</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-stringprep_005fplain-69"><code>stringprep_plain</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-stringprep_005fprofile-65"><code>stringprep_profile</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-stringprep_005fstrerror-66"><code>stringprep_strerror</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-stringprep_005fucs4_005fnfkc_005fnormalize-52"><code>stringprep_ucs4_nfkc_normalize</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005fucs4_005fto_005futf8-50"><code>stringprep_ucs4_to_utf8</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005funichar_005fto_005futf8-48"><code>stringprep_unichar_to_utf8</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005futf8_005fnfkc_005fnormalize-53"><code>stringprep_utf8_nfkc_normalize</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005futf8_005fto_005flocale-57"><code>stringprep_utf8_to_locale</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005futf8_005fto_005fucs4-51"><code>stringprep_utf8_to_ucs4</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005futf8_005fto_005funichar-49"><code>stringprep_utf8_to_unichar</code></a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-stringprep_005fxmpp_005fnodeprep-70"><code>stringprep_xmpp_nodeprep</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-stringprep_005fxmpp_005fresourceprep-71"><code>stringprep_xmpp_resourceprep</code></a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-tld_005fcheck_005f4-100"><code>tld_check_4</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fcheck_005f4t-93"><code>tld_check_4t</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fcheck_005f4tz-94"><code>tld_check_4tz</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fcheck_005f4z-101"><code>tld_check_4z</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fcheck_005f8z-102"><code>tld_check_8z</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fcheck_005flz-103"><code>tld_check_lz</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fdefault_005ftable-99"><code>tld_default_table</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fget_005f4-95"><code>tld_get_4</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fget_005f4z-96"><code>tld_get_4z</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fget_005ftable-98"><code>tld_get_table</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fget_005fz-97"><code>tld_get_z</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-tld_005fstrerror-104"><code>tld_strerror</code></a>: <a href="#TLD-Functions">TLD Functions</a></li>
+   </ul><div class="node">
+<a name="Concept-Index"></a>
+<p><hr>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="#Function-and-Variable-Index">Function and Variable Index</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
+
+</div>
+
+<h2 class="unnumbered">Concept Index</h2>
+
+
+
+<ul class="index-cp" compact>
+<li><a href="#index-AIX-15">AIX</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-ARM-29">ARM</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-Autoconf-tests-40">Autoconf tests</a>: <a href="#Autoconf-tests">Autoconf tests</a></li>
+<li><a href="#index-command-line-113">command line</a>: <a href="#Invoking-idn">Invoking idn</a></li>
+<li><a href="#index-Compiling-your-application-39">Compiling your application</a>: <a href="#Building-the-source">Building the source</a></li>
+<li><a href="#index-Configure-tests-41">Configure tests</a>: <a href="#Autoconf-tests">Autoconf tests</a></li>
+<li><a href="#index-Contributing-36">Contributing</a>: <a href="#Contributing">Contributing</a></li>
+<li><a href="#index-de_002dallocation-44">de-allocation</a>: <a href="#Memory-handling-under-Windows">Memory handling under Windows</a></li>
+<li><a href="#index-Debian-1">Debian</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-Download-34">Download</a>: <a href="#Downloading-and-Installing">Downloading and Installing</a></li>
+<li><a href="#index-Examples-110">Examples</a>: <a href="#Examples">Examples</a></li>
+<li><a href="#index-FDL_002c-GNU-Free-Documentation-License-126">FDL, GNU Free Documentation License</a>: <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a></li>
+<li><a href="#index-free-42">free</a>: <a href="#Memory-handling-under-Windows">Memory handling under Windows</a></li>
+<li><a href="#index-FreeBSD-23">FreeBSD</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-GPL_002c-GNU-General-Public-License-129">GPL, GNU General Public License</a>: <a href="#GNU-GPL">GNU GPL</a></li>
+<li><a href="#index-Hacking-37">Hacking</a>: <a href="#Contributing">Contributing</a></li>
+<li><a href="#index-heap-memory-45">heap memory</a>: <a href="#Memory-handling-under-Windows">Memory handling under Windows</a></li>
+<li><a href="#index-HP_002dUX-17">HP-UX</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-idn-111"><code>idn</code></a>: <a href="#Invoking-idn">Invoking idn</a></li>
+<li><a href="#index-IDNA-Functions-77">IDNA Functions</a>: <a href="#IDNA-Functions">IDNA Functions</a></li>
+<li><a href="#index-Installation-33">Installation</a>: <a href="#Downloading-and-Installing">Downloading and Installing</a></li>
+<li><a href="#index-invoking-_0040command_007bidn_007d-112">invoking <samp><span class="command">idn</span></samp></a>: <a href="#Invoking-idn">Invoking idn</a></li>
+<li><a href="#index-IRIX-14">IRIX</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-LGPL_002c-GNU-Lesser-General-Public-License-127">LGPL, GNU Lesser General Public License</a>: <a href="#GNU-LGPL">GNU LGPL</a></li>
+<li><a href="#index-License_002c-GNU-GPL-130">License, GNU GPL</a>: <a href="#GNU-GPL">GNU GPL</a></li>
+<li><a href="#index-License_002c-GNU-LGPL-128">License, GNU LGPL</a>: <a href="#GNU-LGPL">GNU LGPL</a></li>
+<li><a href="#index-MacOS-X-24">MacOS X</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-Mandrake-13">Mandrake</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-Memory-handling-43">Memory handling</a>: <a href="#Memory-handling-under-Windows">Memory handling under Windows</a></li>
+<li><a href="#index-Microsoft-31">Microsoft</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-mingw32-32">mingw32</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-Motorola-Coldfire-26">Motorola Coldfire</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-NetBSD-21">NetBSD</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-OpenBSD-22">OpenBSD</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-OpenPower-720-8">OpenPower 720</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-PR29-Functions-105">PR29 Functions</a>: <a href="#PR29-Functions">PR29 Functions</a></li>
+<li><a href="#index-Punycode-Functions-72">Punycode Functions</a>: <a href="#Punycode-Functions">Punycode Functions</a></li>
+<li><a href="#index-RedHat-9">RedHat</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-RedHat-Advanced-Server-11">RedHat Advanced Server</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-Reporting-Bugs-35">Reporting Bugs</a>: <a href="#Bug-Reports">Bug Reports</a></li>
+<li><a href="#index-Solaris-18">Solaris</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-Stringprep-Functions-58">Stringprep Functions</a>: <a href="#Stringprep-Functions">Stringprep Functions</a></li>
+<li><a href="#index-SuSE-4">SuSE</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-SuSE-Linux-5">SuSE Linux</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-TLD-Functions-92">TLD Functions</a>: <a href="#TLD-Functions">TLD Functions</a></li>
+<li><a href="#index-Tru64-3">Tru64</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-uClibc-28">uClibc</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-uClinux-27">uClinux</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+<li><a href="#index-Utility-Functions-47">Utility Functions</a>: <a href="#Utility-Functions">Utility Functions</a></li>
+<li><a href="#index-Windows-16">Windows</a>: <a href="#Supported-Platforms">Supported Platforms</a></li>
+   </ul><div class="footnote">
+<hr>
+<a name="texinfo-footnotes-in-document"></a><h4>Footnotes</h4><p class="footnote"><small>[<a name="fn-1" href="#fnd-1">1</a>]</small> Notably Microsoft's Internet Explorer
+and Mozilla's Firefox, but not Apple's Safari.</p>
+
+   <hr></div>
+
+</body></html>
+
+<!--
+\1f
+Local Variables:
+coding: utf-8
+End:
+
+-->
diff --git a/doc/libidn.info b/doc/libidn.info
new file mode 100644 (file)
index 0000000..99f858d
--- /dev/null
@@ -0,0 +1,5638 @@
+This is libidn.info, produced by makeinfo version 4.13 from libidn.texi.
+
+This manual is last updated 28 May 2009 for version 1.15 of GNU Libidn.
+
+   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon
+Josefsson.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, no Front-Cover Texts, and
+     no Back-Cover Texts.  A copy of the license is included in the
+     section entitled "GNU Free Documentation License".
+
+INFO-DIR-SECTION Software libraries
+START-INFO-DIR-ENTRY
+* libidn: (libidn).    Internationalized string processing library.
+END-INFO-DIR-ENTRY
+
+INFO-DIR-SECTION Localization
+START-INFO-DIR-ENTRY
+* idn: (libidn)Invoking idn.   Internationalized Domain Name (IDN) string conversion.
+END-INFO-DIR-ENTRY
+
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* IDN Library: (libidn)Emacs API.      Emacs API for IDN functions.
+END-INFO-DIR-ENTRY
+
+\1f
+File: libidn.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+GNU Libidn
+**********
+
+This manual is last updated 28 May 2009 for version 1.15 of GNU Libidn.
+
+   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon
+Josefsson.
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, no Front-Cover Texts, and
+     no Back-Cover Texts.  A copy of the license is included in the
+     section entitled "GNU Free Documentation License".
+
+* Menu:
+
+* Introduction::               How to use this manual.
+* Preparation::                        What you should do before using the library.
+* Utility Functions::          Unicode transformation utility functions.
+* Stringprep Functions::       Stringprep functions.
+* Punycode Functions::         Punycode functions.
+* IDNA Functions::             IDNA functions.
+* TLD Functions::              TLD functions.
+* PR29 Functions::             Detect strings non-idempotent under NFKC.
+* Examples::                    Demonstrate how to use the library.
+* Invoking idn::               Command line interface to the library.
+* Emacs API::                   Emacs Lisp API for Libidn.
+* Java API::                    Notes on the Java port of Libidn.
+* C# API::                      Notes on the C# port of Libidn.
+* Acknowledgements::            Whom to blame.
+* History::                     Rough outline of development history.
+
+Appendices
+
+* PR29 discussion::             Implementation aspects of the PR29 flaw.
+* On Label Separators::         Discussions of a flaw in the IDNA spec.
+* Copying Information::                License text covering the Libidn library.
+
+Indices
+
+* Function and Variable Index::
+* Concept Index::
+
+\1f
+File: libidn.info,  Node: Introduction,  Next: Preparation,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+GNU Libidn is a fully documented implementation of the Stringprep,
+Punycode and IDNA specifications.  Libidn's purpose is to encode and
+decode internationalized domain names.  The native C, C# and Java
+libraries are available under the GNU Lesser General Public License
+version 2.1 or later (*note GNU LGPL::).
+
+   The library contains a generic Stringprep implementation.  Profiles
+for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included.  Punycode
+and ASCII Compatible Encoding (ACE) via IDNA are supported.  A
+mechanism to define Top-Level Domain (TLD) specific validation tables,
+and to compare strings against those tables, is included.  Default
+tables for some TLDs are also included.
+
+   The Stringprep API consists of two main functions, one for converting
+data from the system's native representation into UTF-8, and one
+function to perform the Stringprep processing.  Adding a new Stringprep
+profile for your application within the API is straightforward.  The
+Punycode API consists of one encoding function and one decoding
+function.  The IDNA API consists of the ToASCII and ToUnicode
+functions, as well as an high-level interface for converting entire
+domain names to and from the ACE encoded form.  The TLD API consists of
+one set of functions to extract the TLD name from a domain string, one
+set of functions to locate the proper TLD table to use based on the TLD
+name, and core functions to validate a string against a TLD table, and
+some utility wrappers to perform all the steps in one call.
+
+   The library is used by, e.g., GNU SASL and Shishi to process user
+names and passwords.  Libidn can be built into GNU Libc to enable a new
+system-wide getaddrinfo flag for IDN processing.
+
+   Libidn is developed for the GNU/Linux system, but runs on over 20
+Unix platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.
+The library is written in C and (parts of) the API is also accessible
+from C++, Emacs Lisp, Python and Java.  A native Java and C# port is
+included.
+
+   Also included is a command line tool, several self tests, code
+examples, and more, all licensed under the GNU General Public License
+version 3.0 or later (*note GNU GPL::).
+
+* Menu:
+
+* Getting Started::
+* Features::
+* Library Overview::
+* Supported Platforms::
+* Getting help::
+* Commercial Support::
+* Downloading and Installing::
+* Bug Reports::
+* Contributing::
+
+\1f
+File: libidn.info,  Node: Getting Started,  Next: Features,  Up: Introduction
+
+1.1 Getting Started
+===================
+
+This manual documents the library programming interface.  All functions
+and data types provided by the library are explained.  Included are
+also examples, and documentation for the command line tool `idn' that
+provide a quick interface to the library.  The Emacs Lisp bindings for
+the library is also discussed.
+
+   The reader is assumed to possess basic familiarity with
+internationalization concepts and network programming in C or C++.
+
+   This manual can be used in several ways.  If read from the beginning
+to the end, it gives a good introduction into the library and how it
+can be used in an application.  Forward references are included where
+necessary.  Later on, the manual can be used as a reference manual to
+get just the information needed about any particular interface of the
+library.  Experienced programmers might want to start looking at the
+examples at the end of the manual (*note Examples::), and then only
+read up those parts of the interface which are unclear.
+
+\1f
+File: libidn.info,  Node: Features,  Next: Library Overview,  Prev: Getting Started,  Up: Introduction
+
+1.2 Features
+============
+
+This library might have a couple of advantages over other libraries
+doing a similar job.
+
+It's Free Software
+     Anybody can use, modify, and redistribute it under the terms of the
+     GNU Lesser General Public License version 2.1 or later (*note GNU
+     LGPL::).
+
+It's thread-safe
+     No global state is kept in the library.  All functions are
+     reentrant.
+
+It's portable
+     The code is intended to be written in pure ANSI C89.  It has been
+     tested on many Unix like operating systems, and Windows.
+
+It's modularized
+     The library is composed of several modules, and the only
+     interaction between modules is through each modules' public API.
+     If you only need one piece of functionality, it is possible to
+     take the files you need and incorporate them into your own project.
+
+It's not bloated
+     The design of the library is based on the smallest API necessary to
+     implement the basic functionality.  It has been carefully extended
+     with a small number of high-level wrappers to make it comfortable
+     to use the library.  However, it does not implement additional
+     functionality just for the sake of completeness.
+
+It's documented
+     Sadly, not all software comes with documentation these days.  This
+     one does.
+
+
+\1f
+File: libidn.info,  Node: Library Overview,  Next: Supported Platforms,  Prev: Features,  Up: Introduction
+
+1.3 Library Overview
+====================
+
+The following illustration show the components that make up Libidn, and
+how your application relates to the library.  In the illustration,
+various components are shown as boxes.  You see the generic StringPrep
+component, the various StringPrep profiles including Nameprep, the
+Punycode component, the IDNA component, and the TLD component.  The
+arrows indicate aggregation, e.g., IDNA uses Punycode and Nameprep, and
+in turn Nameprep uses the generic StringPrep interface.  The interfaces
+to all components are available for applications, no component within
+the library is hidden from the application.
+
+\0\b[image src="libidn-components.png"\0\b]
+
+\1f
+File: libidn.info,  Node: Supported Platforms,  Next: Getting help,  Prev: Library Overview,  Up: Introduction
+
+1.4 Supported Platforms
+=======================
+
+Libidn has at some point in time been tested on the following
+platforms.  Online build reports for each platforms and Libidn version
+is available at `http://autobuild.josefsson.org/libidn/'.
+
+  1. Debian GNU/Linux 3.0 (Woody) 
+
+     GCC 2.95.4 and GNU Make. This is the main development platform.
+     `alphaev67-unknown-linux-gnu', `alphaev6-unknown-linux-gnu',
+     `arm-unknown-linux-gnu', `armv4l-unknown-linux-gnu',
+     `hppa-unknown-linux-gnu', `hppa64-unknown-linux-gnu',
+     `i686-pc-linux-gnu', `ia64-unknown-linux-gnu',
+     `m68k-unknown-linux-gnu', `mips-unknown-linux-gnu',
+     `mipsel-unknown-linux-gnu', `powerpc-unknown-linux-gnu',
+     `s390-ibm-linux-gnu', `sparc-unknown-linux-gnu',
+     `sparc64-unknown-linux-gnu'.
+
+  2. Debian GNU/Linux 2.1 
+
+     GCC 2.95.1 and GNU Make. `armv4l-unknown-linux-gnu'.
+
+  3. Tru64 UNIX 
+
+     Tru64 UNIX C compiler and Tru64 Make. `alphaev67-dec-osf5.1',
+     `alphaev68-dec-osf5.1'.
+
+  4. SuSE Linux 7.1 
+
+     GCC 2.96 and GNU Make. `alphaev6-unknown-linux-gnu',
+     `alphaev67-unknown-linux-gnu'.
+
+  5. SuSE Linux 7.2a 
+
+     GCC 3.0 and GNU Make. `ia64-unknown-linux-gnu'.
+
+  6. SuSE Linux 
+
+     GCC 3.2.2 and GNU Make.  `x86_64-unknown-linux-gnu' (AMD64 Opteron
+     "Melody").
+
+  7. SuSE Enterprise Server 9 on IBM OpenPower 720 
+
+     GCC 3.3.3 and GNU Make.  `powerpc64-unknown-linux-gnu'.
+
+  8. RedHat Linux 7.2 
+
+     GCC 2.96 and GNU Make. `alphaev6-unknown-linux-gnu',
+     `alphaev67-unknown-linux-gnu', `ia64-unknown-linux-gnu'.
+
+  9. RedHat Linux 8.0 
+
+     GCC 3.2 and GNU Make. `i686-pc-linux-gnu'.
+
+ 10. RedHat Advanced Server 2.1 
+
+     GCC 2.96 and GNU Make. `i686-pc-linux-gnu'.
+
+ 11. Slackware Linux 8.0.01 
+
+     GCC 2.95.3 and GNU Make. `i686-pc-linux-gnu'.
+
+ 12. Mandrake Linux 9.0 
+
+     GCC 3.2 and GNU Make. `i686-pc-linux-gnu'.
+
+ 13. IRIX 6.5 
+
+     MIPS C compiler, IRIX Make. `mips-sgi-irix6.5'.
+
+ 14. AIX 4.3.2 
+
+     IBM C for AIX compiler, AIX Make.  `rs6000-ibm-aix4.3.2.0'.
+
+ 15. Microsoft Windows 2000 (Cygwin) 
+
+     GCC 3.2, GNU make. `i686-pc-cygwin'.
+
+ 16. HP-UX 11 
+
+     HP-UX C compiler and HP Make. `ia64-hp-hpux11.22',
+     `hppa2.0w-hp-hpux11.11'.
+
+ 17. SUN Solaris 2.7 
+
+     GCC 3.0.4 and GNU Make. `sparc-sun-solaris2.7'.
+
+ 18. SUN Solaris 2.8 
+
+     Sun WorkShop Compiler C 6.0 and SUN Make. `sparc-sun-solaris2.8'.
+
+ 19. SUN Solaris 2.9 
+
+     Sun Forte Developer 7 C compiler and GNU Make.
+     `sparc-sun-solaris2.9'.
+
+ 20. NetBSD 1.6 
+
+     GCC 2.95.3 and GNU Make. `alpha-unknown-netbsd1.6',
+     `i386-unknown-netbsdelf1.6'.
+
+ 21. OpenBSD 3.1 and 3.2 
+
+     GCC 2.95.3 and GNU Make. `alpha-unknown-openbsd3.1',
+     `i386-unknown-openbsd3.1'.
+
+ 22. FreeBSD 4.7 and 4.8 
+
+     GCC 2.95.4 and GNU Make. `alpha-unknown-freebsd4.7',
+     `alpha-unknown-freebsd4.8', `i386-unknown-freebsd4.7',
+     `i386-unknown-freebsd4.8'.
+
+ 23. MacOS X 10.2 Server Edition 
+
+     GCC 3.1 and GNU Make. `powerpc-apple-darwin6.5'.
+
+ 24. MacOS X 10.4 "Tiger" with Xcode 2.0 
+
+     GCC 4.0 and GNU Make. `powerpc-apple-darwin8.0'.
+
+ 25. Cross compiled to uClinux/uClibc on Motorola Coldfire 
+
+     GCC 3.4 and GNU Make `m68k-uclinux-elf'.
+
+ 26. Cross compiled to ARM using Glibc 
+
+     GCC 2.95 and GNU Make `arm-linux'.
+
+ 27. Cross compiled to Mingw32.  
+
+     GCC 3.4.4 and GNU Make `i586-mingw32msvc'.
+
+
+   If you use Libidn on, or port Libidn to, a new platform please report
+it to the author.
+
+\1f
+File: libidn.info,  Node: Getting help,  Next: Commercial Support,  Prev: Supported Platforms,  Up: Introduction
+
+1.5 Getting help
+================
+
+A mailing list where users of Libidn may help each other exists, and
+you can reach it by sending e-mail to <help-libidn@gnu.org>.  Archives
+of the mailing list discussions, and an interface to manage
+subscriptions, is available through the World Wide Web at
+`http://lists.gnu.org/mailman/listinfo/help-libidn'.
+
+\1f
+File: libidn.info,  Node: Commercial Support,  Next: Downloading and Installing,  Prev: Getting help,  Up: Introduction
+
+1.6 Commercial Support
+======================
+
+Commercial support is available for users of GNU Libidn.  The kind of
+support that can be purchased may include:
+
+   * Implement new features.  Such as country code specific profiling
+     to support a restricted subset of Unicode.
+
+   * Port Libidn to new platforms.  This could include porting Libidn
+     to an embedded platforms that may need memory or size optimization.
+
+   * Integrating IDN support in your existing project.
+
+   * System design of components related to IDN.
+
+
+   If you are interested, please write to:
+
+Simon Josefsson Datakonsult
+Hagagatan 24
+113 47 Stockholm
+Sweden
+
+E-mail: simon@josefsson.org
+
+   If your company provide support related to GNU Libidn and would like
+to be mentioned here, contact the author (*note Bug Reports::).
+
+\1f
+File: libidn.info,  Node: Downloading and Installing,  Next: Bug Reports,  Prev: Commercial Support,  Up: Introduction
+
+1.7 Downloading and Installing
+==============================
+
+The package can be downloaded from several places, including:
+
+   `ftp://alpha.gnu.org/pub/gnu/libidn/'
+
+   The latest version is stored in a file, e.g., `libidn-1.15.tar.gz'
+where the `1.15' value is the highest version number in the directory.
+
+   The package is then extracted, configured and built like many other
+packages that use Autoconf.  For detailed information on configuring
+and building it, refer to the `INSTALL' file that is part of the
+distribution archive.
+
+   Here is an example terminal session that download, configure, build
+and install the package.  You will need a few basic tools, such as
+`sh', `make' and `cc'.
+
+     $ wget -q ftp://alpha.gnu.org/pub/gnu/libidn/libidn-1.15.tar.gz
+     $ tar xfz libidn-1.15.tar.gz
+     $ cd libidn-1.15/
+     $ ./configure
+     ...
+     $ make
+     ...
+     $ make install
+     ...
+
+   After that Libidn should be properly installed and ready for use.
+
+   A few `configure' options may be relevant, summarized in the table.
+
+`--enable-java'
+     Build the Java port into a *.JAR file.  *Note Java API::, for more
+     information.
+
+`--disable-tld'
+     Disable the TLD module.  This would typically only be useful if you
+     are building on a memory restricted platforms.  *Note TLD
+     Functions::, for more information.
+
+`--enable-csharp[=IMPL]'
+     Build the `C#' port into a `*.DLL' file.  *Note C# API::, for more
+     information.  Here, `IMPL' is `pnet' or `mono', indicating whether
+     the PNET `cscc' compiler or the Mono `mcs' compiler should be
+     used, respectively.
+
+
+   For the complete list, refer to the output from `configure --help'.
+
+* Menu:
+
+* Installing under Windows::    Windows specific build instructions.
+
+\1f
+File: libidn.info,  Node: Installing under Windows,  Up: Downloading and Installing
+
+1.7.1 Installing under Windows
+------------------------------
+
+There are two ways to build Libidn on Windows: via MinGW or via Visual
+Studio.
+
+   With MinGW, you can build a Libidn DLL and use it from other
+applications.  After installing MinGW (`http://mingw.org/') follow the
+generic installation instructions (*note Downloading and Installing::).
+The DLL is installed by default.
+
+   For information on how to use the DLL in other applications, see:
+`http://www.mingw.org/mingwfaq.shtml#faq-msvcdll'.
+
+   You can build Libidn as a native Visual Studio C++ project.  This
+allows you to build the code for other platforms that VS supports, such
+as Windows Mobile.  You need Visual Studio 2005 or later.
+
+   First download and unpack the archive as described in the generic
+installation instructions (*note Downloading and Installing::).  Don't
+run `./configure'.  Instead, start Visual Studio and open the project
+file `win32/libidn.sln' inside the Libidn directory.  You should be
+able to build the project using Build Project.
+
+   Output libraries will be written into the `win32/lib' (or
+`win32/lib/debug' for Debug versions) folder.
+
+   When working with Windows you may want to look into the special
+memory handling functions that may be needed (*note Memory handling
+under Windows::).
+
+\1f
+File: libidn.info,  Node: Bug Reports,  Next: Contributing,  Prev: Downloading and Installing,  Up: Introduction
+
+1.8 Bug Reports
+===============
+
+If you think you have found a bug in Libidn, please investigate it and
+report it.
+
+   * Please make sure that the bug is really in Libidn, and preferably
+     also check that it hasn't already been fixed in the latest version.
+
+   * You have to send us a test case that makes it possible for us to
+     reproduce the bug.
+
+   * You also have to explain what is wrong; if you get a crash, or if
+     the results printed are not good and in that case, in what way.
+     Make sure that the bug report includes all information you would
+     need to fix this kind of bug for someone else.
+
+
+   Please make an effort to produce a self-contained report, with
+something definite that can be tested or debugged.  Vague queries or
+piecemeal messages are difficult to act on and don't help the
+development effort.
+
+   If your bug report is good, we will do our best to help you to get a
+corrected version of the software; if the bug report is poor, we won't
+do anything about it (apart from asking you to send better bug reports).
+
+   If you think something in this manual is unclear, or downright
+incorrect, or if the language needs to be improved, please also send a
+note.
+
+   Send your bug report to:
+
+                         `bug-libidn@gnu.org'
+
+\1f
+File: libidn.info,  Node: Contributing,  Prev: Bug Reports,  Up: Introduction
+
+1.9 Contributing
+================
+
+If you want to submit a patch for inclusion - from solve a typo you
+discovered, up to adding support for a new feature - you should submit
+it as a bug report (*note Bug Reports::).  There are some things that
+you can do to increase the chances for it to be included in the
+official package.
+
+   Unless your patch is very small (say, under 10 lines) we require that
+you assign the copyright of your work to the Free Software Foundation.
+This is to protect the freedom of the project.  If you have not already
+signed papers, we will send you the necessary information when you
+submit your contribution.
+
+   For contributions that doesn't consist of actual programming code,
+the only guidelines are common sense.  Use it.
+
+   For code contributions, a number of style guides will help you:
+
+   * Coding Style.  Follow the GNU Standards document (*note GNU Coding
+     Standards: (standards)top.).
+
+     If you normally code using another coding standard, there is no
+     problem, but you should use `indent' to reformat the code (*note
+     GNU Indent: (indent)top.) before submitting your work.
+
+   * Use the unified diff format `diff -u'.
+
+   * Return errors.  No reason whatsoever should abort the execution of
+     the library.  Even memory allocation errors, e.g. when malloc
+     return NULL, should work although result in an error code.
+
+   * Design with thread safety in mind.  Don't use global variables and
+     the like.
+
+   * Avoid using the C math library.  It causes problems for embedded
+     implementations, and in most situations it is very easy to avoid
+     using it.
+
+   * Document your functions.  Use comments before each function
+     headers, that, if properly formatted, are extracted into GTK-DOC
+     web pages.  Don't forget to update the Texinfo manual as well.
+
+   * Supply a ChangeLog and NEWS entries, where appropriate.
+
+
+\1f
+File: libidn.info,  Node: Preparation,  Next: Utility Functions,  Prev: Introduction,  Up: Top
+
+2 Preparation
+*************
+
+To use `Libidn', you have to perform some changes to your sources and
+the build system.  The necessary changes are small and explained in the
+following sections.  At the end of this chapter, it is described how
+the library is initialized, and how the requirements of the library are
+verified.
+
+   A faster way to find out how to adapt your application for use with
+`Libidn' may be to look at the examples at the end of this manual
+(*note Examples::).
+
+* Menu:
+
+* Header::
+* Initialization::
+* Version Check::
+* Building the source::
+* Autoconf tests::
+* Memory handling under Windows::
+
+\1f
+File: libidn.info,  Node: Header,  Next: Initialization,  Up: Preparation
+
+2.1 Header
+==========
+
+The library contains a few independent parts, and each part export the
+interfaces (data types and functions) in a header file.  You must
+include the appropriate header files in all programs using the library,
+either directly or through some other header file, like this:
+
+     #include <stringprep.h>
+
+   The header files and the functions they define are categorized as
+follows:
+
+stringprep.h
+     The low-level stringprep API entry point.  For IDN applications,
+     this is usually invoked via IDNA. Some applications, specifically
+     non-IDN ones, may want to prepare strings directly though, and
+     should include this header file.
+
+     The name space of the stringprep part of Libidn is `stringprep*'
+     for function names, `Stringprep*' for data types and
+     `STRINGPREP_*' for other symbols.  In addition, `_stringprep*' is
+     reserved for internal use and should never be used by applications.
+
+punycode.h
+     The entry point to Punycode encoding and decoding functions.
+     Normally punycode is used via the idna.h interface, but some
+     application may want to perform raw punycode operations.
+
+     The name space of the punycode part of Libidn is `punycode_*' for
+     function names, `Punycode*' for data types and `PUNYCODE_*' for
+     other symbols.  In addition, `_punycode*' is reserved for internal
+     use and should never be used by applications.
+
+idna.h
+     The entry point to the IDNA functions.  This is the normal entry
+     point for applications that need IDN functionality.
+
+     The name space of the IDNA part of Libidn is `idna_*' for function
+     names, `Idna*' for data types and `IDNA_*' for other symbols.  In
+     addition, `_idna*' is reserved for internal use and should never
+     be used by applications.
+
+tld.h
+     The entry point to the TLD functions.  Normal applications are not
+     expected to need this functionality, but it is present for
+     applications that are used by TLDs to validate customer input.
+
+     The name space of the TLD part of Libidn is `tld_*' for function
+     names, `Tld_*' for data types and `TLD_*' for other symbols.  In
+     addition, `_tld*' is reserved for internal use and should never be
+     used by applications.
+
+pr29.h
+     The entry point to the PR29 functions.  These functions are used to
+     detect "problem sequences" (*note PR29 Functions::), mostly for use
+     in security critical applications.
+
+     The name space of the PR29 part of Libidn is `pr29_*' for function
+     names, `Pr29_*' for data types and `PR29_*' for other symbols.  In
+     addition, `_pr29*' is reserved for internal use and should never
+     be used by applications.
+
+idn-free.h
+     The entry point to the Windows memory de-allocation function
+     (*note Memory handling under Windows::).  It contains only one
+     function `idn_free'.
+
+
+   All header files defined and use the symbol `IDNAPI' to decorate the
+API functions.
+
+\1f
+File: libidn.info,  Node: Initialization,  Next: Version Check,  Prev: Header,  Up: Preparation
+
+2.2 Initialization
+==================
+
+Libidn is stateless and does not need any initialization.
+
+\1f
+File: libidn.info,  Node: Version Check,  Next: Building the source,  Prev: Initialization,  Up: Preparation
+
+2.3 Version Check
+=================
+
+It is often desirable to check that the version of `Libidn' used is
+indeed one which fits all requirements.  Even with binary compatibility
+new features may have been introduced but due to problem with the
+dynamic linker an old version is actually used.  So you may want to
+check that the version is okay right after program startup.
+
+stringprep_check_version
+------------------------
+
+ -- Function: const char * stringprep_check_version (const char *
+          REQ_VERSION)
+     REQ_VERSION: Required version number, or NULL.
+
+     Check that the version of the library is at minimum the requested
+     one and return the version string; return NULL if the condition is
+     not satisfied.  If a NULL is passed to this function, no check is
+     done, but the version string is simply returned.
+
+     See `STRINGPREP_VERSION' for a suitable `req_version' string.
+
+     *Return value:* Version string of run-time library, or NULL if the
+     run-time library does not meet the required version number.
+
+   The normal way to use the function is to put something similar to the
+following first in your `main':
+
+       if (!stringprep_check_version (STRINGPREP_VERSION))
+         {
+           printf ("stringprep_check_version() failed:\n"
+                   "Header file incompatible with shared library.\n");
+           exit(1);
+         }
+
+\1f
+File: libidn.info,  Node: Building the source,  Next: Autoconf tests,  Prev: Version Check,  Up: Preparation
+
+2.4 Building the source
+=======================
+
+If you want to compile a source file including e.g. the `idna.h' header
+file, you must make sure that the compiler can find it in the directory
+hierarchy.  This is accomplished by adding the path to the directory in
+which the header file is located to the compilers include file search
+path (via the `-I' option).
+
+   However, the path to the include file is determined at the time the
+source is configured.  To solve this problem, `Libidn' uses the
+external package `pkg-config' that knows the path to the include file
+and other configuration options.  The options that need to be added to
+the compiler invocation at compile time are output by the `--cflags'
+option to `pkg-config libidn'.  The following example shows how it can
+be used at the command line:
+
+     gcc -c foo.c `pkg-config libidn --cflags`
+
+   Adding the output of `pkg-config libidn --cflags' to the compilers
+command line will ensure that the compiler can find e.g. the idna.h
+header file.
+
+   A similar problem occurs when linking the program with the library.
+Again, the compiler has to find the library files.  For this to work,
+the path to the library files has to be added to the library search
+path (via the `-L' option).  For this, the option `--libs' to
+`pkg-config libidn' can be used.  For convenience, this option also
+outputs all other options that are required to link the program with
+the `libidn' libarary.  The example shows how to link `foo.o' with the
+`libidn' library to a program `foo'.
+
+     gcc -o foo foo.o `pkg-config libidn --libs`
+
+   Of course you can also combine both examples to a single command by
+specifying both options to `pkg-config':
+
+     gcc -o foo foo.c `pkg-config libidn --cflags --libs`
+
+\1f
+File: libidn.info,  Node: Autoconf tests,  Next: Memory handling under Windows,  Prev: Building the source,  Up: Preparation
+
+2.5 Autoconf tests
+==================
+
+If your project uses Autoconf (*note GNU Autoconf: (autoconf)top.)  to
+check for installed libraries, you might find the following snippet
+illustrative.  It add a new `configure' parameter `--with-libidn', and
+check for `idna.h' and `-lidn' (possibly below the directory specified
+as the optional argument to `--with-libidn'), and define the CPP symbol
+`LIBIDN' if the library is found.  The default behaviour is to search
+for the library and enable the functionality (that is, define the
+symbol) when the library is found, but if you wish to make the default
+behaviour of your package be that Libidn is not used (even if it is
+installed on the system), change `libidn=yes' to `libidn=no' on the
+third line.
+
+     AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
+                                     [Support IDN (needs GNU Libidn)]),
+       libidn=$withval, libidn=yes)
+     if test "$libidn" != "no"; then
+       if test "$libidn" != "yes"; then
+         LDFLAGS="${LDFLAGS} -L$libidn/lib"
+         CPPFLAGS="${CPPFLAGS} -I$libidn/include"
+       fi
+       AC_CHECK_HEADER(idna.h,
+         AC_CHECK_LIB(idn, stringprep_check_version,
+           [libidn=yes LIBS="${LIBS} -lidn"], libidn=no),
+         libidn=no)
+     fi
+     if test "$libidn" != "no" ; then
+       AC_DEFINE(LIBIDN, 1, [Define to 1 if you want IDN support.])
+     else
+       AC_MSG_WARN([Libidn not found])
+     fi
+     AC_MSG_CHECKING([if Libidn should be used])
+     AC_MSG_RESULT($libidn)
+
+   If you require that your users have installed `pkg-config' (which I
+cannot recommend generally), the above can be done more easily as
+follows.
+
+     AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
+                                     [Support IDN (needs GNU Libidn)]),
+       libidn=$withval, libidn=yes)
+     if test "$libidn" != "no" ; then
+       PKG_CHECK_MODULES(LIBIDN, libidn >= 0.0.0, [libidn=yes], [libidn=no])
+       if test "$libidn" != "yes" ; then
+         libidn=no
+         AC_MSG_WARN([Libidn not found])
+       else
+         libidn=yes
+         AC_DEFINE(LIBIDN, 1, [Define to 1 if you want Libidn.])
+       fi
+     fi
+     AC_MSG_CHECKING([if Libidn should be used])
+     AC_MSG_RESULT($libidn)
+
+\1f
+File: libidn.info,  Node: Memory handling under Windows,  Prev: Autoconf tests,  Up: Preparation
+
+2.6 Memory handling under Windows
+=================================
+
+Several functions in the library allocates memory.  The memory is
+expected to be de-allocated using the `free' function.  Under Windows,
+it is sometimes necessary to de-allocate memory in the same module that
+allocated a memory region.  The reason is that different modules use
+separate heap memory regions.  To solve this problem we provide a
+function to de-allocate memory inside the library.
+
+   Note that we do not recommend using this interface generally if you
+do not care about Windows portability.
+
+2.7 Header file `idn-free.h'
+============================
+
+To use the function explained in this chapter, you need to include the
+file `idn-free.h' using:
+
+     #include <idn-free.h>
+
+2.8 Memory de-allocation function
+=================================
+
+idn_free
+--------
+
+ -- Function: void idn_free (void * PTR)
+     PTR: memory region to deallocate, or `NULL'.
+
+     Deallocates memory region by calling `free()'.  If `ptr' is `NULL'
+     no operation is performed.
+
+     Normally applications de-allocate strings allocated by libidn by
+     calling `free()' directly.  Under Windows, different parts of the
+     same application may use different heap memory, and then it is
+     important to deallocate memory allocated within the same module
+     that allocated it.  This function makes that possible.
+
+\1f
+File: libidn.info,  Node: Utility Functions,  Next: Stringprep Functions,  Prev: Preparation,  Up: Top
+
+3 Utility Functions
+*******************
+
+The rest of this library makes extensive use of Unicode characters.  In
+order to interface this library with the outside world, your
+application may need to make various Unicode transformations.
+
+3.1 Header file `stringprep.h'
+==============================
+
+To use the functions explained in this chapter, you need to include the
+file `stringprep.h' using:
+
+     #include <stringprep.h>
+
+3.2 Unicode Encoding Transformation
+===================================
+
+stringprep_unichar_to_utf8
+--------------------------
+
+ -- Function: int stringprep_unichar_to_utf8 (uint32_t C, char * OUTBUF)
+     C: a ISO10646 character code
+
+     OUTBUF: output buffer, must have at least 6 bytes of space.  If
+     `NULL', the length will be computed and returned and nothing will
+     be written to `outbuf'.
+
+     Converts a single character to UTF-8.
+
+     *Return value:* number of bytes written.
+
+stringprep_utf8_to_unichar
+--------------------------
+
+ -- Function: uint32_t stringprep_utf8_to_unichar (const char * P)
+     P: a pointer to Unicode character encoded as UTF-8
+
+     Converts a sequence of bytes encoded as UTF-8 to a Unicode
+     character.  If `p' does not point to a valid UTF-8 encoded
+     character, results are undefined.
+
+     *Return value:* the resulting character.
+
+stringprep_ucs4_to_utf8
+-----------------------
+
+ -- Function: char * stringprep_ucs4_to_utf8 (const uint32_t * STR,
+          ssize_t LEN, size_t * ITEMS_READ, size_t * ITEMS_WRITTEN)
+     STR: a UCS-4 encoded string
+
+     LEN: the maximum length of `str' to use. If `len' < 0, then the
+     string is terminated with a 0 character.
+
+     ITEMS_READ: location to store number of characters read read, or
+     `NULL'.
+
+     ITEMS_WRITTEN: location to store number of bytes written or `NULL'.
+     The value here stored does not include the trailing 0 byte.
+
+     Convert a string from a 32-bit fixed width representation as UCS-4.
+     to UTF-8. The result will be terminated with a 0 byte.
+
+     *Return value:* a pointer to a newly allocated UTF-8 string.  This
+     value must be deallocated by the caller.  If an error occurs,
+     `NULL' will be returned and `error' set.
+
+stringprep_utf8_to_ucs4
+-----------------------
+
+ -- Function: uint32_t * stringprep_utf8_to_ucs4 (const char * STR,
+          ssize_t LEN, size_t * ITEMS_WRITTEN)
+     STR: a UTF-8 encoded string
+
+     LEN: the maximum length of `str' to use. If `len' < 0, then the
+     string is nul-terminated.
+
+     ITEMS_WRITTEN: location to store the number of characters in the
+     result, or `NULL'.
+
+     Convert a string from UTF-8 to a 32-bit fixed width representation
+     as UCS-4, assuming valid UTF-8 input.  This function does no error
+     checking on the input.
+
+     *Return value:* a pointer to a newly allocated UCS-4 string.  This
+     value must be deallocated by the caller.
+
+3.3 Unicode Normalization
+=========================
+
+stringprep_ucs4_nfkc_normalize
+------------------------------
+
+ -- Function: uint32_t * stringprep_ucs4_nfkc_normalize (uint32_t *
+          STR, ssize_t LEN)
+     STR: a Unicode string.
+
+     LEN: length of `str' array, or -1 if `str' is nul-terminated.
+
+     Converts UCS4 string into UTF-8 and runs
+     `stringprep_utf8_nfkc_normalize()'.
+
+     *Return value:* a newly allocated Unicode string, that is the NFKC
+     normalized form of `str'.
+
+stringprep_utf8_nfkc_normalize
+------------------------------
+
+ -- Function: char * stringprep_utf8_nfkc_normalize (const char * STR,
+          ssize_t LEN)
+     STR: a UTF-8 encoded string.
+
+     LEN: length of `str', in bytes, or -1 if `str' is nul-terminated.
+
+     Converts a string into canonical form, standardizing such issues
+     as whether a character with an accent is represented as a base
+     character and combining accent or as a single precomposed
+     character.
+
+     The normalization mode is NFKC (ALL COMPOSE).  It standardizes
+     differences that do not affect the text content, such as the
+     above-mentioned accent representation. It standardizes the
+     "compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
+     the standard forms (in this case DIGIT THREE). Formatting
+     information may be lost but for most text operations such
+     characters should be considered the same. It returns a result with
+     composed forms rather than a maximally decomposed form.
+
+     *Return value:* a newly allocated string, that is the NFKC
+     normalized form of `str'.
+
+3.4 Character Set Conversion
+============================
+
+stringprep_locale_charset
+-------------------------
+
+ -- Function: const char * stringprep_locale_charset ( VOID)
+     Find out current locale charset.  The function respect the CHARSET
+     environment variable, but typically uses nl_langinfo(CODESET) when
+     it is supported.  It fall back on "ASCII" if CHARSET isn't set and
+     nl_langinfo isn't supported or return anything.
+
+     Note that this function return the application's locale's preferred
+     charset (or thread's locale's preffered charset, if your system
+     support thread-specific locales).  It does not return what the
+     system may be using.  Thus, if you receive data from external
+     sources you cannot in general use this function to guess what
+     charset it is encoded in.  Use stringprep_convert from the external
+     representation into the charset returned by this function, to have
+     data in the locale encoding.
+
+     *Return value:* Return the character set used by the current
+     locale.  It will never return NULL, but use "ASCII" as a fallback.
+
+stringprep_convert
+------------------
+
+ -- Function: char * stringprep_convert (const char * STR, const char *
+          TO_CODESET, const char * FROM_CODESET)
+     STR: input zero-terminated string.
+
+     TO_CODESET: name of destination character set.
+
+     FROM_CODESET: name of origin character set, as used by `str'.
+
+     Convert the string from one character set to another using the
+     system's `iconv()' function.
+
+     *Return value:* Returns newly allocated zero-terminated string
+     which is `str' transcoded into to_codeset.
+
+stringprep_locale_to_utf8
+-------------------------
+
+ -- Function: char * stringprep_locale_to_utf8 (const char * STR)
+     STR: input zero terminated string.
+
+     Convert string encoded in the locale's character set into UTF-8 by
+     using `stringprep_convert()'.
+
+     *Return value:* Returns newly allocated zero-terminated string
+     which is `str' transcoded into UTF-8.
+
+stringprep_utf8_to_locale
+-------------------------
+
+ -- Function: char * stringprep_utf8_to_locale (const char * STR)
+     STR: input zero terminated string.
+
+     Convert string encoded in UTF-8 into the locale's character set by
+     using `stringprep_convert()'.
+
+     *Return value:* Returns newly allocated zero-terminated string
+     which is `str' transcoded into the locale's character set.
+
+\1f
+File: libidn.info,  Node: Stringprep Functions,  Next: Punycode Functions,  Prev: Utility Functions,  Up: Top
+
+4 Stringprep Functions
+**********************
+
+Stringprep describes a framework for preparing Unicode text strings in
+order to increase the likelihood that string input and string
+comparison work in ways that make sense for typical users throughout
+the world. The stringprep protocol is useful for protocol identifier
+values, company and personal names, internationalized domain names, and
+other text strings.
+
+4.1 Header file `stringprep.h'
+==============================
+
+To use the functions explained in this chapter, you need to include the
+file `stringprep.h' using:
+
+     #include <stringprep.h>
+
+4.2 Defining A Stringprep Profile
+=================================
+
+Further types and structures are defined for applications that want to
+specify their own stringprep profile.  As these are fairly obscure, and
+by necessity tied to the implementation, we do not document them here.
+Look into the `stringprep.h' header file, and the `profiles.c' source
+code for the details.
+
+4.3 Control Flags
+=================
+
+ -- Stringprep flags: Stringprep_profile_flags STRINGPREP_NO_NFKC
+     Disable the NFKC normalization, as well as selecting the non-NFKC
+     case folding tables.  Usually the profile specifies BIDI and NFKC
+     settings, and applications should not override it unless in
+     special situations.
+
+ -- Stringprep flags: Stringprep_profile_flags STRINGPREP_NO_BIDI
+     Disable the BIDI step.  Usually the profile specifies BIDI and NFKC
+     settings, and applications should not override it unless in special
+     situations.
+
+ -- Stringprep flags: Stringprep_profile_flags STRINGPREP_NO_UNASSIGNED
+     Make the library return with an error if string contains unassigned
+     characters according to profile.
+
+4.4 Core Functions
+==================
+
+stringprep_4i
+-------------
+
+ -- Function: int stringprep_4i (uint32_t * UCS4, size_t * LEN, size_t
+          MAXUCS4LEN, Stringprep_profile_flags FLAGS, const
+          Stringprep_profile * PROFILE)
+     UCS4: input/output array with string to prepare.
+
+     LEN: on input, length of input array with Unicode code points, on
+     exit, length of output array with Unicode code points.
+
+     MAXUCS4LEN: maximum length of input/output array.
+
+     FLAGS: a `Stringprep_profile_flags' value, or 0.
+
+     PROFILE: pointer to `Stringprep_profile' to use.
+
+     Prepare the input UCS-4 string according to the stringprep profile,
+     and write back the result to the input string.
+
+     The input is not required to be zero terminated (`ucs4'[`len'] =
+     0).  The output will not be zero terminated unless `ucs4'[`len'] =
+     0.  Instead, see `stringprep_4zi()' if your input is zero
+     terminated or if you want the output to be.
+
+     Since the stringprep operation can expand the string, `maxucs4len'
+     indicate how large the buffer holding the string is.  This function
+     will not read or write to code points outside that size.
+
+     The `flags' are one of `Stringprep_profile_flags' values, or 0.
+
+     The `profile' contain the `Stringprep_profile' instructions to
+     perform.  Your application can define new profiles, possibly
+     re-using the generic stringprep tables that always will be part of
+     the library, or use one of the currently supported profiles.
+
+     *Return value:* Returns `STRINGPREP_OK' iff successful, or an
+     `Stringprep_rc' error code.
+
+stringprep_4zi
+--------------
+
+ -- Function: int stringprep_4zi (uint32_t * UCS4, size_t MAXUCS4LEN,
+          Stringprep_profile_flags FLAGS, const Stringprep_profile *
+          PROFILE)
+     UCS4: input/output array with zero terminated string to prepare.
+
+     MAXUCS4LEN: maximum length of input/output array.
+
+     FLAGS: a `Stringprep_profile_flags' value, or 0.
+
+     PROFILE: pointer to `Stringprep_profile' to use.
+
+     Prepare the input zero terminated UCS-4 string according to the
+     stringprep profile, and write back the result to the input string.
+
+     Since the stringprep operation can expand the string, `maxucs4len'
+     indicate how large the buffer holding the string is.  This function
+     will not read or write to code points outside that size.
+
+     The `flags' are one of `Stringprep_profile_flags' values, or 0.
+
+     The `profile' contain the `Stringprep_profile' instructions to
+     perform.  Your application can define new profiles, possibly
+     re-using the generic stringprep tables that always will be part of
+     the library, or use one of the currently supported profiles.
+
+     *Return value:* Returns `STRINGPREP_OK' iff successful, or an
+     `Stringprep_rc' error code.
+
+stringprep
+----------
+
+ -- Function: int stringprep (char * IN, size_t MAXLEN,
+          Stringprep_profile_flags FLAGS, const Stringprep_profile *
+          PROFILE)
+     IN: input/ouput array with string to prepare.
+
+     MAXLEN: maximum length of input/output array.
+
+     FLAGS: a `Stringprep_profile_flags' value, or 0.
+
+     PROFILE: pointer to `Stringprep_profile' to use.
+
+     Prepare the input zero terminated UTF-8 string according to the
+     stringprep profile, and write back the result to the input string.
+
+     Note that you must convert strings entered in the systems locale
+     into UTF-8 before using this function, see
+     `stringprep_locale_to_utf8()'.
+
+     Since the stringprep operation can expand the string, `maxlen'
+     indicate how large the buffer holding the string is.  This function
+     will not read or write to characters outside that size.
+
+     The `flags' are one of `Stringprep_profile_flags' values, or 0.
+
+     The `profile' contain the `Stringprep_profile' instructions to
+     perform.  Your application can define new profiles, possibly
+     re-using the generic stringprep tables that always will be part of
+     the library, or use one of the currently supported profiles.
+
+     *Return value:* Returns `STRINGPREP_OK' iff successful, or an
+     error code.
+
+stringprep_profile
+------------------
+
+ -- Function: int stringprep_profile (const char * IN, char ** OUT,
+          const char * PROFILE, Stringprep_profile_flags FLAGS)
+     IN: input array with UTF-8 string to prepare.
+
+     OUT: output variable with pointer to newly allocate string.
+
+     PROFILE: name of stringprep profile to use.
+
+     FLAGS: a `Stringprep_profile_flags' value, or 0.
+
+     Prepare the input zero terminated UTF-8 string according to the
+     stringprep profile, and return the result in a newly allocated
+     variable.
+
+     Note that you must convert strings entered in the systems locale
+     into UTF-8 before using this function, see
+     `stringprep_locale_to_utf8()'.
+
+     The output `out' variable must be deallocated by the caller.
+
+     The `flags' are one of `Stringprep_profile_flags' values, or 0.
+
+     The `profile' specifies the name of the stringprep profile to use.
+     It must be one of the internally supported stringprep profiles.
+
+     *Return value:* Returns `STRINGPREP_OK' iff successful, or an
+     error code.
+
+4.5 Error Handling
+==================
+
+stringprep_strerror
+-------------------
+
+ -- Function: const char * stringprep_strerror (Stringprep_rc RC)
+     RC: a `Stringprep_rc' return code.
+
+     Convert a return code integer to a text string.  This string can be
+     used to output a diagnostic message to the user.
+
+     *STRINGPREP_OK:* Successful operation.  This value is guaranteed to
+     always be zero, the remaining ones are only guaranteed to hold
+     non-zero values, for logical comparison purposes.
+
+     *STRINGPREP_CONTAINS_UNASSIGNED:* String contain unassigned Unicode
+     code points, which is forbidden by the profile.
+
+     *STRINGPREP_CONTAINS_PROHIBITED:* String contain code points
+     prohibited by the profile.
+
+     *STRINGPREP_BIDI_BOTH_L_AND_RAL:* String contain code points with
+     conflicting bidirection category.
+
+     *STRINGPREP_BIDI_LEADTRAIL_NOT_RAL:* Leading and trailing character
+     in string not of proper bidirectional category.
+
+     *STRINGPREP_BIDI_CONTAINS_PROHIBITED:* Contains prohibited code
+     points detected by bidirectional code.
+
+     *STRINGPREP_TOO_SMALL_BUFFER:* Buffer handed to function was too
+     small.  This usually indicate a problem in the calling application.
+
+     *STRINGPREP_PROFILE_ERROR:* The stringprep profile was
+     inconsistent.  This usually indicate an internal error in the
+     library.
+
+     *STRINGPREP_FLAG_ERROR:* The supplied flag conflicted with profile.
+     This usually indicate a problem in the calling application.
+
+     *STRINGPREP_UNKNOWN_PROFILE:* The supplied profile name was not
+     known to the library.
+
+     *STRINGPREP_NFKC_FAILED:* The Unicode NFKC operation failed.  This
+     usually indicate an internal error in the library.
+
+     *STRINGPREP_MALLOC_ERROR:* The `malloc()' was out of memory.  This
+     is usually a fatal error.
+
+     *Return value:* Returns a pointer to a statically allocated string
+     containing a description of the error with the return code `rc'.
+
+4.6 Stringprep Profile Macros
+=============================
+
+ -- Function: int stringprep_nameprep_no_unassigned (char * IN, int
+          MAXLEN)
+     IN: input/ouput array with string to prepare.
+
+     MAXLEN: maximum length of input/output array.
+
+     Prepare the input UTF-8 string according to the nameprep profile.
+     The AllowUnassigned flag is false, use `stringprep_nameprep' for
+     true AllowUnassigned.  Returns 0 iff successful, or an error code.
+
+ -- Function: int stringprep_iscsi (char * IN, int MAXLEN)
+     IN: input/ouput array with string to prepare.
+
+     MAXLEN: maximum length of input/output array.
+
+     Prepare the input UTF-8 string according to the draft iSCSI
+     stringprep profile.  Returns 0 iff successful, or an error code.
+
+ -- Function: int stringprep_plain (char * IN, int MAXLEN)
+     IN: input/ouput array with string to prepare.
+
+     MAXLEN: maximum length of input/output array.
+
+     Prepare the input UTF-8 string according to the draft SASL
+     ANONYMOUS profile.  Returns 0 iff successful, or an error code.
+
+ -- Function: int stringprep_xmpp_nodeprep (char * IN, int MAXLEN)
+     IN: input/ouput array with string to prepare.
+
+     MAXLEN: maximum length of input/output array.
+
+     Prepare the input UTF-8 string according to the draft XMPP node
+     identifier profile.  Returns 0 iff successful, or an error code.
+
+ -- Function: int stringprep_xmpp_resourceprep (char * IN, int MAXLEN)
+     IN: input/ouput array with string to prepare.
+
+     MAXLEN: maximum length of input/output array.
+
+     Prepare the input UTF-8 string according to the draft XMPP resource
+     identifier profile.  Returns 0 iff successful, or an error code.
+
+\1f
+File: libidn.info,  Node: Punycode Functions,  Next: IDNA Functions,  Prev: Stringprep Functions,  Up: Top
+
+5 Punycode Functions
+********************
+
+Punycode is a simple and efficient transfer encoding syntax designed
+for use with Internationalized Domain Names in Applications. It
+uniquely and reversibly transforms a Unicode string into an ASCII
+string. ASCII characters in the Unicode string are represented
+literally, and non-ASCII characters are represented by ASCII characters
+that are allowed in host name labels (letters, digits, and hyphens). A
+general algorithm called Bootstring allows a string of basic code
+points to uniquely represent any string of code points drawn from a
+larger set. Punycode is an instance of Bootstring that uses particular
+parameter values, appropriate for IDNA.
+
+5.1 Header file `punycode.h'
+============================
+
+To use the functions explained in this chapter, you need to include the
+file `punycode.h' using:
+
+     #include <punycode.h>
+
+5.2 Unicode Code Point Data Type
+================================
+
+The punycode function uses a special type to denote Unicode code
+points.  It is guaranteed to always be a 32 bit unsigned integer.
+
+ -- Punycode Unicode code point: uint32_t punycode_uint
+     A unsigned integer that hold Unicode code points.
+
+5.3 Core Functions
+==================
+
+Note that the current implementation will fail if the `input_length'
+exceed 4294967295 (the size of `punycode_uint').  This restriction may
+be removed in the future.  Meanwhile applications are encouraged to not
+depend on this problem, and use `sizeof' to initialize `input_length'
+and `output_length'.
+
+   The functions provided are the following two entry points:
+
+punycode_encode
+---------------
+
+ -- Function: int punycode_encode (size_t INPUT_LENGTH, const
+          punycode_uint [] INPUT, const unsigned char [] CASE_FLAGS,
+          size_t * OUTPUT_LENGTH, char [] OUTPUT)
+     INPUT_LENGTH: The number of code points in the `input' array and
+     the number of flags in the `case_flags' array.
+
+     INPUT: An array of code points.  They are presumed to be Unicode
+     code points, but that is not strictly REQUIRED.  The array
+     contains code points, not code units.  UTF-16 uses code units D800
+     through DFFF to refer to code points 10000..10FFFF.  The code
+     points D800..DFFF do not occur in any valid Unicode string.  The
+     code points that can occur in Unicode strings (0..D7FF and
+     E000..10FFFF) are also called Unicode scalar values.
+
+     CASE_FLAGS: A `NULL' pointer or an array of boolean values parallel
+     to the `input' array.  Nonzero (true, flagged) suggests that the
+     corresponding Unicode character be forced to uppercase after being
+     decoded (if possible), and zero (false, unflagged) suggests that
+     it be forced to lowercase (if possible).  ASCII code points
+     (0..7F) are encoded literally, except that ASCII letters are
+     forced to uppercase or lowercase according to the corresponding
+     case flags.  If `case_flags' is a `NULL' pointer then ASCII letters
+     are left as they are, and other code points are treated as
+     unflagged.
+
+     OUTPUT_LENGTH: The caller passes in the maximum number of ASCII
+     code points that it can receive.  On successful return it will
+     contain the number of ASCII code points actually output.
+
+     OUTPUT: An array of ASCII code points.  It is *not*
+     null-terminated; it will contain zeros if and only if the `input'
+     contains zeros.  (Of course the caller can leave room for a
+     terminator and add one if needed.)
+
+     Converts a sequence of code points (presumed to be Unicode code
+     points) to Punycode.
+
+     *Return value:* The return value can be any of the
+     `Punycode_status' values defined above except
+     `PUNYCODE_BAD_INPUT'.  If not `PUNYCODE_SUCCESS', then
+     `output_size' and `output' might contain garbage.
+
+punycode_decode
+---------------
+
+ -- Function: int punycode_decode (size_t INPUT_LENGTH, const char []
+          INPUT, size_t * OUTPUT_LENGTH, punycode_uint [] OUTPUT,
+          unsigned char [] CASE_FLAGS)
+     INPUT_LENGTH: The number of ASCII code points in the `input' array.
+
+     INPUT: An array of ASCII code points (0..7F).
+
+     OUTPUT_LENGTH: The caller passes in the maximum number of code
+     points that it can receive into the `output' array (which is also
+     the maximum number of flags that it can receive into the
+     `case_flags' array, if `case_flags' is not a `NULL' pointer).  On
+     successful return it will contain the number of code points
+     actually output (which is also the number of flags actually
+     output, if case_flags is not a null pointer).  The decoder will
+     never need to output more code points than the number of ASCII
+     code points in the input, because of the way the encoding is
+     defined.  The number of code points output cannot exceed the
+     maximum possible value of a punycode_uint, even if the supplied
+     `output_length' is greater than that.
+
+     OUTPUT: An array of code points like the input argument of
+     `punycode_encode()' (see above).
+
+     CASE_FLAGS: A `NULL' pointer (if the flags are not needed by the
+     caller) or an array of boolean values parallel to the `output'
+     array.  Nonzero (true, flagged) suggests that the corresponding
+     Unicode character be forced to uppercase by the caller (if
+     possible), and zero (false, unflagged) suggests that it be forced
+     to lowercase (if possible).  ASCII code points (0..7F) are output
+     already in the proper case, but their flags will be set
+     appropriately so that applying the flags would be harmless.
+
+     Converts Punycode to a sequence of code points (presumed to be
+     Unicode code points).
+
+     *Return value:* The return value can be any of the
+     `Punycode_status' values defined above.  If not
+     `PUNYCODE_SUCCESS', then `output_length', `output', and
+     `case_flags' might contain garbage.
+
+5.4 Error Handling
+==================
+
+punycode_strerror
+-----------------
+
+ -- Function: const char * punycode_strerror (Punycode_status RC)
+     RC: an `Punycode_status' return code.
+
+     Convert a return code integer to a text string.  This string can be
+     used to output a diagnostic message to the user.
+
+     *PUNYCODE_SUCCESS:* Successful operation.  This value is guaranteed
+     to always be zero, the remaining ones are only guaranteed to hold
+     non-zero values, for logical comparison purposes.
+
+     *PUNYCODE_BAD_INPUT:* Input is invalid.
+
+     *PUNYCODE_BIG_OUTPUT:* Output would exceed the space provided.
+
+     *PUNYCODE_OVERFLOW:* Input needs wider integers to process.
+
+     *Return value:* Returns a pointer to a statically allocated string
+     containing a description of the error with the return code `rc'.
+
+\1f
+File: libidn.info,  Node: IDNA Functions,  Next: TLD Functions,  Prev: Punycode Functions,  Up: Top
+
+6 IDNA Functions
+****************
+
+Until now, there has been no standard method for domain names to use
+characters outside the ASCII repertoire. The IDNA document defines
+internationalized domain names (IDNs) and a mechanism called IDNA for
+handling them in a standard fashion. IDNs use characters drawn from a
+large repertoire (Unicode), but IDNA allows the non-ASCII characters to
+be represented using only the ASCII characters already allowed in
+so-called host names today. This backward-compatible representation is
+required in existing protocols like DNS, so that IDNs can be introduced
+with no changes to the existing infrastructure. IDNA is only meant for
+processing domain names, not free text.
+
+6.1 Header file `idna.h'
+========================
+
+To use the functions explained in this chapter, you need to include the
+file `idna.h' using:
+
+     #include <idna.h>
+
+6.2 Control Flags
+=================
+
+The IDNA `flags' parameter can take on the following values, or a
+bit-wise inclusive or of any subset of the parameters:
+
+ -- Return code: Idna_flags IDNA_ALLOW_UNASSIGNED
+     Allow unassigned Unicode code points.
+
+ -- Return code: Idna_flags IDNA_USE_STD3_ASCII_RULES
+     Check output to make sure it is a STD3 conforming host name.
+
+6.3 Prefix String
+=================
+
+ -- Macro: #define IDNA_ACE_PREFIX
+     String with the official IDNA prefix, `xn--'.
+
+6.4 Core Functions
+==================
+
+The idea behind the IDNA function names are as follows: the
+`idna_to_ascii_4i' and `idna_to_unicode_44i' functions are the core
+IDNA primitives.  The `4' indicate that the function takes UCS-4
+strings (i.e., Unicode code points encoded in a 32-bit unsigned integer
+type) of the specified length.  The `i' indicate that the data is
+written "inline" into the buffer.  This means the caller is responsible
+for allocating (and deallocating) the string, and providing the library
+with the allocated length of the string.  The output length is written
+in the output length variable.  The remaining functions all contain the
+`z' indicator, which means the strings are zero terminated.  All output
+strings are allocated by the library, and must be deallocated by the
+caller.  The `4' indicator again means that the string is UCS-4, the
+`8' means the strings are UTF-8 and the `l' indicator means the strings
+are encoded in the encoding used by the current locale.
+
+   The functions provided are the following entry points:
+
+idna_to_ascii_4i
+----------------
+
+ -- Function: int idna_to_ascii_4i (const uint32_t * IN, size_t INLEN,
+          char * OUT, int FLAGS)
+     IN: input array with unicode code points.
+
+     INLEN: length of input array with unicode code points.
+
+     OUT: output zero terminated string that must have room for at
+     least 63 characters plus the terminating zero.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     The ToASCII operation takes a sequence of Unicode code points that
+     make up one domain label and transforms it into a sequence of code
+     points in the ASCII range (0..7F). If ToASCII succeeds, the
+     original sequence and the resulting sequence are equivalent labels.
+
+     It is important to note that the ToASCII operation can fail.
+     ToASCII fails if any step of it fails. If any step of the ToASCII
+     operation fails on any label in a domain name, that domain name
+     MUST NOT be used as an internationalized domain name. The method
+     for deadling with this failure is application-specific.
+
+     The inputs to ToASCII are a sequence of code points, the
+     AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output
+     of ToASCII is either a sequence of ASCII code points or a failure
+     condition.
+
+     ToASCII never alters a sequence of code points that are all in the
+     ASCII range to begin with (although it could fail). Applying the
+     ToASCII operation multiple times has exactly the same effect as
+     applying it just once.
+
+     *Return value:* Returns 0 on success, or an `Idna_rc' error code.
+
+idna_to_unicode_44i
+-------------------
+
+ -- Function: int idna_to_unicode_44i (const uint32_t * IN, size_t
+          INLEN, uint32_t * OUT, size_t * OUTLEN, int FLAGS)
+     IN: input array with unicode code points.
+
+     INLEN: length of input array with unicode code points.
+
+     OUT: output array with unicode code points.
+
+     OUTLEN: on input, maximum size of output array with unicode code
+     points, on exit, actual size of output array with unicode code
+     points.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     The ToUnicode operation takes a sequence of Unicode code points
+     that make up one domain label and returns a sequence of Unicode
+     code points. If the input sequence is a label in ACE form, then the
+     result is an equivalent internationalized label that is not in ACE
+     form, otherwise the original sequence is returned unaltered.
+
+     ToUnicode never fails. If any step fails, then the original input
+     sequence is returned immediately in that step.
+
+     The Punycode decoder can never output more code points than it
+     inputs, but Nameprep can, and therefore ToUnicode can.  Note that
+     the number of octets needed to represent a sequence of code points
+     depends on the particular character encoding used.
+
+     The inputs to ToUnicode are a sequence of code points, the
+     AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of
+     ToUnicode is always a sequence of Unicode code points.
+
+     *Return value:* Returns `Idna_rc' error condition, but it must
+     only be used for debugging purposes.  The output buffer is always
+     guaranteed to contain the correct data according to the
+     specification (sans malloc induced errors).  NB!  This means that
+     you normally ignore the return code from this function, as
+     checking it means breaking the standard.
+
+6.5 Simplified ToASCII Interface
+================================
+
+idna_to_ascii_4z
+----------------
+
+ -- Function: int idna_to_ascii_4z (const uint32_t * INPUT, char **
+          OUTPUT, int FLAGS)
+     INPUT: zero terminated input Unicode string.
+
+     OUTPUT: pointer to newly allocated output string.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     Convert UCS-4 domain name to ASCII string.  The domain name may
+     contain several labels, separated by dots.  The output buffer must
+     be deallocated by the caller.
+
+     *Return value:* Returns `IDNA_SUCCESS' on success, or error code.
+
+idna_to_ascii_8z
+----------------
+
+ -- Function: int idna_to_ascii_8z (const char * INPUT, char ** OUTPUT,
+          int FLAGS)
+     INPUT: zero terminated input UTF-8 string.
+
+     OUTPUT: pointer to newly allocated output string.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     Convert UTF-8 domain name to ASCII string.  The domain name may
+     contain several labels, separated by dots.  The output buffer must
+     be deallocated by the caller.
+
+     *Return value:* Returns `IDNA_SUCCESS' on success, or error code.
+
+idna_to_ascii_lz
+----------------
+
+ -- Function: int idna_to_ascii_lz (const char * INPUT, char ** OUTPUT,
+          int FLAGS)
+     INPUT: zero terminated input string encoded in the current locale's
+     character set.
+
+     OUTPUT: pointer to newly allocated output string.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     Convert domain name in the locale's encoding to ASCII string.  The
+     domain name may contain several labels, separated by dots.  The
+     output buffer must be deallocated by the caller.
+
+     *Return value:* Returns `IDNA_SUCCESS' on success, or error code.
+
+6.6 Simplified ToUnicode Interface
+==================================
+
+idna_to_unicode_4z4z
+--------------------
+
+ -- Function: int idna_to_unicode_4z4z (const uint32_t * INPUT,
+          uint32_t ** OUTPUT, int FLAGS)
+     INPUT: zero-terminated Unicode string.
+
+     OUTPUT: pointer to newly allocated output Unicode string.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     Convert possibly ACE encoded domain name in UCS-4 format into a
+     UCS-4 string.  The domain name may contain several labels,
+     separated by dots.  The output buffer must be deallocated by the
+     caller.
+
+     *Return value:* Returns `IDNA_SUCCESS' on success, or error code.
+
+idna_to_unicode_8z4z
+--------------------
+
+ -- Function: int idna_to_unicode_8z4z (const char * INPUT, uint32_t **
+          OUTPUT, int FLAGS)
+     INPUT: zero-terminated UTF-8 string.
+
+     OUTPUT: pointer to newly allocated output Unicode string.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     Convert possibly ACE encoded domain name in UTF-8 format into a
+     UCS-4 string.  The domain name may contain several labels,
+     separated by dots.  The output buffer must be deallocated by the
+     caller.
+
+     *Return value:* Returns `IDNA_SUCCESS' on success, or error code.
+
+idna_to_unicode_8z8z
+--------------------
+
+ -- Function: int idna_to_unicode_8z8z (const char * INPUT, char **
+          OUTPUT, int FLAGS)
+     INPUT: zero-terminated UTF-8 string.
+
+     OUTPUT: pointer to newly allocated output UTF-8 string.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     Convert possibly ACE encoded domain name in UTF-8 format into a
+     UTF-8 string.  The domain name may contain several labels,
+     separated by dots.  The output buffer must be deallocated by the
+     caller.
+
+     *Return value:* Returns `IDNA_SUCCESS' on success, or error code.
+
+idna_to_unicode_8zlz
+--------------------
+
+ -- Function: int idna_to_unicode_8zlz (const char * INPUT, char **
+          OUTPUT, int FLAGS)
+     INPUT: zero-terminated UTF-8 string.
+
+     OUTPUT: pointer to newly allocated output string encoded in the
+     current locale's character set.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     Convert possibly ACE encoded domain name in UTF-8 format into a
+     string encoded in the current locale's character set.  The domain
+     name may contain several labels, separated by dots.  The output
+     buffer must be deallocated by the caller.
+
+     *Return value:* Returns `IDNA_SUCCESS' on success, or error code.
+
+idna_to_unicode_lzlz
+--------------------
+
+ -- Function: int idna_to_unicode_lzlz (const char * INPUT, char **
+          OUTPUT, int FLAGS)
+     INPUT: zero-terminated string encoded in the current locale's
+     character set.
+
+     OUTPUT: pointer to newly allocated output string encoded in the
+     current locale's character set.
+
+     FLAGS: an `Idna_flags' value, e.g., `IDNA_ALLOW_UNASSIGNED' or
+     `IDNA_USE_STD3_ASCII_RULES'.
+
+     Convert possibly ACE encoded domain name in the locale's character
+     set into a string encoded in the current locale's character set.
+     The domain name may contain several labels, separated by dots.  The
+     output buffer must be deallocated by the caller.
+
+     *Return value:* Returns `IDNA_SUCCESS' on success, or error code.
+
+6.7 Error Handling
+==================
+
+idna_strerror
+-------------
+
+ -- Function: const char * idna_strerror (Idna_rc RC)
+     RC: an `Idna_rc' return code.
+
+     Convert a return code integer to a text string.  This string can be
+     used to output a diagnostic message to the user.
+
+     *IDNA_SUCCESS:* Successful operation.  This value is guaranteed to
+     always be zero, the remaining ones are only guaranteed to hold
+     non-zero values, for logical comparison purposes.
+
+     *IDNA_STRINGPREP_ERROR:* Error during string preparation.
+
+     *IDNA_PUNYCODE_ERROR:* Error during punycode operation.
+
+     *IDNA_CONTAINS_NON_LDH:* For IDNA_USE_STD3_ASCII_RULES, indicate
+     that the string contains non-LDH ASCII characters.
+
+     *IDNA_CONTAINS_MINUS:* For IDNA_USE_STD3_ASCII_RULES, indicate that
+     the string contains a leading or trailing hyphen-minus (U+002D).
+
+     *IDNA_INVALID_LENGTH:* The final output string is not within the
+     (inclusive) range 1 to 63 characters.
+
+     *IDNA_NO_ACE_PREFIX:* The string does not contain the ACE prefix
+     (for ToUnicode).
+
+     *IDNA_ROUNDTRIP_VERIFY_ERROR:* The ToASCII operation on output
+     string does not equal the input.
+
+     *IDNA_CONTAINS_ACE_PREFIX:* The input contains the ACE prefix (for
+     ToASCII).
+
+     *IDNA_ICONV_ERROR:* Could not convert string in locale encoding.
+
+     *IDNA_MALLOC_ERROR:* Could not allocate buffer (this is typically a
+     fatal error).
+
+     *IDNA_DLOPEN_ERROR:* Could not dlopen the libcidn DSO (only used
+     internally in libc).
+
+     *Return value:* Returns a pointer to a statically allocated string
+     containing a description of the error with the return code `rc'.
+
+\1f
+File: libidn.info,  Node: TLD Functions,  Next: PR29 Functions,  Prev: IDNA Functions,  Up: Top
+
+7 TLD Functions
+***************
+
+Organizations that manage some Top Level Domains (TLDs) have published
+tables with characters they accept within the domain.  The reason may
+be to reduce complexity that come from using the full Unicode range,
+and to protect themselves from future (backwards incompatible) changes
+in the IDN or Unicode specifications.  Libidn implement an
+infrastructure for defining and checking strings against such tables.
+Libidn also ship some tables from TLDs that we have managed to get
+permission to use them from.  Because these tables are even less static
+than Unicode or StringPrep tables, it is likely that they will be
+updated from time to time (even in backwards incompatibe ways).  The
+Libidn interface provide a "version" field for each TLD table, which
+can be compared for equality to guarantee the same operation over time.
+
+   From a design point of view, you can regard the TLD tables for IDN
+as the "localization" step that come after the "internationalization"
+step provided by the IETF standards.
+
+   The TLD functionality rely on up-to-date tables.  The latest version
+of Libidn aim to provide these, but tables with unclear copying
+conditions, or generally experimental tables, are not included.  Some
+such tables can be found at `http://tldchk.berlios.de'.
+
+7.1 Header file `tld.h'
+=======================
+
+To use the functions explained in this chapter, you need to include the
+file `tld.h' using:
+
+     #include <tld.h>
+
+7.2 Core Functions
+==================
+
+tld_check_4t
+------------
+
+ -- Function: int tld_check_4t (const uint32_t * IN, size_t INLEN,
+          size_t * ERRPOS, const Tld_table * TLD)
+     IN: Array of unicode code points to process. Does not need to be
+     zero terminated.
+
+     INLEN: Number of unicode code points.
+
+     ERRPOS: Position of offending character is returned here.
+
+     TLD: A `Tld_table' data structure representing the restrictions for
+     which the input should be tested.
+
+     Test each of the code points in `in' for whether or not they are
+     allowed by the data structure in `tld', return the position of the
+     first character for which this is not the case in `errpos'.
+
+     *Return value:* Returns the `Tld_rc' value `TLD_SUCCESS' if all
+     code points are valid or when `tld' is null, `TLD_INVALID' if a
+     character is not allowed, or additional error codes on general
+     failure conditions.
+
+tld_check_4tz
+-------------
+
+ -- Function: int tld_check_4tz (const uint32_t * IN, size_t * ERRPOS,
+          const Tld_table * TLD)
+     IN: Zero terminated array of unicode code points to process.
+
+     ERRPOS: Position of offending character is returned here.
+
+     TLD: A `Tld_table' data structure representing the restrictions for
+     which the input should be tested.
+
+     Test each of the code points in `in' for whether or not they are
+     allowed by the data structure in `tld', return the position of the
+     first character for which this is not the case in `errpos'.
+
+     *Return value:* Returns the `Tld_rc' value `TLD_SUCCESS' if all
+     code points are valid or when `tld' is null, `TLD_INVALID' if a
+     character is not allowed, or additional error codes on general
+     failure conditions.
+
+7.3 Utility Functions
+=====================
+
+tld_get_4
+---------
+
+ -- Function: int tld_get_4 (const uint32_t * IN, size_t INLEN, char **
+          OUT)
+     IN: Array of unicode code points to process. Does not need to be
+     zero terminated.
+
+     INLEN: Number of unicode code points.
+
+     OUT: Zero terminated ascii result string pointer.
+
+     Isolate the top-level domain of `in' and return it as an ASCII
+     string in `out'.
+
+     *Return value:* Return `TLD_SUCCESS' on success, or the
+     corresponding `Tld_rc' error code otherwise.
+
+tld_get_4z
+----------
+
+ -- Function: int tld_get_4z (const uint32_t * IN, char ** OUT)
+     IN: Zero terminated array of unicode code points to process.
+
+     OUT: Zero terminated ascii result string pointer.
+
+     Isolate the top-level domain of `in' and return it as an ASCII
+     string in `out'.
+
+     *Return value:* Return `TLD_SUCCESS' on success, or the
+     corresponding `Tld_rc' error code otherwise.
+
+tld_get_z
+---------
+
+ -- Function: int tld_get_z (const char * IN, char ** OUT)
+     IN: Zero terminated character array to process.
+
+     OUT: Zero terminated ascii result string pointer.
+
+     Isolate the top-level domain of `in' and return it as an ASCII
+     string in `out'.  The input string `in' may be UTF-8, ISO-8859-1 or
+     any ASCII compatible character encoding.
+
+     *Return value:* Return `TLD_SUCCESS' on success, or the
+     corresponding `Tld_rc' error code otherwise.
+
+tld_get_table
+-------------
+
+ -- Function: const Tld_table * tld_get_table (const char * TLD, const
+          Tld_table ** TABLES)
+     TLD: TLD name (e.g. "com") as zero terminated ASCII byte string.
+
+     TABLES: Zero terminated array of `Tld_table' info-structures for
+     TLDs.
+
+     Get the TLD table for a named TLD by searching through the given
+     TLD table array.
+
+     *Return value:* Return structure corresponding to TLD `tld' by
+     going thru `tables', or return `NULL' if no such structure is
+     found.
+
+tld_default_table
+-----------------
+
+ -- Function: const Tld_table * tld_default_table (const char * TLD,
+          const Tld_table ** OVERRIDES)
+     TLD: TLD name (e.g. "com") as zero terminated ASCII byte string.
+
+     OVERRIDES: Additional zero terminated array of `Tld_table'
+     info-structures for TLDs, or `NULL' to only use library deault
+     tables.
+
+     Get the TLD table for a named TLD, using the internal defaults,
+     possibly overrided by the (optional) supplied tables.
+
+     *Return value:* Return structure corresponding to TLD `tld_str',
+     first looking through `overrides' then thru built-in list, or
+     `NULL' if no such structure found.
+
+7.4 High-Level Wrapper Functions
+================================
+
+tld_check_4
+-----------
+
+ -- Function: int tld_check_4 (const uint32_t * IN, size_t INLEN,
+          size_t * ERRPOS, const Tld_table ** OVERRIDES)
+     IN: Array of unicode code points to process. Does not need to be
+     zero terminated.
+
+     INLEN: Number of unicode code points.
+
+     ERRPOS: Position of offending character is returned here.
+
+     OVERRIDES: A `Tld_table' array of additional domain restriction
+     structures that complement and supersede the built-in information.
+
+     Test each of the code points in `in' for whether or not they are
+     allowed by the information in `overrides' or by the built-in TLD
+     restriction data. When data for the same TLD is available both
+     internally and in `overrides', the information in `overrides' takes
+     precedence. If several entries for a specific TLD are found, the
+     first one is used.  If `overrides' is `NULL', only the built-in
+     information is used.  The position of the first offending character
+     is returned in `errpos'.
+
+     *Return value:* Returns the `Tld_rc' value `TLD_SUCCESS' if all
+     code points are valid or when `tld' is null, `TLD_INVALID' if a
+     character is not allowed, or additional error codes on general
+     failure conditions.
+
+tld_check_4z
+------------
+
+ -- Function: int tld_check_4z (const uint32_t * IN, size_t * ERRPOS,
+          const Tld_table ** OVERRIDES)
+     IN: Zero-terminated array of unicode code points to process.
+
+     ERRPOS: Position of offending character is returned here.
+
+     OVERRIDES: A `Tld_table' array of additional domain restriction
+     structures that complement and supersede the built-in information.
+
+     Test each of the code points in `in' for whether or not they are
+     allowed by the information in `overrides' or by the built-in TLD
+     restriction data. When data for the same TLD is available both
+     internally and in `overrides', the information in `overrides' takes
+     precedence. If several entries for a specific TLD are found, the
+     first one is used.  If `overrides' is `NULL', only the built-in
+     information is used.  The position of the first offending character
+     is returned in `errpos'.
+
+     *Return value:* Returns the `Tld_rc' value `TLD_SUCCESS' if all
+     code points are valid or when `tld' is null, `TLD_INVALID' if a
+     character is not allowed, or additional error codes on general
+     failure conditions.
+
+tld_check_8z
+------------
+
+ -- Function: int tld_check_8z (const char * IN, size_t * ERRPOS, const
+          Tld_table ** OVERRIDES)
+     IN: Zero-terminated UTF8 string to process.
+
+     ERRPOS: Position of offending character is returned here.
+
+     OVERRIDES: A `Tld_table' array of additional domain restriction
+     structures that complement and supersede the built-in information.
+
+     Test each of the characters in `in' for whether or not they are
+     allowed by the information in `overrides' or by the built-in TLD
+     restriction data. When data for the same TLD is available both
+     internally and in `overrides', the information in `overrides' takes
+     precedence. If several entries for a specific TLD are found, the
+     first one is used.  If `overrides' is `NULL', only the built-in
+     information is used.  The position of the first offending character
+     is returned in `errpos'.  Note that the error position refers to
+     the decoded character offset rather than the byte position in the
+     string.
+
+     *Return value:* Returns the `Tld_rc' value `TLD_SUCCESS' if all
+     characters are valid or when `tld' is null, `TLD_INVALID' if a
+     character is not allowed, or additional error codes on general
+     failure conditions.
+
+tld_check_lz
+------------
+
+ -- Function: int tld_check_lz (const char * IN, size_t * ERRPOS, const
+          Tld_table ** OVERRIDES)
+     IN: Zero-terminated string in the current locales encoding to
+     process.
+
+     ERRPOS: Position of offending character is returned here.
+
+     OVERRIDES: A `Tld_table' array of additional domain restriction
+     structures that complement and supersede the built-in information.
+
+     Test each of the characters in `in' for whether or not they are
+     allowed by the information in `overrides' or by the built-in TLD
+     restriction data. When data for the same TLD is available both
+     internally and in `overrides', the information in `overrides' takes
+     precedence. If several entries for a specific TLD are found, the
+     first one is used.  If `overrides' is `NULL', only the built-in
+     information is used.  The position of the first offending character
+     is returned in `errpos'.  Note that the error position refers to
+     the decoded character offset rather than the byte position in the
+     string.
+
+     *Return value:* Returns the `Tld_rc' value `TLD_SUCCESS' if all
+     characters are valid or when `tld' is null, `TLD_INVALID' if a
+     character is not allowed, or additional error codes on general
+     failure conditions.
+
+7.5 Error Handling
+==================
+
+tld_strerror
+------------
+
+ -- Function: const char * tld_strerror (Tld_rc RC)
+     RC: tld return code
+
+     Convert a return code integer to a text string.  This string can be
+     used to output a diagnostic message to the user.
+
+     *TLD_SUCCESS:* Successful operation.  This value is guaranteed to
+     always be zero, the remaining ones are only guaranteed to hold
+     non-zero values, for logical comparison purposes.
+
+     *TLD_INVALID:* Invalid character found.
+
+     *TLD_NODATA:* No input data was provided.
+
+     *TLD_MALLOC_ERROR:* Error during memory allocation.
+
+     *TLD_ICONV_ERROR:* Error during iconv string conversion.
+
+     *TLD_NO_TLD:* No top-level domain found in domain string.
+
+     *Return value:* Returns a pointer to a statically allocated string
+     containing a description of the error with the return code `rc'.
+
+\1f
+File: libidn.info,  Node: PR29 Functions,  Next: Examples,  Prev: TLD Functions,  Up: Top
+
+8 PR29 Functions
+****************
+
+A deficiency in the specification of Unicode Normalization Forms has
+been found.  The consequence is that some strings can be normalized
+into different strings by different implementations.  In other words,
+two different implementations may return different output for the same
+input (because the interpretation of the specification is ambiguous).
+Further, an implementation invoked again on the one of the output
+strings may return a different string (because one of the
+interpretation of the ambiguous specification make normalization
+non-idempotent).  Fortunately, only a select few character sequence
+exhibit this problem, and none of them are expected to occur in natural
+languages (due to different linguistic uses of the involved characters).
+
+   A full discussion of the problem may be found at:
+
+   `http://www.unicode.org/review/pr-29.html'
+
+   The PR29 functions below allow you to detect the problem sequence.
+So when would you want to use these functions?  For most applications,
+such as those using Nameprep for IDN, this is likely only to be an
+interoperability problem.  Thus, you may not want to care about it, as
+the character sequences will rarely occur naturally.  However, if you
+are using a profile, such as SASLPrep, to process authentication
+tokens; authorization tokens; or passwords, there is a real danger that
+attackers may try to use the peculiarities in these strings to attack
+parts of your system.  As only a small number of strings, and no
+naturally occurring strings, exhibit this problem, the conservative
+approach of rejecting the strings is recommended.  If this approach is
+not used, you should instead verify that all parts of your system, that
+process the tokens and passwords, use a NFKC implementation that
+produce the same output for the same input.
+
+   Technically inclined readers may be interested in knowing more about
+the implementation aspects of the PR29 flaw. *Note PR29 discussion::.
+
+8.1 Header file `pr29.h'
+========================
+
+To use the functions explained in this chapter, you need to include the
+file `pr29.h' using:
+
+     #include <pr29.h>
+
+8.2 Core Functions
+==================
+
+pr29_4
+------
+
+ -- Function: int pr29_4 (const uint32_t * IN, size_t LEN)
+     IN: input array with unicode code points.
+
+     LEN: length of input array with unicode code points.
+
+     Check the input to see if it may be normalized into different
+     strings by different NFKC implementations, due to an anomaly in the
+     NFKC specifications.
+
+     *Return value:* Returns the `Pr29_rc' value `PR29_SUCCESS' on
+     success, and `PR29_PROBLEM' if the input sequence is a "problem
+     sequence" (i.e., may be normalized into different strings by
+     different implementations).
+
+8.3 Utility Functions
+=====================
+
+pr29_4z
+-------
+
+ -- Function: int pr29_4z (const uint32_t * IN)
+     IN: zero terminated array of Unicode code points.
+
+     Check the input to see if it may be normalized into different
+     strings by different NFKC implementations, due to an anomaly in the
+     NFKC specifications.
+
+     *Return value:* Returns the `Pr29_rc' value `PR29_SUCCESS' on
+     success, and `PR29_PROBLEM' if the input sequence is a "problem
+     sequence" (i.e., may be normalized into different strings by
+     different implementations).
+
+pr29_8z
+-------
+
+ -- Function: int pr29_8z (const char * IN)
+     IN: zero terminated input UTF-8 string.
+
+     Check the input to see if it may be normalized into different
+     strings by different NFKC implementations, due to an anomaly in the
+     NFKC specifications.
+
+     *Return value:* Returns the `Pr29_rc' value `PR29_SUCCESS' on
+     success, and `PR29_PROBLEM' if the input sequence is a "problem
+     sequence" (i.e., may be normalized into different strings by
+     different implementations), or `PR29_STRINGPREP_ERROR' if there
+     was a problem converting the string from UTF-8 to UCS-4.
+
+8.4 Error Handling
+==================
+
+pr29_strerror
+-------------
+
+ -- Function: const char * pr29_strerror (Pr29_rc RC)
+     RC: an `Pr29_rc' return code.
+
+     Convert a return code integer to a text string.  This string can be
+     used to output a diagnostic message to the user.
+
+     *PR29_SUCCESS:* Successful operation.  This value is guaranteed to
+     always be zero, the remaining ones are only guaranteed to hold
+     non-zero values, for logical comparison purposes.
+
+     *PR29_PROBLEM:* A problem sequence was encountered.
+
+     *PR29_STRINGPREP_ERROR:* The character set conversion failed (only
+     for `pr29_8()' and `pr29_8z()').
+
+     *Return value:* Returns a pointer to a statically allocated string
+     containing a description of the error with the return code `rc'.
+
+\1f
+File: libidn.info,  Node: Examples,  Next: Invoking idn,  Prev: PR29 Functions,  Up: Top
+
+9 Examples
+**********
+
+This chapter contains example code which illustrate how `Libidn' can be
+used when writing your own application.
+
+* Menu:
+
+* Example 1::          Example using stringprep.
+* Example 2::          Example using punycode.
+* Example 3::          Example using IDNA ToASCII.
+* Example 4::          Example using IDNA ToUnicode.
+* Example 5::          Example using TLD checking.
+
+\1f
+File: libidn.info,  Node: Example 1,  Next: Example 2,  Up: Examples
+
+9.1 Example 1
+=============
+
+This example demonstrates how the stringprep functions are used.
+
+/* example.c --- Example code showing how to use stringprep().
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>            /* setlocale() */
+#include <stringprep.h>
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example example.c `pkg-config --cflags --libs libidn`
+ * $ ./example
+ * Input string encoded as `ISO-8859-1': ª
+ * Before locale2utf8 (length 2): aa 0a
+ * Before stringprep (length 3): c2 aa 0a
+ * After stringprep (length 2): 61 0a
+ * $
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  int rc;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+
+  printf ("Input string encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+
+  printf ("Before locale2utf8 (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  p = stringprep_locale_to_utf8 (buf);
+  if (p)
+    {
+      strcpy (buf, p);
+      free (p);
+    }
+  else
+    printf ("Could not convert string to UTF-8, continuing anyway...\n");
+
+  printf ("Before stringprep (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  rc = stringprep (buf, BUFSIZ, 0, stringprep_nameprep);
+  if (rc != STRINGPREP_OK)
+    printf ("Stringprep failed (%d): %s\n", rc, stringprep_strerror (rc));
+  else
+    {
+      printf ("After stringprep (length %d): ", strlen (buf));
+      for (i = 0; i < strlen (buf); i++)
+       printf ("%02x ", buf[i] & 0xFF);
+      printf ("\n");
+    }
+
+  return 0;
+}
+
+\1f
+File: libidn.info,  Node: Example 2,  Next: Example 3,  Prev: Example 1,  Up: Examples
+
+9.2 Example 2
+=============
+
+This example demonstrates how the punycode functions are used.
+
+/* example2.c --- Example code showing how to use punycode.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ * Copyright (C) 2002  Adam M. Costello
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <locale.h>            /* setlocale() */
+
+/*
+ * This file is derived from RFC 3492 written by Adam M. Costello.
+ *
+ * Disclaimer and license: Regarding this entire document or any
+ * portion of it (including the pseudocode and C code), the author
+ * makes no guarantees and is not responsible for any damage resulting
+ * from its use.  The author grants irrevocable permission to anyone
+ * to use, modify, and distribute it in any way that does not diminish
+ * the rights of anyone else to use, modify, and distribute it,
+ * provided that redistributed derivative works do not contain
+ * misleading author or version information.  Derivative works need
+ * not be licensed under similar terms.
+ *
+ */
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <punycode.h>
+
+/* For testing, we'll just set some compile-time limits rather than */
+/* use malloc(), and set a compile-time option rather than using a  */
+/* command-line option.                                             */
+
+enum
+{
+  unicode_max_length = 256,
+  ace_max_length = 256
+};
+
+static void
+usage (char **argv)
+{
+  fprintf (stderr,
+          "\n"
+          "%s -e reads code points and writes a Punycode string.\n"
+          "%s -d reads a Punycode string and writes code points.\n"
+          "\n"
+          "Input and output are plain text in the native character set.\n"
+          "Code points are in the form u+hex separated by whitespace.\n"
+          "Although the specification allows Punycode strings to contain\n"
+          "any characters from the ASCII repertoire, this test code\n"
+          "supports only the printable characters, and needs the Punycode\n"
+          "string to be followed by a newline.\n"
+          "The case of the u in u+hex is the force-to-uppercase flag.\n",
+          argv[0], argv[0]);
+  exit (EXIT_FAILURE);
+}
+
+static void
+fail (const char *msg)
+{
+  fputs (msg, stderr);
+  exit (EXIT_FAILURE);
+}
+
+static const char too_big[] =
+  "input or output is too large, recompile with larger limits\n";
+static const char invalid_input[] = "invalid input\n";
+static const char overflow[] = "arithmetic overflow\n";
+static const char io_error[] = "I/O error\n";
+
+/* The following string is used to convert printable */
+/* characters between ASCII and the native charset:  */
+
+static const char print_ascii[] = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" " !\"#$%&'()*+,-./" "0123456789:;<=>?" "\0x40" /* at sign */
+  "ABCDEFGHIJKLMNO"
+  "PQRSTUVWXYZ[\\]^_" "`abcdefghijklmno" "pqrstuvwxyz{|}~\n";
+
+int
+main (int argc, char **argv)
+{
+  enum punycode_status status;
+  int r;
+  size_t input_length, output_length, j;
+  unsigned char case_flags[unicode_max_length];
+
+  setlocale (LC_ALL, "");
+
+  if (argc != 2)
+    usage (argv);
+  if (argv[1][0] != '-')
+    usage (argv);
+  if (argv[1][2] != 0)
+    usage (argv);
+
+  if (argv[1][1] == 'e')
+    {
+      uint32_t input[unicode_max_length];
+      unsigned long codept;
+      char output[ace_max_length + 1], uplus[3];
+      int c;
+
+      /* Read the input code points: */
+
+      input_length = 0;
+
+      for (;;)
+       {
+         r = scanf ("%2s%lx", uplus, &codept);
+         if (ferror (stdin))
+           fail (io_error);
+         if (r == EOF || r == 0)
+           break;
+
+         if (r != 2 || uplus[1] != '+' || codept > (uint32_t) - 1)
+           {
+             fail (invalid_input);
+           }
+
+         if (input_length == unicode_max_length)
+           fail (too_big);
+
+         if (uplus[0] == 'u')
+           case_flags[input_length] = 0;
+         else if (uplus[0] == 'U')
+           case_flags[input_length] = 1;
+         else
+           fail (invalid_input);
+
+         input[input_length++] = codept;
+       }
+
+      /* Encode: */
+
+      output_length = ace_max_length;
+      status = punycode_encode (input_length, input, case_flags,
+                               &output_length, output);
+      if (status == punycode_bad_input)
+       fail (invalid_input);
+      if (status == punycode_big_output)
+       fail (too_big);
+      if (status == punycode_overflow)
+       fail (overflow);
+      assert (status == punycode_success);
+
+      /* Convert to native charset and output: */
+
+      for (j = 0; j < output_length; ++j)
+       {
+         c = output[j];
+         assert (c >= 0 && c <= 127);
+         if (print_ascii[c] == 0)
+           fail (invalid_input);
+         output[j] = print_ascii[c];
+       }
+
+      output[j] = 0;
+      r = puts (output);
+      if (r == EOF)
+       fail (io_error);
+      return EXIT_SUCCESS;
+    }
+
+  if (argv[1][1] == 'd')
+    {
+      char input[ace_max_length + 2], *p, *pp;
+      uint32_t output[unicode_max_length];
+
+      /* Read the Punycode input string and convert to ASCII: */
+
+      fgets (input, ace_max_length + 2, stdin);
+      if (ferror (stdin))
+       fail (io_error);
+      if (feof (stdin))
+       fail (invalid_input);
+      input_length = strlen (input) - 1;
+      if (input[input_length] != '\n')
+       fail (too_big);
+      input[input_length] = 0;
+
+      for (p = input; *p != 0; ++p)
+       {
+         pp = strchr (print_ascii, *p);
+         if (pp == 0)
+           fail (invalid_input);
+         *p = pp - print_ascii;
+       }
+
+      /* Decode: */
+
+      output_length = unicode_max_length;
+      status = punycode_decode (input_length, input, &output_length,
+                               output, case_flags);
+      if (status == punycode_bad_input)
+       fail (invalid_input);
+      if (status == punycode_big_output)
+       fail (too_big);
+      if (status == punycode_overflow)
+       fail (overflow);
+      assert (status == punycode_success);
+
+      /* Output the result: */
+
+      for (j = 0; j < output_length; ++j)
+       {
+         r = printf ("%s+%04lX\n",
+                     case_flags[j] ? "U" : "u", (unsigned long) output[j]);
+         if (r < 0)
+           fail (io_error);
+       }
+
+      return EXIT_SUCCESS;
+    }
+
+  usage (argv);
+  return EXIT_SUCCESS;         /* not reached, but quiets compiler warning */
+}
+
+\1f
+File: libidn.info,  Node: Example 3,  Next: Example 4,  Prev: Example 2,  Up: Examples
+
+9.3 Example 3
+=============
+
+This example demonstrates how the library is used to convert
+internationalized domain names into ASCII compatible names.
+
+/* example3.c --- Example ToASCII() code showing how to use Libidn.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>            /* setlocale() */
+#include <stringprep.h>                /* stringprep_locale_charset() */
+#include <idna.h>              /* idna_to_ascii_lz() */
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example3 example3.c `pkg-config --cflags --libs libidn`
+ * $ ./example3
+ * Input domain encoded as `ISO-8859-1': www.räksmörgåsª.example
+ * Read string (length 23): 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 aa 2e 65 78 61 6d 70 6c 65
+ * ACE label (length 33): 'www.xn--rksmrgsa-0zap8p.example'
+ * 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65
+ * $
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  int rc;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+
+  printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+  buf[strlen (buf) - 1] = '\0';
+
+  printf ("Read string (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  rc = idna_to_ascii_lz (buf, &p, 0);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("ToASCII() failed (%d): %s\n", rc, idna_strerror (rc));
+      exit (1);
+    }
+
+  printf ("ACE label (length %d): '%s'\n", strlen (p), p);
+  for (i = 0; i < strlen (p); i++)
+    printf ("%02x ", p[i] & 0xFF);
+  printf ("\n");
+
+  free (p);
+
+  return 0;
+}
+
+\1f
+File: libidn.info,  Node: Example 4,  Next: Example 5,  Prev: Example 3,  Up: Examples
+
+9.4 Example 4
+=============
+
+This example demonstrates how the library is used to convert ASCII
+compatible names to internationalized domain names.
+
+/* example4.c --- Example ToUnicode() code showing how to use Libidn.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>            /* setlocale() */
+#include <stringprep.h>                /* stringprep_locale_charset() */
+#include <idna.h>              /* idna_to_unicode_lzlz() */
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example4 example4.c `pkg-config --cflags --libs libidn`
+ * $ ./example4
+ * Input domain encoded as `ISO-8859-1': www.xn--rksmrgsa-0zap8p.example
+ * Read string (length 33): 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65
+ * ACE label (length 23): 'www.räksmörgåsa.example'
+ * 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 61 2e 65 78 61 6d 70 6c 65
+ * $
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  int rc;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+
+  printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+  buf[strlen (buf) - 1] = '\0';
+
+  printf ("Read string (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  rc = idna_to_unicode_lzlz (buf, &p, 0);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("ToUnicode() failed (%d): %s\n", rc, idna_strerror (rc));
+      exit (1);
+    }
+
+  printf ("ACE label (length %d): '%s'\n", strlen (p), p);
+  for (i = 0; i < strlen (p); i++)
+    printf ("%02x ", p[i] & 0xFF);
+  printf ("\n");
+
+  free (p);
+
+  return 0;
+}
+
+\1f
+File: libidn.info,  Node: Example 5,  Prev: Example 4,  Up: Examples
+
+9.5 Example 5
+=============
+
+This example demonstrates how the library is used to check a string for
+invalid characters within a specific TLD.
+
+/* example5.c --- Example TLD checking.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Get stringprep_locale_charset, etc. */
+#include <stringprep.h>
+
+/* Get idna_to_ascii_8z, etc. */
+#include <idna.h>
+
+/* Get tld_check_4z. */
+#include <tld.h>
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example5 example5.c `pkg-config --cflags --libs libidn`
+ * $ ./example5
+ * Input domain encoded as `UTF-8': fooß.no
+ * Read string (length 8): 66 6f 6f c3 9f 2e 6e 6f
+ * ToASCII string (length 8): fooss.no
+ * ToUnicode string: U+0066 U+006f U+006f U+0073 U+0073 U+002e U+006e U+006f
+ * Domain accepted by TLD check
+ *
+ * $ ./example5
+ * Input domain encoded as `UTF-8': gr€€n.no
+ * Read string (length 12): 67 72 e2 82 ac e2 82 ac 6e 2e 6e 6f
+ * ToASCII string (length 16): xn--grn-l50aa.no
+ * ToUnicode string: U+0067 U+0072 U+20ac U+20ac U+006e U+002e U+006e U+006f
+ * Domain rejected by TLD check, Unicode position 2
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  uint32_t *r;
+  int rc;
+  size_t errpos, i;
+
+  printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+  buf[strlen (buf) - 1] = '\0';
+
+  printf ("Read string (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  p = stringprep_locale_to_utf8 (buf);
+  if (p)
+    {
+      strcpy (buf, p);
+      free (p);
+    }
+  else
+    printf ("Could not convert string to UTF-8, continuing anyway...\n");
+
+  rc = idna_to_ascii_8z (buf, &p, 0);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("idna_to_ascii_8z failed (%d): %s\n", rc, idna_strerror (rc));
+      return 2;
+    }
+
+  printf ("ToASCII string (length %d): %s\n", strlen (p), p);
+
+  rc = idna_to_unicode_8z4z (p, &r, 0);
+  free (p);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("idna_to_unicode_8z4z failed (%d): %s\n",
+             rc, idna_strerror (rc));
+      return 2;
+    }
+
+  printf ("ToUnicode string: ");
+  for (i = 0; r[i]; i++)
+    printf ("U+%04x ", r[i]);
+  printf ("\n");
+
+  rc = tld_check_4z (r, &errpos, NULL);
+  free (r);
+  if (rc == TLD_INVALID)
+    {
+      printf ("Domain rejected by TLD check, Unicode position %d\n", errpos);
+      return 1;
+    }
+  else if (rc != TLD_SUCCESS)
+    {
+      printf ("tld_check_4z() failed (%d): %s\n", rc, tld_strerror (rc));
+      return 2;
+    }
+
+  printf ("Domain accepted by TLD check\n");
+
+  return 0;
+}
+
+\1f
+File: libidn.info,  Node: Invoking idn,  Next: Emacs API,  Prev: Examples,  Up: Top
+
+10 Invoking idn
+***************
+
+10.1 Name
+=========
+
+GNU Libidn (idn) - Internationalized Domain Names command line tool
+
+10.2 Description
+================
+
+`idn' allows internationalized string preparation (`stringprep'),
+encoding and decoding of punycode data, and IDNA ToASCII/ToUnicode
+operations to be performed on the command line.
+
+   If strings are specified on the command line, they are used as input
+and the computed output is printed to standard output `stdout'.  If no
+strings are specified on the command line, the program read data, line
+by line, from the standard input `stdin', and print the computed output
+to standard output.  What processing is performed (e.g., ToASCII, or
+Punycode encode) is indicated by options.  If any errors are
+encountered, the execution of the applications is aborted.
+
+   All strings are expected to be encoded in the preferred charset used
+by your locale.  Use `--debug' to find out what this charset is.  You
+can override the charset used by setting environment variable `CHARSET'.
+
+   To process a string that starts with `-', for example `-foo', use
+`--' to signal the end of parameters, as in `idn --quiet -a -- -foo'.
+
+10.3 Options
+============
+
+`idn' recognizes these commands:
+
+  -h, --help               Print help and exit
+
+  -V, --version            Print version and exit
+
+  -s, --stringprep         Prepare string according to nameprep profile
+
+  -d, --punycode-decode    Decode Punycode
+
+  -e, --punycode-encode    Encode Punycode
+
+  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)
+
+  -u, --idna-to-unicode    Convert from ACE according to IDNA
+
+      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)
+
+      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)
+
+      --no-tld             Don't check string for TLD specific rules
+                             Only for --idna-to-ascii and --idna-to-unicode
+
+  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC
+
+  -p, --profile=STRING     Use specified stringprep profile instead
+                             Valid stringprep profiles: `Nameprep',
+                             `iSCSI', `Nodeprep', `Resourceprep',
+                             `trace', `SASLprep'
+
+      --debug              Print debugging information
+
+      --quiet              Silent operation
+
+10.4 Environment Variables
+==========================
+
+The CHARSET environment variable can be used to override what character
+set to be used for decoding incoming data (i.e., on the command line or
+on the standard input stream), and to encode data to the standard
+output.  If your system is set up correctly, however, the application
+will guess which character set is used automatically.  Example usage:
+
+     $ CHARSET=ISO-8859-1 idn --punycode-encode
+     ...
+
+10.5 Examples
+=============
+
+Standard usage, reading input from standard input:
+
+     jas@latte:~$ idn
+     libidn 0.3.5
+     Copyright 2002, 2003 Simon Josefsson.
+     GNU Libidn comes with NO WARRANTY, to the extent permitted by law.
+     You may redistribute copies of GNU Libidn under the terms of
+     the GNU Lesser General Public License.  For more information
+     about these matters, see the file named COPYING.LIB.
+     Type each input string on a line by itself, terminated by a newline character.
+     räksmörgås.se
+     xn--rksmrgs-5wao1o.se
+     jas@latte:~$
+
+   Reading input from command line, and disabling copyright and license
+information:
+
+     jas@latte:~$ idn --quiet räksmörgås.se blåbærgrød.no
+     xn--rksmrgs-5wao1o.se
+     xn--blbrgrd-fxak7p.no
+     jas@latte:~$
+
+   Accessing a specific StringPrep profile directly:
+
+     jas@latte:~$ idn --quiet --profile=SASLprep --stringprep teßtª
+     teßta
+     jas@latte:~$
+
+10.6 Troubleshooting
+====================
+
+Getting character data encoded right, and making sure Libidn use the
+same encoding, can be difficult.  The reason for this is that most
+systems encode character data in more than one character encoding,
+i.e., using `UTF-8' together with `ISO-8859-1' or `ISO-2022-JP'.  This
+problem is likely to continue to exist until only one character
+encoding come out as the evolutionary winner, or (more likely, at least
+to some extents) forever.
+
+   The first step to troubleshooting character encoding problems with
+Libidn is to use the `--debug' parameter to find out which character
+set encoding `idn' believe your locale uses.
+
+     jas@latte:~$ idn --debug --quiet ""
+     system locale uses charset `UTF-8'.
+
+     jas@latte:~$
+
+   If it prints `ANSI_X3.4-1968' (i.e., `US-ASCII'), this indicate you
+have not configured your locale properly.  To configure the locale, you
+can, for example, use `LANG=sv_SE.UTF-8; export LANG' at a `/bin/sh'
+prompt, to set up your locale for a Swedish environment using `UTF-8'
+as the encoding.
+
+   Sometimes `idn' appear to be unable to translate from your system
+locale into `UTF-8' (which is used internally), and you get an error
+like the following:
+
+     jas@latte:~$ idn --quiet foo
+     idn: could not convert from ISO-8859-1 to UTF-8.
+     jas@latte:~$
+
+   The simplest explanation is that you haven't installed the `iconv'
+conversion tools.  You can find it as a standalone library in GNU
+Libiconv (`http://www.gnu.org/software/libiconv/').  On many GNU/Linux
+systems, this library is part of the system, but you may have to
+install additional packages (e.g., `glibc-locale' for Debian) to be
+able to use it.
+
+   Another explanation is that the error is correct and you are feeding
+`idn' invalid data.  This can happen inadvertently if you are not
+careful with the character set encodings you use.  For example, if your
+shell run in a `ISO-8859-1' environment, and you invoke `idn' with the
+`CHARSET' environment variable as follows, you will feed it
+`ISO-8859-1' characters but force it to believe they are `UTF-8'.
+Naturally this will lead to an error, unless the byte sequences happen
+to be parsable as `UTF-8'.  Note that even if you don't get an error,
+the output may be incorrect in this situation, because `ISO-8859-1' and
+`UTF-8' does not in general encode the same characters as the same byte
+sequences.
+
+     jas@latte:~$ idn --quiet --debug ""
+     system locale uses charset `ISO-8859-1'.
+
+     jas@latte:~$ CHARSET=UTF-8 idn --quiet --debug räksmörgås
+     system locale uses charset `UTF-8'.
+     input[0] = U+0072
+     input[1] = U+4af3
+     input[2] = U+006d
+     input[3] = U+1b29e5
+     input[4] = U+0073
+     output[0] = U+0078
+     output[1] = U+006e
+     output[2] = U+002d
+     output[3] = U+002d
+     output[4] = U+0072
+     output[5] = U+006d
+     output[6] = U+0073
+     output[7] = U+002d
+     output[8] = U+0068
+     output[9] = U+0069
+     output[10] = U+0036
+     output[11] = U+0064
+     output[12] = U+0035
+     output[13] = U+0039
+     output[14] = U+0037
+     output[15] = U+0035
+     output[16] = U+0035
+     output[17] = U+0032
+     output[18] = U+0061
+     xn--rms-hi6d597552a
+     jas@latte:~$
+
+   The sense moral here is to forget about `CHARSET' (configure your
+locales properly instead) unless you know what you are doing, and if
+you want to use it, do it carefully, after verifying with `--debug'
+that you get the desired results.
+
+\1f
+File: libidn.info,  Node: Emacs API,  Next: Java API,  Prev: Invoking idn,  Up: Top
+
+11 Emacs API
+************
+
+Included in Libidn are `punycode.el' and `idna.el' that provides an
+Emacs Lisp API to (a limited set of) the Libidn API.  This section
+describes the API.  Currently the IDNA API always set the
+`UseSTD3ASCIIRules' flag and clear the `AllowUnassigned' flag, in the
+future there may be functionality to specify these flags via the API.
+
+11.1 Punycode Emacs API
+=======================
+
+ -- Variable: punycode-program
+     Name of the GNU Libidn `idn' application.  The default is `idn'.
+     This variable can be customized.
+
+ -- Variable: punycode-environment
+     List of environment variable definitions prepended to
+     `process-environment'.  The default is `("CHARSET=UTF-8")'.  This
+     variable can be customized.
+
+ -- Variable: punycode-encode-parameters
+     List of parameters passed to PUNYCODE-PROGRAM to invoke punycode
+     encoding mode.  The default is `("--quiet" "--punycode-encode")'.
+     This variable can be customized.
+
+ -- Variable: punycode-decode-parameters
+     Parameters passed to PUNYCODE-PROGRAM to invoke punycode decoding
+     mode.  The default is `("--quiet" "--punycode-decode")'.  This
+     variable can be customized.
+
+ -- Function: punycode-encode string
+     Returns a Punycode encoding of the STRING, after converting the
+     input into UTF-8.
+
+ -- Function: punycode-decode string
+     Returns a possibly multibyte string which is the decoding of the
+     STRING which is a punycode encoded string.
+
+11.2 IDNA Emacs API
+===================
+
+ -- Variable: idna-program
+     Name of the GNU Libidn `idn' application.  The default is `idn'.
+     This variable can be customized.
+
+ -- Variable: idna-environment
+     List of environment variable definitions prepended to
+     `process-environment'.  The default is `("CHARSET=UTF-8")'.  This
+     variable can be customized.
+
+ -- Variable: idna-to-ascii-parameters
+     List of parameters passed to IDNA-PROGRAM to invoke IDNA ToASCII
+     mode.  The default is `("--quiet" "--idna-to-ascii"
+     "--usestd3asciirules")'.  This variable can be customized.
+
+ -- Variable: idna-to-unicode-parameters
+     Parameters passed IDNA-PROGRAM to invoke IDNA ToUnicode mode.  The
+     default is `("--quiet" "--idna-to-unicode"
+     "--usestd3asciirules")'.  This variable can be customized.
+
+ -- Function: idna-to-ascii string
+     Returns an ASCII Compatible Encoding (ACE) of the string computed
+     by the IDNA ToASCII operation on the input STRING, after converting
+     the input to UTF-8.
+
+ -- Function: idna-to-unicode string
+     Returns a possibly multibyte string which is the output of the IDNA
+     ToUnicode operation computed on the input STRING.
+
+\1f
+File: libidn.info,  Node: Java API,  Next: C# API,  Prev: Emacs API,  Up: Top
+
+12 Java API
+***********
+
+Libidn has been ported to the Java programming language, and as a
+consequence most of the API is available to native Java applications.
+This section contain notes on this support, complete documentation is
+pending.
+
+   The Java library, if Libidn has been built with Java support (*note
+Downloading and Installing::), will be placed in
+`java/libidn-1.15.jar'.  The source code is located in
+`java/gnu/inet/encoding/'.
+
+12.1 Overview
+=============
+
+This package provides a Java implementation of the Internationalized
+Domain Names in Applications (IDNA) standard. It is written entirely in
+Java and does not require any additional libraries to be set up.
+
+   The gnu.inet.encoding.IDNA class offers two public functions, toASCII
+and toUnicode which can be used as follows:
+
+     gnu.inet.encoding.IDNA.toASCII("blöds.züg");
+     gnu.inet.encoding.IDNA.toUnicode("xn--blds-6qa.xn--zg-xka");
+
+12.2 Miscellaneous Programs
+===========================
+
+The `misc/' directory contains several programs that are related to the
+Java part of GNU Libidn, but that don't need to be included in the main
+source tree.
+
+12.2.1 GenerateRFC3454
+----------------------
+
+This program parses RFC3454 and creates the RFC3454.java program that
+is required during the StringPrep phase.
+
+   The RFC can be found at various locations, for example at
+`http://www.ietf.org/rfc/rfc3454.txt'.
+
+   Invoke the program as follows:
+
+     $ java GenerateRFC3454
+     Creating RFC3454.java... Ok.
+
+12.2.2 GenerateNFKC
+-------------------
+
+The GenerateNFKC program parses the Unicode character database file and
+generates all the tables required for NFKC. This program requires the
+two files UnicodeData.txt and CompositionExclusions.txt of version 3.2
+of the Unicode files. Note that RFC3454 (Stringprep) defines that
+Unicode version 3.2 is to be used, not the latest version.
+
+   The Unicode data files can be found at
+`http://www.unicode.org/Public/'.
+
+   Invoke the program as follows:
+
+     $ java GenerateNFKC
+     Creating CombiningClass.java... Ok.
+     Creating DecompositionKeys.java... Ok.
+     Creating DecompositionMappings.java... Ok.
+     Creating Composition.java... Ok.
+
+12.2.3 TestIDNA
+---------------
+
+The TestIDNA program allows to test the IDNA implementation manually or
+against Simon Josefsson's test vectors.
+
+   The test vectors can be found at the Libidn homepage,
+`http://www.gnu.org/software/libidn/'.
+
+   To test the tranformation manually, use:
+
+     $ java -cp .:../libidn.jar TestIDNA -a <string to test>
+     Input: <string to test>
+     Output: <toASCII(string to test)>
+     $ java -cp .:../libidn.jar TestIDNA -u <string to test>
+     Input: <string to test>
+     Output: <toUnicode(string to test)>
+
+   To test against draft-josefsson-idn-test-vectors.html, use:
+
+     $ java -cp .:../libidn.jar TestIDNA -t
+     No errors detected!
+
+12.2.4 TestNFKC
+---------------
+
+The TestNFKC program allows to test the NFKC implementation manually or
+against the NormalizationTest.txt file from the Unicode data files.
+
+   To test the normalization manually, use:
+
+     $ java -cp .:../libidn.jar TestNFKC <string to test>
+     Input: <string to test>
+     Output: <nfkc version of the string to test>
+
+   To test against NormalizationTest.txt:
+
+     $ java -cp .:../libidn.jar TestNFKC
+     No errors detected!
+
+12.3 Possible Problems
+======================
+
+Beware of Bugs: This Java API needs a lot more testing, especially with
+"exotic" character sets. While it works for me, it may not work for you.
+
+   Encoding of your Java sources: If you are using non-ASCII characters
+in your Java source code, make sure javac compiles your programs with
+the correct encoding. If necessary specify the encoding using the
+-encoding parameter.
+
+   Java Unicode handling: Java 1.4 only handles 16-bit Unicode code
+points (i.e. characters in the Basic Multilingual Plane), this
+implementation therefore ignores all references to so-called
+Supplementary Characters (U+10000 to U+10FFFF). Starting from Java 1.5,
+these characters will also be supported by Java, but this will require
+changes to this library.  See also the next section.
+
+12.4 A Note on Java and Unicode
+===============================
+
+This library uses Java's builtin 'char' datatype. Up to Java 1.4, this
+datatype only supports 16-bit Unicode code points, also called the
+Basic Multilingual Plane. For this reason, this library doesn't work
+for Supplementary Characters (i.e. characters from U+10000 to
+U+10FFFF). All references to such characters are silently ignored.
+
+   Starting from Java 1.5, also Supplementary Characters will be
+supported. However, this will require changes in the present version of
+the library. Java 1.5 is currently in beta status.
+
+   For more information refer to the documentation of
+java.lang.Character in the JDK API.
+
+\1f
+File: libidn.info,  Node: C# API,  Next: Acknowledgements,  Prev: Java API,  Up: Top
+
+13 C# API
+*********
+
+The Libidn library has been ported to the C# language.  The port reside
+in the top-level `csharp/' directory.  Currently, no further
+documentation about the implementation or the API is available.
+However, the C# port was based on the Java port, and the API is exactly
+the same as in the Java version.  The help files for the Java API may
+thus be useful.
+
+\1f
+File: libidn.info,  Node: Acknowledgements,  Next: History,  Prev: C# API,  Up: Top
+
+14 Acknowledgements
+*******************
+
+The punycode implementation was taken from the IETF IDN Punycode
+specification, by Adam M. Costello.  The TLD code was contributed by
+Thomas Jacob.  The Java implementation was contributed by Oliver Hitz.
+The C# implementation was contributed by Alexander Gnauck.  The Unicode
+tables were provided by Unicode, Inc.  Some functions for dealing with
+Unicode (see nfkc.c and toutf8.c) were borrowed from GLib, downloaded
+from `http://www.gtk.org/'.  The manual borrowed text from Libgcrypt by
+Werner Koch.
+
+   Inspiration for many things that, consciously or not, have gone into
+this package is due to a number of free software package that the
+author has been exposed to.  The author wishes to acknowledge the free
+software community in general, for giving an example on what role
+software development can play in the modern society.
+
+   Several people reported bugs, sent patches or suggested improvements,
+see the file THANKS in the top-level directory of the source code.
+
+\1f
+File: libidn.info,  Node: History,  Next: PR29 discussion,  Prev: Acknowledgements,  Up: Top
+
+15 History
+**********
+
+The complete history of user visible changes is stored in the file
+`NEWS' in the top-level directory of the source code tree.  The
+complete history of modifications to each file is stored in the file
+`ChangeLog' in the same directory.  This section contain a condensed
+version of that information, in the form of "milestones" for the
+project.
+
+Stringprep implementation.
+     Version 0.0.0 released on 2002-11-05.
+
+IDNA and Punycode implementations, part of the GNU project.
+     Version 0.1.0 released on 2003-01-05.
+
+Uses official IDNA ACE prefix `xn--'.
+     Version 0.1.7 released on 2003-02-12.
+
+Command line interface.
+     Version 0.1.11 released on 2003-02-26.
+
+GNU Libc add-on proposed.
+     Version 0.1.12 released on 2003-03-06.
+
+Interoperability testing during IDNConnect.
+     Version 0.3.1 released on 2003-10-02.
+
+TLD restriction testing.
+     Version 0.4.0 released on 2004-02-28.
+
+GNU Libc add-on integrated.
+     Version 0.4.1 released on 2004-03-08.
+
+Native Java implementation.
+     Version 0.4.2-0.4.9 released between 2004-03-20 and 2004-06-11.
+
+PR-29 functions for "problem sequences".
+     Version 0.5.0 released on 2004-06-26.
+
+Many small portability fixes and wider use.
+     Version 0.5.1 through 0.5.20, released between 2004-07-09 and
+     2005-10-23.
+
+Native C# implementation.
+     Version 0.6.0 released on 2005-12-03.
+
+Windows support through cross-compilation.
+     Version 0.6.1 released on 2006-01-20.
+
+Library declared stable by releasing v1.0.
+     Version 1.0 released on 2007-07-31.
+
+
+\1f
+File: libidn.info,  Node: PR29 discussion,  Next: On Label Separators,  Prev: History,  Up: Top
+
+Appendix A PR29 discussion
+**************************
+
+If you wish to experiment with a modified Unicode NFKC implementation
+according to the PR29 proposal, you may find the following bug report
+useful.  However, I have not verified that the suggested modifications
+are correct.  For reference, I'm including my response to the report as
+well.
+
+From: Rick McGowan <rick@unicode.org>
+Subject: Possible bug and status of PR 29 change(s)
+To: bug-libidn@gnu.org
+Date: Wed, 27 Oct 2004 14:49:17 -0700
+
+Hello. On behalf of the Unicode Consortium editorial committee, I would
+like to find out more information about the PR 29 fixes, if any, and
+functions in Libidn. Your implementation was listed in the text of PR29 as
+needing investigation, so I am following up on several implementations.
+
+The UTC has accepted the proposed fix to D2 as outlined in PR29, and a new
+draft of UAX #15 has been issued.
+
+I have looked at Libidn 0.5.8 (today), and there may still be a possible
+bug in NFKC.java and nfkc.c.
+
+------------------------------------------------------
+
+1. In NFKC.java, this line in canonicalOrdering():
+
+      if (i > 0 && (last_cc == 0 || last_cc != cc)) {
+
+should perhaps be changed to:
+
+      if (i > 0 && (last_cc == 0 || last_cc < cc)) {
+
+but I'm not sure of the sense of this comparison.
+
+------------------------------------------------------
+
+2. In nfkc.c, function _g_utf8_normalize_wc() has this code:
+
+         if (i > 0 &&
+             (last_cc == 0 || last_cc != cc) &&
+             combine (wc_buffer[last_start], wc_buffer[i],
+                      &wc_buffer[last_start]))
+           {
+
+This appears to have the same bug as the current Python implementation (in
+Python 2.3.4). The code should be checking, as per new rule D2 UAX #15
+update, that the next combining character is the same or HIGHER than the
+current one. It now checks to see if it's non-zero and not equal.
+
+The above line(s) should perhaps be changed to:
+
+         if (i > 0 &&
+             (last_cc == 0 || last_cc < cc) &&
+             combine (wc_buffer[last_start], wc_buffer[i],
+                      &wc_buffer[last_start]))
+           {
+
+but I'm not sure of the sense of the comparison (< or > or <=?) here.
+
+In the text of PR29, I will be marking Libidn as "needs change" and adding
+the version number that I checked. If any further change is made, please
+let me know the release version, and I'll update again.
+
+Regards,
+       Rick McGowan
+
+From: Simon Josefsson <jas@extundo.com>
+Subject: Re: Possible bug and status of PR 29 change(s)
+To: Rick McGowan <rick@unicode.org>
+Cc: bug-libidn@gnu.org
+Date: Thu, 28 Oct 2004 09:47:47 +0200
+
+Rick McGowan <rick@unicode.org> writes:
+
+> Hello. On behalf of the Unicode Consortium editorial committee, I would
+> like to find out more information about the PR 29 fixes, if any, and
+> functions in Libidn. Your implementation was listed in the text of PR29 as
+> needing investigation, so I am following up on several implementations.
+>
+> The UTC has accepted the proposed fix to D2 as outlined in PR29, and a new
+> draft of UAX #15 has been issued.
+>
+> I have looked at Libidn 0.5.8 (today), and there may still be a possible
+> bug in NFKC.java and nfkc.c.
+
+Hello Rick.
+
+I believe the current behavior is intentional.  Libidn do not aim to
+implement latest-and-greatest NFKC, it aim to implement the NFKC
+functionality required for StringPrep and IDN.  As you may know,
+StringPrep/IDN reference Unicode 3.2.0, and explicitly says any later
+changes (which I consider PR29 as) do not apply.
+
+In fact, I believe that would I incorporate the changes suggested in
+PR29, I would in fact be violating the IDN specifications.
+
+Thanks for looking into the code and finding the place where the
+change could be made.  I'll see if I can mention this in the manual
+somewhere, for technically interested readers.
+
+Regards,
+Simon
+
+\1f
+File: libidn.info,  Node: On Label Separators,  Next: Copying Information,  Prev: PR29 discussion,  Up: Top
+
+Appendix B On Label Separators
+******************************
+
+Some strings contains characters whose NFKC normalized form contain the
+ASCII dot (0x2E, ".").  Examples of these characters are U+2024 (ONE
+DOT LEADER) and U+248C (DIGIT FIVE FULL STOP).  The strings have the
+interesting property that their IDNA ToASCII output will contain
+embedded dots.  For example:
+
+     ToASCII (hi U+248C com) = hi5.com
+     ToASCII (räksmörgås U+2024 com) = xn--rksmrgs.com-l8as9u
+
+   This demonstrate the two general cases: The first where the ASCII dot
+is part of an output that do not begin with the IDN prefix `xn--'.  The
+second example illustrate when the dot is part of IDN prefixed with
+`xn--'.
+
+   The input strings are, from the DNS point of view, a single label.
+The IDNA algorithm translate one label at a time.  Thus, the output is
+expected to be only one label.  What is important here is to make sure
+the DNS resolver receives the correct query.  The DNS protocol does not
+use the dot to delimit labels on the wire, rather it uses length-value
+pairs.  Thus the correct query would be for `{7}hi5.com' and
+`{22}xn--rksmrgs.com-l8as9u' respectively.
+
+   Some implementations (1) have decided that these inputs strings are
+potentially confusing for the user.  The string `hi U+248C com' looks
+like `hi5.com' on systems that support Unicode properly.  These
+implementations do not follow RFC 3490.  They yield:
+
+     ToASCII (hi U+248C com) = hi5.com
+     ToASCII (räksmörgås U+2024 com) = xn--rksmrgs-5wao1o.com
+
+   The DNS query they perform are `{3}hi5{3}com' and
+`{18}xn--rksmrgs-5wao1o{3}com' respectively.  Arguably, this leads to a
+better user experience, and suggests that the IDNA specification is
+sub-optimal in this area.
+
+B.1 Recommended Workaround
+==========================
+
+It has been suggested to normalize the entire input string using NFKC
+before passing it to IDNA ToASCII.  You may use
+`stringprep_utf8_nfkc_normalize' or `stringprep_ucs4_nfkc_normalize'.
+This appears to lead to similar behaviour as IE/Firefox, which would
+avoid the problem, but this needs to be confirmed.  Feel free to
+discuss the issue with us.
+
+   Alternative workarounds are being considered.  Eventually Libidn may
+implement a new flag to the `idna_*' functions that implements a
+recommended way to work around this problem.
+
+   ---------- Footnotes ----------
+
+   (1) Notably Microsoft's Internet Explorer and Mozilla's Firefox, but
+not Apple's Safari.
+
+\1f
+File: libidn.info,  Node: Copying Information,  Next: Function and Variable Index,  Prev: On Label Separators,  Up: Top
+
+Appendix C Copying Information
+******************************
+
+* Menu:
+
+* GNU Free Documentation License::   License for copying this manual.
+* GNU LGPL::                         License for copying the library.
+* GNU GPL::                          License for copying the programs.
+
+\1f
+File: libidn.info,  Node: GNU Free Documentation License,  Next: GNU LGPL,  Up: Copying Information
+
+C.1 GNU Free Documentation License
+==================================
+
+                     Version 1.3, 3 November 2008
+
+     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+     `http://fsf.org/'
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or
+     noncommercially.  Secondarily, this License preserves for the
+     author and publisher a way to get credit for their work, while not
+     being considered responsible for modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work, in any medium,
+     that contains a notice placed by the copyright holder saying it
+     can be distributed under the terms of this License.  Such a notice
+     grants a world-wide, royalty-free license, unlimited in duration,
+     to use that work under the conditions stated herein.  The
+     "Document", below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you".  You
+     accept the license if you copy, modify or distribute the work in a
+     way requiring permission under copyright law.
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter section
+     of the Document that deals exclusively with the relationship of the
+     publishers or authors of the Document to the Document's overall
+     subject (or to related matters) and contains nothing that could
+     fall directly within that overall subject.  (Thus, if the Document
+     is in part a textbook of mathematics, a Secondary Section may not
+     explain any mathematics.)  The relationship could be a matter of
+     historical connection with the subject or with related matters, or
+     of legal, commercial, philosophical, ethical or political position
+     regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.  If a section does not fit the above definition of
+     Secondary then it is not allowed to be designated as Invariant.
+     The Document may contain zero Invariant Sections.  If the Document
+     does not identify any Invariant Sections then there are none.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.  A
+     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+     be at most 25 words.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup, or absence of
+     markup, has been arranged to thwart or discourage subsequent
+     modification by readers is not Transparent.  An image format is
+     not Transparent if used for any substantial amount of text.  A
+     copy that is not "Transparent" is called "Opaque".
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML, PostScript or PDF designed for
+     human modification.  Examples of transparent image formats include
+     PNG, XCF and JPG.  Opaque formats include proprietary formats that
+     can be read and edited only by proprietary word processors, SGML or
+     XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML, PostScript or PDF
+     produced by some word processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+     The "publisher" means any person or entity that distributes copies
+     of the Document to the public.
+
+     A section "Entitled XYZ" means a named subunit of the Document
+     whose title either is precisely XYZ or contains XYZ in parentheses
+     following text that translates XYZ in another language.  (Here XYZ
+     stands for a specific section name mentioned below, such as
+     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
+     to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice
+     which states that this License applies to the Document.  These
+     Warranty Disclaimers are considered to be included by reference in
+     this License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and
+     has no effect on the meaning of this License.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies (or copies in media that commonly
+     have printed covers) of the Document, numbering more than 100, and
+     the Document's license notice requires Cover Texts, you must
+     enclose the copies in covers that carry, clearly and legibly, all
+     these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a computer-network location from
+     which the general network-using public has access to download
+     using public-standard network protocols a complete Transparent
+     copy of the Document, free of added material.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+       A. Use in the Title Page (and on the covers, if any) a title
+          distinct from that of the Document, and from those of
+          previous versions (which should, if there were any, be listed
+          in the History section of the Document).  You may use the
+          same title as a previous version if the original publisher of
+          that version gives permission.
+
+       B. List on the Title Page, as authors, one or more persons or
+          entities responsible for authorship of the modifications in
+          the Modified Version, together with at least five of the
+          principal authors of the Document (all of its principal
+          authors, if it has fewer than five), unless they release you
+          from this requirement.
+
+       C. State on the Title page the name of the publisher of the
+          Modified Version, as the publisher.
+
+       D. Preserve all the copyright notices of the Document.
+
+       E. Add an appropriate copyright notice for your modifications
+          adjacent to the other copyright notices.
+
+       F. Include, immediately after the copyright notices, a license
+          notice giving the public permission to use the Modified
+          Version under the terms of this License, in the form shown in
+          the Addendum below.
+
+       G. Preserve in that license notice the full lists of Invariant
+          Sections and required Cover Texts given in the Document's
+          license notice.
+
+       H. Include an unaltered copy of this License.
+
+       I. Preserve the section Entitled "History", Preserve its Title,
+          and add to it an item stating at least the title, year, new
+          authors, and publisher of the Modified Version as given on
+          the Title Page.  If there is no section Entitled "History" in
+          the Document, create one stating the title, year, authors,
+          and publisher of the Document as given on its Title Page,
+          then add an item describing the Modified Version as stated in
+          the previous sentence.
+
+       J. Preserve the network location, if any, given in the Document
+          for public access to a Transparent copy of the Document, and
+          likewise the network locations given in the Document for
+          previous versions it was based on.  These may be placed in
+          the "History" section.  You may omit a network location for a
+          work that was published at least four years before the
+          Document itself, or if the original publisher of the version
+          it refers to gives permission.
+
+       K. For any section Entitled "Acknowledgements" or "Dedications",
+          Preserve the Title of the section, and preserve in the
+          section all the substance and tone of each of the contributor
+          acknowledgements and/or dedications given therein.
+
+       L. Preserve all the Invariant Sections of the Document,
+          unaltered in their text and in their titles.  Section numbers
+          or the equivalent are not considered part of the section
+          titles.
+
+       M. Delete any section Entitled "Endorsements".  Such a section
+          may not be included in the Modified Version.
+
+       N. Do not retitle any existing section to be Entitled
+          "Endorsements" or to conflict in title with any Invariant
+          Section.
+
+       O. Preserve any Warranty Disclaimers.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section Entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties--for example, statements of peer review or that the text
+     has been approved by an organization as the authoritative
+     definition of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice, and that you preserve all
+     their Warranty Disclaimers.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections Entitled
+     "History" in the various original documents, forming one section
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements", and any sections Entitled "Dedications".  You
+     must delete all sections Entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, is called an "aggregate" if the
+     copyright resulting from the compilation is not used to limit the
+     legal rights of the compilation's users beyond what the individual
+     works permit.  When the Document is included in an aggregate, this
+     License does not apply to the other works in the aggregate which
+     are not themselves derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one half
+     of the entire aggregate, the Document's Cover Texts may be placed
+     on covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic
+     form.  Otherwise they must appear on printed covers that bracket
+     the whole aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also
+     include the original English version of this License and the
+     original versions of those notices and disclaimers.  In case of a
+     disagreement between the translation and the original version of
+     this License or a notice or disclaimer, the original version will
+     prevail.
+
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to
+     Preserve its Title (section 1) will typically require changing the
+     actual title.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided under this License.  Any attempt
+     otherwise to copy, modify, sublicense, or distribute it is void,
+     and will automatically terminate your rights under this License.
+
+     However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly
+     and finally terminates your license, and (b) permanently, if the
+     copyright holder fails to notify you of the violation by some
+     reasonable means prior to 60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from
+     that copyright holder, and you cure the violation prior to 30 days
+     after your receipt of the notice.
+
+     Termination of your rights under this section does not terminate
+     the licenses of parties who have received copies or rights from
+     you under this License.  If your rights have been terminated and
+     not permanently reinstated, receipt of a copy of some or all of
+     the same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     `http://www.gnu.org/copyleft/'.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.  If the Document specifies that a proxy
+     can decide which future versions of this License can be used, that
+     proxy's public statement of acceptance of a version permanently
+     authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+     World Wide Web server that publishes copyrightable works and also
+     provides prominent facilities for anybody to edit those works.  A
+     public wiki that anybody can edit is an example of such a server.
+     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+     site means any set of copyrightable works thus published on the MMC
+     site.
+
+     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+     license published by Creative Commons Corporation, a not-for-profit
+     corporation with a principal place of business in San Francisco,
+     California, as well as future copyleft versions of that license
+     published by that same organization.
+
+     "Incorporate" means to publish or republish a Document, in whole or
+     in part, as part of another Document.
+
+     An MMC is "eligible for relicensing" if it is licensed under this
+     License, and if all works that were first published under this
+     License somewhere other than this MMC, and subsequently
+     incorporated in whole or in part into the MMC, (1) had no cover
+     texts or invariant sections, and (2) were thus incorporated prior
+     to November 1, 2008.
+
+     The operator of an MMC Site may republish an MMC contained in the
+     site under CC-BY-SA on the same site at any time before August 1,
+     2009, provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+       Copyright (C)  YEAR  YOUR NAME.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.3
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+         with the Invariant Sections being LIST THEIR TITLES, with
+         the Front-Cover Texts being LIST, and with the Back-Cover Texts
+         being LIST.
+
+   If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+\1f
+File: libidn.info,  Node: GNU LGPL,  Next: GNU GPL,  Prev: GNU Free Documentation License,  Up: Copying Information
+
+C.2 GNU Lesser General Public License
+=====================================
+
+                      Version 2.1, February 1999
+
+     Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+     [This is the first released version of the Lesser GPL.  It also counts
+     as the successor of the GNU Library Public License, version 2, hence the
+     version number 2.1.]
+
+Preamble
+--------
+
+The licenses for most software are designed to take away your freedom
+to share and change it.  By contrast, the GNU General Public Licenses
+are intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.
+
+   This license, the Lesser General Public License, applies to some
+specially designated software--typically libraries--of the Free
+Software Foundation and other authors who decide to use it.  You can use
+it too, but we suggest you first think carefully about whether this
+license or the ordinary General Public License is the better strategy to
+use in any particular case, based on the explanations below.
+
+   When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of it
+in new free programs; and that you are informed that you can do these
+things.
+
+   To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+   For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+   We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+   To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know that
+what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+   Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+   Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and is
+quite different from the ordinary General Public License.  We use this
+license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+   When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+   We call this license the "Lesser" General Public License because it
+does _Less_ to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+   For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+   In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of free
+software.  For example, permission to use the GNU C Library in non-free
+programs enables many more people to use the whole GNU operating
+system, as well as its variant, the GNU/Linux operating system.
+
+   Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run that
+program using a modified version of the Library.
+
+   The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+---------------------------------------------------------------
+
+  0. This License Agreement applies to any software library or other
+     program which contains a notice placed by the copyright holder or
+     other authorized party saying it may be distributed under the
+     terms of this Lesser General Public License (also called "this
+     License").  Each licensee is addressed as "you".
+
+     A "library" means a collection of software functions and/or data
+     prepared so as to be conveniently linked with application programs
+     (which use some of those functions and data) to form executables.
+
+     The "Library", below, refers to any such software library or work
+     which has been distributed under these terms.  A "work based on the
+     Library" means either the Library or any derivative work under
+     copyright law: that is to say, a work containing the Library or a
+     portion of it, either verbatim or with modifications and/or
+     translated straightforwardly into another language.  (Hereinafter,
+     translation is included without limitation in the term
+     "modification".)
+
+     "Source code" for a work means the preferred form of the work for
+     making modifications to it.  For a library, complete source code
+     means all the source code for all modules it contains, plus any
+     associated interface definition files, plus the scripts used to
+     control compilation and installation of the library.
+
+     Activities other than copying, distribution and modification are
+     not covered by this License; they are outside its scope.  The act
+     of running a program using the Library is not restricted, and
+     output from such a program is covered only if its contents
+     constitute a work based on the Library (independent of the use of
+     the Library in a tool for writing it).  Whether that is true
+     depends on what the Library does and what the program that uses
+     the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+     complete source code as you receive it, in any medium, provided
+     that you conspicuously and appropriately publish on each copy an
+     appropriate copyright notice and disclaimer of warranty; keep
+     intact all the notices that refer to this License and to the
+     absence of any warranty; and distribute a copy of this License
+     along with the Library.
+
+     You may charge a fee for the physical act of transferring a copy,
+     and you may at your option offer warranty protection in exchange
+     for a fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+     of it, thus forming a work based on the Library, and copy and
+     distribute such modifications or work under the terms of Section 1
+     above, provided that you also meet all of these conditions:
+
+       a. The modified work must itself be a software library.
+
+       b. You must cause the files modified to carry prominent notices
+          stating that you changed the files and the date of any change.
+
+       c. You must cause the whole of the work to be licensed at no
+          charge to all third parties under the terms of this License.
+
+       d. If a facility in the modified Library refers to a function or
+          a table of data to be supplied by an application program that
+          uses the facility, other than as an argument passed when the
+          facility is invoked, then you must make a good faith effort
+          to ensure that, in the event an application does not supply
+          such function or table, the facility still operates, and
+          performs whatever part of its purpose remains meaningful.
+
+          (For example, a function in a library to compute square roots
+          has a purpose that is entirely well-defined independent of the
+          application.  Therefore, Subsection 2d requires that any
+          application-supplied function or table used by this function
+          must be optional: if the application does not supply it, the
+          square root function must still compute square roots.)
+
+     These requirements apply to the modified work as a whole.  If
+     identifiable sections of that work are not derived from the
+     Library, and can be reasonably considered independent and separate
+     works in themselves, then this License, and its terms, do not
+     apply to those sections when you distribute them as separate
+     works.  But when you distribute the same sections as part of a
+     whole which is a work based on the Library, the distribution of
+     the whole must be on the terms of this License, whose permissions
+     for other licensees extend to the entire whole, and thus to each
+     and every part regardless of who wrote it.
+
+     Thus, it is not the intent of this section to claim rights or
+     contest your rights to work written entirely by you; rather, the
+     intent is to exercise the right to control the distribution of
+     derivative or collective works based on the Library.
+
+     In addition, mere aggregation of another work not based on the
+     Library with the Library (or with a work based on the Library) on
+     a volume of a storage or distribution medium does not bring the
+     other work under the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+     License instead of this License to a given copy of the Library.
+     To do this, you must alter all the notices that refer to this
+     License, so that they refer to the ordinary GNU General Public
+     License, version 2, instead of to this License.  (If a newer
+     version than version 2 of the ordinary GNU General Public License
+     has appeared, then you can specify that version instead if you
+     wish.)  Do not make any other change in these notices.
+
+     Once this change is made in a given copy, it is irreversible for
+     that copy, so the ordinary GNU General Public License applies to
+     all subsequent copies and derivative works made from that copy.
+
+     This option is useful when you wish to copy part of the code of
+     the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+     derivative of it, under Section 2) in object code or executable
+     form under the terms of Sections 1 and 2 above provided that you
+     accompany it with the complete corresponding machine-readable
+     source code, which must be distributed under the terms of Sections
+     1 and 2 above on a medium customarily used for software
+     interchange.
+
+     If distribution of object code is made by offering access to copy
+     from a designated place, then offering equivalent access to copy
+     the source code from the same place satisfies the requirement to
+     distribute the source code, even though third parties are not
+     compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+     Library, but is designed to work with the Library by being
+     compiled or linked with it, is called a "work that uses the
+     Library".  Such a work, in isolation, is not a derivative work of
+     the Library, and therefore falls outside the scope of this License.
+
+     However, linking a "work that uses the Library" with the Library
+     creates an executable that is a derivative of the Library (because
+     it contains portions of the Library), rather than a "work that
+     uses the library".  The executable is therefore covered by this
+     License.  Section 6 states terms for distribution of such
+     executables.
+
+     When a "work that uses the Library" uses material from a header
+     file that is part of the Library, the object code for the work may
+     be a derivative work of the Library even though the source code is
+     not.  Whether this is true is especially significant if the work
+     can be linked without the Library, or if the work is itself a
+     library.  The threshold for this to be true is not precisely
+     defined by law.
+
+     If such an object file uses only numerical parameters, data
+     structure layouts and accessors, and small macros and small inline
+     functions (ten lines or less in length), then the use of the object
+     file is unrestricted, regardless of whether it is legally a
+     derivative work.  (Executables containing this object code plus
+     portions of the Library will still fall under Section 6.)
+
+     Otherwise, if the work is a derivative of the Library, you may
+     distribute the object code for the work under the terms of Section
+     6.  Any executables containing that work also fall under Section 6,
+     whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+     link a "work that uses the Library" with the Library to produce a
+     work containing portions of the Library, and distribute that work
+     under terms of your choice, provided that the terms permit
+     modification of the work for the customer's own use and reverse
+     engineering for debugging such modifications.
+
+     You must give prominent notice with each copy of the work that the
+     Library is used in it and that the Library and its use are covered
+     by this License.  You must supply a copy of this License.  If the
+     work during execution displays copyright notices, you must include
+     the copyright notice for the Library among them, as well as a
+     reference directing the user to the copy of this License.  Also,
+     you must do one of these things:
+
+       a. Accompany the work with the complete corresponding
+          machine-readable source code for the Library including
+          whatever changes were used in the work (which must be
+          distributed under Sections 1 and 2 above); and, if the work
+          is an executable linked with the Library, with the complete
+          machine-readable "work that uses the Library", as object code
+          and/or source code, so that the user can modify the Library
+          and then relink to produce a modified executable containing
+          the modified Library.  (It is understood that the user who
+          changes the contents of definitions files in the Library will
+          not necessarily be able to recompile the application to use
+          the modified definitions.)
+
+       b. Use a suitable shared library mechanism for linking with the
+          Library.  A suitable mechanism is one that (1) uses at run
+          time a copy of the library already present on the user's
+          computer system, rather than copying library functions into
+          the executable, and (2) will operate properly with a modified
+          version of the library, if the user installs one, as long as
+          the modified version is interface-compatible with the version
+          that the work was made with.
+
+       c. Accompany the work with a written offer, valid for at least
+          three years, to give the same user the materials specified in
+          Subsection 6a, above, for a charge no more than the cost of
+          performing this distribution.
+
+       d. If distribution of the work is made by offering access to copy
+          from a designated place, offer equivalent access to copy the
+          above specified materials from the same place.
+
+       e. Verify that the user has already received a copy of these
+          materials or that you have already sent this user a copy.
+
+     For an executable, the required form of the "work that uses the
+     Library" must include any data and utility programs needed for
+     reproducing the executable from it.  However, as a special
+     exception, the materials to be distributed need not include
+     anything that is normally distributed (in either source or binary
+     form) with the major components (compiler, kernel, and so on) of
+     the operating system on which the executable runs, unless that
+     component itself accompanies the executable.
+
+     It may happen that this requirement contradicts the license
+     restrictions of other proprietary libraries that do not normally
+     accompany the operating system.  Such a contradiction means you
+     cannot use both them and the Library together in an executable
+     that you distribute.
+
+  7. You may place library facilities that are a work based on the
+     Library side-by-side in a single library together with other
+     library facilities not covered by this License, and distribute
+     such a combined library, provided that the separate distribution
+     of the work based on the Library and of the other library
+     facilities is otherwise permitted, and provided that you do these
+     two things:
+
+       a. Accompany the combined library with a copy of the same work
+          based on the Library, uncombined with any other library
+          facilities.  This must be distributed under the terms of the
+          Sections above.
+
+       b. Give prominent notice with the combined library of the fact
+          that part of it is a work based on the Library, and explaining
+          where to find the accompanying uncombined form of the same
+          work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute the
+     Library except as expressly provided under this License.  Any
+     attempt otherwise to copy, modify, sublicense, link with, or
+     distribute the Library is void, and will automatically terminate
+     your rights under this License.  However, parties who have
+     received copies, or rights, from you under this License will not
+     have their licenses terminated so long as such parties remain in
+     full compliance.
+
+  9. You are not required to accept this License, since you have not
+     signed it.  However, nothing else grants you permission to modify
+     or distribute the Library or its derivative works.  These actions
+     are prohibited by law if you do not accept this License.
+     Therefore, by modifying or distributing the Library (or any work
+     based on the Library), you indicate your acceptance of this
+     License to do so, and all its terms and conditions for copying,
+     distributing or modifying the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+     Library), the recipient automatically receives a license from the
+     original licensor to copy, distribute, link with or modify the
+     Library subject to these terms and conditions.  You may not impose
+     any further restrictions on the recipients' exercise of the rights
+     granted herein.  You are not responsible for enforcing compliance
+     by third parties with this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+     infringement or for any other reason (not limited to patent
+     issues), conditions are imposed on you (whether by court order,
+     agreement or otherwise) that contradict the conditions of this
+     License, they do not excuse you from the conditions of this
+     License.  If you cannot distribute so as to satisfy simultaneously
+     your obligations under this License and any other pertinent
+     obligations, then as a consequence you may not distribute the
+     Library at all.  For example, if a patent license would not permit
+     royalty-free redistribution of the Library by all those who
+     receive copies directly or indirectly through you, then the only
+     way you could satisfy both it and this License would be to refrain
+     entirely from distribution of the Library.
+
+     If any portion of this section is held invalid or unenforceable
+     under any particular circumstance, the balance of the section is
+     intended to apply, and the section as a whole is intended to apply
+     in other circumstances.
+
+     It is not the purpose of this section to induce you to infringe any
+     patents or other property right claims or to contest validity of
+     any such claims; this section has the sole purpose of protecting
+     the integrity of the free software distribution system which is
+     implemented by public license practices.  Many people have made
+     generous contributions to the wide range of software distributed
+     through that system in reliance on consistent application of that
+     system; it is up to the author/donor to decide if he or she is
+     willing to distribute software through any other system and a
+     licensee cannot impose that choice.
+
+     This section is intended to make thoroughly clear what is believed
+     to be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+     certain countries either by patents or by copyrighted interfaces,
+     the original copyright holder who places the Library under this
+     License may add an explicit geographical distribution limitation
+     excluding those countries, so that distribution is permitted only
+     in or among countries not thus excluded.  In such case, this
+     License incorporates the limitation as if written in the body of
+     this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+     versions of the Lesser General Public License from time to time.
+     Such new versions will be similar in spirit to the present version,
+     but may differ in detail to address new problems or concerns.
+
+     Each version is given a distinguishing version number.  If the
+     Library specifies a version number of this License which applies
+     to it and "any later version", you have the option of following
+     the terms and conditions either of that version or of any later
+     version published by the Free Software Foundation.  If the Library
+     does not specify a license version number, you may choose any
+     version ever published by the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+     programs whose distribution conditions are incompatible with these,
+     write to the author to ask for permission.  For software which is
+     copyrighted by the Free Software Foundation, write to the Free
+     Software Foundation; we sometimes make exceptions for this.  Our
+     decision will be guided by the two goals of preserving the free
+     status of all derivatives of our free software and of promoting
+     the sharing and reuse of software generally.
+
+                                NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+     WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE
+     LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+     HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT
+     WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
+     NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+     FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE
+     QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU.  SHOULD THE
+     LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
+     SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
+     MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
+     LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
+     INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+     INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF
+     DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
+     OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY
+     OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
+     ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+                      END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Libraries
+----------------------------------------------
+
+If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of
+the ordinary General Public License).
+
+   To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should have
+at least the "copyright" line and a pointer to where the full notice is
+found.
+
+     ONE LINE TO GIVE THE LIBRARY'S NAME AND AN IDEA OF WHAT IT DOES.
+     Copyright (C) YEAR  NAME OF AUTHOR
+
+     This library is free software; you can redistribute it and/or modify it
+     under the terms of the GNU Lesser General Public License as published by
+     the Free Software Foundation; either version 2.1 of the License, or (at
+     your option) any later version.
+
+     This library is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Lesser General Public License for more details.
+
+     You should have received a copy of the GNU Lesser General Public
+     License along with this library; if not, write to the Free Software
+     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+     USA.
+
+   Also add information on how to contact you by electronic and paper
+mail.
+
+   You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary.  Here is a sample; alter the names:
+
+     Yoyodyne, Inc., hereby disclaims all copyright interest in the library
+     `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+     SIGNATURE OF TY COON, 1 April 1990
+     Ty Coon, President of Vice
+
+   That's all there is to it!
+
+\1f
+File: libidn.info,  Node: GNU GPL,  Prev: GNU LGPL,  Up: Copying Information
+
+C.3 GNU General Public License
+==============================
+
+                        Version 3, 29 June 2007
+
+     Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/'
+
+     Everyone is permitted to copy and distribute verbatim copies of this
+     license document, but changing it is not allowed.
+
+Preamble
+========
+
+The GNU General Public License is a free, copyleft license for software
+and other kinds of works.
+
+   The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains
+free software for all its users.  We, the Free Software Foundation, use
+the GNU General Public License for most of our software; it applies
+also to any other work released this way by its authors.  You can apply
+it to your programs, too.
+
+   When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+   To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you
+have certain responsibilities if you distribute copies of the software,
+or if you modify it: responsibilities to respect the freedom of others.
+
+   For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+   Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+   For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+   Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the
+manufacturer can do so.  This is fundamentally incompatible with the
+aim of protecting users' freedom to change the software.  The
+systematic pattern of such abuse occurs in the area of products for
+individuals to use, which is precisely where it is most unacceptable.
+Therefore, we have designed this version of the GPL to prohibit the
+practice for those products.  If such problems arise substantially in
+other domains, we stand ready to extend this provision to those domains
+in future versions of the GPL, as needed to protect the freedom of
+users.
+
+   Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+   The precise terms and conditions for copying, distribution and
+modification follow.
+
+TERMS AND CONDITIONS
+====================
+
+  0. Definitions.
+
+     "This License" refers to version 3 of the GNU General Public
+     License.
+
+     "Copyright" also means copyright-like laws that apply to other
+     kinds of works, such as semiconductor masks.
+
+     "The Program" refers to any copyrightable work licensed under this
+     License.  Each licensee is addressed as "you".  "Licensees" and
+     "recipients" may be individuals or organizations.
+
+     To "modify" a work means to copy from or adapt all or part of the
+     work in a fashion requiring copyright permission, other than the
+     making of an exact copy.  The resulting work is called a "modified
+     version" of the earlier work or a work "based on" the earlier work.
+
+     A "covered work" means either the unmodified Program or a work
+     based on the Program.
+
+     To "propagate" a work means to do anything with it that, without
+     permission, would make you directly or secondarily liable for
+     infringement under applicable copyright law, except executing it
+     on a computer or modifying a private copy.  Propagation includes
+     copying, distribution (with or without modification), making
+     available to the public, and in some countries other activities as
+     well.
+
+     To "convey" a work means any kind of propagation that enables other
+     parties to make or receive copies.  Mere interaction with a user
+     through a computer network, with no transfer of a copy, is not
+     conveying.
+
+     An interactive user interface displays "Appropriate Legal Notices"
+     to the extent that it includes a convenient and prominently visible
+     feature that (1) displays an appropriate copyright notice, and (2)
+     tells the user that there is no warranty for the work (except to
+     the extent that warranties are provided), that licensees may
+     convey the work under this License, and how to view a copy of this
+     License.  If the interface presents a list of user commands or
+     options, such as a menu, a prominent item in the list meets this
+     criterion.
+
+  1. Source Code.
+
+     The "source code" for a work means the preferred form of the work
+     for making modifications to it.  "Object code" means any
+     non-source form of a work.
+
+     A "Standard Interface" means an interface that either is an
+     official standard defined by a recognized standards body, or, in
+     the case of interfaces specified for a particular programming
+     language, one that is widely used among developers working in that
+     language.
+
+     The "System Libraries" of an executable work include anything,
+     other than the work as a whole, that (a) is included in the normal
+     form of packaging a Major Component, but which is not part of that
+     Major Component, and (b) serves only to enable use of the work
+     with that Major Component, or to implement a Standard Interface
+     for which an implementation is available to the public in source
+     code form.  A "Major Component", in this context, means a major
+     essential component (kernel, window system, and so on) of the
+     specific operating system (if any) on which the executable work
+     runs, or a compiler used to produce the work, or an object code
+     interpreter used to run it.
+
+     The "Corresponding Source" for a work in object code form means all
+     the source code needed to generate, install, and (for an executable
+     work) run the object code and to modify the work, including
+     scripts to control those activities.  However, it does not include
+     the work's System Libraries, or general-purpose tools or generally
+     available free programs which are used unmodified in performing
+     those activities but which are not part of the work.  For example,
+     Corresponding Source includes interface definition files
+     associated with source files for the work, and the source code for
+     shared libraries and dynamically linked subprograms that the work
+     is specifically designed to require, such as by intimate data
+     communication or control flow between those subprograms and other
+     parts of the work.
+
+     The Corresponding Source need not include anything that users can
+     regenerate automatically from other parts of the Corresponding
+     Source.
+
+     The Corresponding Source for a work in source code form is that
+     same work.
+
+  2. Basic Permissions.
+
+     All rights granted under this License are granted for the term of
+     copyright on the Program, and are irrevocable provided the stated
+     conditions are met.  This License explicitly affirms your unlimited
+     permission to run the unmodified Program.  The output from running
+     a covered work is covered by this License only if the output,
+     given its content, constitutes a covered work.  This License
+     acknowledges your rights of fair use or other equivalent, as
+     provided by copyright law.
+
+     You may make, run and propagate covered works that you do not
+     convey, without conditions so long as your license otherwise
+     remains in force.  You may convey covered works to others for the
+     sole purpose of having them make modifications exclusively for
+     you, or provide you with facilities for running those works,
+     provided that you comply with the terms of this License in
+     conveying all material for which you do not control copyright.
+     Those thus making or running the covered works for you must do so
+     exclusively on your behalf, under your direction and control, on
+     terms that prohibit them from making any copies of your
+     copyrighted material outside their relationship with you.
+
+     Conveying under any other circumstances is permitted solely under
+     the conditions stated below.  Sublicensing is not allowed; section
+     10 makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+     No covered work shall be deemed part of an effective technological
+     measure under any applicable law fulfilling obligations under
+     article 11 of the WIPO copyright treaty adopted on 20 December
+     1996, or similar laws prohibiting or restricting circumvention of
+     such measures.
+
+     When you convey a covered work, you waive any legal power to forbid
+     circumvention of technological measures to the extent such
+     circumvention is effected by exercising rights under this License
+     with respect to the covered work, and you disclaim any intention
+     to limit operation or modification of the work as a means of
+     enforcing, against the work's users, your or third parties' legal
+     rights to forbid circumvention of technological measures.
+
+  4. Conveying Verbatim Copies.
+
+     You may convey verbatim copies of the Program's source code as you
+     receive it, in any medium, provided that you conspicuously and
+     appropriately publish on each copy an appropriate copyright notice;
+     keep intact all notices stating that this License and any
+     non-permissive terms added in accord with section 7 apply to the
+     code; keep intact all notices of the absence of any warranty; and
+     give all recipients a copy of this License along with the Program.
+
+     You may charge any price or no price for each copy that you convey,
+     and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+     You may convey a work based on the Program, or the modifications to
+     produce it from the Program, in the form of source code under the
+     terms of section 4, provided that you also meet all of these
+     conditions:
+
+       a. The work must carry prominent notices stating that you
+          modified it, and giving a relevant date.
+
+       b. The work must carry prominent notices stating that it is
+          released under this License and any conditions added under
+          section 7.  This requirement modifies the requirement in
+          section 4 to "keep intact all notices".
+
+       c. You must license the entire work, as a whole, under this
+          License to anyone who comes into possession of a copy.  This
+          License will therefore apply, along with any applicable
+          section 7 additional terms, to the whole of the work, and all
+          its parts, regardless of how they are packaged.  This License
+          gives no permission to license the work in any other way, but
+          it does not invalidate such permission if you have separately
+          received it.
+
+       d. If the work has interactive user interfaces, each must display
+          Appropriate Legal Notices; however, if the Program has
+          interactive interfaces that do not display Appropriate Legal
+          Notices, your work need not make them do so.
+
+     A compilation of a covered work with other separate and independent
+     works, which are not by their nature extensions of the covered
+     work, and which are not combined with it such as to form a larger
+     program, in or on a volume of a storage or distribution medium, is
+     called an "aggregate" if the compilation and its resulting
+     copyright are not used to limit the access or legal rights of the
+     compilation's users beyond what the individual works permit.
+     Inclusion of a covered work in an aggregate does not cause this
+     License to apply to the other parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+     You may convey a covered work in object code form under the terms
+     of sections 4 and 5, provided that you also convey the
+     machine-readable Corresponding Source under the terms of this
+     License, in one of these ways:
+
+       a. Convey the object code in, or embodied in, a physical product
+          (including a physical distribution medium), accompanied by the
+          Corresponding Source fixed on a durable physical medium
+          customarily used for software interchange.
+
+       b. Convey the object code in, or embodied in, a physical product
+          (including a physical distribution medium), accompanied by a
+          written offer, valid for at least three years and valid for
+          as long as you offer spare parts or customer support for that
+          product model, to give anyone who possesses the object code
+          either (1) a copy of the Corresponding Source for all the
+          software in the product that is covered by this License, on a
+          durable physical medium customarily used for software
+          interchange, for a price no more than your reasonable cost of
+          physically performing this conveying of source, or (2) access
+          to copy the Corresponding Source from a network server at no
+          charge.
+
+       c. Convey individual copies of the object code with a copy of
+          the written offer to provide the Corresponding Source.  This
+          alternative is allowed only occasionally and noncommercially,
+          and only if you received the object code with such an offer,
+          in accord with subsection 6b.
+
+       d. Convey the object code by offering access from a designated
+          place (gratis or for a charge), and offer equivalent access
+          to the Corresponding Source in the same way through the same
+          place at no further charge.  You need not require recipients
+          to copy the Corresponding Source along with the object code.
+          If the place to copy the object code is a network server, the
+          Corresponding Source may be on a different server (operated
+          by you or a third party) that supports equivalent copying
+          facilities, provided you maintain clear directions next to
+          the object code saying where to find the Corresponding Source.
+          Regardless of what server hosts the Corresponding Source, you
+          remain obligated to ensure that it is available for as long
+          as needed to satisfy these requirements.
+
+       e. Convey the object code using peer-to-peer transmission,
+          provided you inform other peers where the object code and
+          Corresponding Source of the work are being offered to the
+          general public at no charge under subsection 6d.
+
+
+     A separable portion of the object code, whose source code is
+     excluded from the Corresponding Source as a System Library, need
+     not be included in conveying the object code work.
+
+     A "User Product" is either (1) a "consumer product", which means
+     any tangible personal property which is normally used for personal,
+     family, or household purposes, or (2) anything designed or sold for
+     incorporation into a dwelling.  In determining whether a product
+     is a consumer product, doubtful cases shall be resolved in favor of
+     coverage.  For a particular product received by a particular user,
+     "normally used" refers to a typical or common use of that class of
+     product, regardless of the status of the particular user or of the
+     way in which the particular user actually uses, or expects or is
+     expected to use, the product.  A product is a consumer product
+     regardless of whether the product has substantial commercial,
+     industrial or non-consumer uses, unless such uses represent the
+     only significant mode of use of the product.
+
+     "Installation Information" for a User Product means any methods,
+     procedures, authorization keys, or other information required to
+     install and execute modified versions of a covered work in that
+     User Product from a modified version of its Corresponding Source.
+     The information must suffice to ensure that the continued
+     functioning of the modified object code is in no case prevented or
+     interfered with solely because modification has been made.
+
+     If you convey an object code work under this section in, or with,
+     or specifically for use in, a User Product, and the conveying
+     occurs as part of a transaction in which the right of possession
+     and use of the User Product is transferred to the recipient in
+     perpetuity or for a fixed term (regardless of how the transaction
+     is characterized), the Corresponding Source conveyed under this
+     section must be accompanied by the Installation Information.  But
+     this requirement does not apply if neither you nor any third party
+     retains the ability to install modified object code on the User
+     Product (for example, the work has been installed in ROM).
+
+     The requirement to provide Installation Information does not
+     include a requirement to continue to provide support service,
+     warranty, or updates for a work that has been modified or
+     installed by the recipient, or for the User Product in which it
+     has been modified or installed.  Access to a network may be denied
+     when the modification itself materially and adversely affects the
+     operation of the network or violates the rules and protocols for
+     communication across the network.
+
+     Corresponding Source conveyed, and Installation Information
+     provided, in accord with this section must be in a format that is
+     publicly documented (and with an implementation available to the
+     public in source code form), and must require no special password
+     or key for unpacking, reading or copying.
+
+  7. Additional Terms.
+
+     "Additional permissions" are terms that supplement the terms of
+     this License by making exceptions from one or more of its
+     conditions.  Additional permissions that are applicable to the
+     entire Program shall be treated as though they were included in
+     this License, to the extent that they are valid under applicable
+     law.  If additional permissions apply only to part of the Program,
+     that part may be used separately under those permissions, but the
+     entire Program remains governed by this License without regard to
+     the additional permissions.
+
+     When you convey a copy of a covered work, you may at your option
+     remove any additional permissions from that copy, or from any part
+     of it.  (Additional permissions may be written to require their own
+     removal in certain cases when you modify the work.)  You may place
+     additional permissions on material, added by you to a covered work,
+     for which you have or can give appropriate copyright permission.
+
+     Notwithstanding any other provision of this License, for material
+     you add to a covered work, you may (if authorized by the copyright
+     holders of that material) supplement the terms of this License
+     with terms:
+
+       a. Disclaiming warranty or limiting liability differently from
+          the terms of sections 15 and 16 of this License; or
+
+       b. Requiring preservation of specified reasonable legal notices
+          or author attributions in that material or in the Appropriate
+          Legal Notices displayed by works containing it; or
+
+       c. Prohibiting misrepresentation of the origin of that material,
+          or requiring that modified versions of such material be
+          marked in reasonable ways as different from the original
+          version; or
+
+       d. Limiting the use for publicity purposes of names of licensors
+          or authors of the material; or
+
+       e. Declining to grant rights under trademark law for use of some
+          trade names, trademarks, or service marks; or
+
+       f. Requiring indemnification of licensors and authors of that
+          material by anyone who conveys the material (or modified
+          versions of it) with contractual assumptions of liability to
+          the recipient, for any liability that these contractual
+          assumptions directly impose on those licensors and authors.
+
+     All other non-permissive additional terms are considered "further
+     restrictions" within the meaning of section 10.  If the Program as
+     you received it, or any part of it, contains a notice stating that
+     it is governed by this License along with a term that is a further
+     restriction, you may remove that term.  If a license document
+     contains a further restriction but permits relicensing or
+     conveying under this License, you may add to a covered work
+     material governed by the terms of that license document, provided
+     that the further restriction does not survive such relicensing or
+     conveying.
+
+     If you add terms to a covered work in accord with this section, you
+     must place, in the relevant source files, a statement of the
+     additional terms that apply to those files, or a notice indicating
+     where to find the applicable terms.
+
+     Additional terms, permissive or non-permissive, may be stated in
+     the form of a separately written license, or stated as exceptions;
+     the above requirements apply either way.
+
+  8. Termination.
+
+     You may not propagate or modify a covered work except as expressly
+     provided under this License.  Any attempt otherwise to propagate or
+     modify it is void, and will automatically terminate your rights
+     under this License (including any patent licenses granted under
+     the third paragraph of section 11).
+
+     However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly
+     and finally terminates your license, and (b) permanently, if the
+     copyright holder fails to notify you of the violation by some
+     reasonable means prior to 60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from
+     that copyright holder, and you cure the violation prior to 30 days
+     after your receipt of the notice.
+
+     Termination of your rights under this section does not terminate
+     the licenses of parties who have received copies or rights from
+     you under this License.  If your rights have been terminated and
+     not permanently reinstated, you do not qualify to receive new
+     licenses for the same material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+     You are not required to accept this License in order to receive or
+     run a copy of the Program.  Ancillary propagation of a covered work
+     occurring solely as a consequence of using peer-to-peer
+     transmission to receive a copy likewise does not require
+     acceptance.  However, nothing other than this License grants you
+     permission to propagate or modify any covered work.  These actions
+     infringe copyright if you do not accept this License.  Therefore,
+     by modifying or propagating a covered work, you indicate your
+     acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+     Each time you convey a covered work, the recipient automatically
+     receives a license from the original licensors, to run, modify and
+     propagate that work, subject to this License.  You are not
+     responsible for enforcing compliance by third parties with this
+     License.
+
+     An "entity transaction" is a transaction transferring control of an
+     organization, or substantially all assets of one, or subdividing an
+     organization, or merging organizations.  If propagation of a
+     covered work results from an entity transaction, each party to that
+     transaction who receives a copy of the work also receives whatever
+     licenses to the work the party's predecessor in interest had or
+     could give under the previous paragraph, plus a right to
+     possession of the Corresponding Source of the work from the
+     predecessor in interest, if the predecessor has it or can get it
+     with reasonable efforts.
+
+     You may not impose any further restrictions on the exercise of the
+     rights granted or affirmed under this License.  For example, you
+     may not impose a license fee, royalty, or other charge for
+     exercise of rights granted under this License, and you may not
+     initiate litigation (including a cross-claim or counterclaim in a
+     lawsuit) alleging that any patent claim is infringed by making,
+     using, selling, offering for sale, or importing the Program or any
+     portion of it.
+
+ 11. Patents.
+
+     A "contributor" is a copyright holder who authorizes use under this
+     License of the Program or a work on which the Program is based.
+     The work thus licensed is called the contributor's "contributor
+     version".
+
+     A contributor's "essential patent claims" are all patent claims
+     owned or controlled by the contributor, whether already acquired or
+     hereafter acquired, that would be infringed by some manner,
+     permitted by this License, of making, using, or selling its
+     contributor version, but do not include claims that would be
+     infringed only as a consequence of further modification of the
+     contributor version.  For purposes of this definition, "control"
+     includes the right to grant patent sublicenses in a manner
+     consistent with the requirements of this License.
+
+     Each contributor grants you a non-exclusive, worldwide,
+     royalty-free patent license under the contributor's essential
+     patent claims, to make, use, sell, offer for sale, import and
+     otherwise run, modify and propagate the contents of its
+     contributor version.
+
+     In the following three paragraphs, a "patent license" is any
+     express agreement or commitment, however denominated, not to
+     enforce a patent (such as an express permission to practice a
+     patent or covenant not to sue for patent infringement).  To
+     "grant" such a patent license to a party means to make such an
+     agreement or commitment not to enforce a patent against the party.
+
+     If you convey a covered work, knowingly relying on a patent
+     license, and the Corresponding Source of the work is not available
+     for anyone to copy, free of charge and under the terms of this
+     License, through a publicly available network server or other
+     readily accessible means, then you must either (1) cause the
+     Corresponding Source to be so available, or (2) arrange to deprive
+     yourself of the benefit of the patent license for this particular
+     work, or (3) arrange, in a manner consistent with the requirements
+     of this License, to extend the patent license to downstream
+     recipients.  "Knowingly relying" means you have actual knowledge
+     that, but for the patent license, your conveying the covered work
+     in a country, or your recipient's use of the covered work in a
+     country, would infringe one or more identifiable patents in that
+     country that you have reason to believe are valid.
+
+     If, pursuant to or in connection with a single transaction or
+     arrangement, you convey, or propagate by procuring conveyance of, a
+     covered work, and grant a patent license to some of the parties
+     receiving the covered work authorizing them to use, propagate,
+     modify or convey a specific copy of the covered work, then the
+     patent license you grant is automatically extended to all
+     recipients of the covered work and works based on it.
+
+     A patent license is "discriminatory" if it does not include within
+     the scope of its coverage, prohibits the exercise of, or is
+     conditioned on the non-exercise of one or more of the rights that
+     are specifically granted under this License.  You may not convey a
+     covered work if you are a party to an arrangement with a third
+     party that is in the business of distributing software, under
+     which you make payment to the third party based on the extent of
+     your activity of conveying the work, and under which the third
+     party grants, to any of the parties who would receive the covered
+     work from you, a discriminatory patent license (a) in connection
+     with copies of the covered work conveyed by you (or copies made
+     from those copies), or (b) primarily for and in connection with
+     specific products or compilations that contain the covered work,
+     unless you entered into that arrangement, or that patent license
+     was granted, prior to 28 March 2007.
+
+     Nothing in this License shall be construed as excluding or limiting
+     any implied license or other defenses to infringement that may
+     otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+     If conditions are imposed on you (whether by court order,
+     agreement or otherwise) that contradict the conditions of this
+     License, they do not excuse you from the conditions of this
+     License.  If you cannot convey a covered work so as to satisfy
+     simultaneously your obligations under this License and any other
+     pertinent obligations, then as a consequence you may not convey it
+     at all.  For example, if you agree to terms that obligate you to
+     collect a royalty for further conveying from those to whom you
+     convey the Program, the only way you could satisfy both those
+     terms and this License would be to refrain entirely from conveying
+     the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+     Notwithstanding any other provision of this License, you have
+     permission to link or combine any covered work with a work licensed
+     under version 3 of the GNU Affero General Public License into a
+     single combined work, and to convey the resulting work.  The terms
+     of this License will continue to apply to the part which is the
+     covered work, but the special requirements of the GNU Affero
+     General Public License, section 13, concerning interaction through
+     a network will apply to the combination as such.
+
+ 14. Revised Versions of this License.
+
+     The Free Software Foundation may publish revised and/or new
+     versions of the GNU General Public License from time to time.
+     Such new versions will be similar in spirit to the present
+     version, but may differ in detail to address new problems or
+     concerns.
+
+     Each version is given a distinguishing version number.  If the
+     Program specifies that a certain numbered version of the GNU
+     General Public License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that numbered version or of any later version published by the
+     Free Software Foundation.  If the Program does not specify a
+     version number of the GNU General Public License, you may choose
+     any version ever published by the Free Software Foundation.
+
+     If the Program specifies that a proxy can decide which future
+     versions of the GNU General Public License can be used, that
+     proxy's public statement of acceptance of a version permanently
+     authorizes you to choose that version for the Program.
+
+     Later license versions may give you additional or different
+     permissions.  However, no additional obligations are imposed on any
+     author or copyright holder as a result of your choosing to follow a
+     later version.
+
+ 15. Disclaimer of Warranty.
+
+     THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+     APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE
+     COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE
+     RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
+     SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+     NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+     IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES
+     AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
+     FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+     CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
+     THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+     BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+     PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+     PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
+     THE POSSIBILITY OF SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+     If the disclaimer of warranty and limitation of liability provided
+     above cannot be given local legal effect according to their terms,
+     reviewing courts shall apply local law that most closely
+     approximates an absolute waiver of all civil liability in
+     connection with the Program, unless a warranty or assumption of
+     liability accompanies a copy of the Program in return for a fee.
+
+
+END OF TERMS AND CONDITIONS
+===========================
+
+How to Apply These Terms to Your New Programs
+=============================================
+
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+   To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+     ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
+     Copyright (C) YEAR NAME OF AUTHOR
+
+     This program is free software: you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published by
+     the Free Software Foundation, either version 3 of the License, or (at
+     your option) any later version.
+
+     This program is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with this program.  If not, see `http://www.gnu.org/licenses/'.
+
+   Also add information on how to contact you by electronic and paper
+mail.
+
+   If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+     PROGRAM Copyright (C) YEAR NAME OF AUTHOR
+     This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+     This is free software, and you are welcome to redistribute it
+     under certain conditions; type `show c' for details.
+
+   The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License.  Of course, your
+program's commands might be different; for a GUI interface, you would
+use an "about box".
+
+   You should also get your employer (if you work as a programmer) or
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  For more information on this, and how to apply and follow
+the GNU GPL, see `http://www.gnu.org/licenses/'.
+
+   The GNU General Public License does not permit incorporating your
+program into proprietary programs.  If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library.  If this is what you want to do, use the
+GNU Lesser General Public License instead of this License.  But first,
+please read `http://www.gnu.org/philosophy/why-not-lgpl.html'.
+
+\1f
+File: libidn.info,  Node: Function and Variable Index,  Next: Concept Index,  Prev: Copying Information,  Up: Top
+
+Function and Variable Index
+***************************
+
+\0\b[index\0\b]
+* Menu:
+
+* idn_free:                              Memory handling under Windows.
+                                                              (line  31)
+* idna-to-ascii:                         Emacs API.           (line  65)
+* idna-to-unicode:                       Emacs API.           (line  70)
+* idna_strerror:                         IDNA Functions.      (line 310)
+* idna_to_ascii_4i:                      IDNA Functions.      (line  68)
+* idna_to_ascii_4z:                      IDNA Functions.      (line 152)
+* idna_to_ascii_8z:                      IDNA Functions.      (line 170)
+* idna_to_ascii_lz:                      IDNA Functions.      (line 188)
+* idna_to_unicode_44i:                   IDNA Functions.      (line 106)
+* idna_to_unicode_4z4z:                  IDNA Functions.      (line 210)
+* idna_to_unicode_8z4z:                  IDNA Functions.      (line 229)
+* idna_to_unicode_8z8z:                  IDNA Functions.      (line 248)
+* idna_to_unicode_8zlz:                  IDNA Functions.      (line 267)
+* idna_to_unicode_lzlz:                  IDNA Functions.      (line 287)
+* pr29_4:                                PR29 Functions.      (line  55)
+* pr29_4z:                               PR29 Functions.      (line  75)
+* pr29_8z:                               PR29 Functions.      (line  90)
+* pr29_strerror:                         PR29 Functions.      (line 109)
+* punycode-decode:                       Emacs API.           (line  39)
+* punycode-encode:                       Emacs API.           (line  35)
+* punycode_decode:                       Punycode Functions.  (line  96)
+* punycode_encode:                       Punycode Functions.  (line  51)
+* punycode_strerror:                     Punycode Functions.  (line 140)
+* stringprep:                            Stringprep Functions.
+                                                              (line 127)
+* stringprep_4i:                         Stringprep Functions.
+                                                              (line  57)
+* stringprep_4zi:                        Stringprep Functions.
+                                                              (line  96)
+* stringprep_check_version:              Version Check.       (line  17)
+* stringprep_convert:                    Utility Functions.   (line 163)
+* stringprep_iscsi:                      Stringprep Functions.
+                                                              (line 254)
+* stringprep_locale_charset:             Utility Functions.   (line 141)
+* stringprep_locale_to_utf8:             Utility Functions.   (line 179)
+* stringprep_nameprep_no_unassigned:     Stringprep Functions.
+                                                              (line 245)
+* stringprep_plain:                      Stringprep Functions.
+                                                              (line 262)
+* stringprep_profile:                    Stringprep Functions.
+                                                              (line 161)
+* stringprep_strerror:                   Stringprep Functions.
+                                                              (line 194)
+* stringprep_ucs4_nfkc_normalize:        Utility Functions.   (line  98)
+* stringprep_ucs4_to_utf8:               Utility Functions.   (line  52)
+* stringprep_unichar_to_utf8:            Utility Functions.   (line  25)
+* stringprep_utf8_nfkc_normalize:        Utility Functions.   (line 113)
+* stringprep_utf8_to_locale:             Utility Functions.   (line 191)
+* stringprep_utf8_to_ucs4:               Utility Functions.   (line  75)
+* stringprep_utf8_to_unichar:            Utility Functions.   (line  39)
+* stringprep_xmpp_nodeprep:              Stringprep Functions.
+                                                              (line 270)
+* stringprep_xmpp_resourceprep:          Stringprep Functions.
+                                                              (line 278)
+* tld_check_4:                           TLD Functions.       (line 177)
+* tld_check_4t:                          TLD Functions.       (line  44)
+* tld_check_4tz:                         TLD Functions.       (line  68)
+* tld_check_4z:                          TLD Functions.       (line 206)
+* tld_check_8z:                          TLD Functions.       (line 232)
+* tld_check_lz:                          TLD Functions.       (line 260)
+* tld_default_table:                     TLD Functions.       (line 156)
+* tld_get_4:                             TLD Functions.       (line  92)
+* tld_get_4z:                            TLD Functions.       (line 109)
+* tld_get_table:                         TLD Functions.       (line 139)
+* tld_get_z:                             TLD Functions.       (line 123)
+* tld_strerror:                          TLD Functions.       (line 291)
+
+\1f
+File: libidn.info,  Node: Concept Index,  Prev: Function and Variable Index,  Up: Top
+
+Concept Index
+*************
+
+\0\b[index\0\b]
+* Menu:
+
+* AIX:                                   Supported Platforms. (line  74)
+* ARM:                                   Supported Platforms. (line 128)
+* Autoconf tests:                        Autoconf tests.      (line   6)
+* command line:                          Invoking idn.        (line   6)
+* Compiling your application:            Building the source. (line   6)
+* Configure tests:                       Autoconf tests.      (line   6)
+* Contributing:                          Contributing.        (line   7)
+* de-allocation:                         Memory handling under Windows.
+                                                              (line   6)
+* Debian:                                Supported Platforms. (line  10)
+* Download:                              Downloading and Installing.
+                                                              (line   6)
+* Examples:                              Examples.            (line   6)
+* FDL, GNU Free Documentation License:   GNU Free Documentation License.
+                                                              (line   6)
+* free:                                  Memory handling under Windows.
+                                                              (line   6)
+* FreeBSD:                               Supported Platforms. (line 110)
+* GPL, GNU General Public License:       GNU GPL.             (line   6)
+* Hacking:                               Contributing.        (line   7)
+* heap memory:                           Memory handling under Windows.
+                                                              (line   6)
+* HP-UX:                                 Supported Platforms. (line  82)
+* idn:                                   Invoking idn.        (line   6)
+* IDNA Functions:                        IDNA Functions.      (line   6)
+* Installation:                          Downloading and Installing.
+                                                              (line   6)
+* invoking idn:                          Invoking idn.        (line   6)
+* IRIX:                                  Supported Platforms. (line  70)
+* LGPL, GNU Lesser General Public License: GNU LGPL.          (line   6)
+* License, GNU GPL:                      GNU GPL.             (line   6)
+* License, GNU LGPL:                     GNU LGPL.            (line   6)
+* MacOS X:                               Supported Platforms. (line 116)
+* Mandrake:                              Supported Platforms. (line  66)
+* Memory handling:                       Memory handling under Windows.
+                                                              (line   6)
+* Microsoft:                             Supported Platforms. (line 132)
+* mingw32:                               Supported Platforms. (line 132)
+* Motorola Coldfire:                     Supported Platforms. (line 124)
+* NetBSD:                                Supported Platforms. (line 100)
+* OpenBSD:                               Supported Platforms. (line 105)
+* OpenPower 720:                         Supported Platforms. (line  45)
+* PR29 Functions:                        PR29 Functions.      (line   6)
+* Punycode Functions:                    Punycode Functions.  (line   6)
+* RedHat:                                Supported Platforms. (line  49)
+* RedHat Advanced Server:                Supported Platforms. (line  58)
+* Reporting Bugs:                        Bug Reports.         (line   6)
+* Solaris:                               Supported Platforms. (line  87)
+* Stringprep Functions:                  Stringprep Functions.
+                                                              (line   6)
+* SuSE:                                  Supported Platforms. (line  31)
+* SuSE Linux:                            Supported Platforms. (line  36)
+* TLD Functions:                         TLD Functions.       (line   6)
+* Tru64:                                 Supported Platforms. (line  26)
+* uClibc:                                Supported Platforms. (line 124)
+* uClinux:                               Supported Platforms. (line 124)
+* Utility Functions:                     Utility Functions.   (line   6)
+* Windows:                               Supported Platforms. (line  78)
+
+
+\1f
+Tag Table:
+Node: Top\7f1053
+Node: Introduction\7f2816
+Node: Getting Started\7f5297
+Node: Features\7f6404
+Node: Library Overview\7f7803
+Node: Supported Platforms\7f8601
+Node: Getting help\7f12157
+Node: Commercial Support\7f12620
+Node: Downloading and Installing\7f13550
+Node: Installing under Windows\7f15433
+Node: Bug Reports\7f16813
+Node: Contributing\7f18203
+Node: Preparation\7f20175
+Node: Header\7f20889
+Node: Initialization\7f23904
+Node: Version Check\7f24101
+Ref: stringprep_check_version\7f24636
+Node: Building the source\7f25590
+Node: Autoconf tests\7f27451
+Node: Memory handling under Windows\7f29817
+Ref: idn_free\7f30765
+Node: Utility Functions\7f31301
+Ref: stringprep_unichar_to_utf8\7f31965
+Ref: stringprep_utf8_to_unichar\7f32389
+Ref: stringprep_ucs4_to_utf8\7f32777
+Ref: stringprep_utf8_to_ucs4\7f33655
+Ref: stringprep_ucs4_nfkc_normalize\7f34408
+Ref: stringprep_utf8_nfkc_normalize\7f34856
+Ref: stringprep_locale_charset\7f36014
+Ref: stringprep_convert\7f37047
+Ref: stringprep_locale_to_utf8\7f37603
+Ref: stringprep_utf8_to_locale\7f37983
+Node: Stringprep Functions\7f38331
+Ref: stringprep_4i\7f40242
+Ref: stringprep_4zi\7f41830
+Ref: stringprep\7f43042
+Ref: stringprep_profile\7f44367
+Ref: stringprep_strerror\7f45474
+Node: Punycode Functions\7f49073
+Ref: punycode_encode\7f50812
+Ref: punycode_decode\7f53007
+Ref: punycode_strerror\7f55119
+Node: IDNA Functions\7f55881
+Ref: idna_to_ascii_4i\7f58445
+Ref: idna_to_unicode_44i\7f60075
+Ref: idna_to_ascii_4z\7f62041
+Ref: idna_to_ascii_8z\7f62632
+Ref: idna_to_ascii_lz\7f63217
+Ref: idna_to_unicode_4z4z\7f63945
+Ref: idna_to_unicode_8z4z\7f64594
+Ref: idna_to_unicode_8z8z\7f65237
+Ref: idna_to_unicode_8zlz\7f65874
+Ref: idna_to_unicode_lzlz\7f66596
+Ref: idna_strerror\7f67401
+Node: TLD Functions\7f69018
+Ref: tld_check_4t\7f70648
+Ref: tld_check_4tz\7f71548
+Ref: tld_get_4\7f72402
+Ref: tld_get_4z\7f72908
+Ref: tld_get_z\7f73319
+Ref: tld_get_table\7f73817
+Ref: tld_default_table\7f74350
+Ref: tld_check_4\7f75075
+Ref: tld_check_4z\7f76324
+Ref: tld_check_8z\7f77490
+Ref: tld_check_lz\7f78757
+Ref: tld_strerror\7f80095
+Node: PR29 Functions\7f80918
+Ref: pr29_4\7f83206
+Ref: pr29_4z\7f83837
+Ref: pr29_8z\7f84361
+Ref: pr29_strerror\7f85020
+Node: Examples\7f85746
+Node: Example 1\7f86195
+Node: Example 2\7f88716
+Node: Example 3\7f95349
+Node: Example 4\7f97866
+Node: Example 5\7f100392
+Node: Invoking idn\7f103839
+Node: Emacs API\7f111161
+Node: Java API\7f113918
+Node: C# API\7f118822
+Node: Acknowledgements\7f119287
+Node: History\7f120389
+Node: PR29 discussion\7f122033
+Node: On Label Separators\7f125901
+Ref: On Label Separators-Footnote-1\7f128375
+Node: Copying Information\7f128468
+Node: GNU Free Documentation License\7f128875
+Node: GNU LGPL\7f154025
+Node: GNU GPL\7f182200
+Node: Function and Variable Index\7f219744
+Node: Concept Index\7f224730
+\1f
+End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End:
diff --git a/doc/libidn.pdf b/doc/libidn.pdf
new file mode 100644 (file)
index 0000000..bfba1d0
Binary files /dev/null and b/doc/libidn.pdf differ
diff --git a/doc/libidn.ps b/doc/libidn.ps
new file mode 100644 (file)
index 0000000..ee2f9f9
--- /dev/null
@@ -0,0 +1,11063 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software
+%%Title: libidn.dvi
+%%CreationDate: Mon Jun  8 12:41:10 2009
+%%Pages: 101
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMBX12 CMR10 CMSY10 CMMI12 CMMI10 CMTT10 CMSS10 CMSL10
+%%+ CMSLTT10 CMB10 CMTT12 CMTT8 CMR7 CMR9 CMCSC10 CMTT9 CMTI10 CMMI9
+%%DocumentPaperSizes: a4
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -o libidn.ps libidn.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource:  TeX output 2009.06.08:1241
+%%BeginProcSet: tex.pro 0 0
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: texps.pro 0 0
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginProcSet: special.pro 0 0
+%!
+TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
+/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end md begin
+/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
+atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
+itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
+transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
+curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
+pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
+if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
+-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
+get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
+yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
+neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
+noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
+90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
+1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
+2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
+-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
+TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
+Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
+}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true def normalscale
+currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
+/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
+psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
+psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
+TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
+@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
+closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
+/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
+currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
+N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
+neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
+rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
+scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
+lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
+ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
+/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
+pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
+/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
+setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
+moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
+matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
+savematrix setmatrix}N end
+
+%%EndProcSet
+%%BeginFont: CMMI9
+%!PS-AdobeFont-1.1: CMMI9 1.100
+%%CreationDate: 1996 Jul 23 07:53:55
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+/FontBBox{-29 -250 1075 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D6F5CA5FED4F9AC9ADE41E04F9FC52E758C9F45A92BED935
+86F9CFDB57732045913A6422AD4206418610C81D882EE493DE9523CC1BFE1505
+DD1390B19BC1947A01B93BC668BE9B2A0E69A968554239B88C00AF9FBDF09CCD
+67D3B2094C11A04762FE8CC1E91D020A28B3C122D24BEAACF82313F4604F2FEF
+6E176D730A879BE45DD0D4996EF0247AEB1CA0AB08FF374D99F06D47B36F9554
+FAD9A2D3CE451B7791C3709D8A1DDDEFBD840C1B42AB824D5A0DFF0E0F15B0B7
+22AEEB877FF489581DA6FA8DA64944555101EB16F7AB0B717E148B7B98D8DBFD
+730C52937E226545CF8DC3E07C5BA30739BAFCD0F2B44275A6D503F582C0FB4F
+449963D0AD2FAFDE33BA3D77BCA9D1DF878DDAFCA2E22CC4BACD542B282164C7
+97C2BDE318AF9D501CA21F6E662E7AAB75A5F24D2C182E598D175D44E88AB19A
+E7CD59584F95B389183EE21B525BF52A3F23C0FE5383A5565A19361D716F508C
+AAB78411CA5A4D27552CC1C435760D5A89D535B71C593E755C616661363308DA
+A683F54ED0C23FB2C225A008392B0B719F66F11A946A090B7C00B662A3C69599
+B4ECB0CC70C85C4BBBF207E0026F6C7A19F2ACFB7A60804FC98A4BFFD7BFFF2B
+9529E6D9D4238002BBC255BC62959D6F3381FE06E0621B879D5FE5B541D45A1E
+759A6E7DC32B1D1632368D09A97039DF255B6492B1B2B7E2C1434E8306ECA7D3
+5A79B6D614B4979F10988BC76ED53A5F45315CD7DA216221F842FD0F3E050DD2
+BAC23C984D506D8F7D614BCB6B244F5F41321549BB0BD041FBF3053307168680
+3435E9C9445A59A7C666418C4F2512C32058B1CE1EA46C7839C6E372F6CC60AE
+2CF46DD2F130B532DE8ECD42D9204500E413799E298CF6426F28D23BB7216BEA
+1A618B3ECC61B44DDEF0BB22D640B47C09AC0DF378CE68FC9CD88BDAE9ED89CB
+431A5CF9C3E9528FEE7A9936C2B1CF7B38DD2B95773F0EA0051607BE1B0B3588
+A8B907A5EF011B4622C5093A7B107DD1EED6FEE9536DECF1CC96E65373D0F433
+30AE3C094654ABF4698C07F8C74E71D023DFD242EE83B1306786124DD8C6BFA7
+801E66CB944BE7EBCB3FE803EC97067AF7AFC8A4E9AC9D11
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 76 /L put
+dup 101 /e put
+dup 115 /s put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
+21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
+06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
+55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
+B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
+0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
+1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
+7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
+7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
+356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
+19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
+C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
+244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
+AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
+592943209E846E55B4CB54F6658CBA3C0B29796D69D0435D5431ABECF3448C15
+98CA2F36F3659E29AEB79355EC2ADF835CF0886C21B766B9DEBC3950B5B3B496
+2E06D980A8C60305B273232D4604F12632FB4F1B2F9703952C823C098543AED1
+CFB4ECF259A11985F0C944A57B5AFD853374FCF12305601200C2A393E2FC77FD
+F78C2BED60AF8B7CDA6B5746055940D7754D9893E0E5644496F96B6A10D7ACE2
+9D848CC0EFE167A3916FB1E339DBA774DB743B61136CB1F947D8AF1AC91CB491
+216DF44F09E32F9CEADCD17F8D5139327E33DCAAE2ED1AADC19C8389E15174AD
+B3176693A20ED0F5687159B92E079B68C3E13BC6D53A683407C92B9AF351FCFF
+CBD0080F83AA7AF2129D3425BD7A56932D411F47DDFE71CC93F515EE4E0250B1
+289867C2325A170786AF541F6BC298844D1AE396D195746502D050C33E38A75C
+D5E76D6CED80B925FBA7BA64266C3DC9205FBCAD67DE0846E57C32067D454B6D
+75AC24E2F5DD5A32CEDBFB6D8FFD2FBD76A9E0804DCCBE0B74DE7DF2DFA900F2
+7B8FAC7C9FA87C0D0A10B4DE447483CB62DF69D545BFEF3AFA61A2C4E15D6417
+11F626DCF70C075E33C88BE90B738213A4019BECED3E9CB1567AC5FEE6F6E97C
+1711C5B0A571BA0D06C314F99CDD675D0DE74D5CE343F1F0A4CD704EE02972AD
+D8618B23B18CC9E838DFDC7BA23C901EC380108DABF5DCFE2DAAC1A42CD0F813
+76218D374594DDF79CD25BB6F390144348D565B48135F69DCA7B1C7990F1D425
+21D28FF5AD9CF4D06DC3010A8237318BA8F736C23CC6CBA40FEFCBACCAF9C401
+8AF0F3C2FFEC4CEB34DCC6A5AA9562F0D416BD94E4A6B9DB9C9024CBAACBDF86
+2A11DF29CA392BC64B66B510C0F4A45E1DF3264F7DCF7505AAFA2B53A1116A4F
+67F3D23805CBE59A8FC493D770D4DE96B25CC6DB30FAC5BE9B8A08687F112AC6
+5D6385A8E40961D4C182C194788F0D7FE4FD2EF589A2471F6074DFACB4A33DF5
+5A3855D12D1E6A84CCC783F2E3D68161E411C2D6E90825DA4EA289554ABE18DC
+A57AFA8544E48B84B57BE2600D2301F7159E58EA5B942742F85674
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSLTT10
+%!PS-AdobeFont-1.1: CMSLTT10 1.0
+%%CreationDate: 1991 Aug 20 16:41:43
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSLTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMSLTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 39 /quoteright put
+dup 46 /period put
+dup 52 /four put
+dup 67 /C put
+dup 84 /T put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-20 -233 617 696}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0528A405DF15F03DB1C3DA8B850431F8
+0E5F73DAC973450D1ED0530313057E971FC7E7CA88E61DA6DB9A5CD61F0F76CB
+4DE9105D0627B8DDF51A655098229920CF429CDAFC3F7788C95E7AB30E84F840
+8CED52E98DB4CFF161D2E62B0D28CB8B0AC82E7A8D2C007953BAFB3056D66079
+8064956E257D31C13509FB81A250D9E875C77A4E91CC49E9FB3C0718B2F691D4
+B4A64F351F4DD68133DED7629B0D96E5124584A16FD2AC7A3EB244A934FF059F
+ED7297B0505F3C2994AD66A3CA5D2728B034DE94B64A8AFAF341601BD4DB5858
+C9950A8BB9C598B8960609F48116ABA8C007190AF0ED335EB5BF61BA6871FA5F
+EAB5A26AEB5C7C352EB80799CEB983F19EEFA801093F62086AADD0B80BB6580F
+2CF61B1390FA56DFA1A0B61C58DEF96BA767A8A37EA44730783C600706606C60
+4EE74EA99B7C0F8E2525C8847F3D31907C3C483EFA98F6C416B6B2C343DE6370
+52FAE423008D086A76A1FFB327CC7FD84B1C66B203A4F41582F4599A82F8362D
+38108452EACCC937FFC4F3ABBFE3628DF51367DA6BA3F6826FC6522D6AC5E8EA
+00BAD300FFB6DEDAB93237704202BACD030AA824B1E97C0AFE17FCE8C75F4FA0
+B8A74329A6CF1788C7EB34DA7307411E9AD7ED8D6582884456E06E033B4FFE7D
+CD4DD8B06AD01340CCCFBC382C18CA451E4C886B01D082FF8CC5793F4727C3DF
+B52B4F1A242F31D1EB79D1E39A1D4FD13D6C5E2A42AD4B4D1CC4EE7BA0E5F80F
+802E5AB57EA15F4DE44D82AC408AA86D4BF58EF967FBC6497BBC7F017C0598AE
+32CF865DFFF0FC7FF9E6DCE9B5F2F4C7491AC674F46E8E7660452CE0A77C1EE8
+00DE382ABED85350033F8ECB97398E4E0A75D4877A107F6A909D0C76D14F9A96
+8A6CFDE3FD9D79B6FD82693A9F354BD2ECF30C6D99F7AC522F8D6C93EA214F7B
+3D0ED77F042ACDE9414264C0698E86398562E2C640DEBBA0734AB4C3ACE3907D
+CC79E6B2C6C3C3F9B01526E8CD98237D4A9B403FF8CE3132222FA60C196A19BC
+A2393AE6935C0F8B67FC1D1A12A38FFE95A66EB02C0FC15DF80611EC5F766065
+C2F919D30115E4B9B2DF8E06119C2D412BE014B3250E6C19EFCA872A584AA020
+8F164DA7F2EB28C7482E30355FD7F4D748370A8E0765BC18D8B02C593422CC9E
+2BB241D1D6B25BC33ACF6DF52252D220C56729205B93A091B50B6950802C4AE1
+A40FEC3B01F1893EE9AEC02D7D238C5F777B09A64ED97C40F65B0BDC0FD86071
+85CFD0535AD50DF7CB998CD57531016A50C6FE0491B8AF86FA06911D4D41CA44
+E66D39C6D922D1CAE808DCCC8465E5F4535A20223227982AAC9AFEF0B93F1949
+51210B3E1C00DC3162385E641B2B39C78111CF5A22E6DDA34C544E3DBE69B2E8
+01E1D210DE6109AB63B82C4423DBD65DDD6267421B0098FEE41043721B061866
+3B94FBC877D92124C1B1946A67B163CE0926D80A8FB1168804DD07A58E9B88C8
+7F95FF44BA0A7D765BDCA0B7D78A82D9BA76D916E24BCFC5F99E874423C3D0FC
+F25254071271415A51425372B990CB341CCF507C4184EE044E2977D504B72D66
+82D98EF7A8F6B228DEDEC6E580EA66F131010CDB0F410009AD324C5746F0687A
+53F252F9C5816D8F7DC2531ECBBCCE77100F1B45420D3D5D17EF23EA3FB5B28E
+17485AAFB0A84B9E2A8409FCFCDBC14F6023D3CDC5F6050B26D0A4C2F8A348FA
+B242D018A7109B1E7E74BF83D9DD31F8C0ADB922EA778A5F22269B83AA935F06
+96ED8AE63F3A38097E9742F6F86AC3AC02E0C52FE5B3187CCF376D75C160CF24
+323E6AC504389C86AD376B5F7C8EDF8ABF062CBF42F26B337AADDAA6BC8BF6F2
+88E12EA2D2D72FAAB44A7EB77B1BEB805FA0F17463200436554F24ACCADB73A4
+F128E851A5895CA243E0B7E9698CE2B8B7EFAFEEC803760F1E195ABE25B94505
+BBDDBF646C5D0DF0848DD7DDBADDA7517D72B5F08341B62D40CF66A8DD4BA371
+A06C5A69BF65DDACD42ADE4B8AFCEAEA54F96160BAD5F265BECF5F7C0161BCE2
+CBAA9401A15454D5677F4BD1082FD70709121F94EEC9D20E7203EF5B677B0DC1
+5F322302E6A1337419864B0FF4590858BD2D48448449A0C56628D58EE84CDD9C
+9F53E26A5B5C81DB56DA354F211BB58CF3CA6743325EABD507DC120D4B3D3634
+97C37CF7B4F08E4DAC750DAEE488F315A8CB075978E8515C2998B0BF0F88870E
+99FB7CBA579B359EB10C559A5B82B805B71A784C519D59E4181428337E2320F7
+47A1A962FCECBBB7A20A73BC49CEDC8C2CB18BA8356CBF473A20170CDA6043D9
+0D827D7A2F84B9DFE100C51B1E074DA6DD4CFF111BEB5092085F5F4E9D5F27F4
+225617089AA74BD761047374CDCC50BFD1ABFAA1833C8C595824B8DDCDA89AD7
+A09BED961FCF3AA7D2214A5F7E6BE8D5245E2DA5B4156AEEEA9DBCCB982FCF67
+FCF11E687878F4E631F22CB7C5D2FF47883FAFD90F3AE940B9E06B783A9A62ED
+FB3376A975019AE256AAF6FB720F9248A196449569B9E2FB0FDAAC7E41A3E63D
+CBDFB04F7B86EA896A8B15B4A1AC5C006CE20E8B8FC2CB07F279B7A3C10457CB
+37DB0C136F48E0FADC1BB30C0D6EE275B2E6C622DD03221484255A246E3FDF7C
+CDCC4420629446257B69BA6AF63563F20C8BC01EDB150C1E4C647E6D4B839BFC
+0069B108979FC6C4130A993A311771D12AED3D3BBE038C1408F4F0EDB4ADB0B9
+F2B15CD05AC89FC1258DBFAB025D3307D6511A022B62C55C243C986D6733C137
+6A9D1D962A0410142638104AA163448A75EA08C4B8A888AFD59A1259E998EC4C
+B6082A1A551321553D60ED640964A7A6A90B9F69D2AB50C87B605D1E5C8C5645
+CD1DAAC077020E3F728FA64BED2CDCBCBEE120183EC7E91F520D5CE4C0F56CD6
+607C74BCEDFC98328E7E40F3C068F077F8F0751C1521D970E933904BBA328A5A
+CF258BC044CB98EBFC5F8A769153D604AA2C2CBB194C87745340FD1B9ABF5E51
+910813F51E093515CD87CE3D35670374B8CAA043422E1DC5952DFFBBAF7E39C3
+58266C99E53AA6F13C9E4ED914668AD6EBBAEBD23B174544A8C5E8194130C9DD
+487BA1ED33DEDCFB1DA3094ED90B2EDC7322B06B806981249EFED81BBED50A3C
+1F61B7956AAAE19876EDFB712D864993C8FF3E1652EA1E49F185ED30DEB08191
+3576ED39E736A040398574CAECB8EC40E3B94DC20668FFB7FE41DE9D03AE283F
+6EF225CB0A8986E99E37F1552ED063250D99318D39D6FD5FE6674053A4C6DF44
+DEA34EF42FDE894D55AABBEC2554C46CFB70E681F0C403B086748387C83D6F71
+C96B1E8056FBEB245B3DEFB1B607E74B51E21DFB9A8FD94C9795F45EB8B91F6A
+4B63CC3FDA0A76244B1BC29F2822F987EDC5C4B2DC92FF8743733B93D089C9AE
+ACD96240588AC68429787239019FAC3FF62DCBBF1E4EE1256351B599C591ADBE
+FA03E538BC26C6DFD6BC23A0B474B4029E7D12F29130E56C4A45F6A629F5487E
+69FCDFA96DE4673E16FF2BA01C8B6AF4070DCF169FD53BC58692FF1EC6459254
+60CF317C9B1AC883182CA39E2BFAAA044B221694934B4B09AC186C87DC03C225
+6EBE47DECCCE9B3A8BFC16632044070FD12EFC2282260C926645E483AEA01E61
+7531B7D24DB48EE833EA767325D39A7515693321745DECFC04392492D82D37F9
+A94CEC8BB222FC63C9E5181BBD3E5E415E665D9A8EF90A1E36EFB51C4F38B398
+F2AB969203BFD8FD30B3EF5B0B21FD85521A03C886AB0A0B88254A3C9BF03B9A
+677BCF2C5EDAA35A020F92C9794A77428916B2CBE75F27F97FA6AC0B155132D7
+0D29CDF8E12708736C8CC18D90A63F859082A819CD6D577C9F1314970D9BAF7A
+6DF5826870E018AA9FF5BDFA067828B38FE84D5D5BCFF6A53777C4190B768511
+A126A5DF1E5C5D1A16692FC02CB80E6BD3451A637D1821AC7BDCDA808D72C5BB
+C64D94BD5FB1F06CB2BC6081D7328051BAE08CDAC321A48D7E3C02BE1D3D1377
+61C9535B8E2100B817DD1F07693F0270E40041234C2D8846AB0518060EAFBF8B
+A59BE72D2BAEC6EC59BFCD400C32F48D8D35339989BC95C2B317B666F414EC12
+253ECFBB8AF78C513F4A747A5A79C0544AAB7F7A9F3413F5D91CF99F51EF8341
+BBF3A84C3019FFB3F28AA48F1D87871D026369E6A0BFA296262EE2A65E4ACA09
+1AFCD0C1F3043C333C6BB31B7257CA3DB4746A80865E4255CF40FD1E029E644F
+BF345B2210BCF532A37C28BE20DF6F2BB81E919175FAB36A626256CEFD870710
+E1550F2847337BC8395666BA10D61B09A6AF4968C60C772471F956F9C03DB7C5
+AB15DAB8FDC5F72975358B8804F0FEA01F6D4B9128D8DA6B2DD541F58285C5EF
+35C214839F2A5ECB14251A6C2FC3859F7509AE779F4878F452B12FE4F78CFB72
+F098CBC4E6B0DD672DD615A757F2679F5D8D3A4B6E1526887B28D83D5358850F
+4E28D691E7631A9049AEF3F3767BF027E841902694643B9BB27D3953C4456FB4
+9ADE84261546F1D93F33D5FE8160DCEBEEE0EFE5EF366934EF19245A18EC451A
+9C5254E4C0BED9948ECC53E60BFA1C2D376616F6BCF85008CC31165C854FB96F
+857CF6242330FB483001001184512AC019AA8905DF23F06D0B7828791461A36F
+1E08C0E36F059B6DBC443AE32018BD181C2277AD9D7F374D613170C86416334D
+D1BFC6AF96E1AC36C836EB7CCD159EE970C7922FF5F58643B9501502AC6B54E8
+515CE45E621F8140E5DCB0CCB7F00F38DA2E1AAF4164C66B9961C9363027FF19
+05F762E796B93E3689EB2A97C37DB969C07E1E39F53CB4128101EA083631EE5D
+F8363B28077E2085842CAC9EA549B2072167FD6EDB80B8BE1B6D61481F25B9EA
+A584D5A477DE0596D47E8ED89FC7DB85544D5A840BF6441EC9AC68AE495E8F47
+A120979C0CD25FFB7F4ADAB4D131992EBACEA1DD5DE834F6BEA84D13BD539E20
+70199505E2BB089C617D25F54CB7F73252547156A4E575BBBDD6F75149B4E5B8
+E85FCCA0FA5EA8C241B6C1504FD9134C7B22DA8180BCC558A72208F1209519E3
+5E4C6E32F83D5F876699A48FCF0DCCF44FC06859E517B2C25BA00A8B85F0E301
+D2A17E9D59F9CFD15C0F0E66375B1F6BDC500E02175EA8E50266A1C3B8BD23BF
+12E79DEEE2AC1D4CA48C8D62AEE598E79C8A522C66A4FF1A1DF757C48E4E525F
+ED6817933D4E872722CFDC18D3CF57442CBCFE57C59BA41265E0719D7677E26C
+25E4611AF1D70FB3C5EA88380840116D561C8BBA7D1388FD9E183C82AD7776C2
+59D0620F597AA45A9A345D8426D02C81D56F9740FCC8EF5EA6354D526D44A019
+E9B1739BB02CC3495717DFC46C6E71EB0AE07E6715E1ECDBF7E1F5BE597B6CAD
+E2EEAD219DEF40051D26326B93D8AA7E3724D7998A1B0745893CC9A0C02332CF
+8C09C7293E2F23395F8B7922F766080AA7B0B0772861974D3F347B8DCC6FF52E
+B3A1CF1E78F1867E80A93722A42BDAB4EB759CE89389080339644098F0321C17
+8D3D3F7DFCBBD6CED71E05FAE86646FDC421D265ED7437927A2EFBE0CF11AD4D
+FD4135631614A4307ECE4AA7BE08B089FFE2DBA93BF5ED7457698B7ACE22AA55
+30AB9EB53BCBF034B1D22B8DED5FFAE9C7B8B484007C614A13C35260D81CDF80
+E0501C2498C2ACAEEF03DAD15211E4287354D0BD7C57C6571AC023B708260AEF
+86EA021722DC6113833C25790FABCD5C20822CDABFA4E5240B9B972F843C5FBD
+4BF144920464967F50213B582DCDB5815A8D5E334A3DB9D59231B72BD6BAE237
+D9030017A33A6EB979ADE115EE6A215B6AB11B9B310BF94C0F88C766C52B07D7
+911DB37A54F9370509F88B43436A762755FA06A4E9BFCDEA7F6C22EC678ABDC7
+0BFFC7BF150E980DF0260037EEC518686143659E3C3266E02C122B69B56D58F8
+8593FCF82E1DFFB6DD26F11AE382C59A10FF02F4AF78FA0CE4A2283C46B32B57
+A1499738C3F96168EE551B6CAFBB1C827AAF2FB9661FF1596891C5E195ACB9B2
+94B4C1A430B23A4B30F4745D583BA753F3BF148D16741279A815082B7B31545C
+63201DAD0F57C343DC98CA69130D9C25F0C71B7F6E95DC1DEFBD4010B9D70AAE
+4237546BAE5525B4E229E54D4DD463DA111899D4F85C7E727998B36730D17AB1
+117DEF21C2CD57C096C1720E10B8D59FA10D9F19FC4277F4DA8B48B9FABEDD58
+09BDFF73AD60D0E5BB306E304F166751A8F48467E010637F884217DF3A6FD188
+AC947911F550C212869ACBEEBC5746C1DAF22A125C43DD29CD02774DA9365E3F
+A4BF77A5CDC291373935D632E8B07082120DCC312E158D355C0E8AAD26363B56
+BC45360DE5846AC61F7625A2609DB34CD3485B602CD134008D0074F207294CF5
+7519987EE1C5A7B26340A4392DE0FC79FE7A6A8F4265DC842D7BDAC7CA209148
+53E63A45E6FE13B0BB8E4BCCE822D2D0918118CAC34A175A5DCA7FC1C6DF7422
+9FD94C3C79A0F10A818E8AC15CEDD5AF3CCA4A3274C677B6C0FFC22C1F04E85E
+87E8649DD07A943E939DB2B0C9379DCDFB61B3CEAF7CE841FF71E0B0A089B287
+8A942EC8D603BED18EA74B684CEC2C0CBD447AE5970E7033458A9332F5AC1264
+B72523C5C9C4CA5F69007A23E7A6BD045BAEA55875003F7366127204D4BA1B10
+0E07F991B48DCC6961101502C12D3B555DD82BBD605B18A281244FB00A28131E
+0245489EA450325408D60BC088B70AE5BEABD53899808503BA7D5464F37CE9AF
+E66AB929236AE3C40A4B0123982FE7F32642B0CF4CD97725D1052C2E041ABB35
+884E89D4B41159841B96C5C0CC702A657D998CFB41E53EEF9A030ED13AF70800
+BEC30FC4E5E6B0E4C0A67A4EB98EDB480C4B8C925CE008AB99B4D4A0B43A3D8E
+EDCAFEAF1533C1C2D8EEB4695D4DE181B4FCDB893DF84FAE558E6CFC33F9D2A1
+E0D432E05A2CDD6FD8306C4C4B4EFD255B421B9DB727B36A649A93AA1EF8D635
+E3DCF6750BF91B65BE42767D0668C4EEA2039AC4D07CBF04FC96E4063F8824DD
+7ED6F09F13E086CCD73CFE70F2D002A3C37ED5251DA1F21D7EFF7DA4CBCFECCA
+7B7CE736E75217028B76DB0E56FAA99B80A6C9B7C1B2D1C7B6CD1BFA6F0FF63A
+AAE9E2160496F933124C60A739FDD86868C8024C1CA1473049F47CE59F3B118F
+DFAE18F483E8D27C74C616B6068065703E39D544D32D3A1E126E4EE718E696FF
+244F7BFE220205DD7FF6B875B854E9035F01B34F6245043414DD96D26FF92FA9
+CA9C269D0747BD67CCE3F4FE25A73520A1312B52BB7C9CEF958E915E49CC6E12
+E4D88202CDBF3C55165BF926AB8C48C65252435B4D558815CCE2A380A86E8966
+835CDCB1BB91440E107B24778D2AD2E64AD6AA2FBAAC3C287DE368C9720AABB2
+833CB80DDE605F3CFDD2AA3EC99E4BA5403ECE1A237910AA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT9
+%!PS-AdobeFont-1.1: CMTT9 1.0
+%%CreationDate: 1991 Aug 20 16:46:24
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 89 /Y put
+dup 95 /underscore put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-6 -233 542 698}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E
+2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279
+650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35
+F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A
+D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E
+F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1
+4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A
+438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD
+BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B
+A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641
+AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74
+D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB
+CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A
+082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980
+9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0
+4BA1EBFAFDBEC531EA1210365091671CE3C86A6D4BC591C37DCC02570042575A
+9D24252D6E01A8603753934D7EA5CAC1BE4E5AD2BA047DE8F3983B23A8A1511F
+B08D373B69E5076CE4300137B8805EBCC0AAB89BBB312A77835795E3C069322D
+42C893A30AD739E2BDD299679B158F7493764F2321E3965141B5ED1C6F4765ED
+F46D391A646B30C90002B1C461AEE79E5F094CACCA656CEA3DB921CC5205F328
+A2C69F817061D6C60B121EEE844CA5008F23DF098A804D202A649831727E89B2
+5F8179E82F6E0BBD6D741E8E75BB167D18F2DDE43CD8F43C3BD0FD1E6F34E4A2
+DAB0650F8A4A3DFDF9C4E92837335517A977460886B40A2399C1225F3C6CEEC9
+26B415FF077511DF5F1DE65324915807FE55DE096F044172778C70EEC820D9D2
+CA2393E85913E87579482C9F12576FCAC1E64FE646FEA73063DCE44707DEC332
+CDC716EF7B4FD82D42A696A9745C140B67B9F54813135A1CE25BAD1BE9D5A231
+692D233B201DDCE06718A7BE019AA752606AB1BB75DACF8DCFDF69A1894BD4E9
+D4DF07A02931E7A3BDEC89C2D17945885C4D937BA2E1846D76A7B8E754796F45
+C12E9229B33F9A489464D6C5EAF00C5749D578F2A0A34B0A8FE98AF92CDECD08
+7AAB2D5B0C7FB609170C5CA186D8E2C1E2EAE9C57F6F17F46486E9C6250A5F4F
+592A9A8F19809BDE8BEF788B51A2756F65D85B2EB851C77F7D9B11E0C217C620
+6B0EF9796E51BA47801479CD6E3D5E68C7899DB3E5491495624A6F27DA4F83D2
+22ECD4284E12BC1EFA7E13CA82A852A329EDBF490F68CCA1CA74C692B36868EB
+2101B758CF94969214EE760FAFAB4C5E74E9F14A2425888B38E38ECF797F3C06
+3D480D61AEB7BD90B16ADF37616D2C3C5D4F46D5F8992A6F1A9E86F84392EEBB
+C057112FAAF0C65CDBD99500DA825A5B67C4CE68EA62E7E2FBEEF00CCE040D14
+590868155482B9EDA4283D933D8EE98933BDD9FEF488F4D3D5C4FE48F2AB5B74
+1EDE79A74D40BD46874F4AE52576350F72724F57EF9FF6D1F344EAE7E269B2A1
+A97295F0DDC8CD2052C88CF23C70743A08B1E6476FF258462842BFC8B49821CB
+EF81B20AFAE8F5F7275CE3B456A6AF756F335E037B80C9D9704221742FD0B246
+C39138EF42430E692E959878110D15C17C7531DB2A780E80AC7B832CAA7EA31E
+C634F6A786C4110D9004A8B9B5E5157D96A29449B265B614E8A830BE0E09B043
+11BE7E6127F07D5CE73D752D2135FD38727C085743EBCDE9A0C055393FC1FF46
+B7ADA8569D6E29904FEE75425166EDBBB9490193F1C4C584452A2DA28C7ECD76
+3014C6C98E6C8E217B289F63F474067BEF274A7BD21DC01E68517145D3D137CA
+0BA1B591468F10C50D5E5F3B94141377FEC079C3F6A2C028C0A410F6149B2193
+8254146DD149270D58CF871E8B2F897631A09E9DC5BB25C3227DB9EFEC94B890
+DD793EF3D5BBF7C229D8AF154D1C2CFC464A1EC7D17FF866E39D843AAC441F1E
+CDE78A638BF27A7A578AF0A2CFEDE5E05416F7D4BF521DE2F48F13E61FAFF06D
+C9A060B5774F41308040C9A45392A2824A3B6FD4869C7CAD87DF92F9E537BDBC
+A963521E2B2B8477C6DCF37CE806B59A29D9677612F9A190CB733EB3179B8B36
+D753C41E0F0A24FC3F58A236DDE642982E6CF599A1C37A14CCD521C4F64251CA
+AA825E8808C5FAFB9050FFDFA358DB1D8ACB16FE127640E241AB9313DC418A05
+1487A3D4DE759F176E41C95F9D32A1277B19B940CBDF9F9D4929D680C882E6EF
+4B836EB33FA47F6949ABD4503B5981B365A635157485830D1FCEBCD106C5E4F2
+AA22A2B75B10CC8D0061D3ACF79FA9314E3C81C26D4340085B893560169E2303
+F0DB607ABF4DD14778D1469D1AE3B78E760F2B48FEE646D26995F7C27658B122
+C1E83A08C0A387305F0B2022E2D02D9D91E8891CF266E3EBDB3EF405BD9DA68C
+C5DCE5A5AA45CBDEC0FB828266AA280DBA16BA863194CBFB77B71EA6B17D7E0F
+DECE627BCD3DD7F8D114EC8DDD4F0A786CA2AF10E8860CE63F4C0EA178E98608
+CDE6C1E78DCA56F90662AE49132B8EF40D7B3F87073952D1DF7AE500349D0FF1
+C5A1B6D6E0A4CBC8F19026179F61D3664872514538F9E3F28B626CDF46DC5808
+FE23A48D774982C682BB817177A9F21BD6BAF0F4E22873609ED5C9A0EE74D621
+0B8449613D2CE9784861C5603CA194A07F5CB030FFDE97C511A9A077F78356D7
+7A75C2A3DBA26CCDB073FCA8DA90AC284EA64B02C4DADBE6C100A5948635CC59
+55B3A9FD01A53C3C967989691EEB077D1925C649593782C132F246C09A69B7BA
+F97C9C7DC81F5B404D1ABE791EC7F9EA354F66CD3AA4E8371BB3A9905F1C87C7
+74FC4236D93CD69718812E90F273FFEF6B4BA8283D557C6604B0207EA0657B55
+8465F4BC4AB61A3CB7DB826681C66BCA84A95DF63CB289B8905550A023203FBA
+E61556E5B0CAD5A83A05C36843453AB83D72A96FAB8A11C7203E6B235253EAD8
+5505BBA8239333DBF9730527AF330832976D7A31F2A2F8E5E883C4E90B3F37DF
+2C3E6D01FED71FE2E212F37CD2FC027EE9DE51A19263035D530C77F2B323D309
+2A48DCF2C8D4E9EB17A0A33D1B403314D70ABE9AD3825260A7DDDFE20A71BF9F
+85D73933EF437B377F21A60CED0515E1B705FF94FE53C27DD32D2C73E8D2E28B
+6F1E78C9A3686FF5EF5E9870E8D2802106AE28657E7F8EACABD6682A8D7F5C0D
+AC65B1E292CE3C7F52597019E77B8517A661D75DE3ABEDDFAC189A39FAB75220
+95D9225FF4BCEF1F9F2F1C84F3E2CF2A004173A5FC00389E0E0EF10744227641
+EB461B9BB090008DF3EFC4CEF299888C1B3FCEB54B1BEB0FCC26E8F5FF8C90DC
+B599647483495B0D941B87F2FE8462544C7258A56C036CDD55516F5FC09CC66F
+907C005175065205BC8C83DFA626C84C2416DBA2943310349D0291A778C7C02A
+93FBEBDA671459D87591BDE2F91159E34A9CEA92FEDF48B27E4BC10FF54BE8DA
+89E4723D4C79EDD2AFC9A7E17486EAAC169D65382099C1F1FD18FBCC553C9417
+501CF5DBA50ECE41016733C5B9A7E8143F63BEEACA90494BD9BDD91D0E2E3ACD
+3A6259F1802D3C438BE4BD21CFA6C7D455469161E6B3DC046C634B8C886050CE
+0DA516BB7829826E73EEA5E4F19F1D40E954286B6314330382C07AAE26F8AC72
+CDE0C8AB3B05CCD194ECF99828ECA850A1F824A3DE501066B0BEC68CAF5292BF
+794CF459DF48C2975256979473AA3D7EF2908AEAE79980C8BF90D8D8A8A41231
+AF22074FB85E7456A552B2731BACC4071944FD926DB3C3BE30C2CF894A27AFB5
+EE773F60E5C495A93EAF02FBB41984389B8A4B937B4FC144015017E5413A7829
+3D2BCD17BE704133D38FC8E746667C3A0F0759A6EB1907B7CAC5B92746E84332
+AE204C4039FFD97A50F225459A38FFA4C7134F3229561BA198CFBEA21A26574F
+08999B6C2458F51A99322BC242A59E4BBF2E1C2FB5834A196249FE1EE52E80D4
+7B99D1706589F733C2411C52DA478705AA0702C3A43821015905C7086E84C349
+3419AD94A3EDF1DFF4002B91F0646E13983644C9F6EF430C10632CDC03B54291
+2E602F33812A6561CF9D86656C1A82401CCDFB886271A5CA203BD22125E13D3B
+FA2E4564875C4702484BB56D7D70579B4777407C0204D9B970902AA0E51E3335
+B6605AA730328CDE247DB1CF494745541223A6FF09226DEB8E3BECC07D5A9ACD
+E3D64DE4DD329B49D97369EFE959351B2DF49B3B31174C8D7D961D77DBBCBE3A
+9E73C6BC2CE624598CB031A1261C32A540C45FBC089A6C9DEEBA069E2E4BB8F3
+E90683AAC23CD5465005FAE0746E20CE38B4EC9FBF44DC6228C0C9AD50FE8BB2
+58DD5A4DB2328F4D4285A0C4BCFA1704A1D203974B3639723E7D417E3A1F94E3
+ECC4F799271B7AC61394F51F98C42D2AA476B6A0C57EB37B906A93186C092A09
+F72EE2706D36B9DFAE84C08F86A261376172AD4F037F89A12EDBCB63E9E1D8C6
+3326C0C76D1E3445BE6B600202F6AD8E8B139DA6FE7708DF47D3A8A041B9EB63
+C8FB41834AA4E84CC4E1AB699A045201EA59EB753C12543B598602531C40A6B4
+B06A17AB608636DCE7E927A6D2928B62D23601A6C6C0C85A6BDB3C799DFF560B
+8D4BB430644952FA9CD29890AB55F276BA42F62D759408ACE8297E640B4F1380
+1C4B71A95598C06E05F9CC27C18D7E801F4004DFA3C70EFBFCC4E5CDD6870738
+5B38208E0843549FEC55E5D694A28B656343EA92A747DC91B3458054347B4EFB
+51E7552276606BF404BF9FF90987EB578B57AE6CA26D3474B94191EF664FF1CF
+DDC40EC35B48B7B1777749BC9E4DBF97939F6B9C2F70BEEF9A5715F720B4A687
+5D81AAA165002875F12543F433A3C303C54A3AEC20822068F7FA827C68BD8E3A
+C2A30F0CD08616741CE9152F526D86C3C3B9466C27A26C41A5FC9029B1C11FDA
+3AA772910DF31E74B569B9EA1F44446F8ABD8B63ED85E904488C23A4645CB433
+A2FFA3E16421E86F48A8EE1A6785BCA89EE587D37E18AAC159DD059B3A518EC5
+D58F26D30FB5D6CE2710B47B9D5C486F061A755D030A8A699047093A728CEAE8
+9207F387BF2F4822CAF41B1E32B3CF79BEFCDB0BBB9FC78A6AEB2030872D3F2A
+AB23AEC857FAD9A757E33FC031BC4920A0328158497A51A70ACD4AA3A980DA49
+F4C6A39873E5C2290697B1D4AC9F7A58C99DF276BBFAC7A2C543E7F1E879BD6F
+BF64A0513BF3E0671E094120DD08FFFA8C3C4B6D2330101D8DEC830CA9C5D641
+87B958EA2BBDADFAAD55DA8CC7B638EA9C509BA76616A6A32D24ACBA8C208F42
+16C25B3EA130C26C944BC749EE78A24C0E8774F56A1837D8CB3AB251BEEE444A
+40B3B901D2A8925719D9E51B4E9B6C7EAF09FE00B39DD2F33CB2C24E6801656E
+DCB77457A5EC5EEBAE443A11BD0406A015BAB31685D418A85F01E31F88A21253
+3BCD08C78917A5AC6EF8569E02FB4A3AE46B658D507A7FBC749A23315871A9D8
+C1C906B0826A4EDA1C6C6EFAD0CE1213C1D94BAA9B0461DC285BE0AB633A8F8A
+750E3A70FFA3FF5FD2E78E8BE5681E144CBD53DBDDC7DC5BDAFD26EFE0A1CF8D
+D190C42B2D28B611FF04FAD27DB0E7C3C273E6EE2BC495189F229D9FB3924207
+EC6CEFB99821198829EC3C15346E28FF963D4773777D33FFF4E534EAAFAD0D48
+3021DCB24CA98D802983E212269FB971F7E80E55BCF97A212B2DE1AF2721C4E6
+A4466FA003B81513463A0319B14CAF5859307E950D6B92D9CFA91AF4519BB63C
+C3FEC8D7511CE974691D911C73D4E4304D78D6C34DA0F90A719A2E94C993DD13
+A60F404FE777611552A15C7CF27578C7BE1E185A428BF6D25C06FAA323D0AA6B
+2D450032B23D8F7FF3E9654F916924977E57DD792D191279D5ADEE4EB75EA645
+145BF0BB844AA68A2893A8A7EC2FE60F17516F19947DABA9976C2889189D6A53
+1D2857D1AA3F2C5DF63403370A884DCCEB54032FB1F79A7339B934183D6C852B
+45FDB74251533DA40E6F7A90DB03EEF36D86BD690C025CD7BA8ECAAF269B8BC6
+731DF3C2BB1502C47F27E267D02E9072501BA17018F5F4B2AB6E35B70F03951A
+72610C597E35580BEA3FE6CA5D937E649FE4585481AD8AB3B4E3257559D97116
+A015B5E45024055FF05167FE7F881C71F1BCAAD27A36E10ECD878AF1AFFFB1A5
+17BF50513F6F35AA0C40F5F7CE59687C2D65B58FF9CFA36662D1A04294D932BE
+0B729C3829F1FE85261FBD8E5A9B3AB35A9324203E58BF969936156580EAB14D
+D1842F71B7B6DE7EDCF5DE8C54D95116DC940FBE3E5C96DEED5EB7FDC9A9B495
+92067D334F1E23AE042C9D39ADFE188F313CAD7561091B1758BABA413F8405E0
+B22FDC715FA860B1599FC0801EEB4BB36FAEFF94C6E19BF5DFEF5839533E98AB
+9864EA5834CEBAF028FF0B15D40C61049CE789BF24118893607DCC0C72671159
+3F7FDE0FBF721031BA49DF8EFB6DDEB8B208ED72C6123462E461D09F2206B045
+373D36A16CD58E9688FE78994517F5FAFD4A40BC7D74251ABF8572E7E067D6CD
+1BC02839681F508D70458CB5D2750D13B5405073B086C61E8481C59BE4F20525
+4A697A16B7DE1540469A2AD9F19D76FC41C2EC5C0588B8D567C30AB706EE5EB9
+66393B19F7D93F9A19D22A3EB740B0BA52ECC8CA7B232BB8317AF9C2F1105BA7
+0F71B461FFAF34C3F695B7F73FC7CFA2140AB2D62C3DECFC62918D4FB74459BD
+E0B2AA8B43A8727CB65D7D6157601AAA0B98947040D1B120072511821A61DD8D
+E67C2FE28144B71B3052F7F45ACDB7E7DC4DB473E15885361BDB8DBD4424618B
+CB3CE71869AFB06F4BBCAA8EE9C916F0027981751186FF84EB51FD7CA05A8353
+B226848556193C1767A6C96CC1C59F0C153D3397ED0364A1C19B295F1715191C
+F471C0B3004B1EEE106DB2750D8B127D2FBD6E3A5AB32CD7E15332A64DC3AE35
+CB49263C6AC5741999328FF3C0F497D0E81C4A325605F8A0B3F57AF37CA785BA
+2152EF6059DE501217F850AAA15CAC696C91469EA728B7D4A9EF658E4658698F
+B3E5D034233A4687BDA4FD86105D91316B297E938830CE22285B25F271BEE72E
+69D10C8AA433BBDB903C134EF2242BF70CC04AE6846919238CEE59913726343D
+ACF16790D5BF8DC73A4E9F969A14C432ACA2943BA786E4E55146A0F1C1C11321
+177E389EB97FFA3502BDA2CA00D9F42D0E2148189A075970D649153CE8A16D49
+D9BC9A4221070D00B65BCD6DFE956B6EEE9D0B3E5FD5FDE15414DB11C4242BC9
+E075F0905B716000A7FB5CAA551C95640C88363C7AE1BE77470C2FFC10EED3EE
+43EFEF9B542A1DE5600DE9077F1FA3E18F3D2273598783DCD54A8512994C0711
+1052650249E83A446290098F11A0C84F4E5A7AD7FDE05C52AA0CC71DA2DA0825
+543336D3232195FEAE977223101E75155AFFAEFADF865E19CA5F243D18F3F437
+32066AF3A945F4ACE9223D68907A65E9EC6E5782B7E4E3F1047DFD8B06D85305
+9B469D85F759FB220D79295A9EB1FB47F07DAE3AE901A5C3E2043F2FA01DAE98
+6BE9CF92073CAFE0C07E9F4F98D8E01CF6AE22CFFF89BF133E7F99797F46B4F3
+36AD21D0559858CDECA5710CD7B111EF0507E86A3A18E0C2D347F37E78179D65
+3587BD6067D6657292353CC073D7DD4BF2775B0E7FC70848FD84C1F323A60202
+D3558DC3681C9DB9A75830A48873E680E377C5201F6C47FA95075AAD23BBB13C
+A178B5BABCCCBA96E4BF9DFFF29E8A9AA4714B4E728A67AF0173D06E5549ADFD
+2220C2D7B4ABA903C6BEBF09203BA2937278DD674E6EE760ECAF6BE24C6EEE31
+F01ACF80BB16E04C979A09C4E4A092910E3F5DA121FD710BB18216E9E1BF3062
+677A332EDD2769B817910AAB61657DC94670D56D6B6D9091253681F4024ADB37
+F15E30DBC1E959E6526498876B57073C6ED0E98CCF9901E1A198FB13789B97F5
+85C330D6FF458A0BFEDFEA84A5D10942BD0F5BE238538B7CBDB9D27876258F71
+A0161CD549C4C487E6511B345F6D648204A0F71160DBB1CA392D3B17AD92A36B
+8137CE1445620E8822F77C22C70156C226CDBAE8F371AB42A7A7DD13C56B95C7
+8F281F53501B7BCC8736EFEC5BB91C556EF927ADD8CA96E817DE5CC696CBDC33
+2C4A7C12FA2ABC18D902ED6A91A39BB7A8630DF7D8A2265206558B55C8F0382F
+FB04CEA4F8C0C9E77B54011E84ADB5C07D715BD47CD25ED157BE4A2CBD0BA74E
+8D4BC16906A21B711D8917B96904FF810E629B4885EFE909BC545E1F7327C82C
+5CE0F93DB0A03D339C882C4BD02428E97304776DDA22375FB49512DF95587A8D
+8F0DBFAECB3B23131F964CB845DAC2DEAB78A12EF8DBC37ADD6A002C2534DC33
+188FFB4C5972A3218594FB86A945BCE64240A47C513C16AFF4612C70409F1FA8
+634B54012DFA344D86A43BF00D8C80E67D16AA6CA5B52709A2E313B16809A3C8
+228CF5EEE29F90B6C082AF69DFC3E76C2979C867C8CF8D72DEA12B904B4CD7BF
+C3A85121D7DA6261BFD78AC9E649D0F4E44C4983F3C1B466D31009CA5D04142F
+71933AE710D645E7B35D05A62FD7003D13064529686F25A3A3541C9F74166E4C
+3716CFA8D0A54F920437DE8358CA9F73C4E333977FDB5AED7A4F0DE613C5CB6D
+BE3654D3C4D5C386463EF12F2238CE517909A0D54F154B6F6154E84696F267F8
+EE588EA8C21A7A061DBC7F376589A18ACFDFC1DC17DCAA2B7FFDC062FA28FAB9
+A2971EF4B59EA569FDCE3C5C27B96E26E1C0F50A5C897EFE97E989C9AC94EA62
+84B8176F626762C23423AE63CC3494ED614F3D05C89B8ABD6A8FCD38ADCC3820
+3A0D50E597AC2954C0DC03BCD9608944C49120C5C0BD99748D0ABBFEB2141C9F
+A596082083B7D53A54DBFB784EB116BBB8D205CA475B63214D6B8A68EE48E97F
+E77C2D527DD9D33B8BD158DB9EC1E4D0BD49C9C2106F8F5A8D7B17186C894917
+C5E054B53E20A3837E05C5B31F030BA65E3EB65F4660A5BAB5DE8BBC777112BA
+C4DD53A4C2EC5E65A70E1F39286FDA64CC063C674F34FAA610FA705EBECB1145
+94651C76855C71893B5C618E35D2C1E62D3DCF6B0C3F693FC25E9CC684067CCA
+B2E94AD819AE08745E60D9E947ED4562CA1942BFAE082D3B2227A18D04FE045E
+BFA16AEF5F3C2080801CC0AC5B2ECAE125643F7892061EE9FFAC02F8956B0388
+06A5F42BB942E387BF76F6FFFD65159C44BD01EEC5AFED0080760B7EE519418A
+15AF69068B9EF860B800433C5F319A4D8B1847103AC4EC96E5A92BA74459C0CF
+1AE5F7B453AE0F56F18785F9FE0CA8182C9325FD75A5F8F16A16C7C91A22C33F
+F716CF4FAB7AF7433BC495C3F1D9D51B924BEE1006F7EAE654287B725E58F82A
+31A998D78B74D8AAC07CF24E97C74E6360830B2E80F70F3EB0DD009051F5E318
+E8D984E17891B74996A444C9B3F2F495D3C5C8A15B6BF744A99A5B24939D0E67
+9E51ACEF55FFD307F9F62064239ECA7CB34A6308340C43F2F838428E9BFA6F87
+F8853469B6D9692800600388ED0119E9F0A17E972F08ED8C46A82AF93F17BC10
+DA59A7EE56608E1322F47484F4D555B595CB0C96405D517D6FB5F00B3F30353F
+EEAC18B721F4DC73E47CAFD40269C38CF1C16CB833C93D6B2248A78860EE9A86
+CB5A93213075E44F117389104674362E7FA8BEE8F81013F1AEDDE1FAED6737CA
+7A01A0A4E21B4FF043292BC393D6839D04222CB1C4A9BEB0F7A3F6F01DF15F04
+6D818FDF54100FB6668ABBFF7D6AEF73A9DED3FDB5DFF3ADF8330167FB73E3B3
+0A0731A8C5D3782A7A5FA1FE3A60B67050498350A9B8A8F1AF5B8C48B79CB391
+987A15DD82A3AF09C4ECEEEBB647387B7A57438434FDD10B799FE58CC14EBDDB
+3C74A77D6E083C6E27C6EAE004503F59781B23EF42F4789D7884465F34782E36
+360762983DD10F3F6D408B87C19FFC65CEB9C5AB28F82954C81FBB1A3DE010B6
+072CBD60B190C8F63FC850F8F09E8F0A04AD8338B27161575294BA01AA7B8FCA
+03E3EB644731F299E03197A4F29C6E920C4116D7365B89DDE872311ED9E9DAA0
+D14564C64E2879F074472CFA3480D436B764771AEED75DED0E7E416DA73C7265
+A413F7556848004E4388CE6A78B783993406A2C1F7883547CDAEDF8757B4EDB1
+9121B1EDE0B694E836CC4BD6805CC09028F30A6099995B6B39FCE5CFBD29690A
+E3C799490362448D0A3B1B29193569023AFF063EB85A7C1F44A800F9C030EE4C
+DDDCEDBD031E6C714787D342C298A343525495568A167C1D0DC1A8B8F6DD8BD0
+9B1BC4790FE506F0A161BDC3D93B910C9CAF1AB7872C593DECDAD7A02348910A
+6E38E1D2E30E16776E243DBB4C455C42D9CBD7563996013CC56125CA8F759999
+8682342933FC67040AA7236039BB13478A4F60E2A35B18CF3CA1F3AE2C9A36B4
+B13BA58C9419FE3A04FE576ED3BF1E1AC5D242220426F64F03542B976F6FCC8D
+426C47C8BF80DD4D483303A57796B540D65738DFC9B042776CF36029FF79347A
+BDFD44FDCE6266063440450080D75CF4F58D518E03C919EEBBEEB31FDF6FE7E7
+F175874E2382ADEC5B2044D74E487DCD68A0A862C459BF1B47BE8F2FEF16E9B7
+005EFDD1D4E3FD2208174E4EFAB81D43547FCCAD34344D6DBB9610B3AB1BA5D2
+555496386C93671ED0F3FA55DF330E53984444AA3C6A775036291D219B759453
+D5540F81AFEC830D4711CB741435BB1246A9046663BCBC819BADF6CA5421952B
+5CE28D7871D877F6E4DABB5FABB667AEAF7AFF0C7D70951619F9898211DA4501
+2A0240D93AA06235489DC9C4BE4BADABEFB8372C8F9E1E79480937CDD1B18FE7
+A1F10965E2916DFF744DB5B2AD6B86CFAC15C2E9D677532959A3D0C792F1CEA7
+1E823DF82BF43CE7B5BFD6D0BB09619F6921673FEBCA117670A9B2A26F1C8CE8
+CEDC915B586E929346B4C553E032AE38A16E5D523E3FBAB5D3DC0CBCF94E82AC
+E3B49E88365EF5C0F2EC2AFCBC3AE7324C41D533185E8BB4ABC019A3E23D8EE9
+0D099A778ED742D7383790DE0DD3CC41357B04E3EF69A45BBEEB52CFCA7424DD
+F904594DFBDB165CB0617900DF8F8A2F5449B79B18C37B91B3A29A81A012FAA4
+3460699662AE6832D2265AE6827A0EE29711DD118DB31A20B87FF876B3921131
+2310DE93FD6AE2E2F2B2DC5F8AD1E9CF967EAC8A1129BEB01D48F59015531E1E
+8637D4587D24ED735503C005D8A246B4173992799C8D20426CF9C510F92B8181
+9D8FAFFC069FF63A91DD5FDF4033D1506C8D31D44118A8D4B138BBAC9FDA926B
+3C8141627A5314C1BB586BC957AA92020251B325B5FC201A3C8210A1EBAC7231
+BAC905BC7C4AE833347A0B98F0EEF976781BB7C9332FD0E65A31CDFC43070AD8
+3B49644D2DC760B8D0A24A280AB501B56626751E83AF67AE7970F15A3A451757
+77EDCB731EF90986082A8C5F21342FC5D15A8D0EA3083FB9DE0172E52AFF460A
+F16C3382F27BB145AF10EA64D388E2F35D6BFFD70534251FDF84CB58F0E4FF65
+1D866D278F04F896386EED1A02925E3F0CCC2019A017591C26CFD7430AC7C697
+CFE586E3CAD128E455C4D7A3D2E128A66215CA4B0B0779AA1E7807449DB6AD68
+5A05C186FC7419AAA97576A8E41D4AE55E60BE96A8F7EF2A93F63DEAB153451D
+F5D0554806F1718046B1A69D8F9E52C4966D1064DB7C6022B66103573A0A0D75
+87465C4E2E9F38EC5D2A3F02EF9D775D3895075940EBE643B0B135CF9A426B7A
+CC3828BFB3B17C46495585FDF20FC3A73CA0AFB8CB8C4EFFB3F5AF1893CA47BB
+CD2EAC786B8282A2F915E95F178E18C67C926F176130B0F4A7BF6E4711F30BCF
+30819BFA8B6420A6797C0E5525F8D187BE6EDD1690BEE2B68B660A43DD1286A0
+F503CD1E337DD42598BF589FB789FC23D0FB249C5794677D2DFEEF27375E8C29
+175BCA45902801D469C8E9FF76E77B3A6D4457CD6F391C65243E693ACB263A44
+CA2E1E7A9F0D0A9634FBB485DC4C172AF9DA72BC785F5A48A397F08E6E53C662
+6D1CB33AA51501FFB3673CAC548865648AD274C168239AF68F5A52E9687F3C83
+97D8D53B9091754F005BFC4D388E271E624411D239B00F62FA2D3179A0D56FB1
+6C15935F4DE766207C0FA4C112658079C33080375BAB96BFFA97F867B54EF656
+B04477EB12305CE3D1BF171BFA7DFD983B72C937762E518E67F989BA168C8558
+9D85DF89609E4B23694E4C5012D687B8A73FB85A2F8D08512D55F07934FD7FC1
+1416E9A09A19DBC6826FF54B74C5F148042E05BC8D6E083E48F2D7CB7A14D18E
+C67765E99F670580C1E73C098963E2C99B5A65F2D65F9A900CFB7636156C9D92
+9048AF7B4EE5E38A2206CFCC26E1B00950C72DD74A3BF416757226DD259056D2
+D7E5B4D351F2CDA6F3B4B567BD15A333574375FDA65FCB6BAE0C2389EFDC4309
+3A955E74A4C113E12ACB6FC131449722E62D3A11CCBA313232D89E7E9F0E6A8B
+43CEE7EBDBBCFF9950741F1B1397F4154FDB4EA020F38F44176811439880847D
+F844B100EDCE25797BD233D726F5585928E944931EE47BDFDF90EEBDEE67BE52
+87314BCB5C301EDA11AAB7F37C9587EC364977635636605BC8524486BFBC1F52
+D6F67A1544C6CCB787A86C16F5BD9006F90F5D677091393771AC1BD14320E8C8
+FB40417EA7EF5638188C4F898002350A086E450D051840DEAE4E684BDA6EAC0A
+3C4E38EE80B9A455D4A2828BBAF6B0534993D6DC0BE157983E4387A941C05477
+EA6B361F5D7D2EC752CE40F623481CB12DB6F2C6723285421CBC616B570878E2
+B1B0E8F5FEEB178F6C9BD97BD6FE1DFB0A9D0966198B49C46C3058D6B53BB31C
+CB81C9A3533BC04C5237FAD7138EFA7CE4A25781DA9E8258A1E60D14766E9E48
+8124B160A694852B2C2C1981BDF4713BE5B38B60BB14C32ADB4BB71BDB0DD3F0
+7BCB71FFF47B23D50325235C6E7C4E1D8AEC3CB717BA0DEB0075F44939BA1FBA
+8E1A87FBB2242E2DE5967014DC127F8BACE8506A09F9F911B896EAEB18F6796E
+13978D1858984446E3B4B86E923B15567229D9A8254CF57D54386CCCAB51D7A5
+236303F2A2D34663E3A8578BCF32681D6AA33A1C73C1D6A802A2C2B40AEC9CA3
+DE358C77DF89C399E7CA310DB5404C774D9FB4ADCC3DDA025D5C5F7C874927C4
+3C088DA823AB1DF533F01062C5CB0A249D5AD6340C8F3D5C80716C075BBC6EA4
+650254F80C6F164BD52861521A117A8530473A7F896EB7880DE92C2E2524D485
+AE76B41493CCF04ECF190F8F770C48F5767533A3573B5D2B1BE4AF98BDA1A9C2
+CB38344481422DAB6029B032EA8E65D229AE20476434DD140EEE4F6EFF51B3A8
+B0C577AD02D87B4D6DBA8AF5D6AEF68CC1CC59FC926A9F7E4BAD2D2A929C7FE9
+6C7E5C9BB1B47754F5E1136A03C9E8FCAAF59F1B125E9C5D3ECA0FACBEF4E620
+F2E87CD22FB39F35B0ED05C5C48741F0CF7AC235F52125A06F1AD8C76B9B799D
+0AF9A17D173202E6ADC7407339EE56A80BF9C14A2A45694E823BBFE84D08D2F0
+76F0443306780F20C5855407062DF83C953F1B83520E1281C6B33DB6B604E017
+820B9D19EE481EF4FA68572470CEF5D5D9510C24A3465BD7568A8CBD2A8D4E41
+E5A3CE779DB6161C6E889DF510A2800041A334AC98975A7FAF9D29E326DC065C
+9331BF6441093A5F07009243961D8FE68580C93BC7426CFD71820189114E28AB
+3337346B6BB3A1037096270C8FF66794D8C4926CC9E5DD379E05BE591C4AAA7F
+5304B6038C69D8E2AD3479419564AFC9E725DD05AA52D6F48FA32685
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 97 /a put
+dup 99 /c put
+dup 105 /i put
+dup 115 /s put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337
+900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA
+87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98
+076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518
+9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A
+FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD
+B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9
+CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30
+40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D
+C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B
+7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5
+FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC
+81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D
+5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90
+CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6877C1B3D2
+24030F377820DA58F4B95CFE645109F3F1B80DB5FACFD7D05AE2909EEFCF95AD
+9CB286C8B6C075CA2267C101B736139863186C193E31085E7C9FD88EF8BBECE3
+933542C85309013325B4BBFE9A5B606780C8580ABDA2F5D0064EBFC23939B307
+08568C3B7F5F053BF367DEBA349FABB9F760C44D100BDEEFBB01F27BFC61F886
+A05B2870FE72E963C4A8189809A2B2CD9FAA7F16449612753E497511227DC378
+14FF12E39E88C5918082D372E253B61C7538BB00D130E9AD5E26A039A33D0694
+91AA4D2571A3565782107291BE4D4B9AAB3DB1EDF984D5B64217EAA28D8B2F19
+A645B4FA969DFFE2F64F1E2F0ACF92E01DC32E02769E040D6F59F707E2441238
+C7973B0E5752A0F3B7C7E328F5AEA0BDFAACEB66018CC5D7CAB286824D7F2364
+AFAE8FDF6961641A5790B923DBFE0F908E38FF0695FEA7BFE993EE6B8D0CA848
+B7062133BBF02A6B1750F1E4B8C4175BDA65A6FEE6CC47E0BE9A2EE144103A08
+F8903F8F494D6604A0BD7C2A298C06F30C4D90DEF3D2364C85667CB0DF8B6C2A
+956CBE240FDE42B27B08C8787D9D3BC807FE4E4E9C0733CABDF626577589671E
+64116BD5A69FCD6500B63EC97C57B9E0DF00BE29664C4C17F899339AEC17685D
+FD335BD8FCD875C7101451A5FF3DA0AA8D7619188EAD019351F412D77BF4CB86
+7FA1BEE9FD546AE66D3B7BF35E10DB852592D917720577FB917238FDC282CA2A
+C139DADF9F3423E419C530BC6B8FBA73733BDFD5535C20EC95418A5C303F328B
+401E5EC69CFFB2B8A28510E5F4A9435361E9AF3CCB067801B766A143D489B355
+F541FF1E1F32C5E17BBD9A6131150955B35B63FDAA564E70413A7308B1ABAF2E
+6D87D9A549DE51A62204343CBC7D7A38ECC5D154A01A4A7054CB6937BD77D357
+05DAD31FD5B8B38450075277ED6614EC89564EAC1AD2F586D062F21EA6D52BAF
+133C280E1DD6C3754C31BB3CEE7E6DF43DE7E15E0223AEA7A016B09200463C1C
+9A361B95AA360DF3B174BFCED0BC1C6EE261D64AB20D2479A92702C00B7A5DEB
+C9E262B1447CBD53DADB8C11C6C68D1A3CFB6902F3D37E85F4F05588E6F88D64
+0E53CC634BAD0BA1EE0F16E7466317DDE2E6521F5B4B9AA68094FA7E62688890
+46FE6BFD6F0F733BCBCD75BB8B7605A2BA832278988F068A879872395797DCC3
+91C47345BA010403760752E140D5281B766ECE69A1D3774B21A3594057C1492F
+DFA0BC409A1F6CB9258E4B61FEDC26CFDA03E0C6A827886B52E9EC7B6A99F200
+115678FDB267140368ADF66F503FAA7057
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.1: CMR9 1.0
+%%CreationDate: 1991 Aug 20 16:39:59
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 39 /quoteright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 87 /W put
+dup 88 /X put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-39 -250 1036 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FADB679CF58BAFDD3E51DFDD314B91A605515D729EE20C42505FD4E0835
+3C9D365B14C003BC6DD352F0228A8C161F172D2551CD1C67CD0B1B21DED53203
+046FAFF9B1129167921DD82C5964F9DDDFE0D2686875BD075FC81831A941F20E
+C5CD90040A092E559F6D1D3B0E9BB71733595AE0EA6093F986377A96060BF12A
+A1B525CD9FA741FE051DD54A32BECD55A868DD63119A4370F8322CCBEC889BC2
+A723CB4015FC4AA90AE873EA14DE13382CA9CF0D8DFB65F0ABEDFD9A64BB3F4D
+731E2E1C9A1789228FF44116230A70C339C9819676022AB31B5C9C589AE9094B
+09882051AD4637C1710D93E8DD117B4E7B478493B91EA6306FDB3FA6D738AAB1
+49FBB21A00AC2A999C21445DE3177F21D8B6AAB33869C882613EA6B5EC56476B
+5634181ECBF03BFEDB57F079EACE3B334F6F384BDF9D70AEBD592C8ECF21378B
+54A8B5DBF7CB9282E16AA517E14843909339B5E7C55B038BF3BB493F3B884A1C
+C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F
+11930B1D97C17816C85B1BFD9B973A191B33CC3B391815AC46268691C741B2D4
+48A840F1128D9B2F9CF07D0709FE796B23A836417BF7B5B12D67F74453C82F5F
+25F7B30701D6F6D4F4DC623C0C27D6A6FBECC7312A3CD10932FC7C10851C3C52
+24B75DEA8A648B7F34F5711DB0E843C914E25663C510185BC37BDB7593C1C259
+21D8DDAD33982C336BF272BAB2F48E68217403FE9F54877B243614A87E64784D
+2796EE4179FBF96123D1BEE3EF89D682B427BA4F12A1318A57F18BE5DD903815
+2617BB7392BC53E3083A6D26B81E4E9973CDEC5B0BD15124A5B404A4031C7101
+C5A86A74B053F123C60C9F42613E19F6FA9F26C30059C103444FBD4F3CDE3A9A
+93FE31B79F5C786BABB27C298F3633F1A6FEB44A520A8DCAFEFDA50F81B1A5F2
+2BB04E99602CD8E636B6F5512760BE75E43F4114D57959749E5792A9843D594F
+AD1FF6B8007458D566CC5B213B86BC5B484E1F9074375E6D1C022AA4CCEB00E1
+E77FFA2BAFCFEF5F146BC20989B2421A1B9AC14C5569116F2274BAB465EE239F
+B503BB298527DE89F133F263C9C34002A736426C07220A9B7A528D358529A2B2
+1565077D352A93C6BCD530A84578C14C5B0D11CABAE5BBD61951F4855E854877
+A4830823618D7320477515034DDAF779BF1BBBEE6E90546D45EDA07BE44A2D1C
+7F6D704A5B8D114295A04C8F4B1DC8707C143E8F0D708861F2136E5776F68095
+A8118A87546F68B92BA4050ED94A37DBA6D7A412AF2DFAF50578FA29D7B9C4A2
+F5895355204187F33E1FBA8A4B56429C3DE2A409D6F34A35761146852B6F3614
+4E53AB8B906694A58CED48FFF1167FE58676B6632A99E4C948C924E736E24ED0
+92D7127F4108C13F6C13FBA180E2D485E86464143D65F18F7C2BE7674C927DD8
+D39FE17E04E2C92FE5BC8F344B3D1B698C6297C0224697D32221C15F0B488A50
+634CF2F7A23EE47E02CBD8B2958D3986CB0F8B429FEDA921AA846A77C66929A8
+08DECD5381235609D4E48C86348D74C94719E80F76F2FD63DD4BE4D05FEDE835
+FCD28D5A7B3D16EDC816413C473A8E735D58759E36EBA2F378AF2FB74E1BFC73
+EB715901E131FF5770611CD5DA96ECDD1D09370A707B87C91055AD6DF2FC557E
+B383BE1652EC800381AA475BE5CD966BF4897D58C84D06190203737748DF49FA
+1D8A82B5A6328FF6E1448B1FEA221ED9B3890228F3DA57EF9F3D53DBD427AC16
+F5304F40B10FA4311114A2298560E74EE0CF45DE63EE763D0688B3A4CCFF2421
+5F8C22FBD806658AF38912EA127B897091F30F7916A699F3D840B60B82F3DE88
+B56B14B0CAAF5A5567EBA4E748625F832F77D08FE5456BB3516A125BE68A579C
+02A0ABB6B551944A94053822D982F4BBDB86CAC4BBD2CA7BA9F4208542C51405
+4990B498A20F5829C48C5854B373E4F1FFDE81AE89C920AB8121EE93191EB679
+31DF0832A075274CA6405CEA6FDA723ADB4E032746FF1C75A897A1DF46D6281F
+0206D7F6FBFB5F4785C8AB5F4AC587C262D69BE3BB7E90B19E1586A6655C1EB4
+CF1338C480B334C56098099EE7FED6B421E7AA57FF24D98F65E542DC792622DC
+A5F9E748F6C9A6FC12A8189F2EB04C2231D3C404E163E20D97D0571AADFCA8CD
+48808287A633ED839692F052B4B56A5EF88F3D9C98A897F6E8D10DC7AEB25242
+925DC07B1043257502DB86F7E261FE8DA1F1BFB37945521871750980AD5EB888
+5A8C1C44BA3ED6B4524745E8484F0D23CB576CEBE7E26A7E6A63890412B580B9
+5FDC8CC91A985818AAD59B2D5A625AAA885AEC6E4B19A3F8159B55312C9988BB
+0714FDA6BD652CFDB5EBB888D0F69E4EEDAC6DB15B176329BF80A89CA0FD05F0
+FF9BC55311C49A00F0E1FC81C1A41B3D8B706D961C6E74A98B3130A845A7A7B1
+0DBB96452AB8EF5E4E98E9A83E6E14AFA9F3325497AD5418D2A48185F3F35F30
+8450314BD45D531CAD53F67C451BC1AF214C94E9B9F99FEB1256762C8CB08366
+ACC8CBF019FA2B3BBEFA71FA2977C952C54E15DCF7B457BC338CBD24374BFF16
+D258A8F785ED33790328455686A3445C97C0694B335B1E9F9035FC4A44A47953
+F45E876C3585EDF3E97C1AA0176B78F2C9E03436FE29B946A62EA1EA5809EC9E
+743EE7CF478CD7712D285882A9693D9A73576B80E67B5872F00F5BBDEDAB091B
+E8428B4AA21B38B2C449FE0CD5058E83D123CFFFDF2AD79B05FFB0B1F7E203FD
+2750D93F2F72D4697E6B3F816E4DADC32914F8CD8536538880FE73BC1BD6EFEF
+9B61710AAD6ACB492530297AB6F8926F2270A972681094E7AF268151939E9554
+5F3AE7BF894526F14621133C1F31F0FA29A4DA880146344B69C7006BDCAA353F
+F6C1FEF5A864065BB8E3EC2B0D7DFE4A5213AB7ECC9B063CEDF84BB544098B6E
+2F1D862C235F2F870CB49D0A3F39E4A5B7B46B3E1A13D894FF2211B3C6F6AE4C
+B7F5A70AB1C9D62BA38DC2131AD4B33AB9AD17E8B68A8A116E7A85ABB8982152
+A4CE796EE02D6BA7FE8B84D86674F4788D4DC6A3D3AE8F781EB618640CE65F75
+75AD1A78C1243D06DD452D6F11295060B48398B65933361080E033923F8F2425
+C3AE2C74B21C8F12C24CB147E64CC28167FA2A77E7C6723BF66544055B33F46E
+6CA8CFC869930194A0948EB002B27002C1DB362EB43E8B8ED50DD1A8EE9C99C3
+870C2ABA0B79352553B57E004E03803D09B9EE2776E0670819A5A3E5446B31AF
+545390EF8190D97344BA17748FD291FEF54EAFD856524EF79883FA2898173542
+24EE10627FCBD6B15B186E448AD0A1DB235138189ED6CB676ADE745ABB8E8094
+41FF1569D45AFDD2C5F330AEC4F1BBE8690A72C34BE5EAE98323B5D5F5FA3BA9
+6D6CA267235E7A3364FF99B156ABC4E80F907CBA4191B5C923212A90433D8A98
+FE4ABE72C5581B64126C3E3FD1463AAF7E8BB1E649248970A2A985A00F703FBA
+E3F0E7C8E606F42E0E1BDC0F7E7F3277FA28AE997EDADC4475B9CCA23D7B0E82
+4AE6FB7BD1570A62864768ECB5D15B086F0C675F8D4F947A5D3EDF6FF8325AF3
+21DE3224B8C24CCC1A205F8A944B9F0ED873E7BB6426D33AD31018B2971E4FFA
+B06B2E1E19D862DFD715945389ECD93BBB34F4C98BBF7C2F02959CBDE931A563
+60B4AF21F544DC68F15E8F2FB20A7827271D253981456C11D4FE8978CD00291D
+CCF7C11924D1CC66A51DC9CB399DFEC173362400977B3C1F8F4072567C20B90C
+683216B2A1AE31A4E269CAB4062E940D358F0BB5A0933A61239030CC82AAA06F
+98817593279B49CC21ECF68BF4FE822D838CA5A68C63386E7E1DD996E8ABC119
+39B326A20AE20A8EB4637DF9799BBE213E27988523FE5B4DD0730DA8E10FC8C9
+41AA60AF990C30DA1A0ED5CB1DE01F54AEE53A20794383B7B9526C526B3A5F3D
+9D30ABB2A38C86ADF7A275C0FA2251D5CBAD519514BB946A6295D47D5530A94B
+96A175D1E55E9DFBABACEEDC6AF1C1B1EC08F2EE90B70853ED6CA4DB84C0A069
+F6F96FFE3E4A9F256B26E30A8A8031DFE638EE15183E4400470DD744D0CBCA53
+3F9E205FA7EA6B662AB40E80F7E83BF3E0924EFF0740F0A94AC5F04D3E652253
+75CD014A8C5AC1C0E8EF721CC5D6FE68ED3F020A7EC962644C922C3EB2E2919A
+934DB5B62E9BCFE44340BA9A6C5C99BFAC2A6390071BB0A04FA4CD9DBFDFA8F6
+99B162E6A4D82F3ED43E1C5FB097F421AC99EEDB99DA08F6B3A33E545DE52167
+ABF41C7D06E0673E72827FAAEC745A3F2F985B63D88D8D5710A9AC335AF1F216
+4490B5C2FF6C1758BCB893798CDA889FE19CBAEBB0976A20DCCB67B4DBD3FC15
+EA3CEDCB6630CFD84B7E81EAA2266BC4D3DD0FF50E7FBDD24C33529A2122FE95
+9005C9FD59F3DD01FF9E4CFC448D83BE0FE5903C7381D8220C21CB6FDFFA9864
+24B8C1EF9051D95EBD56D2514C9D8888EEF628AB5BC8A2DD047FDD8075DA36E2
+90009D75D46F29737A170593F4E8A392053E0027DD2A2D6D6D9DA6A41E3DE6FE
+C76A9215E206EEC232E888E659DFBE5A3F73E35721E5DD65EE29AD7919059538
+EFFB4E1BF3072B4EB814A83680DE7DBCF22D717E80F7450A559F741F2ADFC8F6
+409D5272C475F1DD164B3B4C530DB38566118F73C38115A8367696669BADB2A2
+BEBD6A647A964D5ACDEB3ED949C1D39876E3EE4BCC63086AA81819A537D0B7F8
+E5AAEA15071DD71BA41C52B511CF3D69A47009BB9EB4C2D4CECF604490AAD19B
+AD75E069FD680ABE98AFAD64A6D0DEC190FB8BF9D405C84A88A8DD138C28E3CE
+928E56A59EE2444D8393ED3320968E12A9998C876D805BC7858AA40842F21B31
+2432520C13D1FA9715BD44B2B9AE23444AEB3CDA3ECCB1114BD1B0FF983E39AA
+CCD6F5762867198A98B54B9319EE1AEBE1D13D90BE771A2D4B8D69F24E22EF2D
+50FEA14D8F20C34B2C6964A7FEA6D3BF9E8D4911A109117BE557782CA74CE283
+A423FF0A8C6BD9A951E2CEB5F14013ED8CE7DA992D1F92E13FDF86520FB7D04E
+880AD275A76713CA250CC47E59D4071FB84A58479562A6C7228C9926670A28C3
+780099DD09142F1C4FB497BF24D14211553F3C7B648EB3459FEC6A25710275E5
+B5EB9DC1D53F0FA82CDAF66BD77D22DB60B6D7D27383A9B366E520A3EC7F8D8C
+771F55B6DA2BB061B2056A70E950DF86B7FF0C0B35CF1665E1E22571EFC7054F
+EA784AD83E5A4DFEAC8E19656F15DBCBA0E50E6A56A839AD796A9EBDFC3ADB58
+1CAA6B88CFA3BFA809862A94404264B0C4BD46817C6F8958ABA1E2EB0819A674
+1527DB2435A5700D279C56EF8F310C32089B6066F1D8A974875ABCAD86E0C4DF
+0D96E4140E95612F8566801A255CF3B38E80F096F85A9416F73298C8B72E6D70
+78110877E30B187C033E0CB83D8B8923451139CA4268C03D610A4EEB92BDC8E7
+50980B5CEFCCCA7CC6834FA86C4040D9D2982BB8050F4EEAA0002C345715F922
+5A80D2743DAC2CE4D5A7EEB4AC868DC9DB242601B376EEAE8A21DB04254A03B8
+EE7E053592F015F7330D7DB46AFBE015A90F539DBDA68977A5B9C86F558A67DB
+2B7DB8D1B34006CE10B1874641D30F1F2AA24591EDA2CBAAB4D8E35DED3C1DD6
+5EDDC56509BF8DB85E85893EA6E13019606580B815BB7384D1D2C09FC328E53A
+0CF89C389201B0807755A494FDF0AD37DC3BBEC35C8F9734E5DE86293F494C17
+D090C05B5ED442FC61ABBF5D3BFE750D012A062D9A8FB91A616C6024305BB92C
+246157A7DC2DA670A9893B974EDD6468F99B5CD0FEBB9ADCB23E87F67095D7A0
+72A0E5D92903E8A133B16C9014825B131931DA721E3D31544C559F1A2EC051F5
+EBD6022998E85B6BCC4F62CD8732C6F8317C829D70A08179CFEEFC4DB358F872
+97D54E8C3022C15B91C581CCEB74037E40AF15E808CB70EE27AEFE86CF413651
+7572E70AF71FC8DCFBD8E50AC50B9B6FDBD2B69BA2EB290B0789A89F17009B9C
+9FD4C8C3864EA22FFB65B6C679A4263AE1EBBC9BEAEADBA259FE7050C77439BB
+FC5715C7D4C5AA50E27B8F22E7642C959C21BBBEB590D663E1D19D52B683087A
+0C92D362D44126EBEBD5951DF7809BD462ABFD7694892F145A5B28CCD4C0D23C
+2E1194B6F71563E9C6EC35AFA7C43513DBC6C37CBC2F5E2917AB63949A69E772
+48A1EE85ABFE9FC88BD8355245E4F93C77FB8BAC3669ACE72455FD29AA42E7C7
+10B306F1123CEA48B2F62D7C8923B4A72F49648DB2B96ABE733127303764B840
+399DBA7C925759A5BA232650A6F0175E3B1BBCCE8A42F5677912633703F584CF
+91E1BA76344D76129A369F343F2089F1F75E71597B4BF52E30A2FB76EE331F5A
+0406441CFCE7BA928C48485BCE6B049475F934EC4FF0375E0C8E341C986C0BFF
+DDD38238431CE2C6C347E4FB320515BF2976FA0F9EC2D7B71128574A9982DDB8
+B0B7B1F30CDCB5938528CF8EC4095F327D92852E8199EBE75354134EFE1E5406
+949D64EF5BDDFC72A86DB8D3CD50D1185B17D56960FBCF2236C6823D2D55017B
+6A11229CE4065B452D67502BA3CDB5D70AB64DD9FDC7C52FE6249583122C4C2C
+E96227FF85114BE428041FA2C86914A5D17D4E85A1A50AE73E74FBB293C7F7FC
+0935E09C4A1296DA6DBFC1B8A0CC025192548F8C406D8AFAFFA8ACD4B6468AA9
+23EFD2CEBE8A868E60DAC1E5F48544AFE09DBFCAB4FA476CC21A31712C4E5467
+82E9C238E9F316FB059B674E4543898675A3CFE6A99BA6EF5509334623E53A26
+0956A5D26F188A0F874AA5215B6FC33F5944BFEC555BAC70FF75A4EED089F33B
+99C6BCEDCD639A04C4B8AC92687E21510FAF79EDBFE55C0440A2967C345CA0E2
+70C472F2B5E71ED8720A81D3990A38096B0934DC6223155E8647218E655578C7
+ADCDD13AB4239978D44351C26C84E57632C3C6DA90E43C8B6905F6F858E85342
+141A7B9FCB5D8F0DC728323A45CBDFAFDEF1C1F374F49C917C18455A9F67ED46
+C0FEAB128665BC17C8356A309CE2CC92FCDCBEA57AEAB2ABFCA14006F367207E
+3837675CDB0717FB007F032A6059AEC815B7E059F6D9D54A2FA2F8F1DA9F6190
+684AC5A85E9572867F96EAE194E2C2470A6895F268B8495E0A2A25F659D7F336
+BCF2F3FF232EF6291201D7579D67E3EEDAE9377CD1DF4A7985403C0B06C481CD
+0AC5DFA6D8060D30753A401777AB4842E4B72D69FD912FFEE599035F4BD6899D
+52926142474523C31FB8F2E1AA531B88297E0819FFBAB4263BC7338DEA6398D0
+61525249682F1712E15B635CEEB6B5D47CA17A86F96E5167E81B92C215D79A46
+28B3089933364D371C8F7D3F8438A2BD5D49F7BBBC95CDEBD62C6CE4D2D8C8C2
+CA14CAB451F12EE3A5C607427D555202514DC3DE14B02736BFE9D41F55C710E4
+5C8144598F71991958E6B38C00430C385A6C696883BBB40B2302EF08CC44FD10
+34ED8BDFB37205BD522FF132C28DFA72BAA88B147B04F011C9CD1CFD5C993417
+EA649438D2129A62B131D5D8BB5933B8D3509ED80515174A00C5DFF80B16090D
+9396483310D0420D3A27899FEAD91504BB4E47F0AE22F617EE617A395CD1E042
+513E71328664C6D48426B9F227B005257BF5482598BECD43B4EA56B9CD526246
+D1F04EF94C13362029F567A5A4A7BD523EBCA135A5B632488C1514A1166FEDAE
+A144B66F60C5D0C074D8FEF55B7A06EB5B6F798F6EE2C0CF31361E7C87BBAB7C
+019EABAAE51412CB31C2D2AC62229E9D8750E9EDBB38901A849D03B46B6413B5
+3927FAD29B4A2ED55CF0CAFC43925EBFDDB2D28BED2D4DAB642E501E28E74EC5
+2E05049825F3D5B507DEBEB3FB7C4EE48849B4F957D6DF8312250A1E27F3B254
+09780C724E1BEE6CE16CFFBFFEA9431D484ECFCD968E4E9180509413756844C0
+9E4FE065C6DEAD311740716545C09BA9DCCFEBA6230749BA622099FBD86CAE22
+2CFC8914594ADA7DB5CD9100C69DF355C1F0366D65AD5B7C5F29FF77AC2BB8DB
+E3CA4249505DF9F2B1900913567C8B81B4F57DCB0A9F6E71CB0204E1C49D4A78
+DFA9C982769F19F864B91948BA17C9FC23512C911805DE99FEE6F4CB8BE02CD1
+5C99E7573D357861E7DA8411054DD146B0BFDDCBA7C21B61A705AF11FB67D91E
+DFD051B253F7C94008FC6D9CA4E5212A7915236856412504E19EDC145FF53C7F
+A2BDE21BDCD750459124D3B37473952086C45E732619EE4AB5FE901FD7DC179E
+B842094F6FD065F0130EA42C2308A6DAA0C09FDFA81D5A1219D97F6769310536
+1CA1F9E4028034ECE5B235A1A9746CE317523AF8519C9EBEE19CA302ED3608F0
+A27CD487343D4671E9AEACA83F243AD005817D0BF28F9EED6637D16D442E5A8C
+8DC79E2180534A27364679B4CF3B18845C66D8DF6664244BD1144EC7CC1FAAFC
+C0FA4111AF7340A42A9687561549C4C2DF9711358E2D7A18BBF27AD8733703FF
+A333C48A6D0E8B0E5AA8B95A118A9682A1C5D3222664174A9A7B3A7830D0D719
+B16E7C48939049955798DE36B3CF99BF30BA5122C600E534FD817819592BC15B
+E1B8C995D0130978BCE27C4D155B1022B166AE2E728DFB484BCCAA65F459B546
+7E1C5B49F7B08981B3B2565A60BCA3BCAFC7F44BA8F1B4CFFC19F6E9FA464478
+781CE54AA05AFD90B0059321C83C420388EF2E1EBEEF6064FDEF091CDE5B40FE
+135C50F6E8BFD7663E3F4C7059EAA999C06714FB226063812F18C105038735E4
+EF910F204C63EBEECC1AE1D7BC788ED9220768B2151977288E8BA42E0639F294
+E487FBCA7E3108B15EFE58FBFC2E38BF3E8A098B52DE7CDCD4FB563E1D65ABFC
+9A4F8CAC455C6002BE8DA60725CDB3131B81EC3C5D1559FBE6BFEAF2CFC08310
+6BADEDABF228F35D3AAB4C429BC3B9772BAD33AB4AC1BD70E0B257E96B4C3C28
+53439C4131EF3B68DF0B30826E29FDCEF3869A8BBE3ADEB7200DE8D9CA4837D8
+D5381D755F1B68C6BD5066F3B287C7789666140107E74C1BB57B8DFFCFAD3786
+E84F93404F2082FA90A467D3DA781D4873B072C9258B8E1978B498BA2D0EE45E
+FB1825112ABD00D80B17613D70C2800DA533305AC3DE581E5E6A06E23722C95D
+7457A5855AE4C9702CDACE6E7424E8E7739628B66A6A585298DE1B3F66F0DC9D
+18476623EB504B3BCC9EEF22F2F81D62161A6502FEAFEEB65FA310895A834918
+6020A62DA7A19BD56D1FCBCD2C3689E8B585ED029CC383F33B171AF26941D417
+FA69C043BA91230BFE1F584635BB797E3687E1B3DFDE74C313A77453154BC2FD
+C0D4F92F2BE9B9884F4462D62CE852BFF528527B12C31AFCD4D56BAA9832C25A
+E3EE5858DF03F89D2C9B468A1792DBC92FD5F4FC5C73E830F44740D0EDCAECB5
+B814D117462B37880E9CA4F443732ADA720368061BAD2DC5EBBF3F23AF2F5FA9
+84389EA2D619F9DE0BBFCE588EECDA8F074086CD0097306B0286BA6C3A7B1E1B
+1788E069AA80029517D39A1C34A172882E4DF72F9EB47D1CFF6096F9F63FB633
+94D01495325F0EC22EE4B393C3AA1007E0BDC36CD2C835B6EFAFE88B54FAEAE6
+52143E0F077F1042340DED2C469B0932E84C33CFB2648347128142BC66253AB4
+07AE5688E22DC244365E136BD1AAFE4AD7E444C76A7E9B0A88CAA4CDB6905883
+9D6F4B5F642437940E24B3563408F975E4A78B9049B9D24825017AFCD88DAC9C
+81F9084847B55B6184A91CCB9F14D07B30302A44215FF3FDCA416881452E2218
+313A1E7E10D63BDBDE3AF80A36B2C2BE571253BA5E29E2445DF3DE0BDE61D674
+BA01E976328E80DB2B7EADF67C4C563DB4F0FCB7FC3FD0F6502EB03A45123716
+EAAAEAE665DDB70C6C9277BAEDBC35B549D9D5BF99F5AFD15C1CA7D048B7EA06
+00AF405C441375292CE9CCD2ECB22655563B8F54A4775A4714DC8A9691149F33
+5ACE63540CBD5D949E2BDB2D5CAF79B76AB20BF2CD47BB60A4D60F039410CB61
+2CA03DFBDE4B3B90CAC3C6951FFF1735B0C3A423A17C1D855BCD3EFF9C4E1F96
+28D0796CE3DB55FFA12B6BE2457402B33FBD4E11501217A9A8EBA1B468A67620
+38CB3EF774C7BC11AFDC2AD41B6C25737D586E58ABC5427E4A8CD89ECF2CE47F
+E88D3447580CF09B9349C06D9300E37429E8FA01E23F8E9A7EB54935022E7CD6
+1D55AA07C66C484659217668173ED4B9A124C1ABA72C3C7999D67266E9789DAD
+A77EEA892496F350A013B3EC5F29BE10E710F5262E9BCC49ED04674C5AD270EB
+B6DD13A1884D6A06DFFD99619F1DAA570E80D889BF2DE4EDE13E94EC3D039F56
+31F6533178F1B3665BD650420A339A143CC238F58A0CEFD811F07D4F47B732E0
+E0AB6E4CE1939333E101826EA4EF8BD1B2A91046468D982746D880F511D7618F
+4B3A8F15006C88C42F0E5A9E66A1C588AF8D152AF024D2EA6701666FB87937F7
+55C45E22CC7B16B7875F2A3A7F215C50E5C14252718CAD44C84866FC3A2A94A5
+8416D344DFDE3199DDE726C19E6B7C3954EEB35801C14FFD7FEF644C5B1B707F
+3579DE344ED3724FDBF1ACE9F47097778E4C3D6E729778865B560D629DC33A98
+43E3C6468E9F9934943B542B9FE913E45F3551806E6BA0091C4860183540C706
+1C56E5F23ECC20A3BD09884DB4CB5E713B5FCE9F8E8F5EE3A2011B1B9A3C5D90
+CAAE71841F71A2E4D7E5860FD41628398EB27A6AB225027014DB734BFEBD8B07
+5017B427AD8510143BFD00978EB79D22078B39A424AEC36416B8C8161D4E5565
+83ADDAF869C8037B7C8D108E85DC28C67CC0CD7D5B852445C17F7B37E7136615
+F25D25D241344DA10D24555BD4A08CA1C1C57CED7E1474AED07B3CBFF7C5FA39
+9D1044850DA1958719BF9B09DFF66341FC8978878DBAF865DB2C269EA90D2590
+74C4F7A85F307B956E6ABF59BE3B3DCA6879C58A69609FE799E2FA8B72CC3ADA
+D9847746C0200ABD07180FEC6028490786EF5D95A7F428C22A4127098D981AB7
+0319A07E15151A61AEB44C21841FD2073D858C6BC3CB138293E3DB530B16870B
+1F269DC7ECE923462ACD4696A0AC9D5D871508C65DDFAF99EA280D295D248991
+7F54BA5F81417BCBAAA8048A8A285BF071D6FB6181868E1E8595F355D470427F
+CF06571A9B8D02813368D7859E00C1796C8E9EE6E9F8B1F8459130032FA2E2C9
+43C806D9D474C05E84E1934659781105DAC31549B3871EBF0343EC1A0BE3AA91
+D59666EC36C13AFC5B4AAA385C1AC6D1225B6FAC8A1D8CECF878F28936BB31DC
+8A32BC985031EEEFB5E5A2C1243665BF5EC263FE981662F5E44058510FDB49FC
+19C1691854EC4BAED03315C9006BB19A3ED8D16660C7B758E7CE44EA3B64922C
+F1726154AA4FE7FE5C80118205B038485247D883720008DFCAD72B8BDCAFD73F
+3BE7002DCFDBF32C77C4FD22989C1B6990DA2B5720A883A2B7893FF46BBCDC13
+C86423775F421ADC51B5586CCB6540517E807BCC7331551955B1F6D9070D8B34
+8A2DE1EA25BEBA4CEEE4E86ECAE2A826C38BCA32150C4DA9B834858CD44708B5
+9C047F2364863AD7986326BECFBA910BBE858EB33E7871350A655020FCC9A89D
+85AAD4C7AC3A5A1D6D3ABE4A1A072E0885A0FCFD9C76F97645F2D4E6C9819CA3
+C97AE5B423D6FC336DC1BF6B4A7B6EDF4E6CDB2468E7CC572DD1CF25A24E4D86
+4188FD5D820ED6DC9E7FF28B3FF0E81768F835767D1AD4BEAE2A7AC7D2A21443
+0DC0BB6BC3342C0380741E0DB8E00A93B5B180441C0B0A984A77875074C9D581
+77E6EBDF58298E73D8E4F7D0E9A90EDFE71E2913F22D4AF4C349C6819F4F82FE
+088A053D9F3643E519BCE6A4479C99EDD780436D050354DCAC6BD9FF446D73D0
+E326B7A769A0185F65F60B9AAF38B1FEF392664F26CB4E9E30B344C057E8B271
+1E80182B3E2E6CD579EFF55630C9276AA9C98A5E8084E5E6D48D11589E675BEB
+32D8CAADB0DD356231DF5EFF557563ADB88E5668EEE2929756C74C600D23302D
+FA053182E78B2632F16140D30D98E5186863C987B5CEB244C5D343785A662638
+F67B5F899237A601554A774A30A261606779B43C448916214123EF4AA304C102
+09B960B5FCE004EB87CB8C5ED612FC273783C1ACB6867ECADD4EC80F4AB4E52F
+9DEE3E5B8BB8FD884B544ECF4B035D2A8849FCE4077589F228E5B18BAF182618
+04E7F92B23636A1D77721E8F938AC82651F9C1DB87D6EF82B80F046C3D5CE87F
+D49DCED31D341CC923ADD205B5E29FBBA7D8404BAE05CB1CA944B92C10849098
+9BACCEEA6BD4BB6F1A85E298C83C12516BE77C78605A4612906C0BD4CF18BAF6
+7F6B843E3401CDCAB031132169D524DA6A771C5C9AB13E97EEFEE7F1F557388D
+1733C212F85189293D38F5C807AFEE54775BD21E30697F07017DF147B08363BC
+93D355FBE2758E5D7E2FD803C698ED5733EAF3C133C983F7EE52163667C70A5C
+C774A3380AE9CEB7668B296B0272B087631A046310BFE6B0C462F4E9372C53AE
+EFBE48D95271B2EB3C1E8B504D4F3D56F8C0ADF8FE6A5CC9504E53CBDD435532
+5BD279CA878149B57B9B9B14E59071CA023FC285B40566DC570C74DEB3320FB3
+4D9B679DA760BD7E35D91AB29B9FFFBF4F9F1EA059EE96261D868E3C26F4923D
+3B26E33A8C98E05F17AEB05C52260D5942FA881582F97F710737839442BAAD02
+32305ECB5DC933E3602CC902DFE60A1B8540671A0B8EE9954F8F58AA83634FE2
+E658BE0CF42F54F10AA55662B423A8F631D2459706D84DD5C6667F0FDE86B982
+34BB685D3EC6AC173A3E60235868C4D1913AD360FD48E0A34E64E66FFA27494E
+6C28C16F11D200604824ED9D4469C65AE5ED653FF47FBAC7676E8BCCC84CC42A
+1634A6AEF74B8D1E513737D76A1A83987F04EF2F8DB5E359A2445222911374A7
+EDD2DD82A9D350B1D241BF74184FC1AA5EC4E5018CB63866AD20E417D69138CE
+18ECEF9537D18E673321DB10E5DC84BDB50AA96DFA4932FF57DA489F6CD3AE06
+B739C1B3164214EB6702DE282F85BB8991C8ADBD5633CA158D6D16AD45E211AC
+D2D6411C900C37CA4C1C88BEC4CE887BFD45E588CE96438E7C100C4A82BF19FD
+67526521024467BB615FF11666EF8DF79D0989AF0E708901E3DABAD804E9D35F
+82AD091FEDEA2FD0645DF99F5F4A8BFA4E95126851BBE51D92DDB8B4E3A63A45
+2522B42D723B2DA6D3EB1B309139EE74F8303947626AC4E55438FB6A68CB6875
+AE03D79201F27F95A90F1C64726E8BC5538ECC87921A9AF91616158BEB31D67F
+646AE3703B68E7BDBD01E644618BD2048C83A50CB1C2A63054CBDD451DCABBB5
+3B12D5C5DB3D42C3B9FC91AA63D6009B38C1EB1C6AE2383562B6B15B6912C889
+C42A20D606CA0591737F3AD52769FCB3299E6E09C045E6F11E6E3ED6D1779BEA
+0E6A361CF5E761C8843962384F55356732DE0153246B3A0BA1831E2F0D532604
+F66FC31FE550F761078026504FF4FE754DF2348ABC36E47C71FA7E44FC000CE1
+A6B4792D3CE52E7BDAD933BAA8EE620E48246044BC19F14C05FCC0D912024F03
+2A6076F4E30FF3956C38C910117721423C4DEF88831DA8A55F337CE2D60C126A
+EB038436BA68231700452FA4860898F4179089319CBE73D3902DC703CEF9B6CF
+C63CBE242974258F6F700607721ADB43E8238E47485CEDD4625F34750BBCDE31
+48FDA025B4DA88F077C53C8C720A8E94E297155B5CB020B3EBB697C4E021CE45
+E25C99DCC70150131074E86A9431DAFFFDF6727B0DD06045CAC3B4E1C32E11A6
+7E83BFA598AD9A812EFC7976333D75420721701A13EE25A22E245944716C873A
+ED3BAEDEA3D51D38A9F5B9615E93F21C0B67F920EBA8C3D188149E4F6B63A489
+319842591134C5F20B2C4284C531AB375DD5C1A14F8321FBB20101846BBD1D87
+0C6E5281BB5E33D3A7BC3523A9D825110590721E984FF2F594C8D3DB06633924
+408FB6E916294F6BC537B734558877E3C46278F6543D86723D33511745B365EC
+37A9AB31E309BB27D008EC0F179663D7DA80A93ED2ABF09416E6212F811CC3B3
+E820B5060F7A20E586AB216308471F04A3E699BD4CA40B0D40F933B9143B60A4
+23A0FBE43F7C03F9ECB120084AC47A8F711B252ADF822D51952AB0BF30643B13
+0A761232F443C38E7C8FD1D2CAC069C2B979057505B48CEA22C06F427B591B4A
+25BF9CC9BC26665D82AD06EC449F0E808820B581E46C2661A2BFDA975D214DE4
+7B1A5E4938F2F0C8953B0D6DB23EA51E2CBEABF961444C41CBACCAF17B833E12
+FEA13D328511EB5CE0A700C1182DA143BE521076DC56FDE705D1B428A884FC2D
+24EA025943C9BA9722FBD41EDD4467AE41C205B0BC82EBDAA91DA455E1FD4674
+0A861090134E602CFAE94061DAC71B37D5304E8941C62DF255F54ABA16D2D9C2
+07227711019A0413B8A46223710E91097D666213F95172303DB81C6191ED2A5D
+1C6A5CAB24741AC9F82F5F3E985658E3153AAA42081E7D46A3670EB7A8E03CD3
+D9D942E88B48EAB7CBD0032E35402E0C61180205E16304F8FB53
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.1: CMR7 1.0
+%%CreationDate: 1991 Aug 20 16:39:21
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 49 /one put
+readonly def
+/FontBBox{-27 -250 1122 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
+E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
+47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
+8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
+78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
+1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
+01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
+C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
+F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
+8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
+A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
+455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
+9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
+EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
+52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
+563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
+0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
+7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
+0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
+1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4DE3E3F6222F
+7A252B780C86447859579C68E52691E144F836C1C62F19A12EFB710343D33262
+1F7955FE5C37074CE5F9C7ABF1A241078519A4D7913A0AD861E0E357B50FB730
+E757C0D26390E6028FAC61EB0E9414716AC8406A6E35DC70A7C1AA524804FC8E
+985CC3604A2BE0A8235CC895B2B33CB7EE85FE4F2CD817BAC3D27ADD295D0A0E
+BC0E8D849952BCA7325DC261A785CD2305BC377AC61AC5E5B2CD3164CFF033CB
+5436B8000673A4D763ED26273130702447C75A774C7799FB8C3E54A2E34D1710
+CF7883A9B05285C7DF30F314455A4428A5369D92C0348D45BF4AEC5E16611D16
+1E5EF015900F4DF63A58DC233BEE88417B204DBD110AACD1DE3D750F9C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT8
+%!PS-AdobeFont-1.1: CMTT8 1.0
+%%CreationDate: 1991 Aug 20 16:46:05
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 97 /a put
+readonly def
+/FontBBox{-5 -232 545 699}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
+3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
+ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
+C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
+F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
+4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
+61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
+6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
+B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
+6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
+C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
+BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
+52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
+48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
+351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
+C4CF2F4F438A4E520CD932BAC455BF8775C27AEA6C73EED3EB2F8DB5E356AE27
+41B35C8AEFE73C4CD6A591AAE4F45762EBD6D3636C03F08C552BBFD0A13D11D5
+491F8369B4BAB8ED9D6F1DE7DB7AFD383986C4338D3AA71C9AF2B8A0955CFD86
+0345F16D9798B25156DDF826A7CB6A0CC4CB43078BEBD3E499DA95562A08EED9
+7CA27B7A0CE3FA7EBDAA87A601B7CFD9F935916FED5048313D1B3A9C69223314
+19C61BD2DB628C4E0DB5300B61C5282A4B81A78F7CA59895DA00F3AE9CB57C4F
+D9A1484BEA0A9EC07E95A5092633295C1F84AED8C6385AC4F1FB14658964BBF1
+7E971BA26F87A51CA5C602BDA3E6C78B27A51954460E2D77F524470946E822AC
+564E1CF430C883E4CEBAD6E1917D0342007216C06F310B87F6806E3066690694
+08D9218C6D2D54FF56E4C315D3F55E1B1AFB671BF963AA7AC0A03400B2F8F860
+A03642464D1AEE2256228C156984FE524B4007DCC1ACD8EA90CEC168BB95A249
+70D7CCAD7C06F230544279CD0F003857D5143BC3C2AB7F98DFCCB16E595F2213
+E30BF107390D67C478CB27B9FC1ADC13FCECC7A772797EFA0377DFE106503DEC
+ADA04FFF9CDD4772707FC10F0162E7F0E071EFE3A7E30CC474E59FE150B50E6D
+DE6A60E021E23240DACB1F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMB10
+%!PS-AdobeFont-1.1: CMB10 1.0
+%%CreationDate: 1991 Aug 20 16:34:36
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMB10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMB10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 50 /two put
+dup 57 /nine put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 101 /e put
+dup 108 /l put
+dup 110 /n put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+readonly def
+/FontBBox{-62 -250 1011 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
+7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
+77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
+2DB0E39996C010F3024A5A3C69C8485664A4E3AA81348AE21A30280D0E3B6542
+A770F048F31907891EAB8B57DC70FF775574D6CD26B8AC9C3E64C3631325BF0A
+99AB413BDADAA3B51A3E168B03A856EC7D346A38BBB0A2700A23B2CA91120B9D
+2AA5BE5A359C60CD78F055253785CC9701F5D670ABE4967D74838C3B267C6563
+C9651AC41D8684AD5E913A5C9C547CA225A74782D1AC62020FC38E29C356950A
+00E8F2B0752CDBF81EE4ACD59BDEBBB9523AE4764B995855F3A401EB4B04EE56
+B10758196CB661448A3617B83CA88C41756EF131CFCE0C968B94B6C69AEC1E9F
+BF8B21837BC422D766B5089D81CF35A807394A026FE3160580695B1213968D90
+8ECD1611E719A871E15C6085A17906F77B5B2DFA6AE670976758E67F8A4FC362
+FC7299D85ECC3C0BBAD4649B9DAB4A2FB248D6481CF0CCF274634D37A5AA4DDC
+31F3138AAF10998FD66F3817B77060E71C6D8F17205F9C098D81D952E0FE3831
+2264C55D73215176470D8D75E7BE6E44514984B9D20208DB3ADD4767CAC09D41
+9C8DAB6EDF4FA1AA2CB285CA28E30972B3BFA4F8600DB9216487655F91CD091A
+DEAA34823397C3D1CAF14A0F016A4EB2A2238881A285C0A4D2850F1D942637B2
+A6BD6CF81D1A3A8B0E9ECE37710AE059A3DD5D5236726BF6EFF89C97B4E1C735
+DBCA03EAE44BFB56C90EC7472FA83DD86D63E9FF50ABBFE1FC07FAE9ED061B73
+6B15923CAB0A8F3DCB7C607594FAA48BC5D060259663B000B14B012FBB1407D2
+626F8CAF1E097ED3B0D6C7D927ACF3383909B4E85803546AD4388E63D83DF79C
+0C8ACD827D22A39B8E93BC17909BCC7F6684F7AFBB6561C95BCABD7CBBF0CDBB
+02C93EBC8CDC004674B88AD2DF1544043B9DCF51FD29A231D000205EA2D062C5
+117DCFA64C49ED7B297C41DCE94DD83B8BD28C640850479DC7D87F5BC5BAB130
+4A2A3707CD8A08D86A5A482F58A40B944CABB6692C489AB9A0FCD3225D134A52
+FB1C1B80C42A64F42AA0A780EF316A27F461DEBFFB5A33B9E83402C1177A0066
+9971FE6BFBB0E4A1D32739BC69ED830C63BE1C8DF78FAB37D82A34CA9C98715E
+C9EF417F7407A74B920CD71B37691A6DE7947B8035068C9D741C87D691A91097
+423B9AF5111851E0F5F7EF5EB6500F716F675B2742F2EA6D8BD044EBB1652792
+A5D763717EBFAB5B524EC2DC159E57ED0A3C18D7CC204D30B501A8E2443C451B
+D32376EF7964C5841425EE1BB5453F2915857F6C6F969AC2CFF51EB350F6A567
+2833D980AE73160B4DF681ACD32F15C64D2AD896CFBC876C4D08E99C2C44E132
+830B7DDD3AEA94344C90FAAFE4EA1A907343F08DB10F5257FEEDEC9A52D9F0BE
+B96317024F1EF27DAE0FDF09038ABB642A191E5D3A1ADE30948CF6B2AF833B04
+C141449022FC87792B47D8FA8476D9334CEAA98FDAA6D386CF2C329D94008863
+546D6870DF9DED5805C4580784171E5382B8FD3A6A04DBCD038C6CBE4E014AF8
+A9BF9531267B3BDFFE4C1D5280FAE6EC1D8BE45AAA1A6B900D9E5D25AD8DC6D5
+62DB0A223C909E2549B90B6E565CBF3CCB7DB2C4643FB506B43AB1FE090B09DC
+194006E6A7F742008CA8C6B01F8F382F5E5D44A5EE43CE11655A844D59A4E12B
+B2D2645ABC3209A73C9D6643CE6C2517CA5E032A202E50EE591D967A90BD20D0
+0186B595F9ED7F3737A55791A390CFB1A0B2D55C19FE04E24C584CC17204DFAB
+5A1EF4CE19B751DC7A867222A1A1B6024C37B8CB2EADB32B4CD4541AD8A789FE
+CEF1987B972042402C340F87D71B1425C4F243F48483F6C6BDDCF40C95DB0C0D
+BD28FB223279B4B2198222E535CCADD67FB7BDC49DAC65F113C28A4E5E4AAB24
+F31F5D5ABB9ED9F9C43590EB9AE572757A105A08E3C92CB5963A7C394678A072
+51CC8F317E8999B87951B0861C11AF617165CDCC6B085FCEE3D30386FB150704
+921F596935BEB40185C46E0BF6988C45EA04E5FD4498AF6D61BAEC15E51FD8D0
+3E7D76109BFE11393AE4F0A258A14DD17E19A61BBC9FFB955264A4CB9BB79C62
+54F6138B2B84595444AD38300F8FE57DE807F46BD7466B322F17AACC9DBDBD3D
+D41AA0394E5BBBF6E5C1AAC13B05810EDF8557CE10493645B6428D00C4E3C1AD
+E192C93C7477A280D33E8F0E0D44F967C414DDDC55B27711614AF630EA7A0ABA
+813E55313185CBEED9B09712CB10533692B95EC02E62F1AE522320D1990092C0
+32ED313F4CCEBA412F4C4363BCC5B05B6A22EC53D6DC9625E6A1B5F9718E0091
+557FEDE52D760F323E4EB6A770926C437BC8CD83A668477B3F330273DDCFF83D
+2EF231C7290C43A8D092DA2D47E0DB51CEDE14CF12C6C6B6F1F0B713465719DE
+E779705B06A4EB43F871A992F9B5DCF314C34C2785B967D4DC46654711E44823
+5E0EB645261AA411DD2CBCE6168CA437B780D2BAAE6CC670837830122F28C4A4
+93C3BA1E996FEB5613A0A92D97C7466FE9EB5405BA6D100B2E079B8856B845E7
+C8E06F9DB80DED33DF5DA02DCD8DB11D5DBAEFE7E9A45F83E570E8E1FA115DDA
+C1F7FB44C944710E77E669A65F6F0405792F4D9D0173864CDC589C6570328987
+E0D7C73A9D9AC181D54C9A98969A3014C073AE433B60D6CD0D17CB6DE11AB4B7
+52DB0735076E292480C39B3CC197C042AFE54E002DC4534785847750636D43AD
+78CD0A0FCB785E325DEF1164844638B9895BC2D85FC6469B27C975F7D56864B2
+9E97C82B980EDF08DA87593CA677764D465C109C897388DB6B94C5FC1192C048
+292E9B21A0277D7F03653C5B8BA4E1E38DBE96024D4BF4D2FAF8166F51723A35
+C40B3486C61C198D8A80B019DD02AECABE1FD5B2501C52D6EF48CD123A4A915E
+1BDB1C5F38652AF26C087AC40BAA9F88BD344DFBB54E33698169A158D4E185C7
+EA075083FBDA2F389FB174C653656B0F0F6969382E17A47F35E4BCEFDBFE79A0
+09730206320F0E35024FA3DCFDC27FCFCCA3C7235A655F35BE66F543C0E83435
+831AD26FF7533FC90534D5F87C4A8EC0BE9734C0F9CFEE094E4C0A525F17B9D4
+8EDCD1A74D9A477FA50B950D815E6D5D19DD3B5DCF15860DBD71958CE0FC1E3F
+485F58748DD5DDA7E0D1B4E843A5B3F33E3DA21772F13CE20DCF842877EF214A
+E5789A872B5EDD19FE55BE80B95CCAE7B8808BFE4076AC5FB0DDDA18F9736905
+08B9981C76822F26B7B99F9E16A2818D14AA73F646FA6C5C36F659E5D4C3FD28
+162EA957F4B325832CE190C51088DE0E960C6C4C572FA288F5B17E271FDF949C
+048402C9447FE6AAA64CB3659BFD1D7E6C4103905E9E9D7940D7363A8FF01F32
+90CC92BFD59CD8C4DCFEA85D9AA7C484F68DDE7E2191198A1B8E8A27C0F8D1B4
+57225243E747F6DBD26FE342038A24C5E1E64DB6A7CE71A5F0EE238CC6A4A4C8
+BFE0E82CA3C232EE8D2384DDD546807A7041970777A5361C4B81999410372B60
+69D97522962CBB2A07811D0382B3BC5C62C6E827C3BBD0D29F6F68FA4F3EEFFD
+642431FB624E652E7CFF5BC98D903D61F5CF8649FB553EF90E37887CC7E55A04
+D681C3CC9D7E4538B031E32E553DB782FC843EBFF7D002F3CCF3E07AD61896BD
+7F8CA47DFA46AF166C78F2B94F387F160B1B9F70A0FF6E6822FD676897F211B7
+873DAF36C8B181065E3D76BD6FF367E484E1B8234AE840DED0C342B70D979DB4
+9CBE5D67FD476D9E691294E449272159B80D668F1F736C43D28CAF46BA0E1CA6
+DF94BBFC9097306E15F7CDD9E19FEF9D270051DA1C9FC0DD781E561D11771B06
+3D10FE112B53A6DD12DA2AD1447DCAB78C2C5A9448A854418729422AC297536C
+FF69E81BFBC23C9039570FC9FDFD10C762FFB18A593C7D135375749EFCCEB23A
+54256277DC4A1E0452C1EDA586A80F66D75CB5E015771AF66D500161AA32719B
+5DB08207F7E69D9686C0B9087E250817F3F39A2750DC6DD773DBFA27872CF87E
+9A1D4B8BF11CECF270B09A32B3A6EC54CD461C564ECC48B790356192B0AC08BA
+EB1FB2F07AF56F3F08B0C23AFD65DA2AFF4A622434C19D1E662B496727F4AA8A
+00E46EBC49467B84577A78ED782BA27B7ED1DF4A02AF0E76B4F21F2B0986F549
+FE5F8149240B4224EBAF882BA76E128F3780D7B772D4CD5EB83690E95299A320
+9260A51EA5F9E85F25D251840AC7FAD5CC901D38F9EE55C75FC98018058B7709
+1CF96465578CEED5AFF75725BA8BDA5185647EF8D22CA3AD5BE1B04AF0D7AEDD
+E5EB04B2E84E48AF881DE23C6592355F62AAD449055ECF3F7E2EA8EB08C64DEE
+9999CCDCEE5284D22BD83B448DF2CF10F78B545D881F9AF3F81E2C392818D959
+70135E0E376572AFC72B94E5357510D0019FD3446F239F05F8B40D7ABE1627EF
+F5D222EF4AFA00C46C2749301A8E3DC60D448D6A78932878CFFF976D732FDA14
+E6C9A4FE37E4DF7D778221335F22E5A0A78E51673D44346E8ACDEACC2ABE3023
+2E1D4E80A3DC1A2207E92016E94EA4C7D835C89A287022CD8FE6CA1FCBEF23C8
+805836B635575855D38349D9FE662F96FEF86FF93B3207C4B6B3D029482D46CC
+7A0C37151F29E8D74F999E7AB60090768EB3938C9BB16C1C18984C83F8CD9A69
+C20CBF5F7B99264ECABC93DBFAE2DC3D99474967131D920D9314E7CFB3F096E1
+9188691A00872D663CC355760A9D39904B5575D067A7D4C9C2FE76DD4A028A31
+C2C59C8175A3D9001077D15A810D535481731B58ED474CAC7E3EC76087325BB4
+0E6871F90B0ADE99AD4C7BD3E74C92550627EE1993BC5E5FCB05AFF3F280EEA2
+4EFA1A06C64401AB2194CA242E47111B1D66278F6946034061FDC730A012CEB6
+0FFD54F3CBA7DE6303312F5551FF0D9EC381AA1E9A4EBFE4D7C132CF8CCF91B6
+10BC6D96BABBB29300F000C530CC48440D7E3D89CF9C13636C0679099F016324
+7CBF982042408A97871B9145BE29DC299F23259910A8C8BEE4450033C0E64B2A
+B420B3CF55AEA545F290AEC72FFA4C0404AAE427C261776A8CA416D38E934799
+0B9EEA2D0B76F48AE9590C87225AABD5E5B20520808BF371FD52013663A82C47
+850FDF4CAA3DB92BA04AEF661CD6B81D5181FBB682118E9FA5E1164AC86D3FDA
+5D89726A9CE83E0234801BA777746EAC0AF60FE3B30CB527478889ABDCC8526E
+5A6B116595F9ABE3E4911C17B6C1A49A9918D9B34FE984CF9DDF06EB4D00D97D
+C04191844E3D2DCCF972BF30D2D73A3EA410840FDB3BB42E5F56DFF122150C7E
+82E9A880C4FE746D5A69C0653B2D0A627A7F40A2766B6B0278FF6C7C29C084AC
+09D821EB1ABCE3E5128CC08C2B271FDF715A268DAB6098ABB4348104084B83CB
+62D49F4C84B9A18491E0C6A7BCB9319D58E3439DDDB1D9EBF5BB9A00A8E8FBC0
+EBAE7EEDB0884FE457383A41BD6890F1D89B2E097AEF5BE6E9D5FC0145C8CC77
+8A91587C6E69241021E712FD064A9717D5050872784F69BF65491159B60CF21E
+8428249D16FB8936217BAF22C858509CE9C9BD76885F9857076D06A05B80F3C7
+A98359601504BFCAF2D2F0AFB06495CFCAAB0F54645B00944F25D9B884FA23B1
+0709974B40B72A112B346632B13190FF3EB6AED7D83620C47452125ECB9D269D
+F9339EBB4C44EDD72E1C371C667CAEC4EE2DDD226A0BB14962713B535473B295
+AB1ABA8DA68F06427CCE44519E38460B719CF3020219D48D1375DF327BE9A71B
+756E06EE448ADF351A5F5BBBBE1ADB3334F9A8654C3F82CEB371A0D78B529CD4
+A5138C1712CD5019325F395D69338662BE8BB257665847753E24E579C7FDF836
+0BE78D092C6D6E955C07757B74D6E8E9FB004B20A2DB756FF6097610A1023E98
+611C846ACE1700F1C03EB8A6E710EC904CCB111CF2CB3B09F3F4B4E9998E12ED
+EA7A61706259C7FEAA2D90242C64D5CF97D27530C55DD688FD53F22A04F1D062
+2F7C936D9B93956BEDBEB95C14C676F29932994C56A0B97394AF9D4E21A53745
+C7D1693911306B054109094E5A113DABE7A2FB5F08A1C8573684517B0FC690FA
+2B43EEF9346F5E98DB82B45AE7857610B647E5086C4BAFA5C4FC32FB0FEE11CA
+AD5BA013CD988E5A5574074A0CC43FDBAC0435EF30328CFF19B726999ABB4CC8
+A0086C0EE2D64AF26DD727639D4390382B51BAF4508738F21B3DBB53911FA062
+F165E668633A2510E18362BE915583831ADEEBC25A75FE6C9945474CD4B16C98
+63F12E468A9DEA27CE8D795B32A5955EBC5AF5F4848C3489BD4050FA1CFFAB22
+8E177FA778BB388BFE05A7D85036F5E2DF6E4FB6041D9F82D98511F6950D049E
+2CC740A41D7233652255B19098D6F78A610227EFB5748098FDD2F9832BCAC375
+FFD5159860DDCA3E859D4A4274C0E21A0BC5EDD73EA5F638F649FB532584B461
+FDB97482DBE3D0FB1C6F0B223D9B388AA252FC85E24B775C24732D53062C3F87
+2BEF8AF1E65FF8B84E64E91EB57680E062DF4D95B7EB69DF49C5969EF4D401B1
+BFA9F0E3E05AC76BDEC93A2FCA2AF2E73ABBFDC3177A5108D423E527041E8CD4
+16784B4081DB354A4DF6CB23D231E402F545C000F1CFA977C5AEE4FEE287E263
+6E5F15EC9B4FFEFA59F8DF76E22BE6FD799CDFF99B9DE7CC5059566116714547
+8516F7F53FDFA4A030B01A0E9CBF4D41F118157506F8B19C8B35564AB4C0E669
+265AAEF7437D4B6CF5E6D88D65D66129E5A78F172DA51F447C80E3FFDF8AAAA3
+A548A15938C146562A110638BB100E6B39DC4588D14E936475A262AFF2962F50
+75750B6EB2B77C4FEFC8000129AA22B773ECADDB6F40C8E6EECDDEA8563EB616
+C897B52C81EAECB308BCF1AFB670FA567882EC577BA242B8C092B43C17D8F5B5
+C82AFA9AFAE3ACF378644C4BB28CD51958C87EAFD708E3558B00A7D624BBC5ED
+F88FDA5A6629E82B55F0B05032186A5672863D344D002BFC86C6E4E83F305E14
+829A8A6F19BAE34E3526DC3B0011049559F156BD08BEF383BD23B4AE1F160917
+5903A87A9054B3C4934C20A2A12B3EAA52682217A9B6E4B4279BC168E72B54A5
+40905DF94E30C3058EDF5CBD612CEBA426CEFBCBF76C364E8B42EB5D3128A76C
+30A6875B31208567170B50B1BB860ED4E84436946AF3E4E2CC594D28887F0DD6
+29E358E20B6D2BE494CDB18B408C3DE35675FA7E774FF08BC178CEBBA5CA1D76
+EB9423F28878EB308717C5B8973A1260DDDF73E01694C6D3D5812D0E9326B24B
+A5105D8A923730FE95123B949B3C235A59D919CDFE841EE97F62317B219EE4E9
+C20B861F99E62F18F8F48B875D9BC3FB30290D42FCBC716F77EF9D1564E7E186
+066FF691C92E429AB26C3F96BE1BC68127E9A746197A635B216D9B4F7DD660A2
+CA571A908587CA1BDB53A0B29FBAA2A97EF52C5DB34FF6073496EF7BC7E1A585
+F18DF5D1B2B92AD1679F9187774F5EA7A92770EE9902AFF1A210B288232E92C2
+FF38BC7D6DDA8E75917B48D448BBEE5F15E2FD512CB6A96956E110CEFBCA33FD
+C3F363595C34C30CDB6966014787E926DD2690D6AE6B0F0B945BE2C4419E6423
+B35AC87A168D515530FDE16F87FDE438A579E1C24E5746F3BC69DBBA6CE65343
+AD54198A9E74D5EC6009AE3DCE24D3CC9672E5FD0930D7D622CC0F093B5D9488
+B36086A5E563FD3ACEBB5573C2A07590FB12C50EB09F3413F968EAB2140FBB87
+43197132F839629909E73B8CF3DE13282022DFE7AA073E8764D92BD3F08CC22F
+8D3F55320CAA5904EAF87356D0AD6A0E23A662DAC8758CE7F2F4B791A9ED93E2
+50760BE1F270C5108570A5A0836BC3969DE378A7C6F82142C1F2A04DB7AB7268
+0E587B969B48E16A7EB4028D6F71AA8FDD8C0AB4189CA38EB4A321CA087B2B8F
+99785B86F0C49F5687ED9CF37C0DD01650C423992291A0FE8617D4A84042829A
+3F7E3155B330708ACF52B2C9FE86B4902743927E5D672852F3B333A05F4AC103
+F85B8A9974E1A3570FC3FF9258DEC0EE127737E1B88D5EC850ABC41E10CEBF5E
+DF83EC4F48B0D250FF65C228FE594A53A3F5FFA223B6829C0AE37F4AC5D4C015
+EF33A79677D24ED59BD19C952C5F6D223A12D59198B12EC7BCBEF553AFB697CE
+DBADBD1C6BDA46737D6F0789997A04E480A48076C30D942011FE8735D6669FAB
+A5220545F94234CEA4190A908964778F4B19C6C7E7856A7C20F57818A55301DD
+FC7F746BED448C81ECE1163CF687BF5C2ABAFE9EA027606FE41D844FAA205D32
+D461F99B8B9447C027D347255193003379199FC9D62DD7566552311A03F0BCE7
+93F86EA46E2B111F682425DEB1E34F227E410306725B89EE10A10996D0AAE0D7
+65896F910F97363B9464914C1627D6336BB8F09187F280096696F0E83F7067AC
+2BB763046B58C206B664D37CA9AFE9925055A00C997A12A28CABCE6E96D97F78
+2E030CCB2C728053ABC09F42
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 45 /hyphen put
+dup 46 /period put
+dup 50 /two put
+dup 57 /nine put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 121 /y put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E
+C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E
+3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B
+426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D
+D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161
+E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32
+6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5
+A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE
+0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC
+85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF
+F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4
+C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC
+12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D
+048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8
+0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725
+741D08B9DB688731A6C9886C15A83C28DADCC81385EA239E045E8F3670CE03DB
+9EE77ED067036595C9F3B1854343BE3A12E486B6E5A2F8AC44FA5378D28DCCEE
+306B0E283AA444423F9A4FF38E2B56DCF67A39CEB2C643DAE86865517D5D0371
+CB8797208ADEC637330A3A57902C9A88EDB75A7C16FA9850075D9F19578EC666
+1353CC1FC512D59DFF847ACCD04A1C36D8C678E99A0CAF0B7AA7DE226F220BA1
+8145EC4F43D390DE65A99750CCB976DF6CF79A1ED03B3956CCDD036FAD8C4020
+94448A1969529E625126AA23205D65829F9C640419EAF13C08981E729EA1E006
+2D2261D21A5106397E0B252A1D5D4DC72D7686C6E5BD72EBCF3B88060429C02E
+9237474EF4021545C8B1473292C8B4F5A86ECF68495A50C9A33C60D49713451A
+B1B95CCA5B66E2092DB8C0AC8C92CEA275D9F50670D3DACBF601C53C2F737885
+BE986233D033729ED21CCB7B0E329AA1DEDF73E7BA502C1AF2A48DB1ACF054BD
+109AF4402BD380183CA9EF3C2CEBC041764A017D56C9C49492B58A34F80CC409
+A336E14BE6A5589582F1D68A72D55B2C16844A9B242A50D6BCAA864B700333DB
+DD3AA9667630F07EE742D2986D6C2C178B8C969AEB01FD69B65EBFF5EF8E1FD3
+9CE443DA33161F7ED5E48FB03F33E4C10F1D0FEC65D5D36BFA719E1B8DC734E8
+8E89F7D8E1BD3253CF3428854F178E4AEBF916D17E4668EDC79C472B92E447AE
+91D17352FBFC8DCCCDE0D49D3B5ACAA24D2B16AB81919CEDBFAD9B73CFE9F5BC
+E34D67E3676AD5186B21053CB5E467C46BBE1BEEBC0E628DB616678CC6D0EF60
+03A6E9CBB6B392BEB7FB8E8ACA451BBB2A0BD796CBEC995CDB5EA09508E3061F
+2419C06082708B23EAC1927ECA3D07B8B505DDEE7BEB40B54B1FDFF16FF266A4
+C0ECCED523450690021E5274A0483CA89DE0B328BF401FBF787CB92DAE99359E
+DD9139BC23E443CDAE380F9F4E0616D24A101791F0F856A0E02E25B15BAFF333
+4E7861E3092AE03C275D15169FD927CC6E86758846E22CE6F36EB1DE2D55619B
+83A8F89C58321AC26E1D35F306F38035100B104E782D2BB8F2A750847FE1A617
+1360BABFDAC4B0A1F9A9FD9700FC9F371BAD46E8D3A7DF7874C0B1FE2D565115
+E56E0302A9A0EF84BB3E9F35953BA85A215358BD85A8D72F47AE8752753D8B53
+164864475F2A54989762E03D16130040B091C55EEDE24821549C1F766545A987
+832D44CF9557AF60685C108D356C4EC4943379C4CBC0A0063D55513C4ADA97CA
+96A041ACFE92EAB64B8D91C686836C0E70F4F353B7C550B57D933C7BA7D2E874
+DE91390D49B49375D634768F955E9C37011895214079B0550D1A7B797CE74AAC
+FF11E00C50556E87E09E3D0C18F3C590CF8B6CE518CDC10C2CC674140095A3B7
+65E8768878E6B741C8F3C457DE96AD99EFCACD22E3ABB2377A63CF9B0F8C4D81
+3CA3187D0EA3FB76F9DB6209E6BD462CC8167E7EC0636D3BF45E7B0F7EC4AF9E
+65666B9D3D9ECF70EC8437B70F2E6DBCC68A96E10223B55C0E6C112F3CE81368
+4EE8AFAE613F6BFCA104FDF696FBAB3A2A2081E348A1681270C5D76BCE3B4034
+0292FDAA134C525A0EA3541BA1E2EDAAA35DBCAB607A80A7D022C1D239B334D2
+588EC7CD9C24026FC59F5A5001F839DD189D719BB982E7B77F59D5C49456E42E
+220009928AFB49F0F3B7AD46630B8E81A8E540F25EFA5B11847D508BCF47F03F
+EAE135ECF9A10ECB931E5AB3005FE675CB936FDBAC5143FCA1577CE12968CE0A
+72A8E09569130A10F74BC2834665B35810645E0F830625BD979B32BD75676F98
+AC1CB6E754BA9A133D603138617E374366160D94812AA0ECCF2F828FA8B2006C
+6BFF184E718A6D7BE45EE0B8C843468C6EDA5A3B1342C028B54D97862CDE4A9E
+E8EEF934AFD84F38924460D99E8445657EE19F573F8DBD247FB47A4E42A86C2F
+953E9192C2696619D0EAF84AEAAF001CC04AA3CEB12B7CF96608C4BDCAD93804
+22B74AF4A40DA3EA630EF90B8E3D9D4F87BE54BA13B5FD4711D27886DDADA67A
+71AFE803ECBE23C5D8BF8EE533751209119552772E69FA2B83BC44E8727E57F2
+013FC888C864ACC9F79F5DD28F8E9B5D943215918B092643BAC49D564CD5FCA5
+0F7DCF8C9F279CD792BCD323C7EB44AA0EF21AD0C3EA63188D07CDD69B34D44B
+8F607B7A4B4295FED3694B2BE859BF329435143B68BC052E67FF5852AC1ACE2B
+4015684091641CCFF6F6C7238833C8EC4C50F45E91D3A789D472CC4C3EB0AF0A
+A7AE19988473DA6944ABF286025D0B128F41900B839595203AB0B86F7BE2A9B7
+3142824A7608938BB6687EEE9489323586C1CCB9D39F6FCE4100EDFAEA894264
+D13197A4A79B5D148254628556D534490939D0969496EC1F27FBBCED177B650F
+FBF0B0351C20A112604860B9F89C6CFF8B5DCBD1513EBD4AA5EB688843DF5F94
+E2BD9EC54AA89286AD268EB121079494BBFE2226F3FF539852A093582A09AFD7
+8B0F4D956A73DCCB1FFEB9003E5A69C6A1637C19F0E6EC538DA5FFF5F13DC7D3
+9066C0543F524E73D48CDA40CC1BD8BA154113AB041AC525DD2E6F7BF6039409
+D969A9494879E92B80DA5523121286842DB13052C4B853DD724B9B6855825DB3
+DFF113FBAED2182C0FBEB6CF5C9BB0AF58793D2E005717D6CBB30710E24A620C
+ED2A2A5784D4281FAC189328F47B5B302429D2445E4EB15D3D6C32284CCF7547
+37398701611A81628EB7937BC14CD1F17221C81FB95AB7D1E7B0D140482635AB
+480DA51C8B63ED4E3F40E8CB4106D31766135420E4FBE859A0668FD9FD1DE7A6
+B922563A4CBC2FCFA0D688B5BFB47C179E3C98691A3F0ED762364AAE0A64CBF0
+13AA295EBC07B3D0DE1416A629AD7C1AF3098C4C1D6B89606905CCDD9FCE1CB0
+B7E72671FE36D3F74D68D409AA9EBF9B94EE8A8447EFA34F5068A424B643A842
+994DDBD21FA88295C0A1EA4C587A14C1AF270BFF70BB2BBD6629C760D9CCFA89
+571302ED016B36B4856D28BA7E8012025CC7F00137C6C17EA65C281AF321524F
+CCEB8FF657B973BDF7B74E8633D104862B94F69CC2908DD5EE46597433F64017
+81D360BF71255A11A33743AC639DC0A161FEAE40E28E72945AF4212B2599C711
+78D5F1E8AB9171F64BC0EE18CA4C2CFF1BDD126B580539D84920C05AD85F4E79
+EF3B47B81E0328E0731154E62EBAACB0B4B78966D003D8BC0E95A5E1500D8A65
+46C87619AB596C3A9B1E4049F2A53B4D613C1B0F7CCD43EAD5BDEFEEF0467AC3
+34205476FDC67B53755B44388033B315C0E0BCB7AEA007C11155B20D22AA2572
+EB7521E661549F53DA826FDB1C5F23EC646EF2B68EED20C0BCA23CD27E3A6A78
+56F4484F3E045C4BF77F9D6687CAA070EC0FEFE052EADBD6B27DBE5FA734529C
+D9FB9B9A9A880DD696588FD7E0301A606FE9E21580924E24FA589D738FB1B532
+12C3FEDBD58FB1C11C02B80DCBAB5EABA4CF22A152CB0D9E6911AB7318C7A8F9
+2BFFA6DE576CCCC886885610E32A693A23BD0FE5179C89FD0CBD09712866F45E
+C1D793D766AE275A3BBC2EABAA7F824D766F0D4035CE7CA8E968DA47189AE4A6
+05BE6390D5EDB1FA5EF23A1CEFCD8FE1D5B7465253500C08A00965345E1DD654
+C1B9A46CE494BE85F5BFB7ABF40FD9A85F429704C83DE82272E1834EEB3A5E55
+1BBA74D660EDCB87D5C2C182AB1EC98C1BBD8B45717475F5E04FA5E5E0DC77DD
+8A94D6456DB3D5F32AD8259BA4EB3CC51AFF89158FFDD895ADBDACB42CD19277
+15F370F82F4C188B2B974A3B381EFBBBDB58A711B70A15274C5B22F6DD7F00B4
+3D9E1130091858262966E389AA213044A056F1C4FCA042EF1FF065872F2EC57C
+B4F67CD982B9257D3F792CC4E185F7CF81A2BDC01742E530A1E9E96EFA1BD539
+F1623E9E73D5EEC5D2C8445D27956F4D307002EFAF3C9C83FD8C7684A1FA71C5
+D4113B6E048A18486CC3C1A05C56B37B1C688867A306193F55EEB01C845C92BC
+8821F5C3D66E1A3DF8753E30B8CA706172190948F7B42E9C3CAB6E62494972D0
+6B52332A1ADED17965484EF3454D1A44205C61183DACDFF072894CF4227669C5
+4CD15981875AF120A9F383154900459966A8F2D7FD7A43C16DA178621C0D384F
+243C883C7AD4356D6D1F94A77B032239003556406E7CD0F35567CAB62FF557E6
+8895E951F17283D7F75A8C88380B2163CA57D157F281F0A4BF1784C7A53BCD2A
+6AB1735861E1C038FC7405630D4FDF518ECCEB3611BB936E44DDE904C6FD5965
+3097626626B4C5D46463644EB0706177DC6D4ABB8FE9BE62D8C87911DD671BEB
+D09F1B5D9954A8C7F184AA2F1766726B237B558C9252A79A494A6CB46AFDE6F7
+2830052B5AAD88EBD52822E3B3C2C996AD188368D81D09B6AD7E87EB7D66D1B9
+141367065E5922A25E0DF08E9E3478C881F9277496703F813D6F1B1A1DE98790
+AC5E008CBE312AC9BCF7859B1E90DA2A28D77B55A331AEFC90350E937C16AC2C
+C44CE5D98668B3AEE7250051FAD989A05D4069534E49495AA8C72624EBE2BF83
+EA16061C0399096ABFB7BF1AE2429569D7BEB42A7792B97A5F21D372C62B9481
+430286E68890A8339A0A71CC827F3369CC9E30954375106ED9209B9E5143A2E7
+05DC5D4EF73D51C3095374EE8BD86B9B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 13 /fl put
+dup 14 /ffi put
+dup 33 /exclam put
+dup 34 /quotedblright put
+dup 35 /numbersign put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 63 /question put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+dup 124 /emdash put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
+0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
+B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
+AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
+97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
+FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
+20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
+0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
+F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
+3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
+A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
+5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A
+45A24ADAEC63F61C9FD18376D3984449A1F998C318A8FE36D0D5020E18A49625
+0F3BB603BA1F3E66FF412F6A32433FF8BD2968D79CE4273AD0E0CDDA5153C2BF
+F8A46A2244F9394A49D339F763F5A7411A3C29336B21CCB01723705AF589B078
+3763035411FE36AB5D744E81379106890688CB5BC41184548B7FEBA08DE7288E
+E6570FEA20C51FACE8E8F824BB61A4A038AB817C47B87391611B77928B2565A9
+3B27A573C05D36ED01D8F27CB2C793370FA9B90021B5696280A55F2CB6117B64
+293EAE0EA5A243F56FD007773CA35DF71B3D28643C25210CCE25F37A5095D6E5
+9CAFD99DD1DB0D7EAD454C13464DF6FF5DD42339797AE5AE467084550FC00139
+6EE818C6365007B2FD6E26285B832CFE6EA7E99665A224C9813C036CED262639
+3FB39C1F05FF8F31D2DEF37BB9B883334F51EA124581B786A3D5FE6424B19872
+AE7CB657C8D9528934B990B94FA4A6D61BC9D2CA9B4E95A22CBAA066043F44D1
+AF32F545B9E123536914A7FD7FE96F12039EC25128C810BFF546AABC609DF57F
+E19D511F324E32956177C4376D191C691B9F0B21FA84BAF3DCBBA536CD710A80
+1DCD4C83C02E69A140E1A4CFFA3B012398F21DDD96ED8060DB98EE133F430022
+41BA1DA473F1C99F0D6CDBD35188DAF712AC83E0EDE08EFC3CA2B4A21EE55692
+CF22799274A5CFAE84C89C937AEECF9CC71A328015B63C1730FA68A18871E174
+D035568A73346EBE4EBCAE410A4F2505370A0ECB487FB40FD823065AC56CE66A
+9D8440C5B3F74B855EDAECE69835137D4D76FC0FEBA53998F57EEF25C7E3D9A9
+21BFDBD66C84D8AF7D8A3B79FAA9DA2963FD47689E519FBB2B7793CE6DE04A5C
+203539BF94A5A700E65B5A5DD37B051EA4348BDC4CA39909ABDF8C4102A58FD6
+661206115F7EF6C29E12408BADB83AD40071F53B501C15601338467BED90B659
+2708D01CD77E109ABA63C19FE12606511639C5D9D5522C80692D1CA874E17B9C
+753AEEF13718DD36A008B2D39D618F4F766174423AE972CB619634766A5DA025
+F9682D9E2A3C752D0F6F18B0D58319FCA606BD6DBC4F83D19DCAC84A6165B460
+AC1A0057B12E2023F175E6A51FC12A4852043F6F2F2625ECFF6E866293531437
+1C060C9383278C81B8DF68BEED88C49F86B7617C5B938457D19FA336C616D2AB
+0A430B489EAE7998EAB74FC8C037550E12EF9AC540FD37473DB1A44B1747A4C7
+4687624D806FAC32A53BD65A333DA3732ADA2774D6621BB59BDAECA5637F1F41
+CD2AAEA8DB9774C2730DBDE3A2F9499C719A0E9D59FF37C4F4E6E54D5EC402C8
+6599488AE21DD119CA2BF54EDB306B26351D0CC4C82040835580087C60327110
+9F8A1277DDBBD25823AD30F0E960604BFF9CE454C5C841119F73535F3093FBD6
+8E47B1357BA56E3D906EC70D68E85465479539187B56EC67A64DE38FC444950E
+A82B014254689B676BD02A3068ED7ED5D4C9CA1839ACD730A1796A6FEE8905DC
+73D95625C5F6B4364B1507A313B56BDB2A1DBEBD436AD80F31439C84BD00248C
+F900452374CBDC6ECBC496178471EDA30464C1C4BF38936EC7E7767FF4637CD0
+34D3C202285C0B3ACA5515977C253F00DEDD878F6AD84BA9A1041553A3626EE9
+A5B4C881E77FF893293253F9507A3B8F955BF288562B67E2A99DF65D86D14B48
+DC7587B628505B75A6DFA4CC8DB2CFCAC62ECA302FF5FCAB51FCE19FD7BB7675
+D747A66872C49954B0C1547A8759E42FD7219E7D9C87F62451C47B13B46D9619
+D0CBCBF138ED5CB03C8793626FBF6B4ADEEC391FC7AB65269CD899FAFEC8A9D9
+DD838E4AC1249C33E3CD4539F09989D0407AD5A9A3C99BA7A24F62D428406A61
+862D66DAA7EDCF0D8EE84B4399BB7FD1E117F90046F53CB268327B3333C0D82E
+6BCBD0A6BBF76130D08527593DCADDF3B1D76A9154C5919562D5BA8767A899D4
+DF546740D7EE9908EAFD91CE8F707A74696ED0DE86F6BE6C1E7DF1534E1A645F
+D2315D77E06A87CF2093119D5CC415783F73F3561E7D336E3774570D50569DDB
+F5DC496B875A91F2A2074DB8A7E44F86698BE3701727D63F644FF0DF38ED505E
+ACB70239F0287885F27B6D1487A9CDF5817F92866613ACD932B6347F5857B242
+95C3C47EE9AA298763F9BA372E0215161696CCA5C5EC4CA9088AF24D18AE43BA
+1D0F9C25C23645D97AA5E9C05C59FD2E7B5CF123048FEF61080F6E16AB0D852A
+0A0F0DC41D08B6DF137200563D61539C3B5DFB979889AC756B8A42A81D422DA1
+9DB2215B060FDEDE2AD01D4AF60ECB81C94B66E1B8036B71CDDC8721E3D270FD
+CD92252E2F73EB2CFA581A0AB5B196EEF05E926E3A8C45936FB43F7E726350B6
+FF5C9D68CC477F4C4541E37210CC0DC917B9458699100283BBED7DE5634B08E1
+E8A1275815A358B4C0D3787313C850999DF7330A5165A70BB5B5104415A5F973
+3160B501075FC60DAF1C8C6DA3A674331DDE8854DE916DDD0491906F4EBB7F6A
+C56C4A9D6132320E2E021CFEA843F7C56203E943D3A9B12D8321EAABAE3580BD
+58D81B6C551BB86D2FB83A3E6B4924EE0D07E961E5235E7D473647322CC62C69
+EB8DDEA11AAED833A80339E58330BD4AC7BC67B692ABA6A34D4D2D7A1A279A45
+91974DF964E64592E3856B6D72B26D6E16241437159F3A09A5F30A4360083530
+C76CD71780CC61C31DDE51A144E6E656F62A579D808F5FA729F1A66382EABA98
+B6E376765D96FF4015BF46B3314B72C007A8DAE08A2E29F3461FA56B4BA6DBAF
+6AC06F4C94FE3F2D692913E13F99B6AFABF801C0119625C51F8015E35BA453E5
+8AD266F5BE4EA6E839C605AFCA7F11B673E51FF62A17D6BC824119A89599F86E
+04D3DF374382132A2F1FB1F9E307DB10AB21E627C4356DBEB97C0A6205AADC11
+22176F33DEA813908601A242263A845256234C6A3C9242AA2811F9E43BAB934A
+024BDEDA3CB1E7DBE07BD210EA3341582B6D2A1577185C01E6F38CBE50E63DC5
+0C27D22533C60F2FA74E15A9098F5B0AB07B31A098A88C9629F2BFE3E51379F4
+43E54F4AC11B6134C39EA3F16B0AD01160792AEE382FA08C171DE8FE8D78B8BF
+AF4B630DCC09B8C548ABF9AC0ECE250D4F18F481EFD5AF1F00B23DF090B57BC5
+7825A72FB1E529CAC192DC16ACD2D77E8FC158921B4E9073108E69D69E191B7E
+8E1840F83F758C840A0DA59252EA309DF1828E5C01FB9528AF8EED2A5DBCE0B9
+8CFAEED4BE7BB81293E49C382F8662548F7CB5579C809007E665A50BBDD51B2C
+E1756BA9E84AB65F970FE5E4282417D5006EF7786C02D0817D3841DF95E00C87
+CA35863F66C06860C9117A4E7E5008D45B70584AE3154BFDCA49006E9548C978
+D25EB10052885AEDD07F8A050E5A64C5BE3270EA594D79CCECC92996C2FFB2E5
+FA947080F1EF2335799A8DD8BFA215877BE32C2B5A633153F1F8EA8C93B8362B
+A3C7452B8D0AB8E6EDB16FEEBE51B64FCD0601F8F9FA99EF4241CEB58F829128
+F21AAD148D8D681F84E51F5A53F6C13E5CAFEABB18CCF22180C0B911A37624E2
+5FB908863CC80ED9C93B93AA72997D13FE0C71F0F38F274B638D461A44142142
+53CF8EA0F89FF54F775FBAF2540C02E895D0BD75B6F03DBB65124BB41F8743FB
+B67D53D6DF9A7D134CC7858F32872969147FCF1912C54FF72B609E1A10AE4F61
+7068CADBBC35946AAC508AD9F33FBFCAF695F68C279933D9CCA93229CD03282F
+5E5343EE96D7133C43AB880C39443F3AF6E04C4DA3CE7D929D128D1215700E45
+F297B6517A367B9ECBB65C342E19A3767946B9DD60876E832524575E0289C388
+FD13E3132A1D3DF3F36C77B642D24B0ED5D1565675D126D851A443ECF57B1806
+FB9F35F99CBEB2FB577BB977377D7A0078A6882D81E44E9EB7C3CD28D1F24090
+744B6CE1F5118F08F3E7F8F87D783C0FDB032942D78219CBC36C704AB9D62B8E
+D908D6D5490544EFA10B481C6DFC44650EE3B24C467C67587BB53B2F0BEC46A6
+CFE5F4DAE1BA4F2F53E8E99C10DD03F1A6B8D6D7345FCF2ADD777055BC911BD6
+78331DAC5E9D58A574BA42EB444E2E6D9E3971F8A0995E552D38BB18DBE605A6
+05598018EC62C0911BAFAA8BEF2AA3026B574A05C06C5B09EA81EA2D44E526B0
+AF905F7344DB4C8E665DE157572835EFBDCE23C08182BD6C88E754D33DFAFAB1
+D598596BF72D234C9B3CB4F863EB0C0D82C0CEE9BE01B07BAE14867B52B3EB88
+D13930435D24F524FC4DC2306980CCAA8EE2E162CF5244F02DF6F2AA2936C03A
+86394C9A41AA3B7FB94D21A8859FE976738E93D43DC70323E5601FA2B4493F41
+0A1C509CD367B5DB76E015B34B1F72F560405453276665A5BDACCE7A0692A0DE
+CC922A68F2D93E90AE381C4D1AF81E9B89875919FB8793BAC481F0CCF4E3C5E9
+1029CDA7061B66473784FBE92A10DE8CA6C84BD94D1E3A13D192C830EC5F9028
+E48426D99124CD83A8227580ABD894E9D77978311A635A827E12A72ECE2F32AD
+947DEA382F773C28E06DA5097CB8029B5B72F7288B42D1C916558ABBE10CDF74
+56C51DAAB215852BE0ED396764575A3AB5B4A89F702C444F6674DA9D73376AEA
+EC3198028161BA0390B6B2939E9875833ADA7A21ADF4E6D72D1C8DB3D26444EF
+543CF25E128835C6014E72268E92DFE53B8738257FC352007C17878F42AB21D7
+0A72AA2461CF6EEF556B006FF1804E883918881AA448BA38A4BD8555F5A67B19
+0FD667D74090CD79F1AEADF3B08E61747435090CFB7FEC2536E3DA126ABAE2C6
+35697ABA2F3D7934D1C933B9F125091F6BEE1A1EF576FB3EE511F739DD4697A1
+EE2218F6901623F9789B62E6189B86DDCC11CB4E8AEEB13707F4B20B6544C76D
+23ABA706ECEFFEFE9A66C39FA17B9716C7B87507AA5A4BF61A0A9E9784ECAC33
+77012994981273788B497760BE6287D590D5D0ADBB3BDAF1C5162243CA9090C3
+F64C2196D935515A4261EDE262CD9DD5B4AB530A2A513B96FAF5E2240C7328C8
+D60B475DE444CA05F9DF021B970A8FE30C6B4DD16087BBC61833CD4542E73672
+188CF60488746694A23EA1FE198FAE888EC3CA3C409FECABBF89436F560460A7
+D7FD3A803F77CAB7BAA903D7A3DA3390F757E8EDAEE43CAD1E46377EDF0C552C
+C47B240107E39EDB0945BBEC2F1660254F053EEED312DA47D844631826C3B56B
+42A18F68482E2012B460C152F413F9106B392BB0D255173E8E37EE818993A03D
+8CE853111C89C3E2F9125FCA3DC4C999656DA1C33991F57DEC5AD6926F45EF87
+E624B63EFC18893870E05250AC4C3091656874AECF48D4587E51BFBDB09B4126
+F9CF451C2F87FEB303E7BFCFB0610C332B05150E1FD9E4D73DB8F911190984F3
+C660D00B0710647439053139B8CCBA7507212CBDFDB6D5473410DFEFC59785EB
+4B81C585763401F95F364379D19CF541711332C1D3CA5EDDC643A9CD7434DF80
+3702AD35647D3A794BE2E25323EF239F56699CE11B08DA20AFC4410D06DBF8A6
+CB6174424312CF91448FFB95A718388CB9DE6EFF3176AE7412D8D760780B171E
+B928C6168089E79C54BFFEEC2EF6115D724B091FECB5C1A47132DC1EBA407839
+B644B4746C2DEDC0507DFB64D57AC07DB6F48E8592B126106825E7A791FB5EDD
+1C6A51E8F27ADF467BE79A4F20B0FF87C997A9BF6FA2DF429171210FCE2B232C
+EF4FDBE0EFA00ED1CF27FF4A812AA00C47321FC0D172C06CBD3A4BF81C45DDD7
+6D90F7662A5C561660CCBA192A28C49027AFFFFC8ECE256B10D6D6FA290600A2
+DD8E6117DBF228D7727BB76F6E40AE7C315AF30AA387FED52B29BD0625C94356
+6A3061FD454A3C20CCEB8D06F3B2D0A5145721472C42B8AB7D575EABB053F9B2
+44F31F10A2834C4C596836A9734EAF172FE123392687A3C966906795AE51B6CF
+DE5291637EC6CAA764978E6CED9504788B7127B1E064AF5F3A056C1801265374
+2D488C6483D21198BACB12FA032D053B3CA74FAB9AE98D47BA037E205D1B0D86
+BA0ADCB5E8CEE192F95DCEFCE8953A295408781171CEEA76762E668B3409C726
+56439A91DBAA042AD2983B7A42C823423860DE9139C89762FFDEA2A7B183CC91
+D1FC75B26823D7F770ED65D7E4BF5C5F110E4FA08028087779986CDC2D1CB8CE
+C9B6AC5C76FE7156B887CCD19D0D996ADC957F415B7A42A9D7F28CCC6ADD2CFC
+1A3279C4F5F38546E4A07E1DE7C3AC9F7E1F0A089A218866ACEB50FE58BF051D
+E5E9473B5B1DA2116AA4DB3B3C57F707881AAB3DA1B5A917FE2D08D7EECB213B
+571E8936FF4FBAFA5021000806E3D989E7D22EDC24738DED49ED93F99046DDA0
+A94FEB8C45D8EDB85F22BF00F229DBF3C5C095B85EFE6F536E1A5B53725BB0D9
+9BB1E4DD3C9C1F9CFCA20A9D6B03A1C6FB9B5AB40082A76604860F9C8B5BC0AC
+87CE2F6D3544DE509827CAAF913627CA366F811CE1E81328343E58E054F2A5AC
+05A87873FB2A82570E095A98C5595CA0D5D2B7E43572CDFF033A5BD16C888479
+DBB6727D400321F6ECF236F96B8F16700BEA3E5773D581C38847041ED7984A62
+520087C62EAD37D9D440A0785E17EC0B0A2F55F634CED006CD53F06E17F01ED9
+70170544C3C110A1CB4B6224D0F43CF6710336050AC67707C43D7551C2C084AA
+C4D944BCB7AF4E559484D1908213AD47F999AF24C23753942989D9EEDC9186FE
+817EB6664ED84E61A218A1CB7A9B16774DDEDB389F4712CD7A5BBDC50417F86C
+96BC5B09F9BBB26648BC514D3B69D44B7CD3335C57FA656991B7D3FD7F552A7C
+1423569715CEA9F4C32A296EA243E2B4E52430E7719FB737AF26696B2432F692
+A4139C642A6AC8ECCB04C51CCA80F22C69F38B4CF2C4F5FD76A3AF5921073D20
+0AC49A469997A2619CF3669D3709E47C665783D2F770CF9EDD8CF60F3F75BF2A
+C201879C490940785D0B3ABFD50D751A16E8944590DFA5080D2E910C257BF866
+D8A35C1C6F64F937FEAE266AE8276FA4E3B054CD3FB6E5A4C1AE9666D744560F
+AF055293BD19A92FFF045DD9000D6FBA24031C5641B91229AB1309FECCF11ABC
+21665145A6B0B0B8B7493DA3D46FEC8E8124F2A21C016AB3310E0B4CAE136BE9
+9E345A3A61753FFD19DF4B67CABFC2C504F6D387B5437F4A51A782895585458D
+EB2A933D34F076953DFD6A38BB06D42F7ED26F674833250B429B4A5FFB5D2D67
+AEF74107C3D05B94DD2E2193DF025E789F380CC7B93D7DA329F5CB7F23B2D6E7
+1D9A5E1C1B827EBDD7A2E5C93C06554FDAD091B20BEE28EC67BEF4B8210394C4
+BA691E15BE2B98116637DF1630E6B9246F35EB13F8674775EB2DF40754D5784C
+475EA36E2B31877F2EC16F3C5F002910D49B76CEFFEF175630109B50D14B0B63
+97E2AEB3155C0272D6C90F8C9D5A2A2C91A728F4FC123AA6199E84DE2F247C9F
+FAC1B10571E48EF12D85FD57B906BC17F6250A441F3A05BF6EAD8CF0F440578C
+CC049EB1A253625DDA18F20E2A237EFD90A660BE1A7BACAE8B84D2A041F2914D
+1F1B486E4D7638141C4961787D30A40C943486DE20E41F8113F9F76299776E0F
+CDAD2F0564AD6651B100F696C2ECCF0A564D8FF247619C37012AC1F2C7FC9C1C
+16077FA7A707FD58F018556C0F0C20CF73C382DEB386DB189DEB12E7EF5C92ED
+BF9210B526E9B5A487919077091900E2C7D931E89077CA0C878DE20E3DD498A7
+0D15FEC9DFC851B4B86B133A9F2EF63D7543C91803C30A885A2A54F4493572FD
+626FF72F25ED90E0066ACB6D15A1EEDCBBD560B45F94E3DCA516B4042BD427FD
+09FB77F5745FE41C040C2B8E30BC99865F7E67743C1187A359A6B4A1CD902D93
+CDB759DFC4D526915EB5AED75A645A4520C1F76B3B30811FB6B42FBAACEFF7C8
+6058E70F81CE6246AABABF42CB88B489088460EC57B2EB400C47A80E1B37B8AB
+8015C6A058E5FEF761DECB1C26D19495912A27B61C6FE53FA1FEFD9A19310C6B
+079FA431591EF5AE9A23CDC08ACFD982DA7E3D65061DE21DF9DD51C35D207848
+A2529226630A319F25CA99227A36FF3FDA9BF9ADD505B39DBA5BF3CFD99462DA
+EE8D74566BF11309B6CB94AE4EA8C86DB37702A279359BD4DF2A247440B9FC70
+D985CE292515DE8F6CFB7D60030B44CB66F811397C68D7A587EDE2EE6AD712D3
+6E9B5096A8772E8C512E79A4E71EFB70551AB481D59388272E250720EE93CAC5
+38D4DCB0B50942D1DF0699EEF8305C509B56808F9B9F60775B85C4A17B9FA504
+2E7B22DD6801FD372752212C04BBE54458E2CAD1D417F159E7E2ECAC0AD76242
+2EC63437804E2FBB466F6C6C6F8562343BF7A1848E44EBE4A24CC98937D435EE
+34196BF6ABA7B0A202CE761F5CE6A6114F0EF8EAB268760C9C2DFE8B22C34AA9
+6BCCA903500F29877A6822A9ED4EF80BD896ECFD6D449F8F833337B3D986E515
+547090365DAD1E1841D672F7A4604DE3E6C96F057AD96BED34A041258BC0B530
+0E49B36D287E756D4E68C92EF8C98F4ECE38521BAE9D2CA68EEBEDA3F24A14F7
+C0F1A88547FD9B18CFF354CA4F963FA737515319D285EB43B632D4545DCD6665
+A246C3251F52C8FB8074D97B05777D7B5A6E3E12F5C0445A81886D3C3FE28306
+A678308326F8B26BDA47440CF9521D69AA533AA0EA4A4CB8FCB11E1A07D85912
+07C4F16D93514FC8F14DC401BDC2B827025564331E3BBF00A6B2C22477C4A89A
+5E74C5BB2FC0751271A297021360C49117E6DE0F0A386CE0F0F52909F9767F84
+8B3863DA00C9B99A2E3855335938EFEDCE6DA54E0EA6690D68B9C30476E686E3
+FAC7145C09E48D09940F3F435A75B69142572F4FB69A5A2AA38E00C6B2203429
+5306635A47DDC99324617D06EDCF5B1ED25085537210088970EC7A59306489AB
+F8D5FF84817C18C972337A564693BDF1B95A06EEF8EAEBBC7D00ED0B23351C22
+D84337C757597A52C2EE483BD135ACFE2242F27F0127AE9076A225FF6007D841
+DD71C3940C8247DAC21393C47294627C871A94EAAAEAAC82CDC813463D6E4800
+D12058FD859C3AC8E48AEF7A13CE4504F11A483D115D86B812E971961020FD11
+3E3D376386675A5FE01A608E1C3C7AAAE82F7F95787FB4C3EEC4B6C709E768C7
+7192B67DA962CB11D99AD45512A44E1A5282BE71FC048FBEC68A664A1CDDEA66
+5495C294925AF22ADAA5800D32036D69EBE07FC80E778B75C866C465D6233EA5
+E9DA48D7A0A6F962C49922EC96CBE4FBCFD519C12AE511A42F94C7CEDED3C793
+56C27AE1EE810E30B06E12974ACC7C7E6419AEDA99430B6ED8001EA3AF4AFC0E
+F6113DBEF54436CF5D5DE58C13998305F9FC0D519A268BCFD05DBF5ABA0BCC5A
+EDB441A82B0D52CA511D2B350690386157F77B44876644800E764A5486D19081
+6F3B2496F5EDD8F91541EC0D1E2B88EA6FD42D8639AFED7256F75DDC53DC91D8
+F9FAD34D7ADF226E2FC2C8B95499201CD8F74406580E7A02355D67DC6701E2CC
+6B11C94DAFC8E59A80CE95EBC0648108A6F8C807618E13F2BE4943535727E538
+35477D1F39C82E97C3AF66F5921F4B9827078FF5897FDF9BE4B5AC0622FA2391
+206F7152718C70F409273176D9566E0DCD77E4A4CC12B7A6DF324A6A757B35E5
+8ACF36F2446D23ED8C53F1A1FCA5FC298EF15E70D77AF75D50B79453F1554F1D
+C282BBE6B58DC045280A86BF5E80426EF50BFF0A1BDB0C8ED186765C9E3C0E8C
+BECDE2AA1CAB89C06C724910407CE3B700C593E41C37AD707DEFCE1512CBED72
+E482DC57A09DA91756217BFDB572D7F324EE1F508BC340336BFE31584F2A82DE
+14398FE0200EDB3A4297364E061E6649D4EFFBE4640B0AE6122D25B7990F5D9C
+483154312B2A326BCCC3070109FEB658A684EC173E88EFA5117306889D5565CD
+9E5273D94D6B49A1E35671E27D01A2CB6DAE52790D9399811107E8CD7C3648AD
+820A74A1B3F6680FB2A1F7C6DE142E497D400304E18990EBFBC567F850C3F1EC
+1D716D6A24B2FC7CB3FA94492F4E7685C932D259F59834D66093E033A7124DC1
+F5ED963EA72AA19726B07472E07AF3AC25327926192D27662C360E5C7B00E4C6
+D913E89C8622172C4A14DF036488705C246F67156C3816C98CB62F3C1D86D099
+5CB6914BFACD5203B876F33741C033A24220A3DCDF12690ADDC72D31DBE945B2
+BB4C0B3F0A2C3B0F6B69684ECCE1EBBE3037CC70059DD6E3777DEEB2B83B8599
+1FFF8B1C0EC734912F2820F3A24C6DDA965B7F8A363B501F71F6EAFC84618FE8
+46BC589A416CB026E71BE97EF649FBA66C54482E3FA15F9B4E5ABD2F6B461029
+211B2428EB1873E373C9DEB3311EED7C0EB7A2338DDD4F4699AB8346CBA3CDEC
+EFFC028220E333F80BBE687052C035C1C0A568BF76F186DC0EC21E38B0583E09
+96C385F5C1492769E3C9A344F7329B0272E2F4B2FFFAD9B61DE95E4DDCF778FA
+66A8BF212AF3252D4147F8BC3F19D798176C47F7CA8C9A3E94D417298F505E29
+4D43171922FA7F8412E12879F41161E3D4A751680CC3354BF6153A4DD5717EC7
+FE9820B2111C877BEF12C7DC0E8038AEA629AA6C1DC2567EF272417CCF48FB93
+0A2022ACC4A9E98602C2C10F628C06352A434D63D456399A39E48A3DAE77184E
+65B813E48F9FC2ED1CBFC8E1E838BE189D6607D9FC6963080E7517D17419D018
+449E252154AD17377AACDB252FCC355F00BC387DF5B665988BCD6770767A1740
+9B1AD5C0A84A9C660691E2A5ADD222C55A2682C2CFDB39FC696202246ED7AF77
+585D76C6C1B3DEF521ED4B41B125F30A6C95C260379BE84CB7D7357F7F18086A
+B8076AAEC9F68AFC2668695A3604A9D96C294AE3137C27501941FF5B23F46519
+65BAA0787514C0C42BDDBEBCA583383B3377D3B620FE6F37F9338A06C2635A08
+B7CC7A8E3BEC5E77740DE66367FCB2BA68990F51066A7D4A2706DAC419F8CEEC
+C9E11089D23B2E65799697AD11F023D386257DEA0D29758319CD3DA33980BCB1
+9510514CEE074AB9829A889A9E2DC246A02D4E9B433B0EC9980877BB97FC4E93
+1E322BA201501E4993227D31BC1C5BE85B8316DA22B9BD45D3CE2FE9AA14CC47
+0B26FA0A901EC93F2957E2CE9F10DD6F9EF845016328E8AAC1F4EAC73E1A4484
+04E37068F4115E607361729AA474675C119F64EE21A38CBCA5966A6B5E5EB044
+8F8CBF8D2213B5953EBBA629AEC8E061DCDDE3B9D15581C759DBFC62C62CFC60
+62140F6B21E4311DACD25283B1BA8B0D9ECD0A097CD2FCB97084134B67E7E539
+EC0380B332B9E031FBBFDFBEFD95F5A47DE16F25D8DE7EA159AC00ED456F2C07
+5BD391B5A5E89ADC16E3802AA778A8075A346C2FD51EF4AD681F1B2EAA9324E1
+DE1D679E42D11BDC272B3312258E3A82DB42F8E4419A38A7361CF038786470F9
+BC1170A748535450217AF5C71D83241282531B845ACC3F7B2E6FD636A234B2B0
+CABBB780C740A9D743984DA3E591076BED22D92CF8AF04483DA96D215E7AC6DA
+8F813D1ABA3017F8C07E8F9D214D9C6235200E29E3E9C0C139D3E52F5536D521
+82ACF921BB489F721FB6F817FB20019804A2B9FD5276F51256040400D4C027E0
+45C5733BD21C79BBF5D10DDCF69B627C4C7C0426B624BCE0C20533900A419CFB
+23413EFDB1F538D46F9AAD15D274418774B1ED955CB2559FBFC6DCDF50D4C537
+5449E4098B069FB8FE21FDE02631D7BF0EF04DF7294D065BC00DB1E4ADBB4AD9
+7AFC5FEC13AEAE111A089F4081B167386B68A9E3074E433A66C1868F5D3EFA1E
+23BDE9ABFAF4E2E960B7F9C56F06093B76E67B53738E46020AFBC3E40F014F12
+327BB41136150B24D6962D56ED3E59CFE74F80FEF284378D59AB8CE97AB052DD
+017D9FF24EC7A8436E7CEE11FDEC9557CC21920645E8446C3F2908DE1E0662CF
+3F224DCC5F97A5F30CDABDA80DC3577DFF16A39CBD7AE72174528031B8EE393D
+261922CC6A540E7DE1F194FF0875066622D517C17DE1DD910B51B4E03B2D5271
+59CE99A289A31F1840A32D1572A5A60AA5A86784C94B35D031A9F7FD49F697AE
+B480746D738B70CEAD909B279445A5F20FD29FA9075BC0116B33BAFFAE518FFC
+749377B143879F46BB48FB564D51DFB7F5DBA6F3D112EEBE001C4A5A4E605097
+BE6EA585854CBF30F2842D69A8CFBA29154473BAB1980664649313E454AC5C58
+3547D619DBA2604A5FA0238772A33EC5CCBE2F069116D8B382FAE00F552921B4
+531314FA666CADF586AC294D40E7E681589B73BD1116EAD917FACF5713942C03
+7C69B88A086E1AD91D164DFF0C08BC7139491D36C0CC782DC150A6342D5A1CEA
+80C76D63B6C37CEA9961B871A7D270B66D0B05D0DB07DC6A6FAB46ABB3665CF1
+32BA793BC11B7F73E1EA8E1D26B1D6070544B687E704F1999FBAABA9326BBB88
+2D91322196BFF44298774529009DA9A33B9D14E712C607F0994B3AFBD9011415
+A723F061934EF2EE77CFC6396A9DA6BF18A0D298C7A6C68727EA2553CA39E13E
+98813DA1A114CEB833FE98491CCC354989981CAA876F9E78D6C750B02BF2BC1F
+4536CF7428C7FD5BE56D02AE49029BD2B8A96D7A0C6BF3B05610C28455360976
+9C8B306B9ECBE42B4808BB3A9D36E345F097596EB97DA5E22E51DBB5E910F9F7
+17A6E28FEF9B12E0D02A1E13C1FF687B0CE5622C815F35B2213A8E288A566823
+B90C23370988F78420AA4043E1864629FED224E8B58457CE0A49F58931D9FAEE
+713A8CE4C7852A0580FE62BEBDB20D12C704B503263E8D6EBD8F93C77D491FE1
+428D27671F1D72DDFCDD1A0837A765B1766530F94AFEE9B5C9DE46BDC6C9173F
+7E7B479C4220CD777559B35BCAF212459B68F4770825617AF932D714F28D113C
+B7D44904732A67C2D50EEFDB9EB329F43A0113BEEBCCE178E6E717DAC159D5CB
+BC96B4C50AE6D4DBA3D55158229F6D97A20AB1E45AAD87360072C18EB3F43244
+AFBEEB087F7A4987E5BC015AA048CFD2D83DB96AB6B5746DEFE533CE8481A8A8
+A19580300B2DFCBFC5E12CBA1E3BA649EB66FA725CFD02DF87B8EA185B6F4D6C
+205694C15CC26A6D11F318E0186D89FFF17932E5BC951C0458F80871919073F6
+4679128370AA852F9002026F494095F069D5000850910D8513A0B4E2713E9A49
+2DD5E7539E7FC1AB9D5B572E2BE096F90D8285E533B98EEB25A67642988EE3AF
+C8024AFFDEA924C390952BA44A84A94B36F37BACE8CA3719C4584D509CC0BAEA
+F438F87C639953E72DB2033522EDDA21D2B42C6BF884BA9EAC67246A4B8A73B9
+CF7F43BEFFEECDC7ADA4974F958026DE1AF7AA232D816424C1AACADEC195DCA3
+E7AE83E61A52175CE6858CDF6EFB880A7D224F0C13A21390825403A4681A074B
+04AE6AB5FB0C4A146951CEF5478B1B32E1D84640D11AF5D139101547E253AFD7
+B7B9DEB57D631C9C0E972B592277BB2FF5D95A136A7B0E0ED108A8FCD64F18CE
+630496FD8CB69AD6D80DF902FFC227A5BFDAE88B7C358FC4B3DC8098D5A61F6F
+CE4E594AAD556A396B7BB5209DA21553318B7B911F5F7BDAA4DE068C2CAA4B65
+6AB82C9F4397B0677766EFAB0BE5C749D78B8A6438AD7563052189FB60C7E8A0
+3335FF01CFC124FF7D73A9B0AA469D3A728D73001208ABF90D950271894F3D5D
+5ABB72BCC65D90459F59F72B67312ECA5B94337E884413C813C3E1081D6F4495
+EB8447C4CDD0568134FD4043DD9ABD8E2318192F9DA8BB39AC22F5DB70A0BDAE
+F60B85431F4935B728E16E1E331C0041E118C20A7627CDF2543732DB38E47369
+187FE077A35C8B94333588CEBABFF0E8E51492AF29454D6A6701339AB87784D5
+2F0FFDA934984AEBC73ECD964156794614D87E8CA8B13DB155273E792A2833B8
+17046BFD0F820F8B0DC1BBAC8301F7ECB07B8E9ED94921AE04C2DA26E6CFD353
+3AC372A77EBB312DCA7FC9B03860A21D3C8177A868AD3ADDBFE13B7343FE445D
+6E2D241BDF5B176B961722DC335F5BE9964ECD43FAF947D91AC4CB7262E8BFFA
+55F9579B5CD6919AFFD8C11F8204F38626C9CCF541DB9D8DA16149B911FC1234
+AAEC14F7D9153A22F8B2C844D3E8EA389E3338ABE56DCABB344A7B5C121E1E80
+BE38DE6F5EA457DB0558BE5C94238FB3C2150DA3825ECCF3A0F1E0D215323EE9
+429B2481A931CFFA96A383EE1B20CA02C4BD7CD2ED574E69F7D6CF1D408A171F
+AFFBBF57835635D1187C48D07FF5E1B25BB9BCAB7A3316B789655122629FF5A0
+560DB78C89D82C0772D8919B3E7748D4CD562B9EB6660C24A79982F0B03D78CD
+9B13C20175AAC320489D70CC4604694D39853D53402A79AD8951626C4B30F4D5
+C3D46486C72283698B1633FA187FB01659B9A0F368DEA848299A8C33DB0239AA
+F6A7472CBEDAED327E2D809C5F596A355A6E7F6D93AB7C3BC6E15C3578D99043
+956890A23B46A7DE5BE56CED401BBCBADBAF297652114CF00839F3FA7ABF2C9F
+CF02F28639ED6BF424CA843B40693E3ADB057826C6559F9D335E1FFD591170BB
+7E5B885C03F6FD05E0131DC6F1579F6FF27B8CE2A84ABAB2BB7AFBE6B6014997
+8B134A6D47FE953BCED1091822C7E35A132863547F07EDD1A60B4790655B7FB2
+C0C6D36EA3C8847EC0AC732E2C860784623D8BD2DA07D8882CDD68650D08F8F6
+E4908EB944E7DD2F120D894DC449A6453A8BCB960EDA326C577EE33CB0BBADA0
+3C3987F804745C1C1FA648B3ADA27E202F8FF522DD1C87BD05E5982731DA36DC
+CF10D8D5DD6BF090689B8C5F36E48A5AC2454EE187C691761AE58CB8CD264F74
+50776165C58DFFC960CFB68F0A50D39360FC7C2FC6DC1AB43B1CE79A04FA0B32
+FE09C04EED4B52E240C5D28314D6D049EC3FC10574740B4C1222E2F40DFE80EE
+96753C3552DC7877DC4AAE96D35838D3F0BB530EC99A3493780E6B824089E728
+311772C2526A6CE83DC95B10F38D7107C084E0EE38CB2755669F4A784EB2943E
+4785275DC68B2A4F21862510AF7BDEE0FB056B0448702C5E781C8D595B2C3215
+C7AAE06DBB6C779DCC0EF8A645D6B2BFB15BAA45B12813451B17ED0048AAD4F7
+396D61B47241E7E1E10B5204E612C114033557476E31B5B0BBC39A5303CAFF82
+8702B694820DD374CD9AEB875B4E2CE3761EF7C19FE108770F0071C99573137F
+1A19E167A2C0410D4CE779E3874487257D8572FCCD455214C4E20194D8C1411F
+E0A856901AF5E122EAA82D5B03626A1A3D9F25C3BC229A893B25067965187AB0
+1138B0897ED3B234E8AB8A1A3E03EAC6FD7E0096E0BB5F12F217454B728C4E2D
+029A441DA211A85CA97A1817253283F936979A2246E3DF44FD2B9FE2AAAEBC73
+C7EFECD7FB32ED53C9A25C1B8AC3DE43BAC81856783C502C95D8E25C4E550397
+0FCDBEB5CD911428C2D1386EB5E3665A024F2F7D331CAACA8A554F6D5C91F2EF
+69559615527E7CF74D8BB692D0CF814695F6156BB070D6A6694C42A829A95D19
+D4723C4222EEE0266BB0122F610EB6E375F3A762EC5B8D75FF9865B8863D7158
+A448FC70ABA1350AE45692F20EDB6CBBDA98AB3F586B02C52AAAA0E3926E79DC
+C752813C53BFA759D6103355F079D8EB278F2CB78A5AF17C14DC43203C72DD0A
+401A9F277E279174DC8DE113C5C57769AC0B4E899FDE66FF261885703073EA05
+6A96630CE170D13FFAAB84D8DF5B72F96D2690489671D66CA3D3F640846DF5B5
+08A340465805EAA2CB5CCBBBEC404450FD884F1079DD2B518046FF355D11BA67
+ECBC6DBC77F2B34645F8C72B56779B34FA15681E0A8B193E8B8EE5CEA8591C03
+6B1A2A9471B8265ECFFA8EA0039087E8D6EDCB96FCD8F428C81C7605BDD45DE4
+2EAF422807F36D656F8EE90810C990151DFDA77BE22224A2DF2A2BB555FD9133
+C66FCEDE73FD33330CB8FF978B8FFED25FCC5FAF9EA60E139F1740B5191E457E
+15CB57B84BB8913874E39BC9E56791AE6D34920FEEEC4F0ECBF3CF3B7CBDF443
+FCB2DB6D80DDF2497A62E26EA64BDDC148D8DDC9ED8537F749A2000EB4E62457
+22AABA75C3B7F6604482132950B73A8744A1FA31624F6E3CD08EDA651C0DF6FD
+74105F4BE188574FD4140B98932D0969DCD41855826290107F3E6C36D64A6B12
+4CD04EEF21D234D799C28CEFE03F1EB0C75C43F8C7C22477D0242A172E7EC2F1
+A02993D45852841B395F367EC77A24D592C20B4DE8986D9F92AD3B59DAA7FF87
+E991835823F2EA7A3D638C46A423BDEE7584DDB6B04098186FE196A65E330B34
+C6FB5F5F6D61DEE4A47D8E1A51957AE6C3F09F80A3E2B72F667E1E76D689A21D
+4FBEFC07751D50A639020F11019F467B067370B5EC9E60A289B5F364320A5923
+C234D2269F60EDC9809FA5D5869D30744EE1A35391DBCB3D9AA856F0F107AFA2
+DEC10C44043D812B2AC72EFE3EF1A88C8D2826176B857CADF5C11C5D81C7A46F
+BEB4CED58C954771E4C9C7B4E49CCA9EA94EEA1292812BDB0909B2B52C5A1449
+9B6A23F7DF81A565187AB4429E6FE38D5BF910304B2B6FA02E0D08BEFC6B9BE8
+A75A9E6F739FB3F64254138559A5A14CAC5495E3CAAA1DD81DB91317B66BD3D6
+A7A1833B39AFC931BD7563E2857E51203DA55E7626DEDE895B47E259C6EC964F
+11B396F78E065A02C3D3768FC7FAA74A715C18D38A63B8BD64D928DF273B280D
+CA06722DECE0BF58A69100C903478C2815A9EFF6CA2293332982D5DF18C14C2E
+912571C2442D965616B81F7ADAC4A0643D73B806D11703E0017B9C8D4490607A
+29B23D9F3F8ABE3D9276F0DD73D7B9356C1535E147EEA224207476879CFB99CF
+07DE8F6019AD6C35AE5C1154D573D491956BB3C3151B057BDF788B5907AF2A3B
+5E90CBBC343077224FE12DFF4D64520F253761CC08EA51F57C6D933CBD39B6B6
+038EA7600BA094B46470C07CCE4ACE79FC07974872AD65C8C2908775FDE40A0C
+FEDD45931D0A7FE3DE0722D8BB679F1A3F1E6612812C3FB0360575F38C9A603B
+6CCEA66783C1AEDFC4898196466FF0D01005906CDC28FB170C308306D023657A
+81B1EDE75B8343C0C5CF82811C44998ECF6CA249C3CCD2067B0BBF83D820E3EC
+A047A7451F6D9C5A63CE5426CADF329055FA71ACA99790903381472E4D54FC39
+4F150EC9C5F19C7D9924F90DB504605E6AD0123F65CE47CB0B2FB8683291017F
+337337EFFDE5A510E90421990AE3FBE02F47FB8DDB3FB3EAA9F062C801209A6B
+73AF3D0E6C3207D302081508DFE9635160873AB9DFD3CDE4CC1D2EF221E43BAA
+E1BB64E175BD5609CCAA1AE89EBD7332F4E4DA5BCEB34720D7CE8B3619917883
+0FFFECD917C74A6FC604F6CFF0D5BD609A444B16C1622677ED437DF68B1915D7
+B46AB9E6E35968D966E3361BA90B6694C8182CA81900D028C7825E4BCF1CBCBE
+362A6E6E404D0CD9AFDB6AF9408B816DC713E682EBD906D19165CBC58EFCD0EA
+C75A430384DF868BBF99C85AAF497D20C1C4C44BCA5F1F0189822C0E0DB22286
+C4DCFEFE23A2B4939DFBEA0D96E6B6E575147635FA1F31C44DDB74A482F69352
+C4B666FDB94BB8453DF3472BE66C31216ECC3F682DF022C4072C29BFE203384C
+8861F1B9C37715B1F63E6669915E657E645A15EACF749B4A20AF60A9A3DC6E68
+C6C24AE640EE24B53BD2958DC4CDFFEEBD555FA1FFF64DB57036F73C78E9CDCF
+4A7DA2F7EC0FBD5A9D2F3FDA22DD3A536106D5790399C255240BFFFF51685673
+9FCFDC620BDD2616E96362C10CEEBCD628A8A3A5EC32B50F6CF5BCC85EC2A2E2
+77BE93049403C5E01E15AF4BA546D85D2A501E3D37EBFA3BD91A50E4DDF68F06
+8133EF263F27C1C22F05AE00FFE199020E92865217CE8AC524775022071015B8
+D898989BA6624585813A21C3DD0DFC855DAA95B574E6A590CDF3953A5E64DF12
+887B09E24144AF02CA48C7DFEF5DD008C7BBBC91F3CC6950462722D7049A5CCE
+E2BFA459DD67244275C9599DD78E3CD11CAEAC3422D6216DDA27A94C563D5CC1
+834F9610B28A0041656B0FEC8983D72D5ED0C91FDA32D778F545FD996BE51FDF
+A548708D46A908CC0AA2809B45D8F84D50B3F7F7E6332E694B4162E9622D1937
+7E413BD3F00977D38B3A81CC172EB29BC830763D48A4DB5A4EB3FB79453B7512
+268ABA5FB487D6E426B86C1A9B49487F389D28A7FAC85FF65372CA0464559E44
+CC8E8EED91DFB425FBEF17B0626EC215A21F2B89BF644A661C3BAACF2990E97A
+9867179CD5FA82CA52F06DE8C62AF286C3C8374982F1B6E4576A5EB1FFAF7567
+81E4633E3CFC62FA2C043397F6899B1FF0083982526A4C1CBE3A2B52E44B368E
+640292F3119AED62E747808FB96A36F4660BF04C46BEDA931AE73A97C0AA247F
+05669132DD83E5E531D5B5854957D89C6C6EDF615F0A942F5EEFFA27A26B4DFC
+F305D32BD15726C85D2C95622172BF8FA12A4AEA7BBDAF4C381D2A656D6883EB
+0CC5BEFE088E28562EDD4C6DB3DCA58D1FE445BCFF25418C6C7B1C208C13B22F
+77170A385D5AB647DBFB569C261019845F6E96A024AC1BA9951C5F61964B3ACF
+66D2CB795C426288EB73B67FE1A1DA7DB94FA128FCCBB41E7B7DE16EC96BABE3
+FA63F1F3EB37258EF26378C38EF0054ACD3CA0AF85F29AABA37947A3A9A0DF05
+E9A35602687DD9F65740A36FD7434C9710E606F1E52DEF3D159F2348705CFA38
+A806322FE998CC0938DF33948027490BC1640604AC6B33D50D7246136DC1ADCA
+7C21338F2BCDC6700B7BA93E9AB565BD324A39872728DF7F2D2388BE9969E26D
+D3D06C2D0914976E63C40B87E2EE66F757B6D7E9038F77F70B3DE9160CC66AB6
+7EA6C9BED2B744699663597619C75F2725DBA99BD23C453831350FEEA2CE697E
+24CABAA4783B87AD4DA8CC4E7D8CE49AA3EC4C0D947BAC3FB7A29AFFA7D7E21F
+F76C48F4293A3EC09E90B95E79863AC6913BF9B8FFA3B64BE7450241892CED7F
+8408CE8B37EF182B9709B70DCC1C56D60FAECAC1823DECAB7834F25EF6F92FF8
+A88024018B012055673E1E1AE96856846424BE977D5E2391E681CF421F9E8C59
+426613FC9B11A1E74CA3307FB4E2C9F8A8FBA1365767FF8213F65AE16B1FA538
+E20131DFBEAD359A9B66E8E0580057D10DAAE6FAE824F062BC8A5B2E92E4F9EF
+7A66EC864B3E9035CFFABC5DC951B0A0EC28A17DF908DBEF74A4CAAB716CA651
+A3CC954BE3734BB41A5926F0AE2FA13B2301EFED79AD14B41B69A2266698C431
+A26D4D9061578487BAFAAC24EC62FA64E98DE73161D6598BF390FC861096FF22
+81EDC90EAE8F81DE832E4FD7E42A01F4E44D5AF8BF62593E7DD7DEFFC25D37C2
+F25CDC47F6D0A2368BC0F6A3AC86C7D011BD62C95CADEF30C5CCC0149BA380F7
+4714770E246601B2804240A8699DCE88BFBFB8173E9CAA917A2E883978F5EDC1
+144AFFBD1817AF97121DC66DF0F4A690620EF80E3ECDA7CA4F21E3A669AAC0AB
+84ED83EFB39CDEFC01C82A75ADF732487FAA5252308245A4CED3FB029BE8D629
+674C52201D8A7A6CCE4204D234EB11DFF592A0EFF39A1175F8946018D9A7B4E6
+AFE1310C534B419E1E22C40A015EEB1FA0F75672AB5D870DFC246939757548B5
+43C4DDE217C436C617EFFA273319E420A28697BDCF988CAFA5A7D1CB18AC74E9
+B3FC568DB49F97A341610377D6585C0444BD272D73C6D72CEEB601DC8F39458A
+03B98A948E89CE15E6596DED91329BC248D1B1DC5389DA9FA12F457A5AFDD389
+CFFB5B5E4F4102AA66601DEE2991DB182629921E8C32683BCD6AF216A2B14054
+F4F31CA989592B429A94662B37A969560CADD0BA02E63BE7C73BD813997C79E8
+684DE5F9BB7C18EC19EF5F3EFC11ADCCD56D454FFD2AFB914D89849ACC7A94BD
+E2B475B7BBE434E66F99F720D2C27118DC12C841509590A0963AEF4E38E57527
+313AABF75C7F557D14175EE0B4FC047F4897FD0406C3683FFA365EAEA8DDB6C4
+EC77C47B57D2A4C15F93C265899157DEEA790761F7EEAB88784D22DB7C2838E8
+8E3F1234E8676A524E74A1B84869FBA97038F6AF4A27D5526E74468050D8151B
+E46D6FAA8C04C4886AEFCAE0538A59C85A50952953F798E1ACBF036A32347856
+4A2995DF127236C87E0280F9B72C3468A5476D773E50AE89B531EFE8AC7B571C
+18CCEB07E49E705FC805B15752D12E2473FD582A8D06A23E1C8F1B87423ABEE8
+390FB806037CBAC52D7704CC7E386700C6CB5C9A1D46840AF2A628DEFA34CC7F
+7434B93444177D4929BBAC35B12EE4D01FB9981D821156822B47B7615BA83333
+611B1F6147EE47CFFE8D7F5FF04CBDEA17CA70B928D812B37828B78E72E69439
+A0308FAA9A4615B5641D9425011899FBC40DA6B5C84F03A253468F90BB926348
+FCB7CACA43499DCDE02DEB32F52E3AFDCBF49DEC1099C67DA32C8AD16D1DE524
+D6332E8F31BEC975A47E79AFA253994D0DF5B36EEE927BAFF88A4FA9996A7943
+576748159A0C4175331034AE8E44E5462B454A4F55D8B8735D3EE2EB3705D3D3
+0A287026BEE241994BDD413E35ABE8283A9E419233E316F8504FE5D531E12484
+94BA7F9D85749BF297FA174DB67DF9DD1128DBD9867F8AAF8E52B9CD2D3E4B41
+5E92C10191448BD281046223DCC1E91CB59A4204B3BEFBD60DA3C3888DFD11E0
+F99F6313F7EA4422190B5A0F516874DFF10CA5EDBC7EBF23A2DED06F9F16C7EB
+8148D6BE942AA2C1EFFB13C75C069390A683059C0D6ADBA9E27AE476B43BB341
+00EC4ACCD3006BE0B12C1EEBB4FA66646122A3D2552D8CBA8B0A96D090800CED
+22DCB22763B3256EEBCCF4BDAD836782710AB630002FE24E1DFC483068103EE7
+94F225EAD78DC3C445552581F877CDCB11AA8F380F6B31D7D465FFF7CF17547D
+98D495BBF383D8AE7C44ACE65CB15A09C94ED54D94093C194AA500C9433EA048
+157C21E34267C1676EF18B22F5BD4ED51DEBD2908CBA51F6D9DB4F0B6F86BABF
+131F1D2EE44A966FDA10CDA2C3AB36EA89B329E7D974C1CDD5BC0F413F1C22BC
+BF33ECA3A2B2D8A5353C68577729329FEBCC31E8E4DE19BEB9D8E0D16272C925
+F2E4F3B798A07F0C5599C8CAEED260743C0C7767FA57B505584B30C751A0A423
+5C68B353A6C8055E4E3D0DFE631F2D5CDDD1B6D3C122F361A093B08CB0667D99
+8CB6B76DB11087A64B1F4329DF39F599965C6F827E53DC5697CA9C852C97116B
+626AC8F5CEF457733D6EC4D3876ACEB1CFAF747DD866855CB12F8D2B6F70392D
+55DE07C6D07CC22114
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.1: CMSL10 1.0
+%%CreationDate: 1991 Aug 20 16:40:20
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSL10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 13 /fl put
+dup 42 /asterisk put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 57 /nine put
+dup 65 /A put
+dup 67 /C put
+dup 69 /E put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-62 -250 1123 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142
+08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C
+30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF
+C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A
+BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78
+5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D
+43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1
+374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23
+DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4
+B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83
+63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B
+89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A
+5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2
+C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5
+7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B
+EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850
+4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5
+7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40
+30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9
+2E080C10DE923C18A9F0E954B2CDD2A47766760B18BA76463A1B03BA5974D6C6
+B0B2A85803651BA403FDEC112BF35604F783099829C4D22A73654C00F407D36C
+0C61487BA5E72FDD8D41F6CBFBC4D3B4AE631D6E4328AADE2536692822D2D91B
+D5AA15530AB49F00D62A6FF719C22144227BB63A19D88D648CF92C5D40C3C8F6
+BE67CF57CE549C05C79488F8C49692F8AD8F2B4E0CB5E6EF25BBD6F6EB99DD62
+581FAD2AB1324A5998C5F510F9B94E625574153B1973219495C75C5AD324489D
+25B8BDD66182F7A2408446393A21B1700CEE16214E0800D9FDC7A49CD5491798
+EFC6DFAC756E3F4623B9EFE0C58CFE01CBCB54A212C39E84EFC05CF3419F6117
+F136A26001586493B441B825C0CDB1F264A55CBA443BCDAF8BD24C65C41BA504
+E8FF070C502998068714908443B79F864A5B18D5C3B97E0D7F3E9762FA2952F3
+6FE89E81AE05666444FEA875BC79194552C79A7E76777A385BC7CA1227854AF1
+189E05BA92036059F1DEEDCFD372F83F104252766EB583AA79C127254F190871
+79E42714428063ABF47575C79E74C7F6A8BE3EA25ECBF8762B380576FA012162
+15EE389236850B67235024FA77E0684B49C857E40A04F15B6E38334FFDBCB85D
+E58E2BF343ADC3DE9F93B2366CA9C6F6C6BAE8A895A9FDD3B28B39865B223182
+D14266AD9687F8C53A5DE67449A7467A30E28FE327CF8BB29E6E49844D55AFC7
+59E4D510CBB3036A54666CA55F59AF1ABA280C3B3718E756F1CCBD5DB5B4D29E
+CF666A95DD63DDDB4674825A1B1E0621929AFFA4A1C5E80E89B60C8ACF2233A7
+393EA28344EE66F6F1265945DAB95531D7743F951636DABA81D096A65B3479BF
+26E64F5B54CFB1D2A9C649482C997677E603B82659E8393F46CB71C30FDD5A01
+B12A9A18FAEEE68928FE51AD5401CA760ADC4349657E102C114ABAC0E396D9C8
+7EA1764B3C7DDAD73B4EEC0AB315517DF4CDD3593E2B4B69F371FD7AC5654C01
+382D06680FE0BA9663EEB766B229E25F9F23B367ED5432F8895EF03830942D88
+02F6B1F7CB27BEF68A56C444A4450E6CC210D921EB7FB070C8FE07B4FAD0E3E6
+11E3D69F98F63F701E21B612424671AC79C7B8E423BCACC61778A5829E2F9D5C
+4EF8E3D2EE3D98F3C284F01CD541C48F2496E144C73882378732F19EC4E02632
+9E043CEB548A1377A28FC609A6B55CFC81C7B5F5F6A3EA1A174C5A50D5BAC0B8
+EC8BA2D234D15E4310AB267A1856FA97F90CAADAD12C125ED65C9DA079132C70
+188BC79058C8A36653035A48E140B8B1AA35DD004CA12A72D02120FBB5CC9C01
+942B607049F9950EAD2F7445CA50A2A1D145E30FC73E86AEA55FB80B73BE75B9
+FB413AE5859BB5275075BDD2882FDC1E4D85058C574648392D6CD13449C2913F
+B0C8726A898D840AE68F7B444941A0727DACA168669A1826A566C8AB8A4E561E
+80A434F3003C627B64E75609B5F8CC05049571573FFF298767F035C7580143CB
+69C8DE4F52F6D6610588B27AFF794D50AFC6CBA0EE7928DB01FF2DAFDFBE0AF5
+BE068E92A8D29FDA8D2D0383D215292F567C6F4BA7E9BA0E7BE3469186770B02
+0B360986BBE0726A0BE8C121E92200B8C01CEDC24B6080913F17ACC0DDA342BB
+183F59487E45102DC42FCF492774595E1F2FB6A5AF2E71AE0976BFB1D558CD6A
+86AAC975962543E2CD977AB00F9AC742E8A70AA886B3511EA99BA61DBC15CDA7
+4F1E85F26FF72107766A18621FA01DF36A7706302AC43677D59520B607234784
+EA249126AB9CEA68B5F2EB82218047F783B49BB82EF2DE182C29CEA33AE841EA
+0A9826D206E65E00A98451325113C8563C24E7003225460C37018FBAF8253F16
+B7E5962DB5D31BD7AA758D9C0B74BEFD740FE04D12397B8C83DB55CC88D9DFDC
+4827B6492D4AE67FA402C5BCC7AD5F60C8C37E038092CB79EB5C7C195ED57B0E
+1788039EADFFD0FBBB3DC5BC4257F0056723700E47B40E818A4EB954A8C24DC7
+57B2255437B89F3B0BC34C2E0096C3A660FE483D332F2FDD78AE51B3562C731C
+D9B0AE2E0589C20E9071CB9DA9052A13F493E5D2FC7B3DA4F25E80DE9D917C59
+67DD803E72EDBA97BCB5360DAF0BE68D31FB4F5B70B621D3E07E00A95B813D7F
+5F39888738079370FB7EB5DF7DFAC38DD019997E368B83634D4B32F9C7DD6131
+E70FCB84A361977066A87C2F0FEEDBF8AFE021C2EDDCD7102E21062BCF4303D2
+E0858B762805DA107979EE84781B5D2EB9AE67E599431C2EDB1C834B397CD26D
+6365A249D3CA70929B443DE027DAB5BBD9E9DC6B073D8E8225F5C3BEE7B189DF
+14150F3B26324AB8D2487C6DC0A3B707B401DF7CB026DC95CEF9C2FC4B9B5ED3
+D72D98F1A49EBB5848D485B469306F31AB582CD9B2806399A4440A87D1EAD458
+24BB96332F6B01F8CED714EE8DE6FB0C36C0BE8C881AD9215B773F552ED344A4
+553384F842B0D796AB2FA18C80611271136731B98D35736FBEF23D6B109B9C9F
+19F0DA222B013365EE56D3018ABE530665BF403E76B94C1E514FEA27AE8B5A44
+55CA0BDCDB2838B9C7938A14F733B2000AA4C0C2E7CAFD86F2EC23F991549127
+BF197F900A0FA7A691E18F0CCB064C8E2B1258B48592896873A71E3F77430A59
+C077EAFCB47B2847F980EDF4BE7D42F7485DEF63DF43F1D8276CAC0DFD400BC5
+124DA4E28443DF89DA8E743222FFA045555705A2C9E8D0BC65BFC2AC49EC5D09
+5A5BF031F227D4C448A9945795513C2D69F83364C544C26111123950ECDAF20B
+981BEEADF7E43170A1977AFE3950163B0872723D1D3460027D2C847C3D6D629E
+E3274F212345918038E3118B5FF097DB6CDD30544BDC0A11C059BF15C3B712E7
+9E831FA7690FF4C10D2496BA6D3F217EAF61F4B7298867550C266DF821F5491B
+4CBBC911390447BEE7C30EAE8FD8EDAD09DB7977B62E3955F04D00848647E877
+EF771A4757C09DD2115F041CE322310AAD0C1F5FBEC8ABBCA81018531BFF7E3A
+A19995CFE9FEC5220A9F486143F77D1FC340687F69E2760479712E4FFDFFDC6C
+C7A9305272A81B9269533115648EF5B583A142F5C578CADDAD311ABD410FB75E
+72757BB937BC92BD09BB1D5E256B71BFC3D3E47FFC4767C0E66EDC934D9F01E9
+94F68B5DD56EE3A3D698C6D6C596ACBCDF8088F706DEF0A7648783D8D44EBE9F
+FCFDA50A3087D2CF00C4635C648751B7688A2578E5946E72181D92BB1565DD85
+CA7D809C32985B9BB591933E57BAC7C889EF6642108B1FFA550761E77E35A8A9
+4E2016980200048564D5A4CA17F7603C3AFBDA7CC5DA042AC047281DAC2118F5
+A5244F499C8EE13FEB0087D1F37B478388EF8E43AFC33CD06D66DEDBA387F298
+29B3239DD4AE2230D9FE4C2A36DB7E56B0FB33ECE4BA44579E254D39331CCE1D
+10004E96142DCA8A5651268193DE533B8BB98EB072C99B174885914E8C0D0AC3
+FA3F5206BDE0A45D52FBE1B20C95D055647B8F0ECA4709185B870D059468355D
+F7151D75A0B99C7EB7A2E663F56F92C74402B02372BDB58FDA1417F57311A33B
+65A5D7E7A98397698C612E99C62DA43FC5A3DDD3BD8732B1B7509605511FC965
+BB7FB9ABAB8196A595C7B9CA643C588BC5887C45C9316360410044A7CEB44025
+7A3119E38E97CE78809F0164ED1CA315A424C7F634CF0C5693DD0E392E69FDE5
+4B9E4CDC0C9F081108526A81AB3127B6E5919AA4F6756CA248E221BA3EC18A74
+D84BA73E076B69F32B39F09ADEAD334BB2C66BBF2752DB34656CE9092D94707A
+ABA67E48153776BBAF86FA2E9AC671EE9E1AA0873B0B25C5CE737EBC36872909
+12C57D83BF26A445E8B5699FBB2F0EB8E898CCAC414F3AB41BE96C964CDCF422
+051512D974D8BFD0774312A3009356DC7A36CDF7A4E785C398991AE5A6CC0F8A
+4AFAD63CA90202B4254C3E79FB7558BF2CA032C3094103AEE0B69118B05D9F7A
+C8642804A2A41F059C6D8AB6611E313B684939A37608A285FD8C23F9B450300D
+5CC9B500B37261CF16F23AA761A65C5925AF88521CB805A3BD5EF454024DCBAC
+64BD704EA0F455D49D5206746D1DD4662E46083CF3200842323F5683D7168942
+E65BA2D4DA0C082D5B04693E166B353D55EE55B7524E2D6C6D2A038788DF2E97
+2C279B04B25FBAE6AB0E1614ECD0EFD391AE5CACF709BFF7B54171A7BAC9C086
+8E92FC76789D55F60630E735079E20991B2D601C5BF7DA054AED37522C6C1395
+F9B2E37F15EEE0321A2A5278969712E76A944F539CB708F006926B582D7F682D
+30E21521BEC47724DC5A9AABDA94AE66B79A05B017DBA87F8F50F764CEFA37B7
+B5F113204E7495C3B59B3CAB0C3FE1165261F78391A4E4C7F30096095FFB6DEC
+352A1E75F834E6F18672666FD8BAA66C3D6088136E26B3D22C557568D14A4976
+37444BA1AA0143A9AF2C80E04C852999157289FD31B02B307B615F551A9A9FA4
+828860E130345CB35ECE3029ECE50CC9BF98AE2365DF70AA5C760A296039ABED
+D59ADB94C0F71038887C5C23B5BD9E6EC494E0F54647451D2F1E67ADEE9CE39E
+D28A5EF8488F94E9D3D13C788E8CFEE8221E1607B25B6C426ACE110A9471A158
+72352506183032EE559F33288F22E9D85BE1E8815ABB8FF33018597CB727AEB2
+995871A2717D0922A7FE8EF55E4F82A541794E3245ED7E4E9398697680F9DED8
+0B3AFF78885637FB309884E6693374E76543C9831CF968AD44319B9B96D1D88F
+54D910A68A3EF3A353D0CC1C3583A724115C3BE4774F66FF7C6F1C52205FD5BF
+4EF3F8670C28E1208D336131D313DA816BCA3CEC3DC52D672E6BF42748B2C20F
+071766EDD1569261465C1176813D3EA9220A8A4E41D2F3170DA7FEB9B60156A8
+CAD278B9FDCA1E8D91742BF591340F1610563BE5678A8C024F4290D4BE13B11D
+55FFC8B9623404845209E97F24A62EF1412CB517031AEF1B90D18B305A337C97
+D6FAB04012883D1B8D38CB3A407E451C301451930BA6A8D79414E58FA626C9DD
+14B9AE31D99AA5591A31F08CCDD34C3013F544A3FAB7E6B0EC2A8A420A436651
+33837EBDF638E5FCCF2BD47D27A8E75AC0BBA67913794F8856861933D605207A
+C613CA03ABF1894FB01C97BC88F4ACFFC93E832A9C1DC6496203C5B965EB0422
+C04955DEA7A6689821AAF0A489924EA07F80D2A511884B6A9F070BAA3F56DC4A
+733DBEF4796C0053B4A3D9ECD45EA1BC941D9E1C16E3D0854481083A26FEFBD5
+BB0DC639C03039ACC86A7345256ADAF7854F9EE4B9C0AAA5CF92897A9E3DF029
+92F379B7B73156BE37A246970883CDEED03E350ABCD91E5919FB6B317D65D3DD
+4D6B963C8DC138FE22EAAF18B88C5AE497342F40BBD6BB9CB8F3C88446ACB926
+1AD8E1FCB7BF4A492AE55B7FF9B784EAE8A822F794DE4039220ADECC5A058A0A
+2892E2933B25CF434BA39289DDD25B03F38923AE9C832DB2C690F1F055FE4BE9
+08E66AEEE8E9C13735BC28DDA341CD71B615C3ECA4960B92D478F8B351850713
+432695987E12B201599B70DE7E59C44451A0B693B0A4CBB63AE6FE42C8ECAEA3
+9F60D60EF5DD8CF6B158370EE35487F5CFB54639094689CCFA806233D837FFEB
+D9AA22F59FC5D11752BC8F933559AF0B87E5031A43B217A789963110428900BE
+674614D1BC07BE56B8278397B8ACAB495567D168FC3F6F3CB0E0D0620137FAF4
+71E2F836C4B7B4A57764E96752D432D76964FEFD9F7C2B987CCD0A4439C5DDB3
+F41772E63F283F5648909B1CFD74D59D6C79FBDBBA86A1CD40AAE0519E3EB48D
+1E873DFA91AC38C8E7AEFC6ECEE9E725C66F0E0191BC63C5B8F990297082DE04
+96F2A6462DAB2D37F93722025EFD41FA7F7E8C1BD348A4E75B39B4A8416E3BEE
+8C4D7A7E0A7590392B40C9DB1CF368C8B21122EA67F61EA311ACF68F229465F3
+599189F597A47AE5E9BD71EED32CB197B8E55C01B68840E365B9E27C9D37686B
+4EBAFF8C6EC48EAD141A43DF74FFF1E84EB3516AE564F6C4B7096A3934040E81
+A464BE8EA9EBED5DAF152DE842DB0FE60DBBDEFB08BDC91481E1D1528F2409FA
+08AB7494FBA23EB323B205C66F7D5E2B80AB17461414A0764AD31BB6B1450310
+48628486E8365215826CBD1394BDBB9FBAFBDBD829FE453569120736A0D1F42C
+90495591A800C8134589941A28ADCD06C9E5E081D2B0655F9B03ACBA305019CD
+E37401E8EAB0328A56CA37735549A0329F50B2D19506CD596182BC8BCEC4693A
+284FF66D68034C62514C6E9956E1980D65DD60D7E036BBD9629B3DE5A477F253
+EFF41297DE0D21785ACEEDA56FDB62214B974D974998246E6A52B069E21F1411
+690B6F1308815CD13A433ED8F063B6A7E9E2FBE556AF63EBA32657E769B09B98
+3153EACA3773C63A340F1810A976D0946F05088FA7B785FE7BEE0ACDFEC82F59
+A5123527C7CDA4468BDB2D5E26642EA897F59E3C849F07DDF9A81679DFC1EC51
+64EB34519DF9910D256F65917A1322E026F2383C794097A440E54C94DC71F1B9
+7DB369512B5F38E4C00E6067CE36B58797489B0E397D141C0C687C3A7B7AA622
+80896D39BD755BD8F3102777DA6170F07B8902174DA4C8C1BF1ABEC509B96BAF
+91F3C8AD8961DB8404907D602C515CFEA9E727291FF8AEA1FB8A5804D5E1EBDE
+68C29BABF382A5AC17608CFAF4E4481421A88BE423027EADCE6C6029B63D07D3
+8EC2815D88A5296A8416F6D92352104C44284377D3F26F2E5DAB747C017AAE15
+9E704EE80FE27568264D6C8F6FE713ED5599D60AF9E2E2390054CF9EF2F20CAE
+7AD35EE403E518A695A75EBB1EEC258CD01B7BA8DE747FAFDB0207D2C5E654B0
+028FAFE787C8AA137267508AA292C15FF1AFA7E902E1C27A3BA82D0AEEAE20CF
+02EB1B32517745B604DB88FB49948C50CCA6300AC22814C05629AFF55CE34C6B
+A2F8E13E4CF2BD90D97CE5C0E9C78931353205B23A41C7E73FA740F66D1C9D20
+C722160C7BED8C7EE8754AC8629182E0C76AF70073E2614A9E0B3302F11D7D19
+5A795A4A318BD6C0A762B004F2AED4850663471C10DD756902C53904DF0E2794
+2D329A8E8744E96F9D78071305A6A13A912187A7C7A8DA75888CE455880C2D0E
+F565AF10B59B9489D7665512CDA7E717FA4F820BC48066DC566284059F38B560
+9C94FD00197540B82667C5E8D86A82275A4B1D11CB28E0530B1347BEC54706E8
+977B58FB00A8840D909E0E9D2FA7B92ED690B78AC4974C543CDE65BDDE37165F
+E8AC9CC950070C1DD65453CCA27A292FFDAFAEB081A443A74CC8CB5395176CCA
+65CC0033CE7A628D33B5766AF50FC5A9DCF1DA43A0B9BD8A123A0F596FA212A1
+6DD44B29E203B03D6FC040579B7C7B68DC4B12B8488CDA75133F12CA9D095784
+1541AD9DBE080EA86B939B452F179E149B9B7BE9984F0AEA78E1DD0A4F7D4D51
+74B6372579196A4261823A4E62ACABB3056D216AA0C10B546F511C1BAD1D298D
+417617DFBD5C6AD164F72B6E199BD9AC7DA5FA002902738F32CA4DF7D6825EDA
+9B4698B5271D77AC0B7E03DBF20036E31DBBB3B239AF908C6233927A81E8F429
+5737C31D7203660E68D9962424D7F0DF4811C66809382CD133FF045CCCC0BAB1
+96EE7519EC91582F5B8B6817FD510918724F01084BB2DBAE94ED64718DE50A28
+62497B88E0F15A9EE44CF924235C37B72CBE9A346E3D8A83F6B22CC432F116C7
+D0E822254119B31FDFBC15BEC4B3F4407C4EC9A76978EFF2A6C454AE10A62A01
+DF14C05476E4107674ED1F35743E46E53166F2DBEB4A4A6EECE8FC21B1908D03
+1896C088135F68E34D2C3FE7B21290F53C31C038B605916E0F64E25718C56813
+590D3A0D1FB4C666DA273AE0C58C594C0B3E62C8A65EE92E5BE6BC3B65DDE1EB
+621496702FE78A22E66B58356B1B148F4EC4C7058BBE3F08D566D9CE7D0A053A
+E62D3E3A00CC5E195F60A13552DD51C7E8792D18F6F34E8C06EA06684D2281B9
+EDE27A504951A19D09F748F1EE97B632E80B735E41BDE266912A4FB59F14745E
+EB30B2C480A183AED6450F3F94CE6865568C9C5D8CDB92669AD943A93684F1F2
+C98F7C7A8FC0D6268EDE430E4A110D9319F89FE4A6776CF46D17A976BB9E3B4C
+4A9348F189BC6653C10A45582AC99AADAAB9EFC72722BAEB79026E4EEEF14373
+14DB7FE7A5ABBF3934D6DA4936D9CC3EB196C4AB43534EAE3FBA4EAD0BBDB95A
+02EEE47E9E97394AA7F1C0D2D262D6305A3BE50AF503B3DBFA5AF3346B584479
+1D8C57ACE0D91000A43B682195455F7F630553DA1302B4818A994E8F061E3735
+2155C42B836174C4F81A8CF82C58A8BBEA5007FB7F524DFE4CBCA3A826426C96
+136F1D8481834B10608B9F95BE0FE9A013175569255BA45C987B55EFFCE99DAA
+F255A1D5B60CE1C5550BC3FF80B77AEEA238BB071EF7E688B94A23F05164DEF3
+ED44410D9AE40F1A6722B59D9F5DFAFDB3DC7E5193197054F15FB77ABB62EF4C
+5783F3090C0030D632285F81299735949703735CD0E1F535750D316CFEF6996D
+0957EB49C5182D07CAF72C8D8D7B8C3FDE9256FD36BD2DB3FA25C5BDA4441C76
+11FB28447222C2F47AB0E3DCB3DAD6071CC213696BBDC96BECD64157062E741D
+1284C13E40D1D3AB214A28915A90CFD1DB7FD02AE3B63126FA815C9D54595821
+FA9622D072CA354FC61A525487579910FE4A836753BAA76B95DD0F7FF0892D8A
+3F6973AAB33A7ECA3B68A99DDDB80B8A4A11BFC372F80CBACC367E99C67EDC74
+639C54ED6CA1E3487C213D5F9CD719744446A4426FEECE5BFECD2D131AB766F8
+7035E91A1134CD00C935F21051220733C14604DD882A960346E7751948E5680B
+1FA8C33D7376CB898D0D39E24319EE83C6A298AA9129BD9DD1EF1C8BD30A8C1E
+5D5592B757FEA47D2F1FAEA523650C4B568BAA0A60A87560599F81A0F1C2FE28
+CDD87F0135E23E68332BF544F04D74193540261B67ED1E30B370DC5B02A017F4
+FCD8BEA2A685291286D4BB28D4755DE2D3CD949C4ADC0088D8EDC8F23CE0E7F9
+507DEAB1B78AE36399266EE3AE8E1F17FF718D43FDA571204E8C4DC1257A3AA2
+A07CB07B91BD864E6F48A86B48EF96C57F255671108F4A7591682DE6A0CD7E1D
+284C960D5A59B982C2F4F47C76C15E21CE0BD909C690AE462F8A57FA67F03C5F
+79CD9E918114367C95C645148A8C5FB642D90717730B019F2B4C89F1D09F701D
+A0EEFA0F509E22E10EC5588066CD19C9E3C4440B1624FA368B51F0BB18A11329
+933748C5A46F78BA27CFC4744DC3E481D31300381027A25C2D066A799A84071B
+EFEE68673FE7EC418633D506741AB3F192F749F162C11BAE1EADA7DDE810E14B
+7130E17CC7E13173D283F9B00B5BD4BCEB253C39B25D5B5E61E130E1BCF510B6
+031429BC917BD9E6AB4E0291BF22B6DFB97409C95985CDF2CC035E33305446D9
+440C7276F9921E2040E6FDC97D3D8391E191FB6397BF029875715955ACACFF8C
+CDCD28DFBE2C76469E8FC53B7C21761284FA59B4EFF23448846BD5D76551FB44
+3E52711F0BE0D1D5A0649BEEC9CE79FBE1379F18679AF18C6A39E3155383367F
+B9500CFBDEBB0DFBD789E69891AA9A17071C3891D5F37FA0D208C042F5222089
+6C1E7FA7C652E56CEA9F520023249D0A9417DDEE0CCCF9589B1459C09AE7DBE7
+BCFA6841FD60D53BABB0DAC7A0D34F703481CC6B21812230BEEA4CF6BE379E5F
+A2E7472A97407E340B4CD0A933936222EDF3F239E53542BB0450B7442657436E
+F9B6EA424AE5CC6608AECC864F1A4CB8A53BBCBDED146B2379F2C7D190FF4BF3
+F00D21CBE040EFF75C35B4D871E68D29FB6B35E9CD7A720B17B0D89AFE5922F3
+86D865E4BC48BB8C630034CA106B66ED45EF6C8D973501428494AC3E4241B2DE
+462C7EB9148CC4DF778A58A58A4534FC63D0DD1964873DF86DD854DC17B086B3
+1287F8CFFFD80657463D7C06A3D6BCDF249C0EDFC70E048BD243068300DB8AAC
+3C57A503BD4C263F6ED8661D67040A3A91782D9A1FB9FC4A1ACBD1E33EA87A68
+2578D68C3CE4CFEF906E122D3B76B72285CB3D0DE5C60ACC1FA3D90A94C44AB7
+D5140DFBCC0C6BFD572EEA526E90C885170AF9E0EBAB38368F0EF682BB277BF8
+6B38EFC0C2FB669B4AFE65881D5148450E40B5F69884FFB2F4EBBE46520D1B50
+E97AD4E7822F1BAE161AB5F23C25541F6AC883FE62CC7E82A67F09783CBA1DE7
+FB5015C5362A81402697A0B05443437E45AE4BCEB1FDFE52FAB8BB054B7E5F35
+5BD29857B7191B1DDC0C61EA92781B1E72E5AA14A8572B5B9C0B269F373187F2
+E617206395E7F1B2C5BB934E34E8ACA4A9BD00829E92C85EB9BCACF290FEE863
+E4AE35BDEB7BA67734904D29C6A7036551CA13E36FD66F53AC8C4AFEE3B8365B
+E33353933CF395624FD152F9C89753CF9B229AF6F54439FDB93CBC198A80C0FA
+4E14F6E8891F21C39C0CA650039B9694B1B706AC4D415D16040C7DEDBDE92062
+D96A1799FBC52B9A260E2F50940B62ABE66782EFA2B52BABD46B535F0E51B3C5
+344F39A0E5C3EEC57EF8D309C6151C49E40A4865F8042CA1F3B151768FA0858C
+05747665EAA42DA2E0D32FE90570C12D3694ADC1E6D616CE643AC674D64B9829
+7AC75473CDAE83B8ADAE03B5644E502F6A30F6EEC83E4E7C7CD0CF274458407E
+AA19CB2992A9AD1C740DC91C64D734A05F83C78E07F34651136A0C59146F8679
+EFF939254634CE5B524055EF6E512511AA524990463FCE80F92B339063A55BE9
+D723BE0DFF0E3F1E2A3F8A2C1D45FFCCA590CC429E9076DBB12C49BA3E15FFCB
+7685D536BB45834660410D6812CF2D98B7EA4DA2AFD43C8AFD11AD836CABBB61
+4206227E056E147D984B2F5BD3C64EF03D766F7B8D54B20ADC7268F772997A6A
+D9BB3385AC0C76BB47E1D844B386B3F4B5CA9184AA923093F0B35EA208F8227C
+91C432A2CB158E9DF3F700DA93891CB62F9DDFE34F03902C29695B055BDB88AF
+E8673BB1A6E5850E74FEEB69F0AC300D592EC10917DCB2459718F785F08D87AF
+3B518B4804375E005F6018198A04B7A1DF452E79190931EA844ADAA6C5EB28B4
+2D4E2CDD026C2660B4E8330293EED88AD05B7C43408B37FA67C1DCE55EB5026C
+9829D61BDA7762723D2F12E04648141904D524365838ED42C6BF470F4A84F7CF
+A9EDBEDA76E83D9111EAEF1AEADF3D6B4BC0656ECF83B1912AF4F50BAAB4855A
+922E1941BB5C1F55608EB6F980315626D6BB1AEB601344587E9F89EC01D42A66
+4D145749727E5557B8219DE14D067974BA9C101AB59D96CB935E3D3535FFA96E
+4712574DE4AE9D62F2A89EB608DF3471CA8AEF6BA326A5143E55192C076AA66D
+36C2C3DC3E6759AC52D1DFFF8C390F234221CBFA52EA5E8AC076616E70A3563F
+2AD444D7E5A63D9E8F141DFB6EE320D36F5AAC599D442CD972AA3902C9E44938
+285497AB7F387735386396DCD2DDB0C24285A5F13BFB0E822FD541AE3C2E9194
+8ED8DA31D539A8134E21D467A2577F096A6851C4C101C43F52CDFB085E62739B
+93261DD01216B48B0A3CA43FCD5EF298AFE02900503C9519AD656435B1654A1D
+46EEF1FB48B129811C8443CEAB01AF95B96B2317E5D2814B6EC158FB8B66D8F1
+63C074BCB0BC32479379C8EDF6D263910777C4FAEAE2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSS10
+%!PS-AdobeFont-1.1: CMSS10 1.0
+%%CreationDate: 1991 Aug 20 17:33:34
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSS10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSS10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 40 /parenleft put
+dup 41 /parenright put
+readonly def
+/FontBBox{-61 -250 999 759}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BDCEEA888D07B439DBD4E8B4C9
+D198C03874B5E6F8FBF4922065A92BC3E66D05DE53971CB1424510E892442858
+D69CE1F76E4DA76C87C763A4B2FE36321E54B1328C9155B8ED6361855A151723
+3386AEA3D042B8D89C8C0E9A33E5DF3B466F7BB8C2C8A4ED4CDAFF55FC6D3EE6
+0AF2CEBFC1AC3A6E6692F8BB81F82D86BAE85016AD62FCB05467082C2E5AD348
+44D1439C2B59F65590E57CA0DE481A7A34E79931B1513C4C30156170409A4BB8
+46D412D1DAF88AD30722F12DBCA1CCC6B4BCC28D06B0D29149DDEC520C8FBA13
+6B82E2E1790F00B216282FF122EF0D47B70A1B29514DDF7C0435ED238C14BDF5
+6DA243117FBEF7398F97EB95597707ED63C6797EBA1B46EA19ABB1DABDA171B3
+16CD500F5D64CBFBE4F9CBC3E66A34427D3C4D0C432710289381F9BFD91B4FF4
+1E3A896C3EEA2F3105C218877D6C0C6B763760FA364D00065E1CAE9DCB5676ED
+286A9ED0D1C946DCA6A2A670EE0936FB4706CC62E234CFEED34AA615C48D2872
+A087F30990C85E64BA68F3D5C117123467DB411C9F2D6F6858CC70C1E352C477
+713097321B4C4FD4C5CDE305415F998E7245908EEDE6E056A736EA77BD8C639C
+3A79FFD0B74B3D28F0494A115F2841CF8A8827AB5608F96FD8998A5F40FB3DFE
+3AA0C7696DE4E1D18DC0D6E84B943175FC38FFC42A9C0CBB13A908978C98BFE5
+034F88480F32B9DEB2FD228FF6CB0B89B045AB02020C82E3F5716DC640613185
+9F597CE262729BC52132F43922B9E28BB71A30AC8709634561B22D13C4FAFE0A
+12C4451969226B220038AD8DDA990A4E2CAD53DBEAB698898BBD3046234EB4EA
+901287E71CB41296C431383AB85F18882F65BE36923F6C0FD6FADAC5B42FDB68
+64C06E047434FA7A659EF7F3D1AA8E547939FBF9C2ED7AC829F03CA59AFFBFA5
+A7AD2E0FC7BBE619961AE1785D09444B333993199FFED007382B54DDAEBE21E0
+1E75E0AB6D309DBE53BC7BB9F95D342F51798574D70B95021FA40163A86BE6C9
+342536A5730837C522D5314B1289D9B7E4EDD108BE7F35A20AB2A16608F6F007
+6DDD702A5A9BA1325CE2C1CD020DF677872135CF04F4E4F1E9AA6B494E2BC22F
+107C331A7E80718B030A1103804D144802E3B03EF7CB083BCCDEAC7B43F1B4F5
+C1BF6016741B741CF7E12B4BF95221A72CC9F4657264771AA69C73DA1DA29102
+65D01A0E61F3024E672AFCCBE13CD0B7F54AE1418B72E357A0BABB4D03073B1D
+F4EB54F899AD4A41A9F94DC200880A0DB99D67235A2451B25F710C29A882865B
+A922E56E9FC16756014FA5CBDB1C32750BD6835A70EB715CEA19A8872041905E
+8C660BACDCA26C8247D6B3C10FA5DC240E433E479AC6AFCF57CF96697FF46BE6
+44748E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 23 /ring put
+dup 25 /germandbls put
+dup 26 /ae put
+dup 28 /oslash put
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+dup 126 /asciitilde put
+dup 127 /dieresis put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
+38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
+D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
+EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
+A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
+F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
+4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
+6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
+A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
+E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
+1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
+452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
+8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
+5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
+DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
+BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
+741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
+E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
+E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
+D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE5056B58A9D6BB1DF8
+769A7F75476761E687A8C04FFC7C023F4A610B105CB4E2144C82181C70A2A97C
+96E46DDB637486F5A5AE16B8B27E8909626114A5A14782944D1C0CAF1B916827
+18E0762E3B88C957946E58BF74F9EB39B3EE15BBE771CC058A5CAE1327243C3D
+00DA2631E3E83586547677F96327E8F49B3AD578C0D9FB003045884C89A31725
+65C32B1D1632368D09A1FC23FE4C1AD48F8140573BFEA443EDECEA28FDF10B96
+EE1FB793597F4E2CC092E2DF9B35F469A8B51ED4C842FFB59319762915DAD84F
+33F73A5A139DBA47B733D58786C3F6CBF1A6FFA490B18E3D314D0F81829CF252
+3414D6FD6F3D5BF5D3A4E30F8CB52414FF143F96C38F225495EA262713DA7EC6
+AE644B331C25AA451691FD4FC6453F990B95A3B7EC5F4CC17A1C2FE905D2F36E
+9A954D8AFDBAC7A28A8E6FAAB4F5F8A48ABC1E34F3EF0A58F330AE36366F37E5
+48C6DE0FFDAFF0F4C3DA957C130A3936C4504264CD1D9AA781169DC6ECAF6EDF
+4E2E45E5E8E54EF7FA1C42AF3E670E0FEF9C85E3365633ED40BE32D1492269FE
+EAC9B2EBB288AB51CE23DED80B13306AB96360FEBF829410D65C4406EB08F5F6
+670457E00E1DB0091BFD9EEC400EBA065CC7E904BC8BAE1E39432CCD10B22C17
+391E8D53D5D294B48A4CC84E1471F7A62DE9A66C31B9C89E4E39EFBC4A51E35F
+493DA12600759173358D8661650BAD0959D2F95FA6D2DE2B2343FEA2BD752B10
+43BB9F869A604A2C1267EEE7235A1B584732DAF21371D4E2B8C3DC0072C46553
+8EE9BEAB540BBE0ABF89A902EF916FB1477C796F575593472B8E25DB85D5D7E0
+19DD2DEB414DFD0EC0884A884E0FE0BB79CE6C646E44A917BC1498D39F6D2ACF
+89225E8DF1ACF4EA1F71550220B035B6AF47EE962104493CDF9DDDFFE6FEFCDC
+0E7D527A023A317C122A6F4FC597D325BAF4404BDDCEADEFAE714A0A6FDBB0B2
+3808EA4BAC252A603B4B98D6969C3E5A27CF3F037DFD723460B816789074F2D6
+23721D38E3F5C55055A36CC105BCAE93B82CCA448EEE9EBC7129676CFFD08955
+45E908778DBD3D4A764EF76A128CDB6043B9E685058910F2EFA60EEA24CAFCCF
+B5D27894D0FAF70427018E44444432DA217576D9871ECC3D6004C0EC5F43B32C
+9F1F08C2A9D21EA336CDB7BB4A5A437D2230E8B709068CE066960AC2C49A0F46
+46788F984A5F6458A44EF166FF986A7D063C27C6A2A2ED9156A7EE4B34B024B2
+778D7FE70460423FDD889886319E84BD5203D8DCE42B54DDBE7CA207B2B331CD
+0C7DA5B2D0462B9C428DEC4DA9AC80F21ABF25BA97A93D3F2BC428BB4708AD27
+81926594A4119F4E482790F67E37A2305CD35D821BA8DED6E76756AB42F41E53
+30E7D96E58A9C8CD0413201E14AFC50EF52F87A36D22C4590FB6EEA9DE03A06B
+B3B9CE2F312121C6D5DC0653C96FDA7F93F8C88CA69F468FBF029299CEDD6FAC
+5938D32C45F216BA707C93024DFF0C0C54EA753C09F79C46043E8A6D8B6A2558
+1BB3D38D9CBBB7633E7513532C7A8B2DD6BB6933E1F7B5F88485309F88582B8D
+0FE83BF9C846786636B00A4C6DC92FF6FFD3382E230A033D4C8A3CFCDDCC725F
+40632A66CA5A0EE73FABC80EB23BE44CC4496B6D4600013A767C89EBAAC29C4C
+469CBE1ED529DBA8032E8BEEAD379133F4C1A4DB34AD0602FC4278BE9DD1B4BF
+4FD05E0DB2AB659A953192CFFDE0C61980AE4C9CAD97CA33D9329DA73C748AB2
+DF59081ABC4F41358EB3C78AA2679617B223CFC0E0208D2C0DCCCA5FFFEE7C05
+CCDF79F43CBCC4D0DA203C2AF51B5407D07316C8FB7AA49CE57283AA76206461
+7107C54AAEE825B3DD4AA96EF621A2D8D74369862CD3BD09C8B2F15976E6CB77
+637DFC15B13FD3C5DE0E365067492E44D24B98A58A14DC6FCB9D81C861AF1761
+F175304B25B1EAF3E1BAC49C2C8E5BB08F47CB9AE447952A6E467987EEB21EA8
+05D336BE0F60ADD3FA1422152456A4DBCB82F76D67DF167EB24F53B0362371C0
+4FA2254BC05924B1974A9C35C687214A9A8C9F0631F889212B10BE3EF9E6626D
+A6F9433520CAF11AF8A92A72B0DDB3235928635FDD84C966016EF1DBB48E5128
+4609F90B563AD6A4F0A4C90064AF3B79A02C597C8A714C318E3DAAAA188DC210
+D10C6B973A7C9E6995C530694CD30676D6D49A5585B59B780163E1205BB67696
+8BE110CB0598CDDC51CF1CD99A4A64FB15F904D43F883E720BF0A3100A91487A
+5457549018BD7DB4EBC8E53C543866144BB7E4F4D9403445DF7B9783B17F05E6
+22795D137FA3FD749E97256A555BEB391675E5D07AB4EDCD46DFFC6ED4FB8D6D
+DD8AAEBAFD2A8F66FD487CC39B85EC446FC82B634515F89E231B8810C1ED00F1
+3F81AC5CE6B36917AF46FAC2F7C6183C48EC3F1A5253DE5A3B091B8FCF03F2E9
+8461E6206AE3A809EC8B34715C9D2D15C83D54BFC7837E443BFE5B85FAA9365B
+0FA0B2629656369B226EAF89FA7612A97A3D3BB48B4045CC7FA5FEB1B97A1D1C
+0F3E4A3A6F63F0FA3B7A55B525D5FB480D92081283C33E802F87C639AC4DD469
+94F86AC8B01EA3B8437C3A66DE31E2EFC930967F3AFB983B4CBB12672FBC41F3
+C04020F66D7847339FD10685B859F5FC0A317ABA2B9D2A322D6C7AC3B44DB449
+E37CC18605F7D8E7A47EEED5E43283958CF3987C22F29F49925CF324E9FEE21E
+FFF783DD57C0CC0ADCBA34B16D9D640D2D8CFDE98178247922446262006CFB91
+72425329E91B3194D5C364AEE73C071FA73AE79E097E2F36EE42EBDC894C82DB
+99DA0F4D38F9ABF56EFA06A574E75F49DCAF478F5095C34725B577AC936A99EC
+E8586B46FBDB118E4E8EA6EC427120E34F31BDA887A7A9BE84A42B5071E89C00
+1CF7DACB95EA4B12BF3E4E74C6B8632A5B05271588C04AC716D7D53A3F22176A
+89C780167D1E395FEDB7FA3F320F3C725309DD96B8AC453827627A3BCA36F550
+AF12EF426F696F7EAAB7441EF576F3EECA5065CE54585B1F928C4366FCFB39B0
+8A26BF570D90950DE77D62951B5FA635EA4C474C96A3E02F2FC6A82334FC5E5E
+E0E8CE5A7FD855A83045D53F63598EDBE8FB12BF2B4756F926AF21A69F9742CA
+2A4D31C5C82AD742CC6E84B7894E96DDDCFCE252C4CF01ABBC4961239AE69E6B
+9CFB2C66A1C336A5E6E99626ACBF0092831CA748254ED1BAC31883ACF7794F16
+860EA61BB3E7CFBDC68CB0CC21C1D23189EF251CDF2EF3900376F45BA7EA815F
+ED8235EB2ECA7F60BC35DD4C54153DB987C0A00BDE993E56D2474D06F998D431
+E92FEEAB1848D8E12C7AE197ECC9DECC89E0F5B29455A59C3C2BB67EC207E6A4
+19EE67307C710308665E56369ADFD9D28F858AB1356C82C1D85BA24C70FFF139
+146F93DFC545FF204A77CE7C15513F786B5F0819FFECBDABE103DA156675B27C
+48EBA9BD3D60F6B7F86DD2FD6BF32BCD75932D40379D75E0D4DEFB33D96A2607
+DFE57DF2F8B187685CD003F242C97DBA3026222D8D1101FB198A6EB5CBA03B16
+72F308201CED928A4CE46909B73D0BA7103A2C40A00D2A958575F953FE66D6E8
+F93832B922EBA8B26798B23932CA67D264FDD54E16A853F5F5643E9E82618C24
+4AD08B7B7D0C2B38990AC228FCC12890D20628BA24B44BA974BF584C865C6062
+C8E89BDC224D0D4ACDD3D68C9AB628A8AD1EBD43A7472D9243597185D4914A1B
+875032A0C828AD874F2F5D9795F31C98DD44A9DA68CFA2EF9E69363F0C5ECE8B
+C15480228CC416E4DD4AC40C2333B2F2E468CF04D58AE511ADA9F46222A2B68A
+37BCA2348586094A66EE4440B6B3301CA9C46563DB03F5FE36F0954FC81E2238
+67D2379EB97A1189A435B2D0E8823BB05C627D8142CF90E0ECD8D8E026BBE8ED
+1DC380E81225EF44C2483308B0E19640B72D5096A42680A6A0E550D095677F76
+1A09CB173307DDA591CA84D65CCA9397FA7FF74760BC20651EB35FE90813B2DB
+37D75A15AC56DF67750E7BB7BAC493266B6C2932E86BA407BE86D0731D66BB86
+630779CFC2E021ABFC6B2A101CF419849CBAD036151E5223F164244B2E7F78E0
+ABFB0107C2CD5A7BEBC1E06E74836A8C1461725DAB9383E508559235FD7D081D
+879E29E0296F4A2C4ED061D360E53DE27C78CC142578AF4F45BDBA5A15912ED6
+B6B26E522791BF36E9A9B91E0C8205FDFF62210228396DA50E6B1273D167FCE6
+D750B61D532EF6A59BE698B92CCC3229F0B9215B4300AB8AD95CC0ACFEACCAF1
+D4F9FC8F90D6E8D9FA2B8A8C2BAE7BEE1C93A4F160D397F4129CECD96331F3D5
+68F691DCB840B45B118E420C1A378FFF14198703C021C9A3DA10E1FEEBD74B49
+6FA10A7324325A4DD7564C9A63DEEA0EE1A7A64432D89AE8E36CE0694076A733
+FBCF849A3924EF174AB63623369E4FE53C7846EF2300E38173F3D7A8C42E7B33
+54D280A916BFDFE94896AE6DB4B05DF783613B9924635DDD3937196D0EDA7D30
+06E007CA14CCA4701DE89F30A3637C3C296762C814257D0043E82BF196AEC92E
+87B2BC45E4AFF73689B5B4CDE887B6DA6B38C385110379895FEA4547A7C6FDFB
+88950F547EF5CF638145CCF88514461110C87A1955912167630591BEE8321F27
+188D1B35E246CB05C11F366CAF668E071ACE72D3ADB42572882518FC20A80AE6
+C8DA60BD614F1841030968281F2FEFED639729D1D10C60CF6FC66241C6418B31
+0FF5666D6B89F5165C4B575DE6FE6615ACD9942C6F126AC0C179C2D7363C7D39
+8BF85824A7DA149B6F7467EE6C7C99432A11DFF7315D9963E3AD202B604BB93A
+B955ADE7FA1C4E709EEBFD25CF2205ED3D45C56B843E83FA7A1C44E73AE6933E
+048EBC341E3D9007163E99F0078E15851FB63F87AB9CB083CE2BC9DA4610802A
+077CDE49D801F017095BBBC52C5C829C63E6E96E73CD6D74AC21116BFA1CD9D6
+8E971EF0139B30AE4E70B622CE9FF7E886BFD8FCD5DF5C6B8D539FDC5F055E18
+167FE0BC00CBEE23D559E1CC0C36FE7BAB0318A665D5E0A2393D2BC9235FB29D
+588AFE3A3174CA20CA2B78A9E5A6F37703A5F7FC3E0AC6E70205020C6ED53DA4
+DC7FAC5176CA4E2304D27D25472877940F4EEEA3376D4FEF76F4C8A16B8F23FF
+4146C736470C6EF10E905D8EB2E3735B05E7760EDF96AF9DB4516238EF129758
+9693A70AF9DAFB479E9B76490FCC0EB5DCAE4B9BD2627E5C9EEE2D27F7513274
+8387FCA829FB443E410B8522A03D4CD1907787D3F3D28430DB3CF6073269E336
+404909C7DBEDDEA4E36BE1B5EE3FCB545E0567F34D6B9FA4A5F44B94F89DA1FE
+E64E3012F6BB81D88F6960D96F1C4D732CA4FC6AFED77A79EFC2A62363316F0F
+EB94106ADC51BB332B1B287F9FD8DA71F86D36AC03DA8B572AD6A519DF050AC5
+7F8B07A5498CD8907713A7DED63BCE3ED4A1433B0EB4F1514C44EACB2D84C6C7
+F2F7DBDEDAE6AA114CD7BFA6C678469168D320B1A5E5F12AC4020A5B7715CE80
+F557C4D88B5BD36AE164D9AF9DB2B2D9670470ABDB7CA15FF735249BE4121ECB
+921D17D784559C9177248E31BC87A3C48B4CAF1FB1C6B4FDF288E221DF36C2C0
+7F5A2470697722ACD33751A73E49915BE3A21708D0CBC1A250DA06BE44052F0E
+6862771B42D1404C5A9CCFE638C028B211282264CEC3A4C9F539C201139E9E21
+32F2F3ABF2374B3D7949C97D1B57748E3742CA077B926A84404B5B0C39ED838E
+BB361385694E0B7BF97FA50E7246E4D7E6570C69B7E6099B6B06E56B2311EF97
+A99103CCD087478FC429B3114A39F937676125786DDC42E54810E35651709F46
+0A97749A09DBED1EFE6638B9224AB103A67FE53046DB40E78005F84787D9AD2E
+B6CAB5BC5C84D370AF41D7B3A1B06C8C9B154E2E3ED1D5E929A052EE75F21C4A
+EC904ABC0EA93F87DEC10BF057BAD2E565B02B560CDC55F89E2C3ACFF474BE85
+2FAD5EB9F288C7F44408633D08DBC7496836BCC79DE77D297E917A41ABC351A0
+71A44FA46E06F2CE8B9E8F9DB9682958617524E93DCDC89E406F83EA47A94E8F
+E52FCAAD6E3729D2FBD94CFEB2C8ADACBC8688DD8F049C541006BEC2EE408F48
+0F4062760B7022EB7CE3AF667DC16BA2260BE04B5C7CDD3C69299DDC3F2BC853
+56788E5637ED9540647DE4748E6D61FC54BE197809209DD6A3F472AA3271F91D
+C09D8C64EE42B72BC1845145657E9D3C41A3C06B03F5C5D094274AD688990871
+9DEC6555169250C15A0690D461D35F7E962E44CC6BB88F29766FEA1B0C2DF59A
+7E793F38FA14BECA1DEB33C917006D2112D13A6D9E7BFD7A059CB5960680DD25
+3919BAB349A5DB979B9E58A6527676A08E654C2DEF87CD44803D8F7CFB89BBBD
+E4DF715D9C0AD589515A4955789E2F9E0F0B741510B272138AC0E88FC8A26AAD
+F622D37B2B3C1B9AD4FCE9DC1FCAE999C8B3FE78DC0663AD8D0B7357917E6E58
+3BDB824FCCC09A3A870D13CE823CE3D9D701C903EE00B9E29BBB90F7E521D7E4
+E9D56698EFB7787FE47AD5F7C7FAA107C042D46C11411710B59A3D63AD0A3911
+6C3B99857F55C2BBFC0C5888000CF19C58E6B5A93E0E39FE9B4FC9F80BADD8FC
+6494209F8CB56A9A5E23C201BAF91A045A6196E58D3257FC9281F96970B1D7B7
+9D2E181E408353BD2395513AB5A43464D9E687E7B755267B5ADD5D8F1274AA8A
+8A2C050F1251365241EC5A4537C497742A6D740218ACB6BCEEB65D9F800AA19F
+0CAD86CF2BC586F5CF07BB3686E5B4575F96ABD47DED0C084510894F7C24781A
+1957029AD2AD97519B7ACAE24895B95F76EE922239E0316F988A5996E3B4FF76
+BF60D81781B18894FF93A11EBD10D1373D41BC92004A1B9900A37CAFDD4DF543
+93EF87313FF2429BB4C7872E589AD856C45B0164C07D0CA89794F964A3A11FB9
+56034CCA30AE6984C8AA2D5F582C56BB290709223BD193D77E2F58D7D2C77553
+08D36EC1B358E0BAED507686EE355C375C2059AA89FE1DE788BE916DE4F6DCBF
+87DFAE4FE7670A48438163E4036CA82D90BC5ED55B9F6352B1F825670B331324
+1CC94F4D2E804BF30F6B53C2F9668C797B677281EFB31751C6CD24D2FF35B6E4
+5A63C4929499EA9C438C89EC8A69760D173A2AC63464A9C96EC9FC5C1A908A34
+F60ECF28E37DAB9D1EFC7F04B362BF1261754B8E8964303B101F2B3D2516F2F3
+677A83F9335243CDF091E681B6F9332C33CC1575D1B6DF0E5164E123915406F3
+C5C198EAB46CB19135FB350D9BFC913CECB646B607CCEA5F6705A2F3518E5177
+4A0DE296791A918338373432A23CE30558B3531674D6C80E1CD3E91F22BADAF3
+9E607FEFF9A62962FD7820110C2F9B57847BE7D5423DFF6E4EB491540E843664
+B6D26F3F5C86E4ECA2709B496889EE9CA84F08D9D58736E290094EBE0AD1D1EE
+1AB15586A241918AF634C7BBA4E69086BC523F3ABD00347CC37FD61DDDB94263
+89CC3E3D5E0A92C50B633C30FD446BF824B71A1C5F1287AECCEDB4A76E19A12B
+A4703BEC33CA0F0FAF543131AAE5EE5DFC62F043DBAB28AF6B560052D12E59F9
+6DA5A7FD570CC5C03249BEAC3F38A16B5F8BD31A3588E9C4E90F751B8F5FCF86
+54351B3E883E2C4230F00A68141563564E3A93ED8512D1BF8AA250C453379704
+709069A73E10DE42FD6B4863567027B4B3B0A531D593F070046F307636F6ABD8
+1EE2CB549BF9DCDA801D67302110C70151343D5ECBF27956BE844937FD2165FD
+91B2B47937230C39B054DBA086B9217B132D3C155AF2B31AEF8014F8D70E4034
+3FA97DE401F7A651D78DE51ED0BD29FD79AFBBF73827D9AACC4E9591BC4AF5F3
+F38B32923D9288B6247FF2D40329B623856F540BE99C0FB26F983239393B0523
+FA2738DCE926BDE82F3F0656036F51D45B1490BA5F599EB432FEAE04691BA326
+74558B998480293F26845717B284365B1AA2B895EDA9C46F238F1A621F061282
+931EC77693E03AD9DF7D8EFD123488665796F8594F0359ABEF5F6A042C430787
+1A2AA87486B1837C44C561A971BCB136C316C2FCD28D5A7B22DC8BC91A101798
+1F5ABC1562B2BFE962CCA50D275742F4B1E1EC2789DF21948C9B7AD567361814
+89659F8330AA7DDD30166353EB30A5F90AFD0F57A6FE6DBD3FD29C227DDDDEFB
+242AB7E5FE0E6B18A0A1C5BDF34B132C61F357785BE5A0F3BBB6988143A3CB89
+3540E0DB51CEB3068E098352102617C17A7AE9E72641B23860D5CB6C65D85B83
+E4A4C6BC47B509F7562DAEC8D4172345B24CE356502C213957753D9A3EDB2B77
+84E39FA189A90E9A65BB9131FC22C185DEBEAAC6A87A754927C28C6C2C3C78AD
+4E8AA7F95A1AF810C7C64CF5DCF59B27C02D206437812FB55063D40BF4FA3CCD
+013561BE542CD70E3E8D8D56FEA3AD43C0DE02E99CDEE4FA5087CF3ADEA6DB80
+33315076948F9D28286EF1C2E41DB835A0E494111540AD56564D0EDFB1A4DC0B
+3BD15D4A6107F8B039D37777CE6012030FF496A39BA401243A9590CEDEA200F9
+4A88339DE3E3FFEBD0130A895AB76E10B2A41FF99375272D7D576C666B054E65
+11882D5D4FF66C72274E32AD21AD7746027A232C277141C1BB076C05A289FB68
+0ADD33A4344C63AE90B0DE698795DC941DAB787276BF19416D12B24339A216AB
+DFADF1D4BB64128BC40394E142A812F40AC5F073556DE7EE199ACFE2DB53205E
+D64154BAC4CB401CA1A1C589146A6EDC4337390DADBABBCD3A8790AB9DA3B339
+BA89054C0C52EA86899210FABF873F5B6F10808237354C271FC612AF5BB39066
+AD9B5C0866D9D50379DF4A260D882A56862E5984CD2FFCA2953A84538EDECF54
+348B0DB9EEFA8F9548F487631174AD5866D7B2AB4622C372616733FE7346AF9F
+E557F895C798ED59B700EE0C65D1996760D331ED3DDBAF0F53B9E10F63D0BE41
+517C0FFA58C20FE5B10C4BA9D1BC082CDD991CF13B6C6D0ABC5AD4CA3F55C966
+E4B14F176DB97F28A6EE72B72167FBFAB631B4E3DF34AEDBDC48DCC9173B0702
+DE877053893792F6CAB43648292AAD3C5FE2785E7AFC1FA1CAC89D9AA26A3F06
+37CADE97826F8BA63C3C390A94AA6AE5D0BF4E52D8384A290D64C552A4011981
+8CF2B50C604BF2B780AE28A8AA5851F29FF44D124A1D64A7B5BD7A4C603A80DF
+8EC03EBE26083353064F6B2BEF9477FDA6343FCD29FB9E8070760CB84BE5142F
+3E8BBFBDF0268DD4B3037126CB8D5176C38B588D31B63094389650FA866D57D4
+49CE8193727BC70DD253CB19EB65348DE5BC33304898946301ABB1F96177ED57
+5C2447456BB7DC2F5B8BBDB830DBB44886C795E484F76853D91E3920B8D3E9E9
+027F12E6322B0E41EE72E3F728AD90E2B9E41098002EC62B6095EE8AA8BDFC57
+995E603A2E67786D752CD9F302FE342F8A02CA462DF39D585C3D73CC7CBAD1B3
+C286822D265524D62D58E311FB845166460C83B656CD4B4E31743983DB6FFE38
+5A07AA89685B20FCCAAE86255D44EB8B1B3D3E922A1FB574B5C8BDDCE5CDDEB2
+D8BBE0C7EAC54540A40F254C2A90A507BF8B59725F5E36FC40261DF34D29243C
+3BC9C65CE7E6D50E19E3C3421D2B5D84BE2D7CB1864843941528145A3A6E1F67
+94ABB555D73CA6C45EE6C891AE96BF224D9FB3C9B0B47B21A699DC2A1B8DF8CB
+DC7252FDA006C8FDD6F641948BA5B2D5F6FA454F2C4ECDEF1660ED33D1488797
+6B2B8400928777E6B795E40CC17DCDD90220A507E72DCA1D893090916211D3F9
+57B15C66E0DA69845BDE295346413C30CB1222EE4C1C6536C14040BD426788B2
+D0B8F366BBBCD119D8736E26C11B9280122F6A1A06A33B133FD78A35186D10C9
+7D3C2A18853AF7237690410448393FC1993915FA421C57BEF15422EAE58C84B9
+4A03DCE4CB05208B0025879304F98B2E645036EA0E2A50703750503C414FD481
+59ED89612409F61EE3E8794BF6120D19F66B876A7FF4ECFAE639ADBE17B2F1D4
+5C4DA9258D707555836375F170B01A451EEAD81B9434041BC67D84673AD592F6
+10740E221C48DE4166F13DE74F98E7F0A9825985AEC57C51BB8A58ABBD1DD2D8
+2D31D9BC4EC992950E15C4F6909D58F8128DFC279E971FF27E07F4E7EED809E7
+58C8253E4BDFA87F1086739D57A8D57DEC9ADC72C1FDCC1C5ADCA391C6AA1551
+39EE932FD41A775C6BC80C5B47B9642446CE137A7D8E85492C229217AA90FE15
+4F1CF1DB8894711BE82AC278EAC0E970C624C3EFE0F974E5203651C4487D0953
+B7ED764FC803CE2220EED53A54769B046ED35DCB0A3BA31EA49FB26B67C606BA
+912E7CFE29DF3A9E63DB2CAC989AE8BF9E24F61F09408D6C0EC279C3E502575B
+34885F4182B1E48587A0F28BD9C37200B29EA57E0B2EF81D1703815867087127
+244340E2C0AC28E1377247EE3424FDDBE111010A2084D243F5A6DDA37A983D29
+3B6798690DFED6AE09ECC39D9C0EAAD55B1DECE5554D510E52B01271DB4E1421
+BC767765C125A9CAE24418945C52D60D9C7AF61C3E2AED45798D4618351E3E4A
+E0291C63829D55A28828B99444D49F70953B19535C069816076B29468C1719C8
+FDAE1D38710D0EB2D2E965F75DE15431563FC843DB9FC5462367B1C15DB0A27A
+79CF8D863F42496C03D7014725A3C14233BC2D800776A46858A5E3A026DFB90F
+2EC843F94E1FD3FFAC8642E800ECC8C5866FF777EE010A4DA9EA2FDDF00DD0A3
+D323FEBFD7FD089716FD44A66B5A7C92837D3C6963699F0007792999B361B007
+73CD354739BA61FF60307CCCD2D20829C545E1C46336BDF2E321621BBDA8CC6C
+4DA1B6359039D0B367172C2D6F03A09E4A0C6CB22D876882AD800B8F2EB42A80
+FF637E0BA29B3DE49EBDFFE6B4B20E2FD0AB55042ACFCE5BFC7EEE08693FEA17
+B161F226DB515948EFB62327F3D3319276790754B87945A92D1C6ECE7426CDD5
+98F5182A9221373C64EBA95A09783A1E6986817F7C1B2A450A49F6C83C74721F
+EF428DC7FFFEDFF46DE550FE5D5F224F04C39B22C5EBD956F3DA47C07E206270
+5804F42211C513B100118A81A9B69D709B7F23173640B4E0002C7A37783ABC5F
+8DF3CEAB740CF1F46C0751435CB6478CF952AA66DAD3A89FB2C20CD382A9621F
+7FAA723891A1C7BDE39DEB1AF05D49D85B730B0CD9A8EA73AE53D0CFC48638E2
+C58E11633573A602399031779688887D418403E8813CF28006C655488B58E51E
+3FE78702416106FA78F8F4510CA2EDD76678D0738B4B90087AE541EE0F9D9B92
+E0246483A64CB9E98555505F8154CE165CC5C1C5C53DBD4167A41B4E8BEF64D6
+C02E8EA6F04BF247B7A4DDD7F15753A20955307A2A0DF8EF9F7259FB17BA4072
+9BEBAA3B17300F127401FCB79A9EBF5745ECE0D928A77B6C981A4A679060B0BE
+F2D2A6905CA4A90C37B7A91B8D24A052967B334CE50BA0A2217BFC64831E6EAD
+EEDB56CDB42D87A3DB4282DCA71AF6AE97E05E60AEE094792ACA1B36B92170D0
+D109086F0A022749590A98392761F56D14A2FE06D1C3F24A9971EA5E965C6E4F
+8736880AD9EFF0F62B6A90D8D531D1EFD0524D273EAC1EF5EFB640BB3D985968
+D22B870106950796612D485EFC2501703997480E5E4CB7FD4A10790B67CCEB22
+F662C109923CC09B078CF5AB0EBC60C3F546CDC799D95516FFFDD9C1DF6EDB03
+7C04D72C9050C7AAF14A86A10E839D7B2AE7BFEABBFD387858CBAC05FC72188A
+805BDB5AFE3568EC326DA47083F41870F2EB62A934DCE65CEABDAF3D56F606AA
+562E9953C3EC0E8D507A5045AE33743AF01007A5E4FC1B8E75181B5F35043BBC
+F5EE392857E54D02910A8A6696A7E69B296498212232CDDBF408DE302986E937
+FBE4A0BCEC1B45C50A5F5954A42F03A06EFEBB8950990154B7A12BCDAE5A7E79
+815163E57E40775EF8C5070283906D6AA694740965D14784E3C6191C38A6790F
+E506F098DF89D3E5BA88DBD521AA030D63CB714F63BC22BD8939253033BCB71E
+67F5ED3B8489F7674AC747CB8751456C5DBCC90A62A541A2C64E423EB8F9874D
+D1ADC64E79246DAC95CF4F4AC54B1520E56746F304F7237CF548564B9F19AF21
+2575849200F71BDECF8458F1B704DA3022AEE342E1B58F5AC762583771E50603
+02951198C2F13CBD9D5C9D712B65892B904F21AB2D12817F37A1EA094BD5228E
+433A8B834FCB549A4AC827E3A354FBA436A8F9CD5C549308CD6C8511A4874069
+C24250400DA5B4AF622585B192E215B522C24CBCC903BB5C6AF81823CBD021FC
+D77A63DF63272264C0881A9CDF5C06863659E153B9B32C661C8E2C5518A1F0DB
+F6703929E7A3F5F59489502D4A684BE823C3CD4C248E8FFAE9EB39709D0EF868
+4EFC680E48EC87D258FD1BACD98049F7E2785AA8C632EB8529AEDB213CA3AEB8
+F440E53A51D19D13FC0780F57A958F858EC97B3EB29119007C82137C429735A3
+AD3C87C1F957B557AB80E2FC0B55F744B333FC1E49DD5B69DA98BF4118C8CF84
+A4FA4EF636F797CA1258DB55C60864A09AA75E90C5672944E282552A3800AD7A
+12A2990CEA5E60255C4D57F469F6C79FF6C7D902935AC62D9E078A2F786A926A
+2063FACE68DAC7E39503C708E42097D1556B4B3F9C07CB81D2FA93D498E307C5
+E83BEEE06B38A344CC332338E4E566C0BAE2A271E628ABDF8F0DFE2E4F2B3295
+D13933C0DD6D045E9757FE536020F5D529D1A018D34561BCE245D9BF37B249D9
+1455C7CDCB757EC8BD8B422D1E72A30CC2C3ABDF933E42B8B5C8608B4B66E45C
+5F697CC7B6A540B83D74B5A3E2DB05F1696B2BFFEFB1C9DED89FF7B23B423D4E
+BAF347483B1DB41E73B91665C5F236DC6D723C52E685CDDB87A89153EB875BA9
+3013CCA734D0F953BB286F15CD350F0806E6693175024D6ED4716D7530D2CC61
+4F18A7C8316BA9CEA2FA4370829DAD71ED13A7C64FD1D3EB614CAB3BCF49034C
+54A748AB40CCC5F9C8EF1E7C674BB8D16C2CD98541621E921FAED15AFDF61844
+8A4DE6F69E2E5A829B0B0E4652EDE1B39D5666700A6089131DBDAFBDC0216308
+AE9477B3387EBA373A1D6922DCED787E9B387205990C0AD14F8987FF7F943E88
+717046574563B81FDEC527D71E27A6930D9C7A80A731E87F625BF2FDEB3DC8C2
+E4DABB309894441E2A9042F5BD0F873F110A2C4C3B6B656E4E32B4B50DEE998F
+6A483A284FE3CE1E9568B3BFB5C594DAE1F6D8388DD57F7B997EC0283500634B
+D8AB357DCA4BEF3EE15F90B5ECF129671C248ECE8AD54F0925D01B91BF2A6BE9
+4DAA29A24FED710E98DB260E960347F4655118DEAF07444B6B357487FF4B1128
+390DB70513704DA8AEB05270F8ADE1AF7864D3AD3CC5A6B998F8FE342D96C385
+635E4D9D603B6CCEEED9B4564A96C34AFDCAABA0C5B89AD2A97E7576EB895DA5
+E3E2C11B376C8A938D9F4C8D4B417CFD93F33467E9A0D8D5C9645A985A75FFBC
+99F55E7F918D4F9EBC0D86DD42DC3ACDC785C4345DB9D41B04DDBDD99251EF9C
+1B5EFECE31F81AEC5479E7CDA0CE66F6849EBDE2D5020B6724EF1F4E86A34328
+A099BC8D3AC972A7227816D67847520572A897BE0F8C40A8E1BE23248A938BA6
+E7E693062D0E3B08207C73D0DDF0B1D80D7D1B023375E68FD7DB8C430CE24643
+589D7437AC26D90D302E327A352CB3700F360DC788720BE66BA728774242B8F2
+5D09C3FA31BF50B20AACD292A73A00E71466BAAFC5D62A3308656BC000F63539
+69D8716585B3B53044C9AFDC867BD2A84CF27C1CAEFC22E9DBCF85646D31D133
+53A2E024E9B476FF1517BC724706F13656BFF89D8E2FEC269F8AC0E861FAA906
+16D346483CC734D5A60FC0908AEFCA959AD94B0D95578214C363ECC752A88855
+CC4122C827F07C9AF43E8D3767C744A5FE425D83029CD3A1F9692B9DBEE359C0
+76AD3E9BEFEFBABB48C8E28FCF3005113F33CF35B47DBC7529AC0F1C6DE49D09
+6CCB2E31B50345EEA24555F6B3DD8E0C8FBB4089DE5B922406EC4511820DFE06
+85200EE1E4171461844FC866C9E8CE869F99D1647179A4C0E2F930DB66DAFB25
+5868DBE7B7D4A8DC6000100B1D51787524BE58438D5EFBA81C21A189EB2D512B
+601196068714204EEACF95D1059B88B1275B8584BC28A462DF8BCC41AEF514C0
+41309C9485B15F5BB34057A5963F0C4F3CEAA7B9AB4B254C81439D3AF79123E0
+F43126E76C8A547E751432ABF428D6E9649E5D2BD08DD18F75FBACFBE4CA3679
+4FC557345493EA705E3AD9158820801AF324EF0F5F31AEA85086978595BD7DED
+00074686999C025380634D66DA0AD60CB71A7535F065E8D60B1B266BCC303966
+1898A1232BA1F41C5FA6F12C82DB90C01059EBA861F5DA515019D8F39589D20E
+C6D20B1E018AE32C0A05A7C3F2210BD1FDA9E235B6C8BF690DB53624824B7787
+593610563CB1BE4005DDAF12BBC662F0ED166456BB68C541B8725B3D24A1BE4D
+A4241215771CC5175204B3E246558713A8BE62C8E9DED5D0EF82330FCA43B07D
+38E5265389B47EEBBC4A54EF3578E8B27C61604D6D23E32C061D586C230D5543
+BBD863585E6B7EDF6AD9204D7BACCA0FDDC35B8F7315C9FBF3B72E764E9A5DE6
+DB7D999AB273C37BC6E3AFFB126C6D0B72DE2439D224879AA4B94D61A43DDFA8
+76A9164BF74FFB8CCAF7BC1AAB2742F8C88E03E46135C0E743904B30E2666F4C
+33E5201D39BFABF299BC1714FD5F019FDC26C87B4C36D6082183D510E41F9DF5
+A85151153D2C08AA6B2A07FB04AF1DF373B543F33C37D04A522BA6CC3918C9D2
+D794DC60366D622700C73712A3D18C9BEAC3DBFAB04039CC3F7FFF3AA33C63D4
+B97686F209782809B8B691107EFDAC1A50ECBA2DC0C57C5EE625A0FFFC6E587D
+B8D83AEB8910266DBD4F8AD6AFB3A79BB2DE6EE8026992F2BA4E1FAB49409E13
+59C074095706474855803781875F6DF1BFECCCED1AAB006DC49BB307616AF322
+6039748F8E9183078AD912154DDE6B6656AAE47A6E667EF2043F200779AE3B43
+8CA13FCD07E34929647B421503AF311DE50D29E3B419C90E2B7EB4533B592C51
+F029F3E02304FF4AC70B6798586BC422D49C6BACA5A1BB979B89B8985D83214A
+2914EEA06C6DEC0F3B8875F6075403028199979A7501626708263453A8377E4E
+8EC049FBD087E375E3034A2D224D507D1AF80D88B57DBCF3E172CD420C6B5F08
+BDB576F29BD7619FD83618E4CF7A8EF06DD99C2653DF7883D308BEF9FFD29114
+7FE92E461B5EE7B198B1CCC23A18407DCA12B2EF2D9A77C7548F59F8E8B4EB89
+6BA07BF76AEBAC8A10D4C7EEE5C41B1E431D6CBCF186EDAF170F26ED80F06C56
+9889AB624E9FD5D9FD8EEEE73FD5654FFC0BDD9A0056191ACC0C6768638E569A
+C555019CE11C670EA6815679235EDD06510B9EC6B64C8CA4471ACF893AA895F3
+812C0D7EE3817F0AE3865C7394F534881BC67664319EBF4CE1CAC61CCBB065EE
+84FBC8D2962FDB6E4EC96BF4893C6441F87C0E7DF11A16DE9682CE21220951B3
+56D3CCF5EFEAB2CA605879323C49D3FEF5CCF78192EA321AA8F6B9A4C6372083
+3433944F5C45D7D81B74BFBBC715CF4B88D92FCD27341F88348FB6124B472F31
+D4A29E3A45ED4F95F86CBCF36FAB540040EC6E1E43FFC406C09DDA8105ED5F0A
+A09778F7371B591C386C3B3B366C404B8F06AF75FEC0A1788B2A87EF4C4F97D8
+9F18F9F813329832E849A77CE449CA5822712E6A8E6BE012FA6022C65106643E
+3A9453CE70344AA71AAC485AEF6363F55DB6B0F84BD8B8C1A322A5240B604E5D
+63F850AD5E9E4E34C9B403C3F37C6C725BA23D0B84829288BFDC8C237079C009
+E8B4965B30A14E381C4413C38DCAEB433E4267BDCD435A8150B4C6F02578DCC0
+09538046A1E22CCE81ED17FA7692D2D801735638B9A45ACFC00E097B7A25323F
+CCA89361DEEBABB082E01685212EBA99B0EA448F04E2AB80DE3E2AF93340EAD2
+F01B12095AA1A27B6104ECC6F37AD8A7BBBF107C29D66ED684CEF63174DE287A
+DDE42E48BC75F75CB60E42C07C100309B5E175A668B968F4F610E7B1A1303EE2
+422E3A07D1CE7E6F6B178C9637384267F5E2036C5E931823F03E893E67CD6841
+5930E0A3C95068FB600B00A24B7795CB87458CF9A3273F4D9F109A7ED6E8E7EB
+F96062A5B917C07FAAE3F23C1C959F58CF0DE0A13DEA29BFC7C90A9CCDE3D863
+E1F33AB6D2B0E4F0542F998BBA6CA65017A501557E3490635C6047991BEB7FAB
+0BB7B21708DF55D4D72C6297534B5233DD995F4C139FE32BEA7B35FAA4C58EFD
+6D0E5AB5B63406AED8B0DBC45EB3319FD0FF48BEA8AEDAF6AC9B2040B11DFE46
+B8E2020BFA7DAAAA3E88219A5D708FA2E468E58BDDE1D5C34A86B3207C8797B9
+22F3BBCE7A04AD47A5818E9D0E5D4208B69B399A2FC46D530D1F0B6E5A02D369
+58AA32F3EB78BD731BFBFC629E1C66780F5BDE5A7AA9B3A0E8B8B4D9903049A7
+3086701B5B8CC30C5FECDC10EE651649AFD6EA38352FD24A86BE537D3EEA4F78
+DF1D7418152EE6BE44773B1E8D40722DBAE967018FBAC0D0924B978F5F0EF78B
+0667351921F6B5C69E95ED3024AD6F7EA51456C0B0C6A507D5283A0C658E7794
+115F4790CCE777B12C342A8D9FD424733AB87F6CD508EDCCEE7315FB2E35EB79
+F5EFAC06821ACC757075B8F35DDE83B67DE3829FDC8D85EC7EBBCB40C919CF14
+34841482FFAE2152EC762F03B85D2CBC989338248866FBDDA72520A4A290C73B
+F325FDEA401E11AD0D6FF97B3C43FC734DCEBB822EDC7FB3FEFDC1DF266C2808
+D59319BE47F906CFC42B0195425BEF65523A67AFEBE1023105379600358DF8EB
+167B4D18985D7693A4A9D65362EA87AA15952E1A07C6EDF801540F51DB9ED625
+9BAF06F1C86D3501B02FDFE58182648A606E117AB9B3A76F9172D35E49955634
+61F39042A5C7833149728EDF03DEAFA96A0EF488A50326EC3B3D66EAE9AC7B40
+1DE6E4D22B1FC2B2A1221AC31C4B7AC5E5DF5F4B08125F6833DBDAE183402A06
+808EB11C4163EFFDEF76E60120FC6258A43FCC7AEF261F1D5D3716062643DE36
+1C6B9059AA254C0B371E02B0D682DD0930195322873A4FF8451283B694B90F6B
+5CB0C285DB88C29ED5ABB798F8ACD99F31C4DC38EC1A915BFBAF302FF8D0B9E9
+4CA98E78F6418E5082CF09115B0670E8907031AE9D56D3626D1D851731D32216
+35656561E3FA730A8FDEA875055D68131C036071694F237EA99B8D0BFED1F740
+903C9A87FAB501B475A1513761E50B92E1858577EDE8FDCB519B2C25A5CD8EA1
+B9A7BDCDB100235EA911B4B611422DA4F5F546099B0CA06349AF74C497908053
+C0E16A196AD451DBE3BFA1C00408288BAB7F90A07D91E70D619647FE91534F40
+89DD83A126878281E9C0735B86AC49C2B998D2CCD6C1538BA72EE028195B5768
+4C3FB0378BF7277FA2E5F8320D5F125D1DED74BDB940E87E6626A207D368894D
+D4F9CA9C5999C671670175D2FBEB3AF02A052FE64C56BE8AF131E77A9BE4CCD4
+95DA08DC7382AB34654A5B8D4BC0CC795B17A15E8338EF32E073692CE7B8EE8C
+4B99E8C071BCC02AE52E77F929A8A3ACF7DB34871AFB4F5415400FE3B70239E0
+37B13043C93B94C566B13845D601B04D3715FB78FFBA8A37A7FE55BB6156CB93
+246BBEE8CE5827F441BAC607618FF9EDA6E33A8A3BE2C212941B637712144242
+8EDD10ADA0CDAE27B7184F4146A81B71D33228A74EABF6F50DF87652D3B3DAF5
+1E56C7203A4FED366321CC356BE9762C24D89320F3F505876C61F6DAD664B387
+BC33221F235BE6A85958B4DFDA82240C20D5A63331C3C0FB7749E14E9100D516
+CF2CFF63C3D18D2FB522EF3FD51BECECCD678A22E71ECC8C543D01B2A6B4F526
+254EF9E6ED575100C8882A19D3600C7B9CA3997509102159D06E4968A6C586F7
+C9FFE27A5157EF0B5A8B53F5BD0731AFCF46744D919B303E46C0090E55D2010B
+91424E9B5E691734773FC5158DC5E67D09B2E1C9F702730F6C94CF06D7E97834
+1E5905CE5A61255B9F6886E5EBE4D4C0B213A22364440B2613AC4E9E35D6BD7E
+BD96FEE8E15C45A650E9327BD3540DC329E841133F081438674E04E1B4FB06CF
+F8A654960A1C4836F7C9C72988637230F0CCC6029E84CE6A76C7247ABDB0C735
+963D94977C209B9DE09C1E9EED4B64579FF0AF2DC57C4146F25E93AC906F06A0
+C0A3B0063F4A5B5B96181E3CFEFD724018F25FB3ECEBC73DEB61DB15236C229F
+9527E48E136CEEADA2822C02030BA795A466351E5E45AF71956673F7D5D35D27
+5AF7EF45352A3D0BA52E5599C30C54D5232BD9985FC581DC99FA6D6EA33116BF
+12388D3A5271F165825B08B8575ECA7AB3332FC8150697EB7F389D3021B36E69
+A37AE45229B600A6F1D0CA04D0FC950D5884E2ACB39332B24111D0F4B9D11DCA
+C043645EF6CA812282608E991D4BEBDAAF63B85C046CFD0F2636D7EC2F56E429
+774E01E08D5B5A1002E75200B12A72D39B592CD5738DC47165F2B920FC2C6886
+BCD87569A396C864AE173A5BBF2726F7F4C6D506B23B8F20DC20314F40F1DF6C
+4704765C8EA0BC21898E0CA8D908D0913EDEDBA892FAFF7A40A1B4A25DF02D1F
+707DC35B2B46B7985D49891C41634F86153FD3ADA0758F627712BA940568191D
+A64EE0F93BBD4DA10F6EC71E44BE92D46B31B937AF71FA3B50E644B30C25F9DC
+C11EC4D286F0977A15E615BF2E72BEE4EECB76529BAD81FD420A4A0278A6142F
+CC8FC27BBCF3726A41E13EC9F64A67B21390489B4834BEE73E77EA35BEDB069A
+C1D791CD9476D8484F10DCCA690045F1577F8859EDD19A7B5FC5A2B2E78F47A0
+86F292FDA42D783D10467A4DEA7767A351BBCFA5792555A4557030757B695D36
+EED918EEC3772F132EAD28D998DDC99A7FCAC8854AD90A38B7A25A9270BF0EB8
+70E452CB4026CC7C163A6DA5B5AAECD950C4593748542FD80FCB3E5A6253D0E0
+18F692617E694539A25FDA688BF874EE4FB708054902567019A1F5C4DECFC561
+10753B00A81004164A0DA0D124C58ECC52367BE5995082431B80AB76D2ED130D
+04704AA8C25E92DBBA9552466ADC3B2DB8CA68B9C88EF017B09D48ED8DC37F52
+A9C14C40EFDDFC0F725EF574B575E75D260A7926EABD120D8FC69512186BC598
+13720A3D4502BAE525DA499582D59A67485573432B179E595381C13DDC012A39
+AC702B68AA3A0C10BC3EC93B8598246BEEB279FAD0DED97341EF3C4563539B19
+FD9C37DDDC01466C97DEB627783E12F82878579AB6ED8CD1E019633A07D9736F
+41B43A22EB3FEFC329BA87316AC8722CD1BBBB32DB2A1C6A579B2DF85208F67A
+41BFD2E0ED61336B1045EFC237E22DD1B6921537254A0A364681322D5AC4CABA
+4E353AE59FFB06CC5C0F91DDD5CE97CA192647C93311486F986A8BB8C75AF6BE
+4C2490EC3B518FC3D903E18637C71A5075D535D81C59A8CCC6FBAB9692E64470
+AA868734B5EAF12C1399AAE7E48399516CE20D9CA2BCF3FE9BA0C99C6EADDAB6
+06FB7C4164E1F801C22A350CE187171E9C62C55A50A11FB48FDA15BB68D98261
+3D849E7D288CA8B341FF9DEF3F581221E998AD58FE7923DCADAAB6C9C26983B4
+D6D833011B19C32B0C53735CF223D13ECC2F8BE42EFC6621918728B868D0C854
+3BAD843A701FE1E791CF3A44DC467A08263CBD04F26A07BB3F508AE0423C46E0
+12D19C569038C49B2DEE45F486EC52493824728C14B39918EEBD47C5397CB821
+D634E4F4338F33B0F04BE30B2E221D1063D2256023297257FA1CDDC103F9FEB6
+E8905C0FCDA28F0C6EF10C107C3B84607706F5945ACFCE13BAE0BE17279D41E2
+AB4CD65C880C8A15F6A0E431E6F104A90E091A4265DDC746929E7871642786C4
+690233D7B26B40E9A39D4369A9331B8812C3414B155312BCF45831E47BFA8F6E
+B90AAB07B11CE98E6FEFB004D85A7718974E920946E51A10BDD246CF79C83A2D
+44FFECFB76C1351951B80F6FC8D2A106BF0D8A12FC27E81D51444B95E40541A3
+88CF04B9905851C5FD2598640CB0E8D8E9CE4EC244D788517F6E62D39231E3F3
+2DBB2137788AB2AE9F97E56981708E61F49C561F679CD5DB030DB3CA2C042907
+E18CCE15FBB0029FC98B122EAD5751C8C71F0D63B05F2111BC5755EEDC61B44F
+14556F5E5486AE348886126EA7D666F4F5B1639BB00B6FB4B5D1AE78A8BE8976
+C551AADB26C734DAFD7B93D69936FAF0D0C504D34B62F618F7250749F7780CA8
+ABE7178066509E26112076B813D49F77320D3E0CB7174231BE6D0B8BEF004F62
+D1ED971C9596B263640CF03530FB6AB8F47DC04A588DE1064D7C1179168BC8AA
+A5E4FCAA0ED0AE38DD0A1CA92A522BC97066B7A64A40C69A6DB09F840D10AEEF
+4ECE16253C85F258058E03962F9B61A3E3C9F59350734A2DC1B4DAF3AD1C34F9
+C42818E94BFCB228FB6B41B92F1F9E52B36DE3F7272AB1559A18C937CB76F650
+5ED72AC284008BFEBF601BFFBB2D1689CAAB81F98403ABC04B4A6FD3B5956C9B
+15BF02E470D9C7BFCBE04DC00E75DF902314350EB8BE7BC6F21F0B6B2811EDB5
+76E409CFC70412EE0C1F16611A82F89F6882921057C3D6764300C96DC0A0EAED
+A1DB30C6E7439BC705A346EA1CA3B52459F4775AF3EE9A00CCD580ED27C1E2A1
+4BF77C036D466F48F5F40EA39FBBB548354DBBD4D059D3C3CF2B1E9FAD1113F2
+5255C3AC319C87E770332C0428B8ED1A10D00D5F5D1CD110C2765867F610BBE3
+382AE901CFCC3F907D31D6594F50B6AE926F4064D4DEC6B0791EF0266B99E881
+1F3C7056850A97893D2A00DD677EDF9BA3E12F977A1239E44FE5FACDEE92BEDD
+A495DE8041554B6391A2808E9CB2FECB553FE7BF35CB659BBBE6B37918C862EC
+446BA6A5F7A9B01F7554BA12B050C86B9220DFBB9008012AAFB56CDEB172E27C
+6D5CF3C835E45D9B1B8C3C044090310880ADC36B2C056447B034C1D8AEF332AF
+64B348C56A9A820AA3CB4D78AD5F423EC7E9F2844D7914FFEEDDF38F790E9518
+9D1704CEFF9CDF736457D64FCCC8E0F7F9E1A4A321F36A554F3AC749CE6EE742
+6D209C6CF009131C868C9887550F52115D0756DCA26E21B2399AE37F4FB20ECC
+A35388ABC07CA8B6B60E3CAEB64E7FC1E054AE495CA80DBA6E97C999B3BDCEF8
+282AC2433C5800B44799F055732ADD4BB6E5869BAFB3194217DD5DBCC864EBBE
+3915FA3D4058BDDFA143F880671E3B5A9E9E3C0035686E6FC05250F08D2E26C6
+91C95F62C3DE637A34A50A483F52FCF0BC54DC4400EB29721C337DFECB9085B4
+354499A740AD101F63C6B129644D9328CA80295654983797F3EE6F5439679EA9
+B320D777819CC341A2B24CEF879730413E13B6D067D5B0D3098032508ABDDAD5
+20D39762408DCEACCD2C0E01628E3F8EEEE05A02D46D34F5FEBB18076DDAD189
+DBDA369ED83F26DC39323E72D091DF89868137B668F7C04E3929F892C134E6EC
+A1DD4B4F02CDDE4BEC28158D8AFE6D7BB80FC3926375CB6FF2F91B4B2ED211D1
+165F57F05945B09C3A1DF23709BF809328B73C523416941F4DE20FC7B729193A
+9774952BF00685E8E3264A9E6AECB785EDBD595900F4DC79FEDDDBA09E62B326
+21242DB9201FA07FB6243FC522B67A44342CF64520206F3499D3C6516FD3A7C4
+002160C36860A55F023D68618861A071E3EB7DEC409583A2E935DF2CA41D29B1
+B99C395AFBF964627351D9D0B1F6D7441D2E95C5A2DFCE5194C3143CF55BB96F
+4B25A30DD9322494D4CCB796F57811E956F515FC373846842DC50313D5A89FA3
+58F69DFAEDDFBBF71D0A990ACDEED7580478DBAF4B3413C9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 35 /numbersign put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 89 /Y put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
+B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
+AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
+7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
+20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
+B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
+68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
+D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
+26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
+F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
+77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
+BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
+C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
+30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
+148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
+E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
+E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
+337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
+0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
+472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
+A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
+30F5D8CADBB3C1E3238EB07CFA0721C8370278CF356E3C0928DCB2FF192C55FD
+32A12B22535E518EED14BD541187436BE7A4BBA4B7AE83DFD043D5E332B6230D
+7ED3C4DFA4ADEF53E2EDB4E7A81933F3D283B228572E03197E402CC609FBD0C5
+35D0847A11866EE335A4DE822D635ECD9A93F570E44B0C1A7095B55948645CDC
+60223365F28F6722FF4286711B9B82030D3E8D27197C4EA8A9AEE96A85C810E2
+285943B16D382014423567AAFFEC1352BD2528BA782A91B3507FC1C2FF4D1427
+1991C3BA380CFEAB225AC64319056726CFCB9F5B9A2CB301A54E83D60B73CFDD
+DE5C3E6C953FD7BFC588A7EB1A697F97968059303478994EDD1E8FB4BC9E611D
+AD154557B4F64BB315051F72AC52C9C9C874098E609F8E21CDB7A53F9C0250B6
+A52D91F430821F2640AD52475CC03356BA0DC8AB33317F57805A8A3060D0BF1D
+00FB88E5AC560B97DE6543EB4209DDF713770B96DCB421677D80C18F26FB2F3F
+AF8214688B0837A2D75FC30215F146A7705F19644F503254C063BD2C6B8011AD
+CC5EC760FDB4DE49D7977136C5C52C39607C99DEA36483EC81B84AC43FA741CE
+1588B84D618B3B8A85A9A181BD376504BF97DA22F85AF3712BA4DAF9AE888383
+0AFD785AD5FF362FDFB7E4634F90F05888C09BF22096E2E6BAD82DFEAFFEDA69
+FD410B0547607664027309271703BC5AC1C2AE0CF81D12D51260D71791DB2ACF
+7953F524DC1D8FE6400AB0A202F27BF4DAD70FB45221AA1BA1B75E65DB57C6C4
+8294345620E935F65E674D96A9E03215E2F8C3EA3C613DECBDB03E7933985D4D
+2C3A1FD2849CAD2759C5BA12448427A3B5379607E092C2D1408FA85B50F2C17D
+CA4AE57ACED1BFD7CA0BEFA739DD287060B0C465306E7823EC1DCC4458E95F88
+0F5C234D7D6AC3834705EFB6A97391D05519BC6DD793C5F505EAB387A2EBDC70
+7AD4608D8CBAF92641F02DEC095E13EAC05609EB292BDA6181063A4BA0470F28
+7EE7DD13BE6204DDB71439142B2650A9C25CC59F6E9047B320A623E69D38D3D2
+D8525E5A7EB256C8C56731EB17C819151118FA4DD309BDC2A23DA03F3CF3DF2F
+EA7E5263EB4E9F1CCDBC3859CAEDC8F8AA3DCF8C9771C5B3D1A972F2CFADE48F
+400BDC235FFFD1BE0AC7B70A8BB534653BC0BF620A5F076CA49D58AB295D8ADB
+61F9A9539002ADB454497A0425FEB21C85376C79CEC495E784B5D33E6D1929FD
+8C18EBA31803656CAF7EF3510139345B775074B736461EF106BA5E7061BE46EB
+0E0138FFBC26018B4C8987600661367C95D7F4308068885D46E808B67FA874B4
+C6565F725A9FDFBB6F6EAFFDED566B0037C4718C87226813EDF9BFC5D52DA7E6
+784839ECE642AA483DE318C3E62EAA6486A7B1F3C6FA6E1941B7B8728496FD6E
+713C2101A5BA74EEF2A87058247BDBB8118F6BC90191565907A67B4015D3CE69
+2D5CAAEF03D97DFD18E4244D8E64B757334F57545A636398DDA3ACEA39DDE44B
+BE7197F61BE2BA63034A58F1C7A1276A007A5B0E3C2FFFE04F3AFA221D337273
+2CAA055FBB377F02B99D4C9B8671A2EF80402C2B35CDC63E106525463738D5E3
+6E03AE050CE5615F01E984A32A43C5DF31A065D10C3AAABBEDD89C37409E1A21
+8E454817CF35263E3DAB0A962E9B5523C73D6DB4FA87DD75B5F9B2355E868CE6
+E2C0D67F78C1B20EA9D94D29DD1D0E9E86BDFBADD6861D5FF59FA8C2FE48E326
+C1DB24BAEFE3A07D3160D94F43CA7CF102FC547323D02FCEB03E811EB0E6740C
+9E1C5CB845E98379FB0FE22275D004D4DA7D3BEBCB65DD3798F55C6ADACDFE74
+BA80489E2B7B72203C0C60E67C9E4641C35940FBDB8293FEB74F2FE3F7E9B0B4
+B262523A231C02056E79351CFB588FE853239FECC939FBFB048C076A94ABBA89
+804EABCA9DA1CA335512E7FDDF79DFB83B46B6B58778E02437F461802F6C1149
+65CD5074EEFBCD2A47E32C918A0A69AB06E7298ADF1FBE8350AB7E4EC9C99FC4
+82997D968420480D461CD953E32B087466AA41250E216D4E7E050C406E687ADE
+30D671E0C9C1BAE8677CD9EE726795BEE70C52C1CB3495AA8B6BC9BDA1A93D78
+24DD0CFBF2597E6D4A7FBBF8148B6E3C8A287949294AD6A4CC18AC476469434B
+A33710A602EE386472CEEC6DDE115E72C06C2BCA6D39608FEE873EBE25F3267C
+6BC5E893DD1BD942384EB6BF33201CA202A28C3FCE4893153D77305F118EA9A3
+EA7E5B68DED09D320CF809A13E07EAD2DC01EE2A94875C7BAC7804B57379F98D
+AB6218FF571D149E39BCD685D708B117FBAEE4C3AB49A0D6B2E1DA5949D8CF59
+D5F95739345DCF026F694E331439CE61C787C285A7E0C5A34918F2B6969E4B52
+08AD9A27CB5AB6985EE5DE82A811B3D7553A707052342FCE58BE426C726A4075
+EA6D663A442F871FE32248E4D4F9E06E89420DC6C6C1D063FD3758739FFB46D9
+22C2DFA68F679A7132CD835CD38AD25300E83B981A9AB8BAD0E2C4A1960C7A46
+56708C9EFADF3731708C13F2C9056A3BCB2118872349F06F25ACD2A3DC889598
+2077FEB3A06A06800C8ED000F56A82BD073347E434D517B0F87FCFFE1361430C
+DEDBA293C660527F0813DF894B7661B5345A1AA27AC95B4DF6C8CABBC1724764
+CA6DDF1547EFB8CF84F349681FED8D666E120520C4B7D6DE50A5D20630821CDD
+D821D9AEBFC38DA2989E7AEA822FE0929D6DF06787D280516A97671FB4C968C7
+D6E78D0FCA042D3AADF6AEA0B26A0EE20CB5B4073360BD6FE1F913E43F65D309
+A4794732FB47C1B11E8E40FBF73121219FD2CBF4666BEA01941F395EA768192B
+2DDB9126550D6313B16C3D681B19D80F5A1B79E16AEE4594623BD1CDBD56F933
+A7B756D8358D6A19E06440D9ABF9BE3C8D8178E720E9251812754E30018F4DA4
+413ECBB17B76F5BF57A1AAC9F4232115F7A17FAA390C7241AC16E2681249DC67
+B56F992477849BB16672958752AE26F17B691D99AA07DCB5ED924339038B5400
+3A9E59CBA4CC8D7851E130EB0E6598EF1AA02DF71564299DDA622A4E61F15267
+83E9E36A165A57FF8FB3D61299CB56F318104E4C77C743E82829D432ADC11C90
+F2F4D8B45241DC95F8C46F320A5A8AF01430D6669EA99BEFBB97C75E06850112
+7E88350FB6B616E4CB2AB584DFDA7E86FA9BDFB8FE3C938DCB3169A488DBA29B
+58136DF8D6B8F1B7EAD48BC3944F0757D37CB8A0CAD66D035FA355BE2631F7A5
+FACB13DB97C560CE15CDF49856524D5BACF9E5445A2B24AF3ABB2ED577B700AB
+48814397FBC7D9DDE35AAE8FBF9E494725C90F5E73879B19A112A901674A14F5
+AA43EBC61C9C83CED10D18F3B187B7F7A8D3E13C4AD12C530E761A6786E08ABB
+46545676C97C2692DB1BBE86F84FA593931A1A82FE98CFAC886EBE154DED7B75
+737B03A95660C97D7AE54D19696BF4C10150B0BF65CB58975EB0C9A6EF5F0114
+1263F02F5D5D644048F8B2E9EA7DA27261077C2782E8F3E8614215A455381F04
+EEF4F5AE6E8BC684154BF9B8A76504BA2B6B3276C817ACCCEC919429A89D1F27
+4C575821F5969465255EB21B64B965F904DDF602CB4501BC79F2C329F7866505
+B446470591C295122F2C39496736E4FC889D91C031BE95D12857B5BDEC836AD1
+FA7EB8436DCB5E873BADFF8B6B8C0146E60D0CA830057B9D731FB27BF31B0398
+1BD0895896963013C7FFD633D0C3B425FBE4D9510848E3747AD5A0804321005F
+FA5C2A72F4932040280C22E7FBE15A11A6AC2EBA8D4B38DEE581FA912A9E5F9D
+2C041DD13B6E8B9A8411B01D3E8C8884600239E16AD35991D36C0144A0480391
+FF3A9E10CF1DC56A9B3AFB48BE5FBFB4D136B339C9F6BB5408291913019C2838
+380B7313EE325F034DD074A7F74E3F21DB10C7C059B5367B4CD199BB69C1BB2D
+F33258E544EEC09EE43241D7F4BD8DD4A2D68C919A23C4D4A8C783F7E9903C2E
+0BE5D4BA64BE0621ABED53238423433FE096BAD4DABEAEC068653FA72B1840A9
+20928C50DC9D7E41E47B804D0146BD91A2FF56E2FD5856D0FC6F6899FD493C6A
+49C80DB7EDDC1489D59B1B41D7E597A747DF141CE8392B1D7B1BF4601B5991AD
+67E068CAF2DB187A339F6BC3ADBF27024A09FDF25D5CCDADD7B05DCD801ED00B
+044669D6DD3EE80700386344D96275CCD621EA3A39031F1CD78AF3B32A175A0E
+7D9D83AA8AF8373A66D7B4F8E06E86C1C669FC9ECF2F6D45C5B72DEF384657DE
+6E82EA09A2AD998588F94681D4CA62108D42FF708BF814059C5C5EBB4615FAC4
+4AB718AB6A528E752F25574829333974B08869602B5DF61F704E3F6BF1540997
+C515134EF7A5F39B5566B6BEADCFC0C8A0DD70EE0AAEAF59D6D9DAD8CA683505
+8ED1655A005634447AE9459912A2217BC042CF8380C74D2EDD52AB2630D63C4C
+0E5961BC7806F9588E9EF22F0C32F48F68D401C686D21B8986C6EA9D886B955E
+643D0C107A6E5940E79F4AE63563B33CFF51C46B936A874006143646874E7E7C
+9FB57424751F03D09DE8B73EE44EE35A1AB96FEC93632E095898FB057553EEA8
+AA79106C5C0D6682A4CDC2B182529EDAFD1F4A64B97956026BA6D9C4ACFC230C
+8B36B47FC9A78318B1CE370B75E3150F774B20827251CC2E2E748EBCF2D481CB
+A7247B41E8BD742B36BA7D3A2D1FCEF620F7781E712D05900B7A841B63F0D992
+75E10A8A6D686D9AB28A49D39726F262D81963C47C65D1E1AE23D1951E1BEF0B
+51E1EAFF5C67D7208FCAF18978D5E24E91F123FCE1A7C2E5770CB4BA7E90EF12
+4C41BFB572862C590F63B223EFA9CDE450ECE1075188AA4C582C021D8F3B42FD
+1CBE679304CBFB9F154411B4B7B5F061652FFE09040DD5DEAE12B45DCF4AF830
+1D516D6DD177CA467BC83239324B84F84CC52A574F30C3EFC4BAA573C8C15845
+68DFEDE6D1A1072DE055BD480DEDBC6B7B11771BB530B1FA0C669C268FB72124
+D54B0CA70812F5282EABBF4CC5783483589A25729C46D5D944216B1B4800B141
+3A8C860106DB3440C7242075415A61DCC65AA816E00428AB6FA9681A61A590AF
+995E3D5B4C1F6E12B79C8EDAE42A7C12CDB1400AAACCA84302D54ED14DAB0512
+09A4E89C635D2348907020C1CBC33FFA0053CC5907E9B417D972B98B7C6CB425
+C4B6A59ACB6B3CCF163049A78BA173E6B8AD1BB9FE92A5969D2A6F476FA16671
+5B102819182F0311F1BA5E70C72A2F026EE920AD2763DD383692FB904E1BED76
+B6E7A9D66BE62A9368821125DFC62E47A1672EC938E039CCFA8E33E18C15C6B8
+8E17E2AA173EBD213516EE495878B258C56877F8EBF87A569A24DD7EA033C5B0
+DFD27A970DA5449B65119A80077A96E5299B9CA1BFC5613AEA27E3BAFAF186A2
+BB60AA9E327B58F156E9CA4597D24B08F6C0F507EF11EA40CDB94D3D4AF9F43B
+A071C6F8ADBE8FD8A3AE6B1671933DE62A3F5E6BF231151A81EF18AC97DE96C4
+8E32CB9E9306EC46349A2CB4831E6C73F92D5DED37C11F8071A455E62BE5F3C7
+83A50AB50CE8E059646D6D2AD7A19CEC068EAE426C54155F2BD4CD4F7A64F98C
+507B110D9F70F91F3965E8F34118CC80CB69814E1ECB04D9860AF1A802FFCDE3
+FD774106CD23708CD0C66FC6270F8A6DBC030DF56950403742A357BBBAA330E4
+D1AFFE86977994FF2C4DBAAB525125AF97A8FEFBF7B7F1C797DBCDE9CB6502E0
+7CDC72D9DB78D365A73B84E525D886E2D496A686F59E4B3D92AF2B05A595AF5D
+BE0BE6DF2B309AF4F74EB1545404877CACC9C4982F88C35933C706DD48B1A5F1
+3E757F47189AFD3C782BAEC4B388C88F713DB2190C4D10898D5795CAADD8434F
+4835223DA5A77E486588087EAE585A4B811F06B8839052A9549F28D164DDC2B5
+868C1FDDC7CF489D294E4AE8CFB092CED0D17CAB1A91874958654D5D105BF4CC
+4DC04518496C0E5DEBC0A73DBC432D4C24CA6621335480912184DE2FB932C6BE
+2DF98EC1B2A4B80550C20D8DDA2943C7919AB0DE71E90AAB108CD07F8663B877
+84702161543D5F22C595E35AC00BE643AF3B8CDFE8B7AE4F61DECBD1E350A6A1
+4CDE583C9671E5AC09FD6ABDDB158FFA8BA2D26C522ED13161324D64996F8E05
+E5ABF5794F8ADDB9D710BB43621D6AA507D1E3A0D5C8B3F85E1BD02CB90CDB79
+552B54755CED2D6737A8A49429ACD3BE85D9A02DEDB3112996220A40C6183B9E
+CECC5BE181C5BC92247ED0C2EECCCF2EE9BF326F790C0C24B6B8BF6DDE01E74D
+D339246B0FB9AEA975A09D30F3C10B868B7C268AA1AE6303160D7C478E9CADCA
+E0561E87B19D47C07DEA9F0C46CDEDC5675BA9CDA1110CDE63B79FECB8B46FCB
+E28D8AE5E8278220918EE3396A64B24A1BA57391B1C5E297BF9B114685EE4A2C
+5EDF289B04C3E2255F57AAFE2422711F7543637C23017033158BE209D239C3F9
+45D37E7518F4D7D5AF7734C9693029984C538B6FE7762EB9F2EFA4F86FFC70CF
+E907E35BC9A4140802C463EB88043CB4E30FFEFE92C1FC4AFC8D84334619817B
+F27DC4CAE5EF3AA1C9585058788175C5D6410E77A8E36FCC92C259AFA68FDD04
+D8F72A01A388BBC304BE72D488515E1C6E733569582D34DCF1DD714F8DB0766F
+52F0D4993D0819920B055907A83CF459EE40207150627D9EEF13B122F26E9E5B
+4381734E120FC76B9FDCC1FC23A838EFD494A63EDE318CF30CE54ECED88EE055
+B7812B748AC2A718D2F096B77370245720B55C38F8BBC8125F77E2FD1A3FDD5C
+52E4B8BECB993CFBA028701516C1A5B8513EEF17F28E9B2AC49496C08E26709F
+C4A3823C725A12DC5278AAA680072C170BB5947844A57666072A3C5B29812FC3
+5964C6C6906FE1C421A19188B2FA9D631EF6A2BD53A7BC512FCF35E045378169
+50D375FD79176C4A7F73C0E1F8CC7E0BF389023836624798BCD3DBCBAF6DCE9E
+0C694ABE170731C2A980E75E24E7F12F48C7C35CEB28646C396801F9413930BF
+92342047F4570106FD3A7A7E6232C28AFBE05658835CD6FAD412E460E5257131
+A32534458BEE8FCDCE3F13A2D88CC68E5EF08F16AFB3190E55C094110EBA1832
+8CDE8F57C0F7DD3A4BD2E604F237F41B33835CDF1F35199C06C40445D07B585D
+9949FD9C0BFE8E05ECA9D7E3954AFD7D1E3640A636BF29282FFE88B28AF3EEEE
+63A25AFC1F57504F945F6159781DE9CD20247AD2EADF73846F6BF2AB2B46F6EE
+454E0D6DBC3F9410AD9437F699F7D5B542AC47AC37871521DE6F4A2E1C23A0BF
+419446E5A42B7A185C0CF6D8A0316D8E8468ACC131F7B39EDDB47E8B30C4C84E
+14BE78A42961A19E15048F6764BD49220640DF03E264861F6101E2EBCBA58189
+82084DE37D4776DA1C21192A5D18C0755606A20EDE6C58B825777BAAB2C5A28B
+6ECCCE725D5DB80EE72E5B6F6CF81DD2AF0757AE1FEBF6240B4BE4041A11D584
+829146716931376E9A6BAD97AA8151D1FAC010513A3D80DF8FBFA67885B3B0B5
+935D7789491F2E7735C1F94B3C8C6FB97282C8E5814C7AEA16F3C1859B833891
+9C8EE08432606D8A7E59466A40AEE0D51DC7830B53ECC1F714ACD06619BA5D61
+728216ED9DF6F2FF027607153CC93AC046DD826DBD2D8AB87DB903CD88D3D588
+4CEF8C31A18B0A07F936F15E325DC6966EFA7E82C7E261C8DC29F1EF84CD54AB
+8E0960DAF6CDDE5108D845E0D8BE87BD1E86E7C88A698DF5A4B76FD5F97CAF7A
+DC437B332525A0C3C4E4B14C3EAC8271C3195096C1293D23156B5C8C70CC3301
+70A745B4FB5905A3AFBA8933036180489D4A7FF1B31E8CC2EFC691CA017EC3E3
+26AB3269777D1C0319FB1CB5B89DBE1D4653B686A93356B1DB4C6206112507D0
+9B2F405DC5E09E000F8813E97B801480C8714965E56BFE531DC65BBD27B25BE8
+0AA315029709CCE49EDA5C46AB3FAC982219912F22FE027B653D905EB6091059
+7582371D7800864FDD082ADE5F7E4C90EF1C3E029D684F193F5D88D57AE3DE9F
+2D6D900211404B677B200793D45837239644F1C18E0C8F622E167E89DCBE6E97
+E9696A6B6598E2B1A053974D47797A02E8E6E434CF5850BDD47BD92BF3BA0EE9
+5EE0049E635F0C25E9926E19013D6D40537D3C65FEDF835F398A4E3BB903C7D2
+8F19039FA4AF056F6ED9B3FFF727C4EBB3231C1A6393C3E10433BC1EB42E9B94
+701B114560A12C174A8E94CA9A1570D13A3DDE76979D93EA7FCA518719B9186C
+AA01FA2ED051349B7227A8CFE07493C45E9888643638D873739A443925F8E09D
+E6E10DABD9405ECD216773B4036DBE6A15A0514EC278FBF483D03CCEAB345212
+135516E3AA29AD67A99BEB67312108AA94A4C42FA7B1C7DA1B9739EE1659B7F5
+807E13120280EA2DCBB2983DAB7E794EA2ADF9F12161F5B7D13DF8D0CD3130DE
+C0B4AE2B750A45C26CEEDDA08EA59AA2C6905199EEDAB740A0A712F5C15061C4
+DF84EB8639028A7F7AD29F1FAA73A1D8249876FC48C8145A3FAF43091F2C8C79
+C9C5B78F11684124DF972906DEF550C2898FD2055A1CBB7822639D45CBE0CBDF
+04268378B72349EB8B2BB59E7D842C84F6FF3C9E519110BA0FCE56DE8E256EDC
+D8C2EE962EB5232149E0D67C03C04C2EC74C8F58411057F71F94A28E9A17714B
+12569BB0F72CF6AA91D794FC16FED49144EA2F4F461502421A9FA311C3349C99
+6D7A5AD20741C0B6754BC3AAFB381F1C43AF786F514FB39782A61F081E58C000
+18858015A19B754082B4923019CD7DC276B42CA4F18C66ED314E14264347380C
+60FEC1E035C517CD4AE94C185CA5950901D88FEBF728C3ACCAF12C0D48B62E53
+F5A6E903C535BE5F42A6457F56701B299DC490A7C5AAC46217E9F21E94AF79D4
+236EBE819318653E11786B2CA223F2B701A3A8B84DD5015F9A86543DC417429A
+4649213CF234507B6904769221DC7FFE5835FA7583B39AEF6FE4296199BC7AFF
+CD323E2853A95AD604882E57462A3E44CD67915351A5C56E0B81A345847C23AA
+73CB4CA41417C4643095C9796A71A69D777EA3222245CE4F697CCFCD711DA328
+175778396FD7500F16EB5372ABA3833C3B758179E7C95ABE86903C75FC379CE6
+78AA73FF5C5BB9DB90BC4D24FF7EF2B27725EA8523AE7470BD2CD4E6B41A5ED2
+E38935EDDF72C1A18955660282DEB92C297BE051469A22CF1D93385CA458ED5A
+551FF29D4F9F44FDBA400A6C89B98901284F2B9DF463D0D3D297F5FB75D2B556
+E6FA1A4B631CE4156824C2709C392B3ED1DC303DD46BBA55EA6F882921F7029E
+1BDE958AB61AA78645A18500C6144C687E7DE100081B1BDF9BA371CC1A330E1D
+56C3F3B825993BD4B7FAF3B302F469F5794BC244BB2AC8D4EE9B715496434220
+9E42BB0DB2A2BA940EA6F894DBDD2DF28D54C0CE02DEE9B8839212091D27A5C5
+9E72EB34E3A33C4B2E34FB469738FD8371CC0055BAA748ABF623E04D99CE9239
+5BDB1834CEE82C9859C13DFEF876DA84710B20AF397694B3BF7FC161F02CDA29
+08E8DB5FC6A5BC6C70A7062AF48C2590FB14ECAF7F70C523769D62F9D81548A5
+C2F65F09E73ABC354F1FBA32EDB7FF8514B27DF59FE758EAFC2BAB094E6E0249
+0B7F277ABB661D380A1E2B2FD1E0B239071F37EE54C836BFE9E07074A64966B8
+EAE97C982C93614FFB953787635D4A30AB336F73F5B9DB09779A04D8AB330270
+5A635CAB68C53AEDA5A234E29F700851F1FA5C5CE946D36ECBA75B6AB49D29DE
+11C0672A02771AE60C2C6BC7A2DDF899395DB89507377FCC2E4F72E41C4A9C6C
+C60E4EF330C0AE9B4C10077D2011056F17CD94C8D2F9BFEC24B186789FAFDCDF
+F074C6B4F8AF22669B968081FED386B9E52BCE6651568525AD13C78CE834F2F2
+45905F65E985FF7BE01139BD55FF49929337D63833C3C9F21C846395FB5B397A
+48539905FEBC25C30203A57E16EE06E18174D22BE0D1F7E58C11DF5B5363FF36
+FE654E44198B0375809A3818494F1252F54D510376D149C9E35656CCF79C6B6B
+99B3F22B085BAF7C008EB7581F25E5C7ACD1250CEAB36FF2B1B90EF8D71AD2EF
+09596D22127C6A575495C80A5A9FB45F3F3D874F5018C596C94E37B86FB1B88D
+3CB8A405C4CD74AD8A19B8B341C27D070A8800B2E363DC7F51315832D0A2FE11
+A2AB4046ED00A83848189B608D7E94F6B374EADA2754C197F7F3391C9FBB219C
+868512E8D2B06AFAFB25EF306C508A99CA35884D232C658E0B26CF2A19C9606D
+10C4C23E5C77E309ED4579322F9AAC4B787E29B8C6061EF8D4754D0A6107C75E
+015B304F934F424E6900DF382A2F6161A0528D4358A9034242C05BFC22DAAC10
+3D67CD84EECE70724B15B02BD29D5884E327E536BD2D091F1B6E20056FE65993
+54DFCC6AB35930EF4B42C46F6BDEC863B9685F6A65F6369171271EE9DC86FA97
+573AC8566DA2F94FA08CC3482B1663EF1D105E293A25EEC72D5ABC2E9E48EB5F
+F485C3A41BB22EA09F9619079F2FC3DB05CB063A910FC7BBA9D92203549272A5
+C4B68D94BD0F6BA05FE9006787EC267AFF0FA38B509328425D958F264CB735D6
+C50FC7129586359B6298A48FB539223A01D4BCC1D16BBE98D98104549D5E143D
+BEE5CD7F054019A6C4E65A3236FB59E14C5B05FC339D37DB2063BE2C474E8D6B
+7C0B591FA635D85BE8D28E924500478D29CC987311FC67C33D05AA6A69F51982
+2F519A92E04B0CB593522A5F9BC18CCEE2EFE65137C78F457CD7AA1E60795A7C
+80FD85399563F7774C152DDBCD340EE41E69C19605CD6DD80E3323D0DDDC5CE3
+B868D56448E0D7139CE407DA2F90F69F3370F59BA80FD6E5291CCCF4102A89FA
+FB0E7CD9C3A3D7A29390C38F724C61E71FB9CF70894EC5C021F7653EE67B01F0
+52F20B1283D9BE9207FEA9551281C85C5AF196B9F16ADFE6C37AC05538F22960
+48778EE4E62D33DD26FA472157CE2D19F518E19C6424CC01F71EC1DEED767046
+1EDB51BED5D563647C3662DAD109B77799B36DFDB3FBD2D6DE00A6D5698DBD7C
+C6E70FADABCB3EFD3E08A2429CED1D72B8D8174F90EACF64141676F2CF791CA1
+06EA7000A3069A213EAA9892675FF1F9478D40CE3E9E4E90852EA7E269808F8F
+8BEBF97C2BBF00274E90F925C76C272396D83DED508A877B8C235471A70502C9
+DEFFA11C1B69B489271FA81CA0D3475BFE44620F24CF41D3B5A35AE457A40744
+FCDC3FDD2BFFB6AC6CD320B23DC4DC232EEBB7BA24A8473191C9897D4CDF91FA
+11FAAEBA89A40BE93E14FF3C6741BEC15D6C414DB145EA733BBCE90927758658
+F09C277CE1B6541526403764D8B34577F01646E2F41CCA59EA79E65DB9DF1D61
+C19F1B724778731374CE9994BD4A167D2BC4B39ACEBADE88C0D749DAC57C6751
+3092B7F3580A96641569964F7E6F805580F48289DDB96E5FE17CE6506273F469
+61A34EE1182C39C8E657C6EFA9E0E635A9363D1A476AFDD81FAEB4C9DF9F2BFE
+E58CC036B87ECFA54519A4BFF7B9436CFE2AA946C2BCFE96534B88D7F3DB5635
+155C700BC7B26F605C0958F2748A63774C115B6D88620FA4C4C1FB873BA1DA1F
+BEADF682C3AAFE90F8A93B7E67DC8C5F014E3F4EEF9CE51D28B541EF4C9ADC31
+59190746E58C20AC4662528933C03C4D74B9BD053478C77A7A9E00972164FD65
+BDE2788D5FB3B1783D4725C4FC835294B685ABE17EAB07EDE07BD72DC17BBE75
+4736CDFE2C4C7217E425696BBBC1F981DE682149E894D76F46287ED26F637858
+297C86F9805ABB612E4E1BACBF8FAC2155AB9D24696DD799D54721B486F94172
+0CF10C2540B7F62214A69B9D4FC87D25531E44E829EC14862AAC83B1CBC2B6AA
+3E0059416D9F017DBED79855A15536E019A37C4D4DA7112E17E64DE362924B28
+92B911D3E0E19B3DADF8185C840CFB6701C066B9B800638AA002E380F00A5FFB
+DC567D412E86BEE99B1EFA5B41D2B2BBB4FD655A9BD873AF512BABD722E02221
+0FA7296988647CC4BE09DBD06CD4434A2E92CDBC89C048A12E9E0B1E945A0C32
+5DF4DC7CCB12FDF6367D626C64C4A511BB0DD3943094B56CF9F47EEC6974AC85
+CCEA5E4EDB5E5C805737A11C0F6593E8A82543DD779494727553D4A2BD49FF41
+A94D9B8EED83DEDB50235B9A717534B8B151FCEE2A71CBB718F3E95E1DBEFC44
+A791F55221EC78C000DCDEE10E37AF91741B845137B952689FAD1E5E867C2449
+6F6937D2AFA85063938E04F5D6C25FEE69526B168839074F3E5625239B02B8D6
+3628A0C882889C89BA1288B877F8B7A509285B49B5390E7C2E1CE144BE8E1564
+BC16C320C3E4DA32D0035180C0DCD8A7428624A4C9952B5F49EC7AFCFF015BAB
+3A49D6C1D30590E3B08AF7F53D195DBAE33022C1BADC8D12DBFE3EDD316E151B
+C1DDD7A96E2A79BD62417F1D0B20188A806454367E20E85BCB5D7D641645276E
+0DB085F151F1D4C5D3E3FBBC4E1810806017FB7F04E365F301B106B1BC44F64D
+3022FFD51677D7FDE025B5B16471A913300FAE9A4E961EFEF460CB153F69B8FA
+4ED7A3D907CF8D711B347F8C9C7D19268A334CAEE220685176D6C121C1283971
+EBEF748D5B8C193F72B540B1D7E3BA420080E6F3F4016FFC14A06D73DFFEEC3D
+5E5D67A45311F19574C7937A028423FA5E8C931BF4B35E3041FF84900539832A
+1DC94AA48DBB268BDA06B8FEB1808006E0AD6D223DE59B20D5722877DA78D156
+AF5053FBE4879C86FAEEEAF18436A45AAF5B0CCD74A2300B219A04C9413B01F6
+2ABE6C1651AD7AB3C94A8EA6EDD19147C6AEF2341E83CAB2390B0F43362FBFE7
+DE0E4A650246F2195932C45DE176DC5EDEF03C63ED7F16B22B3526A64EE58515
+55D7AEF2C645E9746FDC7EF2E2E85462F3788B1586BB656577C622C769D0B84F
+A90E91713ACFF32765CBB1BB833CBB8A29FDB93A55490596A450B8A04CE59C2C
+6559A047406CDBEB1E57C5950E21348D35CF65C0CB79A95016CA9DAFDB4C7AA8
+5209E14EF42F2C048939AED3A68842E5FF5FFE1917A3533F5434F4E12B7CB2A7
+8A904CDA6C1C5FE22E13063ED50C4387ACA9414E235F3D705A5C12DFFCA70247
+61E37782DACC3FB50B9CB25732F76676060C3F905D198D603271D87522AF91E8
+DD6B66D2D91708DE4DD729C198D17A1CB9678EBB602BBFE7410EE33881D3D1D6
+66395D5D0F7D45EC43D0AD906AD1A95C6310017CE2A2FBB557C3370B1455A6A8
+78C44991AF4957EF1477DF5DB47D8A1A077BBC09E19D7ACCBDD87B15DBA90CEE
+10711E5D277384F41EB186AEC1E67286275544EF6E34E1635837B2FD94935FC2
+24D53ABDD0E5F0D43D14DB3C930F441202006C1EC62B785E693790C204DF5C8A
+65ABE605D4977D2C3DC4188C41DBE3C95D5296DAD084296F45B7F62A556C987B
+4D105743165B165BD4FF325D361B1CF4438E6D365D5C8E89D8F1C230C53289FD
+238BEBA0CB9FC63E4C7210D6E1D2D1D1F2070DB3D0C28F5A69471D03A3F20B15
+F58F38BDDBF7E8C2BB9E2C3318610A9B11753A77F567AC96C8D0D596FF7CFD4C
+7476F5ACDA8E5708B557A6864A19C2BA00F23D2B8D53517623332BF11F507F19
+48CFFA1232E61E86ACB0D094DB28883CCCB984C5FC163661C50F0AE71501DED3
+8939BF491302A37A99AA88EA39445650E06D366EC09EFB4CA806CFC6A4339DA7
+D4484D757DFFEFA0F22995BC8BCFF0DA1C7ED7DB21190DBFF2209F2F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
+990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
+6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
+DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
+59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
+D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
+8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
+6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
+1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
+03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
+95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
+74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
+3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
+47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
+AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
+42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
+40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
+B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
+9560176676ABB71BBD0EE56B4CC492C0652750227CEC6CBEEE374709231B00CD
+0DE83AFDE295B314F6C8B1FFD32251C1925D96A64D739FF1DA4926460B28B3DE
+E949AA0BA3DDB16534FBA30C32092D5F712B5E8C8D5142F35AF2906E6C219D2C
+7FD9A368C193E0EB9C7E25FF03C546B6ED993F964CEDB1B8537C617170787F37
+88D6F2AD02384B01067FE3F98257BAB958BB3BCD1001090A4502DA0638080EC6
+DB784CC8AC37CDC01B29BC481D6A05ADC6188785262358C1BF1D694BBF31C1F1
+AF117C1ACED44AAC6EB4B9A2511A6762DDE8FCCBA5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMMI12
+%!PS-AdobeFont-1.1: CMMI12 1.100
+%%CreationDate: 1996 Jul 27 08:57:55
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+/FontBBox{-30 -250 1026 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
+4391C9DF440285B8FC159D0E98D4258FC57892DCC57F7903449E07914FBE9E67
+3C15C2153C061EB541F66C11E7EE77D5D77C0B11E1AC55101DA976CCACAB6993
+EED1406FBB7FF30EAC9E90B90B2AF4EC7C273CA32F11A5C1426FF641B4A2FB2F
+4E68635C93DB835737567FAF8471CBC05078DCD4E40E25A2F4E5AF46C234CF59
+2A1CE8F39E1BA1B2A594355637E474167EAD4D97D51AF0A899B44387E1FD933A
+323AFDA6BA740534A510B4705C0A15647AFBF3E53A82BF320DD96753639BE49C
+2F79A1988863EF977B800C9DB5B42039C23EB86953713F730E03EA22FF7BB2C1
+D97D33FD77B1BDCC2A60B12CF7805CFC90C5B914C0F30A673DF9587F93E47CEA
+5932DD1930560C4F0D97547BCD805D6D854455B13A4D7382A22F562D7C55041F
+0FD294BDAA1834820F894265A667E5C97D95FF152531EF97258F56374502865D
+A1E7C0C5FB7C6FB7D3C43FEB3431095A59FBF6F61CEC6D6DEE09F4EB0FD70D77
+2A8B0A4984C6120293F6B947944BE23259F6EB64303D627353163B6505FC8A60
+00681F7A3968B6CBB49E0420A691258F5E7B07B417157803FCBE9B9FB1F80FD8
+CA0DA1186446DD565542BCCC7D339A1EB34C7F49246E8D72E987EB477C6DB757
+99AF86CEBCD7605C487A00CD2CD093098182DC57B20D78ECE0BECF3A0BF88EBA
+C866DB19F34BBBED6634AFC0F08D2AFB2A92578A6F8B4ADCD6594737FF6EED7D
+5B536DA9E3E2CADB40DB7C600EA4D100D33C3B92B1CF857E012C4EB370BA8295
+55B50047CC8911C98FE1A7BA6CDEA82D34476286E710776823690AD333DD3A49
+335002F4680DBE1C21174BF016B0DF799B01EB9D6988479A8334BBA2F8DC7146
+BC0DAE9DE3A6453B181808E68A89E0C02DAC6264D002B422EBC1CF14F65D9888
+15EE6D514D3457F7F3C6A3D17EE1DA076F73ECC392D349174DA9E4680F29CE10
+0157E42CA35F5DBFF56BFC3AA07E61A78DBE882C5AB388220C19750D3643E7C8
+23D6673027CE568A4ACCE1D12B1D9E5A43507F4AF9BC873237F65A6B95078DD2
+378007CF0F0DE7CCEF760E19D6D1D7B412EC5D4972
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 13 /circlecopyrt put
+dup 15 /bullet put
+dup 104 /angbracketleft put
+dup 105 /angbracketright put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78
+253AB320C099669BFED2878A6C4038A5BCEB5B4C28040BB8B4AC2C167BB2C999
+ED93E2F4AE3E4B44B7B6B469C36A24080D4BEDB5523D202E920D8898DEBD5EB0
+CAC3C5D5F01A87F7B15BD1C197B344F7D94E965CBFE73E8A65A2AA6A6F93B878
+03E30E60F1390C2FB671C8D36E7D6E516A20079B48CA9BE632F5A8D1250F01EE
+6809D6C5B51AE3D1B4C244195E4AB5E68F2AF1D7556B9D03035E08B962A33B44
+426A3B5BEF3BA86E4BFE8C823D42816B59DAE9EBD42C115A1E75B0E6427720BF
+773EA85158709B4DF306511D5CC19D7395BEE5940DF97513CC36EDF468B80C01
+476B0B89D1198F039E4A32FECF58E56F6B0A1D27E9E5FE6393AF613D11EE6185
+26EDAB5CD87D6B6C9838DC76423000F9E0D094046832BDDDE6AFB7549561F742
+F0B1AE278DB3355F8867D2CCF8BCC03AB7A7A8F9E51C4B2BD121F9D3B2477803
+1A24BBD88C9C54A8E31B9CF66295B665495BE7ACC72E1A1F05413DFCB56D0749
+49539F8F4706361CCBBEB69D135FF4B63C35408A38382C739EE8AF9F378CF061
+C9754E8C7CEDD29E63D79C8AD5518244E4BFCB827E05F4EFCF03BB47CE67F43E
+F29192EC2FA1026ACFAF2CB156124C88D860864BEBE81CBBDD60DB5C7DA2B6A7
+B64E3DA907988FE60AF047DCEDF2D52D2D43E6C01FA7F84B598386FE03765B15
+EE11E9DB0BA83469FC7FC5CECCA2E4D84F87D43811978975C96D9CB66BB87B02
+579D63949B512A59123F039A1DAE2EFB897FFE82E8C6B0A30C570015B77B8318
+9BB684151679A432E2E167F4E27B7E878A46C19969230B9604ADE2E6487203D0
+DF06DF8F5E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+TeXDict begin 39158280 55380996 1000 600 600 (libidn.dvi)
+@start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 140[37
+13[42 24[57 76[{}3 90.9091 /CMTI10 rf /Fc 134[39 1[39
+39 39 39 39 39 1[39 39 39 39 39 2[39 39 39 39 39 39 1[39
+39 12[39 16[39 20[39 6[39 39[{}24 74.7198 /CMSLTT10 rf
+/Fd 133[39 39 39 39 39 39 39 39 39 1[39 39 39 39 39 39
+1[39 39 39 39 39 39 39 39 39 39 39 5[39 1[39 39 39 39
+39 39 1[39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39
+5[39 39 39 39 2[39 39 39 39 39 39 39 39 39 39 2[39 39
+39 39[{}65 74.7198 /CMTT9 rf /Fe 140[42 9[27 5[54 1[56
+97[{}4 90.9091 /CMCSC10 rf /Ff 133[34 41 41 55 41 43
+30 30 30 1[43 38 43 64 21 41 1[21 43 38 23 34 43 34 43
+38 8[58 79 1[58 55 43 57 1[52 60 58 70 48 2[28 58 60
+50 52 59 55 54 58 7[38 38 38 38 38 38 38 38 38 38 1[21
+26 21 4[21 26[43 12[{}59 74.7198 /CMR9 rf /Fg 206[33
+49[{}1 58.1154 /CMR7 rf /Fh 158[35 97[{}1 66.4176 /CMTT8
+rf /Fi 162[28 1[28 91[{}2 99.6264 /CMB10 rf /Fj 134[62
+3[62 62 62 62 1[62 62 62 1[62 2[62 62 62 62 62 62 62
+1[62 39[62 6[62 3[62 62 45[{}21 119.552 /CMTT12 rf /Fk
+167[62 2[62 60 46 2[57 1[62 76 52 1[43 1[62 65 54 1[63
+60 67[{}14 83.022 /CMR10 rf /Fl 137[48 51 35 1[39 3[51
+1[25 6[42 3[44 7[69 69 94 69 70 63 51 69 1[62 68 71 86
+55 71 1[36 71 71 57 60 70 66 65 69 6[25 45 6[45 50[{}34
+90.9091 /CMB10 rf /Fm 135[52 52 52 52 52 52 52 52 52
+52 52 52 52 2[52 52 52 52 52 52 52 52 52 1[52 42[52 52[{}24
+99.6264 /CMSLTT10 rf /Fn 133[40 48 48 66 48 51 35 36
+36 48 51 45 51 76 25 2[25 51 45 28 40 51 40 51 45 12[66
+51 67 1[62 3[57 2[33 68 2[62 1[66 1[68 7[45 4[45 45 45
+4[30 25 1[45 28[51 51 12[{}43 90.9091 /CMSL10 rf /Fo
+214[35 35 40[{}2 90.9091 /CMSS10 rf /Fp 133[52 52 52
+1[52 52 52 52 52 1[52 52 52 52 52 52 1[52 52 52 52 52
+52 52 52 52 1[52 6[52 52 1[52 52 52 52 1[52 52 52 1[52
+52 1[52 1[52 52 52 52 52 52 52 7[52 52 3[52 52 52 4[52
+2[52 6[52 35[{}51 99.6264 /CMTT10 rf /Fq 133[55 65 1[89
+65 68 48 48 50 1[68 61 68 102 34 65 1[34 68 61 37 56
+68 55 68 60 7[93 1[127 1[94 85 68 92 1[84 92 96 116 74
+96 1[46 96 96 77 81 94 89 87 93 7[61 61 61 1[61 61 61
+61 61 2[34 1[34 31[68 12[{}55 109.091 /CMBX12 rf /Fr
+128[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 4[48 1[48 48 1[48 23[{}99 90.9091 /CMTT10
+rf /Fs 197[25 58[{}1 90.9091 /CMMI10 rf /Ft 197[33 58[{}1
+119.552 /CMMI12 rf /Fu 134[85 85 117 85 90 63 64 66 1[90
+81 90 134 45 85 1[45 1[81 49 74 90 72 90 78 10[122 124
+112 90 120 1[110 121 126 1[97 1[83 60 126 1[101 106 124
+117 115 122 7[81 81 81 81 81 81 81 81 81 81 12[134 35[{}51
+143.462 /CMBX12 rf /Fv 150[35 35 88[45 1[91 13[{}4 90.9091
+/CMSY10 rf /Fw 133[60 71 71 97 71 75 52 53 55 1[75 67
+75 112 37 71 1[37 75 67 41 61 75 60 75 65 7[102 1[139
+102 103 94 75 100 1[92 101 105 128 81 1[69 50 105 106
+85 88 103 97 96 102 6[37 67 67 67 67 67 67 67 67 67 67
+1[37 45 9[112 22[75 12[{}61 119.552 /CMBX12 rf /Fx 131[91
+45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28
+25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93
+68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62
+69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 45
+45 45 45 25 30 25 1[45 35 35 25 3[76 45 25 18[76 51 51
+53 11[{}87 90.9091 /CMR10 rf /Fy 145[108 4[54 4[108 1[108
+12[149 6[151 1[116 4[152 71[{}8 172.154 /CMBX12 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: a4
+/setpagedevice where
+{ pop << /PageSize [595 842] >> setpagedevice }
+{ /a4 where { pop a4 } if }
+ifelse
+%%EndPaperSize
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 150 1318 a Fy(GNU)65 b(Libidn)p
+150 1385 3600 34 v 1546 1481 a Fx(In)m(ternationalized)33
+b(string)d(pro)s(cessing)g(for)g(the)h(GNU)g(system)2577
+1589 y(for)f(v)m(ersion)h(1.15,)h(28)g(Ma)m(y)f(2009)150
+5091 y Fw(Simon)45 b(Josefsson)p 150 5141 3600 17 v eop
+end
+%%Page: 2 2
+TeXDict begin 2 1 bop 150 4633 a Fx(This)30 b(man)m(ual)g(is)h(last)g
+(up)s(dated)e(28)i(Ma)m(y)h(2009)g(for)e(v)m(ersion)h(1.15)h(of)e(GNU)h
+(Libidn.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577
+4767 y Fv(\015)f Fx(2002,)j(2003,)f(2004,)g(2005,)h(2006,)f(2007,)g
+(2008,)h(2009)f(Simon)e(Josefsson.)390 4902 y(P)m(ermission)21
+b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s
+(dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011
+y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g
+(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)
+390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46
+b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5
+b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)
+31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8
+b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390
+5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8
+b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end
+%%Page: -1 3
+TeXDict begin -1 2 bop 3725 -116 a Fx(i)150 299 y Fu(T)-13
+b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fw(1)135 b(In)l(tro)t
+(duction)13 b Ft(:)19 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)57 b Fw(1)275 778 y Fx(1.1)92
+b(Getting)32 b(Started)21 b Fs(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)51 b Fx(1)275 888 y(1.2)92 b(F)-8 b(eatures)26
+b Fs(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)56 b Fx(2)275 997 y(1.3)92 b(Library)29
+b(Ov)m(erview)d Fs(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)56
+b Fx(2)275 1107 y(1.4)92 b(Supp)s(orted)28 b(Platforms)20
+b Fs(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)51 b Fx(3)275 1216
+y(1.5)92 b(Getting)32 b(help)23 b Fs(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)54 b Fx(5)275 1326 y(1.6)92
+b(Commercial)31 b(Supp)s(ort)23 b Fs(:)13 b(:)i(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)53
+b Fx(5)275 1435 y(1.7)92 b(Do)m(wnloading)31 b(and)f(Installing)9
+b Fs(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)39 b Fx(6)399 1545 y(1.7.1)93 b(Installing)31
+b(under)e(Windo)m(ws)f Fs(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)58 b Fx(6)275 1655 y(1.8)92 b(Bug)30
+b(Rep)s(orts)22 b Fs(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)53 b Fx(7)275 1764 y(1.9)92 b(Con)m(tributing)18
+b Fs(:)c(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)48
+b Fx(7)150 2007 y Fw(2)135 b(Preparation)34 b Ft(:)19
+b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+h(:)77 b Fw(9)275 2144 y Fx(2.1)92 b(Header)13 b Fs(:)i(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)43
+b Fx(9)275 2253 y(2.2)92 b(Initialization)18 b Fs(:)f(:)f(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)47 b Fx(10)275
+2363 y(2.3)92 b(V)-8 b(ersion)31 b(Chec)m(k)8 b Fs(:)16
+b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
+b Fx(10)275 2472 y(2.4)92 b(Building)30 b(the)h(source)c
+Fs(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)56 b Fx(11)275 2582
+y(2.5)92 b(Auto)s(conf)30 b(tests)22 b Fs(:)17 b(:)e(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)52 b Fx(11)275 2692 y(2.6)92
+b(Memory)30 b(handling)g(under)f(Windo)m(ws)18 b Fs(:)e(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)h(:)f(:)48 b Fx(12)275 2801 y(2.7)92
+b(Header)30 b(\014le)h Fr(idn-free.h)24 b Fs(:)15 b(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)56
+b Fx(12)275 2911 y(2.8)92 b(Memory)30 b(de-allo)s(cation)j(function)24
+b Fs(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)54
+b Fx(12)150 3153 y Fw(3)135 b(Utilit)l(y)47 b(F)-11 b(unctions)32
+b Ft(:)20 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)78
+b Fw(14)275 3290 y Fx(3.1)92 b(Header)30 b(\014le)h Fr(stringprep.h)19
+b Fs(:)12 b(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)49 b Fx(14)275 3400 y(3.2)92 b(Unico)s(de)30
+b(Enco)s(ding)g(T)-8 b(ransformation)12 b Fs(:)j(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)41 b Fx(14)275 3509 y(3.3)92 b(Unico)s(de)30
+b(Normalization)15 b Fs(:)j(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)45 b Fx(15)275
+3619 y(3.4)92 b(Character)30 b(Set)h(Con)m(v)m(ersion)25
+b Fs(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)54 b Fx(16)150 3861 y Fw(4)135 b(Stringprep)45
+b(F)-11 b(unctions)18 b Ft(:)g(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)63
+b Fw(17)275 3998 y Fx(4.1)92 b(Header)30 b(\014le)h Fr(stringprep.h)19
+b Fs(:)12 b(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)49 b Fx(17)275 4108 y(4.2)92 b(De\014ning)30
+b(A)g(Stringprep)f(Pro\014le)10 b Fs(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fx(17)275 4218 y(4.3)92
+b(Con)m(trol)31 b(Flags)20 b Fs(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)50 b Fx(17)275 4327 y(4.4)92 b(Core)30
+b(F)-8 b(unctions)10 b Fs(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)40 b Fx(17)275 4437 y(4.5)92 b(Error)29 b(Handling)9
+b Fs(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39
+b Fx(19)275 4546 y(4.6)92 b(Stringprep)29 b(Pro\014le)h(Macros)21
+b Fs(:)c(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)51 b Fx(20)150 4789 y Fw(5)135 b(Pun)l(yco)t(de)44
+b(F)-11 b(unctions)18 b Ft(:)g(:)i(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)63
+b Fw(22)275 4926 y Fx(5.1)92 b(Header)30 b(\014le)h Fr(punycode.h)24
+b Fs(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)56 b Fx(22)275 5035 y(5.2)92 b(Unico)s(de)30
+b(Co)s(de)g(P)m(oin)m(t)i(Data)g(T)m(yp)s(e)23 b Fs(:)16
+b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)54
+b Fx(22)275 5145 y(5.3)92 b(Core)30 b(F)-8 b(unctions)10
+b Fs(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)40
+b Fx(22)275 5254 y(5.4)92 b(Error)29 b(Handling)9 b Fs(:)16
+b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b
+Fx(24)p eop end
+%%Page: -2 4
+TeXDict begin -2 3 bop 3699 -116 a Fx(ii)150 83 y Fw(6)135
+b(IDNA)44 b(F)-11 b(unctions)21 b Ft(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)65 b Fw(25)275 220 y Fx(6.1)92 b(Header)30
+b(\014le)h Fr(idna.h)21 b Fs(:)14 b(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)50
+b Fx(25)275 330 y(6.2)92 b(Con)m(trol)31 b(Flags)20 b
+Fs(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)50
+b Fx(25)275 439 y(6.3)92 b(Pre\014x)29 b(String)17 b
+Fs(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)46
+b Fx(25)275 549 y(6.4)92 b(Core)30 b(F)-8 b(unctions)10
+b Fs(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)40
+b Fx(25)275 658 y(6.5)92 b(Simpli\014ed)29 b(T)-8 b(oASCI)s(I)29
+b(In)m(terface)16 b Fs(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)46 b Fx(27)275 768 y(6.6)92 b(Simpli\014ed)29
+b(T)-8 b(oUnico)s(de)31 b(In)m(terface)21 b Fs(:)c(:)e(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)51 b Fx(28)275 878 y(6.7)92
+b(Error)29 b(Handling)9 b Fs(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)39 b Fx(29)150 1120 y Fw(7)135 b(TLD)44 b(F)-11
+b(unctions)35 b Ft(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+f(:)h(:)80 b Fw(31)275 1257 y Fx(7.1)92 b(Header)30 b(\014le)h
+Fr(tld.h)23 b Fs(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)54
+b Fx(31)275 1367 y(7.2)92 b(Core)30 b(F)-8 b(unctions)10
+b Fs(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)40
+b Fx(31)275 1476 y(7.3)92 b(Utilit)m(y)32 b(F)-8 b(unctions)14
+b Fs(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)44 b Fx(32)275
+1586 y(7.4)92 b(High-Lev)m(el)32 b(W)-8 b(rapp)s(er)30
+b(F)-8 b(unctions)25 b Fs(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)54 b Fx(33)275 1695 y(7.5)92 b(Error)29
+b(Handling)9 b Fs(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+39 b Fx(35)150 1938 y Fw(8)135 b(PR29)45 b(F)-11 b(unctions)11
+b Ft(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)56
+b Fw(36)275 2075 y Fx(8.1)92 b(Header)30 b(\014le)h Fr(pr29.h)21
+b Fs(:)14 b(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)50 b Fx(36)275
+2184 y(8.2)92 b(Core)30 b(F)-8 b(unctions)10 b Fs(:)16
+b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)40 b
+Fx(36)275 2294 y(8.3)92 b(Utilit)m(y)32 b(F)-8 b(unctions)14
+b Fs(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)44 b Fx(37)275
+2403 y(8.4)92 b(Error)29 b(Handling)9 b Fs(:)16 b(:)f(:)g(:)h(:)f(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Fx(37)150 2646 y Fw(9)135
+b(Examples)15 b Ft(:)21 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)60 b Fw(38)275 2783
+y Fx(9.1)92 b(Example)30 b(1)20 b Fs(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)49 b Fx(38)275 2892 y(9.2)92
+b(Example)30 b(2)20 b Fs(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)49 b Fx(40)275 3002 y(9.3)92 b(Example)30
+b(3)20 b Fs(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)49 b Fx(45)275 3112 y(9.4)92 b(Example)30 b(4)20
+b Fs(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+49 b Fx(46)275 3221 y(9.5)92 b(Example)30 b(5)20 b Fs(:)c(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)49
+b Fx(48)150 3464 y Fw(10)135 b(In)l(v)l(oking)46 b(idn)26
+b Ft(:)19 b(:)g(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+70 b Fw(52)275 3601 y Fx(10.1)92 b(Name)13 b Fs(:)j(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)42
+b Fx(52)275 3710 y(10.2)92 b(Description)22 b Fs(:)16
+b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)51
+b Fx(52)275 3820 y(10.3)92 b(Options)11 b Fs(:)k(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41 b
+Fx(52)275 3929 y(10.4)92 b(En)m(vironmen)m(t)31 b(V)-8
+b(ariables)17 b Fs(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)46 b Fx(53)275 4039 y(10.5)92
+b(Examples)17 b Fs(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)46 b Fx(53)275 4149 y(10.6)92 b(T)-8 b(roublesho)s
+(oting)8 b Fs(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
+b Fx(54)150 4391 y Fw(11)135 b(Emacs)45 b(API)35 b Ft(:)19
+b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)79
+b Fw(56)275 4528 y Fx(11.1)92 b(Pun)m(yco)s(de)30 b(Emacs)h(API)16
+b Fs(:)e(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)45 b Fx(56)275 4638 y(11.2)92
+b(IDNA)31 b(Emacs)g(API)9 b Fs(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39
+b Fx(56)p eop end
+%%Page: -3 5
+TeXDict begin -3 4 bop 3674 -116 a Fx(iii)150 83 y Fw(12)135
+b(Ja)l(v)-7 b(a)46 b(API)15 b Ft(:)k(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)60 b Fw(58)275
+220 y Fx(12.1)92 b(Ov)m(erview)23 b Fs(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)52 b Fx(58)275
+330 y(12.2)92 b(Miscellaneous)32 b(Programs)14 b Fs(:)h(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)43
+b Fx(58)399 439 y(12.2.1)93 b(GenerateRF)m(C3454)8 b
+Fs(:)19 b(:)d(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)38 b Fx(58)399 549 y(12.2.2)93 b(GenerateNFK)m(C)23
+b Fs(:)17 b(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)52 b Fx(58)399 658 y(12.2.3)93
+b(T)-8 b(estIDNA)29 b Fs(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)57
+b Fx(59)399 768 y(12.2.4)93 b(T)-8 b(estNFK)m(C)16 b
+Fs(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b Fx(59)275
+878 y(12.3)92 b(P)m(ossible)31 b(Problems)11 b Fs(:)k(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)40 b Fx(59)275 987 y(12.4)92 b(A)31 b(Note)g(on)g(Ja)m
+(v)-5 b(a)31 b(and)f(Unico)s(de)16 b Fs(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)45 b Fx(59)150 1230 y Fw(13)135
+b(C#)45 b(API)14 b Ft(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)59 b Fw(61)150
+1499 y(14)135 b(Ac)l(kno)l(wledgemen)l(ts)20 b Ft(:)h(:)f(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)65 b Fw(62)150 1769 y(15)135 b(History)16
+b Ft(:)21 b(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)61 b Fw(63)150 2039 y(App)t(endix)44
+b(A)160 b(PR29)45 b(discussion)30 b Ft(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)74 b Fw(64)150
+2309 y(App)t(endix)44 b(B)166 b(On)44 b(Lab)t(el)i(Separators)33
+b Ft(:)20 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)77
+b Fw(67)275 2446 y Fx(B.1)92 b(Recommended)30 b(W)-8
+b(ork)j(around)17 b Fs(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)47 b Fx(67)150 2688 y Fw(App)t(endix)d(C)165
+b(Cop)l(ying)45 b(Information)25 b Ft(:)c(:)f(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)h(:)f(:)70 b Fw(68)275 2825 y Fx(C.1)91 b(GNU)31
+b(F)-8 b(ree)31 b(Do)s(cumen)m(tation)h(License)23 b
+Fs(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)52 b Fx(68)275
+2935 y(C.2)91 b(GNU)31 b(Lesser)f(General)h(Public)f(License)13
+b Fs(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)43 b Fx(75)275
+3044 y(C.3)91 b(GNU)31 b(General)g(Public)f(License)9
+b Fs(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+39 b Fx(83)150 3287 y Fw(F)-11 b(unction)44 b(and)h(V)-11
+b(ariable)45 b(Index)29 b Ft(:)19 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)73 b Fw(95)150
+3557 y(Concept)45 b(Index)18 b Ft(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)63 b Fw(96)p
+eop end
+%%Page: 1 6
+TeXDict begin 1 5 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(In)m(tro)s(duction)2592 b(1)150 299 y Fu(1)80 b(In)l(tro)t(duction)
+150 553 y Fx(GNU)29 b(Libidn)d(is)i(a)g(fully)g(do)s(cumen)m(ted)g
+(implemen)m(tation)h(of)f(the)g(Stringprep,)g(Pun)m(yco)s(de)f(and)g
+(IDNA)150 663 y(sp)s(eci\014cations.)53 b(Libidn's)33
+b(purp)s(ose)g(is)h(to)h(enco)s(de)g(and)f(deco)s(de)g(in)m
+(ternationalized)j(domain)d(names.)150 772 y(The)h(nativ)m(e)h(C,)f(C#)
+g(and)f(Ja)m(v)-5 b(a)36 b(libraries)f(are)h(a)m(v)-5
+b(ailable)37 b(under)d(the)h(GNU)h(Lesser)f(General)h(Public)150
+882 y(License)31 b(v)m(ersion)g(2.1)g(or)g(later)g(\(see)g(Section)g
+(C.2)g([GNU)g(LGPL],)g(page)g(75\).)275 1023 y(The)23
+b(library)g(con)m(tains)j(a)e(generic)h(Stringprep)d(implemen)m
+(tation.)40 b(Pro\014les)24 b(for)g(Nameprep,)h(iSCSI,)150
+1132 y(SASL,)31 b(XMPP)g(and)g(Kerb)s(eros)g(V5)h(are)f(included.)44
+b(Pun)m(yco)s(de)31 b(and)g(ASCI)s(I)f(Compatible)i(Enco)s(ding)150
+1242 y(\(A)m(CE\))e(via)g(IDNA)g(are)g(supp)s(orted.)39
+b(A)29 b(mec)m(hanism)h(to)g(de\014ne)f(T)-8 b(op-Lev)m(el)31
+b(Domain)f(\(TLD\))g(sp)s(eci\014c)150 1352 y(v)-5 b(alidation)36
+b(tables,)g(and)d(to)i(compare)g(strings)f(against)i(those)f(tables,)h
+(is)e(included.)52 b(Default)35 b(tables)150 1461 y(for)30
+b(some)h(TLDs)f(are)h(also)g(included.)275 1602 y(The)37
+b(Stringprep)f(API)h(consists)h(of)g(t)m(w)m(o)h(main)e(functions,)i
+(one)f(for)f(con)m(v)m(erting)i(data)g(from)e(the)150
+1712 y(system's)42 b(nativ)m(e)i(represen)m(tation)f(in)m(to)g(UTF-8,)j
+(and)41 b(one)h(function)g(to)h(p)s(erform)d(the)i(Stringprep)150
+1822 y(pro)s(cessing.)d(Adding)25 b(a)g(new)g(Stringprep)f(pro\014le)h
+(for)g(y)m(our)h(application)g(within)f(the)h(API)f(is)g(straigh)m(t-)
+150 1931 y(forw)m(ard.)43 b(The)31 b(Pun)m(yco)s(de)g(API)g(consists)h
+(of)g(one)g(enco)s(ding)f(function)g(and)g(one)h(deco)s(ding)f
+(function.)150 2041 y(The)f(IDNA)i(API)e(consists)i(of)e(the)h(T)-8
+b(oASCI)s(I)30 b(and)g(T)-8 b(oUnico)s(de)32 b(functions,)f(as)g(w)m
+(ell)g(as)h(an)e(high-lev)m(el)150 2150 y(in)m(terface)d(for)e(con)m(v)
+m(erting)i(en)m(tire)f(domain)f(names)g(to)g(and)g(from)g(the)g(A)m(CE)
+g(enco)s(ded)g(form.)38 b(The)25 b(TLD)150 2260 y(API)36
+b(consists)g(of)g(one)g(set)g(of)g(functions)f(to)i(extract)g(the)f
+(TLD)g(name)f(from)h(a)g(domain)f(string,)j(one)150 2369
+y(set)c(of)g(functions)f(to)i(lo)s(cate)g(the)f(prop)s(er)e(TLD)i
+(table)g(to)h(use)e(based)g(on)h(the)g(TLD)f(name,)i(and)e(core)150
+2479 y(functions)h(to)i(v)-5 b(alidate)36 b(a)f(string)g(against)h(a)g
+(TLD)e(table,)j(and)e(some)g(utilit)m(y)h(wrapp)s(ers)d(to)i(p)s
+(erform)150 2589 y(all)c(the)g(steps)f(in)g(one)h(call.)275
+2730 y(The)24 b(library)g(is)h(used)f(b)m(y)-8 b(,)27
+b(e.g.,)g(GNU)f(SASL)e(and)g(Shishi)f(to)j(pro)s(cess)e(user)h(names)f
+(and)h(passw)m(ords.)150 2839 y(Libidn)32 b(can)h(b)s(e)g(built)g(in)m
+(to)h(GNU)f(Lib)s(c)g(to)h(enable)f(a)h(new)f(system-wide)g
+(getaddrinfo)g(\015ag)h(for)f(IDN)150 2949 y(pro)s(cessing.)275
+3090 y(Libidn)38 b(is)i(dev)m(elop)s(ed)h(for)f(the)g(GNU/Lin)m(ux)g
+(system,)j(but)d(runs)e(on)i(o)m(v)m(er)h(20)g(Unix)f(platforms)150
+3200 y(\(including)33 b(Solaris,)i(IRIX,)e(AIX,)g(and)g(T)-8
+b(ru64\))33 b(and)g(Windo)m(ws.)49 b(The)33 b(library)f(is)i(written)f
+(in)g(C)g(and)150 3309 y(\(parts)k(of)7 b(\))39 b(the)e(API)g(is)h
+(also)g(accessible)h(from)e(C)p Fr(++)p Fx(,)i(Emacs)f(Lisp,)g(Python)f
+(and)g(Ja)m(v)-5 b(a.)63 b(A)38 b(nativ)m(e)150 3419
+y(Ja)m(v)-5 b(a)31 b(and)f(C#)g(p)s(ort)g(is)g(included.)275
+3560 y(Also)37 b(included)f(is)h(a)g(command)f(line)h(to)s(ol,)j(sev)m
+(eral)e(self)f(tests,)i(co)s(de)e(examples,)i(and)d(more,)j(all)150
+3670 y(licensed)30 b(under)e(the)h(GNU)h(General)h(Public)e(License)h
+(v)m(ersion)g(3.0)g(or)f(later)i(\(see)f(Section)g(C.3)g([GNU)150
+3779 y(GPL],)h(page)g(83\).)150 4022 y Fw(1.1)68 b(Getting)46
+b(Started)150 4181 y Fx(This)34 b(man)m(ual)i(do)s(cumen)m(ts)f(the)h
+(library)e(programming)h(in)m(terface.)57 b(All)36 b(functions)f(and)g
+(data)h(t)m(yp)s(es)150 4291 y(pro)m(vided)c(b)m(y)g(the)g(library)g
+(are)g(explained.)46 b(Included)31 b(are)h(also)h(examples,)h(and)d(do)
+s(cumen)m(tation)i(for)150 4400 y(the)e(command)g(line)g(to)s(ol)h(`)p
+Fr(idn)p Fx(')e(that)h(pro)m(vide)g(a)h(quic)m(k)f(in)m(terface)h(to)g
+(the)f(library)-8 b(.)42 b(The)30 b(Emacs)i(Lisp)150
+4510 y(bindings)d(for)h(the)h(library)f(is)g(also)i(discussed.)275
+4651 y(The)23 b(reader)h(is)h(assumed)e(to)i(p)s(ossess)e(basic)i
+(familiarit)m(y)h(with)e(in)m(ternationalization)k(concepts)d(and)150
+4760 y(net)m(w)m(ork)31 b(programming)f(in)g(C)g(or)h(C)p
+Fr(++)p Fx(.)275 4902 y(This)c(man)m(ual)h(can)g(b)s(e)f(used)g(in)h
+(sev)m(eral)h(w)m(a)m(ys.)41 b(If)27 b(read)h(from)f(the)h(b)s
+(eginning)g(to)g(the)g(end,)g(it)h(giv)m(es)150 5011
+y(a)38 b(go)s(o)s(d)g(in)m(tro)s(duction)f(in)m(to)i(the)f(library)f
+(and)g(ho)m(w)h(it)g(can)g(b)s(e)f(used)g(in)h(an)f(application.)64
+b(F)-8 b(orw)m(ard)150 5121 y(references)35 b(are)f(included)g(where)g
+(necessary)-8 b(.)53 b(Later)35 b(on,)g(the)g(man)m(ual)f(can)h(b)s(e)f
+(used)f(as)i(a)f(reference)150 5230 y(man)m(ual)40 b(to)g(get)h(just)e
+(the)h(information)g(needed)f(ab)s(out)h(an)m(y)g(particular)g(in)m
+(terface)h(of)f(the)g(library)-8 b(.)150 5340 y(Exp)s(erienced)35
+b(programmers)g(migh)m(t)h(w)m(an)m(t)h(to)f(start)g(lo)s(oking)h(at)f
+(the)g(examples)g(at)g(the)g(end)f(of)h(the)p eop end
+%%Page: 2 7
+TeXDict begin 2 6 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(In)m(tro)s(duction)2592 b(2)150 299 y(man)m(ual)41
+b(\(see)i(Chapter)d(9)i([Examples],)i(page)e(38\),)j(and)c(then)g(only)
+g(read)g(up)f(those)i(parts)e(of)i(the)150 408 y(in)m(terface)32
+b(whic)m(h)e(are)h(unclear.)150 816 y Fw(1.2)68 b(F)-11
+b(eatures)150 975 y Fx(This)30 b(library)g(migh)m(t)h(ha)m(v)m(e)g(a)g
+(couple)g(of)f(adv)-5 b(an)m(tages)33 b(o)m(v)m(er)e(other)g(libraries)
+f(doing)h(a)g(similar)f(job.)150 1310 y(It's)h(F)-8 b(ree)31
+b(Soft)m(w)m(are)630 1420 y(An)m(yb)s(o)s(dy)42 b(can)h(use,)j(mo)s
+(dify)-8 b(,)47 b(and)42 b(redistribute)h(it)h(under)d(the)j(terms)f
+(of)g(the)g(GNU)630 1529 y(Lesser)21 b(General)i(Public)e(License)h(v)m
+(ersion)g(2.1)h(or)f(later)g(\(see)h(Section)f(C.2)g([GNU)h(LGPL],)630
+1639 y(page)31 b(75\).)150 1915 y(It's)g(thread-safe)630
+2025 y(No)g(global)h(state)f(is)g(k)m(ept)g(in)f(the)g(library)-8
+b(.)41 b(All)31 b(functions)f(are)h(reen)m(tran)m(t.)150
+2301 y(It's)g(p)s(ortable)630 2410 y(The)k(co)s(de)g(is)g(in)m(tended)h
+(to)g(b)s(e)e(written)h(in)g(pure)g(ANSI)f(C89.)56 b(It)36
+b(has)e(b)s(een)h(tested)h(on)630 2520 y(man)m(y)30 b(Unix)h(lik)m(e)g
+(op)s(erating)g(systems,)g(and)f(Windo)m(ws.)150 2796
+y(It's)h(mo)s(dularized)630 2906 y(The)i(library)g(is)g(comp)s(osed)g
+(of)h(sev)m(eral)h(mo)s(dules,)e(and)g(the)g(only)h(in)m(teraction)h(b)
+s(et)m(w)m(een)630 3015 y(mo)s(dules)j(is)h(through)f(eac)m(h)i(mo)s
+(dules')e(public)g(API.)h(If)f(y)m(ou)i(only)e(need)h(one)g(piece)h(of)
+630 3125 y(functionalit)m(y)-8 b(,)31 b(it)d(is)g(p)s(ossible)f(to)i
+(tak)m(e)h(the)e(\014les)g(y)m(ou)g(need)f(and)h(incorp)s(orate)g(them)
+g(in)m(to)630 3234 y(y)m(our)i(o)m(wn)h(pro)5 b(ject.)150
+3511 y(It's)31 b(not)f(bloated)630 3620 y(The)g(design)g(of)g(the)h
+(library)f(is)g(based)g(on)g(the)g(smallest)i(API)e(necessary)g(to)h
+(implemen)m(t)630 3730 y(the)h(basic)g(functionalit)m(y)-8
+b(.)47 b(It)32 b(has)f(b)s(een)g(carefully)i(extended)e(with)h(a)g
+(small)g(n)m(um)m(b)s(er)f(of)630 3839 y(high-lev)m(el)f(wrapp)s(ers)c
+(to)j(mak)m(e)g(it)g(comfortable)g(to)g(use)f(the)h(library)-8
+b(.)40 b(Ho)m(w)m(ev)m(er,)31 b(it)d(do)s(es)630 3949
+y(not)j(implemen)m(t)g(additional)g(functionalit)m(y)h(just)e(for)g
+(the)g(sak)m(e)i(of)e(completeness.)150 4225 y(It's)h(do)s(cumen)m(ted)
+630 4335 y(Sadly)-8 b(,)31 b(not)f(all)i(soft)m(w)m(are)f(comes)h(with)
+e(do)s(cumen)m(tation)h(these)g(da)m(ys.)41 b(This)29
+b(one)i(do)s(es.)150 4742 y Fw(1.3)68 b(Library)45 b(Ov)l(erview)150
+4902 y Fx(The)23 b(follo)m(wing)i(illustration)g(sho)m(w)f(the)g(comp)s
+(onen)m(ts)g(that)g(mak)m(e)h(up)d(Libidn,)i(and)f(ho)m(w)h(y)m(our)g
+(applica-)150 5011 y(tion)29 b(relates)h(to)g(the)e(library)-8
+b(.)41 b(In)27 b(the)i(illustration,)i(v)-5 b(arious)28
+b(comp)s(onen)m(ts)h(are)g(sho)m(wn)f(as)h(b)s(o)m(xes.)40
+b(Y)-8 b(ou)150 5121 y(see)28 b(the)f(generic)h(StringPrep)e(comp)s
+(onen)m(t,)i(the)g(v)-5 b(arious)27 b(StringPrep)f(pro\014les)g
+(including)h(Nameprep,)150 5230 y(the)39 b(Pun)m(yco)s(de)g(comp)s
+(onen)m(t,)i(the)f(IDNA)f(comp)s(onen)m(t,)j(and)c(the)i(TLD)e(comp)s
+(onen)m(t.)67 b(The)39 b(arro)m(ws)150 5340 y(indicate)k(aggregation,)
+48 b(e.g.,)f(IDNA)c(uses)e(Pun)m(yco)s(de)h(and)g(Nameprep,)j(and)c(in)
+h(turn)f(Nameprep)p eop end
+%%Page: 3 8
+TeXDict begin 3 7 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(In)m(tro)s(duction)2592 b(3)150 299 y(uses)38 b(the)h(generic)g
+(StringPrep)e(in)m(terface.)67 b(The)38 b(in)m(terfaces)i(to)f(all)g
+(comp)s(onen)m(ts)g(are)f(a)m(v)-5 b(ailable)41 b(for)150
+408 y(applications,)32 b(no)e(comp)s(onen)m(t)h(within)f(the)g(library)
+g(is)g(hidden)f(from)h(the)h(application.)150 3487 y
+@beginspecial 0 @llx 0 @lly 382 @urx 350 @ury 3820 @rwi
+@setspecial
+%%BeginDocument: libidn-components.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: components.fig
+%%Creator: fig2dev Version 3.2 Patchlevel 5a
+%%CreationDate: Mon Jun  8 12:40:03 2009
+%%BoundingBox: 0 0 382 350
+%Magnification: 1.0000
+%%EndComments
+%%BeginProlog
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+/pageheader {
+save
+newpath 0 350 moveto 0 0 lineto 382 0 lineto 382 350 lineto closepath clip newpath
+-47.4 405.1 translate
+1 -1 scale
+$F2psBegin
+10 setmiterlimit
+0 slj 0 slc
+ 0.06299 0.06299 sc
+} bind def
+/pagefooter {
+$F2psEnd
+restore
+} bind def
+%%EndProlog
+pageheader
+%
+% Fig objects follow
+%
+% 
+% here starts figure with depth 50
+% Polyline
+0 slj
+0 slc
+7.500 slw
+n 3355 1845 m 3295 1845 3295 2235 60 arcto 4 {pop} repeat
+  3295 2295 4609 2295 60 arcto 4 {pop} repeat
+  4669 2295 4669 1905 60 arcto 4 {pop} repeat
+  4669 1845 3355 1845 60 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 2663 1845 m 2618 1845 2618 2250 45 arcto 4 {pop} repeat
+  2618 2295 3141 2295 45 arcto 4 {pop} repeat
+  3186 2295 3186 1890 45 arcto 4 {pop} repeat
+  3186 1845 2663 1845 45 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 1988 1845 m 1943 1845 1943 2250 45 arcto 4 {pop} repeat
+  1943 2295 2467 2295 45 arcto 4 {pop} repeat
+  2512 2295 2512 1890 45 arcto 4 {pop} repeat
+  2512 1845 1988 1845 45 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 1313 1845 m 1268 1845 1268 2250 45 arcto 4 {pop} repeat
+  1268 2295 1792 2295 45 arcto 4 {pop} repeat
+  1837 2295 1837 1890 45 arcto 4 {pop} repeat
+  1837 1845 1313 1845 45 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 870 4560 m 810 4560 810 5099 60 arcto 4 {pop} repeat
+  810 5159 6735 5159 60 arcto 4 {pop} repeat
+  6795 5159 6795 4620 60 arcto 4 {pop} repeat
+  6795 4560 870 4560 60 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 4065 2837 m 4005 2837 4005 3448 60 arcto 4 {pop} repeat
+  4005 3508 5790 3508 60 arcto 4 {pop} repeat
+  5850 3508 5850 2897 60 arcto 4 {pop} repeat
+  5850 2837 4065 2837 60 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 4110 900 m 4050 900 4050 1338 60 arcto 4 {pop} repeat
+  4050 1398 5520 1398 60 arcto 4 {pop} repeat
+  5580 1398 5580 960 60 arcto 4 {pop} repeat
+  5580 900 4110 900 60 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+2864 1768 m 2864 1863 l 2895 1863 l 2895 1768 l 2895 1768 l 2880 1832 l 2864 1768 l cp
+eoclip
+n 2880 1398 m
+ 2880 1848 l gs col0 s gr gr
+
+% arrowhead
+n 2864 1768 m 2880 1832 l 2895 1768 l 2864 1768 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+3674 1768 m 3674 1863 l 3705 1863 l 3705 1768 l 3705 1768 l 3690 1832 l 3674 1768 l cp
+eoclip
+n 3690 1395 m
+ 3690 1848 l gs col0 s gr gr
+
+% arrowhead
+n 3674 1768 m 3690 1832 l 3705 1768 l 3674 1768 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+2864 4493 m 2864 4588 l 2895 4588 l 2895 4493 l 2895 4493 l 2880 4557 l 2864 4493 l cp
+eoclip
+n 2880 2298 m
+ 2880 4573 l gs col0 s gr gr
+
+% arrowhead
+n 2864 4493 m 2880 4557 l 2895 4493 l 2864 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+2144 4493 m 2144 4588 l 2175 4588 l 2175 4493 l 2175 4493 l 2160 4557 l 2144 4493 l cp
+eoclip
+n 2160 2298 m
+ 2160 4573 l gs col0 s gr gr
+
+% arrowhead
+n 2144 4493 m 2160 4557 l 2175 4493 l 2144 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+1514 4493 m 1514 4588 l 1545 4588 l 1545 4493 l 1545 4493 l 1530 4557 l 1514 4493 l cp
+eoclip
+n 1530 2298 m
+ 1530 4573 l gs col0 s gr gr
+
+% arrowhead
+n 1514 4493 m 1530 4557 l 1545 4493 l 1514 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+1019 4493 m 1019 4588 l 1050 4588 l 1050 4493 l 1050 4493 l 1035 4557 l 1019 4493 l cp
+eoclip
+n 1035 1398 m
+ 1035 4573 l gs col0 s gr gr
+
+% arrowhead
+n 1019 4493 m 1035 4557 l 1050 4493 l 1019 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+1514 1768 m 1514 1863 l 1545 1863 l 1545 1768 l 1545 1768 l 1530 1832 l 1514 1768 l cp
+eoclip
+n 1530 1398 m
+ 1530 1848 l gs col0 s gr gr
+
+% arrowhead
+n 1514 1768 m 1530 1832 l 1545 1768 l 1514 1768 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+2189 1768 m 2189 1863 l 2220 1863 l 2220 1768 l 2220 1768 l 2205 1832 l 2189 1768 l cp
+eoclip
+n 2205 1398 m
+ 2205 1848 l gs col0 s gr gr
+
+% arrowhead
+n 2189 1768 m 2205 1832 l 2220 1768 l 2189 1768 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+3539 4493 m 3539 4588 l 3570 4588 l 3570 4493 l 3570 4493 l 3555 4557 l 3539 4493 l cp
+eoclip
+n 3555 2298 m
+ 3555 4573 l gs col0 s gr gr
+
+% arrowhead
+n 3539 4493 m 3555 4557 l 3570 4493 l 3539 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+4889 4493 m 4889 4588 l 4920 4588 l 4920 4493 l 4920 4493 l 4905 4557 l 4889 4493 l cp
+eoclip
+n 4905 3506 m
+ 4905 4573 l gs col0 s gr gr
+
+% arrowhead
+n 4889 4493 m 4905 4557 l 4920 4493 l 4889 4493 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+ [15 45] 45 sd
+n 870 5820 m 810 5820 810 6359 60 arcto 4 {pop} repeat
+  810 6419 6735 6419 60 arcto 4 {pop} repeat
+  6795 6419 6795 5880 60 arcto 4 {pop} repeat
+  6795 5820 870 5820 60 arcto 4 {pop} repeat
+ cp gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+gs  clippath
+3705 5669 m 3705 5820 l 3765 5820 l 3765 5669 l 3765 5669 l 3735 5789 l 3705 5669 l cp
+3765 5311 m 3765 5160 l 3705 5160 l 3705 5311 l 3705 5311 l 3735 5191 l 3765 5311 l cp
+eoclip
+n 3735 5175 m
+ 3735 5805 l gs col0 s gr gr
+ [] 0 sd
+% arrowhead
+n 3765 5311 m 3735 5191 l 3705 5311 l 3765 5311 l  cp gs col7 1.00 shd ef gr  col0 s
+% arrowhead
+n 3705 5669 m 3735 5789 l 3765 5669 l 3705 5669 l  cp gs col7 1.00 shd ef gr  col0 s
+% Polyline
+n 840 900 m 765 900 765 1323 75 arcto 4 {pop} repeat
+  765 1398 3841 1398 75 arcto 4 {pop} repeat
+  3916 1398 3916 975 75 arcto 4 {pop} repeat
+  3916 900 840 900 75 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+4349 2755 m 4349 2850 l 4380 2850 l 4380 2755 l 4380 2755 l 4365 2819 l 4349 2755 l cp
+eoclip
+n 4365 2277 m
+ 4365 2835 l gs col0 s gr gr
+
+% arrowhead
+n 4349 2755 m 4365 2819 l 4380 2755 l 4349 2755 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+4844 2783 m 4844 2878 l 4875 2878 l 4875 2783 l 4875 2783 l 4860 2847 l 4844 2783 l cp
+eoclip
+n 4860 1395 m
+ 4860 2863 l gs col0 s gr gr
+
+% arrowhead
+n 4844 2783 m 4860 2847 l 4875 2783 l 4844 2783 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 5715 900 m 5670 900 5670 1350 45 arcto 4 {pop} repeat
+  5670 1395 6750 1395 45 arcto 4 {pop} repeat
+  6795 1395 6795 945 45 arcto 4 {pop} repeat
+  6795 900 5715 900 45 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+6149 4493 m 6149 4588 l 6180 4588 l 6180 4493 l 6180 4493 l 6165 4557 l 6149 4493 l cp
+eoclip
+n 6165 1398 m
+ 6165 4573 l gs col0 s gr gr
+
+% arrowhead
+n 6149 4493 m 6165 4557 l 6180 4493 l 6149 4493 l  cp gs 0.00 setgray ef gr  col0 s
+/Helvetica ff 165.00 scf sf
+3600 2107 m
+gs 1 -1 sc (Nameprep) col0 sh gr
+/Helvetica ff 165.00 scf sf
+2700 2130 m
+gs 1 -1 sc (iSCSI) col0 sh gr
+/Helvetica ff 165.00 scf sf
+2025 2130 m
+gs 1 -1 sc (SASL) col0 sh gr
+/Helvetica ff 165.00 scf sf
+1327 2130 m
+gs 1 -1 sc (XMPP) col0 sh gr
+/Helvetica-Bold ff 165.00 scf sf
+3150 4905 m
+gs 1 -1 sc (GNU IDN Library) col0 sh gr
+/Helvetica ff 150.00 scf sf
+4751 3227 m
+gs 1 -1 sc (IDNA) col0 sh gr
+/Helvetica ff 165.00 scf sf
+4455 1215 m
+gs 1 -1 sc (Punycode) col0 sh gr
+/Helvetica ff 165.00 scf sf
+3345 6157 m
+gs 1 -1 sc (Application) col0 sh gr
+/Helvetica ff 165.00 scf sf
+1935 1215 m
+gs 1 -1 sc (StringPrep) col0 sh gr
+/Helvetica ff 165.00 scf sf
+6075 1170 m
+gs 1 -1 sc (TLD) col0 sh gr
+% here ends figure;
+pagefooter
+showpage
+%%Trailer
+%EOF
+
+%%EndDocument
+ @endspecial 250 x Fw(1.4)68 b(Supp)t(orted)44 b(Platforms)150
+3896 y Fx(Libidn)88 b(has)h(at)h(some)g(p)s(oin)m(t)f(in)g(time)h(b)s
+(een)f(tested)h(on)f(the)h(follo)m(wing)h(platforms.)150
+4006 y(Online)i(build)f(rep)s(orts)g(for)h(eac)m(h)i(platforms)e(and)g
+(Libidn)f(v)m(ersion)h(is)h(a)m(v)-5 b(ailable)95 b(at)150
+4115 y Fr(http://autobuild.josefss)o(on.o)o(rg/l)o(ibi)o(dn/)p
+Fx(.)199 4261 y(1.)61 b(Debian)31 b(GNU/Lin)m(ux)g(3.0)g(\(W)-8
+b(o)s(o)s(dy\))330 4402 y(GCC)39 b(2.95.4)j(and)c(GNU)i(Mak)m(e.)69
+b(This)39 b(is)g(the)h(main)f(dev)m(elopmen)m(t)i(platform.)68
+b Fr(alphaev67-)330 4511 y(unknown-linux-gnu)p Fx(,)140
+b Fr(alphaev6-unknown-linux-gnu)o Fx(,)f Fr(arm-unknown-linux-gnu)p
+Fx(,)330 4621 y Fr(armv4l-unknown-linux-gnu)o Fx(,)81
+b Fr(hppa-unknown-linux-gnu)p Fx(,)f Fr(hppa64-unknown-linux-)330
+4731 y(gnu)p Fx(,)88 b Fr(i686-pc-linux-gnu)p Fx(,)83
+b Fr(ia64-unknown-linux-gnu)p Fx(,)g Fr(m68k-unknown-linux-gnu)p
+Fx(,)330 4840 y Fr(mips-unknown-linux-gnu)p Fx(,)56 b
+Fr(mipsel-unknown-linux-gnu)p Fx(,)g Fr(powerpc-unknown-linux-)330
+4950 y(gnu)p Fx(,)64 b Fr(s390-ibm-linux-gnu)p Fx(,)c
+Fr(sparc-unknown-linux-gnu)p Fx(,)f Fr(sparc64-unknown-linux-)330
+5059 y(gnu)p Fx(.)199 5200 y(2.)i(Debian)31 b(GNU/Lin)m(ux)g(2.1)330
+5340 y(GCC)f(2.95.1)j(and)c(GNU)i(Mak)m(e.)43 b Fr
+(armv4l-unknown-linux-gn)o(u)p Fx(.)p eop end
+%%Page: 4 9
+TeXDict begin 4 8 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(In)m(tro)s(duction)2592 b(4)199 299 y(3.)61 b(T)-8
+b(ru64)30 b(UNIX)330 438 y(T)-8 b(ru64)32 b(UNIX)h(C)f(compiler)h(and)f
+(T)-8 b(ru64)33 b(Mak)m(e.)48 b Fr(alphaev67-dec-osf5.1)p
+Fx(,)28 b Fr(alphaev68-dec-)330 548 y(osf5.1)p Fx(.)199
+687 y(4.)61 b(SuSE)29 b(Lin)m(ux)h(7.1)330 827 y(GCC)47
+b(2.96)j(and)d(GNU)i(Mak)m(e.)95 b Fr(alphaev6-unknown-linux-)o(gnu)o
+Fx(,)47 b Fr(alphaev67-unknown-)330 936 y(linux-gnu)p
+Fx(.)199 1076 y(5.)61 b(SuSE)29 b(Lin)m(ux)h(7.2a)330
+1215 y(GCC)g(3.0)h(and)f(GNU)h(Mak)m(e.)42 b Fr(ia64-unknown-linux-gnu)
+p Fx(.)199 1355 y(6.)61 b(SuSE)29 b(Lin)m(ux)330 1494
+y(GCC)74 b(3.2.2)h(and)f(GNU)h(Mak)m(e.)173 b Fr
+(x86_64-unknown-linux-gnu)67 b Fx(\(AMD64)76 b(Opteron)330
+1604 y(\\Melo)s(dy"\).)199 1743 y(7.)61 b(SuSE)29 b(En)m(terprise)h
+(Serv)m(er)g(9)h(on)f(IBM)h(Op)s(enP)m(o)m(w)m(er)f(720)330
+1883 y(GCC)g(3.3.3)i(and)e(GNU)h(Mak)m(e.)42 b Fr
+(powerpc64-unknown-linux-g)o(nu)p Fx(.)199 2022 y(8.)61
+b(RedHat)31 b(Lin)m(ux)f(7.2)330 2162 y(GCC)47 b(2.96)j(and)d(GNU)i
+(Mak)m(e.)95 b Fr(alphaev6-unknown-linux-)o(gnu)o Fx(,)47
+b Fr(alphaev67-unknown-)330 2271 y(linux-gnu)p Fx(,)28
+b Fr(ia64-unknown-linux-gnu)p Fx(.)199 2411 y(9.)61 b(RedHat)31
+b(Lin)m(ux)f(8.0)330 2550 y(GCC)g(3.2)h(and)f(GNU)h(Mak)m(e.)42
+b Fr(i686-pc-linux-gnu)p Fx(.)154 2690 y(10.)61 b(RedHat)31
+b(Adv)-5 b(anced)30 b(Serv)m(er)h(2.1)330 2829 y(GCC)f(2.96)i(and)e
+(GNU)h(Mak)m(e.)42 b Fr(i686-pc-linux-gnu)p Fx(.)154
+2969 y(11.)61 b(Slac)m(kw)m(are)32 b(Lin)m(ux)e(8.0.01)330
+3108 y(GCC)g(2.95.3)j(and)c(GNU)i(Mak)m(e.)43 b Fr(i686-pc-linux-gnu)p
+Fx(.)154 3248 y(12.)61 b(Mandrak)m(e)31 b(Lin)m(ux)f(9.0)330
+3387 y(GCC)g(3.2)h(and)f(GNU)h(Mak)m(e.)42 b Fr(i686-pc-linux-gnu)p
+Fx(.)154 3527 y(13.)61 b(IRIX)30 b(6.5)330 3666 y(MIPS)g(C)g(compiler,)
+h(IRIX)f(Mak)m(e.)42 b Fr(mips-sgi-irix6.5)p Fx(.)154
+3806 y(14.)61 b(AIX)30 b(4.3.2)330 3945 y(IBM)h(C)f(for)g(AIX)g
+(compiler,)i(AIX)e(Mak)m(e.)42 b Fr(rs6000-ibm-aix4.3.2.0)p
+Fx(.)154 4085 y(15.)61 b(Microsoft)32 b(Windo)m(ws)e(2000)i(\(Cygwin\))
+330 4224 y(GCC)e(3.2,)i(GNU)f(mak)m(e.)41 b Fr(i686-pc-cygwin)p
+Fx(.)154 4364 y(16.)61 b(HP-UX)31 b(11)330 4503 y(HP-UX)g(C)f(compiler)
+h(and)f(HP)g(Mak)m(e.)42 b Fr(ia64-hp-hpux11.22)p Fx(,)26
+b Fr(hppa2.0w-hp-hpux11.11)p Fx(.)154 4643 y(17.)61 b(SUN)30
+b(Solaris)h(2.7)330 4782 y(GCC)f(3.0.4)i(and)e(GNU)h(Mak)m(e.)42
+b Fr(sparc-sun-solaris2.7)p Fx(.)154 4922 y(18.)61 b(SUN)30
+b(Solaris)h(2.8)330 5061 y(Sun)e(W)-8 b(orkShop)30 b(Compiler)g(C)g
+(6.0)i(and)d(SUN)i(Mak)m(e.)42 b Fr(sparc-sun-solaris2.8)p
+Fx(.)154 5200 y(19.)61 b(SUN)30 b(Solaris)h(2.9)330 5340
+y(Sun)e(F)-8 b(orte)32 b(Dev)m(elop)s(er)f(7)g(C)f(compiler)h(and)f
+(GNU)h(Mak)m(e.)42 b Fr(sparc-sun-solaris2.9)p Fx(.)p
+eop end
+%%Page: 5 10
+TeXDict begin 5 9 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(In)m(tro)s(duction)2592 b(5)154 299 y(20.)61 b(NetBSD)32
+b(1.6)330 435 y(GCC)85 b(2.95.3)j(and)d(GNU)h(Mak)m(e.)208
+b Fr(alpha-unknown-netbsd1.6)p Fx(,)94 b Fr(i386-unknown-)330
+544 y(netbsdelf1.6)p Fx(.)154 680 y(21.)61 b(Op)s(enBSD)29
+b(3.1)j(and)e(3.2)330 816 y(GCC)79 b(2.95.3)j(and)e(GNU)g(Mak)m(e.)191
+b Fr(alpha-unknown-openbsd3.)o(1)p Fx(,)87 b Fr(i386-unknown-)330
+925 y(openbsd3.1)p Fx(.)154 1061 y(22.)61 b(F)-8 b(reeBSD)32
+b(4.7)f(and)f(4.8)330 1197 y(GCC)74 b(2.95.4)i(and)d(GNU)i(Mak)m(e.)173
+b Fr(alpha-unknown-freebsd4.7)p Fx(,)79 b Fr(alpha-unknown-)330
+1306 y(freebsd4.8)p Fx(,)28 b Fr(i386-unknown-freebsd4.7)p
+Fx(,)c Fr(i386-unknown-freebsd4.8)p Fx(.)154 1442 y(23.)61
+b(MacOS)31 b(X)f(10.2)i(Serv)m(er)e(Edition)330 1578
+y(GCC)g(3.1)h(and)f(GNU)h(Mak)m(e.)42 b Fr(powerpc-apple-darwin6.5)p
+Fx(.)154 1714 y(24.)61 b(MacOS)31 b(X)f(10.4)i(\\Tiger")g(with)e(Xco)s
+(de)h(2.0)330 1850 y(GCC)f(4.0)h(and)f(GNU)h(Mak)m(e.)42
+b Fr(powerpc-apple-darwin8.0)p Fx(.)154 1985 y(25.)61
+b(Cross)30 b(compiled)h(to)g(uClin)m(ux/uClib)s(c)e(on)h(Motorola)j
+(Cold\014re)330 2121 y(GCC)d(3.4)h(and)f(GNU)h(Mak)m(e)h
+Fr(m68k-uclinux-elf)p Fx(.)154 2257 y(26.)61 b(Cross)30
+b(compiled)h(to)g(ARM)f(using)g(Glib)s(c)330 2393 y(GCC)g(2.95)i(and)e
+(GNU)h(Mak)m(e)h Fr(arm-linux)p Fx(.)154 2528 y(27.)61
+b(Cross)30 b(compiled)h(to)g(Mingw32.)330 2664 y(GCC)f(3.4.4)i(and)e
+(GNU)h(Mak)m(e)h Fr(i586-mingw32msvc)p Fx(.)275 2827
+y(If)d(y)m(ou)i(use)f(Libidn)f(on,)i(or)f(p)s(ort)g(Libidn)f(to,)j(a)e
+(new)g(platform)h(please)g(rep)s(ort)f(it)g(to)i(the)e(author.)150
+3064 y Fw(1.5)68 b(Getting)46 b(help)150 3223 y Fx(A)e(mailing)g(list)g
+(where)f(users)g(of)h(Libidn)e(ma)m(y)i(help)f(eac)m(h)i(other)f
+(exists,)j(and)c(y)m(ou)h(can)g(reac)m(h)g(it)150 3333
+y(b)m(y)49 b(sending)g(e-mail)i(to)f Fr(help-libidn@gnu.org)p
+Fx(.)92 b(Arc)m(hiv)m(es)50 b(of)g(the)f(mailing)h(list)g(discussions,)
+150 3442 y(and)41 b(an)g(in)m(terface)i(to)f(manage)g(subscriptions,)h
+(is)f(a)m(v)-5 b(ailable)43 b(through)e(the)g(W)-8 b(orld)42
+b(Wide)g(W)-8 b(eb)42 b(at)150 3552 y Fr(http://lists.gnu.org/mai)o
+(lman)o(/lis)o(tin)o(fo/h)o(elp-)o(lib)o(idn)p Fx(.)150
+3788 y Fw(1.6)68 b(Commercial)47 b(Supp)t(ort)150 3947
+y Fx(Commercial)29 b(supp)s(ort)e(is)h(a)m(v)-5 b(ailable)31
+b(for)d(users)f(of)i(GNU)g(Libidn.)39 b(The)27 b(kind)h(of)g(supp)s
+(ort)f(that)i(can)g(b)s(e)150 4057 y(purc)m(hased)h(ma)m(y)g(include:)
+225 4194 y Fv(\017)60 b Fx(Implemen)m(t)26 b(new)g(features.)40
+b(Suc)m(h)26 b(as)g(coun)m(try)h(co)s(de)f(sp)s(eci\014c)g(pro\014ling)
+g(to)h(supp)s(ort)e(a)h(restricted)330 4304 y(subset)k(of)g(Unico)s
+(de.)225 4439 y Fv(\017)60 b Fx(P)m(ort)44 b(Libidn)d(to)j(new)e
+(platforms.)78 b(This)42 b(could)h(include)g(p)s(orting)f(Libidn)g(to)h
+(an)g(em)m(b)s(edded)330 4549 y(platforms)30 b(that)h(ma)m(y)g(need)f
+(memory)h(or)f(size)h(optimization.)225 4685 y Fv(\017)60
+b Fx(In)m(tegrating)32 b(IDN)f(supp)s(ort)d(in)i(y)m(our)h(existing)g
+(pro)5 b(ject.)225 4821 y Fv(\017)60 b Fx(System)30 b(design)g(of)h
+(comp)s(onen)m(ts)f(related)i(to)f(IDN.)275 4984 y(If)e(y)m(ou)i(are)g
+(in)m(terested,)h(please)f(write)f(to:)150 5121 y Fr(Simon)46
+b(Josefsson)g(Datakonsult)150 5230 y(Hagagatan)f(24)150
+5340 y(113)i(47)g(Stockholm)p eop end
+%%Page: 6 11
+TeXDict begin 6 10 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(In)m(tro)s(duction)2592 b(6)150 299 y Fr(Sweden)150
+518 y(E-mail:)46 b(simon@josefsson.org)275 657 y Fx(If)25
+b(y)m(our)h(compan)m(y)g(pro)m(vide)g(supp)s(ort)e(related)j(to)f(GNU)h
+(Libidn)e(and)g(w)m(ould)g(lik)m(e)j(to)e(b)s(e)f(men)m(tioned)150
+767 y(here,)30 b(con)m(tact)j(the)e(author)f(\(see)h(Section)g(1.8)h
+([Bug)f(Rep)s(orts],)f(page)h(7\).)150 1006 y Fw(1.7)68
+b(Do)l(wnloading)46 b(and)f(Installing)150 1165 y Fx(The)30
+b(pac)m(k)-5 b(age)32 b(can)f(b)s(e)f(do)m(wnloaded)g(from)g(sev)m
+(eral)i(places,)f(including:)275 1304 y Fr(ftp://alpha.gnu.org/pub)o
+(/gn)o(u/li)o(bidn)o(/)275 1443 y Fx(The)d(latest)j(v)m(ersion)f(is)f
+(stored)g(in)g(a)h(\014le,)g(e.g.,)h(`)p Fr(libidn-1.15.tar.gz)p
+Fx(')25 b(where)j(the)i(`)p Fr(1.15)p Fx(')e(v)-5 b(alue)150
+1553 y(is)30 b(the)h(highest)g(v)m(ersion)f(n)m(um)m(b)s(er)g(in)g(the)
+g(directory)-8 b(.)275 1692 y(The)33 b(pac)m(k)-5 b(age)35
+b(is)f(then)f(extracted,)j(con\014gured)c(and)h(built)h(lik)m(e)g(man)m
+(y)g(other)g(pac)m(k)-5 b(ages)35 b(that)f(use)150 1801
+y(Auto)s(conf.)54 b(F)-8 b(or)36 b(detailed)g(information)f(on)g
+(con\014guring)f(and)g(building)g(it,)j(refer)e(to)g(the)g(`)p
+Fr(INSTALL)p Fx(')150 1911 y(\014le)30 b(that)h(is)g(part)f(of)h(the)f
+(distribution)g(arc)m(hiv)m(e.)275 2050 y(Here)44 b(is)g(an)g(example)h
+(terminal)g(session)f(that)h(do)m(wnload,)j(con\014gure,)f(build)c(and)
+h(install)h(the)150 2159 y(pac)m(k)-5 b(age.)43 b(Y)-8
+b(ou)31 b(will)f(need)g(a)h(few)f(basic)h(to)s(ols,)h(suc)m(h)e(as)g(`)
+p Fr(sh)p Fx(',)h(`)p Fr(make)p Fx(')e(and)h(`)p Fr(cc)p
+Fx('.)390 2298 y Fr($)47 b(wget)g(-q)g(ftp://alpha.gnu.org/pub/g)o
+(nu/l)o(ibid)o(n/l)o(ibid)o(n-1.)o(15.)o(tar.)o(gz)390
+2408 y($)g(tar)g(xfz)g(libidn-1.15.tar.gz)390 2517 y($)g(cd)h
+(libidn-1.15/)390 2627 y($)f(./configure)390 2737 y(...)390
+2846 y($)g(make)390 2956 y(...)390 3065 y($)g(make)g(install)390
+3175 y(...)275 3314 y Fx(After)30 b(that)h(Libidn)e(should)h(b)s(e)f
+(prop)s(erly)h(installed)h(and)e(ready)i(for)f(use.)275
+3453 y(A)g(few)g Fr(configure)e Fx(options)j(ma)m(y)g(b)s(e)e(relev)-5
+b(an)m(t,)32 b(summarized)e(in)g(the)h(table.)150 3619
+y Fr(--enable-java)630 3728 y Fx(Build)f(the)h(Ja)m(v)-5
+b(a)32 b(p)s(ort)e(in)m(to)h(a)g(*.JAR)g(\014le.)41 b(See)31
+b(Chapter)f(12)i([Ja)m(v)-5 b(a)31 b(API],)g(page)g(58,)h(for)630
+3838 y(more)f(information.)150 4002 y Fr(--disable-tld)630
+4111 y Fx(Disable)24 b(the)f(TLD)f(mo)s(dule.)38 b(This)21
+b(w)m(ould)i(t)m(ypically)h(only)f(b)s(e)f(useful)g(if)h(y)m(ou)g(are)g
+(building)630 4221 y(on)37 b(a)g(memory)g(restricted)g(platforms.)60
+b(See)37 b(Chapter)g(7)g([TLD)g(F)-8 b(unctions],)39
+b(page)f(31,)630 4331 y(for)30 b(more)h(information.)150
+4494 y Fr(--enable-csharp[=IMPL])630 4604 y Fx(Build)38
+b(the)h Fr(C#)e Fx(p)s(ort)h(in)m(to)h(a)g Fr(*.DLL)e
+Fx(\014le.)64 b(See)39 b(Chapter)e(13)i([C#)f(API],)h(page)g(61,)i(for)
+630 4714 y(more)34 b(information.)51 b(Here,)35 b Fr(IMPL)e
+Fx(is)h Fr(pnet)e Fx(or)i Fr(mono)p Fx(,)g(indicating)g(whether)f(the)h
+(PNET)630 4823 y Fr(cscc)29 b Fx(compiler)i(or)g(the)f(Mono)h
+Fr(mcs)f Fx(compiler)h(should)e(b)s(e)h(used,)g(resp)s(ectiv)m(ely)-8
+b(.)275 4989 y(F)g(or)31 b(the)f(complete)i(list,)f(refer)f(to)i(the)e
+(output)g(from)g Fr(configure)e(--help)p Fx(.)150 5193
+y Fq(1.7.1)63 b(Installing)41 b(under)h(Windo)m(ws)150
+5340 y Fx(There)30 b(are)h(t)m(w)m(o)g(w)m(a)m(ys)h(to)f(build)e
+(Libidn)g(on)h(Windo)m(ws:)41 b(via)31 b(MinGW)g(or)g(via)g(Visual)g
+(Studio.)p eop end
+%%Page: 7 12
+TeXDict begin 7 11 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(In)m(tro)s(duction)2592 b(7)275 299 y(With)36 b(MinGW,)h(y)m(ou)f
+(can)g(build)f(a)h(Libidn)e(DLL)i(and)f(use)h(it)g(from)f(other)i
+(applications.)58 b(After)150 408 y(installing)42 b(MinGW)h(\()p
+Fr(http://mingw.org/)p Fx(\))37 b(follo)m(w)43 b(the)e(generic)i
+(installation)g(instructions)e(\(see)150 518 y(Section)31
+b(1.7)h([Do)m(wnloading)g(and)d(Installing],)j(page)f(6\).)41
+b(The)30 b(DLL)h(is)f(installed)h(b)m(y)g(default.)275
+651 y(F)-8 b(or)106 b(information)g(on)g(ho)m(w)g(to)h(use)e(the)h(DLL)
+g(in)g(other)g(applications,)126 b(see:)150 760 y Fr
+(http://www.mingw.org/min)o(gwfa)o(q.sh)o(tml)o(#faq)o(-msv)o(cdl)o(l)p
+Fx(.)275 893 y(Y)-8 b(ou)35 b(can)f(build)g(Libidn)f(as)i(a)g(nativ)m
+(e)h(Visual)f(Studio)f(C)p Fr(++)f Fx(pro)5 b(ject.)54
+b(This)34 b(allo)m(ws)i(y)m(ou)f(to)g(build)150 1002
+y(the)c(co)s(de)g(for)g(other)g(platforms)g(that)h(VS)e(supp)s(orts,)g
+(suc)m(h)g(as)i(Windo)m(ws)f(Mobile.)43 b(Y)-8 b(ou)32
+b(need)e(Visual)150 1112 y(Studio)g(2005)i(or)e(later.)275
+1244 y(First)i(do)m(wnload)h(and)f(unpac)m(k)g(the)h(arc)m(hiv)m(e)h
+(as)f(describ)s(ed)e(in)i(the)f(generic)i(installation)g(instruc-)150
+1354 y(tions)f(\(see)h(Section)g(1.7)g([Do)m(wnloading)h(and)d
+(Installing],)j(page)f(6\).)49 b(Don't)34 b(run)e Fr(./configure)p
+Fx(.)45 b(In-)150 1463 y(stead,)33 b(start)g(Visual)g(Studio)e(and)h
+(op)s(en)f(the)i(pro)5 b(ject)32 b(\014le)h(`)p Fr(win32/libidn.sln)p
+Fx(')28 b(inside)k(the)g(Libidn)150 1573 y(directory)-8
+b(.)42 b(Y)-8 b(ou)31 b(should)e(b)s(e)h(able)h(to)g(build)e(the)i(pro)
+5 b(ject)30 b(using)g(Build)h(Pro)5 b(ject.)275 1705
+y(Output)38 b(libraries)h(will)h(b)s(e)f(written)g(in)m(to)i(the)f
+Fr(win32/lib)c Fx(\(or)k Fr(win32/lib/debug)35 b Fx(for)40
+b(Debug)150 1815 y(v)m(ersions\))31 b(folder.)275 1948
+y(When)h(w)m(orking)i(with)e(Windo)m(ws)i(y)m(ou)f(ma)m(y)h(w)m(an)m(t)
+f(to)h(lo)s(ok)g(in)m(to)g(the)f(sp)s(ecial)h(memory)f(handling)150
+2057 y(functions)23 b(that)i(ma)m(y)f(b)s(e)f(needed)h(\(see)h(Section)
+f(2.6)h([Memory)g(handling)e(under)f(Windo)m(ws],)k(page)e(12\).)150
+2286 y Fw(1.8)68 b(Bug)45 b(Rep)t(orts)150 2445 y Fx(If)30
+b(y)m(ou)h(think)f(y)m(ou)g(ha)m(v)m(e)i(found)d(a)i(bug)e(in)h
+(Libidn,)g(please)h(in)m(v)m(estigate)j(it)c(and)g(rep)s(ort)g(it.)225
+2577 y Fv(\017)60 b Fx(Please)40 b(mak)m(e)g(sure)d(that)j(the)f(bug)f
+(is)g(really)i(in)e(Libidn,)i(and)e(preferably)g(also)i(c)m(hec)m(k)g
+(that)f(it)330 2687 y(hasn't)30 b(already)h(b)s(een)f(\014xed)g(in)g
+(the)g(latest)i(v)m(ersion.)225 2819 y Fv(\017)60 b Fx(Y)-8
+b(ou)31 b(ha)m(v)m(e)g(to)h(send)d(us)h(a)h(test)g(case)g(that)g(mak)m
+(es)g(it)g(p)s(ossible)f(for)g(us)g(to)h(repro)s(duce)e(the)i(bug.)225
+2952 y Fv(\017)60 b Fx(Y)-8 b(ou)29 b(also)h(ha)m(v)m(e)g(to)g(explain)
+f(what)g(is)g(wrong;)g(if)g(y)m(ou)g(get)h(a)f(crash,)h(or)f(if)f(the)h
+(results)g(prin)m(ted)g(are)330 3061 y(not)36 b(go)s(o)s(d)g(and)g(in)g
+(that)g(case,)j(in)d(what)g(w)m(a)m(y)-8 b(.)59 b(Mak)m(e)38
+b(sure)d(that)i(the)f(bug)g(rep)s(ort)f(includes)h(all)330
+3171 y(information)31 b(y)m(ou)f(w)m(ould)h(need)f(to)h(\014x)f(this)g
+(kind)f(of)i(bug)f(for)g(someone)h(else.)275 3326 y(Please)36
+b(mak)m(e)f(an)g(e\013ort)h(to)f(pro)s(duce)f(a)h(self-con)m(tained)i
+(rep)s(ort,)f(with)e(something)i(de\014nite)e(that)150
+3436 y(can)29 b(b)s(e)g(tested)g(or)g(debugged.)40 b(V)-8
+b(ague)31 b(queries)e(or)g(piecemeal)h(messages)g(are)g(di\016cult)f
+(to)h(act)g(on)f(and)150 3546 y(don't)h(help)g(the)h(dev)m(elopmen)m(t)
+h(e\013ort.)275 3678 y(If)e(y)m(our)g(bug)g(rep)s(ort)g(is)g(go)s(o)s
+(d,)h(w)m(e)g(will)g(do)f(our)g(b)s(est)g(to)i(help)e(y)m(ou)g(to)i
+(get)f(a)g(corrected)h(v)m(ersion)f(of)150 3788 y(the)j(soft)m(w)m
+(are;)j(if)d(the)g(bug)f(rep)s(ort)g(is)h(p)s(o)s(or,)g(w)m(e)g(w)m
+(on't)g(do)g(an)m(ything)g(ab)s(out)g(it)g(\(apart)g(from)f(asking)150
+3897 y(y)m(ou)e(to)g(send)e(b)s(etter)i(bug)f(rep)s(orts\).)275
+4030 y(If)19 b(y)m(ou)i(think)f(something)h(in)f(this)g(man)m(ual)h(is)
+f(unclear,)j(or)d(do)m(wnrigh)m(t)h(incorrect,)i(or)e(if)f(the)h
+(language)150 4139 y(needs)30 b(to)h(b)s(e)f(impro)m(v)m(ed,)h(please)g
+(also)g(send)f(a)h(note.)275 4272 y(Send)e(y)m(our)h(bug)g(rep)s(ort)g
+(to:)1495 4381 y(`)p Fr(bug-libidn@gnu.org)p Fx(')150
+4610 y Fw(1.9)68 b(Con)l(tributing)150 4769 y Fx(If)25
+b(y)m(ou)h(w)m(an)m(t)g(to)g(submit)f(a)h(patc)m(h)g(for)f(inclusion)h
+({)f(from)h(solv)m(e)g(a)g(t)m(yp)s(o)g(y)m(ou)g(disco)m(v)m(ered,)i
+(up)c(to)i(adding)150 4879 y(supp)s(ort)38 b(for)h(a)h(new)e(feature)i
+({)g(y)m(ou)g(should)e(submit)h(it)h(as)f(a)h(bug)f(rep)s(ort)f(\(see)j
+(Section)f(1.8)g([Bug)150 4988 y(Rep)s(orts],)32 b(page)g(7\).)44
+b(There)30 b(are)i(some)g(things)f(that)h(y)m(ou)f(can)h(do)f(to)h
+(increase)g(the)f(c)m(hances)h(for)f(it)h(to)150 5098
+y(b)s(e)e(included)f(in)h(the)h(o\016cial)h(pac)m(k)-5
+b(age.)275 5230 y(Unless)41 b(y)m(our)g(patc)m(h)h(is)f(v)m(ery)h
+(small)g(\(sa)m(y)-8 b(,)46 b(under)40 b(10)i(lines\))g(w)m(e)f
+(require)g(that)h(y)m(ou)g(assign)g(the)150 5340 y(cop)m(yrigh)m(t)d
+(of)f(y)m(our)f(w)m(ork)h(to)g(the)g(F)-8 b(ree)39 b(Soft)m(w)m(are)f
+(F)-8 b(oundation.)63 b(This)37 b(is)g(to)i(protect)f(the)g(freedom)p
+eop end
+%%Page: 8 13
+TeXDict begin 8 12 bop 150 -116 a Fx(Chapter)30 b(1:)41
+b(In)m(tro)s(duction)2592 b(8)150 299 y(of)44 b(the)g(pro)5
+b(ject.)81 b(If)43 b(y)m(ou)h(ha)m(v)m(e)h(not)f(already)h(signed)e
+(pap)s(ers,)j(w)m(e)f(will)f(send)f(y)m(ou)h(the)g(necessary)150
+408 y(information)31 b(when)e(y)m(ou)i(submit)e(y)m(our)i(con)m
+(tribution.)275 543 y(F)-8 b(or)33 b(con)m(tributions)h(that)f(do)s
+(esn't)g(consist)g(of)g(actual)i(programming)d(co)s(de,)i(the)g(only)f
+(guidelines)150 653 y(are)e(common)f(sense.)41 b(Use)31
+b(it.)275 787 y(F)-8 b(or)31 b(co)s(de)f(con)m(tributions,)h(a)g(n)m
+(um)m(b)s(er)e(of)i(st)m(yle)g(guides)g(will)f(help)g(y)m(ou:)225
+922 y Fv(\017)60 b Fx(Co)s(ding)32 b(St)m(yle.)48 b(F)-8
+b(ollo)m(w)34 b(the)f(GNU)g(Standards)e(do)s(cumen)m(t)i(\(see)g
+Fv(h)p Fx(unde\014ned)p Fv(i)e Fx([top],)j(page)f Fv(h)p
+Fx(un-)330 1031 y(de\014ned)p Fv(i)p Fx(\).)330 1166
+y(If)42 b(y)m(ou)h(normally)f(co)s(de)h(using)f(another)g(co)s(ding)h
+(standard,)i(there)d(is)h(no)f(problem,)j(but)d(y)m(ou)330
+1275 y(should)h(use)g(`)p Fr(indent)p Fx(')g(to)i(reformat)f(the)g(co)s
+(de)g(\(see)h Fv(h)p Fx(unde\014ned)p Fv(i)d Fx([top],)48
+b(page)d Fv(h)p Fx(unde\014ned)p Fv(i)p Fx(\))330 1385
+y(b)s(efore)30 b(submitting)g(y)m(our)g(w)m(ork.)225
+1519 y Fv(\017)60 b Fx(Use)31 b(the)f(uni\014ed)f(di\013)h(format)h(`)p
+Fr(diff)f(-u)p Fx('.)225 1654 y Fv(\017)60 b Fx(Return)32
+b(errors.)47 b(No)33 b(reason)g(whatso)s(ev)m(er)g(should)f(ab)s(ort)h
+(the)g(execution)g(of)g(the)g(library)-8 b(.)48 b(Ev)m(en)330
+1763 y(memory)27 b(allo)s(cation)i(errors,)f(e.g.)41
+b(when)26 b(mallo)s(c)i(return)e(NULL,)h(should)f(w)m(ork)h(although)h
+(result)330 1873 y(in)i(an)g(error)g(co)s(de.)225 2007
+y Fv(\017)60 b Fx(Design)31 b(with)f(thread)g(safet)m(y)i(in)e(mind.)40
+b(Don't)31 b(use)f(global)i(v)-5 b(ariables)31 b(and)f(the)g(lik)m(e.)
+225 2142 y Fv(\017)60 b Fx(Av)m(oid)38 b(using)f(the)g(C)g(math)g
+(library)-8 b(.)61 b(It)37 b(causes)h(problems)e(for)h(em)m(b)s(edded)f
+(implemen)m(tations,)330 2252 y(and)30 b(in)g(most)h(situations)g(it)g
+(is)f(v)m(ery)h(easy)g(to)g(a)m(v)m(oid)h(using)e(it.)225
+2386 y Fv(\017)60 b Fx(Do)s(cumen)m(t)23 b(y)m(our)f(functions.)37
+b(Use)23 b(commen)m(ts)g(b)s(efore)f(eac)m(h)h(function)f(headers,)h
+(that,)i(if)d(prop)s(erly)330 2496 y(formatted,)j(are)d(extracted)i(in)
+m(to)f(GTK-DOC)e(w)m(eb)i(pages.)38 b(Don't)23 b(forget)g(to)g(up)s
+(date)e(the)i(T)-8 b(exinfo)330 2605 y(man)m(ual)31 b(as)f(w)m(ell.)225
+2740 y Fv(\017)60 b Fx(Supply)29 b(a)h(ChangeLog)h(and)f(NEWS)g(en)m
+(tries,)i(where)e(appropriate.)p eop end
+%%Page: 9 14
+TeXDict begin 9 13 bop 150 -116 a Fx(Chapter)30 b(2:)41
+b(Preparation)2619 b(9)150 299 y Fu(2)80 b(Preparation)150
+497 y Fx(T)-8 b(o)34 b(use)f(`Libidn',)h(y)m(ou)g(ha)m(v)m(e)h(to)f(p)s
+(erform)e(some)i(c)m(hanges)h(to)f(y)m(our)g(sources)f(and)g(the)h
+(build)f(system.)150 607 y(The)39 b(necessary)h(c)m(hanges)h(are)f
+(small)g(and)f(explained)g(in)h(the)f(follo)m(wing)i(sections.)70
+b(A)m(t)40 b(the)g(end)f(of)150 716 y(this)31 b(c)m(hapter,)i(it)f(is)f
+(describ)s(ed)f(ho)m(w)i(the)f(library)g(is)h(initialized,)h(and)e(ho)m
+(w)g(the)h(requiremen)m(ts)f(of)h(the)150 826 y(library)e(are)h(v)m
+(eri\014ed.)275 953 y(A)f(faster)i(w)m(a)m(y)f(to)h(\014nd)d(out)i(ho)m
+(w)g(to)h(adapt)f(y)m(our)g(application)h(for)e(use)h(with)f(`Libidn')h
+(ma)m(y)g(b)s(e)f(to)150 1063 y(lo)s(ok)h(at)g(the)g(examples)g(at)g
+(the)f(end)g(of)g(this)h(man)m(ual)f(\(see)i(Chapter)e(9)g([Examples],)
+h(page)h(38\).)150 1281 y Fw(2.1)68 b(Header)150 1440
+y Fx(The)38 b(library)g(con)m(tains)i(a)e(few)h(indep)s(enden)m(t)e
+(parts,)j(and)e(eac)m(h)i(part)e(exp)s(ort)g(the)h(in)m(terfaces)h
+(\(data)150 1550 y(t)m(yp)s(es)33 b(and)g(functions\))g(in)g(a)h
+(header)f(\014le.)49 b(Y)-8 b(ou)34 b(m)m(ust)f(include)g(the)h
+(appropriate)f(header)g(\014les)g(in)g(all)150 1659 y(programs)d(using)
+g(the)g(library)-8 b(,)31 b(either)g(directly)g(or)f(through)g(some)h
+(other)f(header)h(\014le,)f(lik)m(e)i(this:)390 1787
+y Fr(#include)46 b(<stringprep.h>)275 1914 y Fx(The)29
+b(header)i(\014les)f(and)g(the)g(functions)g(they)h(de\014ne)e(are)i
+(categorized)i(as)e(follo)m(ws:)150 2059 y(stringprep.h)630
+2169 y(The)d(lo)m(w-lev)m(el)j(stringprep)c(API)h(en)m(try)h(p)s(oin)m
+(t.)40 b(F)-8 b(or)29 b(IDN)g(applications,)h(this)e(is)g(usually)630
+2278 y(in)m(v)m(ok)m(ed)33 b(via)e(IDNA.)h(Some)f(applications,)i(sp)s
+(eci\014cally)f(non-IDN)f(ones,)h(ma)m(y)f(w)m(an)m(t)h(to)630
+2388 y(prepare)e(strings)g(directly)h(though,)f(and)g(should)g(include)
+g(this)g(header)g(\014le.)630 2515 y(The)k(name)h(space)g(of)g(the)f
+(stringprep)g(part)h(of)f(Libidn)g(is)g Fr(stringprep*)e
+Fx(for)i(function)630 2625 y(names,)i Fr(Stringprep*)31
+b Fx(for)k(data)g(t)m(yp)s(es)g(and)f Fr(STRINGPREP_*)d
+Fx(for)k(other)g(sym)m(b)s(ols.)53 b(In)630 2734 y(addition,)36
+b Fr(_stringprep*)31 b Fx(is)k(reserv)m(ed)f(for)g(in)m(ternal)i(use)e
+(and)g(should)f(nev)m(er)i(b)s(e)f(used)630 2844 y(b)m(y)c
+(applications.)150 2989 y(pun)m(yco)s(de.h)630 3098 y(The)23
+b(en)m(try)h(p)s(oin)m(t)f(to)i(Pun)m(yco)s(de)e(enco)s(ding)g(and)g
+(deco)s(ding)g(functions.)38 b(Normally)25 b(pun)m(y-)630
+3208 y(co)s(de)g(is)f(used)g(via)h(the)g(idna.h)f(in)m(terface,)k(but)c
+(some)h(application)g(ma)m(y)h(w)m(an)m(t)f(to)g(p)s(erform)630
+3318 y(ra)m(w)30 b(pun)m(yco)s(de)g(op)s(erations.)630
+3445 y(The)40 b(name)i(space)f(of)g(the)g(pun)m(yco)s(de)g(part)f(of)i
+(Libidn)d(is)i Fr(punycode_*)d Fx(for)j(function)630
+3554 y(names,)e Fr(Punycode*)34 b Fx(for)j(data)g(t)m(yp)s(es)g(and)g
+Fr(PUNYCODE_*)d Fx(for)i(other)i(sym)m(b)s(ols.)60 b(In)36
+b(ad-)630 3664 y(dition,)42 b Fr(_punycode*)37 b Fx(is)i(reserv)m(ed)h
+(for)f(in)m(ternal)h(use)g(and)e(should)h(nev)m(er)h(b)s(e)e(used)h(b)m
+(y)630 3774 y(applications.)150 3919 y(idna.h)630 4046
+y(The)h(en)m(try)g(p)s(oin)m(t)g(to)h(the)f(IDNA)h(functions.)70
+b(This)39 b(is)h(the)h(normal)f(en)m(try)g(p)s(oin)m(t)g(for)630
+4156 y(applications)32 b(that)f(need)f(IDN)g(functionalit)m(y)-8
+b(.)630 4283 y(The)42 b(name)g(space)g(of)h(the)f(IDNA)h(part)f(of)g
+(Libidn)f(is)h Fr(idna_*)e Fx(for)i(function)g(names,)630
+4392 y Fr(Idna*)d Fx(for)g(data)i(t)m(yp)s(es)f(and)f
+Fr(IDNA_*)g Fx(for)g(other)h(sym)m(b)s(ols.)70 b(In)39
+b(addition,)k Fr(_idna*)38 b Fx(is)630 4502 y(reserv)m(ed)31
+b(for)f(in)m(ternal)h(use)f(and)g(should)f(nev)m(er)i(b)s(e)e(used)h(b)
+m(y)g(applications.)150 4647 y(tld.h)630 4774 y(The)k(en)m(try)g(p)s
+(oin)m(t)g(to)h(the)f(TLD)g(functions.)51 b(Normal)35
+b(applications)g(are)f(not)h(exp)s(ected)630 4884 y(to)k(need)f(this)h
+(functionalit)m(y)-8 b(,)42 b(but)c(it)h(is)f(presen)m(t)h(for)f
+(applications)i(that)f(are)f(used)g(b)m(y)630 4993 y(TLDs)30
+b(to)h(v)-5 b(alidate)32 b(customer)f(input.)630 5121
+y(The)d(name)h(space)g(of)g(the)g(TLD)g(part)g(of)f(Libidn)g(is)h
+Fr(tld_*)e Fx(for)i(function)f(names,)h Fr(Tld_*)630
+5230 y Fx(for)i(data)g(t)m(yp)s(es)g(and)f Fr(TLD_*)g
+Fx(for)g(other)h(sym)m(b)s(ols.)42 b(In)30 b(addition,)i
+Fr(_tld*)d Fx(is)i(reserv)m(ed)g(for)630 5340 y(in)m(ternal)g(use)f
+(and)g(should)f(nev)m(er)i(b)s(e)f(used)f(b)m(y)i(applications.)p
+eop end
+%%Page: 10 15
+TeXDict begin 10 14 bop 150 -116 a Fx(Chapter)30 b(2:)41
+b(Preparation)2573 b(10)150 299 y(pr29.h)630 441 y(The)40
+b(en)m(try)h(p)s(oin)m(t)g(to)g(the)g(PR29)h(functions.)71
+b(These)41 b(functions)f(are)h(used)f(to)i(detect)630
+550 y(\\problem)26 b(sequences")h(\(see)f(Chapter)g(8)g([PR29)h(F)-8
+b(unctions],)28 b(page)f(36\),)h(mostly)e(for)g(use)630
+660 y(in)k(securit)m(y)h(critical)h(applications.)630
+802 y(The)23 b(name)g(space)h(of)f(the)h(PR29)g(part)f(of)g(Libidn)g
+(is)g Fr(pr29_*)e Fx(for)j(function)e(names,)j Fr(Pr29_)630
+912 y(*)j Fx(for)g(data)h(t)m(yp)s(es)f(and)f Fr(PR29_*)g
+Fx(for)h(other)g(sym)m(b)s(ols.)40 b(In)27 b(addition,)i
+Fr(_pr29*)e Fx(is)h(reserv)m(ed)630 1021 y(for)i(in)m(ternal)h(use)f
+(and)g(should)f(nev)m(er)i(b)s(e)f(used)f(b)m(y)i(applications.)150
+1196 y(idn-free.h)630 1338 y(The)24 b(en)m(try)h(p)s(oin)m(t)f(to)h
+(the)g(Windo)m(ws)f(memory)g(de-allo)s(cation)j(function)d(\(see)i
+(Section)f(2.6)630 1447 y([Memory)40 b(handling)f(under)e(Windo)m(ws],)
+42 b(page)e(12\).)69 b(It)39 b(con)m(tains)h(only)g(one)f(function)630
+1557 y Fr(idn_free)p Fx(.)275 1739 y(All)31 b(header)f(\014les)g
+(de\014ned)f(and)h(use)g(the)h(sym)m(b)s(ol)f Fr(IDNAPI)e
+Fx(to)j(decorate)h(the)f(API)f(functions.)150 1994 y
+Fw(2.2)68 b(Initialization)150 2153 y Fx(Libidn)29 b(is)i(stateless)h
+(and)d(do)s(es)h(not)h(need)f(an)m(y)h(initialization.)150
+2408 y Fw(2.3)68 b(V)-11 b(ersion)45 b(Chec)l(k)150 2567
+y Fx(It)35 b(is)g(often)g(desirable)g(to)h(c)m(hec)m(k)h(that)e(the)g
+(v)m(ersion)h(of)f(`Libidn')f(used)g(is)h(indeed)g(one)g(whic)m(h)f
+(\014ts)h(all)150 2677 y(requiremen)m(ts.)42 b(Ev)m(en)31
+b(with)g(binary)f(compatibilit)m(y)j(new)d(features)h(ma)m(y)g(ha)m(v)m
+(e)h(b)s(een)e(in)m(tro)s(duced)h(but)150 2787 y(due)g(to)i(problem)e
+(with)h(the)g(dynamic)f(link)m(er)i(an)e(old)h(v)m(ersion)h(is)f
+(actually)h(used.)45 b(So)31 b(y)m(ou)i(ma)m(y)f(w)m(an)m(t)150
+2896 y(to)f(c)m(hec)m(k)h(that)f(the)g(v)m(ersion)f(is)h(ok)-5
+b(a)m(y)31 b(righ)m(t)g(after)g(program)f(startup.)150
+3110 y Fq(stringprep)p 710 3110 37 5 v 55 w(c)m(hec)m(k)p
+1058 3110 V 53 w(v)m(ersion)3350 3322 y Fx([F)-8 b(unction])-3599
+b Fp(const)54 b(char)f(*)g(stringprep_check_versi)q(on)f
+Fo(\()p Fn(const)31 b(c)m(har)g(*)565 3432 y Fm(req_version)12
+b Fo(\))390 3541 y Fn(req)p 520 3541 28 4 v 40 w(v)m(ersion)p
+Fx(:)41 b(Required)30 b(v)m(ersion)h(n)m(um)m(b)s(er,)e(or)i(NULL.)390
+3691 y(Chec)m(k)c(that)h(the)f(v)m(ersion)g(of)g(the)g(library)g(is)g
+(at)g(minim)m(um)g(the)g(requested)f(one)i(and)e(return)g(the)390
+3800 y(v)m(ersion)32 b(string;)h(return)e(NULL)g(if)h(the)g(condition)g
+(is)g(not)g(satis\014ed.)45 b(If)31 b(a)h(NULL)g(is)g(passed)f(to)390
+3910 y(this)f(function,)h(no)f(c)m(hec)m(k)i(is)e(done,)h(but)e(the)i
+(v)m(ersion)g(string)f(is)g(simply)g(returned.)390 4060
+y(See)h Fr(STRINGPREP_VERSION)25 b Fx(for)30 b(a)h(suitable)g
+Fr(req_version)c Fx(string.)390 4209 y Fl(Return)d(v)-5
+b(alue:)38 b Fx(V)-8 b(ersion)24 b(string)g(of)g(run-time)g(library)-8
+b(,)26 b(or)e(NULL)g(if)g(the)g(run-time)g(library)f(do)s(es)390
+4319 y(not)31 b(meet)g(the)f(required)g(v)m(ersion)h(n)m(um)m(b)s(er.)
+275 4533 y(The)e(normal)h(w)m(a)m(y)i(to)f(use)e(the)i(function)f(is)g
+(to)h(put)e(something)i(similar)g(to)g(the)f(follo)m(wing)i(\014rst)d
+(in)150 4643 y(y)m(our)h Fr(main)p Fx(:)485 4792 y Fr(if)48
+b(\(!stringprep_check_vers)o(ion)41 b(\(STRINGPREP_VERSION\)\))581
+4902 y({)676 5011 y(printf)46 b(\("stringprep_check_version)o(\(\))c
+(failed:\\n")1058 5121 y("Header)k(file)h(incompatible)d(with)j(shared)
+f(library.\\n"\);)676 5230 y(exit\(1\);)581 5340 y(})p
+eop end
+%%Page: 11 16
+TeXDict begin 11 15 bop 150 -116 a Fx(Chapter)30 b(2:)41
+b(Preparation)2573 b(11)150 299 y Fw(2.4)68 b(Building)45
+b(the)g(source)150 458 y Fx(If)32 b(y)m(ou)i(w)m(an)m(t)f(to)h(compile)
+g(a)f(source)g(\014le)g(including)f(e.g.)50 b(the)33
+b(`idna.h')f(header)h(\014le,)h(y)m(ou)f(m)m(ust)g(mak)m(e)150
+568 y(sure)24 b(that)i(the)f(compiler)g(can)h(\014nd)d(it)j(in)e(the)h
+(directory)h(hierarc)m(h)m(y)-8 b(.)40 b(This)24 b(is)h(accomplished)g
+(b)m(y)g(adding)150 677 y(the)37 b(path)g(to)h(the)f(directory)g(in)g
+(whic)m(h)g(the)g(header)g(\014le)g(is)g(lo)s(cated)h(to)g(the)f
+(compilers)g(include)g(\014le)150 787 y(searc)m(h)31
+b(path)f(\(via)h(the)g(`)p Fr(-I)p Fx(')f(option\).)275
+923 y(Ho)m(w)m(ev)m(er,)h(the)f(path)f(to)h(the)g(include)f(\014le)h
+(is)f(determined)g(at)h(the)g(time)g(the)f(source)h(is)f(con\014gured.)
+150 1033 y(T)-8 b(o)30 b(solv)m(e)h(this)f(problem,)g(`Libidn')f(uses)g
+(the)h(external)h(pac)m(k)-5 b(age)31 b Fr(pkg-config)c
+Fx(that)k(kno)m(ws)e(the)h(path)150 1142 y(to)k(the)g(include)g(\014le)
+f(and)g(other)h(con\014guration)g(options.)51 b(The)33
+b(options)h(that)g(need)g(to)g(b)s(e)f(added)g(to)150
+1252 y(the)24 b(compiler)h(in)m(v)m(o)s(cation)h(at)f(compile)f(time)h
+(are)g(output)e(b)m(y)h(the)g(`)p Fr(--cflags)p Fx(')f(option)h(to)h
+Fr(pkg-config)150 1362 y(libidn)p Fx(.)39 b(The)30 b(follo)m(wing)i
+(example)f(sho)m(ws)f(ho)m(w)g(it)h(can)g(b)s(e)f(used)f(at)i(the)g
+(command)f(line:)390 1498 y Fr(gcc)47 b(-c)g(foo.c)f(`pkg-config)f
+(libidn)h(--cflags`)275 1634 y Fx(Adding)38 b(the)i(output)f(of)h(`)p
+Fr(pkg-config)27 b(libidn)i(--cflags)p Fx(')38 b(to)i(the)f(compilers)h
+(command)g(line)150 1744 y(will)31 b(ensure)e(that)i(the)g(compiler)g
+(can)f(\014nd)f(e.g.)42 b(the)31 b(idna.h)e(header)i(\014le.)275
+1880 y(A)23 b(similar)g(problem)g(o)s(ccurs)g(when)f(linking)h(the)g
+(program)g(with)g(the)g(library)-8 b(.)38 b(Again,)26
+b(the)d(compiler)150 1990 y(has)j(to)g(\014nd)f(the)h(library)f
+(\014les.)40 b(F)-8 b(or)26 b(this)g(to)h(w)m(ork,)g(the)f(path)g(to)h
+(the)f(library)f(\014les)h(has)g(to)h(b)s(e)e(added)g(to)150
+2099 y(the)32 b(library)g(searc)m(h)h(path)f(\(via)h(the)f(`)p
+Fr(-L)p Fx(')g(option\).)47 b(F)-8 b(or)32 b(this,)h(the)f(option)h(`)p
+Fr(--libs)p Fx(')e(to)i Fr(pkg-config)150 2209 y(libidn)h
+Fx(can)i(b)s(e)f(used.)56 b(F)-8 b(or)37 b(con)m(v)m(enience,)i(this)d
+(option)g(also)g(outputs)g(all)g(other)g(options)g(that)h(are)150
+2318 y(required)h(to)i(link)f(the)g(program)g(with)f(the)i(`libidn')e
+(libarary)-8 b(.)67 b(The)39 b(example)h(sho)m(ws)e(ho)m(w)h(to)h(link)
+150 2428 y(`)p Fr(foo.o)p Fx(')29 b(with)i(the)f(`libidn')g(library)g
+(to)h(a)g(program)f Fr(foo)p Fx(.)390 2564 y Fr(gcc)47
+b(-o)g(foo)g(foo.o)f(`pkg-config)f(libidn)h(--libs`)275
+2700 y Fx(Of)29 b(course)i(y)m(ou)f(can)h(also)g(com)m(bine)g(b)s(oth)e
+(examples)i(to)g(a)g(single)f(command)g(b)m(y)h(sp)s(ecifying)f(b)s
+(oth)150 2810 y(options)h(to)g Fr(pkg-config)p Fx(:)390
+2946 y Fr(gcc)47 b(-o)g(foo)g(foo.c)f(`pkg-config)f(libidn)h(--cflags)g
+(--libs`)150 3181 y Fw(2.5)68 b(Auto)t(conf)44 b(tests)150
+3341 y Fx(If)25 b(y)m(our)g(pro)5 b(ject)26 b(uses)f(Auto)s(conf)g
+(\(see)i Fv(h)p Fx(unde\014ned)p Fv(i)c Fx([top],)28
+b(page)e Fv(h)p Fx(unde\014ned)p Fv(i)p Fx(\))e(to)i(c)m(hec)m(k)h(for)
+e(installed)150 3450 y(libraries,)38 b(y)m(ou)e(migh)m(t)h(\014nd)d
+(the)i(follo)m(wing)i(snipp)s(et)c(illustrativ)m(e.)60
+b(It)36 b(add)f(a)h(new)g(`)p Fr(configure)p Fx(')e(pa-)150
+3560 y(rameter)d Fr(--with-libidn)p Fx(,)d(and)i(c)m(hec)m(k)j(for)d(`)
+p Fr(idna.h)p Fx(')g(and)g(`)p Fr(-lidn)p Fx(')g(\(p)s(ossibly)g(b)s
+(elo)m(w)h(the)g(directory)150 3669 y(sp)s(eci\014ed)d(as)i(the)f
+(optional)i(argumen)m(t)e(to)h Fr(--with-libidn)p Fx(\),)c(and)j
+(de\014ne)f(the)i Fk(CPP)e Fx(sym)m(b)s(ol)h Fr(LIBIDN)150
+3779 y Fx(if)37 b(the)f(library)h(is)f(found.)58 b(The)36
+b(default)h(b)s(eha)m(viour)f(is)h(to)g(searc)m(h)g(for)g(the)g
+(library)f(and)g(enable)h(the)150 3889 y(functionalit)m(y)28
+b(\(that)g(is,)g(de\014ne)e(the)h(sym)m(b)s(ol\))f(when)g(the)h
+(library)f(is)h(found,)g(but)f(if)g(y)m(ou)h(wish)f(to)i(mak)m(e)150
+3998 y(the)k(default)g(b)s(eha)m(viour)g(of)g(y)m(our)g(pac)m(k)-5
+b(age)34 b(b)s(e)e(that)g(Libidn)f(is)h(not)g(used)g(\(ev)m(en)h(if)f
+(it)g(is)g(installed)h(on)150 4108 y(the)e(system\),)g(c)m(hange)g(`)p
+Fr(libidn=yes)p Fx(')d(to)j(`)p Fr(libidn=no)p Fx(')e(on)h(the)h(third)
+e(line.)390 4244 y Fr(AC_ARG_WITH\(libidn,)43 b
+(AC_HELP_STRING\([--with-)o(lib)o(idn=)o([DIR)o(]],)1917
+4354 y([Support)j(IDN)h(\(needs)f(GNU)h(Libidn\)]\),)485
+4463 y(libidn=$withval,)d(libidn=yes\))390 4573 y(if)j(test)g
+("$libidn")e(!=)i("no";)g(then)485 4682 y(if)h(test)e("$libidn")g(!=)h
+("yes";)f(then)581 4792 y(LDFLAGS="${LDFLAGS})c(-L$libidn/lib")581
+4902 y(CPPFLAGS="${CPPFLAGS})g(-I$libidn/include")485
+5011 y(fi)485 5121 y(AC_CHECK_HEADER\(idna.h,)581 5230
+y(AC_CHECK_LIB\(idn,)h(stringprep_check_version)o(,)676
+5340 y([libidn=yes)i(LIBS="${LIBS})f(-lidn"],)i(libidn=no\),)p
+eop end
+%%Page: 12 17
+TeXDict begin 12 16 bop 150 -116 a Fx(Chapter)30 b(2:)41
+b(Preparation)2573 b(12)581 299 y Fr(libidn=no\))390
+408 y(fi)390 518 y(if)47 b(test)g("$libidn")e(!=)i("no")g(;)g(then)485
+628 y(AC_DEFINE\(LIBIDN,)d(1,)j([Define)f(to)h(1)g(if)g(you)g(want)g
+(IDN)g(support.]\))390 737 y(else)485 847 y(AC_MSG_WARN\([Libidn)c(not)
+k(found]\))390 956 y(fi)390 1066 y(AC_MSG_CHECKING\([if)c(Libidn)j
+(should)g(be)h(used]\))390 1176 y(AC_MSG_RESULT\($libidn\))275
+1345 y Fx(If)36 b(y)m(ou)i(require)f(that)g(y)m(our)g(users)g(ha)m(v)m
+(e)h(installed)g Fr(pkg-config)c Fx(\(whic)m(h)k(I)e(cannot)i
+(recommend)150 1454 y(generally\),)32 b(the)f(ab)s(o)m(v)m(e)g(can)g(b)
+s(e)f(done)g(more)g(easily)i(as)f(follo)m(ws.)390 1624
+y Fr(AC_ARG_WITH\(libidn,)43 b(AC_HELP_STRING\([--with-)o(lib)o(idn=)o
+([DIR)o(]],)1917 1733 y([Support)j(IDN)h(\(needs)f(GNU)h(Libidn\)]\),)
+485 1843 y(libidn=$withval,)d(libidn=yes\))390 1952 y(if)j(test)g
+("$libidn")e(!=)i("no")g(;)g(then)485 2062 y
+(PKG_CHECK_MODULES\(LIBIDN,)41 b(libidn)46 b(>=)i(0.0.0,)e
+([libidn=yes],)e([libidn=no]\))485 2172 y(if)k(test)e("$libidn")g(!=)h
+("yes")f(;)i(then)581 2281 y(libidn=no)581 2391 y(AC_MSG_WARN\([Libidn)
+42 b(not)47 b(found]\))485 2500 y(else)581 2610 y(libidn=yes)581
+2720 y(AC_DEFINE\(LIBIDN,)c(1,)k([Define)f(to)h(1)h(if)f(you)g(want)f
+(Libidn.]\))485 2829 y(fi)390 2939 y(fi)390 3048 y
+(AC_MSG_CHECKING\([if)d(Libidn)j(should)g(be)h(used]\))390
+3158 y(AC_MSG_RESULT\($libidn\))150 3443 y Fw(2.6)68
+b(Memory)45 b(handling)g(under)f(Windo)l(ws)150 3602
+y Fx(Sev)m(eral)i(functions)f(in)g(the)g(library)g(allo)s(cates)i
+(memory)-8 b(.)85 b(The)45 b(memory)g(is)g(exp)s(ected)g(to)h(b)s(e)f
+(de-)150 3712 y(allo)s(cated)28 b(using)d(the)h Fr(free)e
+Fx(function.)39 b(Under)25 b(Windo)m(ws,)i(it)f(is)g(sometimes)h
+(necessary)f(to)g(de-allo)s(cate)150 3821 y(memory)32
+b(in)g(the)h(same)g(mo)s(dule)e(that)i(allo)s(cated)i(a)d(memory)g
+(region.)48 b(The)32 b(reason)g(is)h(that)f(di\013eren)m(t)150
+3931 y(mo)s(dules)26 b(use)h(separate)h(heap)f(memory)g(regions.)40
+b(T)-8 b(o)28 b(solv)m(e)g(this)f(problem)g(w)m(e)h(pro)m(vide)f(a)g
+(function)g(to)150 4040 y(de-allo)s(cate)33 b(memory)d(inside)g(the)h
+(library)-8 b(.)275 4210 y(Note)32 b(that)g(w)m(e)g(do)g(not)f
+(recommend)h(using)f(this)g(in)m(terface)i(generally)g(if)e(y)m(ou)h
+(do)f(not)h(care)g(ab)s(out)150 4319 y(Windo)m(ws)e(p)s(ortabilit)m(y)
+-8 b(.)150 4604 y Fw(2.7)68 b(Header)46 b(\014le)f Fj(idn-free.h)150
+4763 y Fx(T)-8 b(o)39 b(use)f(the)h(function)f(explained)h(in)f(this)h
+(c)m(hapter,)i(y)m(ou)e(need)f(to)i(include)e(the)h(\014le)f(`)p
+Fr(idn-free.h)p Fx(')150 4873 y(using:)390 5042 y Fr(#include)46
+b(<idn-free.h>)150 5327 y Fw(2.8)68 b(Memory)45 b(de-allo)t(cation)i
+(function)p eop end
+%%Page: 13 18
+TeXDict begin 13 17 bop 150 -116 a Fx(Chapter)30 b(2:)41
+b(Preparation)2573 b(13)150 299 y Fq(idn)p 329 299 37
+5 v 54 w(free)3350 496 y Fx([F)-8 b(unction])-3599 b
+Fp(void)54 b(idn_free)47 b Fo(\()p Fn(v)m(oid)32 b(*)e
+Fm(ptr)12 b Fo(\))390 605 y Fn(ptr)7 b Fx(:)40 b(memory)30
+b(region)h(to)g(deallo)s(cate,)i(or)d Fr(NULL)p Fx(.)390
+740 y(Deallo)s(cates)42 b(memory)d(region)g(b)m(y)g(calling)h
+Fr(free\(\))p Fx(.)65 b(If)38 b Fr(ptr)g Fx(is)h Fr(NULL)f
+Fx(no)g(op)s(eration)i(is)f(p)s(er-)390 849 y(formed.)390
+984 y(Normally)i(applications)g(de-allo)s(cate)i(strings)d(allo)s
+(cated)i(b)m(y)e(libidn)f(b)m(y)h(calling)i Fr(free\(\))c
+Fx(di-)390 1093 y(rectly)-8 b(.)76 b(Under)41 b(Windo)m(ws,)k
+(di\013eren)m(t)d(parts)f(of)h(the)g(same)g(application)h(ma)m(y)f(use)
+f(di\013eren)m(t)390 1203 y(heap)d(memory)-8 b(,)40 b(and)e(then)f(it)i
+(is)f(imp)s(ortan)m(t)g(to)h(deallo)s(cate)h(memory)e(allo)s(cated)i
+(within)e(the)390 1313 y(same)31 b(mo)s(dule)e(that)i(allo)s(cated)i
+(it.)41 b(This)30 b(function)g(mak)m(es)h(that)g(p)s(ossible.)p
+eop end
+%%Page: 14 19
+TeXDict begin 14 18 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Utilit)m(y)32 b(F)-8 b(unctions)2369 b(14)150 299 y
+Fu(3)80 b(Utilit)l(y)53 b(F)-13 b(unctions)150 540 y
+Fx(The)37 b(rest)g(of)h(this)f(library)g(mak)m(es)h(extensiv)m(e)g(use)
+f(of)h(Unico)s(de)f(c)m(haracters.)63 b(In)37 b(order)f(to)i(in)m
+(terface)150 649 y(this)g(library)g(with)g(the)h(outside)f(w)m(orld,)i
+(y)m(our)f(application)g(ma)m(y)g(need)f(to)h(mak)m(e)g(v)-5
+b(arious)39 b(Unico)s(de)150 759 y(transformations.)150
+994 y Fw(3.1)68 b(Header)46 b(\014le)f Fj(stringprep.h)150
+1154 y Fx(T)-8 b(o)30 b(use)f(the)g(functions)g(explained)h(in)f(this)g
+(c)m(hapter,)h(y)m(ou)g(need)f(to)h(include)f(the)g(\014le)h(`)p
+Fr(stringprep.h)p Fx(')150 1263 y(using:)390 1400 y Fr(#include)46
+b(<stringprep.h>)150 1636 y Fw(3.2)68 b(Unico)t(de)45
+b(Enco)t(ding)g(T)-11 b(ransformation)150 1860 y Fq(stringprep)p
+710 1860 37 5 v 55 w(unic)m(har)p 1165 1860 V 54 w(to)p
+1328 1860 V 54 w(utf8)3350 2059 y Fx([F)j(unction])-3599
+b Fp(int)53 b(stringprep_unichar_to)q(_utf)q(8)f Fo(\()p
+Fn(uin)m(t32)p 2055 2059 28 4 v 41 w(t)31 b Fm(c)12 b
+Fn(,)30 b(c)m(har)h(*)f Fm(outbuf)12 b Fo(\))390 2169
+y Fn(c)6 b Fx(:)41 b(a)30 b(ISO10646)i(c)m(haracter)g(co)s(de)390
+2305 y Fn(outbuf)17 b Fx(:)47 b(output)34 b(bu\013er,)g(m)m(ust)g(ha)m
+(v)m(e)h(at)g(least)g(6)f(b)m(ytes)h(of)f(space.)52 b(If)33
+b Fr(NULL)p Fx(,)h(the)g(length)h(will)390 2415 y(b)s(e)30
+b(computed)g(and)g(returned)f(and)h(nothing)g(will)h(b)s(e)e(written)i
+(to)g Fr(outbuf)p Fx(.)390 2551 y(Con)m(v)m(erts)g(a)g(single)g(c)m
+(haracter)h(to)f(UTF-8.)390 2688 y Fl(Return)f(v)-5 b(alue:)41
+b Fx(n)m(um)m(b)s(er)29 b(of)i(b)m(ytes)g(written.)150
+2890 y Fq(stringprep)p 710 2890 37 5 v 55 w(utf8)p 979
+2890 V 55 w(to)p 1143 2890 V 54 w(unic)m(har)3350 3089
+y Fx([F)-8 b(unction])-3599 b Fp(uint32_t)55 b(stringprep_utf8_to_unic)
+q(har)d Fo(\()p Fn(const)31 b(c)m(har)g(*)g Fm(p)12 b
+Fo(\))390 3198 y Fn(p)s Fx(:)40 b(a)31 b(p)s(oin)m(ter)f(to)h(Unico)s
+(de)g(c)m(haracter)h(enco)s(ded)e(as)g(UTF-8)390 3335
+y(Con)m(v)m(erts)d(a)g(sequence)g(of)g(b)m(ytes)g(enco)s(ded)f(as)g
+(UTF-8)i(to)f(a)g(Unico)s(de)f(c)m(haracter.)41 b(If)26
+b Fr(p)h Fx(do)s(es)f(not)390 3444 y(p)s(oin)m(t)k(to)h(a)g(v)-5
+b(alid)31 b(UTF-8)g(enco)s(ded)f(c)m(haracter,)i(results)f(are)f
+(unde\014ned.)390 3581 y Fl(Return)g(v)-5 b(alue:)41
+b Fx(the)31 b(resulting)f(c)m(haracter.)150 3782 y Fq(stringprep)p
+710 3782 V 55 w(ucs4)p 997 3782 V 55 w(to)p 1161 3782
+V 54 w(utf8)3350 3981 y Fx([F)-8 b(unction])-3599 b Fp(char)54
+b(*)e(stringprep_ucs4_to_utf)q(8)g Fo(\()p Fn(const)31
+b(uin)m(t32)p 2293 3981 28 4 v 41 w(t)f(*)h Fm(str)12
+b Fn(,)31 b(ssize)p 2876 3981 V 41 w(t)g Fm(len)12 b
+Fn(,)565 4091 y(size)p 712 4091 V 41 w(t)31 b(*)f Fm(items_read)12
+b Fn(,)34 b(size)p 1626 4091 V 40 w(t)d(*)g Fm(items_written)12
+b Fo(\))390 4201 y Fn(str)7 b Fx(:)40 b(a)31 b(UCS-4)f(enco)s(ded)g
+(string)390 4337 y Fn(len)p Fx(:)39 b(the)27 b(maxim)m(um)f(length)h
+(of)g Fr(str)f Fx(to)h(use.)39 b(If)26 b Fr(len)g(<)g
+Fx(0,)i(then)e(the)h(string)g(is)f(terminated)h(with)390
+4447 y(a)k(0)g(c)m(haracter.)390 4584 y Fn(items)p 608
+4584 V 41 w(read)t Fx(:)40 b(lo)s(cation)32 b(to)f(store)g(n)m(um)m(b)s
+(er)e(of)h(c)m(haracters)i(read)f(read,)f(or)g Fr(NULL)p
+Fx(.)390 4720 y Fn(items)p 608 4720 V 41 w(written)p
+Fx(:)57 b(lo)s(cation)41 b(to)e(store)g(n)m(um)m(b)s(er)f(of)h(b)m
+(ytes)g(written)g(or)g Fr(NULL)p Fx(.)65 b(The)38 b(v)-5
+b(alue)39 b(here)390 4830 y(stored)30 b(do)s(es)h(not)f(include)g(the)h
+(trailing)g(0)g(b)m(yte.)390 4966 y(Con)m(v)m(ert)h(a)g(string)f(from)g
+(a)g(32-bit)i(\014xed)d(width)h(represen)m(tation)h(as)g(UCS-4.)43
+b(to)32 b(UTF-8.)44 b(The)390 5076 y(result)30 b(will)h(b)s(e)f
+(terminated)h(with)f(a)g(0)h(b)m(yte.)390 5213 y Fl(Return)42
+b(v)-5 b(alue:)66 b Fx(a)43 b(p)s(oin)m(ter)f(to)i(a)f(newly)f(allo)s
+(cated)i(UTF-8)g(string.)77 b(This)42 b(v)-5 b(alue)43
+b(m)m(ust)g(b)s(e)390 5322 y(deallo)s(cated)32 b(b)m(y)f(the)f(caller.)
+42 b(If)30 b(an)g(error)g(o)s(ccurs,)h Fr(NULL)e Fx(will)i(b)s(e)e
+(returned)g(and)h Fr(error)f Fx(set.)p eop end
+%%Page: 15 20
+TeXDict begin 15 19 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Utilit)m(y)32 b(F)-8 b(unctions)2369 b(15)150 299 y
+Fq(stringprep)p 710 299 37 5 v 55 w(utf8)p 979 299 V
+55 w(to)p 1143 299 V 54 w(ucs4)3350 522 y Fx([F)-8 b(unction])-3599
+b Fp(uint32_t)55 b(*)d(stringprep_utf8_to_uc)q(s4)g Fo(\()p
+Fn(const)31 b(c)m(har)g(*)g Fm(str)12 b Fn(,)31 b(ssize)p
+2930 522 28 4 v 40 w(t)565 632 y Fm(len)12 b Fn(,)31
+b(size)p 936 632 V 41 w(t)g(*)f Fm(items_written)12 b
+Fo(\))390 741 y Fn(str)7 b Fx(:)40 b(a)31 b(UTF-8)g(enco)s(ded)f
+(string)390 902 y Fn(len)p Fx(:)40 b(the)28 b(maxim)m(um)g(length)h(of)
+f Fr(str)g Fx(to)g(use.)40 b(If)28 b Fr(len)f(<)h Fx(0,)h(then)f(the)h
+(string)f(is)g(n)m(ul-terminated.)390 1063 y Fn(items)p
+608 1063 V 41 w(written)p Fx(:)40 b(lo)s(cation)32 b(to)f(store)g(the)g
+(n)m(um)m(b)s(er)e(of)i(c)m(haracters)g(in)g(the)f(result,)h(or)f
+Fr(NULL)p Fx(.)390 1224 y(Con)m(v)m(ert)d(a)f(string)g(from)f(UTF-8)i
+(to)g(a)f(32-bit)i(\014xed)d(width)g(represen)m(tation)i(as)f(UCS-4,)h
+(assum-)390 1333 y(ing)k(v)-5 b(alid)30 b(UTF-8)h(input.)40
+b(This)30 b(function)g(do)s(es)g(no)g(error)g(c)m(hec)m(king)i(on)f
+(the)f(input.)390 1494 y Fl(Return)43 b(v)-5 b(alue:)66
+b Fx(a)44 b(p)s(oin)m(ter)f(to)h(a)f(newly)g(allo)s(cated)i(UCS-4)f
+(string.)79 b(This)42 b(v)-5 b(alue)44 b(m)m(ust)f(b)s(e)390
+1604 y(deallo)s(cated)32 b(b)m(y)f(the)f(caller.)150
+1876 y Fw(3.3)68 b(Unico)t(de)45 b(Normalization)150
+2100 y Fq(stringprep)p 710 2100 37 5 v 55 w(ucs4)p 997
+2100 V 55 w(nfk)m(c)p 1274 2100 V 53 w(normalize)3350
+2323 y Fx([F)-8 b(unction])-3599 b Fp(uint32_t)55 b(*)d
+(stringprep_ucs4_nfkc_)q(nor)q(mal)q(ize)g Fo(\()p Fn(uin)m(t32)p
+2630 2323 28 4 v 41 w(t)31 b(*)g Fm(str)12 b Fn(,)565
+2433 y(ssize)p 748 2433 V 41 w(t)31 b Fm(len)12 b Fo(\))390
+2542 y Fn(str)7 b Fx(:)40 b(a)31 b(Unico)s(de)f(string.)390
+2703 y Fn(len)p Fx(:)41 b(length)31 b(of)f Fr(str)g Fx(arra)m(y)-8
+b(,)31 b(or)g(-1)g(if)f Fr(str)f Fx(is)i(n)m(ul-terminated.)390
+2864 y(Con)m(v)m(erts)g(UCS4)f(string)h(in)m(to)g(UTF-8)g(and)f(runs)f
+Fr(stringprep_utf8_nfkc_no)o(rmal)o(ize)o(\(\))p Fx(.)390
+3025 y Fl(Return)j(v)-5 b(alue:)45 b Fx(a)33 b(newly)f(allo)s(cated)i
+(Unico)s(de)f(string,)g(that)g(is)f(the)h(NFK)m(C)g(normalized)f(form)
+390 3134 y(of)f Fr(str)p Fx(.)150 3360 y Fq(stringprep)p
+710 3360 37 5 v 55 w(utf8)p 979 3360 V 55 w(nfk)m(c)p
+1256 3360 V 54 w(normalize)3350 3583 y Fx([F)-8 b(unction])-3599
+b Fp(char)54 b(*)e(stringprep_utf8_nfkc_n)q(orm)q(ali)q(ze)g
+Fo(\()p Fn(const)31 b(c)m(har)g(*)f Fm(str)12 b Fn(,)31
+b(ssize)p 3086 3583 28 4 v 41 w(t)565 3693 y Fm(len)12
+b Fo(\))390 3802 y Fn(str)7 b Fx(:)40 b(a)31 b(UTF-8)g(enco)s(ded)f
+(string.)390 3963 y Fn(len)p Fx(:)41 b(length)31 b(of)f
+Fr(str)p Fx(,)g(in)g(b)m(ytes,)h(or)f(-1)h(if)g Fr(str)e
+Fx(is)i(n)m(ul-terminated.)390 4124 y(Con)m(v)m(erts)22
+b(a)g(string)f(in)m(to)h(canonical)h(form,)g(standardizing)e(suc)m(h)g
+(issues)g(as)g(whether)g(a)g(c)m(haracter)390 4233 y(with)28
+b(an)g(accen)m(t)j(is)d(represen)m(ted)g(as)h(a)f(base)h(c)m(haracter)h
+(and)e(com)m(bining)g(accen)m(t)j(or)d(as)h(a)f(single)390
+4343 y(precomp)s(osed)i(c)m(haracter.)390 4504 y(The)24
+b(normalization)h(mo)s(de)f(is)g(NFK)m(C)g(\(ALL)g(COMPOSE\).)g(It)g
+(standardizes)g(di\013erences)g(that)390 4614 y(do)38
+b(not)h(a\013ect)h(the)e(text)i(con)m(ten)m(t,)i(suc)m(h)d(as)f(the)h
+(ab)s(o)m(v)m(e-men)m(tioned)h(accen)m(t)h(represen)m(tation.)390
+4723 y(It)35 b(standardizes)h(the)f Fr(")p Fx(compatibilit)m(y)p
+Fr(")i Fx(c)m(haracters)g(in)e(Unico)s(de,)i(suc)m(h)e(as)g
+(SUPERSCRIPT)390 4833 y(THREE)24 b(to)i(the)f(standard)f(forms)g(\(in)h
+(this)g(case)h(DIGIT)f(THREE\).)g(F)-8 b(ormatting)27
+b(information)390 4942 y(ma)m(y)38 b(b)s(e)e(lost)i(but)e(for)g(most)i
+(text)g(op)s(erations)f(suc)m(h)f(c)m(haracters)j(should)d(b)s(e)g
+(considered)h(the)390 5052 y(same.)k(It)30 b(returns)f(a)i(result)f
+(with)f(comp)s(osed)h(forms)g(rather)g(than)g(a)g(maximally)h(decomp)s
+(osed)390 5161 y(form.)390 5322 y Fl(Return)f(v)-5 b(alue:)41
+b Fx(a)31 b(newly)f(allo)s(cated)i(string,)f(that)g(is)f(the)h(NFK)m(C)
+g(normalized)f(form)g(of)h Fr(str)p Fx(.)p eop end
+%%Page: 16 21
+TeXDict begin 16 20 bop 150 -116 a Fx(Chapter)30 b(3:)41
+b(Utilit)m(y)32 b(F)-8 b(unctions)2369 b(16)150 299 y
+Fw(3.4)68 b(Character)46 b(Set)f(Con)l(v)l(ersion)150
+521 y Fq(stringprep)p 710 521 37 5 v 55 w(lo)s(cale)p
+1068 521 V 55 w(c)m(harset)3350 715 y Fx([F)-8 b(unction])-3599
+b Fp(const)54 b(char)f(*)g(stringprep_locale_char)q(set)f
+Fo(\()31 b Fm(void)12 b Fo(\))390 824 y Fx(Find)37 b(out)g(curren)m(t)h
+(lo)s(cale)h(c)m(harset.)62 b(The)37 b(function)g(resp)s(ect)h(the)f
+(CHARSET)f(en)m(vironmen)m(t)390 934 y(v)-5 b(ariable,)29
+b(but)d(t)m(ypically)j(uses)e(nl)p 1557 934 28 4 v 40
+w(langinfo\(CODESET\))g(when)f(it)i(is)f(supp)s(orted.)38
+b(It)27 b(fall)h(bac)m(k)390 1044 y(on)23 b Fr(")p Fx(ASCI)s(I)p
+Fr(")f Fx(if)h(CHARSET)g(isn't)h(set)g(and)f(nl)p 2011
+1044 V 40 w(langinfo)h(isn't)f(supp)s(orted)f(or)i(return)e(an)m
+(ything.)390 1176 y(Note)28 b(that)g(this)f(function)g(return)f(the)h
+(application's)i(lo)s(cale's)g(preferred)d(c)m(harset)i(\(or)f
+(thread's)390 1286 y(lo)s(cale's)32 b(pre\013ered)e(c)m(harset,)i(if)e
+(y)m(our)h(system)f(supp)s(ort)f(thread-sp)s(eci\014c)h(lo)s(cales\).)
+43 b(It)31 b(do)s(es)f(not)390 1396 y(return)24 b(what)i(the)g(system)f
+(ma)m(y)h(b)s(e)f(using.)39 b(Th)m(us,)26 b(if)f(y)m(ou)h(receiv)m(e)h
+(data)f(from)f(external)i(sources)390 1505 y(y)m(ou)35
+b(cannot)g(in)g(general)g(use)g(this)f(function)h(to)g(guess)g(what)f
+(c)m(harset)i(it)f(is)g(enco)s(ded)f(in.)54 b(Use)390
+1615 y(stringprep)p 802 1615 V 39 w(con)m(v)m(ert)30
+b(from)e(the)h(external)h(represen)m(tation)f(in)m(to)h(the)f(c)m
+(harset)g(returned)f(b)m(y)g(this)390 1724 y(function,)i(to)h(ha)m(v)m
+(e)h(data)f(in)f(the)h(lo)s(cale)h(enco)s(ding.)390 1857
+y Fl(Return)23 b(v)-5 b(alue:)37 b Fx(Return)23 b(the)g(c)m(haracter)i
+(set)f(used)f(b)m(y)g(the)g(curren)m(t)g(lo)s(cale.)40
+b(It)24 b(will)f(nev)m(er)h(return)390 1967 y(NULL,)31
+b(but)e(use)h Fr(")p Fx(ASCI)s(I)p Fr(")f Fx(as)h(a)h(fallbac)m(k.)150
+2163 y Fq(stringprep)p 710 2163 37 5 v 55 w(con)m(v)m(ert)3350
+2356 y Fx([F)-8 b(unction])-3599 b Fp(char)54 b(*)e(stringprep_convert)
+f Fo(\()p Fn(const)31 b(c)m(har)g(*)g Fm(str)12 b Fn(,)31
+b(const)g(c)m(har)f(*)565 2466 y Fm(to_codeset)12 b Fn(,)33
+b(const)e(c)m(har)g(*)g Fm(from_codeset)12 b Fo(\))390
+2575 y Fn(str)7 b Fx(:)40 b(input)29 b(zero-terminated)j(string.)390
+2708 y Fn(to)p 476 2708 28 4 v 41 w(co)s(deset)r Fx(:)41
+b(name)31 b(of)f(destination)i(c)m(haracter)f(set.)390
+2841 y Fn(from)p 581 2841 V 40 w(co)s(deset)r Fx(:)41
+b(name)31 b(of)f(origin)h(c)m(haracter)h(set,)f(as)g(used)e(b)m(y)i
+Fr(str)p Fx(.)390 2974 y(Con)m(v)m(ert)43 b(the)g(string)f(from)g(one)g
+(c)m(haracter)i(set)f(to)g(another)f(using)g(the)g(system's)h
+Fr(iconv\(\))390 3083 y Fx(function.)390 3216 y Fl(Return)20
+b(v)-5 b(alue:)36 b Fx(Returns)20 b(newly)g(allo)s(cated)j
+(zero-terminated)f(string)f(whic)m(h)f(is)h Fr(str)e
+Fx(transco)s(ded)390 3326 y(in)m(to)31 b(to)p 660 3326
+V 41 w(co)s(deset.)150 3522 y Fq(stringprep)p 710 3522
+37 5 v 55 w(lo)s(cale)p 1068 3522 V 55 w(to)p 1232 3522
+V 54 w(utf8)3350 3715 y Fx([F)-8 b(unction])-3599 b Fp(char)54
+b(*)e(stringprep_locale_to_u)q(tf8)g Fo(\()p Fn(const)31
+b(c)m(har)g(*)g Fm(str)12 b Fo(\))390 3825 y Fn(str)7
+b Fx(:)40 b(input)29 b(zero)j(terminated)e(string.)390
+3958 y(Con)m(v)m(ert)24 b(string)f(enco)s(ded)g(in)g(the)g(lo)s(cale's)
+i(c)m(haracter)g(set)f(in)m(to)g(UTF-8)g(b)m(y)f(using)g
+Fr(stringprep_)390 4067 y(convert\(\))p Fx(.)390 4200
+y Fl(Return)d(v)-5 b(alue:)36 b Fx(Returns)20 b(newly)g(allo)s(cated)j
+(zero-terminated)f(string)f(whic)m(h)f(is)h Fr(str)e
+Fx(transco)s(ded)390 4310 y(in)m(to)31 b(UTF-8.)150 4506
+y Fq(stringprep)p 710 4506 V 55 w(utf8)p 979 4506 V 55
+w(to)p 1143 4506 V 54 w(lo)s(cale)3350 4699 y Fx([F)-8
+b(unction])-3599 b Fp(char)54 b(*)e(stringprep_utf8_to_loc)q(ale)g
+Fo(\()p Fn(const)31 b(c)m(har)g(*)g Fm(str)12 b Fo(\))390
+4809 y Fn(str)7 b Fx(:)40 b(input)29 b(zero)j(terminated)e(string.)390
+4941 y(Con)m(v)m(ert)24 b(string)f(enco)s(ded)g(in)g(UTF-8)h(in)m(to)g
+(the)g(lo)s(cale's)h(c)m(haracter)f(set)g(b)m(y)f(using)g
+Fr(stringprep_)390 5051 y(convert\(\))p Fx(.)390 5184
+y Fl(Return)d(v)-5 b(alue:)36 b Fx(Returns)20 b(newly)g(allo)s(cated)j
+(zero-terminated)f(string)f(whic)m(h)f(is)h Fr(str)e
+Fx(transco)s(ded)390 5293 y(in)m(to)31 b(the)g(lo)s(cale's)h(c)m
+(haracter)g(set.)p eop end
+%%Page: 17 22
+TeXDict begin 17 21 bop 150 -116 a Fx(Chapter)30 b(4:)41
+b(Stringprep)29 b(F)-8 b(unctions)2209 b(17)150 299 y
+Fu(4)80 b(Stringprep)52 b(F)-13 b(unctions)150 537 y
+Fx(Stringprep)23 b(describ)s(es)i(a)g(framew)m(ork)g(for)f(preparing)g
+(Unico)s(de)h(text)h(strings)f(in)f(order)h(to)g(increase)h(the)150
+646 y(lik)m(eliho)s(o)s(d)i(that)f(string)g(input)e(and)i(string)f
+(comparison)h(w)m(ork)g(in)f(w)m(a)m(ys)i(that)f(mak)m(e)h(sense)f(for)
+f(t)m(ypical)150 756 y(users)i(throughout)g(the)h(w)m(orld.)40
+b(The)28 b(stringprep)g(proto)s(col)i(is)e(useful)g(for)h(proto)s(col)g
+(iden)m(ti\014er)g(v)-5 b(alues,)150 865 y(compan)m(y)31
+b(and)f(p)s(ersonal)f(names,)i(in)m(ternationalized)i(domain)d(names,)g
+(and)g(other)h(text)g(strings.)150 1100 y Fw(4.1)68 b(Header)46
+b(\014le)f Fj(stringprep.h)150 1259 y Fx(T)-8 b(o)30
+b(use)f(the)g(functions)g(explained)h(in)f(this)g(c)m(hapter,)h(y)m(ou)
+g(need)f(to)h(include)f(the)g(\014le)h(`)p Fr(stringprep.h)p
+Fx(')150 1369 y(using:)390 1504 y Fr(#include)46 b(<stringprep.h>)150
+1739 y Fw(4.2)68 b(De\014ning)45 b(A)g(Stringprep)f(Pro\014le)150
+1898 y Fx(F)-8 b(urther)38 b(t)m(yp)s(es)h(and)g(structures)f(are)h
+(de\014ned)e(for)i(applications)h(that)f(w)m(an)m(t)h(to)g(sp)s(ecify)e
+(their)h(o)m(wn)150 2008 y(stringprep)e(pro\014le.)63
+b(As)38 b(these)g(are)h(fairly)f(obscure,)i(and)d(b)m(y)h(necessit)m(y)
+h(tied)g(to)f(the)h(implemen)m(ta-)150 2117 y(tion,)f(w)m(e)e(do)g(not)
+g(do)s(cumen)m(t)g(them)g(here.)57 b(Lo)s(ok)36 b(in)m(to)h(the)f(`)p
+Fr(stringprep.h)p Fx(')d(header)j(\014le,)h(and)f(the)150
+2227 y(`)p Fr(profiles.c)p Fx(')28 b(source)j(co)s(de)f(for)g(the)h
+(details.)150 2461 y Fw(4.3)68 b(Con)l(trol)46 b(Flags)3072
+2671 y Fx([Stringprep)29 b(\015ags])-3599 b Fp(Stringprep_profile_fla)q
+(gs)59 b(STRINGPREP_NO_NFKC)390 2781 y Fx(Disable)42
+b(the)g(NFK)m(C)g(normalization,)k(as)41 b(w)m(ell)i(as)e(selecting)i
+(the)f(non-NFK)m(C)f(case)i(folding)390 2891 y(tables.)d(Usually)25
+b(the)h(pro\014le)f(sp)s(eci\014es)g(BIDI)g(and)g(NFK)m(C)g(settings,)j
+(and)d(applications)h(should)390 3000 y(not)31 b(o)m(v)m(erride)g(it)g
+(unless)f(in)g(sp)s(ecial)h(situations.)3072 3187 y([Stringprep)e
+(\015ags])-3599 b Fp(Stringprep_profile_fla)q(gs)59 b
+(STRINGPREP_NO_BIDI)390 3297 y Fx(Disable)39 b(the)f(BIDI)g(step.)62
+b(Usually)38 b(the)g(pro\014le)f(sp)s(eci\014es)h(BIDI)g(and)f(NFK)m(C)
+h(settings,)j(and)390 3406 y(applications)32 b(should)d(not)i(o)m(v)m
+(erride)g(it)g(unless)f(in)g(sp)s(ecial)h(situations.)3072
+3593 y([Stringprep)e(\015ags])-3599 b Fp(Stringprep_profile_fla)q(gs)59
+b(STRINGPREP_NO_UNASSIGNE)q(D)390 3702 y Fx(Mak)m(e)28
+b(the)e(library)g(return)e(with)i(an)g(error)g(if)g(string)g(con)m
+(tains)h(unassigned)e(c)m(haracters)j(accord-)390 3812
+y(ing)j(to)g(pro\014le.)150 4046 y Fw(4.4)68 b(Core)46
+b(F)-11 b(unctions)150 4270 y Fq(stringprep)p 710 4270
+37 5 v 55 w(4i)3350 4468 y Fx([F)j(unction])-3599 b Fp(int)53
+b(stringprep_4i)d Fo(\()p Fn(uin)m(t32)p 1375 4468 28
+4 v 41 w(t)31 b(*)f Fm(ucs4)12 b Fn(,)32 b(size)p 1975
+4468 V 41 w(t)e(*)h Fm(len)12 b Fn(,)31 b(size)p 2522
+4468 V 41 w(t)g Fm(maxucs4len)12 b Fn(,)565 4578 y(Stringprep)p
+992 4578 V 39 w(pro\014le)p 1279 4578 V 40 w(\015ags)30
+b Fm(flags)12 b Fn(,)32 b(const)f(Stringprep)p 2514 4578
+V 38 w(pro\014le)f(*)h Fm(profile)12 b Fo(\))390 4688
+y Fn(ucs4)7 b Fx(:)41 b(input/output)30 b(arra)m(y)h(with)f(string)g
+(to)h(prepare.)390 4823 y Fn(len)p Fx(:)63 b(on)41 b(input,)i(length)f
+(of)f(input)g(arra)m(y)h(with)f(Unico)s(de)g(co)s(de)h(p)s(oin)m(ts,)i
+(on)d(exit,)k(length)d(of)390 4933 y(output)30 b(arra)m(y)h(with)f
+(Unico)s(de)g(co)s(de)h(p)s(oin)m(ts.)390 5069 y Fn(maxucs4len)p
+Fx(:)41 b(maxim)m(um)30 b(length)h(of)g(input/output)e(arra)m(y)-8
+b(.)390 5204 y Fn(\015ags)t Fx(:)41 b(a)30 b Fr
+(Stringprep_profile_flags)24 b Fx(v)-5 b(alue,)31 b(or)g(0.)390
+5340 y Fn(pro\014le)5 b Fx(:)40 b(p)s(oin)m(ter)31 b(to)g
+Fr(Stringprep_profile)25 b Fx(to)31 b(use.)p eop end
+%%Page: 18 23
+TeXDict begin 18 22 bop 150 -116 a Fx(Chapter)30 b(4:)41
+b(Stringprep)29 b(F)-8 b(unctions)2209 b(18)390 299 y(Prepare)35
+b(the)h(input)f(UCS-4)h(string)g(according)g(to)h(the)f(stringprep)e
+(pro\014le,)j(and)e(write)h(bac)m(k)390 408 y(the)31
+b(result)f(to)h(the)g(input)e(string.)390 548 y(The)36
+b(input)g(is)h(not)h(required)e(to)h(b)s(e)g(zero)h(terminated)f(\()p
+Fr(ucs4)p Fx([)p Fr(len)p Fx(])f(=)g(0\).)62 b(The)36
+b(output)h(will)390 657 y(not)28 b(b)s(e)g(zero)h(terminated)f(unless)g
+Fr(ucs4)p Fx([)p Fr(len)p Fx(])e(=)i(0.)40 b(Instead,)29
+b(see)f Fr(stringprep_4zi\(\))c Fx(if)k(y)m(our)390 767
+y(input)h(is)i(zero)g(terminated)g(or)f(if)h(y)m(ou)f(w)m(an)m(t)i(the)
+e(output)g(to)h(b)s(e.)390 906 y(Since)c(the)h(stringprep)f(op)s
+(eration)h(can)f(expand)g(the)h(string,)g Fr(maxucs4len)d
+Fx(indicate)j(ho)m(w)g(large)390 1016 y(the)35 b(bu\013er)e(holding)i
+(the)g(string)f(is.)53 b(This)34 b(function)g(will)h(not)g(read)g(or)f
+(write)h(to)g(co)s(de)g(p)s(oin)m(ts)390 1125 y(outside)c(that)g(size.)
+390 1265 y(The)f Fr(flags)f Fx(are)i(one)f(of)h Fr
+(Stringprep_profile_flag)o(s)25 b Fx(v)-5 b(alues,)30
+b(or)h(0.)390 1404 y(The)f Fr(profile)f Fx(con)m(tain)k(the)e
+Fr(Stringprep_profile)26 b Fx(instructions)k(to)i(p)s(erform.)41
+b(Y)-8 b(our)31 b(appli-)390 1513 y(cation)41 b(can)g(de\014ne)e(new)g
+(pro\014les,)k(p)s(ossibly)c(re-using)g(the)i(generic)g(stringprep)e
+(tables)h(that)390 1623 y(alw)m(a)m(ys)32 b(will)f(b)s(e)e(part)i(of)f
+(the)h(library)-8 b(,)30 b(or)h(use)f(one)g(of)h(the)g(curren)m(tly)f
+(supp)s(orted)e(pro\014les.)390 1762 y Fl(Return)21 b(v)-5
+b(alue:)36 b Fx(Returns)20 b Fr(STRINGPREP_OK)e Fx(i\013)j(successful,)
+i(or)e(an)f Fr(Stringprep_rc)e Fx(error)i(co)s(de.)150
+1966 y Fq(stringprep)p 710 1966 37 5 v 55 w(4zi)3350
+2168 y Fx([F)-8 b(unction])-3599 b Fp(int)53 b(stringprep_4zi)d
+Fo(\()p Fn(uin)m(t32)p 1427 2168 28 4 v 41 w(t)31 b(*)g
+Fm(ucs4)12 b Fn(,)31 b(size)p 2027 2168 V 41 w(t)g Fm(maxucs4len)12
+b Fn(,)565 2277 y(Stringprep)p 992 2277 V 39 w(pro\014le)p
+1279 2277 V 40 w(\015ags)30 b Fm(flags)12 b Fn(,)32 b(const)f
+(Stringprep)p 2514 2277 V 38 w(pro\014le)f(*)h Fm(profile)12
+b Fo(\))390 2387 y Fn(ucs4)7 b Fx(:)41 b(input/output)30
+b(arra)m(y)h(with)f(zero)h(terminated)g(string)f(to)h(prepare.)390
+2526 y Fn(maxucs4len)p Fx(:)41 b(maxim)m(um)30 b(length)h(of)g
+(input/output)e(arra)m(y)-8 b(.)390 2665 y Fn(\015ags)t
+Fx(:)41 b(a)30 b Fr(Stringprep_profile_flags)24 b Fx(v)-5
+b(alue,)31 b(or)g(0.)390 2805 y Fn(pro\014le)5 b Fx(:)40
+b(p)s(oin)m(ter)31 b(to)g Fr(Stringprep_profile)25 b
+Fx(to)31 b(use.)390 2944 y(Prepare)i(the)g(input)f(zero)i(terminated)g
+(UCS-4)f(string)g(according)h(to)g(the)f(stringprep)f(pro\014le,)390
+3053 y(and)e(write)g(bac)m(k)h(the)g(result)f(to)h(the)g(input)e
+(string.)390 3193 y(Since)e(the)h(stringprep)f(op)s(eration)h(can)f
+(expand)g(the)h(string,)g Fr(maxucs4len)d Fx(indicate)j(ho)m(w)g(large)
+390 3302 y(the)35 b(bu\013er)e(holding)i(the)g(string)f(is.)53
+b(This)34 b(function)g(will)h(not)g(read)g(or)f(write)h(to)g(co)s(de)g
+(p)s(oin)m(ts)390 3412 y(outside)c(that)g(size.)390 3551
+y(The)f Fr(flags)f Fx(are)i(one)f(of)h Fr(Stringprep_profile_flag)o(s)
+25 b Fx(v)-5 b(alues,)30 b(or)h(0.)390 3690 y(The)f Fr(profile)f
+Fx(con)m(tain)k(the)e Fr(Stringprep_profile)26 b Fx(instructions)k(to)i
+(p)s(erform.)41 b(Y)-8 b(our)31 b(appli-)390 3800 y(cation)41
+b(can)g(de\014ne)e(new)g(pro\014les,)k(p)s(ossibly)c(re-using)g(the)i
+(generic)g(stringprep)e(tables)h(that)390 3910 y(alw)m(a)m(ys)32
+b(will)f(b)s(e)e(part)i(of)f(the)h(library)-8 b(,)30
+b(or)h(use)f(one)g(of)h(the)g(curren)m(tly)f(supp)s(orted)e
+(pro\014les.)390 4049 y Fl(Return)21 b(v)-5 b(alue:)36
+b Fx(Returns)20 b Fr(STRINGPREP_OK)e Fx(i\013)j(successful,)i(or)e(an)f
+Fr(Stringprep_rc)e Fx(error)i(co)s(de.)150 4253 y Fq(stringprep)3350
+4454 y Fx([F)-8 b(unction])-3599 b Fp(int)53 b(stringprep)c
+Fo(\()p Fn(c)m(har)31 b(*)g Fm(in)12 b Fn(,)30 b(size)p
+1557 4454 V 41 w(t)h Fm(maxlen)12 b Fn(,)32 b(Stringprep)p
+2466 4454 V 38 w(pro\014le)p 2752 4454 V 40 w(\015ags)565
+4564 y Fm(flags)12 b Fn(,)32 b(const)f(Stringprep)p 1559
+4564 V 38 w(pro\014le)f(*)h Fm(profile)12 b Fo(\))390
+4673 y Fn(in)p Fx(:)40 b(input/ouput)30 b(arra)m(y)g(with)h(string)f
+(to)h(prepare.)390 4813 y Fn(maxlen)p Fx(:)41 b(maxim)m(um)30
+b(length)h(of)g(input/output)e(arra)m(y)-8 b(.)390 4952
+y Fn(\015ags)t Fx(:)41 b(a)30 b Fr(Stringprep_profile_flags)24
+b Fx(v)-5 b(alue,)31 b(or)g(0.)390 5091 y Fn(pro\014le)5
+b Fx(:)40 b(p)s(oin)m(ter)31 b(to)g Fr(Stringprep_profile)25
+b Fx(to)31 b(use.)390 5230 y(Prepare)h(the)h(input)e(zero)i(terminated)
+g(UTF-8)g(string)f(according)h(to)g(the)g(stringprep)e(pro\014le,)390
+5340 y(and)f(write)g(bac)m(k)h(the)g(result)f(to)h(the)g(input)e
+(string.)p eop end
+%%Page: 19 24
+TeXDict begin 19 23 bop 150 -116 a Fx(Chapter)30 b(4:)41
+b(Stringprep)29 b(F)-8 b(unctions)2209 b(19)390 299 y(Note)34
+b(that)f(y)m(ou)g(m)m(ust)g(con)m(v)m(ert)h(strings)e(en)m(tered)h(in)g
+(the)f(systems)h(lo)s(cale)h(in)m(to)g(UTF-8)f(b)s(efore)390
+408 y(using)d(this)g(function,)g(see)h Fr(stringprep_locale_to_utf8\()o
+(\))p Fx(.)390 541 y(Since)g(the)f(stringprep)g(op)s(eration)h(can)g
+(expand)f(the)h(string,)g Fr(maxlen)e Fx(indicate)i(ho)m(w)g(large)h
+(the)390 651 y(bu\013er)27 b(holding)g(the)h(string)g(is.)40
+b(This)27 b(function)g(will)h(not)g(read)f(or)h(write)g(to)h(c)m
+(haracters)g(outside)390 760 y(that)i(size.)390 893 y(The)f
+Fr(flags)f Fx(are)i(one)f(of)h Fr(Stringprep_profile_flag)o(s)25
+b Fx(v)-5 b(alues,)30 b(or)h(0.)390 1026 y(The)f Fr(profile)f
+Fx(con)m(tain)k(the)e Fr(Stringprep_profile)26 b Fx(instructions)k(to)i
+(p)s(erform.)41 b(Y)-8 b(our)31 b(appli-)390 1135 y(cation)41
+b(can)g(de\014ne)e(new)g(pro\014les,)k(p)s(ossibly)c(re-using)g(the)i
+(generic)g(stringprep)e(tables)h(that)390 1245 y(alw)m(a)m(ys)32
+b(will)f(b)s(e)e(part)i(of)f(the)h(library)-8 b(,)30
+b(or)h(use)f(one)g(of)h(the)g(curren)m(tly)f(supp)s(orted)e
+(pro\014les.)390 1377 y Fl(Return)i(v)-5 b(alue:)41 b
+Fx(Returns)30 b Fr(STRINGPREP_OK)c Fx(i\013)31 b(successful,)f(or)h(an)
+f(error)g(co)s(de.)150 1573 y Fq(stringprep)p 710 1573
+37 5 v 55 w(pro\014le)3350 1766 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(stringprep_profile)e Fo(\()p Fn(const)31
+b(c)m(har)g(*)g Fm(in)12 b Fn(,)31 b(c)m(har)f(**)i Fm(out)12
+b Fn(,)31 b(const)f(c)m(har)h(*)565 1876 y Fm(profile)12
+b Fn(,)32 b(Stringprep)p 1425 1876 28 4 v 39 w(pro\014le)p
+1712 1876 V 40 w(\015ags)e Fm(flags)12 b Fo(\))390 1985
+y Fn(in)p Fx(:)40 b(input)30 b(arra)m(y)h(with)f(UTF-8)h(string)f(to)h
+(prepare.)390 2118 y Fn(out)r Fx(:)41 b(output)30 b(v)-5
+b(ariable)31 b(with)f(p)s(oin)m(ter)h(to)g(newly)f(allo)s(cate)j
+(string.)390 2250 y Fn(pro\014le)5 b Fx(:)40 b(name)31
+b(of)f(stringprep)g(pro\014le)g(to)h(use.)390 2383 y
+Fn(\015ags)t Fx(:)41 b(a)30 b Fr(Stringprep_profile_flags)24
+b Fx(v)-5 b(alue,)31 b(or)g(0.)390 2516 y(Prepare)h(the)h(input)e(zero)
+i(terminated)g(UTF-8)g(string)f(according)h(to)g(the)g(stringprep)e
+(pro\014le,)390 2625 y(and)f(return)f(the)i(result)f(in)g(a)h(newly)f
+(allo)s(cated)i(v)-5 b(ariable.)390 2758 y(Note)34 b(that)f(y)m(ou)g(m)
+m(ust)g(con)m(v)m(ert)h(strings)e(en)m(tered)h(in)g(the)f(systems)h(lo)
+s(cale)h(in)m(to)g(UTF-8)f(b)s(efore)390 2868 y(using)d(this)g
+(function,)g(see)h Fr(stringprep_locale_to_utf8\()o(\))p
+Fx(.)390 3000 y(The)f(output)g Fr(out)f Fx(v)-5 b(ariable)31
+b(m)m(ust)g(b)s(e)e(deallo)s(cated)k(b)m(y)d(the)h(caller.)390
+3133 y(The)f Fr(flags)f Fx(are)i(one)f(of)h Fr(Stringprep_profile_flag)
+o(s)25 b Fx(v)-5 b(alues,)30 b(or)h(0.)390 3266 y(The)k
+Fr(profile)f Fx(sp)s(eci\014es)i(the)g(name)g(of)g(the)g(stringprep)f
+(pro\014le)g(to)i(use.)57 b(It)36 b(m)m(ust)f(b)s(e)h(one)g(of)390
+3375 y(the)31 b(in)m(ternally)g(supp)s(orted)d(stringprep)i
+(pro\014les.)390 3508 y Fl(Return)g(v)-5 b(alue:)41 b
+Fx(Returns)30 b Fr(STRINGPREP_OK)c Fx(i\013)31 b(successful,)f(or)h(an)
+f(error)g(co)s(de.)150 3737 y Fw(4.5)68 b(Error)45 b(Handling)150
+3959 y Fq(stringprep)p 710 3959 37 5 v 55 w(strerror)3350
+4152 y Fx([F)-8 b(unction])-3599 b Fp(const)54 b(char)f(*)g
+(stringprep_strerror)e Fo(\()p Fn(Stringprep)p 2331 4152
+28 4 v 39 w(rc)31 b Fm(rc)12 b Fo(\))390 4261 y Fn(rc)6
+b Fx(:)40 b(a)31 b Fr(Stringprep_rc)c Fx(return)i(co)s(de.)390
+4394 y(Con)m(v)m(ert)35 b(a)f(return)e(co)s(de)i(in)m(teger)i(to)e(a)g
+(text)h(string.)51 b(This)33 b(string)h(can)g(b)s(e)f(used)g(to)h
+(output)g(a)390 4504 y(diagnostic)e(message)f(to)g(the)g(user.)390
+4636 y Fl(STRINGPREP)p 1010 4636 28 5 v 40 w(OK:)23 b
+Fx(Successful)f(op)s(eration.)39 b(This)22 b(v)-5 b(alue)23
+b(is)f(guaran)m(teed)i(to)f(alw)m(a)m(ys)h(b)s(e)e(zero,)390
+4746 y(the)h(remaining)f(ones)h(are)g(only)g(guaran)m(teed)g(to)g(hold)
+g(non-zero)g(v)-5 b(alues,)24 b(for)f(logical)i(comparison)390
+4856 y(purp)s(oses.)390 4988 y Fl(STRINGPREP)p 1010 4988
+V 40 w(CONT)-8 b(AINS)p 1537 4988 V 41 w(UNASSIGNED:)61
+b Fx(String)g(con)m(tain)j(unassigned)d(Unico)s(de)390
+5098 y(co)s(de)31 b(p)s(oin)m(ts,)f(whic)m(h)g(is)h(forbidden)d(b)m(y)j
+(the)f(pro\014le.)390 5230 y Fl(STRINGPREP)p 1010 5230
+V 40 w(CONT)-8 b(AINS)p 1537 5230 V 41 w(PR)m(OHIBITED:)38
+b Fx(String)g(con)m(tain)i(co)s(de)e(p)s(oin)m(ts)h(prohibited)390
+5340 y(b)m(y)30 b(the)h(pro\014le.)p eop end
+%%Page: 20 25
+TeXDict begin 20 24 bop 150 -116 a Fx(Chapter)30 b(4:)41
+b(Stringprep)29 b(F)-8 b(unctions)2209 b(20)390 299 y
+Fl(STRINGPREP)p 1010 299 28 5 v 40 w(BIDI)p 1257 299
+V 40 w(BOTH)p 1564 299 V 40 w(L)p 1659 299 V 40 w(AND)p
+1909 299 V 39 w(RAL:)23 b Fx(String)g(con)m(tain)i(co)s(de)e(p)s(oin)m
+(ts)h(with)f(con\015ict-)390 408 y(ing)31 b(bidirection)f(category)-8
+b(.)390 559 y Fl(STRINGPREP)p 1010 559 V 40 w(BIDI)p
+1257 559 V 40 w(LEADTRAIL)p 1843 559 V 38 w(NOT)p 2083
+559 V 41 w(RAL:)44 b Fx(Leading)h(and)f(trailing)i(c)m(haracter)g(in)
+390 669 y(string)30 b(not)h(of)f(prop)s(er)f(bidirectional)j(category)
+-8 b(.)390 820 y Fl(STRINGPREP)p 1010 820 V 40 w(BIDI)p
+1257 820 V 40 w(CONT)g(AINS)p 1784 820 V 40 w(PR)m(OHIBITED:)32
+b Fx(Con)m(tains)g(prohibited)f(co)s(de)h(p)s(oin)m(ts)390
+929 y(detected)g(b)m(y)e(bidirectional)h(co)s(de.)390
+1080 y Fl(STRINGPREP)p 1010 1080 V 40 w(TOO)p 1249 1080
+V 41 w(SMALL)p 1606 1080 V 39 w(BUFFER:)37 b Fx(Bu\013er)h(handed)e(to)
+j(function)e(w)m(as)i(to)s(o)f(small.)390 1190 y(This)30
+b(usually)g(indicate)h(a)g(problem)f(in)g(the)g(calling)i(application.)
+390 1340 y Fl(STRINGPREP)p 1010 1340 V 40 w(PR)m(OFILE)p
+1454 1340 V 41 w(ERR)m(OR:)41 b Fx(The)g(stringprep)g(pro\014le)f(w)m
+(as)i(inconsisten)m(t.)75 b(This)390 1450 y(usually)30
+b(indicate)i(an)e(in)m(ternal)h(error)f(in)g(the)h(library)-8
+b(.)390 1601 y Fl(STRINGPREP)p 1010 1601 V 40 w(FLA)m(G)p
+1299 1601 V 41 w(ERR)m(OR:)31 b Fx(The)g(supplied)f(\015ag)h
+(con\015icted)h(with)e(pro\014le.)43 b(This)30 b(usu-)390
+1710 y(ally)h(indicate)h(a)e(problem)g(in)g(the)h(calling)h
+(application.)390 1861 y Fl(STRINGPREP)p 1010 1861 V
+40 w(UNKNO)m(WN)p 1563 1861 V 42 w(PR)m(OFILE:)j Fx(The)f(supplied)g
+(pro\014le)g(name)h(w)m(as)g(not)g(kno)m(wn)390 1971
+y(to)c(the)g(library)-8 b(.)390 2122 y Fl(STRINGPREP)p
+1010 2122 V 40 w(NFK)m(C)p 1312 2122 V 41 w(F)e(AILED:)30
+b Fx(The)g(Unico)s(de)h(NFK)m(C)g(op)s(eration)g(failed.)43
+b(This)30 b(usually)390 2231 y(indicate)h(an)g(in)m(ternal)g(error)f
+(in)g(the)g(library)-8 b(.)390 2382 y Fl(STRINGPREP)p
+1010 2382 V 40 w(MALLOC)p 1449 2382 V 39 w(ERR)m(OR:)31
+b Fx(The)e Fr(malloc\(\))f Fx(w)m(as)i(out)g(of)g(memory)-8
+b(.)41 b(This)29 b(is)h(usu-)390 2492 y(ally)h(a)g(fatal)h(error.)390
+2642 y Fl(Return)d(v)-5 b(alue:)40 b Fx(Returns)29 b(a)g(p)s(oin)m(ter)
+h(to)g(a)f(statically)j(allo)s(cated)f(string)f(con)m(taining)h(a)e
+(descrip-)390 2752 y(tion)i(of)f(the)h(error)f(with)g(the)h(return)e
+(co)s(de)h Fr(rc)p Fx(.)150 3009 y Fw(4.6)68 b(Stringprep)45
+b(Pro\014le)g(Macros)3350 3234 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(stringprep_nameprep_n)q(o_un)q(ass)q(ign)q(ed)f
+Fo(\()p Fn(c)m(har)31 b(*)g Fm(in)12 b Fn(,)30 b(in)m(t)h
+Fm(maxlen)12 b Fo(\))390 3344 y Fn(in)p Fx(:)40 b(input/ouput)30
+b(arra)m(y)g(with)h(string)f(to)h(prepare.)390 3495 y
+Fn(maxlen)p Fx(:)41 b(maxim)m(um)30 b(length)h(of)g(input/output)e
+(arra)m(y)-8 b(.)390 3645 y(Prepare)31 b(the)g(input)f(UTF-8)i(string)f
+(according)h(to)g(the)f(nameprep)f(pro\014le.)43 b(The)30
+b(Allo)m(wUnas-)390 3755 y(signed)j(\015ag)g(is)g(false,)h(use)f
+Fr(stringprep_nameprep)28 b Fx(for)k(true)h(Allo)m(wUnassigned.)50
+b(Returns)32 b(0)390 3865 y(i\013)f(successful,)f(or)g(an)h(error)f(co)
+s(de.)3350 4082 y([F)-8 b(unction])-3599 b Fp(int)53
+b(stringprep_iscsi)e Fo(\()p Fn(c)m(har)31 b(*)f Fm(in)12
+b Fn(,)31 b(in)m(t)g Fm(maxlen)12 b Fo(\))390 4191 y
+Fn(in)p Fx(:)40 b(input/ouput)30 b(arra)m(y)g(with)h(string)f(to)h
+(prepare.)390 4342 y Fn(maxlen)p Fx(:)41 b(maxim)m(um)30
+b(length)h(of)g(input/output)e(arra)m(y)-8 b(.)390 4493
+y(Prepare)32 b(the)g(input)e(UTF-8)j(string)f(according)h(to)f(the)g
+(draft)f(iSCSI)g(stringprep)g(pro\014le.)44 b(Re-)390
+4602 y(turns)29 b(0)i(i\013)f(successful,)h(or)f(an)g(error)g(co)s(de.)
+3350 4819 y([F)-8 b(unction])-3599 b Fp(int)53 b(stringprep_plain)e
+Fo(\()p Fn(c)m(har)31 b(*)f Fm(in)12 b Fn(,)31 b(in)m(t)g
+Fm(maxlen)12 b Fo(\))390 4929 y Fn(in)p Fx(:)40 b(input/ouput)30
+b(arra)m(y)g(with)h(string)f(to)h(prepare.)390 5080 y
+Fn(maxlen)p Fx(:)41 b(maxim)m(um)30 b(length)h(of)g(input/output)e
+(arra)m(y)-8 b(.)390 5230 y(Prepare)29 b(the)g(input)f(UTF-8)i(string)f
+(according)h(to)g(the)f(draft)g(SASL)f(ANONYMOUS)h(pro\014le.)390
+5340 y(Returns)g(0)i(i\013)g(successful,)f(or)h(an)f(error)g(co)s(de.)p
+eop end
+%%Page: 21 26
+TeXDict begin 21 25 bop 150 -116 a Fx(Chapter)30 b(4:)41
+b(Stringprep)29 b(F)-8 b(unctions)2209 b(21)3350 299
+y([F)-8 b(unction])-3599 b Fp(int)53 b(stringprep_xmpp_nodep)q(rep)f
+Fo(\()p Fn(c)m(har)31 b(*)g Fm(in)12 b Fn(,)31 b(in)m(t)f
+Fm(maxlen)12 b Fo(\))390 408 y Fn(in)p Fx(:)40 b(input/ouput)30
+b(arra)m(y)g(with)h(string)f(to)h(prepare.)390 543 y
+Fn(maxlen)p Fx(:)41 b(maxim)m(um)30 b(length)h(of)g(input/output)e
+(arra)m(y)-8 b(.)390 677 y(Prepare)29 b(the)g(input)f(UTF-8)h(string)g
+(according)h(to)f(the)g(draft)g(XMPP)g(no)s(de)f(iden)m(ti\014er)h
+(pro\014le.)390 787 y(Returns)g(0)i(i\013)g(successful,)f(or)h(an)f
+(error)g(co)s(de.)3350 971 y([F)-8 b(unction])-3599 b
+Fp(int)53 b(stringprep_xmpp_resou)q(rcep)q(rep)f Fo(\()p
+Fn(c)m(har)31 b(*)g Fm(in)12 b Fn(,)31 b(in)m(t)g Fm(maxlen)12
+b Fo(\))390 1081 y Fn(in)p Fx(:)40 b(input/ouput)30 b(arra)m(y)g(with)h
+(string)f(to)h(prepare.)390 1215 y Fn(maxlen)p Fx(:)41
+b(maxim)m(um)30 b(length)h(of)g(input/output)e(arra)m(y)-8
+b(.)390 1350 y(Prepare)44 b(the)g(input)f(UTF-8)i(string)f(according)h
+(to)g(the)f(draft)f(XMPP)i(resource)f(iden)m(ti\014er)390
+1460 y(pro\014le.)c(Returns)30 b(0)h(i\013)f(successful,)h(or)f(an)g
+(error)g(co)s(de.)p eop end
+%%Page: 22 27
+TeXDict begin 22 26 bop 150 -116 a Fx(Chapter)30 b(5:)41
+b(Pun)m(yco)s(de)30 b(F)-8 b(unctions)2241 b(22)150 299
+y Fu(5)80 b(Pun)l(yco)t(de)53 b(F)-13 b(unctions)150
+531 y Fx(Pun)m(yco)s(de)31 b(is)h(a)g(simple)g(and)f(e\016cien)m(t)j
+(transfer)d(enco)s(ding)h(syn)m(tax)g(designed)g(for)g(use)f(with)h(In)
+m(terna-)150 641 y(tionalized)d(Domain)f(Names)g(in)f(Applications.)41
+b(It)27 b(uniquely)g(and)g(rev)m(ersibly)g(transforms)g(a)h(Unico)s(de)
+150 750 y(string)33 b(in)m(to)h(an)e(ASCI)s(I)g(string.)48
+b(ASCI)s(I)31 b(c)m(haracters)j(in)f(the)g(Unico)s(de)g(string)g(are)g
+(represen)m(ted)g(liter-)150 860 y(ally)-8 b(,)27 b(and)c(non-ASCI)s(I)
+f(c)m(haracters)j(are)g(represen)m(ted)e(b)m(y)h(ASCI)s(I)f(c)m
+(haracters)i(that)f(are)h(allo)m(w)m(ed)g(in)f(host)150
+970 y(name)33 b(lab)s(els)g(\(letters,)i(digits,)g(and)d(h)m(yphens\).)
+47 b(A)33 b(general)h(algorithm)g(called)g(Bo)s(otstring)g(allo)m(ws)h
+(a)150 1079 y(string)i(of)h(basic)f(co)s(de)h(p)s(oin)m(ts)f(to)h
+(uniquely)e(represen)m(t)i(an)m(y)f(string)g(of)h(co)s(de)f(p)s(oin)m
+(ts)g(dra)m(wn)g(from)g(a)150 1189 y(larger)i(set.)65
+b(Pun)m(yco)s(de)38 b(is)g(an)g(instance)h(of)f(Bo)s(otstring)i(that)e
+(uses)g(particular)h(parameter)f(v)-5 b(alues,)150 1298
+y(appropriate)30 b(for)h(IDNA.)150 1530 y Fw(5.1)68 b(Header)46
+b(\014le)f Fj(punycode.h)150 1690 y Fx(T)-8 b(o)36 b(use)g(the)g
+(functions)g(explained)g(in)g(this)g(c)m(hapter,)i(y)m(ou)f(need)e(to)i
+(include)f(the)g(\014le)g(`)p Fr(punycode.h)p Fx(')150
+1799 y(using:)390 1933 y Fr(#include)46 b(<punycode.h>)150
+2165 y Fw(5.2)68 b(Unico)t(de)45 b(Co)t(de)g(P)l(oin)l(t)h(Data)g(T)l
+(yp)t(e)150 2325 y Fx(The)28 b(pun)m(yco)s(de)g(function)h(uses)f(a)h
+(sp)s(ecial)g(t)m(yp)s(e)g(to)h(denote)f(Unico)s(de)g(co)s(de)g(p)s
+(oin)m(ts.)40 b(It)29 b(is)g(guaran)m(teed)150 2434 y(to)i(alw)m(a)m
+(ys)h(b)s(e)e(a)h(32)g(bit)f(unsigned)f(in)m(teger.)2511
+2617 y([Pun)m(yco)s(de)i(Unico)s(de)f(co)s(de)h(p)s(oin)m(t])-3600
+b Fp(uint32_t)55 b(punycode_uint)390 2727 y Fx(A)30 b(unsigned)g(in)m
+(teger)i(that)f(hold)f(Unico)s(de)g(co)s(de)h(p)s(oin)m(ts.)150
+2959 y Fw(5.3)68 b(Core)46 b(F)-11 b(unctions)150 3118
+y Fx(Note)45 b(that)g(the)f(curren)m(t)f(implemen)m(tation)j(will)e
+(fail)g(if)g(the)g Fr(input_length)d Fx(exceed)j(4294967295)150
+3228 y(\(the)37 b(size)g(of)f Fr(punycode_uint)p Fx(\).)55
+b(This)35 b(restriction)j(ma)m(y)e(b)s(e)g(remo)m(v)m(ed)h(in)f(the)g
+(future.)58 b(Mean)m(while)150 3337 y(applications)39
+b(are)f(encouraged)g(to)h(not)f(dep)s(end)e(on)h(this)h(problem,)h(and)
+e(use)g Fr(sizeof)f Fx(to)j(initialize)150 3447 y Fr(input_length)27
+b Fx(and)j Fr(output_length)p Fx(.)275 3581 y(The)f(functions)h(pro)m
+(vided)g(are)h(the)g(follo)m(wing)g(t)m(w)m(o)h(en)m(try)f(p)s(oin)m
+(ts:)150 3780 y Fq(pun)m(yco)s(de)p 668 3780 37 5 v 54
+w(enco)s(de)3350 3976 y Fx([F)-8 b(unction])-3599 b Fp(int)53
+b(punycode_encode)d Fo(\()p Fn(size)p 1371 3976 28 4
+v 41 w(t)31 b Fm(input_length)12 b Fn(,)34 b(const)d(pun)m(yco)s(de)p
+2788 3976 V 39 w(uin)m(t)f Fi([])565 4085 y Fm(input)12
+b Fn(,)32 b(const)f(unsigned)e(c)m(har)i Fi([])f Fm(case_flags)12
+b Fn(,)33 b(size)p 2534 4085 V 41 w(t)d(*)h Fm(output_length)12
+b Fn(,)34 b(c)m(har)d Fi([])565 4195 y Fm(output)12 b
+Fo(\))390 4305 y Fn(input)p 609 4305 V 39 w(length)p
+Fx(:)40 b(The)28 b(n)m(um)m(b)s(er)g(of)g(co)s(de)h(p)s(oin)m(ts)g(in)f
+(the)h Fr(input)e Fx(arra)m(y)i(and)f(the)h(n)m(um)m(b)s(er)e(of)i
+(\015ags)390 4414 y(in)h(the)h Fr(case_flags)c Fx(arra)m(y)-8
+b(.)390 4548 y Fn(input)r Fx(:)66 b(An)43 b(arra)m(y)h(of)f(co)s(de)h
+(p)s(oin)m(ts.)80 b(They)43 b(are)h(presumed)e(to)i(b)s(e)f(Unico)s(de)
+g(co)s(de)h(p)s(oin)m(ts,)390 4658 y(but)29 b(that)i(is)f(not)g
+(strictly)h(REQUIRED.)f(The)f(arra)m(y)i(con)m(tains)g(co)s(de)f(p)s
+(oin)m(ts,)g(not)g(co)s(de)g(units.)390 4767 y(UTF-16)g(uses)e(co)s(de)
+h(units)g(D800)h(through)e(DFFF)i(to)g(refer)f(to)g(co)s(de)g(p)s(oin)m
+(ts)g(10000..10FFFF.)390 4877 y(The)37 b(co)s(de)h(p)s(oin)m(ts)g
+(D800..DFFF)k(do)37 b(not)i(o)s(ccur)e(in)h(an)m(y)g(v)-5
+b(alid)38 b(Unico)s(de)g(string.)63 b(The)38 b(co)s(de)390
+4987 y(p)s(oin)m(ts)26 b(that)h(can)f(o)s(ccur)g(in)g(Unico)s(de)g
+(strings)g(\(0..D7FF)i(and)e(E000..10FFFF\))k(are)d(also)g(called)390
+5096 y(Unico)s(de)k(scalar)g(v)-5 b(alues.)390 5230 y
+Fn(case)p 557 5230 V 41 w(\015ags)t Fx(:)41 b(A)31 b
+Fr(NULL)f Fx(p)s(oin)m(ter)g(or)h(an)g(arra)m(y)g(of)g(b)s(o)s(olean)f
+(v)-5 b(alues)31 b(parallel)h(to)g(the)f Fr(input)e Fx(arra)m(y)-8
+b(.)390 5340 y(Nonzero)31 b(\(true,)g(\015agged\))h(suggests)f(that)g
+(the)f(corresp)s(onding)g(Unico)s(de)g(c)m(haracter)i(b)s(e)e(forced)p
+eop end
+%%Page: 23 28
+TeXDict begin 23 27 bop 150 -116 a Fx(Chapter)30 b(5:)41
+b(Pun)m(yco)s(de)30 b(F)-8 b(unctions)2241 b(23)390 299
+y(to)39 b(upp)s(ercase)e(after)i(b)s(eing)f(deco)s(ded)g(\(if)g(p)s
+(ossible\),)j(and)c(zero)i(\(false,)j(un\015agged\))c(suggests)390
+408 y(that)f(it)h(b)s(e)e(forced)h(to)g(lo)m(w)m(ercase)i(\(if)e(p)s
+(ossible\).)60 b(ASCI)s(I)35 b(co)s(de)i(p)s(oin)m(ts)g(\(0..7F\))i
+(are)e(enco)s(ded)390 518 y(literally)-8 b(,)33 b(except)f(that)g(ASCI)
+s(I)d(letters)j(are)f(forced)g(to)g(upp)s(ercase)f(or)h(lo)m(w)m
+(ercase)i(according)f(to)390 628 y(the)e(corresp)s(onding)f(case)i
+(\015ags.)41 b(If)29 b Fr(case_flags)e Fx(is)j(a)g Fr(NULL)f
+Fx(p)s(oin)m(ter)h(then)f(ASCI)s(I)g(letters)i(are)390
+737 y(left)g(as)g(they)f(are,)h(and)f(other)h(co)s(de)f(p)s(oin)m(ts)g
+(are)h(treated)h(as)e(un\015agged.)390 864 y Fn(output)p
+664 864 28 4 v 40 w(length)p Fx(:)40 b(The)28 b(caller)i(passes)f(in)f
+(the)h(maxim)m(um)g(n)m(um)m(b)s(er)f(of)g(ASCI)s(I)g(co)s(de)h(p)s
+(oin)m(ts)f(that)390 973 y(it)k(can)g(receiv)m(e.)45
+b(On)31 b(successful)g(return)f(it)i(will)g(con)m(tain)g(the)g(n)m(um)m
+(b)s(er)e(of)i(ASCI)s(I)d(co)s(de)j(p)s(oin)m(ts)390
+1083 y(actually)g(output.)390 1209 y Fn(output)r Fx(:)49
+b(An)34 b(arra)m(y)h(of)f(ASCI)s(I)f(co)s(de)i(p)s(oin)m(ts.)53
+b(It)35 b(is)f(*not*)i(n)m(ull-terminated;)i(it)d(will)g(con)m(tain)390
+1319 y(zeros)29 b(if)f(and)g(only)g(if)g(the)g Fr(input)f
+Fx(con)m(tains)i(zeros.)41 b(\(Of)28 b(course)g(the)h(caller)g(can)g
+(lea)m(v)m(e)h(ro)s(om)e(for)390 1428 y(a)j(terminator)g(and)f(add)f
+(one)i(if)f(needed.\))390 1554 y(Con)m(v)m(erts)k(a)g(sequence)f(of)h
+(co)s(de)f(p)s(oin)m(ts)g(\(presumed)f(to)i(b)s(e)f(Unico)s(de)g(co)s
+(de)h(p)s(oin)m(ts\))f(to)h(Pun)m(y-)390 1664 y(co)s(de.)390
+1790 y Fl(Return)g(v)-5 b(alue:)49 b Fx(The)33 b(return)g(v)-5
+b(alue)35 b(can)g(b)s(e)e(an)m(y)i(of)f(the)h Fr(Punycode_status)30
+b Fx(v)-5 b(alues)34 b(de\014ned)390 1900 y(ab)s(o)m(v)m(e)41
+b(except)g Fr(PUNYCODE_BAD_INPUT)p Fx(.)65 b(If)39 b(not)h
+Fr(PUNYCODE_SUCCESS)p Fx(,)e(then)i Fr(output_size)390
+2010 y Fx(and)30 b Fr(output)e Fx(migh)m(t)k(con)m(tain)f(garbage.)150
+2192 y Fq(pun)m(yco)s(de)p 668 2192 37 5 v 54 w(deco)s(de)3350
+2373 y Fx([F)-8 b(unction])-3599 b Fp(int)53 b(punycode_decode)d
+Fo(\()p Fn(size)p 1371 2373 28 4 v 41 w(t)31 b Fm(input_length)12
+b Fn(,)34 b(const)d(c)m(har)g Fi([])f Fm(input)12 b Fn(,)565
+2482 y(size)p 712 2482 V 41 w(t)31 b(*)f Fm(output_length)12
+b Fn(,)34 b(pun)m(yco)s(de)p 2018 2482 V 40 w(uin)m(t)c
+Fi([])g Fm(output)12 b Fn(,)32 b(unsigned)d(c)m(har)i
+Fi([])565 2592 y Fm(case_flags)12 b Fo(\))390 2702 y
+Fn(input)p 609 2702 V 39 w(length)p Fx(:)41 b(The)30
+b(n)m(um)m(b)s(er)f(of)i(ASCI)s(I)e(co)s(de)h(p)s(oin)m(ts)g(in)g(the)h
+Fr(input)e Fx(arra)m(y)-8 b(.)390 2828 y Fn(input)r Fx(:)40
+b(An)30 b(arra)m(y)h(of)f(ASCI)s(I)f(co)s(de)i(p)s(oin)m(ts)f
+(\(0..7F\).)390 2954 y Fn(output)p 664 2954 V 40 w(length)p
+Fx(:)42 b(The)30 b(caller)i(passes)f(in)g(the)g(maxim)m(um)f(n)m(um)m
+(b)s(er)g(of)h(co)s(de)g(p)s(oin)m(ts)g(that)g(it)h(can)390
+3064 y(receiv)m(e)41 b(in)m(to)e(the)g Fr(output)e Fx(arra)m(y)i
+(\(whic)m(h)g(is)g(also)g(the)g(maxim)m(um)g(n)m(um)m(b)s(er)e(of)i
+(\015ags)g(that)g(it)390 3173 y(can)h(receiv)m(e)i(in)m(to)f(the)f
+Fr(case_flags)d Fx(arra)m(y)-8 b(,)43 b(if)d Fr(case_flags)d
+Fx(is)j(not)g(a)g Fr(NULL)f Fx(p)s(oin)m(ter\).)70 b(On)390
+3283 y(successful)39 b(return)e(it)j(will)f(con)m(tain)h(the)f(n)m(um)m
+(b)s(er)f(of)h(co)s(de)g(p)s(oin)m(ts)g(actually)h(output)f(\(whic)m(h)
+390 3392 y(is)c(also)h(the)f(n)m(um)m(b)s(er)e(of)i(\015ags)g(actually)
+i(output,)e(if)g(case)p 2423 3392 V 41 w(\015ags)g(is)g(not)g(a)g(n)m
+(ull)g(p)s(oin)m(ter\).)54 b(The)390 3502 y(deco)s(der)31
+b(will)h(nev)m(er)f(need)g(to)h(output)f(more)h(co)s(de)f(p)s(oin)m(ts)
+g(than)g(the)h(n)m(um)m(b)s(er)e(of)h(ASCI)s(I)f(co)s(de)390
+3612 y(p)s(oin)m(ts)g(in)g(the)g(input,)g(b)s(ecause)g(of)g(the)h(w)m
+(a)m(y)g(the)f(enco)s(ding)g(is)g(de\014ned.)40 b(The)30
+b(n)m(um)m(b)s(er)e(of)j(co)s(de)390 3721 y(p)s(oin)m(ts)d(output)g
+(cannot)g(exceed)h(the)g(maxim)m(um)e(p)s(ossible)h(v)-5
+b(alue)29 b(of)f(a)g(pun)m(yco)s(de)p 3246 3721 V 39
+w(uin)m(t,)h(ev)m(en)g(if)390 3831 y(the)i(supplied)e
+Fr(output_length)d Fx(is)31 b(greater)g(than)g(that.)390
+3957 y Fn(output)r Fx(:)40 b(An)28 b(arra)m(y)h(of)g(co)s(de)g(p)s(oin)
+m(ts)g(lik)m(e)h(the)f(input)f(argumen)m(t)h(of)g Fr
+(punycode_encode\(\))24 b Fx(\(see)390 4067 y(ab)s(o)m(v)m(e\).)390
+4193 y Fn(case)p 557 4193 V 41 w(\015ags)t Fx(:)49 b(A)35
+b Fr(NULL)e Fx(p)s(oin)m(ter)h(\(if)h(the)g(\015ags)f(are)h(not)g
+(needed)f(b)m(y)g(the)h(caller\))h(or)e(an)h(arra)m(y)g(of)390
+4303 y(b)s(o)s(olean)26 b(v)-5 b(alues)25 b(parallel)i(to)g(the)e
+Fr(output)f Fx(arra)m(y)-8 b(.)40 b(Nonzero)27 b(\(true,)g(\015agged\))
+f(suggests)h(that)f(the)390 4412 y(corresp)s(onding)37
+b(Unico)s(de)h(c)m(haracter)h(b)s(e)e(forced)h(to)g(upp)s(ercase)f(b)m
+(y)h(the)g(caller)h(\(if)f(p)s(ossible\),)390 4522 y(and)26
+b(zero)h(\(false,)h(un\015agged\))e(suggests)h(that)g(it)f(b)s(e)g
+(forced)g(to)h(lo)m(w)m(ercase)i(\(if)d(p)s(ossible\).)39
+b(ASCI)s(I)390 4631 y(co)s(de)33 b(p)s(oin)m(ts)f(\(0..7F\))j(are)e
+(output)g(already)g(in)f(the)h(prop)s(er)e(case,)k(but)d(their)h
+(\015ags)f(will)h(b)s(e)f(set)390 4741 y(appropriately)f(so)f(that)h
+(applying)f(the)h(\015ags)g(w)m(ould)f(b)s(e)f(harmless.)390
+4867 y(Con)m(v)m(erts)47 b(Pun)m(yco)s(de)g(to)g(a)h(sequence)f(of)g
+(co)s(de)g(p)s(oin)m(ts)f(\(presumed)g(to)i(b)s(e)e(Unico)s(de)h(co)s
+(de)390 4977 y(p)s(oin)m(ts\).)390 5103 y Fl(Return)34
+b(v)-5 b(alue:)49 b Fx(The)33 b(return)g(v)-5 b(alue)35
+b(can)g(b)s(e)e(an)m(y)i(of)f(the)h Fr(Punycode_status)30
+b Fx(v)-5 b(alues)34 b(de\014ned)390 5213 y(ab)s(o)m(v)m(e.)74
+b(If)41 b(not)h Fr(PUNYCODE_SUCCESS)p Fx(,)d(then)i Fr(output_length)p
+Fx(,)g Fr(output)p Fx(,)h(and)f Fr(case_flags)390 5322
+y Fx(migh)m(t)31 b(con)m(tain)h(garbage.)p eop end
+%%Page: 24 29
+TeXDict begin 24 28 bop 150 -116 a Fx(Chapter)30 b(5:)41
+b(Pun)m(yco)s(de)30 b(F)-8 b(unctions)2241 b(24)150 299
+y Fw(5.4)68 b(Error)45 b(Handling)150 523 y Fq(pun)m(yco)s(de)p
+668 523 37 5 v 54 w(strerror)3350 720 y Fx([F)-8 b(unction])-3599
+b Fp(const)54 b(char)f(*)g(punycode_strerror)e Fo(\()p
+Fn(Pun)m(yco)s(de)p 2194 720 28 4 v 40 w(status)30 b
+Fm(rc)12 b Fo(\))390 829 y Fn(rc)6 b Fx(:)40 b(an)30
+b Fr(Punycode_status)d Fx(return)i(co)s(de.)390 964 y(Con)m(v)m(ert)35
+b(a)f(return)e(co)s(de)i(in)m(teger)i(to)e(a)g(text)h(string.)51
+b(This)33 b(string)h(can)g(b)s(e)f(used)g(to)h(output)g(a)390
+1073 y(diagnostic)e(message)f(to)g(the)g(user.)390 1208
+y Fl(PUNYCODE)p 932 1208 28 5 v 39 w(SUCCESS:)k Fx(Successful)j(op)s
+(eration.)63 b(This)37 b(v)-5 b(alue)38 b(is)g(guaran)m(teed)h(to)f
+(alw)m(a)m(ys)390 1318 y(b)s(e)33 b(zero,)j(the)e(remaining)g(ones)g
+(are)g(only)g(guaran)m(teed)h(to)g(hold)e(non-zero)i(v)-5
+b(alues,)35 b(for)e(logical)390 1427 y(comparison)e(purp)s(oses.)390
+1562 y Fl(PUNYCODE)p 932 1562 V 39 w(BAD)p 1175 1562
+V 39 w(INPUT:)g Fx(Input)e(is)i(in)m(v)-5 b(alid.)390
+1696 y Fl(PUNYCODE)p 932 1696 V 39 w(BIG)p 1143 1696
+V 40 w(OUTPUT:)31 b Fx(Output)f(w)m(ould)g(exceed)h(the)g(space)g(pro)m
+(vided.)390 1831 y Fl(PUNYCODE)p 932 1831 V 39 w(O)m(VERFLO)m(W:)g
+Fx(Input)e(needs)h(wider)g(in)m(tegers)h(to)g(pro)s(cess.)390
+1965 y Fl(Return)e(v)-5 b(alue:)40 b Fx(Returns)29 b(a)g(p)s(oin)m(ter)
+h(to)g(a)f(statically)j(allo)s(cated)f(string)f(con)m(taining)h(a)e
+(descrip-)390 2075 y(tion)i(of)f(the)h(error)f(with)g(the)h(return)e
+(co)s(de)h Fr(rc)p Fx(.)p eop end
+%%Page: 25 30
+TeXDict begin 25 29 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(IDNA)31 b(F)-8 b(unctions)2390 b(25)150 299 y Fu(6)80
+b(IDNA)54 b(F)-13 b(unctions)150 580 y Fx(Un)m(til)30
+b(no)m(w,)g(there)f(has)g(b)s(een)f(no)h(standard)f(metho)s(d)h(for)g
+(domain)g(names)g(to)g(use)g(c)m(haracters)i(outside)150
+690 y(the)26 b(ASCI)s(I)f(rep)s(ertoire.)39 b(The)26
+b(IDNA)h(do)s(cumen)m(t)f(de\014nes)f(in)m(ternationalized)k(domain)d
+(names)g(\(IDNs\))150 799 y(and)d(a)g(mec)m(hanism)h(called)g(IDNA)g
+(for)f(handling)f(them)h(in)g(a)h(standard)e(fashion.)38
+b(IDNs)24 b(use)e(c)m(haracters)150 909 y(dra)m(wn)28
+b(from)h(a)h(large)g(rep)s(ertoire)f(\(Unico)s(de\),)i(but)d(IDNA)i
+(allo)m(ws)g(the)g(non-ASCI)s(I)d(c)m(haracters)k(to)f(b)s(e)150
+1018 y(represen)m(ted)e(using)f(only)h(the)g(ASCI)s(I)e(c)m(haracters)k
+(already)e(allo)m(w)m(ed)i(in)d(so-called)j(host)e(names)g(to)s(da)m(y)
+-8 b(.)150 1128 y(This)26 b(bac)m(kw)m(ard-compatible)i(represen)m
+(tation)f(is)g(required)e(in)h(existing)h(proto)s(cols)h(lik)m(e)f
+(DNS,)g(so)f(that)150 1238 y(IDNs)f(can)h(b)s(e)e(in)m(tro)s(duced)h
+(with)g(no)g(c)m(hanges)h(to)g(the)f(existing)h(infrastructure.)38
+b(IDNA)26 b(is)f(only)g(mean)m(t)150 1347 y(for)30 b(pro)s(cessing)g
+(domain)h(names,)f(not)h(free)f(text.)150 1603 y Fw(6.1)68
+b(Header)46 b(\014le)f Fj(idna.h)150 1763 y Fx(T)-8 b(o)31
+b(use)f(the)g(functions)g(explained)h(in)f(this)g(c)m(hapter,)i(y)m(ou)
+e(need)g(to)i(include)e(the)g(\014le)h(`)p Fr(idna.h)p
+Fx(')e(using:)390 1913 y Fr(#include)46 b(<idna.h>)150
+2169 y Fw(6.2)68 b(Con)l(trol)46 b(Flags)150 2328 y Fx(The)32
+b(IDNA)h Fr(flags)e Fx(parameter)j(can)f(tak)m(e)h(on)e(the)h(follo)m
+(wing)h(v)-5 b(alues,)34 b(or)f(a)g(bit-wise)g(inclusiv)m(e)g(or)g(of)
+150 2438 y(an)m(y)e(subset)f(of)g(the)h(parameters:)3211
+2653 y([Return)e(co)s(de])-3599 b Fp(Idna_flags)55 b
+(IDNA_ALLOW_UNASSIGNED)390 2763 y Fx(Allo)m(w)32 b(unassigned)d(Unico)s
+(de)i(co)s(de)f(p)s(oin)m(ts.)3211 2979 y([Return)f(co)s(de])-3599
+b Fp(Idna_flags)55 b(IDNA_USE_STD3_ASCII_R)q(ULE)q(S)390
+3088 y Fx(Chec)m(k)31 b(output)f(to)h(mak)m(e)g(sure)f(it)h(is)f(a)h
+(STD3)f(conforming)h(host)f(name.)150 3344 y Fw(6.3)68
+b(Pre\014x)45 b(String)3449 3569 y Fx([Macro])-3598 b
+Fp(#define)54 b(IDNA_ACE_PREFIX)390 3679 y Fx(String)30
+b(with)g(the)h(o\016cial)g(IDNA)g(pre\014x,)f Fr(xn--)p
+Fx(.)150 3935 y Fw(6.4)68 b(Core)46 b(F)-11 b(unctions)150
+4094 y Fx(The)22 b(idea)g(b)s(ehind)f(the)h(IDNA)h(function)f(names)g
+(are)g(as)h(follo)m(ws:)38 b(the)22 b Fr(idna_to_ascii_4i)c
+Fx(and)j Fr(idna_)150 4204 y(to_unicode_44i)26 b Fx(functions)j(are)h
+(the)g(core)g(IDNA)h(primitiv)m(es.)41 b(The)29 b Fr(4)g
+Fx(indicate)i(that)f(the)g(function)150 4313 y(tak)m(es)e(UCS-4)f
+(strings)g(\(i.e.,)i(Unico)s(de)e(co)s(de)g(p)s(oin)m(ts)f(enco)s(ded)h
+(in)f(a)i(32-bit)g(unsigned)d(in)m(teger)j(t)m(yp)s(e\))g(of)150
+4423 y(the)k(sp)s(eci\014ed)g(length.)46 b(The)32 b Fr(i)f
+Fx(indicate)i(that)g(the)f(data)h(is)f(written)g(\\inline")i(in)m(to)f
+(the)f(bu\013er.)45 b(This)150 4532 y(means)35 b(the)h(caller)g(is)g
+(resp)s(onsible)e(for)h(allo)s(cating)j(\(and)d(deallo)s(cating\))j
+(the)d(string,)i(and)e(pro)m(viding)150 4642 y(the)40
+b(library)f(with)h(the)g(allo)s(cated)i(length)e(of)g(the)g(string.)69
+b(The)40 b(output)f(length)h(is)g(written)g(in)g(the)150
+4751 y(output)33 b(length)h(v)-5 b(ariable.)51 b(The)33
+b(remaining)h(functions)f(all)i(con)m(tain)f(the)g Fr(z)f
+Fx(indicator,)j(whic)m(h)d(means)150 4861 y(the)h(strings)g(are)g(zero)
+h(terminated.)52 b(All)34 b(output)g(strings)g(are)g(allo)s(cated)i(b)m
+(y)e(the)g(library)-8 b(,)35 b(and)e(m)m(ust)150 4971
+y(b)s(e)k(deallo)s(cated)i(b)m(y)f(the)f(caller.)64 b(The)37
+b Fr(4)g Fx(indicator)h(again)h(means)e(that)h(the)g(string)g(is)f
+(UCS-4,)j(the)150 5080 y Fr(8)35 b Fx(means)h(the)f(strings)h(are)g
+(UTF-8)g(and)f(the)h Fr(l)f Fx(indicator)h(means)f(the)h(strings)f(are)
+h(enco)s(ded)g(in)f(the)150 5190 y(enco)s(ding)30 b(used)g(b)m(y)g(the)
+h(curren)m(t)f(lo)s(cale.)275 5340 y(The)f(functions)h(pro)m(vided)g
+(are)h(the)g(follo)m(wing)g(en)m(try)g(p)s(oin)m(ts:)p
+eop end
+%%Page: 26 31
+TeXDict begin 26 30 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(IDNA)31 b(F)-8 b(unctions)2390 b(26)150 299 y Fq(idna)p
+389 299 37 5 v 54 w(to)p 552 299 V 54 w(ascii)p 837 299
+V 54 w(4i)3350 487 y Fx([F)-8 b(unction])-3599 b Fp(int)53
+b(idna_to_ascii_4i)e Fo(\()p Fn(const)31 b(uin)m(t32)p
+1770 487 28 4 v 41 w(t)f(*)h Fm(in)12 b Fn(,)31 b(size)p
+2265 487 V 41 w(t)f Fm(inlen)12 b Fn(,)32 b(c)m(har)f(*)g
+Fm(out)12 b Fn(,)565 597 y(in)m(t)31 b Fm(flags)12 b
+Fo(\))390 706 y Fn(in)p Fx(:)40 b(input)30 b(arra)m(y)h(with)f(unico)s
+(de)g(co)s(de)g(p)s(oin)m(ts.)390 837 y Fn(inlen)p Fx(:)41
+b(length)30 b(of)h(input)e(arra)m(y)i(with)f(unico)s(de)g(co)s(de)h(p)s
+(oin)m(ts.)390 967 y Fn(out)r Fx(:)54 b(output)37 b(zero)h(terminated)g
+(string)f(that)g(m)m(ust)g(ha)m(v)m(e)i(ro)s(om)d(for)h(at)h(least)h
+(63)e(c)m(haracters)390 1076 y(plus)29 b(the)i(terminating)g(zero.)390
+1207 y Fn(\015ags)t Fx(:)91 b(an)56 b Fr(Idna_flags)d
+Fx(v)-5 b(alue,)63 b(e.g.,)g Fr(IDNA_ALLOW_UNASSIGNED)50
+b Fx(or)56 b Fr(IDNA_USE_STD3_)390 1316 y(ASCII_RULES)p
+Fx(.)390 1446 y(The)34 b(T)-8 b(oASCI)s(I)33 b(op)s(eration)i(tak)m(es)
+h(a)f(sequence)g(of)f(Unico)s(de)h(co)s(de)g(p)s(oin)m(ts)f(that)h(mak)
+m(e)g(up)f(one)390 1556 y(domain)k(lab)s(el)h(and)e(transforms)h(it)g
+(in)m(to)i(a)e(sequence)h(of)f(co)s(de)h(p)s(oin)m(ts)f(in)g(the)g
+(ASCI)s(I)f(range)390 1666 y(\(0..7F\).)42 b(If)c(T)-8
+b(oASCI)s(I)38 b(succeeds,)k(the)d(original)i(sequence)e(and)g(the)g
+(resulting)g(sequence)h(are)390 1775 y(equiv)-5 b(alen)m(t)32
+b(lab)s(els.)390 1905 y(It)26 b(is)f(imp)s(ortan)m(t)h(to)g(note)h
+(that)f(the)g(T)-8 b(oASCI)s(I)24 b(op)s(eration)i(can)g(fail.)40
+b(T)-8 b(oASCI)s(I)24 b(fails)i(if)g(an)m(y)g(step)390
+2015 y(of)j(it)h(fails.)41 b(If)29 b(an)m(y)h(step)f(of)g(the)h(T)-8
+b(oASCI)s(I)28 b(op)s(eration)i(fails)g(on)f(an)m(y)g(lab)s(el)h(in)f
+(a)g(domain)h(name,)390 2125 y(that)k(domain)f(name)h(MUST)f(NOT)g(b)s
+(e)g(used)f(as)i(an)f(in)m(ternationalized)j(domain)d(name.)50
+b(The)390 2234 y(metho)s(d)30 b(for)g(deadling)h(with)f(this)g(failure)
+g(is)h(application-sp)s(eci\014c.)390 2364 y(The)d(inputs)f(to)j(T)-8
+b(oASCI)s(I)27 b(are)i(a)g(sequence)g(of)f(co)s(de)h(p)s(oin)m(ts,)g
+(the)f(Allo)m(wUnassigned)i(\015ag,)g(and)390 2474 y(the)f(UseSTD3ASCI)
+s(IRules)f(\015ag.)41 b(The)29 b(output)g(of)g(T)-8 b(oASCI)s(I)28
+b(is)h(either)h(a)g(sequence)f(of)g(ASCI)s(I)390 2584
+y(co)s(de)i(p)s(oin)m(ts)f(or)g(a)h(failure)g(condition.)390
+2714 y(T)-8 b(oASCI)s(I)36 b(nev)m(er)h(alters)g(a)g(sequence)g(of)g
+(co)s(de)g(p)s(oin)m(ts)g(that)g(are)g(all)h(in)e(the)h(ASCI)s(I)e
+(range)i(to)390 2823 y(b)s(egin)32 b(with)g(\(although)h(it)f(could)g
+(fail\).)48 b(Applying)31 b(the)i(T)-8 b(oASCI)s(I)31
+b(op)s(eration)i(m)m(ultiple)f(times)390 2933 y(has)e(exactly)i(the)f
+(same)g(e\013ect)g(as)g(applying)f(it)h(just)f(once.)390
+3063 y Fl(Return)g(v)-5 b(alue:)41 b Fx(Returns)30 b(0)g(on)h(success,)
+f(or)h(an)f Fr(Idna_rc)e Fx(error)i(co)s(de.)150 3254
+y Fq(idna)p 389 3254 37 5 v 54 w(to)p 552 3254 V 54 w(unico)s(de)p
+1019 3254 V 55 w(44i)3350 3442 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(idna_to_unicode_44i)e Fo(\()p Fn(const)32
+b(uin)m(t32)p 1927 3442 28 4 v 41 w(t)e(*)h Fm(in)12
+b Fn(,)31 b(size)p 2422 3442 V 41 w(t)f Fm(inlen)12 b
+Fn(,)32 b(uin)m(t32)p 3106 3442 V 41 w(t)565 3552 y(*)f
+Fm(out)12 b Fn(,)31 b(size)p 1012 3552 V 41 w(t)f(*)h
+Fm(outlen)12 b Fn(,)32 b(in)m(t)f Fm(flags)12 b Fo(\))390
+3661 y Fn(in)p Fx(:)40 b(input)30 b(arra)m(y)h(with)f(unico)s(de)g(co)s
+(de)g(p)s(oin)m(ts.)390 3791 y Fn(inlen)p Fx(:)41 b(length)30
+b(of)h(input)e(arra)m(y)i(with)f(unico)s(de)g(co)s(de)h(p)s(oin)m(ts.)
+390 3922 y Fn(out)r Fx(:)41 b(output)30 b(arra)m(y)h(with)f(unico)s(de)
+g(co)s(de)g(p)s(oin)m(ts.)390 4052 y Fn(outlen)p Fx(:)50
+b(on)35 b(input,)g(maxim)m(um)g(size)h(of)f(output)f(arra)m(y)i(with)e
+(unico)s(de)h(co)s(de)g(p)s(oin)m(ts,)h(on)f(exit,)390
+4162 y(actual)d(size)f(of)f(output)g(arra)m(y)h(with)f(unico)s(de)g(co)
+s(de)h(p)s(oin)m(ts.)390 4292 y Fn(\015ags)t Fx(:)91
+b(an)56 b Fr(Idna_flags)d Fx(v)-5 b(alue,)63 b(e.g.,)g
+Fr(IDNA_ALLOW_UNASSIGNED)50 b Fx(or)56 b Fr(IDNA_USE_STD3_)390
+4401 y(ASCII_RULES)p Fx(.)390 4532 y(The)28 b(T)-8 b(oUnico)s(de)30
+b(op)s(eration)g(tak)m(es)g(a)f(sequence)h(of)f(Unico)s(de)g(co)s(de)g
+(p)s(oin)m(ts)g(that)h(mak)m(e)g(up)e(one)390 4641 y(domain)g(lab)s(el)
+h(and)e(returns)g(a)i(sequence)f(of)g(Unico)s(de)h(co)s(de)f(p)s(oin)m
+(ts.)40 b(If)28 b(the)g(input)f(sequence)i(is)390 4751
+y(a)35 b(lab)s(el)f(in)g(A)m(CE)h(form,)g(then)f(the)g(result)g(is)h
+(an)f(equiv)-5 b(alen)m(t)36 b(in)m(ternationalized)g(lab)s(el)f(that)g
+(is)390 4860 y(not)c(in)f(A)m(CE)g(form,)g(otherwise)h(the)g(original)g
+(sequence)g(is)f(returned)g(unaltered.)390 4991 y(T)-8
+b(oUnico)s(de)33 b(nev)m(er)f(fails.)46 b(If)31 b(an)m(y)h(step)g
+(fails,)h(then)f(the)g(original)h(input)e(sequence)h(is)g(returned)390
+5100 y(immediately)g(in)e(that)h(step.)390 5230 y(The)51
+b(Pun)m(yco)s(de)g(deco)s(der)g(can)h(nev)m(er)g(output)f(more)g(co)s
+(de)h(p)s(oin)m(ts)f(than)h(it)g(inputs,)k(but)390 5340
+y(Nameprep)27 b(can,)i(and)e(therefore)g(T)-8 b(oUnico)s(de)28
+b(can.)41 b(Note)28 b(that)g(the)g(n)m(um)m(b)s(er)e(of)i(o)s(ctets)g
+(needed)p eop end
+%%Page: 27 32
+TeXDict begin 27 31 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(IDNA)31 b(F)-8 b(unctions)2390 b(27)390 299 y(to)32
+b(represen)m(t)g(a)g(sequence)g(of)g(co)s(de)g(p)s(oin)m(ts)f(dep)s
+(ends)f(on)i(the)g(particular)g(c)m(haracter)h(enco)s(ding)390
+408 y(used.)390 543 y(The)k(inputs)f(to)h(T)-8 b(oUnico)s(de)38
+b(are)g(a)f(sequence)g(of)h(co)s(de)f(p)s(oin)m(ts,)i(the)e(Allo)m
+(wUnassigned)h(\015ag,)390 653 y(and)29 b(the)g(UseSTD3ASCI)s(IRules)g
+(\015ag.)40 b(The)29 b(output)g(of)h(T)-8 b(oUnico)s(de)30
+b(is)f(alw)m(a)m(ys)i(a)f(sequence)g(of)390 763 y(Unico)s(de)h(co)s(de)
+f(p)s(oin)m(ts.)390 898 y Fl(Return)g(v)-5 b(alue:)40
+b Fx(Returns)29 b Fr(Idna_rc)f Fx(error)i(condition,)h(but)e(it)h(m)m
+(ust)g(only)g(b)s(e)g(used)f(for)g(debug-)390 1007 y(ging)37
+b(purp)s(oses.)58 b(The)36 b(output)g(bu\013er)f(is)i(alw)m(a)m(ys)h
+(guaran)m(teed)g(to)f(con)m(tain)h(the)f(correct)g(data)390
+1117 y(according)28 b(to)g(the)f(sp)s(eci\014cation)g(\(sans)g(mallo)s
+(c)h(induced)e(errors\).)39 b(NB!)28 b(This)e(means)h(that)h(y)m(ou)390
+1226 y(normally)e(ignore)h(the)f(return)f(co)s(de)h(from)f(this)h
+(function,)h(as)f(c)m(hec)m(king)h(it)g(means)f(breaking)g(the)390
+1336 y(standard.)150 1569 y Fw(6.5)68 b(Simpli\014ed)45
+b(T)-11 b(oASCI)t(I)44 b(In)l(terface)150 1793 y Fq(idna)p
+389 1793 37 5 v 54 w(to)p 552 1793 V 54 w(ascii)p 837
+1793 V 54 w(4z)3350 1991 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(idna_to_ascii_4z)e Fo(\()p Fn(const)31
+b(uin)m(t32)p 1770 1991 28 4 v 41 w(t)f(*)h Fm(input)12
+b Fn(,)32 b(c)m(har)f(**)g Fm(output)12 b Fn(,)32 b(in)m(t)565
+2100 y Fm(flags)12 b Fo(\))390 2210 y Fn(input)r Fx(:)40
+b(zero)31 b(terminated)g(input)e(Unico)s(de)i(string.)390
+2345 y Fn(output)r Fx(:)40 b(p)s(oin)m(ter)31 b(to)g(newly)f(allo)s
+(cated)i(output)e(string.)390 2480 y Fn(\015ags)t Fx(:)91
+b(an)56 b Fr(Idna_flags)d Fx(v)-5 b(alue,)63 b(e.g.,)g
+Fr(IDNA_ALLOW_UNASSIGNED)50 b Fx(or)56 b Fr(IDNA_USE_STD3_)390
+2589 y(ASCII_RULES)p Fx(.)390 2724 y(Con)m(v)m(ert)25
+b(UCS-4)g(domain)f(name)g(to)h(ASCI)s(I)e(string.)39
+b(The)23 b(domain)i(name)f(ma)m(y)h(con)m(tain)h(sev)m(eral)390
+2834 y(lab)s(els,)31 b(separated)g(b)m(y)f(dots.)41 b(The)30
+b(output)g(bu\013er)f(m)m(ust)h(b)s(e)g(deallo)s(cated)i(b)m(y)e(the)h
+(caller.)390 2969 y Fl(Return)f(v)-5 b(alue:)41 b Fx(Returns)30
+b Fr(IDNA_SUCCESS)d Fx(on)j(success,)h(or)f(error)g(co)s(de.)150
+3169 y Fq(idna)p 389 3169 37 5 v 54 w(to)p 552 3169 V
+54 w(ascii)p 837 3169 V 54 w(8z)3350 3366 y Fx([F)-8
+b(unction])-3599 b Fp(int)53 b(idna_to_ascii_8z)e Fo(\()p
+Fn(const)31 b(c)m(har)g(*)f Fm(input)12 b Fn(,)32 b(c)m(har)f(**)g
+Fm(output)12 b Fn(,)32 b(in)m(t)565 3476 y Fm(flags)12
+b Fo(\))390 3585 y Fn(input)r Fx(:)40 b(zero)31 b(terminated)g(input)e
+(UTF-8)i(string.)390 3720 y Fn(output)r Fx(:)40 b(p)s(oin)m(ter)31
+b(to)g(newly)f(allo)s(cated)i(output)e(string.)390 3855
+y Fn(\015ags)t Fx(:)91 b(an)56 b Fr(Idna_flags)d Fx(v)-5
+b(alue,)63 b(e.g.,)g Fr(IDNA_ALLOW_UNASSIGNED)50 b Fx(or)56
+b Fr(IDNA_USE_STD3_)390 3965 y(ASCII_RULES)p Fx(.)390
+4100 y(Con)m(v)m(ert)24 b(UTF-8)h(domain)e(name)h(to)g(ASCI)s(I)e
+(string.)38 b(The)24 b(domain)f(name)h(ma)m(y)g(con)m(tain)h(sev)m
+(eral)390 4209 y(lab)s(els,)31 b(separated)g(b)m(y)f(dots.)41
+b(The)30 b(output)g(bu\013er)f(m)m(ust)h(b)s(e)g(deallo)s(cated)i(b)m
+(y)e(the)h(caller.)390 4344 y Fl(Return)f(v)-5 b(alue:)41
+b Fx(Returns)30 b Fr(IDNA_SUCCESS)d Fx(on)j(success,)h(or)f(error)g(co)
+s(de.)150 4544 y Fq(idna)p 389 4544 V 54 w(to)p 552 4544
+V 54 w(ascii)p 837 4544 V 54 w(lz)3350 4741 y Fx([F)-8
+b(unction])-3599 b Fp(int)53 b(idna_to_ascii_lz)e Fo(\()p
+Fn(const)31 b(c)m(har)g(*)f Fm(input)12 b Fn(,)32 b(c)m(har)f(**)g
+Fm(output)12 b Fn(,)32 b(in)m(t)565 4851 y Fm(flags)12
+b Fo(\))390 4960 y Fn(input)r Fx(:)40 b(zero)31 b(terminated)g(input)e
+(string)i(enco)s(ded)f(in)g(the)g(curren)m(t)g(lo)s(cale's)j(c)m
+(haracter)f(set.)390 5095 y Fn(output)r Fx(:)40 b(p)s(oin)m(ter)31
+b(to)g(newly)f(allo)s(cated)i(output)e(string.)390 5230
+y Fn(\015ags)t Fx(:)91 b(an)56 b Fr(Idna_flags)d Fx(v)-5
+b(alue,)63 b(e.g.,)g Fr(IDNA_ALLOW_UNASSIGNED)50 b Fx(or)56
+b Fr(IDNA_USE_STD3_)390 5340 y(ASCII_RULES)p Fx(.)p eop
+end
+%%Page: 28 33
+TeXDict begin 28 32 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(IDNA)31 b(F)-8 b(unctions)2390 b(28)390 299 y(Con)m(v)m(ert)37
+b(domain)f(name)g(in)f(the)h(lo)s(cale's)i(enco)s(ding)e(to)h(ASCI)s(I)
+d(string.)58 b(The)35 b(domain)h(name)390 408 y(ma)m(y)27
+b(con)m(tain)g(sev)m(eral)h(lab)s(els,)f(separated)g(b)m(y)f(dots.)39
+b(The)26 b(output)f(bu\013er)h(m)m(ust)g(b)s(e)f(deallo)s(cated)390
+518 y(b)m(y)30 b(the)h(caller.)390 651 y Fl(Return)f(v)-5
+b(alue:)41 b Fx(Returns)30 b Fr(IDNA_SUCCESS)d Fx(on)j(success,)h(or)f
+(error)g(co)s(de.)150 881 y Fw(6.6)68 b(Simpli\014ed)45
+b(T)-11 b(oUnico)t(de)45 b(In)l(terface)150 1104 y Fq(idna)p
+389 1104 37 5 v 54 w(to)p 552 1104 V 54 w(unico)s(de)p
+1019 1104 V 55 w(4z4z)3350 1298 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(idna_to_unicode_4z4z)f Fo(\()p Fn(const)31
+b(uin)m(t32)p 1979 1298 28 4 v 41 w(t)g(*)f Fm(input)12
+b Fn(,)32 b(uin)m(t32)p 2739 1298 V 41 w(t)f(**)565 1408
+y Fm(output)12 b Fn(,)32 b(in)m(t)f Fm(flags)12 b Fo(\))390
+1517 y Fn(input)r Fx(:)40 b(zero-terminated)32 b(Unico)s(de)e(string.)
+390 1651 y Fn(output)r Fx(:)40 b(p)s(oin)m(ter)31 b(to)g(newly)f(allo)s
+(cated)i(output)e(Unico)s(de)h(string.)390 1784 y Fn(\015ags)t
+Fx(:)91 b(an)56 b Fr(Idna_flags)d Fx(v)-5 b(alue,)63
+b(e.g.,)g Fr(IDNA_ALLOW_UNASSIGNED)50 b Fx(or)56 b Fr(IDNA_USE_STD3_)
+390 1893 y(ASCII_RULES)p Fx(.)390 2027 y(Con)m(v)m(ert)34
+b(p)s(ossibly)d(A)m(CE)i(enco)s(ded)g(domain)f(name)h(in)f(UCS-4)h
+(format)g(in)m(to)h(a)f(UCS-4)g(string.)390 2136 y(The)f(domain)g(name)
+g(ma)m(y)h(con)m(tain)g(sev)m(eral)h(lab)s(els,)f(separated)g(b)m(y)f
+(dots.)46 b(The)32 b(output)g(bu\013er)390 2246 y(m)m(ust)e(b)s(e)g
+(deallo)s(cated)i(b)m(y)f(the)f(caller.)390 2379 y Fl(Return)g(v)-5
+b(alue:)41 b Fx(Returns)30 b Fr(IDNA_SUCCESS)d Fx(on)j(success,)h(or)f
+(error)g(co)s(de.)150 2576 y Fq(idna)p 389 2576 37 5
+v 54 w(to)p 552 2576 V 54 w(unico)s(de)p 1019 2576 V
+55 w(8z4z)3350 2770 y Fx([F)-8 b(unction])-3599 b Fp(int)53
+b(idna_to_unicode_8z4z)f Fo(\()p Fn(const)31 b(c)m(har)g(*)f
+Fm(input)12 b Fn(,)32 b(uin)m(t32)p 2583 2770 28 4 v
+41 w(t)f(**)g Fm(output)12 b Fn(,)565 2879 y(in)m(t)31
+b Fm(flags)12 b Fo(\))390 2989 y Fn(input)r Fx(:)40 b(zero-terminated)
+32 b(UTF-8)f(string.)390 3122 y Fn(output)r Fx(:)40 b(p)s(oin)m(ter)31
+b(to)g(newly)f(allo)s(cated)i(output)e(Unico)s(de)h(string.)390
+3255 y Fn(\015ags)t Fx(:)91 b(an)56 b Fr(Idna_flags)d
+Fx(v)-5 b(alue,)63 b(e.g.,)g Fr(IDNA_ALLOW_UNASSIGNED)50
+b Fx(or)56 b Fr(IDNA_USE_STD3_)390 3365 y(ASCII_RULES)p
+Fx(.)390 3498 y(Con)m(v)m(ert)33 b(p)s(ossibly)e(A)m(CE)h(enco)s(ded)g
+(domain)f(name)i(in)e(UTF-8)i(format)f(in)m(to)h(a)g(UCS-4)f(string.)
+390 3608 y(The)g(domain)g(name)g(ma)m(y)h(con)m(tain)g(sev)m(eral)h
+(lab)s(els,)f(separated)g(b)m(y)f(dots.)46 b(The)32 b(output)g
+(bu\013er)390 3717 y(m)m(ust)e(b)s(e)g(deallo)s(cated)i(b)m(y)f(the)f
+(caller.)390 3851 y Fl(Return)g(v)-5 b(alue:)41 b Fx(Returns)30
+b Fr(IDNA_SUCCESS)d Fx(on)j(success,)h(or)f(error)g(co)s(de.)150
+4047 y Fq(idna)p 389 4047 37 5 v 54 w(to)p 552 4047 V
+54 w(unico)s(de)p 1019 4047 V 55 w(8z8z)3350 4242 y Fx([F)-8
+b(unction])-3599 b Fp(int)53 b(idna_to_unicode_8z8z)f
+Fo(\()p Fn(const)31 b(c)m(har)g(*)f Fm(input)12 b Fn(,)32
+b(c)m(har)f(**)g Fm(output)12 b Fn(,)32 b(in)m(t)565
+4351 y Fm(flags)12 b Fo(\))390 4461 y Fn(input)r Fx(:)40
+b(zero-terminated)32 b(UTF-8)f(string.)390 4594 y Fn(output)r
+Fx(:)40 b(p)s(oin)m(ter)31 b(to)g(newly)f(allo)s(cated)i(output)e
+(UTF-8)h(string.)390 4727 y Fn(\015ags)t Fx(:)91 b(an)56
+b Fr(Idna_flags)d Fx(v)-5 b(alue,)63 b(e.g.,)g Fr
+(IDNA_ALLOW_UNASSIGNED)50 b Fx(or)56 b Fr(IDNA_USE_STD3_)390
+4837 y(ASCII_RULES)p Fx(.)390 4970 y(Con)m(v)m(ert)32
+b(p)s(ossibly)e(A)m(CE)i(enco)s(ded)f(domain)g(name)g(in)g(UTF-8)h
+(format)g(in)m(to)g(a)g(UTF-8)g(string.)390 5080 y(The)g(domain)g(name)
+g(ma)m(y)h(con)m(tain)g(sev)m(eral)h(lab)s(els,)f(separated)g(b)m(y)f
+(dots.)46 b(The)32 b(output)g(bu\013er)390 5189 y(m)m(ust)e(b)s(e)g
+(deallo)s(cated)i(b)m(y)f(the)f(caller.)390 5322 y Fl(Return)g(v)-5
+b(alue:)41 b Fx(Returns)30 b Fr(IDNA_SUCCESS)d Fx(on)j(success,)h(or)f
+(error)g(co)s(de.)p eop end
+%%Page: 29 34
+TeXDict begin 29 33 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(IDNA)31 b(F)-8 b(unctions)2390 b(29)150 299 y Fq(idna)p
+389 299 37 5 v 54 w(to)p 552 299 V 54 w(unico)s(de)p
+1019 299 V 55 w(8zlz)3350 491 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(idna_to_unicode_8zlz)f Fo(\()p Fn(const)31
+b(c)m(har)g(*)f Fm(input)12 b Fn(,)32 b(c)m(har)f(**)g
+Fm(output)12 b Fn(,)32 b(in)m(t)565 600 y Fm(flags)12
+b Fo(\))390 710 y Fn(input)r Fx(:)40 b(zero-terminated)32
+b(UTF-8)f(string.)390 842 y Fn(output)r Fx(:)71 b(p)s(oin)m(ter)45
+b(to)h(newly)g(allo)s(cated)h(output)e(string)h(enco)s(ded)f(in)g(the)h
+(curren)m(t)f(lo)s(cale's)390 952 y(c)m(haracter)32 b(set.)390
+1084 y Fn(\015ags)t Fx(:)91 b(an)56 b Fr(Idna_flags)d
+Fx(v)-5 b(alue,)63 b(e.g.,)g Fr(IDNA_ALLOW_UNASSIGNED)50
+b Fx(or)56 b Fr(IDNA_USE_STD3_)390 1193 y(ASCII_RULES)p
+Fx(.)390 1325 y(Con)m(v)m(ert)30 b(p)s(ossibly)e(A)m(CE)h(enco)s(ded)g
+(domain)g(name)g(in)g(UTF-8)g(format)h(in)m(to)g(a)f(string)g(enco)s
+(ded)390 1435 y(in)35 b(the)h(curren)m(t)f(lo)s(cale's)i(c)m(haracter)g
+(set.)57 b(The)35 b(domain)g(name)h(ma)m(y)g(con)m(tain)h(sev)m(eral)f
+(lab)s(els,)390 1545 y(separated)31 b(b)m(y)f(dots.)41
+b(The)30 b(output)g(bu\013er)f(m)m(ust)h(b)s(e)g(deallo)s(cated)i(b)m
+(y)f(the)f(caller.)390 1677 y Fl(Return)g(v)-5 b(alue:)41
+b Fx(Returns)30 b Fr(IDNA_SUCCESS)d Fx(on)j(success,)h(or)f(error)g(co)
+s(de.)150 1871 y Fq(idna)p 389 1871 V 54 w(to)p 552 1871
+V 54 w(unico)s(de)p 1019 1871 V 55 w(lzlz)3350 2063 y
+Fx([F)-8 b(unction])-3599 b Fp(int)53 b(idna_to_unicode_lzlz)f
+Fo(\()p Fn(const)31 b(c)m(har)g(*)f Fm(input)12 b Fn(,)32
+b(c)m(har)f(**)g Fm(output)12 b Fn(,)32 b(in)m(t)565
+2173 y Fm(flags)12 b Fo(\))390 2282 y Fn(input)r Fx(:)40
+b(zero-terminated)32 b(string)e(enco)s(ded)g(in)g(the)h(curren)m(t)f
+(lo)s(cale's)i(c)m(haracter)g(set.)390 2414 y Fn(output)r
+Fx(:)71 b(p)s(oin)m(ter)45 b(to)h(newly)g(allo)s(cated)h(output)e
+(string)h(enco)s(ded)f(in)g(the)h(curren)m(t)f(lo)s(cale's)390
+2524 y(c)m(haracter)32 b(set.)390 2656 y Fn(\015ags)t
+Fx(:)91 b(an)56 b Fr(Idna_flags)d Fx(v)-5 b(alue,)63
+b(e.g.,)g Fr(IDNA_ALLOW_UNASSIGNED)50 b Fx(or)56 b Fr(IDNA_USE_STD3_)
+390 2765 y(ASCII_RULES)p Fx(.)390 2898 y(Con)m(v)m(ert)25
+b(p)s(ossibly)e(A)m(CE)h(enco)s(ded)g(domain)g(name)g(in)g(the)g(lo)s
+(cale's)i(c)m(haracter)g(set)e(in)m(to)h(a)g(string)390
+3007 y(enco)s(ded)30 b(in)g(the)h(curren)m(t)f(lo)s(cale's)i(c)m
+(haracter)g(set.)42 b(The)30 b(domain)g(name)h(ma)m(y)g(con)m(tain)h
+(sev)m(eral)390 3117 y(lab)s(els,)f(separated)g(b)m(y)f(dots.)41
+b(The)30 b(output)g(bu\013er)f(m)m(ust)h(b)s(e)g(deallo)s(cated)i(b)m
+(y)e(the)h(caller.)390 3249 y Fl(Return)f(v)-5 b(alue:)41
+b Fx(Returns)30 b Fr(IDNA_SUCCESS)d Fx(on)j(success,)h(or)f(error)g(co)
+s(de.)150 3476 y Fw(6.7)68 b(Error)45 b(Handling)150
+3698 y Fq(idna)p 389 3698 V 54 w(strerror)3350 3890 y
+Fx([F)-8 b(unction])-3599 b Fp(const)54 b(char)f(*)g(idna_strerror)c
+Fo(\()p Fn(Idna)p 1776 3890 28 4 v 40 w(rc)30 b Fm(rc)12
+b Fo(\))390 4000 y Fn(rc)6 b Fx(:)40 b(an)30 b Fr(Idna_rc)f
+Fx(return)g(co)s(de.)390 4132 y(Con)m(v)m(ert)35 b(a)f(return)e(co)s
+(de)i(in)m(teger)i(to)e(a)g(text)h(string.)51 b(This)33
+b(string)h(can)g(b)s(e)f(used)g(to)h(output)g(a)390 4241
+y(diagnostic)e(message)f(to)g(the)g(user.)390 4373 y
+Fl(IDNA)p 642 4373 28 5 v 40 w(SUCCESS:)e Fx(Successful)j(op)s
+(eration.)47 b(This)31 b(v)-5 b(alue)33 b(is)f(guaran)m(teed)i(to)f
+(alw)m(a)m(ys)g(b)s(e)f(zero,)390 4483 y(the)23 b(remaining)f(ones)h
+(are)g(only)g(guaran)m(teed)g(to)g(hold)g(non-zero)g(v)-5
+b(alues,)24 b(for)f(logical)i(comparison)390 4593 y(purp)s(oses.)390
+4725 y Fl(IDNA)p 642 4725 V 40 w(STRINGPREP)p 1296 4725
+V 40 w(ERR)m(OR:)31 b Fx(Error)f(during)f(string)h(preparation.)390
+4857 y Fl(IDNA)p 642 4857 V 40 w(PUNYCODE)p 1218 4857
+V 39 w(ERR)m(OR:)h Fx(Error)e(during)g(pun)m(yco)s(de)h(op)s(eration.)
+390 4989 y Fl(IDNA)p 642 4989 V 40 w(CONT)-8 b(AINS)p
+1169 4989 V 40 w(NON)p 1419 4989 V 40 w(LDH:)80 b Fx(F)-8
+b(or)81 b(IDNA)p 2211 4989 28 4 v 41 w(USE)p 2433 4989
+V 39 w(STD3)p 2703 4989 V 40 w(ASCI)s(I)p 2997 4989 V
+39 w(R)m(ULES,)f(indicate)390 5098 y(that)31 b(the)g(string)f(con)m
+(tains)h(non-LDH)g(ASCI)s(I)e(c)m(haracters.)390 5230
+y Fl(IDNA)p 642 5230 28 5 v 40 w(CONT)-8 b(AINS)p 1169
+5230 V 40 w(MINUS:)52 b Fx(F)-8 b(or)52 b(IDNA)p 2022
+5230 28 4 v 40 w(USE)p 2243 5230 V 40 w(STD3)p 2514 5230
+V 40 w(ASCI)s(I)p 2808 5230 V 39 w(R)m(ULES,)f(indicate)h(that)390
+5340 y(the)31 b(string)f(con)m(tains)h(a)g(leading)g(or)g(trailing)g(h)
+m(yphen-min)m(us)e(\(U)p Fr(+)p Fx(002D\).)p eop end
+%%Page: 30 35
+TeXDict begin 30 34 bop 150 -116 a Fx(Chapter)30 b(6:)41
+b(IDNA)31 b(F)-8 b(unctions)2390 b(30)390 299 y Fl(IDNA)p
+642 299 28 5 v 40 w(INV)-10 b(ALID)p 1078 299 V 39 w(LENGTH:)47
+b Fx(The)f(\014nal)g(output)g(string)g(is)h(not)g(within)f(the)g
+(\(inclusiv)m(e\))390 408 y(range)31 b(1)f(to)i(63)f(c)m(haracters.)390
+543 y Fl(IDNA)p 642 543 V 40 w(NO)p 821 543 V 40 w(A)m(CE)p
+1053 543 V 40 w(PREFIX:)i Fx(The)h(string)f(do)s(es)h(not)g(con)m(tain)
+h(the)f(A)m(CE)g(pre\014x)f(\(for)h(T)-8 b(oUni-)390
+653 y(co)s(de\).)390 787 y Fl(IDNA)p 642 787 V 40 w(R)m(OUNDTRIP)p
+1257 787 V 41 w(VERIFY)p 1658 787 V 39 w(ERR)m(OR:)37
+b Fx(The)g(T)-8 b(oASCI)s(I)36 b(op)s(eration)h(on)g(output)f(string)
+390 897 y(do)s(es)30 b(not)h(equal)g(the)f(input.)390
+1031 y Fl(IDNA)p 642 1031 V 40 w(CONT)-8 b(AINS)p 1169
+1031 V 40 w(A)m(CE)p 1401 1031 V 39 w(PREFIX:)79 b Fx(The)g(input)f
+(con)m(tains)j(the)e(A)m(CE)h(pre\014x)e(\(for)390 1141
+y(T)-8 b(oASCI)s(I\).)390 1275 y Fl(IDNA)p 642 1275 V
+40 w(ICONV)p 992 1275 V 40 w(ERR)m(OR:)31 b Fx(Could)e(not)i(con)m(v)m
+(ert)h(string)e(in)g(lo)s(cale)i(enco)s(ding.)390 1410
+y Fl(IDNA)p 642 1410 V 40 w(MALLOC)p 1081 1410 V 39 w(ERR)m(OR:)f
+Fx(Could)e(not)i(allo)s(cate)i(bu\013er)c(\(this)i(is)f(t)m(ypically)i
+(a)f(fatal)h(error\).)390 1544 y Fl(IDNA)p 642 1544 V
+40 w(DLOPEN)p 1068 1544 V 39 w(ERR)m(OR:)j Fx(Could)f(not)h(dlop)s(en)e
+(the)i(lib)s(cidn)e(DSO)h(\(only)h(used)f(in)m(ternally)390
+1654 y(in)c(lib)s(c\).)390 1788 y Fl(Return)f(v)-5 b(alue:)40
+b Fx(Returns)29 b(a)g(p)s(oin)m(ter)h(to)g(a)f(statically)j(allo)s
+(cated)f(string)f(con)m(taining)h(a)e(descrip-)390 1898
+y(tion)i(of)f(the)h(error)f(with)g(the)h(return)e(co)s(de)h
+Fr(rc)p Fx(.)p eop end
+%%Page: 31 36
+TeXDict begin 31 35 bop 150 -116 a Fx(Chapter)30 b(7:)41
+b(TLD)30 b(F)-8 b(unctions)2437 b(31)150 299 y Fu(7)80
+b(TLD)54 b(F)-13 b(unctions)150 531 y Fx(Organizations)40
+b(that)f(manage)g(some)g(T)-8 b(op)38 b(Lev)m(el)i(Domains)f(\()p
+Fk(TLD)p Fx(s\))g(ha)m(v)m(e)g(published)e(tables)i(with)150
+640 y(c)m(haracters)d(they)f(accept)h(within)e(the)g(domain.)54
+b(The)34 b(reason)g(ma)m(y)i(b)s(e)d(to)j(reduce)e(complexit)m(y)i
+(that)150 750 y(come)30 b(from)f(using)f(the)h(full)g(Unico)s(de)g
+(range,)h(and)f(to)g(protect)h(themselv)m(es)h(from)d(future)g(\(bac)m
+(kw)m(ards)150 859 y(incompatible\))36 b(c)m(hanges)g(in)e(the)h(IDN)g
+(or)g(Unico)s(de)g(sp)s(eci\014cations.)55 b(Libidn)33
+b(implemen)m(t)j(an)e(infras-)150 969 y(tructure)29 b(for)g(de\014ning)
+f(and)g(c)m(hec)m(king)j(strings)e(against)i(suc)m(h)d(tables.)42
+b(Libidn)27 b(also)j(ship)f(some)g(tables)150 1079 y(from)d
+Fk(TLD)p Fx(s)g(that)h(w)m(e)f(ha)m(v)m(e)i(managed)e(to)h(get)g(p)s
+(ermission)e(to)i(use)f(them)g(from.)39 b(Because)28
+b(these)e(tables)150 1188 y(are)i(ev)m(en)g(less)g(static)h(than)e
+(Unico)s(de)h(or)f(StringPrep)f(tables,)k(it)e(is)f(lik)m(ely)i(that)f
+(they)g(will)f(b)s(e)g(up)s(dated)150 1298 y(from)33
+b(time)h(to)g(time)g(\(ev)m(en)h(in)e(bac)m(kw)m(ards)h(incompatib)s(e)
+g(w)m(a)m(ys\).)51 b(The)33 b(Libidn)f(in)m(terface)j(pro)m(vide)f(a)
+150 1407 y(\\v)m(ersion")39 b(\014eld)d(for)h(eac)m(h)i
+Fk(TLD)e Fx(table,)j(whic)m(h)d(can)h(b)s(e)e(compared)h(for)g(equalit)
+m(y)i(to)f(guaran)m(tee)h(the)150 1517 y(same)31 b(op)s(eration)g(o)m
+(v)m(er)g(time.)275 1651 y(F)-8 b(rom)25 b(a)g(design)f(p)s(oin)m(t)h
+(of)g(view,)h(y)m(ou)f(can)g(regard)f(the)h Fk(TLD)g
+Fx(tables)g(for)f(IDN)h(as)g(the)g(\\lo)s(calization")150
+1760 y(step)30 b(that)h(come)h(after)f(the)f(\\in)m
+(ternationalization")35 b(step)30 b(pro)m(vided)g(b)m(y)h(the)f(IETF)g
+(standards.)275 1894 y(The)35 b(TLD)i(functionalit)m(y)h(rely)e(on)h
+(up-to-date)g(tables.)60 b(The)36 b(latest)i(v)m(ersion)f(of)f(Libidn)f
+(aim)i(to)150 2004 y(pro)m(vide)28 b(these,)h(but)d(tables)j(with)e
+(unclear)h(cop)m(ying)g(conditions,)h(or)f(generally)h(exp)s(erimen)m
+(tal)f(tables,)150 2114 y(are)j(not)f(included.)40 b(Some)31
+b(suc)m(h)f(tables)h(can)g(b)s(e)e(found)g(at)j Fr
+(http://tldchk.berlios.d)o(e)p Fx(.)150 2345 y Fw(7.1)68
+b(Header)46 b(\014le)f Fj(tld.h)150 2505 y Fx(T)-8 b(o)31
+b(use)f(the)g(functions)g(explained)h(in)f(this)g(c)m(hapter,)i(y)m(ou)
+e(need)g(to)i(include)e(the)g(\014le)h(`)p Fr(tld.h)p
+Fx(')e(using:)390 2639 y Fr(#include)46 b(<tld.h>)150
+2870 y Fw(7.2)68 b(Core)46 b(F)-11 b(unctions)150 3094
+y Fq(tld)p 309 3094 37 5 v 54 w(c)m(hec)m(k)p 656 3094
+V 52 w(4t)3350 3290 y Fx([F)j(unction])-3599 b Fp(int)53
+b(tld_check_4t)c Fo(\()p Fn(const)32 b(uin)m(t32)p 1561
+3290 28 4 v 41 w(t)e(*)h Fm(in)12 b Fn(,)31 b(size)p
+2056 3290 V 41 w(t)f Fm(inlen)12 b Fn(,)32 b(size)p 2632
+3290 V 41 w(t)e(*)h Fm(errpos)12 b Fn(,)565 3399 y(const)31
+b(Tld)p 951 3399 V 39 w(table)h(*)e Fm(tld)12 b Fo(\))390
+3509 y Fn(in)p Fx(:)40 b(Arra)m(y)31 b(of)g(unico)s(de)e(co)s(de)i(p)s
+(oin)m(ts)f(to)h(pro)s(cess.)41 b(Do)s(es)31 b(not)f(need)g(to)h(b)s(e)
+f(zero)h(terminated.)390 3643 y Fn(inlen)p Fx(:)41 b(Num)m(b)s(er)29
+b(of)h(unico)s(de)g(co)s(de)h(p)s(oin)m(ts.)390 3777
+y Fn(errp)s(os)t Fx(:)39 b(P)m(osition)32 b(of)f(o\013ending)f(c)m
+(haracter)i(is)e(returned)g(here.)390 3911 y Fn(tld)t
+Fx(:)60 b(A)40 b Fr(Tld_table)d Fx(data)k(structure)e(represen)m(ting)h
+(the)h(restrictions)f(for)g(whic)m(h)g(the)g(input)390
+4020 y(should)29 b(b)s(e)h(tested.)390 4154 y(T)-8 b(est)36
+b(eac)m(h)g(of)f(the)h(co)s(de)f(p)s(oin)m(ts)g(in)g
+Fr(in)f Fx(for)h(whether)g(or)g(not)g(they)g(are)h(allo)m(w)m(ed)h(b)m
+(y)e(the)g(data)390 4264 y(structure)g(in)h Fr(tld)p
+Fx(,)g(return)f(the)h(p)s(osition)g(of)g(the)g(\014rst)f(c)m(haracter)j
+(for)d(whic)m(h)h(this)g(is)g(not)g(the)390 4374 y(case)31
+b(in)f Fr(errpos)p Fx(.)390 4508 y Fl(Return)h(v)-5 b(alue:)44
+b Fx(Returns)31 b(the)h Fr(Tld_rc)e Fx(v)-5 b(alue)32
+b Fr(TLD_SUCCESS)c Fx(if)k(all)g(co)s(de)g(p)s(oin)m(ts)g(are)g(v)-5
+b(alid)32 b(or)390 4617 y(when)27 b Fr(tld)f Fx(is)i(n)m(ull,)g
+Fr(TLD_INVALID)d Fx(if)i(a)h(c)m(haracter)h(is)f(not)f(allo)m(w)m(ed,)k
+(or)c(additional)i(error)e(co)s(des)390 4727 y(on)j(general)i(failure)e
+(conditions.)150 4925 y Fq(tld)p 309 4925 37 5 v 54 w(c)m(hec)m(k)p
+656 4925 V 52 w(4tz)3350 5121 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(tld_check_4tz)d Fo(\()p Fn(const)31 b(uin)m(t32)p
+1613 5121 28 4 v 41 w(t)g(*)f Fm(in)12 b Fn(,)31 b(size)p
+2108 5121 V 41 w(t)g(*)f Fm(errpos)12 b Fn(,)32 b(const)565
+5230 y(Tld)p 713 5230 V 40 w(table)f(*)g Fm(tld)12 b
+Fo(\))390 5340 y Fn(in)p Fx(:)40 b(Zero)31 b(terminated)g(arra)m(y)g
+(of)f(unico)s(de)g(co)s(de)h(p)s(oin)m(ts)f(to)h(pro)s(cess.)p
+eop end
+%%Page: 32 37
+TeXDict begin 32 36 bop 150 -116 a Fx(Chapter)30 b(7:)41
+b(TLD)30 b(F)-8 b(unctions)2437 b(32)390 299 y Fn(errp)s(os)t
+Fx(:)39 b(P)m(osition)32 b(of)f(o\013ending)f(c)m(haracter)i(is)e
+(returned)g(here.)390 461 y Fn(tld)t Fx(:)60 b(A)40 b
+Fr(Tld_table)d Fx(data)k(structure)e(represen)m(ting)h(the)h
+(restrictions)f(for)g(whic)m(h)g(the)g(input)390 570
+y(should)29 b(b)s(e)h(tested.)390 732 y(T)-8 b(est)36
+b(eac)m(h)g(of)f(the)h(co)s(de)f(p)s(oin)m(ts)g(in)g
+Fr(in)f Fx(for)h(whether)g(or)g(not)g(they)g(are)h(allo)m(w)m(ed)h(b)m
+(y)e(the)g(data)390 842 y(structure)g(in)h Fr(tld)p Fx(,)g(return)f
+(the)h(p)s(osition)g(of)g(the)g(\014rst)f(c)m(haracter)j(for)d(whic)m
+(h)h(this)g(is)g(not)g(the)390 951 y(case)31 b(in)f Fr(errpos)p
+Fx(.)390 1113 y Fl(Return)h(v)-5 b(alue:)44 b Fx(Returns)31
+b(the)h Fr(Tld_rc)e Fx(v)-5 b(alue)32 b Fr(TLD_SUCCESS)c
+Fx(if)k(all)g(co)s(de)g(p)s(oin)m(ts)g(are)g(v)-5 b(alid)32
+b(or)390 1223 y(when)27 b Fr(tld)f Fx(is)i(n)m(ull,)g
+Fr(TLD_INVALID)d Fx(if)i(a)h(c)m(haracter)h(is)f(not)f(allo)m(w)m(ed,)k
+(or)c(additional)i(error)e(co)s(des)390 1332 y(on)j(general)i(failure)e
+(conditions.)150 1606 y Fw(7.3)68 b(Utilit)l(y)47 b(F)-11
+b(unctions)150 1830 y Fq(tld)p 309 1830 37 5 v 54 w(get)p
+528 1830 V 54 w(4)3350 2054 y Fx([F)j(unction])-3599
+b Fp(int)53 b(tld_get_4)48 b Fo(\()p Fn(const)32 b(uin)m(t32)p
+1404 2054 28 4 v 41 w(t)e(*)h Fm(in)12 b Fn(,)31 b(size)p
+1899 2054 V 41 w(t)f Fm(inlen)12 b Fn(,)32 b(c)m(har)f(**)g
+Fm(out)12 b Fo(\))390 2163 y Fn(in)p Fx(:)40 b(Arra)m(y)31
+b(of)g(unico)s(de)e(co)s(de)i(p)s(oin)m(ts)f(to)h(pro)s(cess.)41
+b(Do)s(es)31 b(not)f(need)g(to)h(b)s(e)f(zero)h(terminated.)390
+2325 y Fn(inlen)p Fx(:)41 b(Num)m(b)s(er)29 b(of)h(unico)s(de)g(co)s
+(de)h(p)s(oin)m(ts.)390 2487 y Fn(out)r Fx(:)41 b(Zero)30
+b(terminated)h(ascii)h(result)e(string)g(p)s(oin)m(ter.)390
+2649 y(Isolate)i(the)e(top-lev)m(el)j(domain)d(of)h Fr(in)f
+Fx(and)f(return)h(it)h(as)f(an)h(ASCI)s(I)d(string)j(in)f
+Fr(out)p Fx(.)390 2811 y Fl(Return)38 b(v)-5 b(alue:)56
+b Fx(Return)37 b Fr(TLD_SUCCESS)d Fx(on)k(success,)i(or)e(the)g
+(corresp)s(onding)f Fr(Tld_rc)f Fx(error)390 2920 y(co)s(de)31
+b(otherwise.)150 3147 y Fq(tld)p 309 3147 37 5 v 54 w(get)p
+528 3147 V 54 w(4z)3350 3371 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(tld_get_4z)c Fo(\()p Fn(const)31 b(uin)m(t32)p
+1456 3371 28 4 v 41 w(t)g(*)f Fm(in)12 b Fn(,)31 b(c)m(har)g(**)g
+Fm(out)12 b Fo(\))390 3480 y Fn(in)p Fx(:)40 b(Zero)31
+b(terminated)g(arra)m(y)g(of)f(unico)s(de)g(co)s(de)h(p)s(oin)m(ts)f
+(to)h(pro)s(cess.)390 3642 y Fn(out)r Fx(:)41 b(Zero)30
+b(terminated)h(ascii)h(result)e(string)g(p)s(oin)m(ter.)390
+3804 y(Isolate)i(the)e(top-lev)m(el)j(domain)d(of)h Fr(in)f
+Fx(and)f(return)h(it)h(as)f(an)h(ASCI)s(I)d(string)j(in)f
+Fr(out)p Fx(.)390 3966 y Fl(Return)38 b(v)-5 b(alue:)56
+b Fx(Return)37 b Fr(TLD_SUCCESS)d Fx(on)k(success,)i(or)e(the)g
+(corresp)s(onding)f Fr(Tld_rc)f Fx(error)390 4075 y(co)s(de)31
+b(otherwise.)150 4302 y Fq(tld)p 309 4302 37 5 v 54 w(get)p
+528 4302 V 54 w(z)3350 4526 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(tld_get_z)48 b Fo(\()p Fn(const)32 b(c)m(har)e(*)h
+Fm(in)12 b Fn(,)31 b(c)m(har)g(**)g Fm(out)12 b Fo(\))390
+4635 y Fn(in)p Fx(:)40 b(Zero)31 b(terminated)g(c)m(haracter)h(arra)m
+(y)e(to)i(pro)s(cess.)390 4797 y Fn(out)r Fx(:)41 b(Zero)30
+b(terminated)h(ascii)h(result)e(string)g(p)s(oin)m(ter.)390
+4959 y(Isolate)f(the)e(top-lev)m(el)j(domain)d(of)g Fr(in)g
+Fx(and)g(return)f(it)i(as)f(an)g(ASCI)s(I)f(string)h(in)g
+Fr(out)p Fx(.)39 b(The)27 b(input)390 5069 y(string)j
+Fr(in)g Fx(ma)m(y)h(b)s(e)f(UTF-8,)h(ISO-8859-1)i(or)d(an)m(y)h(ASCI)s
+(I)d(compatible)k(c)m(haracter)g(enco)s(ding.)390 5230
+y Fl(Return)38 b(v)-5 b(alue:)56 b Fx(Return)37 b Fr(TLD_SUCCESS)d
+Fx(on)k(success,)i(or)e(the)g(corresp)s(onding)f Fr(Tld_rc)f
+Fx(error)390 5340 y(co)s(de)31 b(otherwise.)p eop end
+%%Page: 33 38
+TeXDict begin 33 37 bop 150 -116 a Fx(Chapter)30 b(7:)41
+b(TLD)30 b(F)-8 b(unctions)2437 b(33)150 299 y Fq(tld)p
+309 299 37 5 v 54 w(get)p 528 299 V 54 w(table)3350 515
+y Fx([F)-8 b(unction])-3599 b Fp(const)54 b(Tld_table)h(*)d
+(tld_get_table)e Fo(\()p Fn(const)30 b(c)m(har)g(*)f
+Fm(tld)12 b Fn(,)30 b(const)g(Tld)p 2970 515 28 4 v 39
+w(table)565 625 y(**)h Fm(tables)12 b Fo(\))390 735 y
+Fn(tld)t Fx(:)40 b(TLD)31 b(name)f(\(e.g.)42 b Fr(")p
+Fx(com)p Fr(")p Fx(\))31 b(as)f(zero)i(terminated)f(ASCI)s(I)d(b)m(yte)
+j(string.)390 889 y Fn(tables)t Fx(:)41 b(Zero)31 b(terminated)f(arra)m
+(y)h(of)g Fr(Tld_table)d Fx(info-structures)i(for)g(TLDs.)390
+1043 y(Get)25 b(the)g(TLD)f(table)i(for)e(a)h(named)f(TLD)g(b)m(y)g
+(searc)m(hing)h(through)f(the)h(giv)m(en)g(TLD)f(table)i(arra)m(y)-8
+b(.)390 1197 y Fl(Return)29 b(v)-5 b(alue:)40 b Fx(Return)29
+b(structure)g(corresp)s(onding)f(to)i(TLD)f Fr(tld)f
+Fx(b)m(y)h(going)i(thru)d Fr(tables)p Fx(,)g(or)390 1307
+y(return)h Fr(NULL)g Fx(if)i(no)f(suc)m(h)g(structure)g(is)g(found.)150
+1526 y Fq(tld)p 309 1526 37 5 v 54 w(default)p 734 1526
+V 54 w(table)3350 1742 y Fx([F)-8 b(unction])-3599 b
+Fp(const)54 b(Tld_table)h(*)d(tld_default_table)f Fo(\()p
+Fn(const)31 b(c)m(har)g(*)g Fm(tld)12 b Fn(,)31 b(const)565
+1852 y(Tld)p 713 1852 28 4 v 40 w(table)g(**)g Fm(overrides)12
+b Fo(\))390 1961 y Fn(tld)t Fx(:)40 b(TLD)31 b(name)f(\(e.g.)42
+b Fr(")p Fx(com)p Fr(")p Fx(\))31 b(as)f(zero)i(terminated)f(ASCI)s(I)d
+(b)m(yte)j(string.)390 2116 y Fn(o)m(v)m(errides)t Fx(:)48
+b(Additional)34 b(zero)g(terminated)g(arra)m(y)g(of)g
+Fr(Tld_table)d Fx(info-structures)i(for)g(TLDs,)390 2225
+y(or)d Fr(NULL)g Fx(to)h(only)f(use)g(library)g(deault)h(tables.)390
+2379 y(Get)h(the)f(TLD)g(table)h(for)f(a)g(named)f(TLD,)i(using)e(the)h
+(in)m(ternal)h(defaults,)f(p)s(ossibly)f(o)m(v)m(errided)390
+2489 y(b)m(y)g(the)h(\(optional\))h(supplied)d(tables.)390
+2643 y Fl(Return)24 b(v)-5 b(alue:)38 b Fx(Return)24
+b(structure)g(corresp)s(onding)g(to)h(TLD)f Fr(tld_str)p
+Fx(,)g(\014rst)g(lo)s(oking)i(through)390 2753 y Fr(overrides)i
+Fx(then)i(thru)f(built-in)h(list,)i(or)e Fr(NULL)f Fx(if)i(no)f(suc)m
+(h)g(structure)g(found.)150 3015 y Fw(7.4)68 b(High-Lev)l(el)46
+b(W)-11 b(rapp)t(er)45 b(F)-11 b(unctions)150 3239 y
+Fq(tld)p 309 3239 37 5 v 54 w(c)m(hec)m(k)p 656 3239
+V 52 w(4)3350 3455 y Fx([F)j(unction])-3599 b Fp(int)53
+b(tld_check_4)c Fo(\()p Fn(const)31 b(uin)m(t32)p 1508
+3455 28 4 v 41 w(t)g(*)g Fm(in)12 b Fn(,)30 b(size)p
+2003 3455 V 41 w(t)h Fm(inlen)12 b Fn(,)32 b(size)p 2580
+3455 V 40 w(t)f(*)g Fm(errpos)12 b Fn(,)565 3565 y(const)31
+b(Tld)p 951 3565 V 39 w(table)h(**)f Fm(overrides)12
+b Fo(\))390 3675 y Fn(in)p Fx(:)40 b(Arra)m(y)31 b(of)g(unico)s(de)e
+(co)s(de)i(p)s(oin)m(ts)f(to)h(pro)s(cess.)41 b(Do)s(es)31
+b(not)f(need)g(to)h(b)s(e)f(zero)h(terminated.)390 3829
+y Fn(inlen)p Fx(:)41 b(Num)m(b)s(er)29 b(of)h(unico)s(de)g(co)s(de)h(p)
+s(oin)m(ts.)390 3983 y Fn(errp)s(os)t Fx(:)39 b(P)m(osition)32
+b(of)f(o\013ending)f(c)m(haracter)i(is)e(returned)g(here.)390
+4137 y Fn(o)m(v)m(errides)t Fx(:)48 b(A)34 b Fr(Tld_table)d
+Fx(arra)m(y)j(of)g(additional)h(domain)e(restriction)i(structures)e
+(that)h(com-)390 4247 y(plemen)m(t)d(and)f(sup)s(ersede)f(the)h
+(built-in)g(information.)390 4401 y(T)-8 b(est)26 b(eac)m(h)h(of)f(the)
+g(co)s(de)g(p)s(oin)m(ts)g(in)f Fr(in)g Fx(for)h(whether)f(or)h(not)g
+(they)g(are)g(allo)m(w)m(ed)h(b)m(y)f(the)g(informa-)390
+4511 y(tion)32 b(in)g Fr(overrides)d Fx(or)j(b)m(y)g(the)g(built-in)g
+(TLD)g(restriction)g(data.)46 b(When)32 b(data)h(for)e(the)i(same)390
+4620 y(TLD)39 b(is)g(a)m(v)-5 b(ailable)41 b(b)s(oth)d(in)m(ternally)i
+(and)e(in)h Fr(overrides)p Fx(,)g(the)g(information)g(in)f
+Fr(overrides)390 4730 y Fx(tak)m(es)29 b(precedence.)40
+b(If)27 b(sev)m(eral)i(en)m(tries)g(for)e(a)h(sp)s(eci\014c)g(TLD)f
+(are)h(found,)f(the)h(\014rst)f(one)h(is)f(used.)390
+4839 y(If)k Fr(overrides)e Fx(is)i Fr(NULL)p Fx(,)f(only)i(the)f
+(built-in)g(information)h(is)f(used.)43 b(The)30 b(p)s(osition)i(of)f
+(the)h(\014rst)390 4949 y(o\013ending)e(c)m(haracter)i(is)f(returned)e
+(in)h Fr(errpos)p Fx(.)390 5103 y Fl(Return)h(v)-5 b(alue:)44
+b Fx(Returns)31 b(the)h Fr(Tld_rc)e Fx(v)-5 b(alue)32
+b Fr(TLD_SUCCESS)c Fx(if)k(all)g(co)s(de)g(p)s(oin)m(ts)g(are)g(v)-5
+b(alid)32 b(or)390 5213 y(when)27 b Fr(tld)f Fx(is)i(n)m(ull,)g
+Fr(TLD_INVALID)d Fx(if)i(a)h(c)m(haracter)h(is)f(not)f(allo)m(w)m(ed,)k
+(or)c(additional)i(error)e(co)s(des)390 5322 y(on)j(general)i(failure)e
+(conditions.)p eop end
+%%Page: 34 39
+TeXDict begin 34 38 bop 150 -116 a Fx(Chapter)30 b(7:)41
+b(TLD)30 b(F)-8 b(unctions)2437 b(34)150 299 y Fq(tld)p
+309 299 37 5 v 54 w(c)m(hec)m(k)p 656 299 V 52 w(4z)3350
+501 y Fx([F)-8 b(unction])-3599 b Fp(int)53 b(tld_check_4z)c
+Fo(\()p Fn(const)32 b(uin)m(t32)p 1561 501 28 4 v 41
+w(t)e(*)h Fm(in)12 b Fn(,)31 b(size)p 2056 501 V 41 w(t)f(*)h
+Fm(errpos)12 b Fn(,)32 b(const)565 610 y(Tld)p 713 610
+V 40 w(table)f(**)g Fm(overrides)12 b Fo(\))390 720 y
+Fn(in)p Fx(:)40 b(Zero-terminated)32 b(arra)m(y)f(of)f(unico)s(de)g(co)
+s(de)h(p)s(oin)m(ts)f(to)h(pro)s(cess.)390 860 y Fn(errp)s(os)t
+Fx(:)39 b(P)m(osition)32 b(of)f(o\013ending)f(c)m(haracter)i(is)e
+(returned)g(here.)390 999 y Fn(o)m(v)m(errides)t Fx(:)48
+b(A)34 b Fr(Tld_table)d Fx(arra)m(y)j(of)g(additional)h(domain)e
+(restriction)i(structures)e(that)h(com-)390 1109 y(plemen)m(t)d(and)f
+(sup)s(ersede)f(the)h(built-in)g(information.)390 1248
+y(T)-8 b(est)26 b(eac)m(h)h(of)f(the)g(co)s(de)g(p)s(oin)m(ts)g(in)f
+Fr(in)g Fx(for)h(whether)f(or)h(not)g(they)g(are)g(allo)m(w)m(ed)h(b)m
+(y)f(the)g(informa-)390 1358 y(tion)32 b(in)g Fr(overrides)d
+Fx(or)j(b)m(y)g(the)g(built-in)g(TLD)g(restriction)g(data.)46
+b(When)32 b(data)h(for)e(the)i(same)390 1468 y(TLD)39
+b(is)g(a)m(v)-5 b(ailable)41 b(b)s(oth)d(in)m(ternally)i(and)e(in)h
+Fr(overrides)p Fx(,)g(the)g(information)g(in)f Fr(overrides)390
+1577 y Fx(tak)m(es)29 b(precedence.)40 b(If)27 b(sev)m(eral)i(en)m
+(tries)g(for)e(a)h(sp)s(eci\014c)g(TLD)f(are)h(found,)f(the)h(\014rst)f
+(one)h(is)f(used.)390 1687 y(If)k Fr(overrides)e Fx(is)i
+Fr(NULL)p Fx(,)f(only)i(the)f(built-in)g(information)h(is)f(used.)43
+b(The)30 b(p)s(osition)i(of)f(the)h(\014rst)390 1796
+y(o\013ending)e(c)m(haracter)i(is)f(returned)e(in)h Fr(errpos)p
+Fx(.)390 1936 y Fl(Return)h(v)-5 b(alue:)44 b Fx(Returns)31
+b(the)h Fr(Tld_rc)e Fx(v)-5 b(alue)32 b Fr(TLD_SUCCESS)c
+Fx(if)k(all)g(co)s(de)g(p)s(oin)m(ts)g(are)g(v)-5 b(alid)32
+b(or)390 2046 y(when)27 b Fr(tld)f Fx(is)i(n)m(ull,)g
+Fr(TLD_INVALID)d Fx(if)i(a)h(c)m(haracter)h(is)f(not)f(allo)m(w)m(ed,)k
+(or)c(additional)i(error)e(co)s(des)390 2155 y(on)j(general)i(failure)e
+(conditions.)150 2360 y Fq(tld)p 309 2360 37 5 v 54 w(c)m(hec)m(k)p
+656 2360 V 52 w(8z)3350 2562 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(tld_check_8z)c Fo(\()p Fn(const)32 b(c)m(har)e(*)h
+Fm(in)12 b Fn(,)31 b(size)p 1900 2562 28 4 v 41 w(t)f(*)h
+Fm(errpos)12 b Fn(,)32 b(const)f(Tld)p 2843 2562 V 39
+w(table)h(**)565 2671 y Fm(overrides)12 b Fo(\))390 2781
+y Fn(in)p Fx(:)40 b(Zero-terminated)32 b(UTF8)f(string)f(to)h(pro)s
+(cess.)390 2920 y Fn(errp)s(os)t Fx(:)39 b(P)m(osition)32
+b(of)f(o\013ending)f(c)m(haracter)i(is)e(returned)g(here.)390
+3060 y Fn(o)m(v)m(errides)t Fx(:)48 b(A)34 b Fr(Tld_table)d
+Fx(arra)m(y)j(of)g(additional)h(domain)e(restriction)i(structures)e
+(that)h(com-)390 3170 y(plemen)m(t)d(and)f(sup)s(ersede)f(the)h
+(built-in)g(information.)390 3309 y(T)-8 b(est)21 b(eac)m(h)h(of)f(the)
+g(c)m(haracters)h(in)e Fr(in)h Fx(for)f(whether)g(or)h(not)g(they)g
+(are)g(allo)m(w)m(ed)h(b)m(y)f(the)g(information)390
+3419 y(in)29 b Fr(overrides)e Fx(or)j(b)m(y)f(the)h(built-in)f(TLD)h
+(restriction)g(data.)41 b(When)30 b(data)g(for)f(the)h(same)g(TLD)390
+3528 y(is)38 b(a)m(v)-5 b(ailable)40 b(b)s(oth)e(in)m(ternally)g(and)g
+(in)f Fr(overrides)p Fx(,)h(the)g(information)g(in)g
+Fr(overrides)d Fx(tak)m(es)390 3638 y(precedence.)56
+b(If)34 b(sev)m(eral)j(en)m(tries)f(for)f(a)g(sp)s(eci\014c)g(TLD)h
+(are)f(found,)g(the)h(\014rst)e(one)i(is)f(used.)54 b(If)390
+3748 y Fr(overrides)35 b Fx(is)i Fr(NULL)p Fx(,)h(only)g(the)f
+(built-in)g(information)h(is)f(used.)61 b(The)36 b(p)s(osition)i(of)f
+(the)h(\014rst)390 3857 y(o\013ending)32 b(c)m(haracter)i(is)e
+(returned)f(in)h Fr(errpos)p Fx(.)44 b(Note)34 b(that)f(the)f(error)g
+(p)s(osition)g(refers)g(to)h(the)390 3967 y(deco)s(ded)d(c)m(haracter)i
+(o\013set)f(rather)g(than)f(the)g(b)m(yte)h(p)s(osition)g(in)f(the)g
+(string.)390 4106 y Fl(Return)35 b(v)-5 b(alue:)52 b
+Fx(Returns)35 b(the)g Fr(Tld_rc)f Fx(v)-5 b(alue)36 b
+Fr(TLD_SUCCESS)d Fx(if)i(all)i(c)m(haracters)g(are)f(v)-5
+b(alid)36 b(or)390 4216 y(when)27 b Fr(tld)f Fx(is)i(n)m(ull,)g
+Fr(TLD_INVALID)d Fx(if)i(a)h(c)m(haracter)h(is)f(not)f(allo)m(w)m(ed,)k
+(or)c(additional)i(error)e(co)s(des)390 4326 y(on)j(general)i(failure)e
+(conditions.)150 4530 y Fq(tld)p 309 4530 37 5 v 54 w(c)m(hec)m(k)p
+656 4530 V 52 w(lz)3350 4732 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(tld_check_lz)c Fo(\()p Fn(const)32 b(c)m(har)e(*)h
+Fm(in)12 b Fn(,)31 b(size)p 1900 4732 28 4 v 41 w(t)f(*)h
+Fm(errpos)12 b Fn(,)32 b(const)f(Tld)p 2843 4732 V 39
+w(table)h(**)565 4842 y Fm(overrides)12 b Fo(\))390 4951
+y Fn(in)p Fx(:)40 b(Zero-terminated)32 b(string)e(in)g(the)h(curren)m
+(t)f(lo)s(cales)i(enco)s(ding)e(to)h(pro)s(cess.)390
+5091 y Fn(errp)s(os)t Fx(:)39 b(P)m(osition)32 b(of)f(o\013ending)f(c)m
+(haracter)i(is)e(returned)g(here.)390 5230 y Fn(o)m(v)m(errides)t
+Fx(:)48 b(A)34 b Fr(Tld_table)d Fx(arra)m(y)j(of)g(additional)h(domain)
+e(restriction)i(structures)e(that)h(com-)390 5340 y(plemen)m(t)d(and)f
+(sup)s(ersede)f(the)h(built-in)g(information.)p eop end
+%%Page: 35 40
+TeXDict begin 35 39 bop 150 -116 a Fx(Chapter)30 b(7:)41
+b(TLD)30 b(F)-8 b(unctions)2437 b(35)390 299 y(T)-8 b(est)21
+b(eac)m(h)h(of)f(the)g(c)m(haracters)h(in)e Fr(in)h Fx(for)f(whether)g
+(or)h(not)g(they)g(are)g(allo)m(w)m(ed)h(b)m(y)f(the)g(information)390
+408 y(in)29 b Fr(overrides)e Fx(or)j(b)m(y)f(the)h(built-in)f(TLD)h
+(restriction)g(data.)41 b(When)30 b(data)g(for)f(the)h(same)g(TLD)390
+518 y(is)38 b(a)m(v)-5 b(ailable)40 b(b)s(oth)e(in)m(ternally)g(and)g
+(in)f Fr(overrides)p Fx(,)h(the)g(information)g(in)g
+Fr(overrides)d Fx(tak)m(es)390 628 y(precedence.)56 b(If)34
+b(sev)m(eral)j(en)m(tries)f(for)f(a)g(sp)s(eci\014c)g(TLD)h(are)f
+(found,)g(the)h(\014rst)e(one)i(is)f(used.)54 b(If)390
+737 y Fr(overrides)35 b Fx(is)i Fr(NULL)p Fx(,)h(only)g(the)f(built-in)
+g(information)h(is)f(used.)61 b(The)36 b(p)s(osition)i(of)f(the)h
+(\014rst)390 847 y(o\013ending)32 b(c)m(haracter)i(is)e(returned)f(in)h
+Fr(errpos)p Fx(.)44 b(Note)34 b(that)f(the)f(error)g(p)s(osition)g
+(refers)g(to)h(the)390 956 y(deco)s(ded)d(c)m(haracter)i(o\013set)f
+(rather)g(than)f(the)g(b)m(yte)h(p)s(osition)g(in)f(the)g(string.)390
+1091 y Fl(Return)35 b(v)-5 b(alue:)52 b Fx(Returns)35
+b(the)g Fr(Tld_rc)f Fx(v)-5 b(alue)36 b Fr(TLD_SUCCESS)d
+Fx(if)i(all)i(c)m(haracters)g(are)f(v)-5 b(alid)36 b(or)390
+1200 y(when)27 b Fr(tld)f Fx(is)i(n)m(ull,)g Fr(TLD_INVALID)d
+Fx(if)i(a)h(c)m(haracter)h(is)f(not)f(allo)m(w)m(ed,)k(or)c(additional)
+i(error)e(co)s(des)390 1310 y(on)j(general)i(failure)e(conditions.)150
+1543 y Fw(7.5)68 b(Error)45 b(Handling)150 1767 y Fq(tld)p
+309 1767 37 5 v 54 w(strerror)3350 1963 y Fx([F)-8 b(unction])-3599
+b Fp(const)54 b(char)f(*)g(tld_strerror)c Fo(\()p Fn(Tld)p
+1686 1963 28 4 v 40 w(rc)30 b Fm(rc)12 b Fo(\))390 2073
+y Fn(rc)6 b Fx(:)40 b(tld)31 b(return)e(co)s(de)390 2208
+y(Con)m(v)m(ert)35 b(a)f(return)e(co)s(de)i(in)m(teger)i(to)e(a)g(text)
+h(string.)51 b(This)33 b(string)h(can)g(b)s(e)f(used)g(to)h(output)g(a)
+390 2317 y(diagnostic)e(message)f(to)g(the)g(user.)390
+2452 y Fl(TLD)p 584 2452 28 5 v 39 w(SUCCESS:)21 b Fx(Successful)h(op)s
+(eration.)39 b(This)22 b(v)-5 b(alue)23 b(is)g(guaran)m(teed)h(to)g
+(alw)m(a)m(ys)g(b)s(e)e(zero,)k(the)390 2561 y(remaining)36
+b(ones)g(are)h(only)f(guaran)m(teed)h(to)g(hold)f(non-zero)g(v)-5
+b(alues,)38 b(for)e(logical)j(comparison)390 2671 y(purp)s(oses.)390
+2805 y Fl(TLD)p 584 2805 V 39 w(INV)-10 b(ALID:)30 b
+Fx(In)m(v)-5 b(alid)30 b(c)m(haracter)i(found.)390 2940
+y Fl(TLD)p 584 2940 V 39 w(NOD)m(A)-8 b(T)g(A:)32 b Fx(No)f(input)e
+(data)i(w)m(as)g(pro)m(vided.)390 3074 y Fl(TLD)p 584
+3074 V 39 w(MALLOC)p 1022 3074 V 39 w(ERR)m(OR:)g Fx(Error)f(during)f
+(memory)h(allo)s(cation.)390 3209 y Fl(TLD)p 584 3209
+V 39 w(ICONV)p 933 3209 V 40 w(ERR)m(OR:)h Fx(Error)f(during)f(icon)m
+(v)i(string)g(con)m(v)m(ersion.)390 3343 y Fl(TLD)p 584
+3343 V 39 w(NO)p 762 3343 V 41 w(TLD:)f Fx(No)h(top-lev)m(el)h(domain)f
+(found)e(in)h(domain)g(string.)390 3478 y Fl(Return)f(v)-5
+b(alue:)40 b Fx(Returns)29 b(a)g(p)s(oin)m(ter)h(to)g(a)f(statically)j
+(allo)s(cated)f(string)f(con)m(taining)h(a)e(descrip-)390
+3587 y(tion)i(of)f(the)h(error)f(with)g(the)h(return)e(co)s(de)h
+Fr(rc)p Fx(.)p eop end
+%%Page: 36 41
+TeXDict begin 36 40 bop 150 -116 a Fx(Chapter)30 b(8:)41
+b(PR29)31 b(F)-8 b(unctions)2409 b(36)150 299 y Fu(8)80
+b(PR29)54 b(F)-13 b(unctions)150 561 y Fx(A)42 b(de\014ciency)f(in)g
+(the)h(sp)s(eci\014cation)g(of)g(Unico)s(de)f(Normalization)j(F)-8
+b(orms)42 b(has)f(b)s(een)g(found.)72 b(The)150 671 y(consequence)36
+b(is)g(that)g(some)g(strings)f(can)h(b)s(e)f(normalized)h(in)m(to)h
+(di\013eren)m(t)f(strings)f(b)m(y)h(di\013eren)m(t)g(im-)150
+781 y(plemen)m(tations.)49 b(In)31 b(other)i(w)m(ords,)g(t)m(w)m(o)h
+(di\013eren)m(t)f(implemen)m(tations)h(ma)m(y)f(return)e(di\013eren)m
+(t)i(output)150 890 y(for)e(the)g(same)g(input)g(\(b)s(ecause)g(the)g
+(in)m(terpretation)i(of)e(the)g(sp)s(eci\014cation)h(is)f(am)m
+(biguous\).)43 b(F)-8 b(urther,)150 1000 y(an)35 b(implemen)m(tation)i
+(in)m(v)m(ok)m(ed)g(again)g(on)e(the)g(one)h(of)g(the)f(output)g
+(strings)g(ma)m(y)h(return)f(a)g(di\013eren)m(t)150 1109
+y(string)26 b(\(b)s(ecause)g(one)g(of)g(the)g(in)m(terpretation)i(of)e
+(the)g(am)m(biguous)g(sp)s(eci\014cation)g(mak)m(e)h(normalization)150
+1219 y(non-idemp)s(oten)m(t\).)58 b(F)-8 b(ortunately)g(,)40
+b(only)c(a)g(select)i(few)d(c)m(haracter)j(sequence)e(exhibit)g(this)g
+(problem,)150 1329 y(and)h(none)h(of)h(them)f(are)g(exp)s(ected)h(to)g
+(o)s(ccur)e(in)h(natural)g(languages)i(\(due)e(to)g(di\013eren)m(t)h
+(linguistic)150 1438 y(uses)30 b(of)g(the)h(in)m(v)m(olv)m(ed)h(c)m
+(haracters\).)275 1582 y(A)e(full)g(discussion)g(of)g(the)h(problem)f
+(ma)m(y)h(b)s(e)e(found)h(at:)275 1726 y Fr(http://www.unicode.org/)o
+(rev)o(iew/)o(pr-2)o(9.h)o(tml)275 1870 y Fx(The)35 b(PR29)h(functions)
+f(b)s(elo)m(w)h(allo)m(w)h(y)m(ou)f(to)g(detect)h(the)f(problem)e
+(sequence.)57 b(So)36 b(when)e(w)m(ould)150 1980 y(y)m(ou)40
+b(w)m(an)m(t)h(to)f(use)g(these)g(functions?)69 b(F)-8
+b(or)40 b(most)g(applications,)k(suc)m(h)39 b(as)i(those)f(using)f
+(Nameprep)150 2089 y(for)33 b(IDN,)g(this)g(is)g(lik)m(ely)h(only)f(to)
+h(b)s(e)e(an)h(in)m(terop)s(erabilit)m(y)h(problem.)48
+b(Th)m(us,)33 b(y)m(ou)g(ma)m(y)g(not)g(w)m(an)m(t)h(to)150
+2199 y(care)j(ab)s(out)e(it,)j(as)e(the)g(c)m(haracter)h(sequences)f
+(will)g(rarely)g(o)s(ccur)g(naturally)-8 b(.)57 b(Ho)m(w)m(ev)m(er,)40
+b(if)35 b(y)m(ou)i(are)150 2309 y(using)31 b(a)h(pro\014le,)h(suc)m(h)e
+(as)h(SASLPrep,)f(to)h(pro)s(cess)g(authen)m(tication)i(tok)m(ens;)f
+(authorization)h(tok)m(ens;)150 2418 y(or)c(passw)m(ords,)f(there)h(is)
+f(a)h(real)g(danger)g(that)g(attac)m(k)m(ers)i(ma)m(y)f(try)e(to)i(use)
+e(the)h(p)s(eculiarities)g(in)f(these)150 2528 y(strings)f(to)h(attac)m
+(k)i(parts)d(of)h(y)m(our)f(system.)40 b(As)29 b(only)f(a)h(small)g(n)m
+(um)m(b)s(er)e(of)i(strings,)g(and)e(no)i(naturally)150
+2637 y(o)s(ccurring)e(strings,)i(exhibit)e(this)h(problem,)g(the)g
+(conserv)-5 b(ativ)m(e)29 b(approac)m(h)f(of)g(rejecting)h(the)e
+(strings)h(is)150 2747 y(recommended.)40 b(If)28 b(this)h(approac)m(h)g
+(is)g(not)h(used,)e(y)m(ou)h(should)f(instead)i(v)m(erify)f(that)g(all)
+h(parts)f(of)g(y)m(our)150 2856 y(system,)i(that)g(pro)s(cess)f(the)h
+(tok)m(ens)h(and)e(passw)m(ords,)g(use)g(a)h(NFK)m(C)g(implemen)m
+(tation)h(that)f(pro)s(duce)150 2966 y(the)g(same)f(output)g(for)g(the)
+h(same)g(input.)275 3110 y(T)-8 b(ec)m(hnically)32 b(inclined)f
+(readers)g(ma)m(y)h(b)s(e)e(in)m(terested)i(in)f(kno)m(wing)g(more)g
+(ab)s(out)f(the)i(implemen)m(ta-)150 3220 y(tion)f(asp)s(ects)g(of)f
+(the)h(PR29)g(\015a)m(w.)40 b(See)31 b(App)s(endix)e(A)h([PR29)h
+(discussion],)g(page)g(64.)150 3466 y Fw(8.1)68 b(Header)46
+b(\014le)f Fj(pr29.h)150 3626 y Fx(T)-8 b(o)31 b(use)f(the)g(functions)
+g(explained)h(in)f(this)g(c)m(hapter,)i(y)m(ou)e(need)g(to)i(include)e
+(the)g(\014le)h(`)p Fr(pr29.h)p Fx(')e(using:)390 3770
+y Fr(#include)46 b(<pr29.h>)150 4016 y Fw(8.2)68 b(Core)46
+b(F)-11 b(unctions)150 4241 y Fq(pr29)p 399 4241 37 5
+v 55 w(4)3350 4447 y Fx([F)j(unction])-3599 b Fp(int)53
+b(pr29_4)47 b Fo(\()p Fn(const)32 b(uin)m(t32)p 1247
+4447 28 4 v 41 w(t)e(*)h Fm(in)12 b Fn(,)31 b(size)p
+1742 4447 V 41 w(t)f Fm(len)12 b Fo(\))390 4556 y Fn(in)p
+Fx(:)40 b(input)30 b(arra)m(y)h(with)f(unico)s(de)g(co)s(de)g(p)s(oin)m
+(ts.)390 4700 y Fn(len)p Fx(:)41 b(length)31 b(of)f(input)g(arra)m(y)g
+(with)h(unico)s(de)e(co)s(de)i(p)s(oin)m(ts.)390 4844
+y(Chec)m(k)23 b(the)g(input)f(to)i(see)f(if)g(it)g(ma)m(y)g(b)s(e)g
+(normalized)g(in)m(to)h(di\013eren)m(t)f(strings)g(b)m(y)f(di\013eren)m
+(t)i(NFK)m(C)390 4954 y(implemen)m(tations,)32 b(due)e(to)h(an)f
+(anomaly)h(in)f(the)h(NFK)m(C)g(sp)s(eci\014cations.)390
+5098 y Fl(Return)47 b(v)-5 b(alue:)75 b Fx(Returns)47
+b(the)g Fr(Pr29_rc)e Fx(v)-5 b(alue)48 b Fr(PR29_SUCCESS)c
+Fx(on)k(success,)k(and)46 b Fr(PR29_)390 5208 y(PROBLEM)28
+b Fx(if)i(the)g(input)g(sequence)g(is)g(a)h Fr(")p Fx(problem)e
+(sequence)p Fr(")h Fx(\(i.e.,)i(ma)m(y)f(b)s(e)e(normalized)i(in)m(to)
+390 5317 y(di\013eren)m(t)g(strings)f(b)m(y)g(di\013eren)m(t)h
+(implemen)m(tations\).)p eop end
+%%Page: 37 42
+TeXDict begin 37 41 bop 150 -116 a Fx(Chapter)30 b(8:)41
+b(PR29)31 b(F)-8 b(unctions)2409 b(37)150 299 y Fw(8.3)68
+b(Utilit)l(y)47 b(F)-11 b(unctions)150 523 y Fq(pr29)p
+399 523 37 5 v 55 w(4z)3350 720 y Fx([F)j(unction])-3599
+b Fp(int)53 b(pr29_4z)48 b Fo(\()p Fn(const)31 b(uin)m(t32)p
+1299 720 28 4 v 41 w(t)g(*)f Fm(in)12 b Fo(\))390 829
+y Fn(in)p Fx(:)40 b(zero)32 b(terminated)e(arra)m(y)h(of)g(Unico)s(de)f
+(co)s(de)h(p)s(oin)m(ts.)390 964 y(Chec)m(k)23 b(the)g(input)f(to)i
+(see)f(if)g(it)g(ma)m(y)g(b)s(e)g(normalized)g(in)m(to)h(di\013eren)m
+(t)f(strings)g(b)m(y)f(di\013eren)m(t)i(NFK)m(C)390 1073
+y(implemen)m(tations,)32 b(due)e(to)h(an)f(anomaly)h(in)f(the)h(NFK)m
+(C)g(sp)s(eci\014cations.)390 1208 y Fl(Return)47 b(v)-5
+b(alue:)75 b Fx(Returns)47 b(the)g Fr(Pr29_rc)e Fx(v)-5
+b(alue)48 b Fr(PR29_SUCCESS)c Fx(on)k(success,)k(and)46
+b Fr(PR29_)390 1318 y(PROBLEM)28 b Fx(if)i(the)g(input)g(sequence)g(is)
+g(a)h Fr(")p Fx(problem)e(sequence)p Fr(")h Fx(\(i.e.,)i(ma)m(y)f(b)s
+(e)e(normalized)i(in)m(to)390 1427 y(di\013eren)m(t)g(strings)f(b)m(y)g
+(di\013eren)m(t)h(implemen)m(tations\).)150 1626 y Fq(pr29)p
+399 1626 37 5 v 55 w(8z)3350 1823 y Fx([F)-8 b(unction])-3599
+b Fp(int)53 b(pr29_8z)48 b Fo(\()p Fn(const)31 b(c)m(har)g(*)g
+Fm(in)12 b Fo(\))390 1933 y Fn(in)p Fx(:)40 b(zero)32
+b(terminated)e(input)g(UTF-8)h(string.)390 2067 y(Chec)m(k)23
+b(the)g(input)f(to)i(see)f(if)g(it)g(ma)m(y)g(b)s(e)g(normalized)g(in)m
+(to)h(di\013eren)m(t)f(strings)g(b)m(y)f(di\013eren)m(t)i(NFK)m(C)390
+2177 y(implemen)m(tations,)32 b(due)e(to)h(an)f(anomaly)h(in)f(the)h
+(NFK)m(C)g(sp)s(eci\014cations.)390 2311 y Fl(Return)47
+b(v)-5 b(alue:)75 b Fx(Returns)47 b(the)g Fr(Pr29_rc)e
+Fx(v)-5 b(alue)48 b Fr(PR29_SUCCESS)c Fx(on)k(success,)k(and)46
+b Fr(PR29_)390 2421 y(PROBLEM)28 b Fx(if)i(the)g(input)g(sequence)g(is)
+g(a)h Fr(")p Fx(problem)e(sequence)p Fr(")h Fx(\(i.e.,)i(ma)m(y)f(b)s
+(e)e(normalized)i(in)m(to)390 2531 y(di\013eren)m(t)37
+b(strings)e(b)m(y)h(di\013eren)m(t)h(implemen)m(tations\),)i(or)d
+Fr(PR29_STRINGPREP_ERROR)31 b Fx(if)36 b(there)390 2640
+y(w)m(as)31 b(a)g(problem)e(con)m(v)m(erting)j(the)f(string)f(from)g
+(UTF-8)i(to)f(UCS-4.)150 2873 y Fw(8.4)68 b(Error)45
+b(Handling)150 3097 y Fq(pr29)p 399 3097 V 55 w(strerror)3350
+3293 y Fx([F)-8 b(unction])-3599 b Fp(const)54 b(char)f(*)g
+(pr29_strerror)c Fo(\()p Fn(Pr29)p 1784 3293 28 4 v 41
+w(rc)30 b Fm(rc)12 b Fo(\))390 3403 y Fn(rc)6 b Fx(:)40
+b(an)30 b Fr(Pr29_rc)f Fx(return)g(co)s(de.)390 3538
+y(Con)m(v)m(ert)35 b(a)f(return)e(co)s(de)i(in)m(teger)i(to)e(a)g(text)
+h(string.)51 b(This)33 b(string)h(can)g(b)s(e)f(used)g(to)h(output)g(a)
+390 3647 y(diagnostic)e(message)f(to)g(the)g(user.)390
+3782 y Fl(PR29)p 617 3782 28 5 v 41 w(SUCCESS:)h Fx(Successful)h(op)s
+(eration.)53 b(This)33 b(v)-5 b(alue)35 b(is)f(guaran)m(teed)i(to)f
+(alw)m(a)m(ys)g(b)s(e)f(zero,)390 3891 y(the)23 b(remaining)f(ones)h
+(are)g(only)g(guaran)m(teed)g(to)g(hold)g(non-zero)g(v)-5
+b(alues,)24 b(for)f(logical)i(comparison)390 4001 y(purp)s(oses.)390
+4135 y Fl(PR29)p 617 4135 V 41 w(PR)m(OBLEM:)31 b Fx(A)f(problem)g
+(sequence)h(w)m(as)f(encoun)m(tered.)390 4270 y Fl(PR29)p
+617 4270 V 41 w(STRINGPREP)p 1272 4270 V 40 w(ERR)m(OR:)35
+b Fx(The)f(c)m(haracter)h(set)g(con)m(v)m(ersion)g(failed)g(\(only)g
+(for)e Fr(pr29_)390 4379 y(8\(\))c Fx(and)h Fr(pr29_8z\(\))p
+Fx(\).)390 4514 y Fl(Return)f(v)-5 b(alue:)40 b Fx(Returns)29
+b(a)g(p)s(oin)m(ter)h(to)g(a)f(statically)j(allo)s(cated)f(string)f
+(con)m(taining)h(a)e(descrip-)390 4623 y(tion)i(of)f(the)h(error)f
+(with)g(the)h(return)e(co)s(de)h Fr(rc)p Fx(.)p eop end
+%%Page: 38 43
+TeXDict begin 38 42 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(38)150 299 y Fu(9)80 b(Examples)150
+537 y Fx(This)26 b(c)m(hapter)h(con)m(tains)h(example)f(co)s(de)g(whic)
+m(h)g(illustrate)h(ho)m(w)e(`Libidn')g(can)h(b)s(e)f(used)g(when)g
+(writing)150 646 y(y)m(our)k(o)m(wn)h(application.)150
+880 y Fw(9.1)68 b(Example)46 b(1)150 1040 y Fx(This)30
+b(example)h(demonstrates)f(ho)m(w)h(the)f(stringprep)g(functions)g(are)
+g(used.)150 1176 y Fr(/*)47 b(example.c)e(---)i(Example)f(code)h
+(showing)f(how)h(to)g(use)g(stringprep\(\).)198 1285
+y(*)g(Copyright)e(\(C\))i(2002,)g(2003,)f(2004,)g(2005,)h(2006,)f
+(2007,)h(2008,)f(2009)h(Simon)f(Josefsson)198 1395 y(*)198
+1504 y(*)h(This)g(file)f(is)i(part)e(of)h(GNU)g(Libidn.)198
+1614 y(*)198 1724 y(*)g(This)g(program)f(is)h(free)f(software:)93
+b(you)47 b(can)g(redistribute)e(it)i(and/or)f(modify)198
+1833 y(*)h(it)g(under)g(the)g(terms)f(of)h(the)g(GNU)g(General)f
+(Public)g(License)g(as)h(published)e(by)198 1943 y(*)i(the)g(Free)g
+(Software)e(Foundation,)g(either)h(version)g(3)h(of)h(the)e(License,)g
+(or)198 2052 y(*)h(\(at)g(your)g(option\))f(any)g(later)h(version.)198
+2162 y(*)198 2271 y(*)g(This)g(program)f(is)h(distributed)e(in)i(the)g
+(hope)f(that)h(it)g(will)g(be)g(useful,)198 2381 y(*)g(but)g(WITHOUT)f
+(ANY)h(WARRANTY;)e(without)h(even)h(the)f(implied)g(warranty)g(of)198
+2491 y(*)h(MERCHANTABILITY)d(or)j(FITNESS)f(FOR)h(A)g(PARTICULAR)e
+(PURPOSE.)93 b(See)47 b(the)198 2600 y(*)g(GNU)g(General)f(Public)g
+(License)g(for)h(more)f(details.)198 2710 y(*)198 2819
+y(*)h(You)g(should)f(have)h(received)e(a)j(copy)e(of)i(the)f(GNU)f
+(General)g(Public)g(License)198 2929 y(*)h(along)g(with)f(this)h
+(program.)189 b(If)47 b(not,)f(see)h(<http://www.gnu.org/licen)o(ses/)o
+(>.)198 3039 y(*)198 3148 y(*/)150 3367 y(#include)f(<stdio.h>)150
+3477 y(#include)g(<stdlib.h>)150 3587 y(#include)g(<string.h>)150
+3696 y(#include)g(<locale.h>)617 b(/*)47 b(setlocale\(\))e(*/)150
+3806 y(#include)h(<stringprep.h>)150 4025 y(/*)198 4134
+y(*)h(Compiling)e(using)i(libtool)f(and)h(pkg-config)e(is)i
+(recommended:)198 4244 y(*)198 4354 y(*)g($)h(libtool)d(cc)j(-o)f
+(example)f(example.c)f(`pkg-config)g(--cflags)g(--libs)h(libidn`)198
+4463 y(*)h($)h(./example)198 4573 y(*)f(Input)g(string)f(encoded)f(as)j
+(`ISO-8859-1':)92 b(a)198 4682 y(*)47 b(Before)f(locale2utf8)f
+(\(length)h(2\):)94 b(aa)48 b(0a)198 4792 y(*)f(Before)f(stringprep)f
+(\(length)h(3\):)95 b(c2)47 b(aa)g(0a)198 4902 y(*)g(After)g
+(stringprep)e(\(length)g(2\):)95 b(61)47 b(0a)198 5011
+y(*)g($)198 5121 y(*)198 5230 y(*/)p eop end
+%%Page: 39 44
+TeXDict begin 39 43 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(39)150 299 y Fr(int)150 408 y(main)47
+b(\(void\))150 518 y({)245 628 y(char)g(buf[BUFSIZ];)245
+737 y(char)g(*p;)245 847 y(int)g(rc;)245 956 y(size_t)g(i;)245
+1176 y(setlocale)f(\(LC_ALL,)f(""\);)245 1395 y(printf)i(\("Input)e
+(string)h(encoded)g(as)h(`\045s':)95 b(",)47 b(stringprep_locale_chars)
+o(et)42 b(\(\)\);)245 1504 y(fflush)47 b(\(stdout\);)245
+1614 y(fgets)g(\(buf,)f(BUFSIZ,)g(stdin\);)245 1833 y(printf)h
+(\("Before)e(locale2utf8)g(\(length)h(\045d\):)94 b(",)47
+b(strlen)f(\(buf\)\);)245 1943 y(for)h(\(i)h(=)f(0;)g(i)h(<)f(strlen)f
+(\(buf\);)g(i++\))341 2052 y(printf)g(\("\04502x)g(",)h(buf[i])f(&)i
+(0xFF\);)245 2162 y(printf)f(\("\\n"\);)245 2381 y(p)h(=)f
+(stringprep_locale_to_utf8)41 b(\(buf\);)245 2491 y(if)48
+b(\(p\))341 2600 y({)436 2710 y(strcpy)e(\(buf,)h(p\);)436
+2819 y(free)g(\(p\);)341 2929 y(})245 3039 y(else)341
+3148 y(printf)f(\("Could)g(not)h(convert)f(string)g(to)h(UTF-8,)f
+(continuing)f(anyway...\\n"\);)245 3367 y(printf)i(\("Before)e
+(stringprep)g(\(length)h(\045d\):)94 b(",)47 b(strlen)g(\(buf\)\);)245
+3477 y(for)g(\(i)h(=)f(0;)g(i)h(<)f(strlen)f(\(buf\);)g(i++\))341
+3587 y(printf)g(\("\04502x)g(",)h(buf[i])f(&)i(0xFF\);)245
+3696 y(printf)f(\("\\n"\);)245 3915 y(rc)h(=)f(stringprep)e(\(buf,)h
+(BUFSIZ,)g(0,)h(stringprep_nameprep\);)245 4025 y(if)h(\(rc)f(!=)g
+(STRINGPREP_OK\))341 4134 y(printf)f(\("Stringprep)e(failed)j
+(\(\045d\):)94 b(\045s\\n",)46 b(rc,)h(stringprep_strerror)42
+b(\(rc\)\);)245 4244 y(else)341 4354 y({)436 4463 y(printf)k(\("After)g
+(stringprep)f(\(length)h(\045d\):)94 b(",)48 b(strlen)e(\(buf\)\);)436
+4573 y(for)h(\(i)g(=)h(0;)f(i)h(<)f(strlen)f(\(buf\);)g(i++\))532
+4682 y(printf)g(\("\04502x)g(",)h(buf[i])f(&)i(0xFF\);)436
+4792 y(printf)e(\("\\n"\);)341 4902 y(})245 5121 y(return)h(0;)150
+5230 y(})p eop end
+%%Page: 40 45
+TeXDict begin 40 44 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(40)150 299 y Fw(9.2)68 b(Example)46
+b(2)150 458 y Fx(This)30 b(example)h(demonstrates)f(ho)m(w)h(the)f(pun)
+m(yco)s(de)g(functions)g(are)h(used.)150 628 y Fr(/*)47
+b(example2.c)e(---)i(Example)f(code)h(showing)e(how)i(to)g(use)g
+(punycode.)198 737 y(*)g(Copyright)e(\(C\))i(2002,)g(2003,)f(2004,)g
+(2005,)h(2006,)f(2007,)h(2008,)f(2009)h(Simon)f(Josefsson)198
+847 y(*)h(Copyright)e(\(C\))i(2002)95 b(Adam)46 b(M.)i(Costello)198
+956 y(*)198 1066 y(*)f(This)g(file)f(is)i(part)e(of)h(GNU)g(Libidn.)198
+1176 y(*)198 1285 y(*)g(This)g(program)f(is)h(free)f(software:)93
+b(you)47 b(can)g(redistribute)e(it)i(and/or)f(modify)198
+1395 y(*)h(it)g(under)g(the)g(terms)f(of)h(the)g(GNU)g(General)f
+(Public)g(License)g(as)h(published)e(by)198 1504 y(*)i(the)g(Free)g
+(Software)e(Foundation,)g(either)h(version)g(3)h(of)h(the)e(License,)g
+(or)198 1614 y(*)h(\(at)g(your)g(option\))f(any)g(later)h(version.)198
+1724 y(*)198 1833 y(*)g(This)g(program)f(is)h(distributed)e(in)i(the)g
+(hope)f(that)h(it)g(will)g(be)g(useful,)198 1943 y(*)g(but)g(WITHOUT)f
+(ANY)h(WARRANTY;)e(without)h(even)h(the)f(implied)g(warranty)g(of)198
+2052 y(*)h(MERCHANTABILITY)d(or)j(FITNESS)f(FOR)h(A)g(PARTICULAR)e
+(PURPOSE.)93 b(See)47 b(the)198 2162 y(*)g(GNU)g(General)f(Public)g
+(License)g(for)h(more)f(details.)198 2271 y(*)198 2381
+y(*)h(You)g(should)f(have)h(received)e(a)j(copy)e(of)i(the)f(GNU)f
+(General)g(Public)g(License)198 2491 y(*)h(along)g(with)f(this)h
+(program.)189 b(If)47 b(not,)f(see)h(<http://www.gnu.org/licen)o(ses/)o
+(>.)198 2600 y(*)198 2710 y(*/)150 2929 y(#include)f(<locale.h>)617
+b(/*)47 b(setlocale\(\))e(*/)150 3148 y(/*)198 3258 y(*)i(This)g(file)f
+(is)i(derived)d(from)i(RFC)g(3492)g(written)e(by)j(Adam)e(M.)h
+(Costello.)198 3367 y(*)198 3477 y(*)g(Disclaimer)e(and)i(license:)93
+b(Regarding)46 b(this)g(entire)g(document)g(or)h(any)198
+3587 y(*)g(portion)f(of)h(it)g(\(including)e(the)i(pseudocode)e(and)i
+(C)h(code\),)e(the)h(author)198 3696 y(*)g(makes)g(no)g(guarantees)e
+(and)i(is)g(not)g(responsible)d(for)j(any)g(damage)f(resulting)198
+3806 y(*)h(from)g(its)g(use.)190 b(The)46 b(author)h(grants)f
+(irrevocable)e(permission)h(to)j(anyone)198 3915 y(*)f(to)g(use,)g
+(modify,)f(and)h(distribute)e(it)i(in)g(any)g(way)g(that)g(does)f(not)h
+(diminish)198 4025 y(*)g(the)g(rights)f(of)h(anyone)f(else)h(to)g(use,)
+g(modify,)f(and)h(distribute)e(it,)198 4134 y(*)i(provided)f(that)g
+(redistributed)f(derivative)g(works)h(do)h(not)g(contain)198
+4244 y(*)g(misleading)e(author)h(or)h(version)f(information.)188
+b(Derivative)45 b(works)h(need)198 4354 y(*)h(not)g(be)g(licensed)f
+(under)g(similar)g(terms.)198 4463 y(*)198 4573 y(*/)150
+4792 y(#include)g(<assert.h>)150 4902 y(#include)g(<stdio.h>)150
+5011 y(#include)g(<stdlib.h>)150 5121 y(#include)g(<string.h>)150
+5340 y(#include)g(<punycode.h>)p eop end
+%%Page: 41 46
+TeXDict begin 41 45 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(41)150 408 y Fr(/*)47 b(For)g(testing,)f(we'll)g
+(just)h(set)g(some)f(compile-time)f(limits)h(rather)g(than)g(*/)150
+518 y(/*)h(use)g(malloc\(\),)e(and)i(set)g(a)h(compile-time)c(option)i
+(rather)g(than)h(using)f(a)95 b(*/)150 628 y(/*)47 b(command-line)e
+(option.)4293 b(*/)150 847 y(enum)150 956 y({)245 1066
+y(unicode_max_length)43 b(=)48 b(256,)245 1176 y(ace_max_length)c(=)k
+(256)150 1285 y(};)150 1504 y(static)e(void)150 1614
+y(usage)g(\(char)h(**argv\))150 1724 y({)245 1833 y(fprintf)f
+(\(stderr,)675 1943 y("\\n")675 2052 y("\045s)h(-e)g(reads)f(code)h
+(points)f(and)h(writes)f(a)i(Punycode)d(string.\\n")675
+2162 y("\045s)i(-d)g(reads)f(a)i(Punycode)d(string)i(and)f(writes)h
+(code)f(points.\\n")675 2271 y("\\n")675 2381 y("Input)g(and)h(output)f
+(are)h(plain)f(text)h(in)g(the)g(native)f(character)f(set.\\n")675
+2491 y("Code)h(points)g(are)h(in)h(the)e(form)h(u+hex)f(separated)g(by)
+h(whitespace.\\n")675 2600 y("Although)e(the)i(specification)d(allows)i
+(Punycode)g(strings)g(to)h(contain\\n")675 2710 y("any)g(characters)e
+(from)h(the)h(ASCII)g(repertoire,)d(this)j(test)g(code\\n")675
+2819 y("supports)e(only)i(the)g(printable)e(characters,)g(and)i(needs)f
+(the)h(Punycode\\n")675 2929 y("string)f(to)h(be)g(followed)f(by)h(a)g
+(newline.\\n")675 3039 y("The)g(case)f(of)h(the)g(u)h(in)f(u+hex)f(is)i
+(the)e(force-to-uppercase)d(flag.\\n",)675 3148 y(argv[0],)j
+(argv[0]\);)245 3258 y(exit)h(\(EXIT_FAILURE\);)150 3367
+y(})150 3587 y(static)f(void)150 3696 y(fail)h(\(const)f(char)g(*msg\))
+150 3806 y({)245 3915 y(fputs)h(\(msg,)f(stderr\);)245
+4025 y(exit)h(\(EXIT_FAILURE\);)150 4134 y(})150 4354
+y(static)f(const)g(char)h(too_big[])e(=)245 4463 y("input)i(or)g
+(output)f(is)h(too)g(large,)f(recompile)f(with)i(larger)f(limits\\n";)
+150 4573 y(static)g(const)g(char)h(invalid_input[])d(=)j("invalid)f
+(input\\n";)150 4682 y(static)g(const)g(char)h(overflow[])e(=)j
+("arithmetic)c(overflow\\n";)150 4792 y(static)i(const)g(char)h
+(io_error[])e(=)j("I/O)e(error\\n";)150 5011 y(/*)h(The)g(following)e
+(string)h(is)i(used)e(to)h(convert)f(printable)g(*/)150
+5121 y(/*)h(characters)e(between)h(ASCII)g(and)h(the)g(native)f
+(charset:)189 b(*/)150 5340 y(static)46 b(const)g(char)h(print_ascii[])
+d(=)k("\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n)o(\\n\\n)o(\\n\\n)o(\\n")41
+b("\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n)o(\\n\\)o(n\\n\\)o(n")h(")47
+b(!\\"#$\045&'\(\)*+,-./")c("0123456789:;<=>?")g("\\0x40")93
+b(/*)48 b(at)f(sign)f(*/)p eop end
+%%Page: 42 47
+TeXDict begin 42 46 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(42)245 299 y Fr("ABCDEFGHIJKLMNO")245
+408 y("PQRSTUVWXYZ[\\\\]^_")43 b("`abcdefghijklmno")g
+("pqrstuvwxyz{|}~\\n";)150 628 y(int)150 737 y(main)k(\(int)f(argc,)h
+(char)f(**argv\))150 847 y({)245 956 y(enum)h(punycode_status)d
+(status;)245 1066 y(int)j(r;)245 1176 y(size_t)g(input_length,)d
+(output_length,)g(j;)245 1285 y(unsigned)i(char)h
+(case_flags[unicode_max_)o(leng)o(th])o(;)245 1504 y(setlocale)f
+(\(LC_ALL,)f(""\);)245 1724 y(if)j(\(argc)e(!=)h(2\))341
+1833 y(usage)f(\(argv\);)245 1943 y(if)i(\(argv[1][0])c(!=)k('-'\))341
+2052 y(usage)e(\(argv\);)245 2162 y(if)i(\(argv[1][2])c(!=)k(0\))341
+2271 y(usage)e(\(argv\);)245 2491 y(if)i(\(argv[1][1])c(==)k('e'\))341
+2600 y({)436 2710 y(uint32_t)e(input[unicode_max_length)o(];)436
+2819 y(unsigned)g(long)h(codept;)436 2929 y(char)g
+(output[ace_max_length)42 b(+)47 b(1],)g(uplus[3];)436
+3039 y(int)g(c;)436 3258 y(/*)h(Read)e(the)h(input)f(code)h(points:)94
+b(*/)436 3477 y(input_length)45 b(=)i(0;)436 3696 y(for)g(\(;;\))532
+3806 y({)627 3915 y(r)h(=)f(scanf)g(\("\0452s\045lx",)e(uplus,)h
+(&codept\);)627 4025 y(if)h(\(ferror)f(\(stdin\)\))723
+4134 y(fail)g(\(io_error\);)627 4244 y(if)h(\(r)h(==)f(EOF)g(||)g(r)g
+(==)h(0\))723 4354 y(break;)627 4573 y(if)f(\(r)h(!=)f(2)g(||)g
+(uplus[1])f(!=)h('+')g(||)g(codept)f(>)i(\(uint32_t\))d(-)i(1\))723
+4682 y({)818 4792 y(fail)g(\(invalid_input\);)723 4902
+y(})627 5121 y(if)g(\(input_length)e(==)i(unicode_max_length\))723
+5230 y(fail)f(\(too_big\);)p eop end
+%%Page: 43 48
+TeXDict begin 43 47 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(43)627 299 y Fr(if)47 b(\(uplus[0])f(==)h('u'\))723
+408 y(case_flags[input_length)o(])42 b(=)47 b(0;)627
+518 y(else)g(if)g(\(uplus[0])e(==)j('U'\))723 628 y
+(case_flags[input_length)o(])42 b(=)47 b(1;)627 737 y(else)723
+847 y(fail)f(\(invalid_input\);)627 1066 y(input[input_length++])c(=)48
+b(codept;)532 1176 y(})436 1395 y(/*)g(Encode:)93 b(*/)436
+1614 y(output_length)45 b(=)i(ace_max_length;)436 1724
+y(status)f(=)i(punycode_encode)c(\(input_length,)f(input,)k
+(case_flags,)1677 1833 y(&output_length,)d(output\);)436
+1943 y(if)k(\(status)d(==)j(punycode_bad_input\))532
+2052 y(fail)e(\(invalid_input\);)436 2162 y(if)i(\(status)d(==)j
+(punycode_big_output\))532 2271 y(fail)e(\(too_big\);)436
+2381 y(if)i(\(status)d(==)j(punycode_overflow\))532 2491
+y(fail)e(\(overflow\);)436 2600 y(assert)g(\(status)g(==)h
+(punycode_success\);)436 2819 y(/*)h(Convert)d(to)j(native)e(charset)f
+(and)i(output:)94 b(*/)436 3039 y(for)47 b(\(j)g(=)h(0;)f(j)h(<)f
+(output_length;)d(++j\))532 3148 y({)627 3258 y(c)k(=)f(output[j];)627
+3367 y(assert)f(\(c)i(>=)f(0)g(&&)g(c)h(<=)f(127\);)627
+3477 y(if)g(\(print_ascii[c])d(==)j(0\))723 3587 y(fail)f
+(\(invalid_input\);)627 3696 y(output[j])g(=)h(print_ascii[c];)532
+3806 y(})436 4025 y(output[j])f(=)h(0;)436 4134 y(r)h(=)f(puts)g
+(\(output\);)436 4244 y(if)h(\(r)f(==)g(EOF\))532 4354
+y(fail)f(\(io_error\);)436 4463 y(return)g(EXIT_SUCCESS;)341
+4573 y(})245 4792 y(if)i(\(argv[1][1])c(==)k('d'\))341
+4902 y({)436 5011 y(char)f(input[ace_max_length)42 b(+)48
+b(2],)f(*p,)g(*pp;)436 5121 y(uint32_t)f(output[unicode_max_lengt)o
+(h];)436 5340 y(/*)i(Read)e(the)h(Punycode)f(input)g(string)g(and)h
+(convert)f(to)h(ASCII:)f(*/)p eop end
+%%Page: 44 49
+TeXDict begin 44 48 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(44)436 408 y Fr(fgets)47 b(\(input,)f(ace_max_length)
+d(+)48 b(2,)f(stdin\);)436 518 y(if)h(\(ferror)d(\(stdin\)\))532
+628 y(fail)h(\(io_error\);)436 737 y(if)i(\(feof)e(\(stdin\)\))532
+847 y(fail)g(\(invalid_input\);)436 956 y(input_length)f(=)i(strlen)f
+(\(input\))g(-)i(1;)436 1066 y(if)g(\(input[input_length])42
+b(!=)47 b('\\n'\))532 1176 y(fail)f(\(too_big\);)436
+1285 y(input[input_length])d(=)k(0;)436 1504 y(for)g(\(p)g(=)h(input;)e
+(*p)h(!=)g(0;)h(++p\))532 1614 y({)627 1724 y(pp)f(=)h(strchr)e
+(\(print_ascii,)e(*p\);)627 1833 y(if)j(\(pp)g(==)h(0\))723
+1943 y(fail)e(\(invalid_input\);)627 2052 y(*p)h(=)h(pp)f(-)h
+(print_ascii;)532 2162 y(})436 2381 y(/*)g(Decode:)93
+b(*/)436 2600 y(output_length)45 b(=)i(unicode_max_length;)436
+2710 y(status)f(=)i(punycode_decode)c(\(input_length,)f(input,)k
+(&output_length,)1677 2819 y(output,)f(case_flags\);)436
+2929 y(if)i(\(status)d(==)j(punycode_bad_input\))532
+3039 y(fail)e(\(invalid_input\);)436 3148 y(if)i(\(status)d(==)j
+(punycode_big_output\))532 3258 y(fail)e(\(too_big\);)436
+3367 y(if)i(\(status)d(==)j(punycode_overflow\))532 3477
+y(fail)e(\(overflow\);)436 3587 y(assert)g(\(status)g(==)h
+(punycode_success\);)436 3806 y(/*)h(Output)e(the)h(result:)93
+b(*/)436 4025 y(for)47 b(\(j)g(=)h(0;)f(j)h(<)f(output_length;)d(++j\))
+532 4134 y({)627 4244 y(r)k(=)f(printf)f(\("\045s+\04504lX\\n",)1200
+4354 y(case_flags[j])e(?)95 b("U")47 b(:)95 b("u",)47
+b(\(unsigned)e(long\))i(output[j]\);)627 4463 y(if)g(\(r)h(<)f(0\))723
+4573 y(fail)f(\(io_error\);)532 4682 y(})436 4902 y(return)g
+(EXIT_SUCCESS;)341 5011 y(})245 5230 y(usage)h(\(argv\);)245
+5340 y(return)g(EXIT_SUCCESS;)473 b(/*)47 b(not)g(reached,)f(but)h
+(quiets)f(compiler)f(warning)h(*/)p eop end
+%%Page: 45 50
+TeXDict begin 45 49 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(45)150 299 y Fr(})150 544 y Fw(9.3)68
+b(Example)46 b(3)150 704 y Fx(This)40 b(example)i(demonstrates)g(ho)m
+(w)f(the)g(library)g(is)g(used)g(to)h(con)m(v)m(ert)h(in)m
+(ternationalized)g(domain)150 813 y(names)30 b(in)m(to)i(ASCI)s(I)c
+(compatible)k(names.)150 956 y Fr(/*)47 b(example3.c)e(---)i(Example)f
+(ToASCII\(\))f(code)i(showing)f(how)h(to)g(use)g(Libidn.)198
+1066 y(*)g(Copyright)e(\(C\))i(2002,)g(2003,)f(2004,)g(2005,)h(2006,)f
+(2007,)h(2008,)f(2009)h(Simon)f(Josefsson)198 1176 y(*)198
+1285 y(*)h(This)g(file)f(is)i(part)e(of)h(GNU)g(Libidn.)198
+1395 y(*)198 1504 y(*)g(This)g(program)f(is)h(free)f(software:)93
+b(you)47 b(can)g(redistribute)e(it)i(and/or)f(modify)198
+1614 y(*)h(it)g(under)g(the)g(terms)f(of)h(the)g(GNU)g(General)f
+(Public)g(License)g(as)h(published)e(by)198 1724 y(*)i(the)g(Free)g
+(Software)e(Foundation,)g(either)h(version)g(3)h(of)h(the)e(License,)g
+(or)198 1833 y(*)h(\(at)g(your)g(option\))f(any)g(later)h(version.)198
+1943 y(*)198 2052 y(*)g(This)g(program)f(is)h(distributed)e(in)i(the)g
+(hope)f(that)h(it)g(will)g(be)g(useful,)198 2162 y(*)g(but)g(WITHOUT)f
+(ANY)h(WARRANTY;)e(without)h(even)h(the)f(implied)g(warranty)g(of)198
+2271 y(*)h(MERCHANTABILITY)d(or)j(FITNESS)f(FOR)h(A)g(PARTICULAR)e
+(PURPOSE.)93 b(See)47 b(the)198 2381 y(*)g(GNU)g(General)f(Public)g
+(License)g(for)h(more)f(details.)198 2491 y(*)198 2600
+y(*)h(You)g(should)f(have)h(received)e(a)j(copy)e(of)i(the)f(GNU)f
+(General)g(Public)g(License)198 2710 y(*)h(along)g(with)f(this)h
+(program.)189 b(If)47 b(not,)f(see)h(<http://www.gnu.org/licen)o(ses/)o
+(>.)198 2819 y(*)198 2929 y(*/)150 3148 y(#include)f(<stdio.h>)150
+3258 y(#include)g(<stdlib.h>)150 3367 y(#include)g(<string.h>)150
+3477 y(#include)g(<locale.h>)617 b(/*)47 b(setlocale\(\))e(*/)150
+3587 y(#include)h(<stringprep.h>)425 b(/*)47 b
+(stringprep_locale_charset\()o(\))42 b(*/)150 3696 y(#include)k
+(<idna.h>)713 b(/*)47 b(idna_to_ascii_lz\(\))c(*/)150
+3915 y(/*)198 4025 y(*)k(Compiling)e(using)i(libtool)f(and)h
+(pkg-config)e(is)i(recommended:)198 4134 y(*)198 4244
+y(*)g($)h(libtool)d(cc)j(-o)f(example3)e(example3.c)g(`pkg-config)g
+(--cflags)h(--libs)g(libidn`)198 4354 y(*)h($)h(./example3)198
+4463 y(*)f(Input)g(domain)f(encoded)f(as)j(`ISO-8859-1':)92
+b(www.raksmorgaasa.exampl)o(e)198 4573 y(*)47 b(Read)g(string)f
+(\(length)g(23\):)94 b(77)47 b(77)g(77)h(2e)f(72)g(e4)g(6b)g(73)h(6d)f
+(f6)g(72)g(67)g(e5)g(73)h(aa)f(2e)g(65)g(78)g(61)h(6d)f(70)g(6c)g(65)
+198 4682 y(*)g(ACE)g(label)f(\(length)g(33\):)95 b
+('www.xn--rksmrgsa-0zap8)o(p.ex)o(amp)o(le')198 4792
+y(*)47 b(77)g(77)h(77)f(2e)g(78)g(6e)g(2d)g(2d)h(72)f(6b)g(73)g(6d)g
+(72)h(67)f(73)g(61)g(2d)g(30)g(7a)h(61)f(70)g(38)g(70)g(2e)h(65)f(78)g
+(61)g(6d)g(70)g(6c)h(65)198 4902 y(*)f($)198 5011 y(*)198
+5121 y(*/)150 5340 y(int)p eop end
+%%Page: 46 51
+TeXDict begin 46 50 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(46)150 299 y Fr(main)47 b(\(void\))150
+408 y({)245 518 y(char)g(buf[BUFSIZ];)245 628 y(char)g(*p;)245
+737 y(int)g(rc;)245 847 y(size_t)g(i;)245 1066 y(setlocale)f(\(LC_ALL,)
+f(""\);)245 1285 y(printf)i(\("Input)e(domain)h(encoded)g(as)h
+(`\045s':)95 b(",)47 b(stringprep_locale_chars)o(et)42
+b(\(\)\);)245 1395 y(fflush)47 b(\(stdout\);)245 1504
+y(fgets)g(\(buf,)f(BUFSIZ,)g(stdin\);)245 1614 y(buf[strlen)f(\(buf\))i
+(-)g(1])g(=)h('\\0';)245 1833 y(printf)f(\("Read)f(string)g(\(length)g
+(\045d\):)94 b(",)47 b(strlen)f(\(buf\)\);)245 1943 y(for)h(\(i)h(=)f
+(0;)g(i)h(<)f(strlen)f(\(buf\);)g(i++\))341 2052 y(printf)g(\("\04502x)
+g(",)h(buf[i])f(&)i(0xFF\);)245 2162 y(printf)f(\("\\n"\);)245
+2381 y(rc)h(=)f(idna_to_ascii_lz)c(\(buf,)k(&p,)g(0\);)245
+2491 y(if)h(\(rc)f(!=)g(IDNA_SUCCESS\))341 2600 y({)436
+2710 y(printf)f(\("ToASCII\(\))f(failed)h(\(\045d\):)94
+b(\045s\\n",)46 b(rc,)h(idna_strerror)e(\(rc\)\);)436
+2819 y(exit)i(\(1\);)341 2929 y(})245 3148 y(printf)g(\("ACE)f(label)g
+(\(length)g(\045d\):)94 b('\045s'\\n",)46 b(strlen)g(\(p\),)h(p\);)245
+3258 y(for)g(\(i)h(=)f(0;)g(i)h(<)f(strlen)f(\(p\);)h(i++\))341
+3367 y(printf)f(\("\04502x)g(",)h(p[i])g(&)g(0xFF\);)245
+3477 y(printf)g(\("\\n"\);)245 3696 y(free)g(\(p\);)245
+3915 y(return)g(0;)150 4025 y(})150 4270 y Fw(9.4)68
+b(Example)46 b(4)150 4430 y Fx(This)30 b(example)h(demonstrates)f(ho)m
+(w)h(the)f(library)g(is)h(used)e(to)i(con)m(v)m(ert)h(ASCI)s(I)d
+(compatible)j(names)e(to)150 4539 y(in)m(ternationalized)j(domain)d
+(names.)150 4682 y Fr(/*)47 b(example4.c)e(---)i(Example)f
+(ToUnicode\(\))f(code)h(showing)g(how)h(to)g(use)g(Libidn.)198
+4792 y(*)g(Copyright)e(\(C\))i(2002,)g(2003,)f(2004,)g(2005,)h(2006,)f
+(2007,)h(2008,)f(2009)h(Simon)f(Josefsson)198 4902 y(*)198
+5011 y(*)h(This)g(file)f(is)i(part)e(of)h(GNU)g(Libidn.)198
+5121 y(*)198 5230 y(*)g(This)g(program)f(is)h(free)f(software:)93
+b(you)47 b(can)g(redistribute)e(it)i(and/or)f(modify)198
+5340 y(*)h(it)g(under)g(the)g(terms)f(of)h(the)g(GNU)g(General)f
+(Public)g(License)g(as)h(published)e(by)p eop end
+%%Page: 47 52
+TeXDict begin 47 51 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(47)198 299 y Fr(*)47 b(the)g(Free)g(Software)e
+(Foundation,)g(either)h(version)g(3)h(of)h(the)e(License,)g(or)198
+408 y(*)h(\(at)g(your)g(option\))f(any)g(later)h(version.)198
+518 y(*)198 628 y(*)g(This)g(program)f(is)h(distributed)e(in)i(the)g
+(hope)f(that)h(it)g(will)g(be)g(useful,)198 737 y(*)g(but)g(WITHOUT)f
+(ANY)h(WARRANTY;)e(without)h(even)h(the)f(implied)g(warranty)g(of)198
+847 y(*)h(MERCHANTABILITY)d(or)j(FITNESS)f(FOR)h(A)g(PARTICULAR)e
+(PURPOSE.)93 b(See)47 b(the)198 956 y(*)g(GNU)g(General)f(Public)g
+(License)g(for)h(more)f(details.)198 1066 y(*)198 1176
+y(*)h(You)g(should)f(have)h(received)e(a)j(copy)e(of)i(the)f(GNU)f
+(General)g(Public)g(License)198 1285 y(*)h(along)g(with)f(this)h
+(program.)189 b(If)47 b(not,)f(see)h(<http://www.gnu.org/licen)o(ses/)o
+(>.)198 1395 y(*)198 1504 y(*/)150 1724 y(#include)f(<stdio.h>)150
+1833 y(#include)g(<stdlib.h>)150 1943 y(#include)g(<string.h>)150
+2052 y(#include)g(<locale.h>)617 b(/*)47 b(setlocale\(\))e(*/)150
+2162 y(#include)h(<stringprep.h>)425 b(/*)47 b
+(stringprep_locale_charset\()o(\))42 b(*/)150 2271 y(#include)k
+(<idna.h>)713 b(/*)47 b(idna_to_unicode_lzlz\(\))42 b(*/)150
+2491 y(/*)198 2600 y(*)47 b(Compiling)e(using)i(libtool)f(and)h
+(pkg-config)e(is)i(recommended:)198 2710 y(*)198 2819
+y(*)g($)h(libtool)d(cc)j(-o)f(example4)e(example4.c)g(`pkg-config)g
+(--cflags)h(--libs)g(libidn`)198 2929 y(*)h($)h(./example4)198
+3039 y(*)f(Input)g(domain)f(encoded)f(as)j(`ISO-8859-1':)92
+b(www.xn--rksmrgsa-0zap8p)o(.ex)o(ampl)o(e)198 3148 y(*)47
+b(Read)g(string)f(\(length)g(33\):)94 b(77)47 b(77)g(77)h(2e)f(78)g(6e)
+g(2d)g(2d)h(72)f(6b)g(73)g(6d)g(72)g(67)h(73)f(61)g(2d)g(30)g(7a)h(61)f
+(70)g(38)g(70)g(2e)g(65)h(78)f(61)g(6d)g(70)g(6c)g(65)198
+3258 y(*)g(ACE)g(label)f(\(length)g(23\):)95 b('www.raksmorgaasa.examp)
+o(le')198 3367 y(*)47 b(77)g(77)h(77)f(2e)g(72)g(e4)g(6b)g(73)h(6d)f
+(f6)g(72)g(67)g(e5)h(73)f(61)g(2e)g(65)g(78)g(61)h(6d)f(70)g(6c)g(65)
+198 3477 y(*)g($)198 3587 y(*)198 3696 y(*/)150 3915
+y(int)150 4025 y(main)g(\(void\))150 4134 y({)245 4244
+y(char)g(buf[BUFSIZ];)245 4354 y(char)g(*p;)245 4463
+y(int)g(rc;)245 4573 y(size_t)g(i;)245 4792 y(setlocale)f(\(LC_ALL,)f
+(""\);)245 5011 y(printf)i(\("Input)e(domain)h(encoded)g(as)h(`\045s':)
+95 b(",)47 b(stringprep_locale_chars)o(et)42 b(\(\)\);)245
+5121 y(fflush)47 b(\(stdout\);)245 5230 y(fgets)g(\(buf,)f(BUFSIZ,)g
+(stdin\);)245 5340 y(buf[strlen)f(\(buf\))i(-)g(1])g(=)h('\\0';)p
+eop end
+%%Page: 48 53
+TeXDict begin 48 52 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(48)245 408 y Fr(printf)47 b(\("Read)f(string)g
+(\(length)g(\045d\):)94 b(",)47 b(strlen)f(\(buf\)\);)245
+518 y(for)h(\(i)h(=)f(0;)g(i)h(<)f(strlen)f(\(buf\);)g(i++\))341
+628 y(printf)g(\("\04502x)g(",)h(buf[i])f(&)i(0xFF\);)245
+737 y(printf)f(\("\\n"\);)245 956 y(rc)h(=)f(idna_to_unicode_lzlz)42
+b(\(buf,)47 b(&p,)g(0\);)245 1066 y(if)h(\(rc)f(!=)g(IDNA_SUCCESS\))341
+1176 y({)436 1285 y(printf)f(\("ToUnicode\(\))f(failed)h(\(\045d\):)94
+b(\045s\\n",)46 b(rc,)h(idna_strerror)d(\(rc\)\);)436
+1395 y(exit)j(\(1\);)341 1504 y(})245 1724 y(printf)g(\("ACE)f(label)g
+(\(length)g(\045d\):)94 b('\045s'\\n",)46 b(strlen)g(\(p\),)h(p\);)245
+1833 y(for)g(\(i)h(=)f(0;)g(i)h(<)f(strlen)f(\(p\);)h(i++\))341
+1943 y(printf)f(\("\04502x)g(",)h(p[i])g(&)g(0xFF\);)245
+2052 y(printf)g(\("\\n"\);)245 2271 y(free)g(\(p\);)245
+2491 y(return)g(0;)150 2600 y(})150 2846 y Fw(9.5)68
+b(Example)46 b(5)150 3005 y Fx(This)31 b(example)h(demonstrates)f(ho)m
+(w)h(the)f(library)g(is)h(used)e(to)i(c)m(hec)m(k)h(a)f(string)f(for)h
+(in)m(v)-5 b(alid)31 b(c)m(haracters)150 3115 y(within)f(a)h(sp)s
+(eci\014c)f(TLD.)150 3258 y Fr(/*)47 b(example5.c)e(---)i(Example)f
+(TLD)h(checking.)198 3367 y(*)g(Copyright)e(\(C\))i(2004,)g(2005,)f
+(2006,)g(2007,)h(2008,)f(2009)h(Simon)f(Josefsson)198
+3477 y(*)198 3587 y(*)h(This)g(file)f(is)i(part)e(of)h(GNU)g(Libidn.)
+198 3696 y(*)198 3806 y(*)g(This)g(program)f(is)h(free)f(software:)93
+b(you)47 b(can)g(redistribute)e(it)i(and/or)f(modify)198
+3915 y(*)h(it)g(under)g(the)g(terms)f(of)h(the)g(GNU)g(General)f
+(Public)g(License)g(as)h(published)e(by)198 4025 y(*)i(the)g(Free)g
+(Software)e(Foundation,)g(either)h(version)g(3)h(of)h(the)e(License,)g
+(or)198 4134 y(*)h(\(at)g(your)g(option\))f(any)g(later)h(version.)198
+4244 y(*)198 4354 y(*)g(This)g(program)f(is)h(distributed)e(in)i(the)g
+(hope)f(that)h(it)g(will)g(be)g(useful,)198 4463 y(*)g(but)g(WITHOUT)f
+(ANY)h(WARRANTY;)e(without)h(even)h(the)f(implied)g(warranty)g(of)198
+4573 y(*)h(MERCHANTABILITY)d(or)j(FITNESS)f(FOR)h(A)g(PARTICULAR)e
+(PURPOSE.)93 b(See)47 b(the)198 4682 y(*)g(GNU)g(General)f(Public)g
+(License)g(for)h(more)f(details.)198 4792 y(*)198 4902
+y(*)h(You)g(should)f(have)h(received)e(a)j(copy)e(of)i(the)f(GNU)f
+(General)g(Public)g(License)198 5011 y(*)h(along)g(with)f(this)h
+(program.)189 b(If)47 b(not,)f(see)h(<http://www.gnu.org/licen)o(ses/)o
+(>.)198 5121 y(*)198 5230 y(*/)p eop end
+%%Page: 49 54
+TeXDict begin 49 53 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(49)150 299 y Fr(#include)46 b(<stdio.h>)150
+408 y(#include)g(<stdlib.h>)150 518 y(#include)g(<string.h>)150
+737 y(/*)h(Get)g(stringprep_locale_charset)o(,)42 b(etc.)94
+b(*/)150 847 y(#include)46 b(<stringprep.h>)150 1066
+y(/*)h(Get)g(idna_to_ascii_8z,)c(etc.)95 b(*/)150 1176
+y(#include)46 b(<idna.h>)150 1395 y(/*)h(Get)g(tld_check_4z.)92
+b(*/)150 1504 y(#include)46 b(<tld.h>)150 1724 y(/*)198
+1833 y(*)h(Compiling)e(using)i(libtool)f(and)h(pkg-config)e(is)i
+(recommended:)198 1943 y(*)198 2052 y(*)g($)h(libtool)d(cc)j(-o)f
+(example5)e(example5.c)g(`pkg-config)g(--cflags)h(--libs)g(libidn`)198
+2162 y(*)h($)h(./example5)198 2271 y(*)f(Input)g(domain)f(encoded)f(as)
+j(`UTF-8':)93 b(fooss.no)198 2381 y(*)47 b(Read)g(string)f(\(length)g
+(8\):)94 b(66)48 b(6f)f(6f)g(c3)g(9f)g(2e)g(6e)h(6f)198
+2491 y(*)f(ToASCII)f(string)g(\(length)g(8\):)95 b(fooss.no)198
+2600 y(*)47 b(ToUnicode)e(string:)94 b(U+0066)46 b(U+006f)g(U+006f)g
+(U+0073)g(U+0073)g(U+002e)h(U+006e)f(U+006f)198 2710
+y(*)h(Domain)f(accepted)g(by)h(TLD)g(check)198 2819 y(*)198
+2929 y(*)g($)h(./example5)198 3039 y(*)f(Input)g(domain)f(encoded)f(as)
+j(`UTF-8':)93 b(greuroeuron.no)198 3148 y(*)47 b(Read)g(string)f
+(\(length)g(12\):)94 b(67)47 b(72)g(e2)h(82)f(ac)g(e2)g(82)g(ac)h(6e)f
+(2e)g(6e)g(6f)198 3258 y(*)g(ToASCII)f(string)g(\(length)g(16\):)94
+b(xn--grn-l50aa.no)198 3367 y(*)47 b(ToUnicode)e(string:)94
+b(U+0067)46 b(U+0072)g(U+20ac)g(U+20ac)g(U+006e)g(U+002e)h(U+006e)f
+(U+006f)198 3477 y(*)h(Domain)f(rejected)g(by)h(TLD)g(check,)f(Unicode)
+g(position)f(2)198 3587 y(*)198 3696 y(*/)150 3915 y(int)150
+4025 y(main)i(\(void\))150 4134 y({)245 4244 y(char)g(buf[BUFSIZ];)245
+4354 y(char)g(*p;)245 4463 y(uint32_t)f(*r;)245 4573
+y(int)h(rc;)245 4682 y(size_t)g(errpos,)e(i;)245 4902
+y(printf)i(\("Input)e(domain)h(encoded)g(as)h(`\045s':)95
+b(",)47 b(stringprep_locale_chars)o(et)42 b(\(\)\);)245
+5011 y(fflush)47 b(\(stdout\);)245 5121 y(fgets)g(\(buf,)f(BUFSIZ,)g
+(stdin\);)245 5230 y(buf[strlen)f(\(buf\))i(-)g(1])g(=)h('\\0';)p
+eop end
+%%Page: 50 55
+TeXDict begin 50 54 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(50)245 299 y Fr(printf)47 b(\("Read)f(string)g
+(\(length)g(\045d\):)94 b(",)47 b(strlen)f(\(buf\)\);)245
+408 y(for)h(\(i)h(=)f(0;)g(i)h(<)f(strlen)f(\(buf\);)g(i++\))341
+518 y(printf)g(\("\04502x)g(",)h(buf[i])f(&)i(0xFF\);)245
+628 y(printf)f(\("\\n"\);)245 847 y(p)h(=)f(stringprep_locale_to_utf8)
+41 b(\(buf\);)245 956 y(if)48 b(\(p\))341 1066 y({)436
+1176 y(strcpy)e(\(buf,)h(p\);)436 1285 y(free)g(\(p\);)341
+1395 y(})245 1504 y(else)341 1614 y(printf)f(\("Could)g(not)h(convert)f
+(string)g(to)h(UTF-8,)f(continuing)f(anyway...\\n"\);)245
+1833 y(rc)j(=)f(idna_to_ascii_8z)c(\(buf,)k(&p,)g(0\);)245
+1943 y(if)h(\(rc)f(!=)g(IDNA_SUCCESS\))341 2052 y({)436
+2162 y(printf)f(\("idna_to_ascii_8z)d(failed)j(\(\045d\):)94
+b(\045s\\n",)47 b(rc,)f(idna_strerror)f(\(rc\)\);)436
+2271 y(return)h(2;)341 2381 y(})245 2600 y(printf)h(\("ToASCII)e
+(string)h(\(length)g(\045d\):)94 b(\045s\\n",)46 b(strlen)g(\(p\),)h
+(p\);)245 2819 y(rc)h(=)f(idna_to_unicode_8z4z)42 b(\(p,)47
+b(&r,)g(0\);)245 2929 y(free)g(\(p\);)245 3039 y(if)h(\(rc)f(!=)g
+(IDNA_SUCCESS\))341 3148 y({)436 3258 y(printf)f
+(\("idna_to_unicode_8z4z)c(failed)k(\(\045d\):)94 b(\045s\\n",)818
+3367 y(rc,)47 b(idna_strerror)d(\(rc\)\);)436 3477 y(return)i(2;)341
+3587 y(})245 3806 y(printf)h(\("ToUnicode)d(string:)94
+b("\);)245 3915 y(for)47 b(\(i)h(=)f(0;)g(r[i];)g(i++\))341
+4025 y(printf)f(\("U+\04504x)g(",)h(r[i]\);)245 4134
+y(printf)g(\("\\n"\);)245 4354 y(rc)h(=)f(tld_check_4z)e(\(r,)h
+(&errpos,)g(NULL\);)245 4463 y(free)h(\(r\);)245 4573
+y(if)h(\(rc)f(==)g(TLD_INVALID\))341 4682 y({)436 4792
+y(printf)f(\("Domain)g(rejected)g(by)h(TLD)g(check,)f(Unicode)g
+(position)f(\045d\\n",)h(errpos\);)436 4902 y(return)g(1;)341
+5011 y(})245 5121 y(else)h(if)g(\(rc)g(!=)g(TLD_SUCCESS\))341
+5230 y({)436 5340 y(printf)f(\("tld_check_4z\(\))e(failed)i(\(\045d\):)
+94 b(\045s\\n",)46 b(rc,)h(tld_strerror)d(\(rc\)\);)p
+eop end
+%%Page: 51 56
+TeXDict begin 51 55 bop 150 -116 a Fx(Chapter)30 b(9:)41
+b(Examples)2661 b(51)436 299 y Fr(return)46 b(2;)341
+408 y(})245 628 y(printf)h(\("Domain)e(accepted)h(by)h(TLD)g
+(check\\n"\);)245 847 y(return)g(0;)150 956 y(})p eop
+end
+%%Page: 52 57
+TeXDict begin 52 56 bop 150 -116 a Fx(Chapter)30 b(10:)41
+b(In)m(v)m(oking)32 b(idn)2500 b(52)150 299 y Fu(10)80
+b(In)l(v)l(oking)52 b(idn)150 648 y Fw(10.1)68 b(Name)150
+807 y Fx(GNU)31 b(Libidn)e(\(idn\))h({)h(In)m(ternationalized)h(Domain)
+g(Names)f(command)f(line)g(to)s(ol)150 1047 y Fw(10.2)68
+b(Description)150 1206 y Fr(idn)34 b Fx(allo)m(ws)j(in)m
+(ternationalized)h(string)d(preparation)g(\(`)p Fr(stringprep)p
+Fx('\),)h(enco)s(ding)f(and)g(deco)s(ding)g(of)150 1316
+y(pun)m(yco)s(de)h(data,)j(and)d(IDNA)h(T)-8 b(oASCI)s(I/T)g(oUnico)s
+(de)37 b(op)s(erations)g(to)g(b)s(e)f(p)s(erformed)f(on)h(the)h(com-)
+150 1425 y(mand)30 b(line.)275 1564 y(If)i(strings)h(are)g(sp)s
+(eci\014ed)f(on)h(the)g(command)f(line,)i(they)g(are)f(used)f(as)h
+(input)f(and)g(the)h(computed)150 1674 y(output)h(is)g(prin)m(ted)f(to)
+i(standard)e(output)h Fr(stdout)p Fx(.)49 b(If)34 b(no)g(strings)g(are)
+g(sp)s(eci\014ed)f(on)h(the)g(command)150 1784 y(line,)42
+b(the)d(program)g(read)f(data,)k(line)e(b)m(y)f(line,)i(from)e(the)g
+(standard)f(input)g Fr(stdin)p Fx(,)i(and)e(prin)m(t)h(the)150
+1893 y(computed)g(output)g(to)h(standard)f(output.)67
+b(What)40 b(pro)s(cessing)f(is)h(p)s(erformed)e(\(e.g.,)43
+b(T)-8 b(oASCI)s(I,)39 b(or)150 2003 y(Pun)m(yco)s(de)32
+b(enco)s(de\))i(is)f(indicated)g(b)m(y)g(options.)48
+b(If)33 b(an)m(y)g(errors)f(are)h(encoun)m(tered,)i(the)e(execution)h
+(of)150 2112 y(the)d(applications)g(is)g(ab)s(orted.)275
+2252 y(All)e(strings)g(are)g(exp)s(ected)g(to)h(b)s(e)e(enco)s(ded)h
+(in)f(the)h(preferred)f(c)m(harset)i(used)e(b)m(y)h(y)m(our)g(lo)s
+(cale.)42 b(Use)150 2361 y Fr(--debug)c Fx(to)j(\014nd)e(out)i(what)f
+(this)g(c)m(harset)h(is.)71 b(Y)-8 b(ou)40 b(can)h(o)m(v)m(erride)g
+(the)g(c)m(harset)g(used)f(b)m(y)g(setting)150 2471 y(en)m(vironmen)m
+(t)31 b(v)-5 b(ariable)31 b Fr(CHARSET)p Fx(.)275 2610
+y(T)-8 b(o)38 b(pro)s(cess)g(a)g(string)g(that)h(starts)f(with)g
+Fr(-)p Fx(,)i(for)e(example)g Fr(-foo)p Fx(,)h(use)f
+Fr(--)g Fx(to)g(signal)h(the)f(end)g(of)150 2720 y(parameters,)31
+b(as)g(in)f Fr(idn)f(--quiet)g(-a)g(--)h(-foo)p Fx(.)150
+2959 y Fw(10.3)68 b(Options)150 3119 y Fr(idn)29 b Fx(recognizes)k
+(these)d(commands:)245 3258 y Fr(-h,)47 b(--help)715
+b(Print)46 b(help)h(and)g(exit)245 3477 y(-V,)g(--version)571
+b(Print)46 b(version)g(and)h(exit)245 3696 y(-s,)g(--stringprep)427
+b(Prepare)45 b(string)i(according)e(to)i(nameprep)f(profile)245
+3915 y(-d,)h(--punycode-decode)187 b(Decode)46 b(Punycode)245
+4134 y(-e,)h(--punycode-encode)187 b(Encode)46 b(Punycode)245
+4354 y(-a,)h(--idna-to-ascii)283 b(Convert)45 b(to)j(ACE)f(according)e
+(to)i(IDNA)g(\(default)e(mode\))245 4573 y(-u,)i(--idna-to-unicode)187
+b(Convert)45 b(from)i(ACE)g(according)e(to)i(IDNA)436
+4792 y(--allow-unassigned)139 b(Toggle)46 b(IDNA)g(AllowUnassigned)e
+(flag)j(\(default)e(off\))436 5011 y(--usestd3asciirules)91
+b(Toggle)46 b(IDNA)g(UseSTD3ASCIIRules)d(flag)k(\(default)f(off\))436
+5230 y(--no-tld)619 b(Don't)46 b(check)g(string)g(for)h(TLD)g(specific)
+f(rules)1534 5340 y(Only)h(for)g(--idna-to-ascii)c(and)k
+(--idna-to-unicode)p eop end
+%%Page: 53 58
+TeXDict begin 53 57 bop 150 -116 a Fx(Chapter)30 b(10:)41
+b(In)m(v)m(oking)32 b(idn)2500 b(53)245 408 y Fr(-n,)47
+b(--nfkc)715 b(Normalize)45 b(string)h(according)f(to)i(Unicode)f(v3.2)
+h(NFKC)245 628 y(-p,)g(--profile=STRING)235 b(Use)47
+b(specified)e(stringprep)g(profile)h(instead)1534 737
+y(Valid)g(stringprep)f(profiles:)h(`Nameprep',)1534 847
+y(`iSCSI',)g(`Nodeprep',)e(`Resourceprep',)1534 956 y(`trace',)i
+(`SASLprep')436 1176 y(--debug)667 b(Print)46 b(debugging)f
+(information)436 1395 y(--quiet)667 b(Silent)46 b(operation)150
+1673 y Fw(10.4)68 b(En)l(vironmen)l(t)46 b(V)-11 b(ariables)150
+1832 y Fx(The)25 b Fn(CHARSET)31 b Fx(en)m(vironmen)m(t)26
+b(v)-5 b(ariable)26 b(can)g(b)s(e)f(used)f(to)j(o)m(v)m(erride)f(what)g
+(c)m(haracter)h(set)f(to)g(b)s(e)f(used)150 1942 y(for)35
+b(deco)s(ding)f(incoming)i(data)f(\(i.e.,)j(on)c(the)h(command)g(line)g
+(or)g(on)f(the)h(standard)f(input)g(stream\),)150 2051
+y(and)27 b(to)i(enco)s(de)f(data)h(to)g(the)f(standard)f(output.)40
+b(If)27 b(y)m(our)h(system)g(is)h(set)f(up)f(correctly)-8
+b(,)31 b(ho)m(w)m(ev)m(er,)f(the)150 2161 y(application)i(will)e(guess)
+h(whic)m(h)f(c)m(haracter)i(set)f(is)f(used)g(automatically)-8
+b(.)44 b(Example)30 b(usage:)390 2326 y Fr($)47 b(CHARSET=ISO-8859-1)c
+(idn)k(--punycode-encode)390 2435 y(...)150 2713 y Fw(10.5)68
+b(Examples)150 2872 y Fx(Standard)29 b(usage,)i(reading)g(input)e(from)
+h(standard)g(input:)390 3037 y Fr(jas@latte:~$)44 b(idn)390
+3147 y(libidn)i(0.3.5)390 3256 y(Copyright)f(2002,)i(2003)f(Simon)h
+(Josefsson.)390 3366 y(GNU)g(Libidn)f(comes)g(with)h(NO)g(WARRANTY,)e
+(to)j(the)f(extent)f(permitted)f(by)i(law.)390 3475 y(You)g(may)g
+(redistribute)d(copies)i(of)i(GNU)e(Libidn)h(under)f(the)h(terms)f(of)
+390 3585 y(the)h(GNU)g(Lesser)f(General)g(Public)g(License.)93
+b(For)47 b(more)g(information)390 3695 y(about)f(these)h(matters,)e
+(see)i(the)g(file)g(named)f(COPYING.LIB.)390 3804 y(Type)h(each)f
+(input)h(string)f(on)h(a)g(line)g(by)g(itself,)f(terminated)f(by)i(a)h
+(newline)d(character.)390 3914 y(r\177)-48 b(aksm\177)g(org\027)g
+(as.se)390 4023 y(xn--rksmrgs-5wao1o.se)390 4133 y(jas@latte:~$)275
+4298 y Fx(Reading)30 b(input)g(from)g(command)g(line,)h(and)f
+(disabling)g(cop)m(yrigh)m(t)i(and)d(license)j(information:)390
+4463 y Fr(jas@latte:~$)44 b(idn)j(--quiet)f(r\177)-48
+b(aksm\177)g(org\027)g(as.se)44 b(bl\027)-48 b(ab\032rgr\034d.no)390
+4572 y(xn--rksmrgs-5wao1o.se)390 4682 y(xn--blbrgrd-fxak7p.no)390
+4791 y(jas@latte:~$)275 4956 y Fx(Accessing)31 b(a)g(sp)s(eci\014c)f
+(StringPrep)f(pro\014le)h(directly:)390 5121 y Fr(jas@latte:~$)44
+b(idn)j(--quiet)f(--profile=SASLprep)d(--stringprep)h(te\031t)3302
+5082 y Fh(a)p 3302 5095 36 4 v 390 5230 a Fr(te\031ta)390
+5340 y(jas@latte:~$)p eop end
+%%Page: 54 59
+TeXDict begin 54 58 bop 150 -116 a Fx(Chapter)30 b(10:)41
+b(In)m(v)m(oking)32 b(idn)2500 b(54)150 299 y Fw(10.6)68
+b(T)-11 b(roublesho)t(oting)150 458 y Fx(Getting)32 b(c)m(haracter)g
+(data)f(enco)s(ded)g(righ)m(t,)g(and)f(making)h(sure)f(Libidn)f(use)h
+(the)h(same)g(enco)s(ding,)g(can)150 568 y(b)s(e)i(di\016cult.)50
+b(The)33 b(reason)g(for)h(this)f(is)g(that)h(most)g(systems)g(enco)s
+(de)f(c)m(haracter)i(data)f(in)g(more)f(than)150 677
+y(one)e(c)m(haracter)g(enco)s(ding,)g(i.e.,)g(using)f
+Fr(UTF-8)f Fx(together)j(with)d Fr(ISO-8859-1)f Fx(or)i
+Fr(ISO-2022-JP)p Fx(.)38 b(This)150 787 y(problem)g(is)h(lik)m(ely)h
+(to)f(con)m(tin)m(ue)h(to)f(exist)h(un)m(til)e(only)h(one)g(c)m
+(haracter)h(enco)s(ding)f(come)g(out)g(as)g(the)150 897
+y(ev)m(olutionary)32 b(winner,)d(or)i(\(more)g(lik)m(ely)-8
+b(,)32 b(at)f(least)h(to)f(some)g(exten)m(ts\))h(forev)m(er.)275
+1027 y(The)d(\014rst)h(step)g(to)h(troublesho)s(oting)f(c)m(haracter)i
+(enco)s(ding)e(problems)g(with)g(Libidn)f(is)h(to)h(use)f(the)150
+1137 y(`)p Fr(--debug)p Fx(')24 b(parameter)j(to)f(\014nd)e(out)i(whic)
+m(h)g(c)m(haracter)h(set)g(enco)s(ding)f(`)p Fr(idn)p
+Fx(')f(b)s(eliev)m(e)i(y)m(our)f(lo)s(cale)h(uses.)390
+1268 y Fr(jas@latte:~$)44 b(idn)j(--debug)f(--quiet)g("")390
+1377 y(system)g(locale)g(uses)h(charset)f(`UTF-8'.)390
+1597 y(jas@latte:~$)275 1727 y Fx(If)27 b(it)i(prin)m(ts)f
+Fr(ANSI_X3.4-1968)c Fx(\(i.e.,)30 b Fr(US-ASCII)p Fx(\),)d(this)h
+(indicate)h(y)m(ou)g(ha)m(v)m(e)g(not)g(con\014gured)e(y)m(our)150
+1837 y(lo)s(cale)40 b(prop)s(erly)-8 b(.)66 b(T)-8 b(o)39
+b(con\014gure)f(the)h(lo)s(cale,)k(y)m(ou)c(can,)j(for)c(example,)k
+(use)c(`)p Fr(LANG=sv_SE.UTF-8;)150 1946 y(export)29
+b(LANG)p Fx(')g(at)i(a)g Fr(/bin/sh)d Fx(prompt,)i(to)g(set)h(up)e(y)m
+(our)i(lo)s(cale)h(for)e(a)g(Sw)m(edish)g(en)m(vironmen)m(t)g(using)150
+2056 y Fr(UTF-8)f Fx(as)i(the)f(enco)s(ding.)275 2187
+y(Sometimes)36 b(`)p Fr(idn)p Fx(')g(app)s(ear)g(to)h(b)s(e)e(unable)h
+(to)h(translate)g(from)f(y)m(our)g(system)g(lo)s(cale)i(in)m(to)f
+Fr(UTF-8)150 2296 y Fx(\(whic)m(h)30 b(is)h(used)e(in)m(ternally\),)j
+(and)e(y)m(ou)h(get)g(an)g(error)f(lik)m(e)h(the)g(follo)m(wing:)390
+2427 y Fr(jas@latte:~$)44 b(idn)j(--quiet)f(foo)390 2537
+y(idn:)h(could)f(not)h(convert)f(from)g(ISO-8859-1)f(to)j(UTF-8.)390
+2646 y(jas@latte:~$)275 2777 y Fx(The)95 b(simplest)h(explanation)h(is)
+e(that)i(y)m(ou)f(ha)m(v)m(en't)h(installed)g(the)e(`)p
+Fr(iconv)p Fx(')g(con-)150 2887 y(v)m(ersion)88 b(to)s(ols.)214
+b(Y)-8 b(ou)89 b(can)f(\014nd)e(it)j(as)f(a)g(standalone)h(library)e
+(in)h Fk(GNU)g Fx(Libicon)m(v)150 2996 y(\()p Fr
+(http://www.gnu.org/softwar)o(e/l)o(ibic)o(onv/)o Fx(\).)271
+b(On)109 b(man)m(y)g Fk(GNU)p Fx(/Lin)m(ux)h(systems,)150
+3106 y(this)38 b(library)g(is)h(part)f(of)g(the)h(system,)h(but)e(y)m
+(ou)h(ma)m(y)g(ha)m(v)m(e)g(to)g(install)h(additional)f(pac)m(k)-5
+b(ages)40 b(\(e.g.,)150 3215 y(`)p Fr(glibc-locale)p
+Fx(')28 b(for)i(Debian\))h(to)g(b)s(e)f(able)h(to)g(use)f(it.)275
+3346 y(Another)i(explanation)i(is)f(that)g(the)g(error)g(is)g(correct)h
+(and)e(y)m(ou)h(are)g(feeding)g(`)p Fr(idn)p Fx(')g(in)m(v)-5
+b(alid)33 b(data.)150 3456 y(This)e(can)i(happ)s(en)d(inadv)m(erten)m
+(tly)k(if)e(y)m(ou)g(are)h(not)f(careful)g(with)g(the)g(c)m(haracter)i
+(set)f(enco)s(dings)f(y)m(ou)150 3565 y(use.)65 b(F)-8
+b(or)40 b(example,)i(if)c(y)m(our)h(shell)g(run)e(in)i(a)g
+Fr(ISO-8859-1)d Fx(en)m(vironmen)m(t,)41 b(and)e(y)m(ou)g(in)m(v)m(ok)m
+(e)h(`)p Fr(idn)p Fx(')150 3675 y(with)29 b(the)h(`)p
+Fr(CHARSET)p Fx(')e(en)m(vironmen)m(t)h(v)-5 b(ariable)31
+b(as)e(follo)m(ws,)i(y)m(ou)f(will)g(feed)f(it)h Fr(ISO-8859-1)c
+Fx(c)m(haracters)150 3785 y(but)42 b(force)h(it)g(to)g(b)s(eliev)m(e)g
+(they)g(are)g Fr(UTF-8)p Fx(.)75 b(Naturally)43 b(this)g(will)f(lead)h
+(to)g(an)g(error,)i(unless)d(the)150 3894 y(b)m(yte)33
+b(sequences)g(happ)s(en)e(to)j(b)s(e)e(parsable)h(as)g
+Fr(UTF-8)p Fx(.)46 b(Note)34 b(that)g(ev)m(en)f(if)g(y)m(ou)g(don't)g
+(get)g(an)g(error,)150 4004 y(the)f(output)g(ma)m(y)h(b)s(e)e
+(incorrect)i(in)f(this)g(situation,)i(b)s(ecause)e Fr(ISO-8859-1)e
+Fx(and)h Fr(UTF-8)g Fx(do)s(es)h(not)g(in)150 4113 y(general)f(enco)s
+(de)g(the)f(same)h(c)m(haracters)h(as)f(the)f(same)h(b)m(yte)g
+(sequences.)390 4244 y Fr(jas@latte:~$)44 b(idn)j(--quiet)f(--debug)g
+("")390 4354 y(system)g(locale)g(uses)h(charset)f(`ISO-8859-1'.)390
+4573 y(jas@latte:~$)e(CHARSET=UTF-8)h(idn)i(--quiet)e(--debug)h(r\177)
+-48 b(aksm\177)g(org\027)g(as)390 4682 y(system)46 b(locale)g(uses)h
+(charset)f(`UTF-8'.)390 4792 y(input[0])g(=)h(U+0072)390
+4902 y(input[1])f(=)h(U+4af3)390 5011 y(input[2])f(=)h(U+006d)390
+5121 y(input[3])f(=)h(U+1b29e5)390 5230 y(input[4])f(=)h(U+0073)390
+5340 y(output[0])e(=)j(U+0078)p eop end
+%%Page: 55 60
+TeXDict begin 55 59 bop 150 -116 a Fx(Chapter)30 b(10:)41
+b(In)m(v)m(oking)32 b(idn)2500 b(55)390 299 y Fr(output[1])45
+b(=)j(U+006e)390 408 y(output[2])d(=)j(U+002d)390 518
+y(output[3])d(=)j(U+002d)390 628 y(output[4])d(=)j(U+0072)390
+737 y(output[5])d(=)j(U+006d)390 847 y(output[6])d(=)j(U+0073)390
+956 y(output[7])d(=)j(U+002d)390 1066 y(output[8])d(=)j(U+0068)390
+1176 y(output[9])d(=)j(U+0069)390 1285 y(output[10])d(=)i(U+0036)390
+1395 y(output[11])e(=)i(U+0064)390 1504 y(output[12])e(=)i(U+0035)390
+1614 y(output[13])e(=)i(U+0039)390 1724 y(output[14])e(=)i(U+0037)390
+1833 y(output[15])e(=)i(U+0035)390 1943 y(output[16])e(=)i(U+0035)390
+2052 y(output[17])e(=)i(U+0032)390 2162 y(output[18])e(=)i(U+0061)390
+2271 y(xn--rms-hi6d597552a)390 2381 y(jas@latte:~$)275
+2516 y Fx(The)35 b(sense)g(moral)i(here)e(is)h(to)g(forget)h(ab)s(out)e
+(`)p Fr(CHARSET)p Fx(')g(\(con\014gure)h(y)m(our)f(lo)s(cales)i(prop)s
+(erly)e(in-)150 2625 y(stead\))c(unless)f(y)m(ou)g(kno)m(w)h(what)f(y)m
+(ou)h(are)f(doing,)h(and)f(if)g(y)m(ou)h(w)m(an)m(t)g(to)g(use)f(it,)h
+(do)f(it)h(carefully)-8 b(,)31 b(after)150 2735 y(v)m(erifying)g(with)f
+(`)p Fr(--debug)p Fx(')f(that)i(y)m(ou)g(get)g(the)g(desired)f
+(results.)p eop end
+%%Page: 56 61
+TeXDict begin 56 60 bop 150 -116 a Fx(Chapter)30 b(11:)41
+b(Emacs)31 b(API)2546 b(56)150 299 y Fu(11)80 b(Emacs)54
+b(API)150 563 y Fx(Included)32 b(in)h(Libidn)g(are)g(`)p
+Fr(punycode.el)p Fx(')e(and)i(`)p Fr(idna.el)p Fx(')f(that)i(pro)m
+(vides)f(an)h(Emacs)f(Lisp)g(API)g(to)150 673 y(\(a)28
+b(limited)g(set)g(of)7 b(\))27 b(the)h(Libidn)e(API.)h(This)f(section)j
+(describ)s(es)d(the)h(API.)h(Curren)m(tly)e(the)h(IDNA)h(API)150
+783 y(alw)m(a)m(ys)k(set)f(the)g Fr(UseSTD3ASCIIRules)25
+b Fx(\015ag)31 b(and)f(clear)h(the)g Fr(AllowUnassigned)26
+b Fx(\015ag,)31 b(in)f(the)h(future)150 892 y(there)g(ma)m(y)g(b)s(e)e
+(functionalit)m(y)j(to)f(sp)s(ecify)f(these)h(\015ags)g(via)g(the)f
+(API.)150 1140 y Fw(11.1)68 b(Pun)l(yco)t(de)45 b(Emacs)g(API)3371
+1359 y Fx([V)-8 b(ariable])-3598 b Fp(punycode-program)390
+1469 y Fx(Name)34 b(of)g(the)g(GNU)g(Libidn)f(`)p Fr(idn)p
+Fx(')g(application.)52 b(The)33 b(default)h(is)f(`)p
+Fr(idn)p Fx('.)50 b(This)33 b(v)-5 b(ariable)35 b(can)390
+1578 y(b)s(e)30 b(customized.)3371 1783 y([V)-8 b(ariable])-3598
+b Fp(punycode-environment)390 1892 y Fx(List)34 b(of)g(en)m(vironmen)m
+(t)h(v)-5 b(ariable)35 b(de\014nitions)e(prep)s(ended)f(to)j(`)p
+Fr(process-environment)p Fx('.)46 b(The)390 2002 y(default)31
+b(is)f(`)p Fr(\("CHARSET=UTF-8"\))p Fx('.)36 b(This)30
+b(v)-5 b(ariable)31 b(can)g(b)s(e)f(customized.)3371
+2206 y([V)-8 b(ariable])-3598 b Fp(punycode-encode-parame)q(ter)q(s)390
+2316 y Fx(List)62 b(of)g(parameters)g(passed)f(to)i Fn(pun)m(yco)s
+(de-program)e Fx(to)h(in)m(v)m(ok)m(e)i(pun)m(yco)s(de)d(enco)s(ding)
+390 2426 y(mo)s(de.)67 b(The)39 b(default)h(is)g(`)p
+Fr(\("--quiet")27 b("--punycode-encode"\))p Fx('.)63
+b(This)39 b(v)-5 b(ariable)40 b(can)g(b)s(e)390 2535
+y(customized.)3371 2740 y([V)-8 b(ariable])-3598 b Fp
+(punycode-decode-parame)q(ter)q(s)390 2849 y Fx(P)m(arameters)40
+b(passed)e(to)i Fn(pun)m(yco)s(de-program)e Fx(to)i(in)m(v)m(ok)m(e)h
+(pun)m(yco)s(de)d(deco)s(ding)h(mo)s(de.)65 b(The)390
+2959 y(default)31 b(is)f(`)p Fr(\("--quiet")e("--punycode-decode"\))p
+Fx('.)35 b(This)30 b(v)-5 b(ariable)31 b(can)g(b)s(e)e(customized.)3350
+3164 y([F)-8 b(unction])-3599 b Fp(punycode-encode)50
+b Fn(string)390 3273 y Fx(Returns)29 b(a)i(Pun)m(yco)s(de)f(enco)s
+(ding)g(of)h(the)g Fn(string)8 b Fx(,)30 b(after)h(con)m(v)m(erting)h
+(the)f(input)e(in)m(to)i(UTF-8.)3350 3478 y([F)-8 b(unction])-3599
+b Fp(punycode-decode)50 b Fn(string)390 3587 y Fx(Returns)37
+b(a)h(p)s(ossibly)g(m)m(ultib)m(yte)h(string)f(whic)m(h)g(is)g(the)g
+(deco)s(ding)g(of)g(the)g Fn(string)46 b Fx(whic)m(h)38
+b(is)g(a)390 3697 y(pun)m(yco)s(de)30 b(enco)s(ded)g(string.)150
+3944 y Fw(11.2)68 b(IDNA)45 b(Emacs)g(API)3371 4164 y
+Fx([V)-8 b(ariable])-3598 b Fp(idna-program)390 4273
+y Fx(Name)34 b(of)g(the)g(GNU)g(Libidn)f(`)p Fr(idn)p
+Fx(')g(application.)52 b(The)33 b(default)h(is)f(`)p
+Fr(idn)p Fx('.)50 b(This)33 b(v)-5 b(ariable)35 b(can)390
+4383 y(b)s(e)30 b(customized.)3371 4587 y([V)-8 b(ariable])-3598
+b Fp(idna-environment)390 4697 y Fx(List)34 b(of)g(en)m(vironmen)m(t)h
+(v)-5 b(ariable)35 b(de\014nitions)e(prep)s(ended)f(to)j(`)p
+Fr(process-environment)p Fx('.)46 b(The)390 4807 y(default)31
+b(is)f(`)p Fr(\("CHARSET=UTF-8"\))p Fx('.)36 b(This)30
+b(v)-5 b(ariable)31 b(can)g(b)s(e)f(customized.)3371
+5011 y([V)-8 b(ariable])-3598 b Fp(idna-to-ascii-paramete)q(rs)390
+5121 y Fx(List)31 b(of)f(parameters)h(passed)f(to)h Fn(idna-program)f
+Fx(to)i(in)m(v)m(ok)m(e)g(IDNA)f(T)-8 b(oASCI)s(I)29
+b(mo)s(de.)41 b(The)30 b(de-)390 5230 y(fault)k(is)g(`)p
+Fr(\("--quiet")28 b("--idna-to-ascii")d("--usestd3asciirules"\))p
+Fx('.)45 b(This)33 b(v)-5 b(ariable)390 5340 y(can)31
+b(b)s(e)e(customized.)p eop end
+%%Page: 57 62
+TeXDict begin 57 61 bop 150 -116 a Fx(Chapter)30 b(11:)41
+b(Emacs)31 b(API)2546 b(57)3371 299 y([V)-8 b(ariable])-3598
+b Fp(idna-to-unicode-parame)q(ter)q(s)390 408 y Fx(P)m(arameters)38
+b(passed)e Fn(idna-program)g Fx(to)h(in)m(v)m(ok)m(e)i(IDNA)e(T)-8
+b(oUnico)s(de)37 b(mo)s(de.)59 b(The)36 b(default)h(is)390
+518 y(`)p Fr(\("--quiet")28 b("--idna-to-unicode")d
+("--usestd3asciirules"\))p Fx('.)73 b(This)43 b(v)-5
+b(ariable)44 b(can)390 628 y(b)s(e)30 b(customized.)3350
+812 y([F)-8 b(unction])-3599 b Fp(idna-to-ascii)49 b
+Fn(string)390 922 y Fx(Returns)26 b(an)h(ASCI)s(I)e(Compatible)j(Enco)s
+(ding)e(\(A)m(CE\))i(of)f(the)h(string)e(computed)h(b)m(y)g(the)g(IDNA)
+390 1031 y(T)-8 b(oASCI)s(I)29 b(op)s(eration)i(on)f(the)h(input)e
+Fn(string)8 b Fx(,)31 b(after)g(con)m(v)m(erting)h(the)e(input)g(to)h
+(UTF-8.)3350 1215 y([F)-8 b(unction])-3599 b Fp(idna-to-unicode)50
+b Fn(string)390 1325 y Fx(Returns)43 b(a)g(p)s(ossibly)g(m)m(ultib)m
+(yte)i(string)e(whic)m(h)g(is)h(the)g(output)f(of)g(the)h(IDNA)g(T)-8
+b(oUnico)s(de)390 1435 y(op)s(eration)31 b(computed)f(on)g(the)h(input)
+e Fn(string)8 b Fx(.)p eop end
+%%Page: 58 63
+TeXDict begin 58 62 bop 150 -116 a Fx(Chapter)30 b(12:)41
+b(Ja)m(v)-5 b(a)32 b(API)2627 b(58)150 299 y Fu(12)80
+b(Ja)l(v)-9 b(a)55 b(API)150 559 y Fx(Libidn)31 b(has)h(b)s(een)g(p)s
+(orted)g(to)h(the)f(Ja)m(v)-5 b(a)34 b(programming)e(language,)j(and)c
+(as)i(a)g(consequence)g(most)g(of)150 669 y(the)27 b(API)f(is)g(a)m(v)
+-5 b(ailable)29 b(to)e(nativ)m(e)h(Ja)m(v)-5 b(a)27 b(applications.)41
+b(This)26 b(section)h(con)m(tain)h(notes)f(on)f(this)g(supp)s(ort,)150
+778 y(complete)32 b(do)s(cumen)m(tation)f(is)f(p)s(ending.)275
+921 y(The)c(Ja)m(v)-5 b(a)28 b(library)-8 b(,)27 b(if)g(Libidn)f(has)g
+(b)s(een)g(built)h(with)f(Ja)m(v)-5 b(a)28 b(supp)s(ort)d(\(see)j
+(Section)f(1.7)h([Do)m(wnload-)150 1031 y(ing)h(and)f(Installing],)i
+(page)f(6\),)h(will)f(b)s(e)f(placed)i(in)e(`)p Fr
+(java/libidn-1.15.jar)p Fx('.)35 b(The)28 b(source)h(co)s(de)g(is)150
+1141 y(lo)s(cated)j(in)e(`)p Fr(java/gnu/inet/encoding/)p
+Fx('.)150 1386 y Fw(12.1)68 b(Ov)l(erview)150 1546 y
+Fx(This)37 b(pac)m(k)-5 b(age)40 b(pro)m(vides)f(a)f(Ja)m(v)-5
+b(a)39 b(implemen)m(tation)h(of)e(the)h(In)m(ternationalized)h(Domain)f
+(Names)f(in)150 1655 y(Applications)43 b(\(IDNA\))g(standard.)75
+b(It)42 b(is)g(written)g(en)m(tirely)i(in)d(Ja)m(v)-5
+b(a)43 b(and)f(do)s(es)g(not)g(require)g(an)m(y)150 1765
+y(additional)31 b(libraries)g(to)g(b)s(e)f(set)h(up.)275
+1908 y(The)i(gn)m(u.inet.enco)s(ding.IDNA)k(class)e(o\013ers)g(t)m(w)m
+(o)g(public)f(functions,)h(toASCI)s(I)f(and)g(toUnico)s(de)150
+2017 y(whic)m(h)c(can)h(b)s(e)f(used)f(as)i(follo)m(ws:)390
+2161 y Fr(gnu.inet.encoding.IDNA.t)o(oASC)o(II\(")o(bl\177)-49
+b(ods.z)o(\177)h(ug"\))o(;)390 2270 y(gnu.inet.encoding.IDNA.t)o(oUni)o
+(code)o(\("x)o(n--b)o(lds-)o(6qa)o(.xn-)o(-zg-)o(xka)o("\);)150
+2516 y Fw(12.2)68 b(Miscellaneous)47 b(Programs)150 2675
+y Fx(The)31 b(`)p Fr(misc/)p Fx(')f(directory)i(con)m(tains)h(sev)m
+(eral)g(programs)e(that)h(are)g(related)g(to)g(the)g(Ja)m(v)-5
+b(a)32 b(part)g(of)f(GNU)150 2785 y(Libidn,)e(but)h(that)h(don't)f
+(need)h(to)g(b)s(e)e(included)h(in)g(the)h(main)f(source)g(tree.)150
+2993 y Fq(12.2.1)63 b(GenerateRF)m(C3454)150 3140 y Fx(This)43
+b(program)h(parses)g(RF)m(C3454)i(and)e(creates)h(the)f(RF)m(C3454.ja)m
+(v)-5 b(a)48 b(program)c(that)h(is)f(required)150 3249
+y(during)29 b(the)i(StringPrep)e(phase.)275 3392 y(The)19
+b(RF)m(C)i(can)f(b)s(e)g(found)f(at)i(v)-5 b(arious)20
+b(lo)s(cations,)k(for)c(example)h(at)g Fr(http://www.ietf.org/rfc/r)o
+(fc34)o(54.t)o(xt)p Fx(.)275 3536 y(In)m(v)m(ok)m(e)31
+b(the)g(program)f(as)h(follo)m(ws:)390 3679 y Fr($)47
+b(java)g(GenerateRFC3454)390 3788 y(Creating)f(RFC3454.java...)d(Ok.)
+150 3996 y Fq(12.2.2)63 b(GenerateNFK)m(C)150 4143 y
+Fx(The)44 b(GenerateNFK)m(C)j(program)e(parses)f(the)h(Unico)s(de)g(c)m
+(haracter)i(database)e(\014le)g(and)g(generates)150 4253
+y(all)f(the)g(tables)g(required)e(for)h(NFK)m(C.)h(This)e(program)h
+(requires)g(the)g(t)m(w)m(o)i(\014les)e(Unico)s(deData.txt)150
+4362 y(and)e(Comp)s(ositionExclusions.txt)i(of)f(v)m(ersion)g(3.2)h(of)
+f(the)g(Unico)s(de)g(\014les.)75 b(Note)43 b(that)g(RF)m(C3454)150
+4472 y(\(Stringprep\))30 b(de\014nes)f(that)i(Unico)s(de)g(v)m(ersion)g
+(3.2)g(is)f(to)i(b)s(e)d(used,)h(not)h(the)f(latest)i(v)m(ersion.)275
+4615 y(The)d(Unico)s(de)i(data)g(\014les)f(can)h(b)s(e)f(found)f(at)i
+Fr(http://www.unicode.org/P)o(ubli)o(c/)p Fx(.)275 4758
+y(In)m(v)m(ok)m(e)g(the)g(program)f(as)h(follo)m(ws:)390
+4902 y Fr($)47 b(java)g(GenerateNFKC)390 5011 y(Creating)f
+(CombiningClass.java...)41 b(Ok.)390 5121 y(Creating)46
+b(DecompositionKeys.java.)o(..)41 b(Ok.)390 5230 y(Creating)46
+b(DecompositionMappings.j)o(ava)o(...)41 b(Ok.)390 5340
+y(Creating)46 b(Composition.java...)c(Ok.)p eop end
+%%Page: 59 64
+TeXDict begin 59 63 bop 150 -116 a Fx(Chapter)30 b(12:)41
+b(Ja)m(v)-5 b(a)32 b(API)2627 b(59)150 299 y Fq(12.2.3)63
+b(T)-10 b(estIDNA)150 446 y Fx(The)22 b(T)-8 b(estIDNA)25
+b(program)d(allo)m(ws)i(to)g(test)g(the)f(IDNA)g(implemen)m(tation)i
+(man)m(ually)e(or)g(against)i(Simon)150 555 y(Josefsson's)30
+b(test)i(v)m(ectors.)275 689 y(The)19 b(test)i(v)m(ectors)h(can)f(b)s
+(e)e(found)g(at)i(the)g(Libidn)e(homepage,)k Fr
+(http://www.gnu.org/softwa)o(re/l)o(ibid)o(n/)p Fx(.)275
+822 y(T)-8 b(o)30 b(test)i(the)e(tranformation)h(man)m(ually)-8
+b(,)32 b(use:)390 956 y Fr($)47 b(java)g(-cp)g(.:../libidn.jar)d
+(TestIDNA)h(-a)i(<string)f(to)h(test>)390 1066 y(Input:)f(<string)g(to)
+h(test>)390 1175 y(Output:)f(<toASCII\(string)d(to)48
+b(test\)>)390 1285 y($)f(java)g(-cp)g(.:../libidn.jar)d(TestIDNA)h(-u)i
+(<string)f(to)h(test>)390 1394 y(Input:)f(<string)g(to)h(test>)390
+1504 y(Output:)f(<toUnicode\(string)d(to)k(test\)>)275
+1637 y Fx(T)-8 b(o)30 b(test)i(against)f(draft-josefsson-idn-test-v)m
+(ectors.h)m(tml,)j(use:)390 1771 y Fr($)47 b(java)g(-cp)g
+(.:../libidn.jar)d(TestIDNA)h(-t)390 1881 y(No)i(errors)f(detected!)150
+2078 y Fq(12.2.4)63 b(T)-10 b(estNFK)m(C)150 2225 y Fx(The)29
+b(T)-8 b(estNFK)m(C)30 b(program)f(allo)m(ws)h(to)g(test)h(the)e(NFK)m
+(C)g(implemen)m(tation)i(man)m(ually)f(or)f(against)i(the)150
+2334 y(NormalizationT)-8 b(est.txt)34 b(\014le)d(from)f(the)g(Unico)s
+(de)h(data)g(\014les.)275 2468 y(T)-8 b(o)30 b(test)i(the)e
+(normalization)i(man)m(ually)-8 b(,)32 b(use:)390 2601
+y Fr($)47 b(java)g(-cp)g(.:../libidn.jar)d(TestNFKC)h(<string)h(to)h
+(test>)390 2711 y(Input:)f(<string)g(to)h(test>)390 2821
+y(Output:)f(<nfkc)g(version)g(of)h(the)g(string)f(to)h(test>)275
+2954 y Fx(T)-8 b(o)30 b(test)i(against)f(NormalizationT)-8
+b(est.txt:)390 3088 y Fr($)47 b(java)g(-cp)g(.:../libidn.jar)d
+(TestNFKC)390 3197 y(No)j(errors)f(detected!)150 3428
+y Fw(12.3)68 b(P)l(ossible)46 b(Problems)150 3587 y Fx(Bew)m(are)28
+b(of)f(Bugs:)39 b(This)26 b(Ja)m(v)-5 b(a)27 b(API)g(needs)f(a)h(lot)h
+(more)e(testing,)j(esp)s(ecially)f(with)e Fr(")p Fx(exotic)p
+Fr(")i Fx(c)m(haracter)150 3697 y(sets.)41 b(While)31
+b(it)g(w)m(orks)g(for)f(me,)g(it)h(ma)m(y)g(not)g(w)m(ork)f(for)g(y)m
+(ou.)275 3830 y(Enco)s(ding)21 b(of)h(y)m(our)h(Ja)m(v)-5
+b(a)23 b(sources:)36 b(If)22 b(y)m(ou)g(are)h(using)f(non-ASCI)s(I)e(c)
+m(haracters)k(in)e(y)m(our)g(Ja)m(v)-5 b(a)23 b(source)150
+3940 y(co)s(de,)g(mak)m(e)f(sure)d(ja)m(v)-5 b(ac)22
+b(compiles)g(y)m(our)e(programs)g(with)g(the)h(correct)h(enco)s(ding.)
+37 b(If)20 b(necessary)h(sp)s(ecify)150 4049 y(the)31
+b(enco)s(ding)f(using)g(the)g(-enco)s(ding)h(parameter.)275
+4183 y(Ja)m(v)-5 b(a)24 b(Unico)s(de)g(handling:)37 b(Ja)m(v)-5
+b(a)25 b(1.4)f(only)g(handles)f(16-bit)i(Unico)s(de)f(co)s(de)g(p)s
+(oin)m(ts)g(\(i.e.)39 b(c)m(haracters)150 4293 y(in)28
+b(the)h(Basic)h(Multilingual)g(Plane\),)g(this)f(implemen)m(tation)h
+(therefore)f(ignores)g(all)h(references)f(to)g(so-)150
+4402 y(called)36 b(Supplemen)m(tary)f(Characters)g(\(U)p
+Fr(+)p Fx(10000)j(to)e(U)p Fr(+)p Fx(10FFFF\).)h(Starting)f(from)f(Ja)m
+(v)-5 b(a)36 b(1.5,)h(these)150 4512 y(c)m(haracters)32
+b(will)f(also)g(b)s(e)f(supp)s(orted)e(b)m(y)j(Ja)m(v)-5
+b(a,)31 b(but)f(this)g(will)h(require)f(c)m(hanges)h(to)h(this)e
+(library)-8 b(.)41 b(See)150 4621 y(also)31 b(the)g(next)f(section.)150
+4852 y Fw(12.4)68 b(A)45 b(Note)h(on)e(Ja)l(v)-7 b(a)46
+b(and)f(Unico)t(de)150 5011 y Fx(This)25 b(library)f(uses)h(Ja)m(v)-5
+b(a's)27 b(builtin)e('c)m(har')h(datat)m(yp)s(e.)40 b(Up)25
+b(to)h(Ja)m(v)-5 b(a)26 b(1.4,)i(this)d(datat)m(yp)s(e)h(only)g(supp)s
+(orts)150 5121 y(16-bit)46 b(Unico)s(de)g(co)s(de)f(p)s(oin)m(ts,)k
+(also)e(called)f(the)f(Basic)i(Multilingual)g(Plane.)85
+b(F)-8 b(or)46 b(this)f(reason,)150 5230 y(this)35 b(library)h(do)s
+(esn't)f(w)m(ork)h(for)f(Supplemen)m(tary)g(Characters)h(\(i.e.)57
+b(c)m(haracters)37 b(from)e(U)p Fr(+)p Fx(10000)j(to)150
+5340 y(U)p Fr(+)p Fx(10FFFF\).)33 b(All)e(references)g(to)g(suc)m(h)f
+(c)m(haracters)i(are)f(silen)m(tly)g(ignored.)p eop end
+%%Page: 60 65
+TeXDict begin 60 64 bop 150 -116 a Fx(Chapter)30 b(12:)41
+b(Ja)m(v)-5 b(a)32 b(API)2627 b(60)275 299 y(Starting)26
+b(from)g(Ja)m(v)-5 b(a)28 b(1.5,)g(also)f(Supplemen)m(tary)f
+(Characters)h(will)f(b)s(e)g(supp)s(orted.)38 b(Ho)m(w)m(ev)m(er,)29
+b(this)150 408 y(will)24 b(require)g(c)m(hanges)h(in)f(the)h(presen)m
+(t)f(v)m(ersion)g(of)h(the)f(library)-8 b(.)39 b(Ja)m(v)-5
+b(a)25 b(1.5)g(is)f(curren)m(tly)g(in)g(b)s(eta)g(status.)275
+543 y(F)-8 b(or)24 b(more)g(information)g(refer)g(to)g(the)g(do)s
+(cumen)m(tation)h(of)f(ja)m(v)-5 b(a.lang.Character)26
+b(in)d(the)h(JDK)g(API.)p eop end
+%%Page: 61 66
+TeXDict begin 61 65 bop 150 -116 a Fx(Chapter)30 b(13:)41
+b(C#)30 b(API)2664 b(61)150 299 y Fu(13)80 b(C#)54 b(API)150
+533 y Fx(The)33 b(Libidn)g(library)h(has)f(b)s(een)h(p)s(orted)f(to)i
+(the)f(C#)f(language.)53 b(The)34 b(p)s(ort)f(reside)h(in)f(the)i
+(top-lev)m(el)150 643 y(`)p Fr(csharp/)p Fx(')27 b(directory)-8
+b(.)41 b(Curren)m(tly)-8 b(,)29 b(no)f(further)f(do)s(cumen)m(tation)i
+(ab)s(out)f(the)g(implemen)m(tation)i(or)f(the)150 752
+y(API)e(is)f(a)m(v)-5 b(ailable.)42 b(Ho)m(w)m(ev)m(er,)30
+b(the)d(C#)f(p)s(ort)g(w)m(as)h(based)g(on)f(the)h(Ja)m(v)-5
+b(a)28 b(p)s(ort,)f(and)f(the)h(API)f(is)h(exactly)150
+862 y(the)k(same)f(as)h(in)f(the)h(Ja)m(v)-5 b(a)31 b(v)m(ersion.)41
+b(The)30 b(help)g(\014les)g(for)g(the)h(Ja)m(v)-5 b(a)31
+b(API)f(ma)m(y)h(th)m(us)f(b)s(e)g(useful.)p eop end
+%%Page: 62 67
+TeXDict begin 62 66 bop 150 -116 a Fx(Chapter)30 b(14:)41
+b(Ac)m(kno)m(wledgemen)m(ts)2251 b(62)150 299 y Fu(14)80
+b(Ac)l(kno)l(wledgemen)l(ts)150 533 y Fx(The)35 b(pun)m(yco)s(de)f
+(implemen)m(tation)j(w)m(as)f(tak)m(en)g(from)f(the)h(IETF)f(IDN)h(Pun)
+m(yco)s(de)e(sp)s(eci\014cation,)k(b)m(y)150 643 y(Adam)f(M.)g
+(Costello.)63 b(The)36 b(TLD)h(co)s(de)g(w)m(as)h(con)m(tributed)f(b)m
+(y)g(Thomas)g(Jacob.)61 b(The)37 b(Ja)m(v)-5 b(a)38 b(imple-)150
+752 y(men)m(tation)i(w)m(as)f(con)m(tributed)g(b)m(y)f(Oliv)m(er)h
+(Hitz.)66 b(The)38 b(C#)g(implemen)m(tation)i(w)m(as)f(con)m(tributed)g
+(b)m(y)150 862 y(Alexander)28 b(Gnauc)m(k.)40 b(The)27
+b(Unico)s(de)h(tables)g(w)m(ere)h(pro)m(vided)e(b)m(y)g(Unico)s(de,)i
+(Inc.)39 b(Some)28 b(functions)f(for)150 971 y(dealing)i(with)f(Unico)s
+(de)g(\(see)h(nfk)m(c.c)g(and)e(toutf8.c\))j(w)m(ere)e(b)s(orro)m(w)m
+(ed)g(from)g(GLib,)g(do)m(wnloaded)g(from)150 1081 y
+Fr(http://www.gtk.org/)p Fx(.)35 b(The)30 b(man)m(ual)h(b)s(orro)m(w)m
+(ed)f(text)h(from)f(Libgcrypt)g(b)m(y)h(W)-8 b(erner)30
+b(Ko)s(c)m(h.)275 1215 y(Inspiration)g(for)g(man)m(y)h(things)g(that,)g
+(consciously)h(or)e(not,)i(ha)m(v)m(e)f(gone)h(in)m(to)g(this)e(pac)m
+(k)-5 b(age)33 b(is)e(due)150 1325 y(to)40 b(a)f(n)m(um)m(b)s(er)f(of)h
+(free)g(soft)m(w)m(are)h(pac)m(k)-5 b(age)41 b(that)e(the)h(author)e
+(has)h(b)s(een)f(exp)s(osed)h(to.)67 b(The)38 b(author)150
+1435 y(wishes)f(to)h(ac)m(kno)m(wledge)h(the)e(free)h(soft)m(w)m(are)g
+(comm)m(unit)m(y)g(in)f(general,)j(for)d(giving)h(an)f(example)h(on)150
+1544 y(what)30 b(role)h(soft)m(w)m(are)h(dev)m(elopmen)m(t)g(can)f(pla)
+m(y)g(in)f(the)g(mo)s(dern)f(so)s(ciet)m(y)-8 b(.)275
+1679 y(Sev)m(eral)49 b(p)s(eople)f(rep)s(orted)g(bugs,)53
+b(sen)m(t)c(patc)m(hes)g(or)f(suggested)i(impro)m(v)m(emen)m(ts,)k(see)
+49 b(the)g(\014le)150 1788 y(THANKS)30 b(in)g(the)g(top-lev)m(el)j
+(directory)e(of)f(the)h(source)g(co)s(de.)p eop end
+%%Page: 63 68
+TeXDict begin 63 67 bop 150 -116 a Fx(Chapter)30 b(15:)41
+b(History)2706 b(63)150 299 y Fu(15)80 b(History)150
+533 y Fx(The)41 b(complete)h(history)g(of)f(user)g(visible)g(c)m
+(hanges)h(is)g(stored)f(in)g(the)g(\014le)h(`)p Fr(NEWS)p
+Fx(')e(in)h(the)h(top-lev)m(el)150 643 y(directory)g(of)h(the)f(source)
+g(co)s(de)g(tree.)76 b(The)42 b(complete)h(history)f(of)g(mo)s
+(di\014cations)g(to)h(eac)m(h)g(\014le)f(is)150 752 y(stored)h(in)g
+(the)g(\014le)g(`)p Fr(ChangeLog)p Fx(')e(in)i(the)g(same)h(directory)
+-8 b(.)79 b(This)42 b(section)j(con)m(tain)f(a)f(condensed)150
+862 y(v)m(ersion)31 b(of)f(that)h(information,)g(in)f(the)h(form)f(of)g
+(\\milestones")j(for)d(the)g(pro)5 b(ject.)150 1021 y(Stringprep)29
+b(implemen)m(tation.)630 1131 y(V)-8 b(ersion)31 b(0.0.0)h(released)f
+(on)g(2002-11-05.)150 1290 y(IDNA)g(and)f(Pun)m(yco)s(de)g(implemen)m
+(tations,)i(part)e(of)g(the)h(GNU)g(pro)5 b(ject.)630
+1400 y(V)-8 b(ersion)31 b(0.1.0)h(released)f(on)g(2003-01-05.)150
+1559 y(Uses)g(o\016cial)g(IDNA)g(A)m(CE)g(pre\014x)e
+Fr(xn--)p Fx(.)630 1669 y(V)-8 b(ersion)31 b(0.1.7)h(released)f(on)g
+(2003-02-12.)150 1828 y(Command)e(line)i(in)m(terface.)630
+1938 y(V)-8 b(ersion)31 b(0.1.11)i(released)e(on)f(2003-02-26.)150
+2097 y(GNU)h(Lib)s(c)f(add-on)g(prop)s(osed.)630 2207
+y(V)-8 b(ersion)31 b(0.1.12)i(released)e(on)f(2003-03-06.)150
+2366 y(In)m(terop)s(erabilit)m(y)h(testing)h(during)d(IDNConnect.)630
+2476 y(V)-8 b(ersion)31 b(0.3.1)h(released)f(on)g(2003-10-02.)150
+2635 y(TLD)f(restriction)i(testing.)630 2745 y(V)-8 b(ersion)31
+b(0.4.0)h(released)f(on)g(2004-02-28.)150 2904 y(GNU)g(Lib)s(c)f
+(add-on)g(in)m(tegrated.)630 3014 y(V)-8 b(ersion)31
+b(0.4.1)h(released)f(on)g(2004-03-08.)150 3173 y(Nativ)m(e)h(Ja)m(v)-5
+b(a)32 b(implemen)m(tation.)630 3283 y(V)-8 b(ersion)31
+b(0.4.2-0.4.9)j(released)e(b)s(et)m(w)m(een)f(2004-03-20)j(and)c
+(2004-06-11.)150 3442 y(PR-29)h(functions)f(for)g(\\problem)h
+(sequences".)630 3552 y(V)-8 b(ersion)31 b(0.5.0)h(released)f(on)g
+(2004-06-26.)150 3711 y(Man)m(y)g(small)g(p)s(ortabilit)m(y)g(\014xes)f
+(and)g(wider)g(use.)630 3821 y(V)-8 b(ersion)31 b(0.5.1)h(through)e
+(0.5.20,)j(released)e(b)s(et)m(w)m(een)g(2004-07-09)j(and)c
+(2005-10-23.)150 3980 y(Nativ)m(e)i(C#)e(implemen)m(tation.)630
+4090 y(V)-8 b(ersion)31 b(0.6.0)h(released)f(on)g(2005-12-03.)150
+4249 y(Windo)m(ws)f(supp)s(ort)f(through)h(cross-compilation.)630
+4359 y(V)-8 b(ersion)31 b(0.6.1)h(released)f(on)g(2006-01-20.)150
+4518 y(Library)f(declared)g(stable)h(b)m(y)g(releasing)g(v1.0.)630
+4628 y(V)-8 b(ersion)31 b(1.0)g(released)h(on)e(2007-07-31.)p
+eop end
+%%Page: 64 69
+TeXDict begin 64 68 bop 150 -116 a Fx(App)s(endix)29
+b(A:)h(PR29)h(discussion)2323 b(64)150 299 y Fu(App)t(endix)52
+b(A)81 b(PR29)54 b(discussion)150 500 y Fx(If)26 b(y)m(ou)h(wish)f(to)h
+(exp)s(erimen)m(t)g(with)f(a)h(mo)s(di\014ed)f(Unico)s(de)h(NFK)m(C)g
+(implemen)m(tation)h(according)f(to)h(the)150 609 y(PR29)j(prop)s
+(osal,)g(y)m(ou)g(ma)m(y)g(\014nd)e(the)i(follo)m(wing)h(bug)e(rep)s
+(ort)g(useful.)41 b(Ho)m(w)m(ev)m(er,)33 b(I)d(ha)m(v)m(e)i(not)f(v)m
+(eri\014ed)150 719 y(that)k(the)g(suggested)g(mo)s(di\014cations)g(are)
+g(correct.)54 b(F)-8 b(or)35 b(reference,)i(I'm)d(including)g(m)m(y)h
+(resp)s(onse)e(to)150 829 y(the)e(rep)s(ort)e(as)i(w)m(ell.)150
+956 y Fr(From:)46 b(Rick)h(McGowan)f(<rick@unicode.org>)150
+1066 y(Subject:)g(Possible)f(bug)i(and)g(status)f(of)h(PR)g(29)h
+(change\(s\))150 1176 y(To:)f(bug-libidn@gnu.org)150
+1285 y(Date:)f(Wed,)h(27)g(Oct)g(2004)g(14:49:17)e(-0700)150
+1504 y(Hello.)h(On)h(behalf)f(of)i(the)e(Unicode)g(Consortium)f
+(editorial)h(committee,)f(I)i(would)150 1614 y(like)g(to)g(find)f(out)h
+(more)g(information)e(about)h(the)h(PR)g(29)g(fixes,)f(if)i(any,)e(and)
+150 1724 y(functions)f(in)i(Libidn.)f(Your)h(implementation)d(was)j
+(listed)f(in)h(the)g(text)g(of)g(PR29)f(as)150 1833 y(needing)g
+(investigation,)e(so)j(I)g(am)h(following)d(up)i(on)g(several)f
+(implementations.)150 2052 y(The)h(UTC)g(has)g(accepted)e(the)i
+(proposed)f(fix)h(to)g(D2)g(as)g(outlined)f(in)h(PR29,)f(and)h(a)h(new)
+150 2162 y(draft)e(of)i(UAX)e(#15)h(has)g(been)g(issued.)150
+2381 y(I)g(have)g(looked)f(at)h(Libidn)f(0.5.8)h(\(today\),)e(and)i
+(there)g(may)g(still)f(be)h(a)h(possible)150 2491 y(bug)f(in)g
+(NFKC.java)e(and)i(nfkc.c.)150 2710 y(------------------------)o(----)o
+(----)o(---)o(----)o(----)o(---)o(----)o(----)150 2929
+y(1.)g(In)g(NFKC.java,)e(this)i(line)g(in)g(canonicalOrdering\(\):)436
+3148 y(if)h(\(i)f(>)g(0)h(&&)f(\(last_cc)e(==)j(0)f(||)g(last_cc)f(!=)h
+(cc\)\))g({)150 3367 y(should)f(perhaps)g(be)h(changed)f(to:)436
+3587 y(if)i(\(i)f(>)g(0)h(&&)f(\(last_cc)e(==)j(0)f(||)g(last_cc)f(<)h
+(cc\)\))g({)150 3806 y(but)g(I'm)g(not)g(sure)f(of)i(the)e(sense)h(of)g
+(this)g(comparison.)150 4025 y(------------------------)o(----)o(----)o
+(---)o(----)o(----)o(---)o(----)o(----)150 4244 y(2.)g(In)g(nfkc.c,)f
+(function)g(_g_utf8_normalize_wc\(\))41 b(has)47 b(this)g(code:)627
+4463 y(if)g(\(i)h(>)f(0)h(&&)818 4573 y(\(last_cc)e(==)h(0)g(||)h
+(last_cc)d(!=)j(cc\))e(&&)818 4682 y(combine)g
+(\(wc_buffer[last_start],)41 b(wc_buffer[i],)1248 4792
+y(&wc_buffer[last_start]\))o(\))723 4902 y({)150 5121
+y(This)47 b(appears)e(to)j(have)e(the)h(same)g(bug)g(as)g(the)g
+(current)f(Python)g(implementation)e(\(in)150 5230 y(Python)i(2.3.4\).)
+g(The)h(code)f(should)h(be)g(checking,)e(as)i(per)g(new)g(rule)g(D2)g
+(UAX)g(#15)150 5340 y(update,)f(that)g(the)h(next)g(combining)e
+(character)h(is)h(the)g(same)f(or)h(HIGHER)g(than)f(the)p
+eop end
+%%Page: 65 70
+TeXDict begin 65 69 bop 150 -116 a Fx(App)s(endix)29
+b(A:)h(PR29)h(discussion)2323 b(65)150 299 y Fr(current)46
+b(one.)g(It)i(now)f(checks)f(to)h(see)g(if)g(it's)g(non-zero)e(and)i
+(not)g(equal.)150 518 y(The)g(above)f(line\(s\))g(should)g(perhaps)g
+(be)h(changed)f(to:)627 737 y(if)h(\(i)h(>)f(0)h(&&)818
+847 y(\(last_cc)e(==)h(0)g(||)h(last_cc)d(<)j(cc\))f(&&)818
+956 y(combine)f(\(wc_buffer[last_start],)41 b(wc_buffer[i],)1248
+1066 y(&wc_buffer[last_start]\))o(\))723 1176 y({)150
+1395 y(but)47 b(I'm)g(not)g(sure)f(of)i(the)e(sense)h(of)g(the)g
+(comparison)e(\(<)i(or)g(>)h(or)f(<=?\))g(here.)150 1614
+y(In)g(the)g(text)g(of)g(PR29,)f(I)i(will)e(be)i(marking)d(Libidn)h(as)
+i("needs)e(change")g(and)g(adding)150 1724 y(the)h(version)f(number)g
+(that)g(I)i(checked.)d(If)j(any)f(further)e(change)h(is)i(made,)e
+(please)150 1833 y(let)h(me)g(know)g(the)g(release)e(version,)h(and)h
+(I'll)g(update)f(again.)150 2052 y(Regards,)532 2162
+y(Rick)g(McGowan)150 2381 y(From:)g(Simon)h(Josefsson)e
+(<jas@extundo.com>)150 2491 y(Subject:)h(Re:)g(Possible)g(bug)h(and)g
+(status)f(of)h(PR)g(29)g(change\(s\))150 2600 y(To:)g(Rick)g(McGowan)e
+(<rick@unicode.org>)150 2710 y(Cc:)i(bug-libidn@gnu.org)150
+2819 y(Date:)f(Thu,)h(28)g(Oct)g(2004)g(09:47:47)e(+0200)150
+3039 y(Rick)i(McGowan)e(<rick@unicode.org>)e(writes:)150
+3258 y(>)k(Hello.)g(On)g(behalf)f(of)h(the)g(Unicode)f(Consortium)f
+(editorial)g(committee,)g(I)i(would)150 3367 y(>)g(like)g(to)g(find)g
+(out)g(more)f(information)f(about)i(the)f(PR)i(29)f(fixes,)f(if)h(any,)
+g(and)150 3477 y(>)g(functions)f(in)h(Libidn.)f(Your)g(implementation)e
+(was)j(listed)f(in)h(the)g(text)g(of)g(PR29)g(as)150
+3587 y(>)g(needing)f(investigation,)e(so)j(I)h(am)f(following)e(up)i
+(on)h(several)d(implementations.)150 3696 y(>)150 3806
+y(>)i(The)g(UTC)g(has)g(accepted)f(the)h(proposed)e(fix)i(to)g(D2)g(as)
+h(outlined)d(in)i(PR29,)g(and)g(a)g(new)150 3915 y(>)g(draft)g(of)g
+(UAX)g(#15)g(has)g(been)f(issued.)150 4025 y(>)150 4134
+y(>)h(I)h(have)f(looked)f(at)h(Libidn)f(0.5.8)g(\(today\),)g(and)h
+(there)f(may)h(still)f(be)i(a)f(possible)150 4244 y(>)g(bug)g(in)h
+(NFKC.java)d(and)i(nfkc.c.)150 4463 y(Hello)f(Rick.)150
+4682 y(I)h(believe)f(the)h(current)f(behavior)g(is)h(intentional.)92
+b(Libidn)46 b(do)h(not)g(aim)g(to)150 4792 y(implement)e
+(latest-and-greatest)e(NFKC,)j(it)h(aim)g(to)g(implement)f(the)h(NFKC)
+150 4902 y(functionality)d(required)i(for)h(StringPrep)e(and)i(IDN.)94
+b(As)47 b(you)g(may)g(know,)150 5011 y(StringPrep/IDN)d(reference)h
+(Unicode)h(3.2.0,)g(and)h(explicitly)e(says)i(any)g(later)150
+5121 y(changes)f(\(which)g(I)h(consider)f(PR29)h(as\))f(do)i(not)f
+(apply.)150 5340 y(In)g(fact,)g(I)g(believe)f(that)g(would)h(I)g
+(incorporate)e(the)i(changes)f(suggested)f(in)p eop end
+%%Page: 66 71
+TeXDict begin 66 70 bop 150 -116 a Fx(App)s(endix)29
+b(A:)h(PR29)h(discussion)2323 b(66)150 299 y Fr(PR29,)46
+b(I)i(would)e(in)h(fact)g(be)g(violating)e(the)i(IDN)g(specifications.)
+150 518 y(Thanks)f(for)h(looking)f(into)g(the)h(code)g(and)g(finding)f
+(the)h(place)f(where)g(the)150 628 y(change)g(could)g(be)i(made.)94
+b(I'll)46 b(see)h(if)g(I)h(can)f(mention)f(this)g(in)h(the)g(manual)150
+737 y(somewhere,)e(for)i(technically)e(interested)g(readers.)150
+956 y(Regards,)150 1066 y(Simon)p eop end
+%%Page: 67 72
+TeXDict begin 67 71 bop 150 -116 a Fx(App)s(endix)29
+b(B:)i(On)e(Lab)s(el)h(Separators)2150 b(67)150 299 y
+Fu(App)t(endix)52 b(B)81 b(On)54 b(Lab)t(el)f(Separators)150
+533 y Fx(Some)43 b(strings)h(con)m(tains)g(c)m(haracters)h(whose)e(NFK)
+m(C)h(normalized)g(form)f(con)m(tain)h(the)g(ASCI)s(I)e(dot)150
+643 y(\(0x2E,)30 b(\\."\).)42 b(Examples)28 b(of)h(these)g(c)m
+(haracters)h(are)f(U)p Fr(+)p Fx(2024)i(\(ONE)e(DOT)f(LEADER\))h(and)f
+(U)p Fr(+)p Fx(248C)150 752 y(\(DIGIT)37 b(FIVE)g(FULL)g(STOP\).)g(The)
+f(strings)h(ha)m(v)m(e)h(the)f(in)m(teresting)i(prop)s(ert)m(y)d(that)h
+(their)g(IDNA)150 862 y(T)-8 b(oASCI)s(I)29 b(output)h(will)h(con)m
+(tain)h(em)m(b)s(edded)d(dots.)41 b(F)-8 b(or)31 b(example:)390
+996 y Fr(ToASCII)46 b(\(hi)h(U+248C)f(com\))g(=)i(hi5.com)390
+1106 y(ToASCII)e(\(r\177)-48 b(aksm\177)g(org\027)g(as)45
+b(U+2024)h(com\))g(=)i(xn--rksmrgs.com-l8as9u)275 1240
+y Fx(This)36 b(demonstrate)i(the)g(t)m(w)m(o)h(general)g(cases:)56
+b(The)37 b(\014rst)g(where)g(the)g(ASCI)s(I)f(dot)i(is)g(part)f(of)h
+(an)150 1350 y(output)c(that)h(do)g(not)g(b)s(egin)f(with)g(the)h(IDN)g
+(pre\014x)f Fr(xn--)p Fx(.)52 b(The)34 b(second)h(example)g(illustrate)
+h(when)150 1460 y(the)31 b(dot)f(is)h(part)f(of)g(IDN)h(pre\014xed)e
+(with)h Fr(xn--)p Fx(.)275 1594 y(The)e(input)h(strings)g(are,)h(from)f
+(the)g(DNS)h(p)s(oin)m(t)f(of)h(view,)g(a)f(single)h(lab)s(el.)41
+b(The)29 b(IDNA)h(algorithm)150 1704 y(translate)39 b(one)e(lab)s(el)h
+(at)g(a)g(time.)63 b(Th)m(us,)38 b(the)g(output)f(is)h(exp)s(ected)g
+(to)g(b)s(e)f(only)g(one)h(lab)s(el.)62 b(What)150 1813
+y(is)36 b(imp)s(ortan)m(t)g(here)f(is)h(to)g(mak)m(e)h(sure)e(the)h
+(DNS)f(resolv)m(er)i(receiv)m(es)h(the)d(correct)i(query)-8
+b(.)57 b(The)35 b(DNS)150 1923 y(proto)s(col)43 b(do)s(es)f(not)h(use)f
+(the)g(dot)h(to)g(delimit)g(lab)s(els)g(on)f(the)g(wire,)k(rather)c(it)
+h(uses)f(length-v)-5 b(alue)150 2032 y(pairs.)38 b(Th)m(us)24
+b(the)h(correct)g(query)f(w)m(ould)g(b)s(e)g(for)h Fr({7}hi5.com)c
+Fx(and)j Fr({22}xn--rksmrgs.com-l8as9)o(u)150 2142 y
+Fx(resp)s(ectiv)m(ely)-8 b(.)275 2276 y(Some)29 b(implemen)m(tations)
+1169 2243 y Fg(1)1237 2276 y Fx(ha)m(v)m(e)i(decided)e(that)h(these)g
+(inputs)e(strings)h(are)h(p)s(oten)m(tially)h(confusing)150
+2386 y(for)25 b(the)f(user.)39 b(The)24 b(string)h Fr(hi)k(U+248C)g
+(com)24 b Fx(lo)s(oks)h(lik)m(e)h Fr(hi5.com)d Fx(on)i(systems)f(that)i
+(supp)s(ort)d(Unico)s(de)150 2496 y(prop)s(erly)-8 b(.)40
+b(These)30 b(implemen)m(tations)i(do)e(not)h(follo)m(w)g(RF)m(C)g
+(3490.)43 b(They)29 b(yield:)390 2630 y Fr(ToASCII)46
+b(\(hi)h(U+248C)f(com\))g(=)i(hi5.com)390 2740 y(ToASCII)e(\(r\177)-48
+b(aksm\177)g(org\027)g(as)45 b(U+2024)h(com\))g(=)i
+(xn--rksmrgs-5wao1o.com)275 2874 y Fx(The)30 b(DNS)g(query)g(they)h(p)s
+(erform)e(are)i Fr({3}hi5{3}com)c Fx(and)j Fr({18}xn--rksmrgs-5wao1o{)o
+(3}co)o(m)150 2984 y Fx(resp)s(ectiv)m(ely)-8 b(.)45
+b(Arguably)-8 b(,)31 b(this)g(leads)h(to)g(a)f(b)s(etter)g(user)f(exp)s
+(erience,)i(and)f(suggests)g(that)h(the)f(IDNA)150 3093
+y(sp)s(eci\014cation)g(is)g(sub-optimal)f(in)g(this)g(area.)150
+3326 y Fw(B.1)67 b(Recommended)46 b(W)-11 b(ork)k(around)150
+3485 y Fx(It)29 b(has)g(b)s(een)g(suggested)h(to)g(normalize)g(the)g
+(en)m(tire)g(input)e(string)h(using)g(NFK)m(C)g(b)s(efore)g(passing)g
+(it)h(to)150 3595 y(IDNA)37 b(T)-8 b(oASCI)s(I.)35 b(Y)-8
+b(ou)37 b(ma)m(y)g(use)f Fr(stringprep_utf8_nfkc_norm)o(ali)o(ze)30
+b Fx(or)36 b Fr(stringprep_ucs4_)150 3704 y(nfkc_normalize)p
+Fx(.)61 b(This)37 b(app)s(ears)h(to)h(lead)g(to)g(similar)g(b)s(eha)m
+(viour)f(as)g(IE/Firefo)m(x,)k(whic)m(h)c(w)m(ould)150
+3814 y(a)m(v)m(oid)32 b(the)e(problem,)h(but)e(this)h(needs)g(to)i(b)s
+(e)d(con\014rmed.)40 b(F)-8 b(eel)32 b(free)f(to)g(discuss)e(the)i
+(issue)f(with)g(us.)275 3949 y(Alternativ)m(e)f(w)m(ork)-5
+b(arounds)26 b(are)h(b)s(eing)f(considered.)40 b(Ev)m(en)m(tually)28
+b(Libidn)e(ma)m(y)i(implemen)m(t)f(a)g(new)150 4058 y(\015ag)42
+b(to)g(the)g Fr(idna_*)e Fx(functions)i(that)g(implemen)m(ts)g(a)g
+(recommended)f(w)m(a)m(y)i(to)g(w)m(ork)e(around)g(this)150
+4168 y(problem.)p 150 5241 1200 4 v 199 5308 a Fg(1)275
+5340 y Ff(Notably)25 b(Microsoft's)j(In)n(ternet)d(Explorer)h(and)f
+(Mozilla's)k(Firefo)n(x,)e(but)e(not)g(Apple's)h(Safari.)p
+eop end
+%%Page: 68 73
+TeXDict begin 68 72 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(68)150 299 y Fu(App)t(endix)52
+b(C)81 b(Cop)l(ying)51 b(Information)150 617 y Fw(C.1)68
+b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h(License)1359
+754 y Fx(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390
+886 y(Cop)m(yrigh)m(t)842 883 y(c)817 886 y Fv(\015)e
+Fx(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31
+b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 995
+y Fr(http://fsf.org/)390 1214 y Fx(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f
+(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390
+1324 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f
+(is)f(not)h(allo)m(w)m(ed.)199 1456 y(0.)61 b(PREAMBLE)330
+1588 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g
+(a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330
+1698 y(useful)29 b(do)s(cumen)m(t)h Fn(free)36 b Fx(in)29
+b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j
+(the)e(e\013ectiv)m(e)j(freedom)330 1808 y(to)f(cop)m(y)g(and)f
+(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i
+(either)f(commercially)h(or)e(non-)330 1917 y(commercially)-8
+b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f
+(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 2027
+y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g
+(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330
+2136 y(made)30 b(b)m(y)h(others.)330 2268 y(This)22 b(License)i(is)f(a)
+h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5
+b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330
+2378 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g
+(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330
+2488 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed)
+e(for)g(free)h(soft)m(w)m(are.)330 2620 y(W)-8 b(e)31
+b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h
+(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330
+2729 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:)
+65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330
+2839 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w)
+m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g
+(to)330 2948 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g
+(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5
+b(ject)30 b(matter)i(or)330 3058 y(whether)f(it)h(is)f(published)f(as)i
+(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h
+(License)g(principally)f(for)330 3168 y(w)m(orks)f(whose)h(purp)s(ose)d
+(is)j(instruction)f(or)g(reference.)199 3300 y(1.)61
+b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3432 y(This)39
+b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i
+(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3541
+y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying)
+h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330
+3651 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f
+(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d
+(in)330 3761 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j
+(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330
+3870 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h
+(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g
+(a)h(licensee,)i(and)330 3980 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40
+b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8
+b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330
+4089 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop)
+m(yrigh)m(t)j(la)m(w.)330 4222 y(A)i(\\Mo)s(di\014ed)f(V)-8
+b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f
+(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4331 y(a)k(p)s(ortion)f
+(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s
+(di\014cations)f(and/or)h(translated)g(in)m(to)330 4441
+y(another)31 b(language.)330 4573 y(A)26 b(\\Secondary)g(Section")h(is)
+f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f
+(the)g(Do)s(cumen)m(t)330 4682 y(that)c(deals)g(exclusiv)m(ely)h(with)e
+(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f
+(Do)s(cumen)m(t)330 4792 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m
+(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con)
+m(tains)h(nothing)f(that)330 4902 y(could)j(fall)h(directly)g(within)f
+(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42
+b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330
+5011 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section)
+h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40
+b(The)330 5121 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e
+(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27
+b(or)g(with)g(related)330 5230 y(matters,)38 b(or)d(of)h(legal,)i
+(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s
+(osition)f(regarding)330 5340 y(them.)p eop end
+%%Page: 69 74
+TeXDict begin 69 73 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(69)330 299 y(The)25
+b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g
+(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330
+408 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27
+b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s
+(cumen)m(t)g(is)g(released)330 518 y(under)f(this)i(License.)40
+b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h
+(de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 628
+y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5
+b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero)
+e(In)m(v)-5 b(arian)m(t)330 737 y(Sections.)39 b(If)25
+b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v)
+-5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330
+878 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short)
+g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8
+b(ron)m(t-Co)m(v)m(er)330 988 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er)
+j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f
+(Do)s(cumen)m(t)h(is)f(released)g(under)330 1097 y(this)h(License.)40
+b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26
+b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m
+(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 1207 y(b)s(e)k(at)h(most)g(25)g(w)
+m(ords.)330 1348 y(A)36 b(\\T)-8 b(ransparen)m(t")36
+b(cop)m(y)g(of)g(the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m
+(hine-readable)h(cop)m(y)-8 b(,)38 b(represen)m(ted)330
+1457 y(in)d(a)h(format)g(whose)g(sp)s(eci\014cation)g(is)g(a)m(v)-5
+b(ailable)38 b(to)f(the)f(general)g(public,)h(that)f(is)g(suitable)g
+(for)330 1567 y(revising)c(the)g(do)s(cumen)m(t)f(straigh)m(tforw)m
+(ardly)i(with)e(generic)i(text)g(editors)f(or)f(\(for)h(images)h(com-)
+330 1677 y(p)s(osed)23 b(of)h(pixels\))g(generic)h(pain)m(t)f(programs)
+g(or)f(\(for)h(dra)m(wings\))g(some)g(widely)g(a)m(v)-5
+b(ailable)26 b(dra)m(wing)330 1786 y(editor,)k(and)f(that)g(is)g
+(suitable)h(for)f(input)f(to)i(text)g(formatters)f(or)g(for)g
+(automatic)i(translation)f(to)330 1896 y(a)d(v)-5 b(ariet)m(y)28
+b(of)f(formats)g(suitable)h(for)e(input)g(to)i(text)g(formatters.)40
+b(A)27 b(cop)m(y)g(made)g(in)g(an)g(otherwise)330 2005
+y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g(whose)f(markup,)i(or)e
+(absence)h(of)g(markup,)g(has)g(b)s(een)f(arranged)g(to)330
+2115 y(th)m(w)m(art)27 b(or)g(discourage)g(subsequen)m(t)f(mo)s
+(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 b(ransparen)m(t.)39
+b(An)27 b(image)330 2225 y(format)35 b(is)f(not)h(T)-8
+b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g(substan)m(tial)h(amoun)
+m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g(is)330
+2334 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i(\\Opaque".)330
+2475 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T)-8
+b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fe(asci)r(i)g
+Fx(without)330 2585 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j
+(LaT)1759 2604 y(E)1810 2585 y(X)e(input)f(format,)j
+Fk(SGML)f Fx(or)f Fk(XML)g Fx(using)g(a)g(publicly)330
+2694 y(a)m(v)-5 b(ailable)42 b Fk(DTD)p Fx(,)g(and)d
+(standard-conforming)h(simple)g Fk(HTML)p Fx(,)g(P)m(ostScript)h(or)f
+Fk(PDF)g Fx(designed)330 2804 y(for)e(h)m(uman)g(mo)s(di\014cation.)65
+b(Examples)38 b(of)h(transparen)m(t)f(image)i(formats)e(include)g
+Fk(PNG)p Fx(,)h Fk(X)n(CF)330 2913 y Fx(and)h Fk(JPG)p
+Fx(.)g(Opaque)h(formats)g(include)f(proprietary)g(formats)h(that)h(can)
+f(b)s(e)f(read)g(and)h(edited)330 3023 y(only)54 b(b)m(y)f(proprietary)
+h(w)m(ord)f(pro)s(cessors,)59 b Fk(SGML)54 b Fx(or)f
+Fk(XML)h Fx(for)g(whic)m(h)f(the)h Fk(DTD)g Fx(and/or)330
+3133 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g(generally)i(a)m(v)-5
+b(ailable,)71 b(and)60 b(the)h(mac)m(hine-generated)j
+Fk(HTML)p Fx(,)330 3242 y(P)m(ostScript)31 b(or)f Fk(PDF)h
+Fx(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s(cessors)g(for)g(output)
+g(purp)s(oses)f(only)-8 b(.)330 3383 y(The)34 b(\\Title)h(P)m(age")i
+(means,)e(for)f(a)h(prin)m(ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f
+(itself,)h(plus)e(suc)m(h)f(follo)m(wing)330 3493 y(pages)28
+b(as)g(are)g(needed)g(to)g(hold,)g(legibly)-8 b(,)30
+b(the)e(material)h(this)e(License)i(requires)e(to)h(app)s(ear)f(in)h
+(the)330 3602 y(title)g(page.)40 b(F)-8 b(or)28 b(w)m(orks)e(in)g
+(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h(an)m(y)e(title)j(page)e
+(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 3712 y(means)j(the)f(text)i
+(near)e(the)h(most)g(prominen)m(t)g(app)s(earance)f(of)h(the)g(w)m
+(ork's)g(title,)h(preceding)f(the)330 3821 y(b)s(eginning)f(of)g(the)h
+(b)s(o)s(dy)e(of)h(the)h(text.)330 3962 y(The)j(\\publisher")g(means)h
+(an)m(y)f(p)s(erson)g(or)h(en)m(tit)m(y)h(that)f(distributes)f(copies)i
+(of)e(the)h(Do)s(cumen)m(t)330 4072 y(to)c(the)g(public.)330
+4213 y(A)f(section)h(\\En)m(titled)g(XYZ")f(means)f(a)h(named)g
+(subunit)e(of)h(the)h(Do)s(cumen)m(t)h(whose)e(title)i(either)330
+4322 y(is)d(precisely)g(XYZ)g(or)f(con)m(tains)i(XYZ)f(in)f(paren)m
+(theses)i(follo)m(wing)g(text)g(that)f(translates)h(XYZ)e(in)330
+4432 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g
+(sp)s(eci\014c)g(section)h(name)f(men)m(tioned)h(b)s(elo)m(w,)g(suc)m
+(h)330 4542 y(as)i(\\Ac)m(kno)m(wledgemen)m(ts",)33 b(\\Dedications",)e
+(\\Endorsemen)m(ts",)e(or)f(\\History".\))42 b(T)-8 b(o)29
+b(\\Preserv)m(e)330 4651 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g
+(section)g(when)f(y)m(ou)h(mo)s(dify)e(the)i(Do)s(cumen)m(t)h(means)e
+(that)h(it)g(remains)g(a)330 4761 y(section)e(\\En)m(titled)f(XYZ")g
+(according)g(to)g(this)g(de\014nition.)330 4902 y(The)c(Do)s(cumen)m(t)
+i(ma)m(y)f(include)f(W)-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)
+g(the)g(notice)h(whic)m(h)e(states)i(that)330 5011 y(this)34
+b(License)g(applies)g(to)h(the)f(Do)s(cumen)m(t.)52 b(These)33
+b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330
+5121 y(b)s(e)k(included)g(b)m(y)g(reference)h(in)g(this)f(License,)j
+(but)d(only)h(as)g(regards)f(disclaiming)i(w)m(arran)m(ties:)330
+5230 y(an)m(y)e(other)g(implication)i(that)e(these)g(W)-8
+b(arran)m(t)m(y)39 b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g
+(and)f(has)h(no)330 5340 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h
+(this)f(License.)p eop end
+%%Page: 70 75
+TeXDict begin 70 74 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(70)199 299 y(2.)61
+b(VERBA)-8 b(TIM)31 b(COPYING)330 445 y(Y)-8 b(ou)39
+b(ma)m(y)f(cop)m(y)h(and)e(distribute)h(the)g(Do)s(cumen)m(t)h(in)f(an)
+m(y)g(medium,)h(either)g(commercially)h(or)330 555 y(noncommercially)-8
+b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42
+b(cop)m(yrigh)m(t)i(notices,)j(and)42 b(the)h(license)330
+664 y(notice)37 b(sa)m(ying)g(this)e(License)i(applies)e(to)i(the)f(Do)
+s(cumen)m(t)g(are)g(repro)s(duced)e(in)i(all)g(copies,)j(and)330
+774 y(that)27 b(y)m(ou)g(add)f(no)h(other)f(conditions)h(whatso)s(ev)m
+(er)h(to)f(those)g(of)g(this)f(License.)40 b(Y)-8 b(ou)27
+b(ma)m(y)g(not)g(use)330 883 y(tec)m(hnical)35 b(measures)d(to)i
+(obstruct)f(or)g(con)m(trol)h(the)f(reading)g(or)g(further)e(cop)m
+(ying)j(of)f(the)g(copies)330 993 y(y)m(ou)25 b(mak)m(e)g(or)g
+(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 b(y)m(ou)d(ma)m(y)g(accept)h
+(comp)s(ensation)f(in)f(exc)m(hange)j(for)d(copies.)330
+1103 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f(n)m(um)m(b)s
+(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g(the)f
+(conditions)330 1212 y(in)e(section)i(3.)330 1358 y(Y)-8
+b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g
+(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g
+(publicly)330 1468 y(displa)m(y)31 b(copies.)199 1614
+y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1760 y(If)25
+b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g
+(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330
+1870 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f
+(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330
+1979 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i
+(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36
+b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 2089 y(these)j(Co)m(v)m
+(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41
+b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44
+b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330
+2198 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m)
+m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f
+(the)h(publisher)330 2308 y(of)k(these)h(copies.)53 b(The)34
+b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i
+(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2418 y(equally)e
+(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g
+(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330
+2527 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v)
+m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the)
+330 2637 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d
+(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330
+2746 y(resp)s(ects.)330 2892 y(If)32 b(the)h(required)f(texts)i(for)e
+(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g
+(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 3002 y(the)h(\014rst)f
+(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the)
+g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330
+3112 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3258
+y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f
+(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330
+3367 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g
+(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque)
+330 3477 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h
+(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d
+(whic)m(h)330 3587 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e
+(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m
+(ork)330 3696 y(proto)s(cols)40 b(a)f(complete)h(T)-8
+b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g
+(added)f(material.)67 b(If)330 3806 y(y)m(ou)39 b(use)g(the)g(latter)h
+(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e
+(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3915 y(distribution)f(of)g
+(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38
+b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330
+4025 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s
+(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h
+(time)330 4134 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i
+(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h
+(of)f(that)330 4244 y(edition)31 b(to)g(the)g(public.)330
+4390 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g
+(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330
+4500 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s
+(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m
+(vide)g(y)m(ou)330 4609 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g
+(the)f(Do)s(cumen)m(t.)199 4756 y(4.)61 b(MODIFICA)-8
+b(TIONS)330 4902 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a)
+h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under)
+e(the)h(conditions)330 5011 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v)
+m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f
+(V)-8 b(ersion)22 b(under)d(precisely)330 5121 y(this)29
+b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30
+b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f
+(licensing)330 5230 y(distribution)k(and)h(mo)s(di\014cation)g(of)h
+(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s
+(ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)41 b(In)30
+b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s
+(di\014ed)e(V)-8 b(ersion:)p eop end
+%%Page: 71 76
+TeXDict begin 71 75 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(71)357 299 y(A.)60
+b(Use)33 b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m
+(ers,)i(if)e(an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the)
+510 408 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m
+(ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8
+b(,)510 518 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+(the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same)
+h(title)h(as)510 628 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original)
+i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360
+758 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h
+(one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c
+(for)510 867 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g
+(Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h
+(\014v)m(e)510 977 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s
+(cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g
+(few)m(er)510 1087 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g
+(y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1217 y(C.)60
+b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g
+(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32
+b(as)f(the)510 1326 y(publisher.)355 1456 y(D.)61 b(Preserv)m(e)31
+b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.)
+363 1587 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i
+(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g
+(other)510 1696 y(cop)m(yrigh)m(t)g(notices.)365 1826
+y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g
+(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510
+1936 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g
+(form)510 2045 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353
+2176 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f
+(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e
+(required)g(Co)m(v)m(er)510 2285 y(T)-8 b(exts)31 b(giv)m(en)g(in)f
+(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2415
+y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.)
+392 2545 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g
+(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g
+(item)510 2655 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d
+(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8
+b(ersion)510 2765 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45
+b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e
+(the)g(Do)s(cu-)510 2874 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f
+(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s
+(cumen)m(t)510 2984 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i
+(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)37 b(as)510 3093 y(stated)31 b(in)f(the)h(previous)f(sen)m
+(tence.)378 3224 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s
+(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m
+(t)h(for)g(public)e(access)j(to)510 3333 y(a)e(T)-8 b(ransparen)m(t)30
+b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net)
+m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3443 y(the)g(Do)s(cumen)m
+(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45
+b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3552
+y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net)
+m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h
+(published)510 3662 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e
+(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher)
+d(of)i(the)510 3771 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s
+(ermission.)354 3902 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m
+(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k
+(Preserv)m(e)c(the)g(Title)510 4011 y(of)j(the)f(section,)j(and)d
+(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone)
+h(of)f(eac)m(h)i(of)f(the)510 4121 y(con)m(tributor)k(ac)m(kno)m
+(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368
+4251 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5
+b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f
+(in)f(their)g(text)i(and)510 4361 y(in)f(their)g(titles.)58
+b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5
+b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510
+4470 y(section)c(titles.)341 4600 y(M.)61 b(Delete)33
+b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42
+b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510
+4710 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357
+4840 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f
+(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g
+(in)510 4950 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31
+b(Section.)354 5080 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8
+b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)g
+(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f
+(app)s(endices)g(that)h(qualify)330 5340 y(as)28 b(Secondary)g
+(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h
+(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop end
+%%Page: 72 77
+TeXDict begin 72 76 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(72)330 299 y(y)m(our)32
+b(option)h(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e
+(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)330
+408 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36
+b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36
+b(license)g(notice.)57 b(These)330 518 y(titles)32 b(m)m(ust)e(b)s(e)g
+(distinct)h(from)e(an)m(y)i(other)g(section)g(titles.)330
+650 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section)i(En)m(titled)f
+(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g(nothing)g(but)
+330 759 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s(di\014ed)g(V)-8
+b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 b(parties|for)g(example,)g
+(statemen)m(ts)i(of)330 869 y(p)s(eer)27 b(review)g(or)g(that)h(the)f
+(text)i(has)d(b)s(een)h(appro)m(v)m(ed)g(b)m(y)g(an)h(organization)h
+(as)e(the)h(authoritativ)m(e)330 978 y(de\014nition)i(of)h(a)f
+(standard.)330 1110 y(Y)-8 b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g
+(up)e(to)i(\014v)m(e)g(w)m(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)
+30 b(T)-8 b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330
+1219 y(to)g(25)g(w)m(ords)e(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8
+b(ext,)29 b(to)f(the)f(end)f(of)i(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8
+b(exts)27 b(in)g(the)h(Mo)s(di\014ed)330 1329 y(V)-8
+b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f(F)-8 b(ron)m(t-Co)m(v)m
+(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m(k-Co)m(v)m(er)j(T)-8
+b(ext)36 b(ma)m(y)h(b)s(e)330 1439 y(added)27 b(b)m(y)g(\(or)h(through)
+f(arrangemen)m(ts)h(made)g(b)m(y\))g(an)m(y)g(one)f(en)m(tit)m(y)-8
+b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t)g(already)330 1548
+y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g(same)h(co)m(v)m
+(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m(y)g(arrangemen)m
+(t)330 1658 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m(y)i(y)m(ou)f(are)f
+(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g(not)f(add)g
+(another;)j(but)330 1767 y(y)m(ou)c(ma)m(y)h(replace)g(the)f(old)g
+(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e
+(publisher)f(that)330 1877 y(added)e(the)g(old)h(one.)330
+2008 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s
+(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s
+(ermission)330 2118 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g
+(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g
+(Mo)s(di\014ed)330 2228 y(V)-8 b(ersion.)199 2359 y(5.)61
+b(COMBINING)31 b(DOCUMENTS)330 2491 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m
+(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h
+(released)g(under)f(this)g(License,)330 2600 y(under)f(the)h(terms)g
+(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f
+(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2710
+y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s
+(cumen)m(ts,)330 2819 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g
+(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined)
+g(w)m(ork)f(in)h(its)g(license)330 2929 y(notice,)32
+b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8
+b(arran)m(t)m(y)32 b(Disclaimers.)330 3061 y(The)e(com)m(bined)g(w)m
+(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,)
+i(and)d(m)m(ultiple)i(iden)m(tical)330 3170 y(In)m(v)-5
+b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h
+(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m
+(v)-5 b(arian)m(t)330 3280 y(Sections)27 b(with)g(the)g(same)g(name)g
+(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f
+(eac)m(h)h(suc)m(h)f(section)330 3389 y(unique)33 b(b)m(y)h(adding)f
+(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g
+(the)g(original)h(author)f(or)330 3499 y(publisher)23
+b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m
+(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330
+3608 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h
+(com)m(bined)330 3718 y(w)m(ork.)330 3850 y(In)41 b(the)g(com)m
+(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g
+(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330
+3959 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h
+(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330
+4069 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31
+b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47
+b(Y)-8 b(ou)330 4178 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m
+(titled)f(\\Endorsemen)m(ts.")199 4310 y(6.)61 b(COLLECTIONS)28
+b(OF)i(DOCUMENTS)330 4441 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f
+(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g
+(do)s(cumen)m(ts)f(released)330 4551 y(under)41 b(this)h(License,)k
+(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f
+(the)h(v)-5 b(arious)330 4661 y(do)s(cumen)m(ts)42 b(with)g(a)h(single)
+g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48
+b(pro)m(vided)42 b(that)i(y)m(ou)330 4770 y(follo)m(w)38
+b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g
+(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330
+4880 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32
+b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h
+(collection,)i(and)d(distribute)g(it)h(individu-)330
+5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g
+(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330
+5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g
+(other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330
+5340 y(that)d(do)s(cumen)m(t.)p eop end
+%%Page: 73 78
+TeXDict begin 73 77 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(73)199 299 y(7.)61
+b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h(W)m(ORKS)330
+441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f(its)g(deriv)-5
+b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep)s(enden)m(t)330
+551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h(on)f(a)g(v)m
+(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g(is)h(called)
+330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i(resulting)e
+(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g(the)330
+770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m
+(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39
+b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g
+(aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g
+(other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h
+(not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h
+(Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8
+b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f
+(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241
+y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f
+(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m
+(er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m
+(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h
+(aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5
+b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f
+(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330
+1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f
+(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61
+b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a)
+i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e
+(translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h
+(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5
+b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f
+(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i
+(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24
+b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25
+b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330
+2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44
+b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f
+(License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the)
+h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42
+b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513
+y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g
+(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330
+2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33
+b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f
+(translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f
+(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m
+(ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28
+b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m
+(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330
+3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m
+(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330
+3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61
+b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8
+b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h
+(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38
+b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g
+(cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330
+3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically)
+i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330
+3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i
+(of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h
+(particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h
+(\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g
+(cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h
+(terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8
+b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34
+b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h
+(reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288
+y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d
+(license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h
+(reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h
+(holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g
+(reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m
+(ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f
+(License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330
+4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g
+(violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h
+(of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28
+b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h
+(terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38
+b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g
+(under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e)
+330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g
+(reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f
+(the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f
+(an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end
+%%Page: 74 79
+TeXDict begin 74 78 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(74)154 299 y(10.)61
+b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433
+y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43
+b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g(the)g(GNU)g(F)
+-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to)
+g(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h
+(in)g(spirit)330 653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m
+(y)h(di\013er)f(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i
+(concerns.)330 762 y(See)c Fr(http://www.gnu.org/copy)o(left)o(/)p
+Fx(.)330 897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m
+(en)g(a)g(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39
+b(If)29 b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45
+b(that)h(a)g(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g
+(License)h(\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116
+y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f
+(follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330
+1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m
+(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g
+(b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8
+b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s
+(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445
+y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m
+(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the)
+h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46
+b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f
+(can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f
+(License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen)
+m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m
+(tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g
+(for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330
+2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or)
+e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330
+2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m
+(table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h
+(facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g
+(w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i
+(edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33
+b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s
+(oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330
+2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m
+(orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330
+2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m
+(ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330
+2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a)
+g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330
+2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29
+b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions)
+f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g
+(organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e
+(or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h
+(as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330
+3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h
+(licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330
+3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h
+(License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330
+3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f
+(part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts)
+330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j
+(w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s
+(er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h
+(Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site)
+g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g
+(time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is)
+330 4005 y(eligible)h(for)e(relicensing.)p eop end
+%%Page: 75 80
+TeXDict begin 75 79 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(75)150 299 y Fw(ADDENDUM:)45
+b(Ho)l(w)h(to)f(use)g(this)h(License)f(for)g(y)l(our)g(do)t(cumen)l(ts)
+150 458 y Fx(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m
+(t)g(y)m(ou)f(ha)m(v)m(e)i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)
+f(License)h(in)g(the)150 568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g
+(follo)m(wing)i(cop)m(yrigh)m(t)g(and)e(license)h(notices)g(just)f
+(after)h(the)g(title)h(page:)468 673 y Fd(Copyright)42
+b(\(C\))79 b Fc(year)88 b(your)40 b(name)9 b Fd(.)468
+760 y(Permission)42 b(is)e(granted)g(to)g(copy,)h(distribute)g(and/or)g
+(modify)f(this)g(document)468 847 y(under)h(the)f(terms)g(of)g(the)g
+(GNU)g(Free)g(Documentation)i(License,)f(Version)g(1.3)468
+934 y(or)f(any)g(later)g(version)h(published)h(by)d(the)h(Free)g
+(Software)h(Foundation;)468 1021 y(with)g(no)e(Invariant)j(Sections,)f
+(no)f(Front-Cover)h(Texts,)g(and)f(no)f(Back-Cover)468
+1108 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f(license)i(is)f(included)h
+(in)f(the)g(section)g(entitled)h(``GNU)468 1196 y(Free)g(Documentation)
+h(License''.)275 1323 y Fx(If)d(y)m(ou)h(ha)m(v)m(e)h(In)m(v)-5
+b(arian)m(t)41 b(Sections,)i(F)-8 b(ron)m(t-Co)m(v)m(er)42
+b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts,)43
+b(replace)e(the)150 1432 y(\\with)6 b(.)22 b(.)g(.)12
+b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547 1537
+y Fd(with)40 b(the)g(Invariant)h(Sections)g(being)g Fc(list)f(their)g
+(titles)9 b Fd(,)41 b(with)547 1624 y(the)f(Front-Cover)i(Texts)e
+(being)g Fc(list)9 b Fd(,)40 b(and)g(with)g(the)g(Back-Cover)i(Texts)
+547 1712 y(being)e Fc(list)9 b Fd(.)275 1839 y Fx(If)34
+b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f
+(Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g
+(of)g(the)150 1948 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g
+(alternativ)m(es)i(to)e(suit)f(the)h(situation.)275 2075
+y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g
+(examples)g(of)f(program)f(co)s(de,)j(w)m(e)e(recommend)g(releasing)150
+2185 y(these)44 b(examples)f(in)g(parallel)h(under)e(y)m(our)h(c)m
+(hoice)i(of)e(free)g(soft)m(w)m(are)h(license,)k(suc)m(h)43
+b(as)g(the)g(GNU)150 2295 y(General)31 b(Public)f(License,)i(to)f(p)s
+(ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)150
+2512 y Fw(C.2)68 b(GNU)45 b(Lesser)g(General)h(Public)f(License)1417
+2654 y Fx(V)-8 b(ersion)31 b(2.1,)h(F)-8 b(ebruary)30
+b(1999)390 2781 y(Cop)m(yrigh)m(t)842 2778 y(c)817 2781
+y Fv(\015)g Fx(1991,)j(1999)f(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
+b(oundation,)31 b(Inc.)390 2891 y(51)g(F)-8 b(ranklin)31
+b(Street,)g(Fifth)g(Flo)s(or,)g(Boston,)g(MA)g(02110-1301,)k(USA)390
+3110 y(Ev)m(ery)m(one)c(is)g(p)s(ermitted)f(to)h(cop)m(y)g(and)f
+(distribute)g(v)m(erbatim)h(copies)390 3220 y(of)g(this)f(license)h(do)
+s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f(is)f(not)h(allo)m(w)m(ed.)390
+3439 y([This)f(is)g(the)h(\014rst)e(released)j(v)m(ersion)e(of)h(the)g
+(Lesser)f(GPL.)61 b(It)30 b(also)i(coun)m(ts)390 3549
+y(as)f(the)f(successor)h(of)f(the)h(GNU)g(Library)e(Public)i(License,)g
+(v)m(ersion)g(2,)g(hence)f(the)390 3658 y(v)m(ersion)h(n)m(um)m(b)s(er)
+e(2.1.])150 3843 y Fq(Pream)m(ble)150 3990 y Fx(The)e(licenses)i(for)f
+(most)g(soft)m(w)m(are)i(are)e(designed)g(to)h(tak)m(e)g(a)m(w)m(a)m(y)
+h(y)m(our)e(freedom)g(to)h(share)e(and)h(c)m(hange)150
+4099 y(it.)42 b(By)32 b(con)m(trast,)g(the)f(GNU)g(General)h(Public)f
+(Licenses)g(are)g(in)m(tended)g(to)g(guaran)m(tee)h(y)m(our)f(freedom)
+150 4209 y(to)g(share)f(and)g(c)m(hange)i(free)e(soft)m(w)m(are|to)j
+(mak)m(e)e(sure)f(the)g(soft)m(w)m(are)i(is)e(free)h(for)f(all)h(its)g
+(users.)275 4336 y(This)40 b(license,)45 b(the)c(Lesser)g(General)h
+(Public)f(License,)j(applies)d(to)h(some)f(sp)s(ecially)h(designated)
+150 4446 y(soft)m(w)m(are|t)m(ypically)24 b(libraries|of)e(the)f(F)-8
+b(ree)22 b(Soft)m(w)m(are)g(F)-8 b(oundation)22 b(and)f(other)g
+(authors)g(who)g(decide)150 4555 y(to)35 b(use)f(it.)53
+b(Y)-8 b(ou)35 b(can)g(use)f(it)g(to)s(o,)j(but)c(w)m(e)i(suggest)g(y)m
+(ou)g(\014rst)f(think)f(carefully)i(ab)s(out)f(whether)g(this)150
+4665 y(license)27 b(or)e(the)h(ordinary)f(General)h(Public)g(License)g
+(is)f(the)h(b)s(etter)g(strategy)h(to)f(use)f(in)h(an)m(y)g(particular)
+150 4774 y(case,)32 b(based)e(on)g(the)h(explanations)g(b)s(elo)m(w.)
+275 4902 y(When)41 b(w)m(e)g(sp)s(eak)g(of)h(free)f(soft)m(w)m(are,)46
+b(w)m(e)c(are)f(referring)g(to)h(freedom)g(of)f(use,)j(not)e(price.)73
+b(Our)150 5011 y(General)30 b(Public)f(Licenses)g(are)h(designed)f(to)g
+(mak)m(e)i(sure)d(that)i(y)m(ou)f(ha)m(v)m(e)h(the)g(freedom)f(to)g
+(distribute)150 5121 y(copies)e(of)g(free)f(soft)m(w)m(are)i(\(and)f(c)
+m(harge)g(for)f(this)h(service)g(if)g(y)m(ou)f(wish\);)i(that)f(y)m(ou)
+g(receiv)m(e)h(source)f(co)s(de)150 5230 y(or)34 b(can)h(get)h(it)f(if)
+f(y)m(ou)h(w)m(an)m(t)g(it;)i(that)e(y)m(ou)g(can)g(c)m(hange)g(the)g
+(soft)m(w)m(are)h(and)e(use)g(pieces)h(of)f(it)h(in)f(new)150
+5340 y(free)c(programs;)h(and)f(that)g(y)m(ou)h(are)g(informed)f(that)h
+(y)m(ou)f(can)h(do)f(these)h(things.)p eop end
+%%Page: 76 81
+TeXDict begin 76 80 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(76)275 299 y(T)-8
+b(o)27 b(protect)h(y)m(our)e(righ)m(ts,)j(w)m(e)e(need)f(to)i(mak)m(e)g
+(restrictions)f(that)h(forbid)e(distributors)f(to)j(den)m(y)f(y)m(ou)
+150 408 y(these)32 b(righ)m(ts)g(or)g(to)g(ask)g(y)m(ou)g(to)g
+(surrender)d(these)j(righ)m(ts.)45 b(These)32 b(restrictions)g
+(translate)h(to)f(certain)150 518 y(resp)s(onsibilities)e(for)h(y)m(ou)
+f(if)h(y)m(ou)f(distribute)g(copies)h(of)g(the)f(library)g(or)h(if)f(y)
+m(ou)h(mo)s(dify)e(it.)275 664 y(F)-8 b(or)28 b(example,)h(if)f(y)m(ou)
+g(distribute)f(copies)i(of)f(the)g(library)-8 b(,)29
+b(whether)e(gratis)h(or)g(for)g(a)g(fee,)h(y)m(ou)f(m)m(ust)150
+774 y(giv)m(e)40 b(the)f(recipien)m(ts)h(all)g(the)e(righ)m(ts)i(that)f
+(w)m(e)g(ga)m(v)m(e)i(y)m(ou.)66 b(Y)-8 b(ou)40 b(m)m(ust)e(mak)m(e)i
+(sure)e(that)h(they)-8 b(,)42 b(to)s(o,)150 883 y(receiv)m(e)28
+b(or)f(can)f(get)i(the)e(source)h(co)s(de.)40 b(If)25
+b(y)m(ou)i(link)f(other)h(co)s(de)g(with)f(the)g(library)-8
+b(,)28 b(y)m(ou)f(m)m(ust)f(pro)m(vide)150 993 y(complete)35
+b(ob)5 b(ject)34 b(\014les)g(to)g(the)f(recipien)m(ts,)j(so)d(that)i
+(they)e(can)h(relink)f(them)h(with)f(the)g(library)g(after)150
+1103 y(making)28 b(c)m(hanges)h(to)g(the)f(library)f(and)h(recompiling)
+g(it.)41 b(And)27 b(y)m(ou)h(m)m(ust)g(sho)m(w)g(them)g(these)g(terms)g
+(so)150 1212 y(they)j(kno)m(w)f(their)g(righ)m(ts.)275
+1358 y(W)-8 b(e)28 b(protect)g(y)m(our)e(righ)m(ts)i(with)e(a)i(t)m(w)m
+(o-step)g(metho)s(d:)39 b(\(1\))28 b(w)m(e)f(cop)m(yrigh)m(t)h(the)f
+(library)-8 b(,)28 b(and)e(\(2\))i(w)m(e)150 1468 y(o\013er)37
+b(y)m(ou)f(this)g(license,)j(whic)m(h)d(giv)m(es)h(y)m(ou)g(legal)h(p)s
+(ermission)d(to)i(cop)m(y)-8 b(,)39 b(distribute)d(and/or)g(mo)s(dify)
+150 1577 y(the)31 b(library)-8 b(.)275 1724 y(T)g(o)30
+b(protect)g(eac)m(h)h(distributor,)f(w)m(e)g(w)m(an)m(t)g(to)h(mak)m(e)
+g(it)f(v)m(ery)g(clear)h(that)f(there)g(is)g(no)f(w)m(arran)m(t)m(y)i
+(for)150 1833 y(the)24 b(free)g(library)-8 b(.)39 b(Also,)26
+b(if)e(the)g(library)f(is)h(mo)s(di\014ed)f(b)m(y)h(someone)g(else)h
+(and)e(passed)h(on,)h(the)f(recipien)m(ts)150 1943 y(should)32
+b(kno)m(w)i(that)g(what)f(they)h(ha)m(v)m(e)g(is)g(not)f(the)h
+(original)g(v)m(ersion,)h(so)f(that)g(the)f(original)i(author's)150
+2052 y(reputation)c(will)f(not)h(b)s(e)f(a\013ected)i(b)m(y)e(problems)
+g(that)h(migh)m(t)g(b)s(e)e(in)m(tro)s(duced)h(b)m(y)g(others.)275
+2198 y(Finally)-8 b(,)40 b(soft)m(w)m(are)e(paten)m(ts)g(p)s(ose)e(a)i
+(constan)m(t)g(threat)f(to)h(the)f(existence)i(of)e(an)m(y)g(free)g
+(program.)150 2308 y(W)-8 b(e)27 b(wish)e(to)i(mak)m(e)g(sure)e(that)i
+(a)f(compan)m(y)g(cannot)h(e\013ectiv)m(ely)i(restrict)d(the)h(users)e
+(of)h(a)g(free)g(program)150 2418 y(b)m(y)h(obtaining)h(a)f(restrictiv)
+m(e)i(license)g(from)d(a)i(paten)m(t)g(holder.)39 b(Therefore,)28
+b(w)m(e)g(insist)f(that)g(an)m(y)h(paten)m(t)150 2527
+y(license)j(obtained)f(for)f(a)h(v)m(ersion)g(of)g(the)f(library)g(m)m
+(ust)h(b)s(e)f(consisten)m(t)i(with)e(the)h(full)f(freedom)h(of)f(use)
+150 2637 y(sp)s(eci\014ed)h(in)g(this)g(license.)275
+2783 y(Most)i(GNU)g(soft)m(w)m(are,)i(including)d(some)h(libraries,)g
+(is)g(co)m(v)m(ered)h(b)m(y)e(the)h(ordinary)f(GNU)h(General)150
+2892 y(Public)38 b(License.)65 b(This)37 b(license,)k(the)e(GNU)g
+(Lesser)f(General)h(Public)f(License,)j(applies)d(to)h(certain)150
+3002 y(designated)d(libraries,)i(and)d(is)g(quite)h(di\013eren)m(t)h
+(from)e(the)h(ordinary)f(General)h(Public)g(License.)57
+b(W)-8 b(e)150 3112 y(use)33 b(this)g(license)i(for)e(certain)h
+(libraries)f(in)g(order)g(to)h(p)s(ermit)f(linking)g(those)h(libraries)
+g(in)m(to)g(non-free)150 3221 y(programs.)275 3367 y(When)h(a)h
+(program)g(is)g(link)m(ed)g(with)f(a)h(library)-8 b(,)38
+b(whether)d(statically)j(or)e(using)f(a)i(shared)e(library)-8
+b(,)150 3477 y(the)28 b(com)m(bination)h(of)f(the)g(t)m(w)m(o)h(is)f
+(legally)i(sp)s(eaking)d(a)i(com)m(bined)f(w)m(ork,)g(a)g(deriv)-5
+b(ativ)m(e)30 b(of)e(the)g(original)150 3587 y(library)-8
+b(.)73 b(The)41 b(ordinary)f(General)i(Public)f(License)h(therefore)g
+(p)s(ermits)e(suc)m(h)h(linking)g(only)h(if)f(the)150
+3696 y(en)m(tire)34 b(com)m(bination)h(\014ts)e(its)h(criteria)h(of)e
+(freedom.)50 b(The)33 b(Lesser)g(General)i(Public)e(License)h(p)s
+(ermits)150 3806 y(more)d(lax)g(criteria)g(for)f(linking)h(other)f(co)s
+(de)h(with)f(the)h(library)-8 b(.)275 3952 y(W)g(e)25
+b(call)i(this)d(license)i(the)f Fn(Lesser)31 b Fx(General)26
+b(Public)e(License)h(b)s(ecause)g(it)g(do)s(es)g Fb(L)-5
+b(ess)33 b Fx(to)25 b(protect)h(the)150 4061 y(user's)c(freedom)h(than)
+g(the)g(ordinary)f(General)h(Public)g(License.)39 b(It)23
+b(also)h(pro)m(vides)e(other)i(free)e(soft)m(w)m(are)150
+4171 y(dev)m(elop)s(ers)36 b(Less)g(of)g(an)g(adv)-5
+b(an)m(tage)38 b(o)m(v)m(er)f(comp)s(eting)f(non-free)g(programs.)57
+b(These)36 b(disadv)-5 b(an)m(tages)150 4281 y(are)28
+b(the)f(reason)h(w)m(e)g(use)f(the)h(ordinary)e(General)j(Public)e
+(License)h(for)f(man)m(y)h(libraries.)39 b(Ho)m(w)m(ev)m(er,)31
+b(the)150 4390 y(Lesser)f(license)i(pro)m(vides)e(adv)-5
+b(an)m(tages)32 b(in)e(certain)h(sp)s(ecial)g(circumstances.)275
+4536 y(F)-8 b(or)38 b(example,)j(on)d(rare)h(o)s(ccasions,)i(there)d
+(ma)m(y)h(b)s(e)e(a)i(sp)s(ecial)g(need)f(to)g(encourage)i(the)e
+(widest)150 4646 y(p)s(ossible)d(use)g(of)g(a)h(certain)g(library)-8
+b(,)37 b(so)f(that)g(it)f(b)s(ecomes)h(a)g(de-facto)h(standard.)54
+b(T)-8 b(o)36 b(ac)m(hiev)m(e)i(this,)150 4756 y(non-free)33
+b(programs)f(m)m(ust)h(b)s(e)f(allo)m(w)m(ed)j(to)f(use)e(the)h
+(library)-8 b(.)48 b(A)33 b(more)g(frequen)m(t)g(case)h(is)f(that)h(a)f
+(free)150 4865 y(library)i(do)s(es)g(the)g(same)h(job)f(as)g(widely)h
+(used)e(non-free)h(libraries.)56 b(In)34 b(this)i(case,)h(there)f(is)f
+(little)i(to)150 4975 y(gain)32 b(b)m(y)g(limiting)h(the)f(free)g
+(library)g(to)g(free)g(soft)m(w)m(are)i(only)-8 b(,)33
+b(so)f(w)m(e)g(use)g(the)g(Lesser)f(General)i(Public)150
+5084 y(License.)275 5230 y(In)39 b(other)i(cases,)k(p)s(ermission)39
+b(to)j(use)e(a)h(particular)g(library)f(in)h(non-free)f(programs)h
+(enables)g(a)150 5340 y(greater)33 b(n)m(um)m(b)s(er)e(of)h(p)s(eople)g
+(to)g(use)g(a)g(large)h(b)s(o)s(dy)e(of)h(free)g(soft)m(w)m(are.)46
+b(F)-8 b(or)33 b(example,)g(p)s(ermission)e(to)p eop
+end
+%%Page: 77 82
+TeXDict begin 77 81 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(77)150 299 y(use)33
+b(the)g(GNU)g(C)f(Library)g(in)h(non-free)f(programs)h(enables)g(man)m
+(y)g(more)g(p)s(eople)g(to)g(use)g(the)g(whole)150 408
+y(GNU)e(op)s(erating)g(system,)g(as)f(w)m(ell)i(as)e(its)h(v)-5
+b(arian)m(t,)32 b(the)e(GNU/Lin)m(ux)h(op)s(erating)g(system.)275
+542 y(Although)i(the)g(Lesser)g(General)i(Public)d(License)i(is)g(Less)
+f(protectiv)m(e)i(of)e(the)h(users')e(freedom,)i(it)150
+651 y(do)s(es)28 b(ensure)f(that)i(the)f(user)g(of)g(a)h(program)f
+(that)h(is)f(link)m(ed)g(with)g(the)h(Library)e(has)h(the)g(freedom)h
+(and)150 761 y(the)i(wherewithal)f(to)h(run)e(that)i(program)f(using)g
+(a)h(mo)s(di\014ed)e(v)m(ersion)i(of)f(the)h(Library)-8
+b(.)275 894 y(The)28 b(precise)h(terms)g(and)f(conditions)h(for)g(cop)m
+(ying,)h(distribution)e(and)g(mo)s(di\014cation)h(follo)m(w.)42
+b(P)m(a)m(y)150 1003 y(close)35 b(atten)m(tion)i(to)e(the)f
+(di\013erence)h(b)s(et)m(w)m(een)g(a)f(\\w)m(ork)h(based)f(on)g(the)g
+(library")g(and)g(a)h(\\w)m(ork)f(that)150 1113 y(uses)j(the)h
+(library".)62 b(The)37 b(former)g(con)m(tains)h(co)s(de)g(deriv)m(ed)g
+(from)e(the)i(library)-8 b(,)40 b(whereas)d(the)h(latter)150
+1223 y(m)m(ust)30 b(b)s(e)g(com)m(bined)h(with)f(the)g(library)g(in)g
+(order)g(to)h(run.)150 1397 y Fq(TERMS)41 b(AND)g(CONDITIONS)f(F)m(OR)h
+(COPYING,)f(DISTRIBUTION)150 1522 y(AND)h(MODIFICA)-10
+b(TION)199 1669 y Fx(0.)61 b(This)21 b(License)h(Agreemen)m(t)h
+(applies)f(to)g(an)m(y)g(soft)m(w)m(are)h(library)e(or)g(other)h
+(program)f(whic)m(h)h(con)m(tains)330 1778 y(a)40 b(notice)h(placed)f
+(b)m(y)g(the)g(cop)m(yrigh)m(t)h(holder)e(or)h(other)g(authorized)g
+(part)m(y)g(sa)m(ying)g(it)g(ma)m(y)h(b)s(e)330 1888
+y(distributed)e(under)g(the)i(terms)f(of)h(this)f(Lesser)g(General)h
+(Public)f(License)h(\(also)h(called)g(\\this)330 1998
+y(License"\).)g(Eac)m(h)31 b(licensee)h(is)e(addressed)g(as)g(\\y)m
+(ou".)330 2131 y(A)h(\\library")g(means)g(a)g(collection)j(of)d(soft)m
+(w)m(are)h(functions)f(and/or)f(data)i(prepared)e(so)h(as)g(to)h(b)s(e)
+330 2240 y(con)m(v)m(enien)m(tly)g(link)m(ed)e(with)f(application)j
+(programs)d(\(whic)m(h)h(use)f(some)h(of)g(those)g(functions)g(and)330
+2350 y(data\))h(to)h(form)d(executables.)330 2483 y(The)43
+b(\\Library",)k(b)s(elo)m(w,)h(refers)43 b(to)i(an)m(y)f(suc)m(h)f
+(soft)m(w)m(are)i(library)e(or)h(w)m(ork)g(whic)m(h)f(has)h(b)s(een)330
+2592 y(distributed)22 b(under)g(these)h(terms.)38 b(A)24
+b(\\w)m(ork)f(based)g(on)g(the)g(Library")g(means)g(either)g(the)h
+(Library)330 2702 y(or)43 b(an)m(y)h(deriv)-5 b(ativ)m(e)45
+b(w)m(ork)e(under)f(cop)m(yrigh)m(t)j(la)m(w:)67 b(that)44
+b(is)g(to)g(sa)m(y)-8 b(,)48 b(a)43 b(w)m(ork)h(con)m(taining)h(the)330
+2812 y(Library)c(or)h(a)h(p)s(ortion)e(of)h(it,)k(either)d(v)m(erbatim)
+f(or)g(with)g(mo)s(di\014cations)g(and/or)g(translated)330
+2921 y(straigh)m(tforw)m(ardly)33 b(in)m(to)g(another)f(language.)46
+b(\(Hereinafter,)34 b(translation)f(is)f(included)f(without)330
+3031 y(limitation)h(in)e(the)h(term)f(\\mo)s(di\014cation".\))330
+3164 y(\\Source)22 b(co)s(de")h(for)e(a)i(w)m(ork)f(means)f(the)i
+(preferred)d(form)i(of)g(the)g(w)m(ork)g(for)f(making)i(mo)s
+(di\014cations)330 3273 y(to)33 b(it.)45 b(F)-8 b(or)33
+b(a)f(library)-8 b(,)32 b(complete)i(source)e(co)s(de)g(means)f(all)i
+(the)f(source)g(co)s(de)g(for)g(all)g(mo)s(dules)f(it)330
+3383 y(con)m(tains,)k(plus)c(an)m(y)i(asso)s(ciated)h(in)m(terface)h
+(de\014nition)d(\014les,)h(plus)f(the)h(scripts)f(used)g(to)h(con)m
+(trol)330 3493 y(compilation)f(and)e(installation)i(of)f(the)f(library)
+-8 b(.)330 3626 y(Activities)41 b(other)e(than)f(cop)m(ying,)43
+b(distribution)38 b(and)g(mo)s(di\014cation)h(are)g(not)g(co)m(v)m
+(ered)h(b)m(y)f(this)330 3735 y(License;)31 b(they)f(are)g(outside)h
+(its)f(scop)s(e.)40 b(The)30 b(act)h(of)f(running)e(a)j(program)e
+(using)h(the)g(Library)f(is)330 3845 y(not)24 b(restricted,)j(and)c
+(output)h(from)f(suc)m(h)h(a)g(program)g(is)g(co)m(v)m(ered)i(only)e
+(if)g(its)h(con)m(ten)m(ts)h(constitute)330 3954 y(a)g(w)m(ork)f(based)
+g(on)g(the)h(Library)f(\(indep)s(enden)m(t)f(of)i(the)f(use)g(of)h(the)
+f(Library)g(in)g(a)g(to)s(ol)i(for)e(writing)330 4064
+y(it\).)63 b(Whether)37 b(that)h(is)g(true)f(dep)s(ends)f(on)h(what)g
+(the)h(Library)e(do)s(es)h(and)g(what)h(the)f(program)330
+4174 y(that)31 b(uses)f(the)g(Library)g(do)s(es.)199
+4307 y(1.)61 b(Y)-8 b(ou)38 b(ma)m(y)h(cop)m(y)f(and)g(distribute)f(v)m
+(erbatim)i(copies)f(of)g(the)g(Library's)f(complete)j(source)e(co)s(de)
+330 4416 y(as)c(y)m(ou)g(receiv)m(e)i(it,)g(in)d(an)m(y)h(medium,)g
+(pro)m(vided)g(that)g(y)m(ou)h(conspicuously)e(and)h(appropriately)330
+4526 y(publish)27 b(on)h(eac)m(h)h(cop)m(y)g(an)f(appropriate)h(cop)m
+(yrigh)m(t)g(notice)h(and)e(disclaimer)h(of)f(w)m(arran)m(t)m(y;)i(k)m
+(eep)330 4635 y(in)m(tact)f(all)f(the)f(notices)h(that)g(refer)f(to)h
+(this)f(License)g(and)g(to)h(the)f(absence)g(of)h(an)m(y)f(w)m(arran)m
+(t)m(y;)j(and)330 4745 y(distribute)g(a)h(cop)m(y)g(of)f(this)h
+(License)g(along)g(with)f(the)h(Library)-8 b(.)330 4878
+y(Y)g(ou)31 b(ma)m(y)g(c)m(harge)h(a)f(fee)g(for)f(the)h(ph)m(ysical)g
+(act)h(of)f(transferring)f(a)h(cop)m(y)-8 b(,)32 b(and)e(y)m(ou)h(ma)m
+(y)g(at)g(y)m(our)330 4988 y(option)g(o\013er)g(w)m(arran)m(t)m(y)g
+(protection)h(in)e(exc)m(hange)i(for)e(a)g(fee.)199 5121
+y(2.)61 b(Y)-8 b(ou)27 b(ma)m(y)h(mo)s(dify)d(y)m(our)i(cop)m(y)h(or)e
+(copies)i(of)f(the)g(Library)f(or)g(an)m(y)h(p)s(ortion)g(of)f(it,)j
+(th)m(us)d(forming)h(a)330 5230 y(w)m(ork)k(based)g(on)g(the)h(Library)
+-8 b(,)31 b(and)f(cop)m(y)i(and)f(distribute)g(suc)m(h)g(mo)s
+(di\014cations)g(or)g(w)m(ork)g(under)330 5340 y(the)g(terms)f(of)g
+(Section)i(1)e(ab)s(o)m(v)m(e,)i(pro)m(vided)e(that)h(y)m(ou)g(also)g
+(meet)g(all)h(of)e(these)h(conditions:)p eop end
+%%Page: 78 83
+TeXDict begin 78 82 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(78)379 299 y(a.)61
+b(The)30 b(mo)s(di\014ed)f(w)m(ork)i(m)m(ust)f(itself)h(b)s(e)f(a)h
+(soft)m(w)m(are)g(library)-8 b(.)374 436 y(b.)60 b(Y)-8
+b(ou)43 b(m)m(ust)f(cause)i(the)e(\014les)h(mo)s(di\014ed)e(to)i(carry)
+g(prominen)m(t)f(notices)i(stating)f(that)h(y)m(ou)510
+545 y(c)m(hanged)31 b(the)g(\014les)f(and)g(the)g(date)h(of)g(an)m(y)g
+(c)m(hange.)384 682 y(c.)61 b(Y)-8 b(ou)41 b(m)m(ust)f(cause)g(the)h
+(whole)f(of)h(the)f(w)m(ork)g(to)h(b)s(e)f(licensed)g(at)h(no)f(c)m
+(harge)i(to)f(all)g(third)510 792 y(parties)31 b(under)e(the)h(terms)g
+(of)h(this)f(License.)374 929 y(d.)60 b(If)43 b(a)i(facilit)m(y)h(in)d
+(the)i(mo)s(di\014ed)d(Library)h(refers)h(to)h(a)f(function)f(or)h(a)h
+(table)f(of)h(data)f(to)510 1039 y(b)s(e)d(supplied)f(b)m(y)i(an)f
+(application)i(program)f(that)g(uses)f(the)h(facilit)m(y)-8
+b(,)47 b(other)42 b(than)f(as)h(an)510 1148 y(argumen)m(t)37
+b(passed)f(when)f(the)h(facilit)m(y)j(is)d(in)m(v)m(ok)m(ed,)k(then)c
+(y)m(ou)g(m)m(ust)g(mak)m(e)i(a)e(go)s(o)s(d)h(faith)510
+1258 y(e\013ort)30 b(to)g(ensure)f(that,)h(in)f(the)g(ev)m(en)m(t)i(an)
+e(application)i(do)s(es)e(not)g(supply)f(suc)m(h)h(function)g(or)510
+1367 y(table,)f(the)d(facilit)m(y)j(still)e(op)s(erates,)h(and)e(p)s
+(erforms)f(whatev)m(er)i(part)f(of)h(its)f(purp)s(ose)f(remains)510
+1477 y(meaningful.)510 1614 y(\(F)-8 b(or)32 b(example,)g(a)f(function)
+g(in)g(a)g(library)f(to)i(compute)f(square)g(ro)s(ots)g(has)g(a)g(purp)
+s(ose)e(that)510 1724 y(is)35 b(en)m(tirely)i(w)m(ell-de\014ned)e
+(indep)s(enden)m(t)f(of)h(the)g(application.)57 b(Therefore,)36
+b(Subsection)f(2d)510 1833 y(requires)25 b(that)h(an)m(y)f
+(application-supplied)h(function)f(or)g(table)h(used)f(b)m(y)g(this)g
+(function)g(m)m(ust)510 1943 y(b)s(e)34 b(optional:)49
+b(if)35 b(the)f(application)i(do)s(es)e(not)g(supply)f(it,)j(the)e
+(square)g(ro)s(ot)h(function)f(m)m(ust)510 2052 y(still)d(compute)g
+(square)f(ro)s(ots.\))330 2217 y(These)k(requiremen)m(ts)g(apply)f(to)i
+(the)f(mo)s(di\014ed)f(w)m(ork)h(as)g(a)g(whole.)52 b(If)33
+b(iden)m(ti\014able)i(sections)g(of)330 2326 y(that)27
+b(w)m(ork)f(are)h(not)f(deriv)m(ed)g(from)g(the)g(Library)-8
+b(,)27 b(and)f(can)g(b)s(e)g(reasonably)g(considered)g(indep)s(en-)330
+2436 y(den)m(t)32 b(and)e(separate)j(w)m(orks)e(in)g(themselv)m(es,)i
+(then)e(this)h(License,)g(and)f(its)h(terms,)f(do)h(not)f(apply)330
+2545 y(to)26 b(those)g(sections)g(when)e(y)m(ou)i(distribute)e(them)i
+(as)f(separate)h(w)m(orks.)39 b(But)26 b(when)e(y)m(ou)h(distribute)330
+2655 y(the)32 b(same)g(sections)h(as)f(part)g(of)g(a)g(whole)g(whic)m
+(h)g(is)f(a)i(w)m(ork)f(based)f(on)h(the)g(Library)-8
+b(,)32 b(the)g(distri-)330 2765 y(bution)e(of)g(the)h(whole)f(m)m(ust)h
+(b)s(e)e(on)i(the)f(terms)g(of)h(this)f(License,)h(whose)f(p)s
+(ermissions)g(for)g(other)330 2874 y(licensees)f(extend)f(to)g(the)g
+(en)m(tire)h(whole,)g(and)e(th)m(us)g(to)i(eac)m(h)g(and)e(ev)m(ery)i
+(part)e(regardless)h(of)g(who)330 2984 y(wrote)j(it.)330
+3121 y(Th)m(us,)48 b(it)e(is)f(not)h(the)f(in)m(ten)m(t)h(of)g(this)f
+(section)h(to)g(claim)h(righ)m(ts)e(or)g(con)m(test)i(y)m(our)f(righ)m
+(ts)f(to)330 3230 y(w)m(ork)34 b(written)f(en)m(tirely)i(b)m(y)f(y)m
+(ou;)h(rather,)g(the)f(in)m(ten)m(t)h(is)e(to)i(exercise)f(the)g(righ)m
+(t)g(to)h(con)m(trol)g(the)330 3340 y(distribution)30
+b(of)g(deriv)-5 b(ativ)m(e)32 b(or)f(collectiv)m(e)i(w)m(orks)e(based)f
+(on)g(the)h(Library)-8 b(.)330 3477 y(In)44 b(addition,)49
+b(mere)c(aggregation)j(of)d(another)g(w)m(ork)g(not)g(based)f(on)h(the)
+g(Library)f(with)h(the)330 3587 y(Library)27 b(\(or)h(with)f(a)h(w)m
+(ork)g(based)f(on)h(the)g(Library\))f(on)g(a)h(v)m(olume)h(of)f(a)g
+(storage)h(or)f(distribution)330 3696 y(medium)h(do)s(es)i(not)f(bring)
+g(the)g(other)h(w)m(ork)f(under)f(the)i(scop)s(e)f(of)h(this)f
+(License.)199 3833 y(3.)61 b(Y)-8 b(ou)32 b(ma)m(y)g(opt)f(to)h(apply)f
+(the)g(terms)h(of)f(the)g(ordinary)g(GNU)h(General)g(Public)f(License)h
+(instead)330 3943 y(of)27 b(this)g(License)g(to)h(a)f(giv)m(en)h(cop)m
+(y)f(of)g(the)g(Library)-8 b(.)40 b(T)-8 b(o)27 b(do)g(this,)g(y)m(ou)g
+(m)m(ust)g(alter)h(all)g(the)f(notices)330 4052 y(that)44
+b(refer)g(to)g(this)g(License,)k(so)c(that)g(they)g(refer)g(to)g(the)g
+(ordinary)f(GNU)i(General)f(Public)330 4162 y(License,)32
+b(v)m(ersion)f(2,)g(instead)g(of)g(to)h(this)e(License.)43
+b(\(If)30 b(a)h(new)m(er)g(v)m(ersion)g(than)g(v)m(ersion)g(2)g(of)g
+(the)330 4271 y(ordinary)c(GNU)i(General)g(Public)e(License)i(has)e
+(app)s(eared,)h(then)g(y)m(ou)g(can)g(sp)s(ecify)g(that)g(v)m(ersion)
+330 4381 y(instead)j(if)f(y)m(ou)h(wish.\))40 b(Do)31
+b(not)g(mak)m(e)g(an)m(y)g(other)g(c)m(hange)g(in)f(these)h(notices.)
+330 4518 y(Once)25 b(this)g(c)m(hange)h(is)e(made)h(in)g(a)g(giv)m(en)h
+(cop)m(y)-8 b(,)27 b(it)f(is)f(irrev)m(ersible)g(for)g(that)g(cop)m(y)
+-8 b(,)27 b(so)f(the)f(ordinary)330 4628 y(GNU)e(General)g(Public)e
+(License)i(applies)f(to)h(all)g(subsequen)m(t)e(copies)i(and)e(deriv)-5
+b(ativ)m(e)24 b(w)m(orks)e(made)330 4737 y(from)30 b(that)h(cop)m(y)-8
+b(.)330 4874 y(This)39 b(option)g(is)h(useful)f(when)f(y)m(ou)i(wish)e
+(to)i(cop)m(y)h(part)e(of)g(the)h(co)s(de)f(of)h(the)g(Library)e(in)m
+(to)j(a)330 4984 y(program)30 b(that)h(is)g(not)f(a)h(library)-8
+b(.)199 5121 y(4.)61 b(Y)-8 b(ou)25 b(ma)m(y)g(cop)m(y)g(and)f
+(distribute)g(the)g(Library)g(\(or)g(a)h(p)s(ortion)f(or)g(deriv)-5
+b(ativ)m(e)26 b(of)f(it,)h(under)d(Section)330 5230 y(2\))h(in)f(ob)5
+b(ject)25 b(co)s(de)f(or)f(executable)i(form)e(under)f(the)i(terms)f
+(of)h(Sections)g(1)g(and)f(2)h(ab)s(o)m(v)m(e)g(pro)m(vided)330
+5340 y(that)j(y)m(ou)f(accompan)m(y)h(it)g(with)e(the)h(complete)i
+(corresp)s(onding)d(mac)m(hine-readable)i(source)f(co)s(de,)p
+eop end
+%%Page: 79 84
+TeXDict begin 79 83 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(79)330 299 y(whic)m(h)38
+b(m)m(ust)g(b)s(e)f(distributed)g(under)f(the)j(terms)e(of)i(Sections)f
+(1)h(and)e(2)h(ab)s(o)m(v)m(e)i(on)d(a)i(medium)330 408
+y(customarily)31 b(used)f(for)g(soft)m(w)m(are)i(in)m(terc)m(hange.)330
+555 y(If)23 b(distribution)g(of)h(ob)5 b(ject)24 b(co)s(de)g(is)g(made)
+g(b)m(y)f(o\013ering)i(access)f(to)h(cop)m(y)f(from)f(a)h(designated)h
+(place,)330 664 y(then)g(o\013ering)g(equiv)-5 b(alen)m(t)27
+b(access)f(to)g(cop)m(y)g(the)f(source)h(co)s(de)f(from)f(the)i(same)f
+(place)h(satis\014es)g(the)330 774 y(requiremen)m(t)i(to)g(distribute)f
+(the)h(source)g(co)s(de,)g(ev)m(en)h(though)e(third)g(parties)h(are)g
+(not)g(comp)s(elled)330 883 y(to)j(cop)m(y)g(the)g(source)f(along)i
+(with)e(the)g(ob)5 b(ject)32 b(co)s(de.)199 1029 y(5.)61
+b(A)35 b(program)f(that)i(con)m(tains)g(no)e(deriv)-5
+b(ativ)m(e)37 b(of)d(an)m(y)h(p)s(ortion)g(of)g(the)g(Library)-8
+b(,)35 b(but)f(is)h(designed)330 1139 y(to)h(w)m(ork)f(with)g(the)h
+(Library)e(b)m(y)h(b)s(eing)g(compiled)g(or)h(link)m(ed)f(with)g(it,)i
+(is)f(called)g(a)g(\\w)m(ork)f(that)330 1249 y(uses)g(the)g(Library".)
+54 b(Suc)m(h)34 b(a)h(w)m(ork,)i(in)e(isolation,)j(is)d(not)g(a)g
+(deriv)-5 b(ativ)m(e)37 b(w)m(ork)e(of)g(the)g(Library)-8
+b(,)330 1358 y(and)30 b(therefore)h(falls)f(outside)h(the)g(scop)s(e)f
+(of)h(this)f(License.)330 1504 y(Ho)m(w)m(ev)m(er,)e(linking)d(a)g(\\w)
+m(ork)g(that)g(uses)g(the)f(Library")h(with)f(the)h(Library)f(creates)i
+(an)e(executable)330 1614 y(that)30 b(is)f(a)h(deriv)-5
+b(ativ)m(e)30 b(of)g(the)f(Library)g(\(b)s(ecause)g(it)h(con)m(tains)g
+(p)s(ortions)f(of)g(the)h(Library\),)f(rather)330 1724
+y(than)22 b(a)g(\\w)m(ork)h(that)g(uses)e(the)i(library".)38
+b(The)21 b(executable)j(is)e(therefore)g(co)m(v)m(ered)i(b)m(y)e(this)g
+(License.)330 1833 y(Section)31 b(6)g(states)h(terms)e(for)g
+(distribution)g(of)g(suc)m(h)g(executables.)330 1979
+y(When)j(a)h(\\w)m(ork)g(that)h(uses)e(the)g(Library")h(uses)f
+(material)i(from)e(a)h(header)f(\014le)h(that)g(is)f(part)h(of)330
+2089 y(the)28 b(Library)-8 b(,)28 b(the)g(ob)5 b(ject)29
+b(co)s(de)f(for)f(the)h(w)m(ork)g(ma)m(y)g(b)s(e)f(a)h(deriv)-5
+b(ativ)m(e)30 b(w)m(ork)e(of)f(the)h(Library)f(ev)m(en)330
+2198 y(though)h(the)h(source)g(co)s(de)g(is)g(not.)40
+b(Whether)29 b(this)g(is)f(true)h(is)g(esp)s(ecially)h(signi\014can)m
+(t)f(if)g(the)g(w)m(ork)330 2308 y(can)k(b)s(e)f(link)m(ed)h(without)g
+(the)f(Library)-8 b(,)33 b(or)g(if)g(the)g(w)m(ork)f(is)h(itself)g(a)g
+(library)-8 b(.)48 b(The)32 b(threshold)g(for)330 2418
+y(this)e(to)h(b)s(e)f(true)g(is)h(not)f(precisely)h(de\014ned)e(b)m(y)i
+(la)m(w.)330 2564 y(If)k(suc)m(h)g(an)h(ob)5 b(ject)37
+b(\014le)e(uses)g(only)h(n)m(umerical)g(parameters,)i(data)e(structure)
+f(la)m(y)m(outs)j(and)d(ac-)330 2673 y(cessors,)e(and)e(small)h(macros)
+g(and)f(small)h(inline)f(functions)h(\(ten)g(lines)g(or)f(less)h(in)f
+(length\),)i(then)330 2783 y(the)d(use)g(of)h(the)f(ob)5
+b(ject)32 b(\014le)e(is)g(unrestricted,)h(regardless)f(of)h(whether)e
+(it)i(is)f(legally)j(a)d(deriv)-5 b(ativ)m(e)330 2892
+y(w)m(ork.)54 b(\(Executables)36 b(con)m(taining)h(this)e(ob)5
+b(ject)35 b(co)s(de)g(plus)f(p)s(ortions)h(of)g(the)g(Library)f(will)h
+(still)330 3002 y(fall)c(under)e(Section)i(6.\))330 3148
+y(Otherwise,)26 b(if)f(the)g(w)m(ork)f(is)h(a)g(deriv)-5
+b(ativ)m(e)27 b(of)e(the)g(Library)-8 b(,)25 b(y)m(ou)g(ma)m(y)h
+(distribute)e(the)h(ob)5 b(ject)26 b(co)s(de)330 3258
+y(for)31 b(the)g(w)m(ork)g(under)f(the)h(terms)g(of)g(Section)h(6.)43
+b(An)m(y)31 b(executables)i(con)m(taining)f(that)g(w)m(ork)f(also)330
+3367 y(fall)g(under)e(Section)i(6,)g(whether)f(or)g(not)h(they)f(are)h
+(link)m(ed)g(directly)g(with)f(the)g(Library)g(itself.)199
+3513 y(6.)61 b(As)40 b(an)f(exception)i(to)f(the)g(Sections)g(ab)s(o)m
+(v)m(e,)j(y)m(ou)d(ma)m(y)g(also)h(com)m(bine)f(or)g(link)f(a)h(\\w)m
+(ork)g(that)330 3623 y(uses)c(the)g(Library")g(with)f(the)i(Library)e
+(to)i(pro)s(duce)d(a)j(w)m(ork)f(con)m(taining)i(p)s(ortions)d(of)h
+(the)h(Li-)330 3733 y(brary)-8 b(,)37 b(and)f(distribute)g(that)g(w)m
+(ork)h(under)d(terms)i(of)g(y)m(our)h(c)m(hoice,)i(pro)m(vided)d(that)h
+(the)f(terms)330 3842 y(p)s(ermit)26 b(mo)s(di\014cation)i(of)f(the)g
+(w)m(ork)g(for)g(the)g(customer's)h(o)m(wn)f(use)f(and)h(rev)m(erse)g
+(engineering)h(for)330 3952 y(debugging)i(suc)m(h)g(mo)s
+(di\014cations.)330 4098 y(Y)-8 b(ou)35 b(m)m(ust)f(giv)m(e)i(prominen)
+m(t)e(notice)i(with)e(eac)m(h)h(cop)m(y)h(of)e(the)h(w)m(ork)f(that)h
+(the)g(Library)e(is)i(used)330 4208 y(in)g(it)i(and)e(that)h(the)g
+(Library)f(and)g(its)h(use)f(are)h(co)m(v)m(ered)h(b)m(y)f(this)g
+(License.)57 b(Y)-8 b(ou)36 b(m)m(ust)f(supply)330 4317
+y(a)j(cop)m(y)h(of)f(this)g(License.)64 b(If)37 b(the)h(w)m(ork)g
+(during)f(execution)i(displa)m(ys)f(cop)m(yrigh)m(t)h(notices,)j(y)m
+(ou)330 4427 y(m)m(ust)34 b(include)f(the)h(cop)m(yrigh)m(t)h(notice)g
+(for)e(the)h(Library)f(among)h(them,)h(as)f(w)m(ell)h(as)e(a)h
+(reference)330 4536 y(directing)d(the)g(user)e(to)i(the)g(cop)m(y)g(of)
+g(this)f(License.)41 b(Also,)31 b(y)m(ou)g(m)m(ust)f(do)h(one)f(of)h
+(these)g(things:)379 4682 y(a.)61 b(Accompan)m(y)40 b(the)f(w)m(ork)g
+(with)g(the)g(complete)h(corresp)s(onding)e(mac)m(hine-readable)j
+(source)510 4792 y(co)s(de)23 b(for)f(the)g(Library)f(including)h
+(whatev)m(er)h(c)m(hanges)h(w)m(ere)e(used)g(in)g(the)g(w)m(ork)h
+(\(whic)m(h)f(m)m(ust)510 4902 y(b)s(e)36 b(distributed)g(under)f
+(Sections)i(1)h(and)e(2)h(ab)s(o)m(v)m(e\);)42 b(and,)37
+b(if)g(the)g(w)m(ork)g(is)g(an)f(executable)510 5011
+y(link)m(ed)c(with)f(the)h(Library)-8 b(,)31 b(with)g(the)h(complete)h
+(mac)m(hine-readable)g(\\w)m(ork)f(that)g(uses)f(the)510
+5121 y(Library",)46 b(as)e(ob)5 b(ject)44 b(co)s(de)f(and/or)g(source)g
+(co)s(de,)k(so)c(that)h(the)g(user)e(can)h(mo)s(dify)g(the)510
+5230 y(Library)28 b(and)g(then)h(relink)f(to)i(pro)s(duce)e(a)h(mo)s
+(di\014ed)e(executable)k(con)m(taining)f(the)f(mo)s(di\014ed)510
+5340 y(Library)-8 b(.)58 b(\(It)36 b(is)g(understo)s(o)s(d)f(that)h
+(the)h(user)e(who)h(c)m(hanges)h(the)f(con)m(ten)m(ts)i(of)e
+(de\014nitions)p eop end
+%%Page: 80 85
+TeXDict begin 80 84 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(80)510 299 y(\014les)29
+b(in)g(the)g(Library)f(will)h(not)h(necessarily)f(b)s(e)g(able)g(to)h
+(recompile)g(the)f(application)i(to)e(use)510 408 y(the)i(mo)s
+(di\014ed)e(de\014nitions.\))374 536 y(b.)60 b(Use)33
+b(a)g(suitable)g(shared)f(library)h(mec)m(hanism)g(for)f(linking)h
+(with)f(the)h(Library)-8 b(.)48 b(A)32 b(suitable)510
+646 y(mec)m(hanism)h(is)h(one)f(that)h(\(1\))g(uses)f(at)h(run)d(time)j
+(a)g(cop)m(y)g(of)f(the)g(library)g(already)h(presen)m(t)510
+756 y(on)44 b(the)g(user's)g(computer)g(system,)k(rather)c(than)g(cop)m
+(ying)h(library)f(functions)g(in)m(to)h(the)510 865 y(executable,)32
+b(and)d(\(2\))i(will)f(op)s(erate)h(prop)s(erly)d(with)i(a)g(mo)s
+(di\014ed)e(v)m(ersion)j(of)f(the)g(library)-8 b(,)30
+b(if)510 975 y(the)j(user)f(installs)i(one,)g(as)f(long)h(as)f(the)g
+(mo)s(di\014ed)f(v)m(ersion)h(is)g(in)m(terface-compatible)j(with)510
+1084 y(the)31 b(v)m(ersion)f(that)h(the)g(w)m(ork)f(w)m(as)h(made)g
+(with.)384 1212 y(c.)61 b(Accompan)m(y)27 b(the)g(w)m(ork)f(with)g(a)h
+(written)f(o\013er,)i(v)-5 b(alid)26 b(for)g(at)h(least)h(three)e(y)m
+(ears,)i(to)f(giv)m(e)h(the)510 1322 y(same)37 b(user)f(the)h
+(materials)i(sp)s(eci\014ed)d(in)g(Subsection)h(6a,)i(ab)s(o)m(v)m(e,)h
+(for)d(a)g(c)m(harge)h(no)f(more)510 1431 y(than)30 b(the)h(cost)g(of)g
+(p)s(erforming)e(this)h(distribution.)374 1559 y(d.)60
+b(If)36 b(distribution)f(of)i(the)f(w)m(ork)h(is)f(made)g(b)m(y)g
+(o\013ering)h(access)h(to)f(cop)m(y)g(from)f(a)g(designated)510
+1669 y(place,)d(o\013er)e(equiv)-5 b(alen)m(t)33 b(access)f(to)g(cop)m
+(y)g(the)f(ab)s(o)m(v)m(e)i(sp)s(eci\014ed)d(materials)j(from)d(the)i
+(same)510 1778 y(place.)384 1906 y(e.)61 b(V)-8 b(erify)25
+b(that)h(the)f(user)f(has)g(already)i(receiv)m(ed)g(a)f(cop)m(y)g(of)g
+(these)g(materials)i(or)d(that)i(y)m(ou)f(ha)m(v)m(e)510
+2016 y(already)31 b(sen)m(t)g(this)f(user)g(a)h(cop)m(y)-8
+b(.)330 2162 y(F)g(or)29 b(an)g(executable,)i(the)d(required)g(form)g
+(of)h(the)g(\\w)m(ork)g(that)g(uses)f(the)h(Library")f(m)m(ust)g
+(include)330 2271 y(an)m(y)d(data)h(and)f(utilit)m(y)h(programs)f
+(needed)g(for)g(repro)s(ducing)e(the)j(executable)g(from)f(it.)40
+b(Ho)m(w)m(ev)m(er,)330 2381 y(as)32 b(a)h(sp)s(ecial)f(exception,)i
+(the)e(materials)h(to)g(b)s(e)e(distributed)g(need)h(not)g(include)g
+(an)m(ything)g(that)330 2491 y(is)j(normally)h(distributed)e(\(in)h
+(either)h(source)f(or)g(binary)f(form\))h(with)g(the)h(ma)5
+b(jor)35 b(comp)s(onen)m(ts)330 2600 y(\(compiler,)40
+b(k)m(ernel,)g(and)c(so)i(on\))f(of)g(the)h(op)s(erating)f(system)g(on)
+g(whic)m(h)g(the)h(executable)g(runs,)330 2710 y(unless)30
+b(that)h(comp)s(onen)m(t)f(itself)i(accompanies)f(the)g(executable.)330
+2838 y(It)j(ma)m(y)g(happ)s(en)d(that)j(this)g(requiremen)m(t)f(con)m
+(tradicts)i(the)f(license)h(restrictions)f(of)f(other)h(pro-)330
+2947 y(prietary)e(libraries)h(that)f(do)g(not)h(normally)f(accompan)m
+(y)i(the)e(op)s(erating)h(system.)46 b(Suc)m(h)32 b(a)g(con-)330
+3057 y(tradiction)e(means)f(y)m(ou)g(cannot)g(use)g(b)s(oth)f(them)h
+(and)f(the)h(Library)f(together)i(in)f(an)f(executable)330
+3166 y(that)j(y)m(ou)g(distribute.)199 3294 y(7.)61 b(Y)-8
+b(ou)36 b(ma)m(y)g(place)h(library)e(facilities)j(that)e(are)h(a)f(w)m
+(ork)f(based)h(on)f(the)h(Library)f(side-b)m(y-side)h(in)330
+3404 y(a)f(single)g(library)g(together)h(with)e(other)h(library)f
+(facilities)j(not)e(co)m(v)m(ered)h(b)m(y)e(this)h(License,)i(and)330
+3513 y(distribute)27 b(suc)m(h)h(a)g(com)m(bined)g(library)-8
+b(,)28 b(pro)m(vided)g(that)g(the)g(separate)h(distribution)e(of)h(the)
+g(w)m(ork)330 3623 y(based)41 b(on)f(the)h(Library)g(and)f(of)h(the)g
+(other)g(library)g(facilities)i(is)e(otherwise)g(p)s(ermitted,)j(and)
+330 3733 y(pro)m(vided)30 b(that)h(y)m(ou)g(do)f(these)h(t)m(w)m(o)g
+(things:)379 3861 y(a.)61 b(Accompan)m(y)45 b(the)f(com)m(bined)h
+(library)e(with)h(a)g(cop)m(y)h(of)f(the)h(same)f(w)m(ork)g(based)g(on)
+g(the)510 3970 y(Library)-8 b(,)40 b(uncom)m(bined)d(with)g(an)m(y)h
+(other)g(library)g(facilities.)65 b(This)37 b(m)m(ust)h(b)s(e)f
+(distributed)510 4080 y(under)29 b(the)h(terms)h(of)f(the)h(Sections)g
+(ab)s(o)m(v)m(e.)374 4208 y(b.)60 b(Giv)m(e)24 b(prominen)m(t)d(notice)
+j(with)e(the)g(com)m(bined)h(library)e(of)i(the)f(fact)h(that)g(part)f
+(of)g(it)h(is)f(a)h(w)m(ork)510 4317 y(based)k(on)g(the)g(Library)-8
+b(,)28 b(and)e(explaining)i(where)e(to)i(\014nd)e(the)h(accompan)m
+(ying)i(uncom)m(bined)510 4427 y(form)h(of)g(the)h(same)g(w)m(ork.)199
+4555 y(8.)61 b(Y)-8 b(ou)46 b(ma)m(y)g(not)f(cop)m(y)-8
+b(,)51 b(mo)s(dify)-8 b(,)49 b(sublicense,)g(link)c(with,)k(or)c
+(distribute)g(the)h(Library)e(except)330 4664 y(as)g(expressly)f(pro)m
+(vided)g(under)f(this)h(License.)80 b(An)m(y)44 b(attempt)g(otherwise)g
+(to)g(cop)m(y)-8 b(,)48 b(mo)s(dify)-8 b(,)330 4774 y(sublicense,)25
+b(link)f(with,)i(or)e(distribute)f(the)i(Library)e(is)h(v)m(oid,)i(and)
+e(will)g(automatically)j(terminate)330 4883 y(y)m(our)35
+b(righ)m(ts)h(under)d(this)j(License.)55 b(Ho)m(w)m(ev)m(er,)39
+b(parties)d(who)f(ha)m(v)m(e)h(receiv)m(ed)h(copies,)g(or)e(righ)m(ts,)
+330 4993 y(from)k(y)m(ou)i(under)d(this)i(License)g(will)h(not)f(ha)m
+(v)m(e)h(their)f(licenses)h(terminated)f(so)h(long)f(as)g(suc)m(h)330
+5103 y(parties)31 b(remain)f(in)g(full)g(compliance.)199
+5230 y(9.)61 b(Y)-8 b(ou)38 b(are)g(not)g(required)e(to)i(accept)h
+(this)f(License,)i(since)e(y)m(ou)f(ha)m(v)m(e)i(not)f(signed)f(it.)63
+b(Ho)m(w)m(ev)m(er,)330 5340 y(nothing)27 b(else)i(gran)m(ts)f(y)m(ou)f
+(p)s(ermission)g(to)h(mo)s(dify)f(or)g(distribute)g(the)h(Library)e(or)
+i(its)f(deriv)-5 b(ativ)m(e)p eop end
+%%Page: 81 86
+TeXDict begin 81 85 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(81)330 299 y(w)m(orks.)38
+b(These)23 b(actions)h(are)g(prohibited)e(b)m(y)h(la)m(w)h(if)f(y)m(ou)
+g(do)g(not)h(accept)g(this)f(License.)39 b(Therefore,)330
+408 y(b)m(y)k(mo)s(difying)g(or)g(distributing)f(the)i(Library)e(\(or)h
+(an)m(y)h(w)m(ork)f(based)g(on)g(the)g(Library\),)k(y)m(ou)330
+518 y(indicate)33 b(y)m(our)g(acceptance)h(of)f(this)f(License)h(to)h
+(do)e(so,)h(and)f(all)h(its)g(terms)f(and)g(conditions)h(for)330
+628 y(cop)m(ying,)f(distributing)d(or)i(mo)s(difying)e(the)i(Library)f
+(or)g(w)m(orks)g(based)g(on)h(it.)154 778 y(10.)61 b(Eac)m(h)22
+b(time)g(y)m(ou)g(redistribute)f(the)h(Library)f(\(or)g(an)m(y)h(w)m
+(ork)g(based)f(on)g(the)h(Library\),)h(the)f(recipien)m(t)330
+888 y(automatically)32 b(receiv)m(es)e(a)g(license)f(from)g(the)g
+(original)h(licensor)f(to)h(cop)m(y)-8 b(,)31 b(distribute,)d(link)h
+(with)330 998 y(or)f(mo)s(dify)f(the)h(Library)f(sub)5
+b(ject)27 b(to)i(these)f(terms)g(and)f(conditions.)40
+b(Y)-8 b(ou)29 b(ma)m(y)f(not)g(imp)s(ose)g(an)m(y)330
+1107 y(further)e(restrictions)j(on)e(the)h(recipien)m(ts')h(exercise)f
+(of)g(the)g(righ)m(ts)g(gran)m(ted)g(herein.)40 b(Y)-8
+b(ou)28 b(are)g(not)330 1217 y(resp)s(onsible)h(for)i(enforcing)f
+(compliance)i(b)m(y)e(third)g(parties)g(with)h(this)f(License.)154
+1367 y(11.)61 b(If,)27 b(as)g(a)g(consequence)h(of)f(a)g(court)g
+(judgmen)m(t)f(or)h(allegation)i(of)e(paten)m(t)h(infringemen)m(t)e(or)
+h(for)g(an)m(y)330 1477 y(other)h(reason)f(\(not)h(limited)g(to)g
+(paten)m(t)h(issues\),)f(conditions)g(are)f(imp)s(osed)g(on)g(y)m(ou)h
+(\(whether)f(b)m(y)330 1587 y(court)c(order,)h(agreemen)m(t)g(or)f
+(otherwise\))g(that)g(con)m(tradict)i(the)d(conditions)h(of)g(this)g
+(License,)i(they)330 1696 y(do)34 b(not)g(excuse)h(y)m(ou)f(from)g(the)
+g(conditions)h(of)f(this)g(License.)53 b(If)33 b(y)m(ou)i(cannot)g
+(distribute)e(so)i(as)330 1806 y(to)f(satisfy)g(sim)m(ultaneously)h(y)m
+(our)e(obligations)j(under)c(this)h(License)h(and)f(an)m(y)h(other)g(p)
+s(ertinen)m(t)330 1915 y(obligations,)48 b(then)43 b(as)g(a)g
+(consequence)h(y)m(ou)f(ma)m(y)h(not)f(distribute)g(the)g(Library)f(at)
+i(all.)79 b(F)-8 b(or)330 2025 y(example,)30 b(if)e(a)g(paten)m(t)h
+(license)h(w)m(ould)e(not)g(p)s(ermit)f(ro)m(y)m(alt)m(y-free)32
+b(redistribution)27 b(of)h(the)h(Library)330 2134 y(b)m(y)35
+b(all)h(those)f(who)f(receiv)m(e)j(copies)f(directly)f(or)g(indirectly)
+h(through)e(y)m(ou,)i(then)f(the)g(only)g(w)m(a)m(y)330
+2244 y(y)m(ou)27 b(could)f(satisfy)h(b)s(oth)e(it)i(and)f(this)g
+(License)h(w)m(ould)f(b)s(e)g(to)h(refrain)e(en)m(tirely)j(from)e
+(distribution)330 2354 y(of)31 b(the)f(Library)-8 b(.)330
+2504 y(If)43 b(an)m(y)g(p)s(ortion)g(of)g(this)h(section)g(is)f(held)g
+(in)m(v)-5 b(alid)44 b(or)f(unenforceable)g(under)f(an)m(y)i
+(particular)330 2614 y(circumstance,)i(the)c(balance)g(of)g(the)g
+(section)h(is)f(in)m(tended)f(to)i(apply)-8 b(,)45 b(and)c(the)h
+(section)h(as)f(a)330 2724 y(whole)31 b(is)f(in)m(tended)g(to)h(apply)f
+(in)g(other)h(circumstances.)330 2874 y(It)41 b(is)f(not)h(the)f(purp)s
+(ose)f(of)i(this)f(section)i(to)f(induce)f(y)m(ou)h(to)g(infringe)f(an)
+m(y)h(paten)m(ts)g(or)g(other)330 2984 y(prop)s(ert)m(y)e(righ)m(t)i
+(claims)f(or)g(to)h(con)m(test)h(v)-5 b(alidit)m(y)41
+b(of)f(an)m(y)g(suc)m(h)g(claims;)45 b(this)40 b(section)h(has)f(the)
+330 3093 y(sole)33 b(purp)s(ose)e(of)h(protecting)h(the)g(in)m(tegrit)m
+(y)h(of)e(the)g(free)h(soft)m(w)m(are)g(distribution)f(system)g(whic)m
+(h)330 3203 y(is)j(implemen)m(ted)h(b)m(y)f(public)f(license)i
+(practices.)56 b(Man)m(y)36 b(p)s(eople)f(ha)m(v)m(e)h(made)f(generous)
+h(con)m(tri-)330 3313 y(butions)f(to)h(the)f(wide)h(range)f(of)h(soft)m
+(w)m(are)h(distributed)d(through)h(that)h(system)f(in)g(reliance)i(on)
+330 3422 y(consisten)m(t)g(application)g(of)e(that)h(system;)i(it)e(is)
+g(up)e(to)i(the)g(author/donor)f(to)h(decide)g(if)g(he)f(or)330
+3532 y(she)i(is)h(willing)g(to)g(distribute)f(soft)m(w)m(are)i(through)
+e(an)m(y)g(other)h(system)g(and)f(a)g(licensee)i(cannot)330
+3641 y(imp)s(ose)30 b(that)h(c)m(hoice.)330 3792 y(This)26
+b(section)j(is)e(in)m(tended)g(to)h(mak)m(e)g(thoroughly)f(clear)h
+(what)f(is)g(b)s(eliev)m(ed)h(to)g(b)s(e)f(a)g(consequence)330
+3902 y(of)k(the)f(rest)h(of)f(this)g(License.)154 4052
+y(12.)61 b(If)38 b(the)h(distribution)f(and/or)h(use)f(of)h(the)g
+(Library)f(is)h(restricted)g(in)f(certain)i(coun)m(tries)f(either)330
+4162 y(b)m(y)c(paten)m(ts)h(or)g(b)m(y)f(cop)m(yrigh)m(ted)i(in)m
+(terfaces,)h(the)d(original)i(cop)m(yrigh)m(t)g(holder)e(who)g(places)h
+(the)330 4271 y(Library)k(under)g(this)h(License)g(ma)m(y)h(add)e(an)h
+(explicit)i(geographical)g(distribution)d(limitation)330
+4381 y(excluding)29 b(those)g(coun)m(tries,)h(so)f(that)g(distribution)
+f(is)g(p)s(ermitted)h(only)f(in)g(or)h(among)g(coun)m(tries)330
+4491 y(not)k(th)m(us)f(excluded.)48 b(In)32 b(suc)m(h)g(case,)j(this)d
+(License)i(incorp)s(orates)f(the)g(limitation)h(as)f(if)g(written)330
+4600 y(in)d(the)h(b)s(o)s(dy)d(of)j(this)f(License.)154
+4751 y(13.)61 b(The)32 b(F)-8 b(ree)33 b(Soft)m(w)m(are)g(F)-8
+b(oundation)33 b(ma)m(y)f(publish)f(revised)h(and/or)g(new)f(v)m
+(ersions)i(of)f(the)g(Lesser)330 4861 y(General)i(Public)f(License)g
+(from)g(time)g(to)h(time.)49 b(Suc)m(h)33 b(new)f(v)m(ersions)h(will)h
+(b)s(e)e(similar)h(in)g(spirit)330 4970 y(to)e(the)g(presen)m(t)f(v)m
+(ersion,)h(but)f(ma)m(y)h(di\013er)f(in)g(detail)i(to)f(address)e(new)h
+(problems)g(or)g(concerns.)330 5121 y(Eac)m(h)c(v)m(ersion)g(is)g(giv)m
+(en)h(a)f(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)38
+b(If)25 b(the)h(Library)f(sp)s(eci\014es)g(a)h(v)m(ersion)330
+5230 y(n)m(um)m(b)s(er)19 b(of)i(this)f(License)h(whic)m(h)f(applies)h
+(to)g(it)g(and)f(\\an)m(y)h(later)g(v)m(ersion",)j(y)m(ou)d(ha)m(v)m(e)
+g(the)g(option)g(of)330 5340 y(follo)m(wing)h(the)e(terms)h(and)f
+(conditions)g(either)h(of)g(that)g(v)m(ersion)g(or)f(of)h(an)m(y)f
+(later)i(v)m(ersion)f(published)p eop end
+%%Page: 82 87
+TeXDict begin 82 86 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(82)330 299 y(b)m(y)41
+b(the)h(F)-8 b(ree)42 b(Soft)m(w)m(are)h(F)-8 b(oundation.)74
+b(If)41 b(the)h(Library)e(do)s(es)i(not)f(sp)s(ecify)g(a)h(license)g(v)
+m(ersion)330 408 y(n)m(um)m(b)s(er,)29 b(y)m(ou)h(ma)m(y)h(c)m(ho)s
+(ose)g(an)m(y)f(v)m(ersion)h(ev)m(er)g(published)d(b)m(y)i(the)g(F)-8
+b(ree)31 b(Soft)m(w)m(are)g(F)-8 b(oundation.)154 543
+y(14.)61 b(If)25 b(y)m(ou)h(wish)e(to)j(incorp)s(orate)f(parts)f(of)g
+(the)h(Library)f(in)m(to)h(other)g(free)f(programs)h(whose)f(distribu-)
+330 653 y(tion)30 b(conditions)g(are)g(incompatible)h(with)e(these,)h
+(write)g(to)g(the)g(author)f(to)i(ask)e(for)h(p)s(ermission.)330
+762 y(F)-8 b(or)33 b(soft)m(w)m(are)h(whic)m(h)e(is)h(cop)m(yrigh)m
+(ted)h(b)m(y)e(the)h(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8
+b(oundation,)34 b(write)f(to)g(the)g(F)-8 b(ree)330 872
+y(Soft)m(w)m(are)42 b(F)-8 b(oundation;)47 b(w)m(e)41
+b(sometimes)h(mak)m(e)g(exceptions)f(for)g(this.)72 b(Our)39
+b(decision)i(will)h(b)s(e)330 981 y(guided)30 b(b)m(y)h(the)g(t)m(w)m
+(o)h(goals)g(of)f(preserving)f(the)h(free)g(status)g(of)g(all)h(deriv)
+-5 b(ativ)m(es)32 b(of)f(our)f(free)h(soft-)330 1091
+y(w)m(are)g(and)f(of)g(promoting)h(the)f(sharing)g(and)g(reuse)g(of)h
+(soft)m(w)m(are)h(generally)-8 b(.)330 1323 y Fw(NO)45
+b(W)-15 b(ARRANTY)154 1483 y Fx(15.)61 b(BECA)m(USE)47
+b(THE)f(LIBRAR)-8 b(Y)48 b(IS)e(LICENSED)g(FREE)g(OF)h(CHAR)m(GE,)h
+(THERE)e(IS)g(NO)330 1592 y(W)-10 b(ARRANTY)33 b(F)m(OR)h(THE)e(LIBRAR)
+-8 b(Y,)34 b(TO)e(THE)g(EXTENT)h(PERMITTED)f(BY)h(APPLI-)330
+1702 y(CABLE)27 b(LA)-10 b(W.)27 b(EX)m(CEPT)g(WHEN)h(OTHER)-10
+b(WISE)25 b(ST)-8 b(A)g(TED)28 b(IN)e(WRITING)i(THE)e(COPY-)330
+1812 y(RIGHT)f(HOLDERS)f(AND/OR)i(OTHER)e(P)-8 b(AR)g(TIES)25
+b(PR)m(O)m(VIDE)g(THE)g(LIBRAR)-8 b(Y)25 b(\\AS)g(IS")330
+1921 y(WITHOUT)40 b(W)-10 b(ARRANTY)42 b(OF)f(ANY)g(KIND,)g(EITHER)f
+(EXPRESSED)g(OR)h(IMPLIED,)330 2031 y(INCLUDING,)33 b(BUT)g(NOT)g
+(LIMITED)f(TO,)g(THE)h(IMPLIED)g(W)-10 b(ARRANTIES)32
+b(OF)h(MER-)330 2140 y(CHANT)-8 b(ABILITY)28 b(AND)g(FITNESS)e(F)m(OR)i
+(A)g(P)-8 b(AR)g(TICULAR)27 b(PURPOSE.)g(THE)g(ENTIRE)330
+2250 y(RISK)f(AS)g(TO)g(THE)h(QUALITY)f(AND)h(PERF)m(ORMANCE)g(OF)g
+(THE)f(LIBRAR)-8 b(Y)28 b(IS)e(WITH)330 2359 y(YOU.)j(SHOULD)f(THE)h
+(LIBRAR)-8 b(Y)29 b(PR)m(O)m(VE)g(DEFECTIVE,)f(YOU)h(ASSUME)f(THE)g
+(COST)330 2469 y(OF)i(ALL)g(NECESSAR)-8 b(Y)30 b(SER)-10
+b(VICING,)30 b(REP)-8 b(AIR)30 b(OR)g(CORRECTION.)154
+2604 y(16.)61 b(IN)26 b(NO)g(EVENT)g(UNLESS)f(REQUIRED)h(BY)h
+(APPLICABLE)f(LA)-10 b(W)26 b(OR)g(A)m(GREED)h(TO)f(IN)330
+2713 y(WRITING)37 b(WILL)f(ANY)i(COPYRIGHT)e(HOLDER,)h(OR)f(ANY)h
+(OTHER)f(P)-8 b(AR)g(TY)38 b(WHO)330 2823 y(MA)-8 b(Y)62
+b(MODIFY)g(AND/OR)g(REDISTRIBUTE)e(THE)h(LIBRAR)-8 b(Y)62
+b(AS)f(PERMITTED)330 2932 y(ABO)m(VE,)40 b(BE)f(LIABLE)f(TO)g(YOU)h(F)m
+(OR)g(D)m(AMA)m(GES,)h(INCLUDING)f(ANY)h(GENERAL,)330
+3042 y(SPECIAL,)e(INCIDENT)-8 b(AL)40 b(OR)e(CONSEQUENTIAL)g(D)m(AMA)m
+(GES)j(ARISING)e(OUT)g(OF)330 3152 y(THE)51 b(USE)g(OR)g(INABILITY)h
+(TO)f(USE)g(THE)g(LIBRAR)-8 b(Y)52 b(\(INCLUDING)h(BUT)e(NOT)330
+3261 y(LIMITED)29 b(TO)g(LOSS)f(OF)h(D)m(A)-8 b(T)g(A)31
+b(OR)e(D)m(A)-8 b(T)g(A)31 b(BEING)f(RENDERED)g(INA)m(CCURA)-8
+b(TE)29 b(OR)330 3371 y(LOSSES)38 b(SUST)-8 b(AINED)40
+b(BY)h(YOU)f(OR)g(THIRD)g(P)-8 b(AR)g(TIES)40 b(OR)g(A)h(F)-10
+b(AILURE)40 b(OF)g(THE)330 3480 y(LIBRAR)-8 b(Y)48 b(TO)f(OPERA)-8
+b(TE)47 b(WITH)h(ANY)g(OTHER)f(SOFTW)-10 b(ARE\),)47
+b(EVEN)h(IF)f(SUCH)330 3590 y(HOLDER)33 b(OR)h(OTHER)f(P)-8
+b(AR)g(TY)34 b(HAS)f(BEEN)h(AD)m(VISED)g(OF)g(THE)f(POSSIBILITY)f(OF)
+330 3699 y(SUCH)e(D)m(AMA)m(GES.)150 3932 y Fw(END)45
+b(OF)g(TERMS)f(AND)h(CONDITIONS)p eop end
+%%Page: 83 88
+TeXDict begin 83 87 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(83)150 299 y Fq(Ho)m(w)40
+b(to)h(Apply)g(These)h(T)-10 b(erms)42 b(to)f(Y)-10 b(our)41
+b(New)f(Libraries)150 446 y Fx(If)24 b(y)m(ou)i(dev)m(elop)g(a)f(new)f
+(library)-8 b(,)27 b(and)d(y)m(ou)h(w)m(an)m(t)h(it)f(to)h(b)s(e)e(of)i
+(the)f(greatest)h(p)s(ossible)f(use)g(to)g(the)g(public,)150
+555 y(w)m(e)k(recommend)f(making)g(it)h(free)f(soft)m(w)m(are)i(that)f
+(ev)m(ery)m(one)h(can)e(redistribute)g(and)g(c)m(hange.)41
+b(Y)-8 b(ou)29 b(can)150 665 y(do)i(so)g(b)m(y)g(p)s(ermitting)g
+(redistribution)g(under)e(these)j(terms)f(\(or,)g(alternativ)m(ely)-8
+b(,)35 b(under)30 b(the)h(terms)g(of)150 775 y(the)g(ordinary)e
+(General)j(Public)e(License\).)275 903 y(T)-8 b(o)34
+b(apply)g(these)g(terms,)h(attac)m(h)h(the)e(follo)m(wing)i(notices)f
+(to)g(the)f(library)-8 b(.)51 b(It)35 b(is)f(safest)g(to)h(attac)m(h)
+150 1013 y(them)f(to)i(the)e(start)h(of)g(eac)m(h)h(source)e(\014le)h
+(to)g(most)g(e\013ectiv)m(ely)i(con)m(v)m(ey)f(the)f(exclusion)g(of)g
+(w)m(arran)m(t)m(y;)150 1122 y(and)26 b(eac)m(h)i(\014le)f(should)e(ha)
+m(v)m(e)j(at)f(least)h(the)f(\\cop)m(yrigh)m(t")i(line)e(and)f(a)h(p)s
+(oin)m(ter)g(to)g(where)f(the)h(full)g(notice)150 1232
+y(is)j(found.)390 1338 y Fc(one)40 b(line)g(to)g(give)g(the)g
+(library's)h(name)f(and)g(an)g(idea)g(of)g(what)g(it)f(does.)390
+1425 y Fd(Copyright)i(\(C\))f Fc(year)88 b(name)40 b(of)g(author)390
+1600 y Fd(This)g(library)h(is)f(free)g(software;)h(you)f(can)g
+(redistribute)i(it)e(and/or)g(modify)h(it)390 1687 y(under)f(the)g
+(terms)h(of)e(the)h(GNU)g(Lesser)h(General)g(Public)f(License)h(as)f
+(published)h(by)390 1774 y(the)f(Free)g(Software)h(Foundation;)h
+(either)e(version)h(2.1)f(of)g(the)g(License,)h(or)e(\(at)390
+1861 y(your)h(option\))h(any)f(later)g(version.)390 2036
+y(This)g(library)h(is)f(distributed)h(in)f(the)g(hope)g(that)g(it)g
+(will)g(be)g(useful,)h(but)390 2123 y(WITHOUT)g(ANY)f(WARRANTY;)h
+(without)g(even)f(the)g(implied)h(warranty)g(of)390 2210
+y(MERCHANTABILITY)i(or)c(FITNESS)i(FOR)f(A)g(PARTICULAR)h(PURPOSE.)80
+b(See)40 b(the)g(GNU)390 2297 y(Lesser)h(General)f(Public)h(License)g
+(for)f(more)g(details.)390 2472 y(You)g(should)g(have)h(received)g(a)e
+(copy)h(of)g(the)g(GNU)g(Lesser)g(General)h(Public)390
+2559 y(License)g(along)f(with)g(this)g(library;)i(if)d(not,)h(write)h
+(to)e(the)h(Free)g(Software)390 2646 y(Foundation,)i(Inc.,)e(51)g
+(Franklin)h(Street,)g(Fifth)f(Floor,)h(Boston,)f(MA)g(02110-1301,)390
+2733 y(USA.)275 2862 y Fx(Also)31 b(add)e(information)i(on)f(ho)m(w)h
+(to)g(con)m(tact)i(y)m(ou)d(b)m(y)g(electronic)j(and)d(pap)s(er)f
+(mail.)275 2990 y(Y)-8 b(ou)28 b(should)f(also)i(get)g(y)m(our)f(emplo)
+m(y)m(er)h(\(if)f(y)m(ou)g(w)m(ork)g(as)h(a)f(programmer\))g(or)g(y)m
+(our)f(sc)m(ho)s(ol,)j(if)e(an)m(y)-8 b(,)150 3100 y(to)38
+b(sign)g(a)g(\\cop)m(yrigh)m(t)i(disclaimer")f(for)e(the)h(library)-8
+b(,)40 b(if)e(necessary)-8 b(.)63 b(Here)38 b(is)g(a)g(sample;)k(alter)
+d(the)150 3210 y(names:)390 3316 y Fd(Yoyodyne,)i(Inc.,)g(hereby)f
+(disclaims)i(all)d(copyright)j(interest)f(in)e(the)h(library)390
+3403 y(`Frob')h(\(a)e(library)i(for)f(tweaking)h(knobs\))g(written)f
+(by)g(James)h(Random)f(Hacker.)390 3577 y Fc(signature)h(of)f(Ty)g
+(Coon)9 b Fd(,)40 b(1)f(April)h(1990)390 3665 y(Ty)g(Coon,)g(President)
+h(of)f(Vice)275 3793 y Fx(That's)30 b(all)h(there)g(is)f(to)h(it!)150
+4014 y Fw(C.3)68 b(GNU)45 b(General)h(Public)e(License)1477
+4154 y Fx(V)-8 b(ersion)31 b(3,)g(29)g(June)e(2007)390
+4283 y(Cop)m(yrigh)m(t)842 4280 y(c)817 4283 y Fv(\015)h
+Fx(2007)i(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32
+b(Inc.)e Fr(http://fsf.org/)390 4502 y Fx(Ev)m(ery)m(one)h(is)g(p)s
+(ermitted)f(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)g
+(of)g(this)390 4612 y(license)g(do)s(cumen)m(t,)g(but)e(c)m(hanging)j
+(it)f(is)f(not)h(allo)m(w)m(ed.)150 4833 y Fw(Pream)l(ble)150
+4992 y Fx(The)g(GNU)g(General)h(Public)f(License)h(is)f(a)h(free,)f
+(cop)m(yleft)i(license)f(for)f(soft)m(w)m(are)i(and)d(other)i(kinds)e
+(of)150 5102 y(w)m(orks.)275 5230 y(The)d(licenses)i(for)e(most)i(soft)
+m(w)m(are)g(and)e(other)i(practical)g(w)m(orks)f(are)g(designed)g(to)h
+(tak)m(e)g(a)m(w)m(a)m(y)h(y)m(our)150 5340 y(freedom)k(to)h(share)e
+(and)h(c)m(hange)h(the)f(w)m(orks.)51 b(By)35 b(con)m(trast,)h(the)e
+(GNU)h(General)g(Public)e(License)i(is)p eop end
+%%Page: 84 89
+TeXDict begin 84 88 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(84)150 299 y(in)m(tended)25
+b(to)h(guaran)m(tee)h(y)m(our)e(freedom)g(to)h(share)f(and)f(c)m(hange)
+j(all)f(v)m(ersions)f(of)h(a)f(program|to)h(mak)m(e)150
+408 y(sure)35 b(it)h(remains)f(free)h(soft)m(w)m(are)h(for)f(all)g(its)
+g(users.)56 b(W)-8 b(e,)38 b(the)e(F)-8 b(ree)37 b(Soft)m(w)m(are)g(F)
+-8 b(oundation,)37 b(use)f(the)150 518 y(GNU)j(General)g(Public)f
+(License)g(for)g(most)h(of)f(our)f(soft)m(w)m(are;)44
+b(it)39 b(applies)f(also)h(to)g(an)m(y)f(other)h(w)m(ork)150
+628 y(released)31 b(this)f(w)m(a)m(y)i(b)m(y)e(its)h(authors.)40
+b(Y)-8 b(ou)31 b(can)g(apply)f(it)h(to)g(y)m(our)f(programs,)g(to)s(o.)
+275 774 y(When)37 b(w)m(e)g(sp)s(eak)g(of)g(free)h(soft)m(w)m(are,)i(w)
+m(e)e(are)g(referring)e(to)i(freedom,)h(not)f(price.)61
+b(Our)36 b(General)150 884 y(Public)e(Licenses)g(are)h(designed)f(to)h
+(mak)m(e)g(sure)f(that)g(y)m(ou)h(ha)m(v)m(e)g(the)g(freedom)f(to)g
+(distribute)g(copies)150 993 y(of)e(free)f(soft)m(w)m(are)i(\(and)e(c)m
+(harge)i(for)e(them)h(if)f(y)m(ou)h(wish\),)f(that)h(y)m(ou)g(receiv)m
+(e)h(source)f(co)s(de)g(or)f(can)h(get)150 1103 y(it)e(if)f(y)m(ou)g(w)
+m(an)m(t)i(it,)f(that)g(y)m(ou)f(can)h(c)m(hange)g(the)f(soft)m(w)m
+(are)i(or)e(use)g(pieces)h(of)f(it)h(in)f(new)g(free)g(programs,)150
+1213 y(and)h(that)h(y)m(ou)f(kno)m(w)h(y)m(ou)g(can)f(do)g(these)h
+(things.)275 1359 y(T)-8 b(o)24 b(protect)h(y)m(our)f(righ)m(ts,)i(w)m
+(e)f(need)f(to)h(prev)m(en)m(t)g(others)f(from)g(den)m(ying)g(y)m(ou)g
+(these)h(righ)m(ts)f(or)g(asking)150 1469 y(y)m(ou)37
+b(to)g(surrender)d(the)j(righ)m(ts.)60 b(Therefore,)38
+b(y)m(ou)f(ha)m(v)m(e)g(certain)h(resp)s(onsibilities)e(if)h(y)m(ou)f
+(distribute)150 1578 y(copies)30 b(of)f(the)g(soft)m(w)m(are,)i(or)e
+(if)f(y)m(ou)i(mo)s(dify)e(it:)40 b(resp)s(onsibilities)29
+b(to)h(resp)s(ect)f(the)g(freedom)g(of)g(others.)275
+1725 y(F)-8 b(or)30 b(example,)g(if)g(y)m(ou)f(distribute)g(copies)i
+(of)e(suc)m(h)g(a)h(program,)g(whether)e(gratis)j(or)e(for)g(a)h(fee,)h
+(y)m(ou)150 1834 y(m)m(ust)i(pass)f(on)h(to)h(the)f(recipien)m(ts)h
+(the)f(same)h(freedoms)e(that)i(y)m(ou)f(receiv)m(ed.)50
+b(Y)-8 b(ou)34 b(m)m(ust)f(mak)m(e)h(sure)150 1944 y(that)29
+b(they)-8 b(,)29 b(to)s(o,)h(receiv)m(e)g(or)f(can)f(get)i(the)e
+(source)h(co)s(de.)40 b(And)27 b(y)m(ou)i(m)m(ust)f(sho)m(w)g(them)h
+(these)f(terms)h(so)150 2053 y(they)i(kno)m(w)f(their)g(righ)m(ts.)275
+2200 y(Dev)m(elop)s(ers)i(that)f(use)g(the)g(GNU)h(GPL)f(protect)g(y)m
+(our)g(righ)m(ts)h(with)e(t)m(w)m(o)j(steps:)41 b(\(1\))32
+b(assert)g(cop)m(y-)150 2310 y(righ)m(t)38 b(on)e(the)h(soft)m(w)m
+(are,)k(and)36 b(\(2\))i(o\013er)g(y)m(ou)f(this)g(License)g(giving)h
+(y)m(ou)f(legal)i(p)s(ermission)d(to)i(cop)m(y)-8 b(,)150
+2419 y(distribute)30 b(and/or)g(mo)s(dify)g(it.)275 2566
+y(F)-8 b(or)35 b(the)g(dev)m(elop)s(ers')h(and)e(authors')h
+(protection,)j(the)d(GPL)g(clearly)h(explains)f(that)h(there)f(is)g(no)
+150 2675 y(w)m(arran)m(t)m(y)g(for)f(this)g(free)g(soft)m(w)m(are.)54
+b(F)-8 b(or)35 b(b)s(oth)e(users')h(and)g(authors')g(sak)m(e,)i(the)e
+(GPL)h(requires)e(that)150 2785 y(mo)s(di\014ed)42 b(v)m(ersions)i(b)s
+(e)f(mark)m(ed)g(as)h(c)m(hanged,)j(so)d(that)g(their)f(problems)g
+(will)g(not)h(b)s(e)f(attributed)150 2894 y(erroneously)30
+b(to)h(authors)f(of)h(previous)f(v)m(ersions.)275 3041
+y(Some)e(devices)h(are)f(designed)g(to)h(den)m(y)f(users)g(access)h(to)
+g(install)g(or)f(run)f(mo)s(di\014ed)g(v)m(ersions)h(of)h(the)150
+3151 y(soft)m(w)m(are)34 b(inside)e(them,)g(although)h(the)f(man)m
+(ufacturer)g(can)h(do)f(so.)46 b(This)32 b(is)g(fundamen)m(tally)g
+(incom-)150 3260 y(patible)j(with)e(the)h(aim)h(of)f(protecting)h
+(users')e(freedom)h(to)h(c)m(hange)g(the)f(soft)m(w)m(are.)53
+b(The)33 b(systematic)150 3370 y(pattern)j(of)g(suc)m(h)g(abuse)f(o)s
+(ccurs)h(in)f(the)i(area)f(of)g(pro)s(ducts)f(for)h(individuals)f(to)h
+(use,)i(whic)m(h)d(is)h(pre-)150 3479 y(cisely)d(where)e(it)h(is)f
+(most)h(unacceptable.)46 b(Therefore,)32 b(w)m(e)g(ha)m(v)m(e)h
+(designed)e(this)g(v)m(ersion)h(of)g(the)g(GPL)150 3589
+y(to)38 b(prohibit)e(the)i(practice)g(for)f(those)h(pro)s(ducts.)60
+b(If)37 b(suc)m(h)f(problems)h(arise)h(substan)m(tially)g(in)f(other)
+150 3699 y(domains,)28 b(w)m(e)f(stand)g(ready)g(to)h(extend)f(this)g
+(pro)m(vision)g(to)h(those)f(domains)g(in)g(future)f(v)m(ersions)i(of)f
+(the)150 3808 y(GPL,)k(as)f(needed)g(to)h(protect)h(the)e(freedom)h(of)
+f(users.)275 3955 y(Finally)-8 b(,)34 b(ev)m(ery)f(program)f(is)g
+(threatened)h(constan)m(tly)h(b)m(y)e(soft)m(w)m(are)i(paten)m(ts.)47
+b(States)33 b(should)f(not)150 4064 y(allo)m(w)25 b(paten)m(ts)e(to)h
+(restrict)g(dev)m(elopmen)m(t)g(and)f(use)g(of)g(soft)m(w)m(are)h(on)f
+(general-purp)s(ose)g(computers,)i(but)150 4174 y(in)h(those)h(that)g
+(do,)g(w)m(e)g(wish)f(to)h(a)m(v)m(oid)h(the)e(sp)s(ecial)h(danger)f
+(that)h(paten)m(ts)h(applied)e(to)h(a)g(free)f(program)150
+4283 y(could)h(mak)m(e)i(it)f(e\013ectiv)m(ely)i(proprietary)-8
+b(.)40 b(T)-8 b(o)28 b(prev)m(en)m(t)g(this,)g(the)g(GPL)f(assures)g
+(that)h(paten)m(ts)g(cannot)150 4393 y(b)s(e)i(used)f(to)i(render)f
+(the)g(program)g(non-free.)275 4539 y(The)f(precise)i(terms)f(and)g
+(conditions)h(for)f(cop)m(ying,)i(distribution)d(and)h(mo)s
+(di\014cation)h(follo)m(w.)150 4790 y Fw(TERMS)44 b(AND)h(CONDITIONS)
+199 4949 y Fx(0.)61 b(De\014nitions.)330 5090 y(\\This)30
+b(License")h(refers)f(to)i(v)m(ersion)e(3)h(of)g(the)f(GNU)h(General)g
+(Public)g(License.)330 5230 y(\\Cop)m(yrigh)m(t")e(also)g(means)e(cop)m
+(yrigh)m(t-lik)m(e)k(la)m(ws)d(that)g(apply)f(to)h(other)g(kinds)f(of)g
+(w)m(orks,)h(suc)m(h)g(as)330 5340 y(semiconductor)j(masks.)p
+eop end
+%%Page: 85 90
+TeXDict begin 85 89 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(85)330 299 y(\\The)40
+b(Program")h(refers)f(to)g(an)m(y)h(cop)m(yrigh)m(table)h(w)m(ork)e
+(licensed)h(under)e(this)h(License.)70 b(Eac)m(h)330
+408 y(licensee)43 b(is)f(addressed)f(as)h(\\y)m(ou".)76
+b(\\Licensees")44 b(and)d(\\recipien)m(ts")i(ma)m(y)g(b)s(e)e
+(individuals)g(or)330 518 y(organizations.)330 650 y(T)-8
+b(o)32 b(\\mo)s(dify")g(a)g(w)m(ork)g(means)g(to)h(cop)m(y)f(from)g(or)
+f(adapt)h(all)h(or)f(part)g(of)g(the)g(w)m(ork)f(in)h(a)g(fashion)330
+759 y(requiring)d(cop)m(yrigh)m(t)h(p)s(ermission,)e(other)i(than)f
+(the)g(making)g(of)g(an)g(exact)i(cop)m(y)-8 b(.)41 b(The)29
+b(resulting)330 869 y(w)m(ork)f(is)f(called)i(a)f(\\mo)s(di\014ed)f(v)m
+(ersion")i(of)f(the)g(earlier)g(w)m(ork)g(or)g(a)g(w)m(ork)f(\\based)h
+(on")g(the)g(earlier)330 978 y(w)m(ork.)330 1110 y(A)k(\\co)m(v)m(ered)
+i(w)m(ork")f(means)f(either)g(the)g(unmo)s(di\014ed)e(Program)i(or)g(a)
+h(w)m(ork)f(based)g(on)g(the)g(Pro-)330 1219 y(gram.)330
+1351 y(T)-8 b(o)31 b(\\propagate")i(a)e(w)m(ork)g(means)g(to)h(do)e(an)
+m(ything)i(with)e(it)h(that,)h(without)f(p)s(ermission,)f(w)m(ould)330
+1461 y(mak)m(e)c(y)m(ou)e(directly)i(or)e(secondarily)h(liable)h(for)e
+(infringemen)m(t)h(under)e(applicable)i(cop)m(yrigh)m(t)h(la)m(w,)330
+1570 y(except)34 b(executing)g(it)g(on)e(a)i(computer)f(or)f(mo)s
+(difying)h(a)g(priv)-5 b(ate)33 b(cop)m(y)-8 b(.)50 b(Propagation)34
+b(includes)330 1680 y(cop)m(ying,)39 b(distribution)c(\(with)h(or)h
+(without)f(mo)s(di\014cation\),)i(making)f(a)m(v)-5 b(ailable)38
+b(to)f(the)f(public,)330 1789 y(and)30 b(in)g(some)h(coun)m(tries)g
+(other)f(activities)j(as)e(w)m(ell.)330 1921 y(T)-8 b(o)28
+b(\\con)m(v)m(ey")j(a)d(w)m(ork)g(means)g(an)m(y)g(kind)f(of)h
+(propagation)h(that)g(enables)f(other)g(parties)g(to)h(mak)m(e)330
+2030 y(or)k(receiv)m(e)j(copies.)50 b(Mere)34 b(in)m(teraction)i(with)d
+(a)g(user)g(through)g(a)g(computer)h(net)m(w)m(ork,)h(with)e(no)330
+2140 y(transfer)d(of)g(a)h(cop)m(y)-8 b(,)32 b(is)e(not)h(con)m(v)m
+(eying.)330 2271 y(An)25 b(in)m(teractiv)m(e)k(user)c(in)m(terface)j
+(displa)m(ys)e(\\Appropriate)g(Legal)h(Notices")h(to)f(the)f(exten)m(t)
+h(that)f(it)330 2381 y(includes)k(a)g(con)m(v)m(enien)m(t)j(and)c
+(prominen)m(tly)h(visible)h(feature)g(that)f(\(1\))i(displa)m(ys)e(an)g
+(appropriate)330 2491 y(cop)m(yrigh)m(t)j(notice,)h(and)d(\(2\))i
+(tells)f(the)g(user)f(that)i(there)e(is)h(no)g(w)m(arran)m(t)m(y)g(for)
+g(the)g(w)m(ork)g(\(except)330 2600 y(to)e(the)g(exten)m(t)h(that)f(w)m
+(arran)m(ties)g(are)g(pro)m(vided\),)g(that)g(licensees)g(ma)m(y)g(con)
+m(v)m(ey)h(the)f(w)m(ork)f(under)330 2710 y(this)37 b(License,)i(and)e
+(ho)m(w)g(to)g(view)h(a)f(cop)m(y)h(of)f(this)g(License.)61
+b(If)36 b(the)i(in)m(terface)g(presen)m(ts)f(a)g(list)330
+2819 y(of)32 b(user)e(commands)h(or)h(options,)g(suc)m(h)f(as)g(a)h
+(men)m(u,)f(a)h(prominen)m(t)f(item)h(in)f(the)h(list)g(meets)g(this)
+330 2929 y(criterion.)199 3061 y(1.)61 b(Source)30 b(Co)s(de.)330
+3192 y(The)g(\\source)i(co)s(de")f(for)g(a)g(w)m(ork)g(means)g(the)g
+(preferred)f(form)g(of)h(the)g(w)m(ork)g(for)g(making)g(mo)s(di-)330
+3302 y(\014cations)g(to)g(it.)41 b(\\Ob)5 b(ject)31 b(co)s(de")g(means)
+g(an)m(y)f(non-source)h(form)f(of)g(a)h(w)m(ork.)330
+3433 y(A)36 b(\\Standard)f(In)m(terface")i(means)f(an)f(in)m(terface)i
+(that)g(either)f(is)g(an)f(o\016cial)i(standard)e(de\014ned)330
+3543 y(b)m(y)e(a)g(recognized)i(standards)d(b)s(o)s(dy)-8
+b(,)33 b(or,)h(in)f(the)g(case)h(of)f(in)m(terfaces)i(sp)s(eci\014ed)d
+(for)h(a)h(particular)330 3652 y(programming)44 b(language,)49
+b(one)c(that)f(is)g(widely)h(used)e(among)i(dev)m(elop)s(ers)f(w)m
+(orking)h(in)e(that)330 3762 y(language.)330 3893 y(The)24
+b(\\System)g(Libraries")g(of)g(an)g(executable)i(w)m(ork)e(include)f
+(an)m(ything,)j(other)f(than)e(the)i(w)m(ork)f(as)330
+4003 y(a)k(whole,)g(that)g(\(a\))g(is)f(included)g(in)g(the)g(normal)g
+(form)g(of)h(pac)m(k)-5 b(aging)29 b(a)e(Ma)5 b(jor)28
+b(Comp)s(onen)m(t,)g(but)330 4113 y(whic)m(h)33 b(is)g(not)h(part)f(of)
+h(that)g(Ma)5 b(jor)34 b(Comp)s(onen)m(t,)g(and)e(\(b\))i(serv)m(es)g
+(only)f(to)h(enable)g(use)f(of)h(the)330 4222 y(w)m(ork)c(with)g(that)g
+(Ma)5 b(jor)31 b(Comp)s(onen)m(t,)e(or)h(to)h(implemen)m(t)g(a)f
+(Standard)f(In)m(terface)i(for)e(whic)m(h)h(an)330 4332
+y(implemen)m(tation)g(is)e(a)m(v)-5 b(ailable)30 b(to)f(the)f(public)g
+(in)f(source)i(co)s(de)f(form.)39 b(A)29 b(\\Ma)5 b(jor)29
+b(Comp)s(onen)m(t",)330 4441 y(in)38 b(this)g(con)m(text,)k(means)c(a)g
+(ma)5 b(jor)38 b(essen)m(tial)i(comp)s(onen)m(t)e(\(k)m(ernel,)j(windo)
+m(w)d(system,)i(and)e(so)330 4551 y(on\))c(of)g(the)g(sp)s(eci\014c)f
+(op)s(erating)h(system)g(\(if)g(an)m(y\))h(on)e(whic)m(h)h(the)g
+(executable)h(w)m(ork)f(runs,)f(or)h(a)330 4661 y(compiler)d(used)f(to)
+h(pro)s(duce)e(the)h(w)m(ork,)h(or)f(an)h(ob)5 b(ject)31
+b(co)s(de)g(in)m(terpreter)f(used)g(to)h(run)e(it.)330
+4792 y(The)f(\\Corresp)s(onding)g(Source")h(for)f(a)h(w)m(ork)g(in)g
+(ob)5 b(ject)29 b(co)s(de)g(form)g(means)f(all)i(the)f(source)g(co)s
+(de)330 4902 y(needed)35 b(to)h(generate,)i(install,)f(and)e(\(for)g
+(an)h(executable)g(w)m(ork\))g(run)e(the)h(ob)5 b(ject)36
+b(co)s(de)g(and)e(to)330 5011 y(mo)s(dify)39 b(the)g(w)m(ork,)j
+(including)d(scripts)g(to)i(con)m(trol)f(those)g(activities.)71
+b(Ho)m(w)m(ev)m(er,)44 b(it)c(do)s(es)f(not)330 5121
+y(include)i(the)h(w)m(ork's)g(System)g(Libraries,)i(or)e(general-purp)s
+(ose)f(to)s(ols)i(or)f(generally)h(a)m(v)-5 b(ailable)330
+5230 y(free)31 b(programs)g(whic)m(h)g(are)h(used)e(unmo)s(di\014ed)f
+(in)i(p)s(erforming)f(those)h(activities)j(but)d(whic)m(h)g(are)330
+5340 y(not)g(part)f(of)h(the)g(w)m(ork.)42 b(F)-8 b(or)32
+b(example,)f(Corresp)s(onding)e(Source)i(includes)f(in)m(terface)i
+(de\014nition)p eop end
+%%Page: 86 91
+TeXDict begin 86 90 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(86)330 299 y(\014les)32
+b(asso)s(ciated)i(with)d(source)i(\014les)f(for)g(the)g(w)m(ork,)h(and)
+f(the)g(source)g(co)s(de)h(for)e(shared)h(libraries)330
+408 y(and)g(dynamically)g(link)m(ed)h(subprograms)e(that)h(the)h(w)m
+(ork)f(is)g(sp)s(eci\014cally)h(designed)f(to)h(require,)330
+518 y(suc)m(h)k(as)g(b)m(y)g(in)m(timate)i(data)e(comm)m(unication)i
+(or)e(con)m(trol)h(\015o)m(w)f(b)s(et)m(w)m(een)h(those)f(subprograms)
+330 628 y(and)30 b(other)g(parts)g(of)h(the)g(w)m(ork.)330
+756 y(The)h(Corresp)s(onding)f(Source)i(need)f(not)h(include)f(an)m
+(ything)i(that)f(users)f(can)h(regenerate)h(auto-)330
+865 y(matically)e(from)e(other)h(parts)f(of)h(the)f(Corresp)s(onding)f
+(Source.)330 993 y(The)h(Corresp)s(onding)e(Source)j(for)f(a)h(w)m(ork)
+f(in)g(source)h(co)s(de)f(form)g(is)h(that)f(same)h(w)m(ork.)199
+1121 y(2.)61 b(Basic)32 b(P)m(ermissions.)330 1249 y(All)44
+b(righ)m(ts)f(gran)m(ted)g(under)f(this)h(License)g(are)g(gran)m(ted)h
+(for)f(the)g(term)g(of)g(cop)m(yrigh)m(t)h(on)f(the)330
+1358 y(Program,)29 b(and)e(are)i(irrev)m(o)s(cable)g(pro)m(vided)f(the)
+g(stated)h(conditions)g(are)f(met.)40 b(This)28 b(License)g(ex-)330
+1468 y(plicitly)h(a\016rms)e(y)m(our)h(unlimited)g(p)s(ermission)e(to)j
+(run)d(the)i(unmo)s(di\014ed)e(Program.)40 b(The)27 b(output)330
+1577 y(from)37 b(running)e(a)j(co)m(v)m(ered)h(w)m(ork)e(is)g(co)m(v)m
+(ered)i(b)m(y)e(this)h(License)f(only)h(if)f(the)g(output,)i(giv)m(en)g
+(its)330 1687 y(con)m(ten)m(t,)33 b(constitutes)f(a)g(co)m(v)m(ered)g
+(w)m(ork.)42 b(This)31 b(License)g(ac)m(kno)m(wledges)i(y)m(our)e(righ)
+m(ts)g(of)g(fair)g(use)330 1797 y(or)f(other)h(equiv)-5
+b(alen)m(t,)32 b(as)f(pro)m(vided)f(b)m(y)g(cop)m(yrigh)m(t)i(la)m(w.)
+330 1924 y(Y)-8 b(ou)41 b(ma)m(y)h(mak)m(e,)i(run)c(and)g(propagate)i
+(co)m(v)m(ered)g(w)m(orks)f(that)g(y)m(ou)h(do)e(not)h(con)m(v)m(ey)-8
+b(,)46 b(without)330 2034 y(conditions)30 b(so)f(long)h(as)g(y)m(our)f
+(license)h(otherwise)g(remains)f(in)g(force.)41 b(Y)-8
+b(ou)30 b(ma)m(y)f(con)m(v)m(ey)i(co)m(v)m(ered)330 2144
+y(w)m(orks)40 b(to)g(others)g(for)g(the)g(sole)g(purp)s(ose)e(of)i(ha)m
+(ving)h(them)e(mak)m(e)i(mo)s(di\014cations)f(exclusiv)m(ely)330
+2253 y(for)45 b(y)m(ou,)50 b(or)45 b(pro)m(vide)h(y)m(ou)f(with)g
+(facilities)j(for)d(running)f(those)h(w)m(orks,)50 b(pro)m(vided)45
+b(that)h(y)m(ou)330 2363 y(comply)34 b(with)f(the)h(terms)f(of)h(this)f
+(License)i(in)e(con)m(v)m(eying)i(all)g(material)g(for)e(whic)m(h)g(y)m
+(ou)h(do)g(not)330 2472 y(con)m(trol)i(cop)m(yrigh)m(t.)55
+b(Those)35 b(th)m(us)f(making)h(or)g(running)e(the)i(co)m(v)m(ered)h(w)
+m(orks)f(for)f(y)m(ou)h(m)m(ust)g(do)330 2582 y(so)29
+b(exclusiv)m(ely)h(on)e(y)m(our)g(b)s(ehalf,)h(under)d(y)m(our)j
+(direction)g(and)f(con)m(trol,)i(on)e(terms)h(that)g(prohibit)330
+2692 y(them)35 b(from)g(making)g(an)m(y)h(copies)g(of)f(y)m(our)h(cop)m
+(yrigh)m(ted)g(material)h(outside)e(their)h(relationship)330
+2801 y(with)30 b(y)m(ou.)330 2929 y(Con)m(v)m(eying)46
+b(under)d(an)m(y)i(other)g(circumstances)g(is)g(p)s(ermitted)g(solely)g
+(under)f(the)g(conditions)330 3039 y(stated)31 b(b)s(elo)m(w.)41
+b(Sublicensing)30 b(is)g(not)h(allo)m(w)m(ed;)h(section)g(10)f(mak)m
+(es)g(it)g(unnecessary)-8 b(.)199 3166 y(3.)61 b(Protecting)32
+b(Users')e(Legal)i(Righ)m(ts)f(F)-8 b(rom)31 b(An)m(ti-Circum)m(v)m(en)
+m(tion)i(La)m(w.)330 3294 y(No)44 b(co)m(v)m(ered)i(w)m(ork)d(shall)h
+(b)s(e)g(deemed)f(part)h(of)g(an)f(e\013ectiv)m(e)k(tec)m(hnological)g
+(measure)c(under)330 3404 y(an)m(y)30 b(applicable)h(la)m(w)f
+(ful\014lling)g(obligations)h(under)e(article)i(11)g(of)f(the)g(WIPO)f
+(cop)m(yrigh)m(t)i(treat)m(y)330 3513 y(adopted)e(on)f(20)i(Decem)m(b)s
+(er)f(1996,)i(or)e(similar)g(la)m(ws)g(prohibiting)f(or)h(restricting)g
+(circum)m(v)m(en)m(tion)330 3623 y(of)i(suc)m(h)f(measures.)330
+3751 y(When)25 b(y)m(ou)h(con)m(v)m(ey)g(a)g(co)m(v)m(ered)h(w)m(ork,)f
+(y)m(ou)g(w)m(aiv)m(e)h(an)m(y)e(legal)i(p)s(o)m(w)m(er)f(to)g(forbid)e
+(circum)m(v)m(en)m(tion)j(of)330 3861 y(tec)m(hnological)j(measures)d
+(to)g(the)g(exten)m(t)h(suc)m(h)e(circum)m(v)m(en)m(tion)j(is)d
+(e\013ected)i(b)m(y)f(exercising)g(righ)m(ts)330 3970
+y(under)35 b(this)h(License)h(with)e(resp)s(ect)i(to)g(the)f(co)m(v)m
+(ered)i(w)m(ork,)g(and)d(y)m(ou)i(disclaim)g(an)m(y)f(in)m(ten)m(tion)
+330 4080 y(to)41 b(limit)g(op)s(eration)g(or)f(mo)s(di\014cation)h(of)g
+(the)f(w)m(ork)h(as)f(a)h(means)f(of)h(enforcing,)i(against)f(the)330
+4189 y(w)m(ork's)28 b(users,)f(y)m(our)h(or)f(third)g(parties')h(legal)
+h(righ)m(ts)f(to)g(forbid)f(circum)m(v)m(en)m(tion)i(of)e(tec)m
+(hnological)330 4299 y(measures.)199 4427 y(4.)61 b(Con)m(v)m(eying)31
+b(V)-8 b(erbatim)32 b(Copies.)330 4555 y(Y)-8 b(ou)28
+b(ma)m(y)g(con)m(v)m(ey)h(v)m(erbatim)f(copies)g(of)g(the)f(Program's)h
+(source)g(co)s(de)f(as)h(y)m(ou)f(receiv)m(e)j(it,)f(in)e(an)m(y)330
+4664 y(medium,)33 b(pro)m(vided)g(that)h(y)m(ou)f(conspicuously)g(and)g
+(appropriately)g(publish)f(on)h(eac)m(h)h(cop)m(y)g(an)330
+4774 y(appropriate)e(cop)m(yrigh)m(t)i(notice;)g(k)m(eep)f(in)m(tact)h
+(all)f(notices)g(stating)h(that)e(this)g(License)h(and)f(an)m(y)330
+4883 y(non-p)s(ermissiv)m(e)d(terms)g(added)f(in)h(accord)h(with)f
+(section)h(7)f(apply)g(to)h(the)f(co)s(de;)h(k)m(eep)g(in)m(tact)h(all)
+330 4993 y(notices)37 b(of)f(the)g(absence)g(of)g(an)m(y)g(w)m(arran)m
+(t)m(y;)j(and)c(giv)m(e)i(all)g(recipien)m(ts)f(a)h(cop)m(y)f(of)g
+(this)f(License)330 5103 y(along)c(with)f(the)h(Program.)330
+5230 y(Y)-8 b(ou)27 b(ma)m(y)g(c)m(harge)h(an)m(y)f(price)g(or)f(no)h
+(price)f(for)h(eac)m(h)g(cop)m(y)h(that)f(y)m(ou)g(con)m(v)m(ey)-8
+b(,)29 b(and)d(y)m(ou)h(ma)m(y)h(o\013er)330 5340 y(supp)s(ort)h(or)h
+(w)m(arran)m(t)m(y)h(protection)h(for)e(a)h(fee.)p eop
+end
+%%Page: 87 92
+TeXDict begin 87 91 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(87)199 299 y(5.)61
+b(Con)m(v)m(eying)31 b(Mo)s(di\014ed)f(Source)g(V)-8
+b(ersions.)330 427 y(Y)g(ou)27 b(ma)m(y)g(con)m(v)m(ey)h(a)f(w)m(ork)g
+(based)f(on)h(the)g(Program,)g(or)g(the)g(mo)s(di\014cations)g(to)g
+(pro)s(duce)e(it)i(from)330 536 y(the)36 b(Program,)h(in)e(the)g(form)g
+(of)g(source)h(co)s(de)g(under)d(the)j(terms)f(of)h(section)g(4,)h(pro)
+m(vided)e(that)330 646 y(y)m(ou)c(also)g(meet)g(all)h(of)e(these)h
+(conditions:)379 774 y(a.)61 b(The)28 b(w)m(ork)h(m)m(ust)f(carry)h
+(prominen)m(t)f(notices)i(stating)g(that)f(y)m(ou)g(mo)s(di\014ed)e
+(it,)j(and)e(giving)i(a)510 883 y(relev)-5 b(an)m(t)32
+b(date.)374 1011 y(b.)60 b(The)34 b(w)m(ork)h(m)m(ust)f(carry)h
+(prominen)m(t)f(notices)i(stating)g(that)f(it)g(is)g(released)g(under)e
+(this)i(Li-)510 1121 y(cense)i(and)f(an)m(y)h(conditions)h(added)e
+(under)f(section)j(7.)60 b(This)36 b(requiremen)m(t)h(mo)s(di\014es)f
+(the)510 1230 y(requiremen)m(t)31 b(in)f(section)h(4)g(to)g(\\k)m(eep)h
+(in)m(tact)g(all)f(notices".)384 1358 y(c.)61 b(Y)-8
+b(ou)36 b(m)m(ust)g(license)g(the)g(en)m(tire)h(w)m(ork,)g(as)f(a)g
+(whole,)h(under)d(this)i(License)g(to)h(an)m(y)m(one)f(who)510
+1468 y(comes)31 b(in)m(to)g(p)s(ossession)e(of)h(a)h(cop)m(y)-8
+b(.)41 b(This)29 b(License)i(will)f(therefore)h(apply)-8
+b(,)30 b(along)h(with)f(an)m(y)510 1577 y(applicable)k(section)f(7)g
+(additional)h(terms,)f(to)h(the)e(whole)h(of)g(the)g(w)m(ork,)g(and)f
+(all)i(its)f(parts,)510 1687 y(regardless)h(of)g(ho)m(w)g(they)g(are)g
+(pac)m(k)-5 b(aged.)52 b(This)33 b(License)h(giv)m(es)h(no)f(p)s
+(ermission)e(to)j(license)510 1797 y(the)c(w)m(ork)h(in)f(an)m(y)g
+(other)h(w)m(a)m(y)-8 b(,)33 b(but)d(it)i(do)s(es)f(not)g(in)m(v)-5
+b(alidate)33 b(suc)m(h)e(p)s(ermission)f(if)h(y)m(ou)h(ha)m(v)m(e)510
+1906 y(separately)g(receiv)m(ed)f(it.)374 2034 y(d.)60
+b(If)36 b(the)h(w)m(ork)g(has)g(in)m(teractiv)m(e)j(user)c(in)m
+(terfaces,)k(eac)m(h)e(m)m(ust)f(displa)m(y)g(Appropriate)g(Legal)510
+2144 y(Notices;)49 b(ho)m(w)m(ev)m(er,)c(if)c(the)h(Program)f(has)g(in)
+m(teractiv)m(e)j(in)m(terfaces)e(that)g(do)f(not)h(displa)m(y)510
+2253 y(Appropriate)30 b(Legal)i(Notices,)g(y)m(our)f(w)m(ork)f(need)g
+(not)h(mak)m(e)g(them)g(do)f(so.)330 2399 y(A)38 b(compilation)h(of)f
+(a)g(co)m(v)m(ered)h(w)m(ork)f(with)f(other)h(separate)h(and)e(indep)s
+(enden)m(t)f(w)m(orks,)k(whic)m(h)330 2509 y(are)c(not)g(b)m(y)g(their)
+g(nature)f(extensions)h(of)g(the)g(co)m(v)m(ered)i(w)m(ork,)f(and)e
+(whic)m(h)h(are)g(not)g(com)m(bined)330 2619 y(with)27
+b(it)i(suc)m(h)e(as)h(to)h(form)e(a)h(larger)h(program,)f(in)f(or)h(on)
+g(a)g(v)m(olume)g(of)g(a)h(storage)g(or)f(distribution)330
+2728 y(medium,)43 b(is)f(called)g(an)g(\\aggregate")j(if)c(the)h
+(compilation)h(and)e(its)g(resulting)h(cop)m(yrigh)m(t)h(are)330
+2838 y(not)31 b(used)f(to)h(limit)h(the)e(access)i(or)f(legal)h(righ)m
+(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m(ond)g(what)h(the)330
+2947 y(individual)j(w)m(orks)h(p)s(ermit.)54 b(Inclusion)34
+b(of)h(a)h(co)m(v)m(ered)g(w)m(ork)f(in)g(an)g(aggregate)j(do)s(es)c
+(not)h(cause)330 3057 y(this)30 b(License)h(to)g(apply)f(to)h(the)g
+(other)g(parts)f(of)g(the)h(aggregate.)199 3185 y(6.)61
+b(Con)m(v)m(eying)31 b(Non-Source)g(F)-8 b(orms.)330
+3313 y(Y)g(ou)29 b(ma)m(y)h(con)m(v)m(ey)g(a)f(co)m(v)m(ered)i(w)m(ork)
+e(in)f(ob)5 b(ject)30 b(co)s(de)f(form)f(under)g(the)h(terms)f(of)h
+(sections)h(4)g(and)330 3422 y(5,)42 b(pro)m(vided)d(that)g(y)m(ou)h
+(also)g(con)m(v)m(ey)g(the)g(mac)m(hine-readable)g(Corresp)s(onding)e
+(Source)g(under)330 3532 y(the)31 b(terms)f(of)g(this)h(License,)g(in)f
+(one)h(of)f(these)h(w)m(a)m(ys:)379 3660 y(a.)61 b(Con)m(v)m(ey)32
+b(the)f(ob)5 b(ject)31 b(co)s(de)g(in,)g(or)g(em)m(b)s(o)s(died)f(in,)h
+(a)g(ph)m(ysical)h(pro)s(duct)d(\(including)i(a)g(ph)m(ys-)510
+3769 y(ical)37 b(distribution)d(medium\),)j(accompanied)f(b)m(y)f(the)h
+(Corresp)s(onding)d(Source)j(\014xed)e(on)i(a)510 3879
+y(durable)30 b(ph)m(ysical)h(medium)e(customarily)i(used)f(for)g(soft)m
+(w)m(are)i(in)m(terc)m(hange.)374 4007 y(b.)60 b(Con)m(v)m(ey)30
+b(the)f(ob)5 b(ject)30 b(co)s(de)f(in,)g(or)g(em)m(b)s(o)s(died)f(in,)h
+(a)g(ph)m(ysical)g(pro)s(duct)f(\(including)h(a)g(ph)m(ysi-)510
+4116 y(cal)k(distribution)e(medium\),)h(accompanied)h(b)m(y)e(a)i
+(written)f(o\013er,)g(v)-5 b(alid)33 b(for)e(at)i(least)g(three)510
+4226 y(y)m(ears)i(and)f(v)-5 b(alid)35 b(for)f(as)g(long)h(as)g(y)m(ou)
+g(o\013er)f(spare)h(parts)f(or)g(customer)h(supp)s(ort)d(for)i(that)510
+4335 y(pro)s(duct)c(mo)s(del,)i(to)g(giv)m(e)g(an)m(y)m(one)h(who)d(p)s
+(ossesses)h(the)h(ob)5 b(ject)32 b(co)s(de)f(either)h(\(1\))g(a)g(cop)m
+(y)g(of)510 4445 y(the)24 b(Corresp)s(onding)e(Source)i(for)g(all)h
+(the)f(soft)m(w)m(are)h(in)f(the)g(pro)s(duct)f(that)i(is)f(co)m(v)m
+(ered)h(b)m(y)f(this)510 4555 y(License,)30 b(on)g(a)f(durable)g(ph)m
+(ysical)h(medium)e(customarily)i(used)f(for)g(soft)m(w)m(are)i(in)m
+(terc)m(hange,)510 4664 y(for)k(a)g(price)h(no)f(more)g(than)g(y)m(our)
+g(reasonable)h(cost)g(of)f(ph)m(ysically)h(p)s(erforming)e(this)h(con-)
+510 4774 y(v)m(eying)f(of)f(source,)g(or)g(\(2\))h(access)g(to)g(cop)m
+(y)f(the)g(Corresp)s(onding)e(Source)i(from)f(a)h(net)m(w)m(ork)510
+4883 y(serv)m(er)e(at)g(no)f(c)m(harge.)384 5011 y(c.)61
+b(Con)m(v)m(ey)40 b(individual)e(copies)h(of)g(the)g(ob)5
+b(ject)40 b(co)s(de)f(with)g(a)g(cop)m(y)g(of)g(the)g(written)g
+(o\013er)g(to)510 5121 y(pro)m(vide)e(the)g(Corresp)s(onding)e(Source.)
+59 b(This)36 b(alternativ)m(e)k(is)c(allo)m(w)m(ed)j(only)e(o)s
+(ccasionally)510 5230 y(and)29 b(noncommercially)-8 b(,)31
+b(and)e(only)g(if)h(y)m(ou)f(receiv)m(ed)i(the)e(ob)5
+b(ject)31 b(co)s(de)e(with)g(suc)m(h)g(an)g(o\013er,)510
+5340 y(in)h(accord)h(with)f(subsection)h(6b.)p eop end
+%%Page: 88 93
+TeXDict begin 88 92 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(88)374 299 y(d.)60
+b(Con)m(v)m(ey)37 b(the)f(ob)5 b(ject)37 b(co)s(de)f(b)m(y)g
+(o\013ering)g(access)i(from)d(a)i(designated)f(place)h(\(gratis)g(or)f
+(for)510 408 y(a)j(c)m(harge\),)k(and)c(o\013er)g(equiv)-5
+b(alen)m(t)41 b(access)f(to)g(the)f(Corresp)s(onding)e(Source)i(in)f
+(the)i(same)510 518 y(w)m(a)m(y)30 b(through)f(the)g(same)h(place)h(at)
+f(no)f(further)f(c)m(harge.)41 b(Y)-8 b(ou)30 b(need)f(not)h(require)f
+(recipien)m(ts)510 628 y(to)42 b(cop)m(y)h(the)f(Corresp)s(onding)e
+(Source)h(along)i(with)f(the)g(ob)5 b(ject)42 b(co)s(de.)75
+b(If)42 b(the)f(place)i(to)510 737 y(cop)m(y)c(the)g(ob)5
+b(ject)39 b(co)s(de)g(is)g(a)g(net)m(w)m(ork)g(serv)m(er,)i(the)e
+(Corresp)s(onding)e(Source)h(ma)m(y)h(b)s(e)f(on)510
+847 y(a)45 b(di\013eren)m(t)g(serv)m(er)f(\(op)s(erated)h(b)m(y)f(y)m
+(ou)h(or)g(a)f(third)g(part)m(y\))h(that)g(supp)s(orts)d(equiv)-5
+b(alen)m(t)510 956 y(cop)m(ying)35 b(facilities,)i(pro)m(vided)c(y)m
+(ou)h(main)m(tain)h(clear)g(directions)f(next)g(to)h(the)f(ob)5
+b(ject)35 b(co)s(de)510 1066 y(sa)m(ying)h(where)f(to)h(\014nd)d(the)i
+(Corresp)s(onding)f(Source.)55 b(Regardless)35 b(of)h(what)f(serv)m(er)
+g(hosts)510 1176 y(the)e(Corresp)s(onding)e(Source,)j(y)m(ou)f(remain)f
+(obligated)j(to)e(ensure)f(that)i(it)f(is)g(a)m(v)-5
+b(ailable)35 b(for)510 1285 y(as)c(long)g(as)f(needed)g(to)h(satisfy)g
+(these)g(requiremen)m(ts.)384 1442 y(e.)61 b(Con)m(v)m(ey)24
+b(the)g(ob)5 b(ject)24 b(co)s(de)f(using)g(p)s(eer-to-p)s(eer)h
+(transmission,)g(pro)m(vided)f(y)m(ou)h(inform)f(other)510
+1551 y(p)s(eers)d(where)g(the)h(ob)5 b(ject)22 b(co)s(de)f(and)f
+(Corresp)s(onding)f(Source)i(of)g(the)g(w)m(ork)g(are)g(b)s(eing)g
+(o\013ered)510 1661 y(to)31 b(the)g(general)g(public)f(at)h(no)f(c)m
+(harge)i(under)d(subsection)h(6d.)330 1864 y(A)35 b(separable)f(p)s
+(ortion)g(of)h(the)g(ob)5 b(ject)35 b(co)s(de,)h(whose)e(source)h(co)s
+(de)g(is)f(excluded)g(from)g(the)h(Cor-)330 1974 y(resp)s(onding)c
+(Source)h(as)h(a)g(System)f(Library)-8 b(,)33 b(need)f(not)h(b)s(e)e
+(included)h(in)g(con)m(v)m(eying)i(the)f(ob)5 b(ject)330
+2084 y(co)s(de)31 b(w)m(ork.)330 2240 y(A)h(\\User)g(Pro)s(duct")f(is)h
+(either)g(\(1\))g(a)g(\\consumer)g(pro)s(duct",)f(whic)m(h)h(means)f
+(an)m(y)h(tangible)h(p)s(er-)330 2350 y(sonal)g(prop)s(ert)m(y)g(whic)m
+(h)f(is)h(normally)h(used)e(for)h(p)s(ersonal,)g(family)-8
+b(,)35 b(or)e(household)f(purp)s(oses,)g(or)330 2459
+y(\(2\))26 b(an)m(ything)f(designed)f(or)h(sold)g(for)f(incorp)s
+(oration)h(in)m(to)h(a)f(dw)m(elling.)39 b(In)24 b(determining)h
+(whether)330 2569 y(a)30 b(pro)s(duct)e(is)h(a)h(consumer)f(pro)s
+(duct,)f(doubtful)h(cases)h(shall)g(b)s(e)e(resolv)m(ed)j(in)e(fa)m(v)m
+(or)h(of)g(co)m(v)m(erage.)330 2679 y(F)-8 b(or)42 b(a)g(particular)g
+(pro)s(duct)f(receiv)m(ed)i(b)m(y)e(a)h(particular)g(user,)i
+(\\normally)f(used")e(refers)g(to)i(a)330 2788 y(t)m(ypical)e(or)e
+(common)h(use)e(of)i(that)g(class)g(of)f(pro)s(duct,)h(regardless)g(of)
+f(the)h(status)f(of)h(the)f(par-)330 2898 y(ticular)d(user)e(or)h(of)h
+(the)f(w)m(a)m(y)h(in)f(whic)m(h)f(the)i(particular)f(user)g(actually)h
+(uses,)g(or)f(exp)s(ects)h(or)f(is)330 3007 y(exp)s(ected)d(to)g(use,)g
+(the)g(pro)s(duct.)43 b(A)32 b(pro)s(duct)f(is)g(a)h(consumer)f(pro)s
+(duct)g(regardless)h(of)g(whether)330 3117 y(the)h(pro)s(duct)f(has)h
+(substan)m(tial)g(commercial,)j(industrial)c(or)h(non-consumer)g(uses,)
+g(unless)f(suc)m(h)330 3226 y(uses)e(represen)m(t)g(the)h(only)f
+(signi\014can)m(t)i(mo)s(de)e(of)g(use)g(of)h(the)f(pro)s(duct.)330
+3383 y(\\Installation)h(Information")e(for)g(a)g(User)g(Pro)s(duct)f
+(means)g(an)m(y)i(metho)s(ds,)e(pro)s(cedures,)g(autho-)330
+3493 y(rization)d(k)m(eys,)g(or)f(other)f(information)h(required)f(to)h
+(install)g(and)f(execute)i(mo)s(di\014ed)d(v)m(ersions)i(of)g(a)330
+3602 y(co)m(v)m(ered)h(w)m(ork)e(in)g(that)h(User)f(Pro)s(duct)f(from)h
+(a)h(mo)s(di\014ed)e(v)m(ersion)h(of)h(its)f(Corresp)s(onding)f
+(Source.)330 3712 y(The)30 b(information)h(m)m(ust)f(su\016ce)g(to)i
+(ensure)d(that)i(the)g(con)m(tin)m(ued)g(functioning)g(of)f(the)h(mo)s
+(di\014ed)330 3821 y(ob)5 b(ject)34 b(co)s(de)f(is)g(in)f(no)h(case)h
+(prev)m(en)m(ted)f(or)g(in)m(terfered)g(with)g(solely)h(b)s(ecause)f
+(mo)s(di\014cation)g(has)330 3931 y(b)s(een)d(made.)330
+4088 y(If)38 b(y)m(ou)i(con)m(v)m(ey)g(an)f(ob)5 b(ject)40
+b(co)s(de)f(w)m(ork)g(under)e(this)i(section)h(in,)h(or)e(with,)i(or)e
+(sp)s(eci\014cally)g(for)330 4197 y(use)g(in,)i(a)e(User)g(Pro)s(duct,)
+i(and)e(the)g(con)m(v)m(eying)i(o)s(ccurs)d(as)i(part)f(of)g(a)g
+(transaction)h(in)f(whic)m(h)330 4307 y(the)d(righ)m(t)g(of)g(p)s
+(ossession)f(and)g(use)h(of)f(the)h(User)g(Pro)s(duct)f(is)g
+(transferred)g(to)i(the)e(recipien)m(t)i(in)330 4416
+y(p)s(erp)s(etuit)m(y)43 b(or)g(for)g(a)h(\014xed)e(term)i
+(\(regardless)g(of)f(ho)m(w)h(the)f(transaction)i(is)e(c)m
+(haracterized\),)330 4526 y(the)c(Corresp)s(onding)e(Source)i(con)m(v)m
+(ey)m(ed)i(under)c(this)i(section)h(m)m(ust)f(b)s(e)f(accompanied)i(b)m
+(y)f(the)330 4635 y(Installation)d(Information.)52 b(But)35
+b(this)f(requiremen)m(t)g(do)s(es)g(not)h(apply)f(if)g(neither)g(y)m
+(ou)h(nor)f(an)m(y)330 4745 y(third)28 b(part)m(y)i(retains)f(the)g
+(abilit)m(y)i(to)e(install)h(mo)s(di\014ed)e(ob)5 b(ject)30
+b(co)s(de)f(on)g(the)h(User)f(Pro)s(duct)f(\(for)330
+4855 y(example,)j(the)g(w)m(ork)f(has)g(b)s(een)g(installed)h(in)f(R)m
+(OM\).)330 5011 y(The)38 b(requiremen)m(t)g(to)h(pro)m(vide)g
+(Installation)g(Information)g(do)s(es)f(not)g(include)g(a)h(requiremen)
+m(t)330 5121 y(to)32 b(con)m(tin)m(ue)h(to)f(pro)m(vide)g(supp)s(ort)e
+(service,)j(w)m(arran)m(t)m(y)-8 b(,)33 b(or)f(up)s(dates)e(for)i(a)g
+(w)m(ork)f(that)h(has)g(b)s(een)330 5230 y(mo)s(di\014ed)37
+b(or)h(installed)h(b)m(y)g(the)f(recipien)m(t,)k(or)c(for)g(the)g(User)
+h(Pro)s(duct)e(in)h(whic)m(h)g(it)h(has)f(b)s(een)330
+5340 y(mo)s(di\014ed)29 b(or)h(installed.)42 b(Access)31
+b(to)g(a)g(net)m(w)m(ork)g(ma)m(y)g(b)s(e)e(denied)h(when)f(the)i(mo)s
+(di\014cation)f(itself)p eop end
+%%Page: 89 94
+TeXDict begin 89 93 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(89)330 299 y(materially)32
+b(and)e(adv)m(ersely)h(a\013ects)h(the)e(op)s(eration)h(of)g(the)f(net)
+m(w)m(ork)h(or)g(violates)h(the)f(rules)f(and)330 408
+y(proto)s(cols)h(for)f(comm)m(unication)i(across)f(the)g(net)m(w)m
+(ork.)330 535 y(Corresp)s(onding)26 b(Source)h(con)m(v)m(ey)m(ed,)j
+(and)d(Installation)i(Information)f(pro)m(vided,)g(in)f(accord)h(with)
+330 645 y(this)d(section)i(m)m(ust)e(b)s(e)g(in)g(a)h(format)g(that)f
+(is)h(publicly)f(do)s(cumen)m(ted)g(\(and)g(with)g(an)h(implemen)m(ta-)
+330 754 y(tion)i(a)m(v)-5 b(ailable)29 b(to)f(the)g(public)e(in)h
+(source)h(co)s(de)f(form\),)h(and)f(m)m(ust)g(require)g(no)g(sp)s
+(ecial)h(passw)m(ord)330 864 y(or)i(k)m(ey)i(for)e(unpac)m(king,)g
+(reading)h(or)f(cop)m(ying.)199 990 y(7.)61 b(Additional)31
+b(T)-8 b(erms.)330 1117 y(\\Additional)29 b(p)s(ermissions")e(are)h
+(terms)f(that)h(supplemen)m(t)f(the)h(terms)g(of)f(this)h(License)g(b)m
+(y)g(mak-)330 1226 y(ing)41 b(exceptions)h(from)e(one)h(or)g(more)g(of)
+g(its)g(conditions.)72 b(Additional)42 b(p)s(ermissions)d(that)j(are)
+330 1336 y(applicable)31 b(to)f(the)g(en)m(tire)h(Program)f(shall)g(b)s
+(e)f(treated)i(as)f(though)f(they)h(w)m(ere)h(included)e(in)g(this)330
+1445 y(License,)36 b(to)e(the)g(exten)m(t)i(that)e(they)g(are)g(v)-5
+b(alid)34 b(under)f(applicable)i(la)m(w.)52 b(If)33 b(additional)i(p)s
+(ermis-)330 1555 y(sions)27 b(apply)h(only)f(to)h(part)g(of)f(the)h
+(Program,)h(that)f(part)f(ma)m(y)h(b)s(e)f(used)g(separately)h(under)e
+(those)330 1665 y(p)s(ermissions,)31 b(but)g(the)h(en)m(tire)h(Program)
+f(remains)f(go)m(v)m(erned)i(b)m(y)f(this)g(License)g(without)g(regard)
+330 1774 y(to)f(the)g(additional)g(p)s(ermissions.)330
+1901 y(When)45 b(y)m(ou)g(con)m(v)m(ey)i(a)e(cop)m(y)h(of)f(a)g(co)m(v)
+m(ered)i(w)m(ork,)h(y)m(ou)e(ma)m(y)f(at)h(y)m(our)f(option)g(remo)m(v)
+m(e)i(an)m(y)330 2010 y(additional)30 b(p)s(ermissions)e(from)h(that)h
+(cop)m(y)-8 b(,)31 b(or)f(from)e(an)m(y)i(part)f(of)h(it.)41
+b(\(Additional)30 b(p)s(ermissions)330 2120 y(ma)m(y)41
+b(b)s(e)f(written)g(to)h(require)f(their)h(o)m(wn)f(remo)m(v)-5
+b(al)42 b(in)e(certain)h(cases)g(when)f(y)m(ou)g(mo)s(dify)g(the)330
+2229 y(w)m(ork.\))48 b(Y)-8 b(ou)33 b(ma)m(y)g(place)h(additional)f(p)s
+(ermissions)e(on)i(material,)i(added)d(b)m(y)g(y)m(ou)h(to)g(a)g(co)m
+(v)m(ered)330 2339 y(w)m(ork,)e(for)f(whic)m(h)g(y)m(ou)h(ha)m(v)m(e)g
+(or)g(can)f(giv)m(e)i(appropriate)f(cop)m(yrigh)m(t)g(p)s(ermission.)
+330 2465 y(Not)m(withstanding)e(an)m(y)g(other)g(pro)m(vision)f(of)h
+(this)f(License,)h(for)f(material)i(y)m(ou)f(add)f(to)h(a)f(co)m(v)m
+(ered)330 2575 y(w)m(ork,)40 b(y)m(ou)e(ma)m(y)g(\(if)g(authorized)g(b)
+m(y)g(the)g(cop)m(yrigh)m(t)h(holders)e(of)h(that)g(material\))h
+(supplemen)m(t)330 2685 y(the)31 b(terms)f(of)g(this)h(License)g(with)f
+(terms:)379 2811 y(a.)61 b(Disclaiming)31 b(w)m(arran)m(t)m(y)f(or)g
+(limiting)g(liabilit)m(y)h(di\013eren)m(tly)f(from)f(the)g(terms)g(of)h
+(sections)g(15)510 2921 y(and)g(16)h(of)g(this)f(License;)h(or)374
+3047 y(b.)60 b(Requiring)30 b(preserv)-5 b(ation)31 b(of)g(sp)s
+(eci\014ed)f(reasonable)h(legal)i(notices)f(or)e(author)h(attributions)
+510 3157 y(in)24 b(that)i(material)g(or)f(in)f(the)h(Appropriate)g
+(Legal)h(Notices)h(displa)m(y)m(ed)e(b)m(y)g(w)m(orks)f(con)m(taining)
+510 3266 y(it;)31 b(or)384 3393 y(c.)61 b(Prohibiting)23
+b(misrepresen)m(tation)i(of)e(the)h(origin)g(of)f(that)i(material,)h
+(or)d(requiring)g(that)h(mo)s(d-)510 3502 y(i\014ed)30
+b(v)m(ersions)h(of)f(suc)m(h)g(material)i(b)s(e)e(mark)m(ed)h(in)f
+(reasonable)h(w)m(a)m(ys)g(as)g(di\013eren)m(t)g(from)f(the)510
+3612 y(original)i(v)m(ersion;)f(or)374 3738 y(d.)60 b(Limiting)42
+b(the)f(use)g(for)g(publicit)m(y)h(purp)s(oses)d(of)i(names)g(of)h
+(licensors)f(or)h(authors)e(of)i(the)510 3848 y(material;)32
+b(or)384 3974 y(e.)61 b(Declining)29 b(to)f(gran)m(t)g(righ)m(ts)f
+(under)f(trademark)h(la)m(w)h(for)f(use)g(of)g(some)h(trade)f(names,)h
+(trade-)510 4084 y(marks,)i(or)h(service)g(marks;)f(or)397
+4210 y(f.)60 b(Requiring)26 b(indemni\014cation)g(of)g(licensors)h(and)
+f(authors)f(of)i(that)f(material)i(b)m(y)e(an)m(y)m(one)h(who)510
+4320 y(con)m(v)m(eys)45 b(the)e(material)h(\(or)g(mo)s(di\014ed)e(v)m
+(ersions)h(of)h(it\))g(with)e(con)m(tractual)k(assumptions)510
+4430 y(of)40 b(liabilit)m(y)h(to)f(the)f(recipien)m(t,)k(for)c(an)m(y)h
+(liabilit)m(y)h(that)f(these)g(con)m(tractual)i(assumptions)510
+4539 y(directly)31 b(imp)s(ose)f(on)g(those)h(licensors)g(and)f
+(authors.)330 4682 y(All)i(other)h(non-p)s(ermissiv)m(e)e(additional)i
+(terms)e(are)i(considered)e(\\further)g(restrictions")i(within)330
+4792 y(the)j(meaning)f(of)h(section)g(10.)57 b(If)35
+b(the)h(Program)f(as)h(y)m(ou)g(receiv)m(ed)g(it,)i(or)d(an)m(y)h(part)
+f(of)h(it,)h(con-)330 4902 y(tains)f(a)g(notice)h(stating)g(that)f(it)g
+(is)g(go)m(v)m(erned)h(b)m(y)e(this)h(License)g(along)h(with)e(a)h
+(term)g(that)g(is)g(a)330 5011 y(further)24 b(restriction,)k(y)m(ou)e
+(ma)m(y)g(remo)m(v)m(e)h(that)f(term.)39 b(If)26 b(a)g(license)g(do)s
+(cumen)m(t)g(con)m(tains)g(a)g(further)330 5121 y(restriction)33
+b(but)f(p)s(ermits)g(relicensing)h(or)g(con)m(v)m(eying)h(under)d(this)
+i(License,)g(y)m(ou)g(ma)m(y)g(add)f(to)i(a)330 5230
+y(co)m(v)m(ered)g(w)m(ork)e(material)h(go)m(v)m(erned)h(b)m(y)e(the)g
+(terms)g(of)g(that)h(license)g(do)s(cumen)m(t,)g(pro)m(vided)e(that)330
+5340 y(the)g(further)e(restriction)i(do)s(es)f(not)h(surviv)m(e)f(suc)m
+(h)g(relicensing)h(or)g(con)m(v)m(eying.)p eop end
+%%Page: 90 95
+TeXDict begin 90 94 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(90)330 299 y(If)30
+b(y)m(ou)g(add)g(terms)g(to)h(a)g(co)m(v)m(ered)h(w)m(ork)e(in)g
+(accord)h(with)f(this)g(section,)i(y)m(ou)e(m)m(ust)g(place,)i(in)e
+(the)330 408 y(relev)-5 b(an)m(t)31 b(source)f(\014les,)g(a)g(statemen)
+m(t)h(of)f(the)g(additional)g(terms)g(that)g(apply)f(to)i(those)f
+(\014les,)g(or)g(a)330 518 y(notice)i(indicating)f(where)f(to)h(\014nd)
+e(the)h(applicable)i(terms.)330 648 y(Additional)37 b(terms,)h(p)s
+(ermissiv)m(e)e(or)h(non-p)s(ermissiv)m(e,)h(ma)m(y)f(b)s(e)e(stated)j
+(in)e(the)h(form)f(of)g(a)h(sep-)330 757 y(arately)i(written)f
+(license,)i(or)e(stated)h(as)e(exceptions;)43 b(the)38
+b(ab)s(o)m(v)m(e)h(requiremen)m(ts)e(apply)g(either)330
+867 y(w)m(a)m(y)-8 b(.)199 996 y(8.)61 b(T)-8 b(ermination.)330
+1126 y(Y)g(ou)40 b(ma)m(y)g(not)f(propagate)i(or)e(mo)s(dify)g(a)g(co)m
+(v)m(ered)i(w)m(ork)f(except)g(as)g(expressly)f(pro)m(vided)g(un-)330
+1235 y(der)d(this)h(License.)62 b(An)m(y)37 b(attempt)h(otherwise)f(to)
+h(propagate)g(or)f(mo)s(dify)f(it)i(is)f(v)m(oid,)i(and)e(will)330
+1345 y(automatically)g(terminate)d(y)m(our)g(righ)m(ts)g(under)f(this)g
+(License)i(\(including)e(an)m(y)h(paten)m(t)h(licenses)330
+1455 y(gran)m(ted)c(under)e(the)h(third)g(paragraph)g(of)g(section)i
+(11\).)330 1584 y(Ho)m(w)m(ev)m(er,)j(if)e(y)m(ou)f(cease)i(all)f
+(violation)i(of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f
+(a)h(particular)330 1694 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h
+(\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g
+(cop)m(yrigh)m(t)h(holder)330 1803 y(explicitly)42 b(and)e(\014nally)h
+(terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8
+b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 1913 y(holder)34
+b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h
+(reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 2022
+y(after)31 b(the)f(cessation.)330 2152 y(Moreo)m(v)m(er,)k(y)m(our)d
+(license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h
+(reinstated)g(p)s(ermanen)m(tly)f(if)330 2262 y(the)d(cop)m(yrigh)m(t)h
+(holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g
+(reasonable)h(means,)f(this)g(is)g(the)330 2371 y(\014rst)f(time)i(y)m
+(ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f
+(License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330
+2481 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g
+(violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h
+(of)f(the)330 2590 y(notice.)330 2720 y(T)-8 b(ermination)28
+b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h
+(terminate)h(the)e(licenses)i(of)f(parties)330 2829 y(who)38
+b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g
+(under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e)
+330 2939 y(b)s(een)f(terminated)h(and)e(not)i(p)s(ermanen)m(tly)f
+(reinstated,)j(y)m(ou)e(do)f(not)h(qualify)f(to)h(receiv)m(e)h(new)330
+3049 y(licenses)31 b(for)f(the)h(same)g(material)h(under)c(section)k
+(10.)199 3178 y(9.)61 b(Acceptance)32 b(Not)g(Required)d(for)i(Ha)m
+(ving)g(Copies.)330 3308 y(Y)-8 b(ou)38 b(are)g(not)g(required)f(to)h
+(accept)h(this)f(License)g(in)f(order)g(to)h(receiv)m(e)i(or)e(run)e(a)
+i(cop)m(y)g(of)g(the)330 3417 y(Program.)i(Ancillary)27
+b(propagation)g(of)g(a)g(co)m(v)m(ered)h(w)m(ork)e(o)s(ccurring)g
+(solely)i(as)f(a)g(consequence)g(of)330 3527 y(using)i(p)s(eer-to-p)s
+(eer)g(transmission)g(to)h(receiv)m(e)h(a)e(cop)m(y)h(lik)m(ewise)h(do)
+s(es)d(not)i(require)e(acceptance.)330 3636 y(Ho)m(w)m(ev)m(er,)g
+(nothing)c(other)g(than)g(this)f(License)i(gran)m(ts)g(y)m(ou)f(p)s
+(ermission)f(to)i(propagate)g(or)f(mo)s(dify)330 3746
+y(an)m(y)34 b(co)m(v)m(ered)g(w)m(ork.)50 b(These)32
+b(actions)j(infringe)e(cop)m(yrigh)m(t)h(if)f(y)m(ou)h(do)f(not)g
+(accept)i(this)e(License.)330 3856 y(Therefore,)f(b)m(y)f(mo)s(difying)
+g(or)g(propagating)h(a)g(co)m(v)m(ered)h(w)m(ork,)f(y)m(ou)g(indicate)g
+(y)m(our)g(acceptance)330 3965 y(of)f(this)f(License)h(to)g(do)f(so.)
+154 4095 y(10.)61 b(Automatic)32 b(Licensing)f(of)f(Do)m(wnstream)i
+(Recipien)m(ts.)330 4224 y(Eac)m(h)39 b(time)g(y)m(ou)g(con)m(v)m(ey)h
+(a)f(co)m(v)m(ered)h(w)m(ork,)h(the)d(recipien)m(t)i(automatically)h
+(receiv)m(es)f(a)f(license)330 4334 y(from)e(the)h(original)h
+(licensors,)h(to)f(run,)f(mo)s(dify)f(and)g(propagate)i(that)f(w)m
+(ork,)i(sub)5 b(ject)38 b(to)g(this)330 4443 y(License.)60
+b(Y)-8 b(ou)38 b(are)f(not)g(resp)s(onsible)e(for)i(enforcing)g
+(compliance)h(b)m(y)f(third)f(parties)h(with)f(this)330
+4553 y(License.)330 4682 y(An)43 b(\\en)m(tit)m(y)i(transaction")g(is)f
+(a)f(transaction)i(transferring)e(con)m(trol)h(of)g(an)f(organization,)
+49 b(or)330 4792 y(substan)m(tially)24 b(all)f(assets)g(of)g(one,)i(or)
+e(sub)s(dividing)d(an)j(organization,)j(or)d(merging)g(organizations.)
+330 4902 y(If)28 b(propagation)i(of)f(a)h(co)m(v)m(ered)g(w)m(ork)f
+(results)g(from)f(an)h(en)m(tit)m(y)i(transaction,)f(eac)m(h)g(part)m
+(y)g(to)f(that)330 5011 y(transaction)g(who)d(receiv)m(es)k(a)d(cop)m
+(y)i(of)e(the)h(w)m(ork)f(also)i(receiv)m(es)g(whatev)m(er)f(licenses)g
+(to)g(the)g(w)m(ork)330 5121 y(the)d(part)m(y's)g(predecessor)g(in)g
+(in)m(terest)h(had)e(or)h(could)g(giv)m(e)h(under)e(the)h(previous)f
+(paragraph,)i(plus)330 5230 y(a)31 b(righ)m(t)g(to)h(p)s(ossession)e
+(of)h(the)g(Corresp)s(onding)e(Source)i(of)g(the)f(w)m(ork)h(from)g
+(the)g(predecessor)f(in)330 5340 y(in)m(terest,)i(if)e(the)h
+(predecessor)f(has)g(it)h(or)f(can)h(get)h(it)e(with)h(reasonable)g
+(e\013orts.)p eop end
+%%Page: 91 96
+TeXDict begin 91 95 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(91)330 299 y(Y)-8
+b(ou)36 b(ma)m(y)g(not)g(imp)s(ose)f(an)m(y)h(further)e(restrictions)j
+(on)e(the)h(exercise)g(of)g(the)g(righ)m(ts)g(gran)m(ted)g(or)330
+408 y(a\016rmed)27 b(under)f(this)h(License.)40 b(F)-8
+b(or)28 b(example,)h(y)m(ou)f(ma)m(y)g(not)g(imp)s(ose)f(a)h(license)g
+(fee,)h(ro)m(y)m(alt)m(y)-8 b(,)31 b(or)330 518 y(other)d(c)m(harge)g
+(for)g(exercise)h(of)e(righ)m(ts)h(gran)m(ted)g(under)e(this)i
+(License,)h(and)d(y)m(ou)i(ma)m(y)g(not)g(initiate)330
+628 y(litigation)f(\(including)d(a)g(cross-claim)i(or)e(coun)m
+(terclaim)i(in)e(a)g(la)m(wsuit\))i(alleging)g(that)e(an)m(y)h(paten)m
+(t)330 737 y(claim)j(is)g(infringed)e(b)m(y)i(making,)g(using,)g
+(selling,)h(o\013ering)f(for)f(sale,)i(or)e(imp)s(orting)g(the)h
+(Program)330 847 y(or)i(an)m(y)h(p)s(ortion)f(of)h(it.)154
+984 y(11.)61 b(P)m(aten)m(ts.)330 1121 y(A)41 b(\\con)m(tributor")h(is)
+f(a)g(cop)m(yrigh)m(t)i(holder)d(who)h(authorizes)g(use)g(under)e(this)
+i(License)h(of)f(the)330 1230 y(Program)35 b(or)f(a)h(w)m(ork)g(on)f
+(whic)m(h)g(the)h(Program)f(is)h(based.)53 b(The)34 b(w)m(ork)g(th)m
+(us)g(licensed)h(is)g(called)330 1340 y(the)c(con)m(tributor's)f(\\con)
+m(tributor)i(v)m(ersion".)330 1477 y(A)g(con)m(tributor's)g(\\essen)m
+(tial)i(paten)m(t)e(claims")h(are)f(all)h(paten)m(t)f(claims)h(o)m
+(wned)e(or)h(con)m(trolled)h(b)m(y)330 1587 y(the)21
+b(con)m(tributor,)j(whether)d(already)g(acquired)g(or)h(hereafter)f
+(acquired,)j(that)d(w)m(ould)g(b)s(e)g(infringed)330
+1696 y(b)m(y)27 b(some)h(manner,)g(p)s(ermitted)f(b)m(y)g(this)h
+(License,)h(of)e(making,)i(using,)f(or)f(selling)i(its)f(con)m
+(tributor)330 1806 y(v)m(ersion,)40 b(but)c(do)i(not)f(include)g
+(claims)i(that)f(w)m(ould)f(b)s(e)f(infringed)h(only)g(as)h(a)g
+(consequence)g(of)330 1915 y(further)33 b(mo)s(di\014cation)h(of)g(the)
+g(con)m(tributor)g(v)m(ersion.)52 b(F)-8 b(or)34 b(purp)s(oses)e(of)i
+(this)g(de\014nition,)h(\\con-)330 2025 y(trol")40 b(includes)f(the)g
+(righ)m(t)h(to)f(gran)m(t)h(paten)m(t)g(sublicenses)f(in)g(a)g(manner)g
+(consisten)m(t)h(with)f(the)330 2134 y(requiremen)m(ts)30
+b(of)h(this)f(License.)330 2271 y(Eac)m(h)44 b(con)m(tributor)h(gran)m
+(ts)f(y)m(ou)g(a)h(non-exclusiv)m(e,)j(w)m(orldwide,)f(ro)m(y)m(alt)m
+(y-free)g(paten)m(t)e(license)330 2381 y(under)26 b(the)h(con)m
+(tributor's)g(essen)m(tial)i(paten)m(t)f(claims,)h(to)f(mak)m(e,)h
+(use,)f(sell,)g(o\013er)g(for)f(sale,)i(imp)s(ort)330
+2491 y(and)h(otherwise)h(run,)e(mo)s(dify)g(and)h(propagate)i(the)e
+(con)m(ten)m(ts)i(of)f(its)g(con)m(tributor)f(v)m(ersion.)330
+2628 y(In)e(the)h(follo)m(wing)h(three)e(paragraphs,)h(a)g(\\paten)m(t)
+h(license")g(is)e(an)m(y)h(express)f(agreemen)m(t)j(or)d(com-)330
+2737 y(mitmen)m(t,)g(ho)m(w)m(ev)m(er)g(denominated,)f(not)f(to)h
+(enforce)g(a)f(paten)m(t)i(\(suc)m(h)e(as)g(an)g(express)g(p)s
+(ermission)330 2847 y(to)32 b(practice)h(a)f(paten)m(t)h(or)e(co)m(v)m
+(enan)m(t)j(not)e(to)g(sue)f(for)h(paten)m(t)g(infringemen)m(t\).)45
+b(T)-8 b(o)32 b(\\gran)m(t")h(suc)m(h)330 2956 y(a)i(paten)m(t)h
+(license)f(to)h(a)f(part)m(y)g(means)f(to)i(mak)m(e)f(suc)m(h)g(an)f
+(agreemen)m(t)j(or)d(commitmen)m(t)i(not)f(to)330 3066
+y(enforce)c(a)g(paten)m(t)g(against)h(the)e(part)m(y)-8
+b(.)330 3203 y(If)36 b(y)m(ou)h(con)m(v)m(ey)h(a)f(co)m(v)m(ered)h(w)m
+(ork,)h(kno)m(wingly)e(relying)g(on)f(a)h(paten)m(t)h(license,)h(and)d
+(the)h(Corre-)330 3313 y(sp)s(onding)21 b(Source)h(of)h(the)g(w)m(ork)g
+(is)f(not)h(a)m(v)-5 b(ailable)25 b(for)e(an)m(y)m(one)g(to)h(cop)m(y)
+-8 b(,)25 b(free)e(of)g(c)m(harge)g(and)f(under)330 3422
+y(the)32 b(terms)f(of)h(this)f(License,)i(through)e(a)h(publicly)f(a)m
+(v)-5 b(ailable)34 b(net)m(w)m(ork)e(serv)m(er)g(or)g(other)g(readily)
+330 3532 y(accessible)38 b(means,)g(then)e(y)m(ou)h(m)m(ust)f(either)h
+(\(1\))h(cause)e(the)h(Corresp)s(onding)e(Source)h(to)h(b)s(e)f(so)330
+3641 y(a)m(v)-5 b(ailable,)32 b(or)e(\(2\))g(arrange)g(to)h(depriv)m(e)
+e(y)m(ourself)h(of)g(the)g(b)s(ene\014t)e(of)i(the)g(paten)m(t)g
+(license)h(for)e(this)330 3751 y(particular)35 b(w)m(ork,)g(or)f(\(3\))
+i(arrange,)g(in)d(a)i(manner)e(consisten)m(t)j(with)e(the)g(requiremen)
+m(ts)h(of)f(this)330 3861 y(License,)j(to)f(extend)g(the)f(paten)m(t)h
+(license)h(to)f(do)m(wnstream)f(recipien)m(ts.)56 b(\\Kno)m(wingly)36
+b(relying")330 3970 y(means)31 b(y)m(ou)h(ha)m(v)m(e)g(actual)h(kno)m
+(wledge)f(that,)g(but)f(for)g(the)g(paten)m(t)i(license,)f(y)m(our)g
+(con)m(v)m(eying)h(the)330 4080 y(co)m(v)m(ered)40 b(w)m(ork)e(in)g(a)g
+(coun)m(try)-8 b(,)41 b(or)e(y)m(our)f(recipien)m(t's)h(use)f(of)g(the)
+h(co)m(v)m(ered)g(w)m(ork)g(in)e(a)i(coun)m(try)-8 b(,)330
+4189 y(w)m(ould)35 b(infringe)g(one)g(or)g(more)g(iden)m(ti\014able)h
+(paten)m(ts)g(in)f(that)h(coun)m(try)f(that)h(y)m(ou)f(ha)m(v)m(e)i
+(reason)330 4299 y(to)31 b(b)s(eliev)m(e)h(are)e(v)-5
+b(alid.)330 4436 y(If,)31 b(pursuan)m(t)e(to)j(or)e(in)h(connection)h
+(with)e(a)h(single)h(transaction)g(or)f(arrangemen)m(t,)h(y)m(ou)f(con)
+m(v)m(ey)-8 b(,)330 4545 y(or)35 b(propagate)h(b)m(y)e(pro)s(curing)g
+(con)m(v)m(ey)m(ance)j(of,)g(a)e(co)m(v)m(ered)h(w)m(ork,)g(and)f(gran)
+m(t)g(a)g(paten)m(t)h(license)330 4655 y(to)c(some)f(of)h(the)f
+(parties)h(receiving)g(the)f(co)m(v)m(ered)i(w)m(ork)e(authorizing)h
+(them)f(to)h(use,)g(propagate,)330 4765 y(mo)s(dify)26
+b(or)h(con)m(v)m(ey)h(a)g(sp)s(eci\014c)e(cop)m(y)i(of)f(the)g(co)m(v)m
+(ered)i(w)m(ork,)f(then)e(the)h(paten)m(t)h(license)g(y)m(ou)f(gran)m
+(t)330 4874 y(is)j(automatically)k(extended)c(to)h(all)g(recipien)m(ts)
+h(of)e(the)h(co)m(v)m(ered)h(w)m(ork)e(and)g(w)m(orks)g(based)g(on)h
+(it.)330 5011 y(A)d(paten)m(t)g(license)h(is)e(\\discriminatory")i(if)e
+(it)h(do)s(es)f(not)h(include)f(within)g(the)h(scop)s(e)f(of)h(its)g
+(co)m(v)m(er-)330 5121 y(age,)f(prohibits)c(the)h(exercise)h(of,)h(or)d
+(is)h(conditioned)h(on)f(the)g(non-exercise)h(of)f(one)g(or)g(more)g
+(of)g(the)330 5230 y(righ)m(ts)32 b(that)g(are)g(sp)s(eci\014cally)h
+(gran)m(ted)f(under)e(this)i(License.)45 b(Y)-8 b(ou)32
+b(ma)m(y)g(not)g(con)m(v)m(ey)h(a)f(co)m(v)m(ered)330
+5340 y(w)m(ork)d(if)g(y)m(ou)g(are)h(a)f(part)m(y)g(to)h(an)f
+(arrangemen)m(t)h(with)e(a)i(third)e(part)m(y)h(that)g(is)g(in)g(the)g
+(business)f(of)p eop end
+%%Page: 92 97
+TeXDict begin 92 96 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(92)330 299 y(distributing)30
+b(soft)m(w)m(are,)i(under)d(whic)m(h)h(y)m(ou)h(mak)m(e)g(pa)m(ymen)m
+(t)g(to)g(the)g(third)f(part)m(y)g(based)g(on)h(the)330
+408 y(exten)m(t)f(of)g(y)m(our)f(activit)m(y)i(of)e(con)m(v)m(eying)i
+(the)e(w)m(ork,)h(and)e(under)g(whic)m(h)g(the)i(third)e(part)m(y)h
+(gran)m(ts,)330 518 y(to)35 b(an)m(y)g(of)f(the)h(parties)f(who)g(w)m
+(ould)g(receiv)m(e)i(the)f(co)m(v)m(ered)h(w)m(ork)e(from)g(y)m(ou,)i
+(a)f(discriminatory)330 628 y(paten)m(t)g(license)h(\(a\))f(in)f
+(connection)h(with)f(copies)h(of)g(the)f(co)m(v)m(ered)i(w)m(ork)f(con)
+m(v)m(ey)m(ed)h(b)m(y)e(y)m(ou)h(\(or)330 737 y(copies)k(made)e(from)h
+(those)g(copies\),)j(or)d(\(b\))g(primarily)f(for)h(and)f(in)h
+(connection)h(with)e(sp)s(eci\014c)330 847 y(pro)s(ducts)32
+b(or)i(compilations)h(that)f(con)m(tain)h(the)f(co)m(v)m(ered)i(w)m
+(ork,)e(unless)f(y)m(ou)h(en)m(tered)h(in)m(to)f(that)330
+956 y(arrangemen)m(t,)e(or)e(that)h(paten)m(t)g(license)h(w)m(as)e
+(gran)m(ted,)i(prior)d(to)j(28)f(Marc)m(h)g(2007.)330
+1084 y(Nothing)23 b(in)e(this)h(License)h(shall)f(b)s(e)f(construed)h
+(as)g(excluding)g(or)g(limiting)h(an)m(y)f(implied)g(license)h(or)330
+1194 y(other)k(defenses)f(to)h(infringemen)m(t)g(that)g(ma)m(y)g
+(otherwise)g(b)s(e)e(a)m(v)-5 b(ailable)29 b(to)e(y)m(ou)g(under)e
+(applicable)330 1303 y(paten)m(t)31 b(la)m(w.)154 1431
+y(12.)61 b(No)31 b(Surrender)d(of)i(Others')g(F)-8 b(reedom.)330
+1559 y(If)24 b(conditions)g(are)h(imp)s(osed)f(on)g(y)m(ou)g(\(whether)
+g(b)m(y)g(court)h(order,)g(agreemen)m(t)h(or)e(otherwise\))h(that)330
+1669 y(con)m(tradict)35 b(the)f(conditions)h(of)e(this)h(License,)h
+(they)f(do)g(not)g(excuse)g(y)m(ou)g(from)g(the)f(conditions)330
+1778 y(of)k(this)f(License.)59 b(If)36 b(y)m(ou)h(cannot)g(con)m(v)m
+(ey)h(a)e(co)m(v)m(ered)i(w)m(ork)f(so)g(as)f(to)h(satisfy)g(sim)m
+(ultaneously)330 1888 y(y)m(our)44 b(obligations)i(under)c(this)i
+(License)h(and)e(an)m(y)i(other)f(p)s(ertinen)m(t)g(obligations,)49
+b(then)44 b(as)h(a)330 1998 y(consequence)40 b(y)m(ou)f(ma)m(y)g(not)g
+(con)m(v)m(ey)i(it)e(at)h(all.)67 b(F)-8 b(or)40 b(example,)i(if)d(y)m
+(ou)g(agree)h(to)g(terms)e(that)330 2107 y(obligate)32
+b(y)m(ou)e(to)h(collect)h(a)f(ro)m(y)m(alt)m(y)h(for)e(further)e(con)m
+(v)m(eying)k(from)e(those)g(to)h(whom)e(y)m(ou)h(con)m(v)m(ey)330
+2217 y(the)h(Program,)h(the)f(only)g(w)m(a)m(y)h(y)m(ou)g(could)f
+(satisfy)g(b)s(oth)g(those)g(terms)g(and)g(this)g(License)g(w)m(ould)
+330 2326 y(b)s(e)f(to)h(refrain)f(en)m(tirely)h(from)f(con)m(v)m(eying)
+i(the)f(Program.)154 2454 y(13.)61 b(Use)31 b(with)f(the)g(GNU)h
+(A\013ero)g(General)h(Public)e(License.)330 2582 y(Not)m(withstanding)
+39 b(an)m(y)g(other)f(pro)m(vision)h(of)f(this)g(License,)k(y)m(ou)c
+(ha)m(v)m(e)i(p)s(ermission)d(to)i(link)f(or)330 2692
+y(com)m(bine)h(an)m(y)g(co)m(v)m(ered)i(w)m(ork)e(with)f(a)h(w)m(ork)g
+(licensed)g(under)e(v)m(ersion)i(3)g(of)g(the)g(GNU)g(A\013ero)330
+2801 y(General)29 b(Public)f(License)h(in)m(to)h(a)f(single)g(com)m
+(bined)f(w)m(ork,)h(and)f(to)h(con)m(v)m(ey)h(the)f(resulting)g(w)m
+(ork.)330 2911 y(The)f(terms)g(of)g(this)h(License)f(will)h(con)m(tin)m
+(ue)g(to)g(apply)f(to)h(the)g(part)f(whic)m(h)g(is)g(the)h(co)m(v)m
+(ered)h(w)m(ork,)330 3020 y(but)38 b(the)h(sp)s(ecial)g(requiremen)m
+(ts)f(of)h(the)g(GNU)g(A\013ero)g(General)g(Public)g(License,)i
+(section)f(13,)330 3130 y(concerning)31 b(in)m(teraction)h(through)e(a)
+h(net)m(w)m(ork)g(will)f(apply)g(to)i(the)e(com)m(bination)i(as)e(suc)m
+(h.)154 3258 y(14.)61 b(Revised)31 b(V)-8 b(ersions)30
+b(of)h(this)f(License.)330 3386 y(The)35 b(F)-8 b(ree)36
+b(Soft)m(w)m(are)g(F)-8 b(oundation)36 b(ma)m(y)g(publish)d(revised)i
+(and/or)g(new)g(v)m(ersions)h(of)f(the)g(GNU)330 3495
+y(General)f(Public)f(License)g(from)g(time)g(to)h(time.)49
+b(Suc)m(h)33 b(new)f(v)m(ersions)h(will)h(b)s(e)e(similar)h(in)g
+(spirit)330 3605 y(to)e(the)g(presen)m(t)f(v)m(ersion,)h(but)f(ma)m(y)h
+(di\013er)f(in)g(detail)i(to)f(address)e(new)h(problems)g(or)g
+(concerns.)330 3733 y(Eac)m(h)37 b(v)m(ersion)g(is)f(giv)m(en)h(a)g
+(distinguishing)e(v)m(ersion)i(n)m(um)m(b)s(er.)57 b(If)36
+b(the)g(Program)g(sp)s(eci\014es)g(that)330 3842 y(a)31
+b(certain)h(n)m(um)m(b)s(ered)d(v)m(ersion)i(of)g(the)g(GNU)g(General)h
+(Public)e(License)h(\\or)g(an)m(y)g(later)h(v)m(ersion")330
+3952 y(applies)h(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f
+(follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330
+4061 y(n)m(um)m(b)s(ered)h(v)m(ersion)h(or)g(of)g(an)m(y)g(later)h(v)m
+(ersion)g(published)d(b)m(y)i(the)g(F)-8 b(ree)35 b(Soft)m(w)m(are)g(F)
+-8 b(oundation.)330 4171 y(If)28 b(the)h(Program)g(do)s(es)g(not)g(sp)s
+(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)h(the)g(GNU)g(General)h
+(Public)e(License,)330 4281 y(y)m(ou)j(ma)m(y)g(c)m(ho)s(ose)g(an)m(y)g
+(v)m(ersion)g(ev)m(er)g(published)d(b)m(y)j(the)f(F)-8
+b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation.)330 4408
+y(If)39 b(the)h(Program)g(sp)s(eci\014es)f(that)h(a)g(pro)m(xy)g(can)g
+(decide)g(whic)m(h)f(future)g(v)m(ersions)h(of)f(the)h(GNU)330
+4518 y(General)34 b(Public)e(License)i(can)f(b)s(e)f(used,)h(that)h
+(pro)m(xy's)e(public)h(statemen)m(t)h(of)f(acceptance)j(of)d(a)330
+4628 y(v)m(ersion)e(p)s(ermanen)m(tly)f(authorizes)h(y)m(ou)g(to)g(c)m
+(ho)s(ose)g(that)g(v)m(ersion)g(for)f(the)h(Program.)330
+4756 y(Later)37 b(license)g(v)m(ersions)f(ma)m(y)h(giv)m(e)g(y)m(ou)g
+(additional)g(or)f(di\013eren)m(t)h(p)s(ermissions.)56
+b(Ho)m(w)m(ev)m(er,)40 b(no)330 4865 y(additional)25
+b(obligations)i(are)e(imp)s(osed)f(on)g(an)m(y)h(author)f(or)h(cop)m
+(yrigh)m(t)h(holder)e(as)h(a)g(result)f(of)h(y)m(our)330
+4975 y(c)m(ho)s(osing)31 b(to)g(follo)m(w)h(a)f(later)g(v)m(ersion.)154
+5103 y(15.)61 b(Disclaimer)32 b(of)f(W)-8 b(arran)m(t)m(y)g(.)330
+5230 y(THERE)47 b(IS)f(NO)h(W)-10 b(ARRANTY)48 b(F)m(OR)f(THE)g(PR)m
+(OGRAM,)h(TO)f(THE)g(EXTENT)f(PER-)330 5340 y(MITTED)g(BY)i(APPLICABLE)
+e(LA)-10 b(W.)47 b(EX)m(CEPT)f(WHEN)i(OTHER)-10 b(WISE)45
+b(ST)-8 b(A)g(TED)47 b(IN)p eop end
+%%Page: 93 98
+TeXDict begin 93 97 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(93)330 299 y(WRITING)34
+b(THE)f(COPYRIGHT)g(HOLDERS)g(AND/OR)i(OTHER)e(P)-8 b(AR)g(TIES)33
+b(PR)m(O)m(VIDE)330 408 y(THE)d(PR)m(OGRAM)i(\\AS)e(IS")h(WITHOUT)f(W)
+-10 b(ARRANTY)31 b(OF)g(ANY)g(KIND,)g(EITHER)f(EX-)330
+518 y(PRESSED)k(OR)h(IMPLIED,)g(INCLUDING,)g(BUT)h(NOT)e(LIMITED)h(TO,)
+f(THE)h(IMPLIED)330 628 y(W)-10 b(ARRANTIES)38 b(OF)g(MER)m(CHANT)-8
+b(ABILITY)39 b(AND)g(FITNESS)e(F)m(OR)i(A)f(P)-8 b(AR)g(TICULAR)330
+737 y(PURPOSE.)39 b(THE)h(ENTIRE)f(RISK)g(AS)h(TO)f(THE)g(QUALITY)h
+(AND)h(PERF)m(ORMANCE)330 847 y(OF)29 b(THE)g(PR)m(OGRAM)h(IS)f(WITH)g
+(YOU.)h(SHOULD)f(THE)g(PR)m(OGRAM)h(PR)m(O)m(VE)g(DEFEC-)330
+956 y(TIVE,)24 b(YOU)g(ASSUME)f(THE)h(COST)f(OF)h(ALL)g(NECESSAR)-8
+b(Y)23 b(SER)-10 b(VICING,)23 b(REP)-8 b(AIR)24 b(OR)330
+1066 y(CORRECTION.)154 1200 y(16.)61 b(Limitation)32
+b(of)e(Liabilit)m(y)-8 b(.)330 1334 y(IN)26 b(NO)g(EVENT)g(UNLESS)f
+(REQUIRED)h(BY)h(APPLICABLE)f(LA)-10 b(W)26 b(OR)g(A)m(GREED)h(TO)f(IN)
+330 1444 y(WRITING)37 b(WILL)f(ANY)i(COPYRIGHT)e(HOLDER,)h(OR)f(ANY)h
+(OTHER)f(P)-8 b(AR)g(TY)38 b(WHO)330 1553 y(MODIFIES)33
+b(AND/OR)h(CONVEYS)e(THE)h(PR)m(OGRAM)h(AS)e(PERMITTED)h(ABO)m(VE,)h
+(BE)330 1663 y(LIABLE)d(TO)e(YOU)i(F)m(OR)g(D)m(AMA)m(GES,)i(INCLUDING)
+e(ANY)g(GENERAL,)g(SPECIAL,)f(IN-)330 1772 y(CIDENT)-8
+b(AL)32 b(OR)f(CONSEQUENTIAL)f(D)m(AMA)m(GES)j(ARISING)f(OUT)f(OF)h
+(THE)f(USE)g(OR)330 1882 y(INABILITY)47 b(TO)f(USE)g(THE)g(PR)m(OGRAM)i
+(\(INCLUDING)f(BUT)g(NOT)f(LIMITED)h(TO)330 1992 y(LOSS)28
+b(OF)h(D)m(A)-8 b(T)g(A)31 b(OR)e(D)m(A)-8 b(T)g(A)31
+b(BEING)f(RENDERED)f(INA)m(CCURA)-8 b(TE)30 b(OR)e(LOSSES)g(SUS-)330
+2101 y(T)-8 b(AINED)43 b(BY)g(YOU)f(OR)g(THIRD)h(P)-8
+b(AR)g(TIES)42 b(OR)g(A)g(F)-10 b(AILURE)43 b(OF)f(THE)g(PR)m(OGRAM)330
+2211 y(TO)30 b(OPERA)-8 b(TE)29 b(WITH)i(ANY)f(OTHER)g(PR)m(OGRAMS\),)h
+(EVEN)f(IF)h(SUCH)e(HOLDER)h(OR)330 2320 y(OTHER)36 b(P)-8
+b(AR)g(TY)37 b(HAS)g(BEEN)f(AD)m(VISED)i(OF)f(THE)f(POSSIBILITY)f(OF)h
+(SUCH)g(D)m(AM-)330 2430 y(A)m(GES.)154 2564 y(17.)61
+b(In)m(terpretation)31 b(of)g(Sections)g(15)g(and)f(16.)330
+2698 y(If)d(the)h(disclaimer)g(of)f(w)m(arran)m(t)m(y)i(and)d
+(limitation)k(of)d(liabilit)m(y)j(pro)m(vided)d(ab)s(o)m(v)m(e)h
+(cannot)g(b)s(e)f(giv)m(en)330 2808 y(lo)s(cal)35 b(legal)h(e\013ect)g
+(according)f(to)f(their)h(terms,)g(reviewing)f(courts)g(shall)h(apply)e
+(lo)s(cal)j(la)m(w)e(that)330 2917 y(most)j(closely)i(appro)m(ximates)f
+(an)f(absolute)g(w)m(aiv)m(er)i(of)e(all)g(civil)i(liabilit)m(y)f(in)f
+(connection)h(with)330 3027 y(the)d(Program,)i(unless)d(a)h(w)m(arran)m
+(t)m(y)h(or)f(assumption)g(of)g(liabilit)m(y)i(accompanies)f(a)g(cop)m
+(y)g(of)f(the)330 3136 y(Program)c(in)f(return)f(for)h(a)h(fee.)150
+3368 y Fw(END)45 b(OF)g(TERMS)f(AND)h(CONDITIONS)150
+3625 y(Ho)l(w)h(to)f(Apply)f(These)h(T)-11 b(erms)45
+b(to)g(Y)-11 b(our)44 b(New)i(Programs)150 3784 y Fx(If)20
+b(y)m(ou)i(dev)m(elop)f(a)h(new)e(program,)j(and)d(y)m(ou)i(w)m(an)m(t)
+f(it)h(to)f(b)s(e)g(of)g(the)g(greatest)i(p)s(ossible)d(use)h(to)g(the)
+g(public,)150 3894 y(the)28 b(b)s(est)f(w)m(a)m(y)i(to)g(ac)m(hiev)m(e)
+h(this)e(is)g(to)g(mak)m(e)h(it)g(free)f(soft)m(w)m(are)h(whic)m(h)e
+(ev)m(ery)m(one)j(can)e(redistribute)g(and)150 4003 y(c)m(hange)k
+(under)c(these)j(terms.)275 4137 y(T)-8 b(o)29 b(do)h(so,)g(attac)m(h)h
+(the)f(follo)m(wing)h(notices)f(to)h(the)e(program.)40
+b(It)30 b(is)g(safest)g(to)g(attac)m(h)h(them)f(to)g(the)150
+4247 y(start)38 b(of)g(eac)m(h)g(source)g(\014le)f(to)h(most)g
+(e\013ectiv)m(ely)i(state)f(the)f(exclusion)g(of)f(w)m(arran)m(t)m(y;)
+42 b(and)37 b(eac)m(h)i(\014le)150 4357 y(should)29 b(ha)m(v)m(e)j(at)f
+(least)h(the)e(\\cop)m(yrigh)m(t")j(line)e(and)e(a)i(p)s(oin)m(ter)g
+(to)g(where)f(the)g(full)g(notice)i(is)e(found.)390 4468
+y Fc(one)40 b(line)g(to)g(give)g(the)g(program's)h(name)f(and)g(a)g
+(brief)g(idea)g(of)g(what)g(it)g(does.)390 4555 y Fd(Copyright)h(\(C\))
+f Fc(year)49 b(name)40 b(of)g(author)390 4730 y Fd(This)g(program)h(is)
+f(free)g(software:)h(you)f(can)g(redistribute)i(it)e(and/or)g(modify)
+390 4817 y(it)g(under)g(the)g(terms)g(of)g(the)g(GNU)g(General)h
+(Public)f(License)h(as)f(published)h(by)390 4904 y(the)f(Free)g
+(Software)h(Foundation,)h(either)e(version)h(3)f(of)f(the)h(License,)h
+(or)f(\(at)390 4991 y(your)g(option\))h(any)f(later)g(version.)390
+5166 y(This)g(program)h(is)f(distributed)h(in)f(the)g(hope)g(that)g(it)
+g(will)g(be)g(useful,)h(but)390 5253 y(WITHOUT)g(ANY)f(WARRANTY;)h
+(without)g(even)f(the)g(implied)h(warranty)g(of)390 5340
+y(MERCHANTABILITY)i(or)c(FITNESS)i(FOR)f(A)g(PARTICULAR)h(PURPOSE.)80
+b(See)40 b(the)g(GNU)p eop end
+%%Page: 94 99
+TeXDict begin 94 98 bop 150 -116 a Fx(App)s(endix)29
+b(C:)h(Cop)m(ying)g(Information)2143 b(94)390 299 y Fd(General)41
+b(Public)f(License)h(for)f(more)g(details.)390 473 y(You)g(should)g
+(have)h(received)g(a)e(copy)h(of)g(the)g(GNU)g(General)h(Public)f
+(License)390 560 y(along)g(with)g(this)h(program.)80
+b(If)40 b(not,)g(see)g(http://www.gnu.org/licenses/.)275
+695 y Fx(Also)31 b(add)e(information)i(on)f(ho)m(w)h(to)g(con)m(tact)i
+(y)m(ou)d(b)m(y)g(electronic)j(and)d(pap)s(er)f(mail.)275
+829 y(If)e(the)i(program)f(do)s(es)f(terminal)i(in)m(teraction,)i(mak)m
+(e)e(it)g(output)f(a)g(short)g(notice)i(lik)m(e)f(this)f(when)f(it)150
+939 y(starts)k(in)f(an)g(in)m(teractiv)m(e)j(mo)s(de:)390
+1051 y Fc(program)49 b Fd(Copyright)42 b(\(C\))e Fc(year)48
+b(name)41 b(of)e(author)390 1138 y Fd(This)h(program)h(comes)f(with)g
+(ABSOLUTELY)i(NO)e(WARRANTY;)h(for)f(details)h(type)f(`show)g(w'.)390
+1225 y(This)g(is)g(free)g(software,)h(and)f(you)g(are)g(welcome)h(to)e
+(redistribute)j(it)390 1313 y(under)e(certain)h(conditions;)h(type)e
+(`show)g(c')g(for)g(details.)275 1447 y Fx(The)27 b(h)m(yp)s(othetical)
+i(commands)f(`)p Fr(show)h(w)p Fx(')f(and)f(`)p Fr(show)j(c)p
+Fx(')d(should)g(sho)m(w)h(the)g(appropriate)g(parts)g(of)150
+1557 y(the)i(General)h(Public)f(License.)41 b(Of)30 b(course,)h(y)m
+(our)f(program's)g(commands)f(migh)m(t)i(b)s(e)f(di\013eren)m(t;)h(for)
+f(a)150 1666 y(GUI)h(in)m(terface,)h(y)m(ou)f(w)m(ould)f(use)g(an)g
+(\\ab)s(out)h(b)s(o)m(x".)275 1801 y(Y)-8 b(ou)34 b(should)f(also)i
+(get)g(y)m(our)e(emplo)m(y)m(er)i(\(if)g(y)m(ou)f(w)m(ork)g(as)g(a)g
+(programmer\))g(or)g(sc)m(ho)s(ol,)i(if)d(an)m(y)-8 b(,)36
+b(to)150 1910 y(sign)d(a)g(\\cop)m(yrigh)m(t)h(disclaimer")g(for)e(the)
+h(program,)g(if)f(necessary)-8 b(.)48 b(F)-8 b(or)34
+b(more)e(information)h(on)g(this,)150 2020 y(and)d(ho)m(w)g(to)h(apply)
+f(and)g(follo)m(w)i(the)e(GNU)h(GPL,)g(see)g Fr
+(http://www.gnu.org/licen)o(ses)o(/)p Fx(.)275 2154 y(The)44
+b(GNU)h(General)g(Public)f(License)i(do)s(es)e(not)h(p)s(ermit)e
+(incorp)s(orating)i(y)m(our)g(program)f(in)m(to)150 2264
+y(proprietary)35 b(programs.)57 b(If)35 b(y)m(our)h(program)f(is)h(a)g
+(subroutine)f(library)-8 b(,)37 b(y)m(ou)f(ma)m(y)h(consider)e(it)i
+(more)150 2374 y(useful)30 b(to)i(p)s(ermit)e(linking)i(proprietary)e
+(applications)i(with)f(the)g(library)-8 b(.)43 b(If)31
+b(this)g(is)g(what)g(y)m(ou)g(w)m(an)m(t)150 2483 y(to)f(do,)g(use)f
+(the)g(GNU)h(Lesser)g(General)g(Public)f(License)h(instead)g(of)f(this)
+h(License.)40 b(But)30 b(\014rst,)f(please)150 2593 y(read)h
+Fr(http://www.gnu.org/philos)o(ophy)o(/why)o(-no)o(t-lg)o(pl.h)o(tml)o
+Fx(.)p eop end
+%%Page: 95 100
+TeXDict begin 95 99 bop 150 -116 a Fx(F)-8 b(unction)31
+b(and)f(V)-8 b(ariable)32 b(Index)2370 b(95)150 299 y
+Fu(F)-13 b(unction)52 b(and)h(V)-13 b(ariable)53 b(Index)150
+610 y Fw(I)150 726 y Fd(idn_free)12 b Fa(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38
+b Ff(13)150 814 y Fd(idna-to-ascii)16 b Fa(:)g(:)e(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 b Ff(57)150 901 y Fd(idna-to-unicode)11
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38
+b Ff(57)150 988 y Fd(idna_strerror)16 b Fa(:)g(:)e(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 b Ff(29)150 1076 y Fd(idna_to_ascii_4i)9
+b Fa(:)16 b(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
+b Ff(26)150 1163 y Fd(idna_to_ascii_4z)9 b Fa(:)16 b(:)e(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)35 b Ff(27)150 1250 y Fd(idna_to_ascii_8z)9
+b Fa(:)16 b(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
+b Ff(27)150 1338 y Fd(idna_to_ascii_lz)9 b Fa(:)16 b(:)e(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)35 b Ff(27)150 1425 y Fd(idna_to_unicode_44i)18
+b Fa(:)g(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Ff(26)150 1512
+y Fd(idna_to_unicode_4z4z)16 b Fa(:)h(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42
+b Ff(28)150 1600 y Fd(idna_to_unicode_8z4z)16 b Fa(:)h(:)c(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)42 b Ff(28)150 1687 y Fd(idna_to_unicode_8z8z)16
+b Fa(:)h(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)42 b Ff(28)150 1774 y Fd
+(idna_to_unicode_8zlz)16 b Fa(:)h(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42
+b Ff(29)150 1862 y Fd(idna_to_unicode_lzlz)16 b Fa(:)h(:)c(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)42 b Ff(29)150 2105 y Fw(P)150 2221 y Fd(pr29_4)17
+b Fa(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)43 b Ff(36)150 2308 y Fd(pr29_4z)15
+b Fa(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)41 b Ff(37)150 2395 y Fd(pr29_8z)15
+b Fa(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)41 b Ff(37)150 2483 y Fd(pr29_strerror)16
+b Fa(:)g(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43
+b Ff(37)150 2570 y Fd(punycode-decode)11 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Ff(56)150 2657 y Fd(punycode-encode)11
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38
+b Ff(56)150 2745 y Fd(punycode_decode)11 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Ff(23)150 2832 y Fd(punycode_encode)11
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38
+b Ff(22)150 2919 y Fd(punycode_strerror)6 b Fa(:)17 b(:)c(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)32 b Ff(24)150 3172 y Fw(S)150 3288
+y Fd(stringprep)7 b Fa(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Ff(18)150 3375 y Fd(stringprep_4i)16
+b Fa(:)g(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43
+b Ff(17)150 3462 y Fd(stringprep_4zi)14 b Fa(:)i(:)d(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)40 b Ff(18)2025 610 y Fd
+(stringprep_check_version)28 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Ff(10)2025
+699 y Fd(stringprep_convert)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+47 b Ff(16)2025 787 y Fd(stringprep_iscsi)9 b Fa(:)16
+b(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Ff(20)2025
+875 y Fd(stringprep_locale_charset)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Ff(16)2025
+964 y Fd(stringprep_locale_to_utf8)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Ff(16)2025
+1052 y Fd(stringprep_nameprep_no_unassig)q(ned)17 b Fa(:)i(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)43 b Ff(20)2025 1141 y Fd(stringprep_plain)
+9 b Fa(:)16 b(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
+b Ff(20)2025 1229 y Fd(stringprep_profile)25 b Fa(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Ff(19)2025 1318 y
+Fd(stringprep_strerror)18 b Fa(:)f(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45
+b Ff(19)2025 1406 y Fd(stringprep_ucs4_nfkc_normalize)8
+b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34
+b Ff(15)2025 1494 y Fd(stringprep_ucs4_to_utf8)8 b Fa(:)18
+b(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)34 b Ff(14)2025 1583 y Fd(stringprep_unichar_to_utf8)17
+b Fa(:)i(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)44 b Ff(14)2025 1671 y Fd(stringprep_utf8_nfkc_normalize)8
+b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34
+b Ff(15)2025 1760 y Fd(stringprep_utf8_to_locale)25 b
+Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)46 b Ff(16)2025 1848 y Fd(stringprep_utf8_to_ucs4)8
+b Fa(:)18 b(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)34 b Ff(15)2025 1937 y Fd
+(stringprep_utf8_to_unichar)17 b Fa(:)i(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)44 b Ff(14)2025 2025
+y Fd(stringprep_xmpp_nodeprep)28 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Ff(21)2025
+2113 y Fd(stringprep_xmpp_resourceprep)13 b Fa(:)19 b(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)39
+b Ff(21)2025 2371 y Fw(T)2025 2490 y Fd(tld_check_4)24
+b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+48 b Ff(33)2025 2578 y Fd(tld_check_4t)21 b Fa(:)14 b(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Ff(31)2025
+2667 y Fd(tld_check_4tz)16 b Fa(:)g(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)43 b Ff(31)2025 2755 y Fd(tld_check_4z)21
+b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45
+b Ff(34)2025 2844 y Fd(tld_check_8z)21 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Ff(34)2025 2932
+y Fd(tld_check_lz)21 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)45 b Ff(34)2025 3020 y Fd(tld_default_table)6
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33 b Ff(33)2025
+3109 y Fd(tld_get_4)9 b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Ff(32)2025 3197
+y Fd(tld_get_4z)7 b Fa(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Ff(32)2025 3286 y Fd(tld_get_table)16
+b Fa(:)g(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43
+b Ff(33)2025 3374 y Fd(tld_get_z)9 b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b
+Ff(32)2025 3462 y Fd(tld_strerror)21 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Ff(35)p eop end
+%%Page: 96 101
+TeXDict begin 96 100 bop 150 -116 a Fx(Concept)31 b(Index)2927
+b(96)150 299 y Fu(Concept)52 b(Index)150 638 y Fw(A)150
+754 y Ff(AIX)14 b Fa(:)e(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41
+b Ff(4)150 841 y(ARM)11 b Fa(:)h(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)37
+b Ff(5)150 929 y(Auto)r(conf)26 b(tests)10 b Fa(:)j(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Ff(11)150 1162
+y Fw(C)150 1278 y Ff(command)26 b(line)20 b Fa(:)13 b(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Ff(52)150
+1365 y(Compiling)27 b(y)n(our)e(application)17 b Fa(:)e(:)e(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
+b Ff(11)150 1452 y(Con\014gure)26 b(tests)20 b Fa(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)45
+b Ff(11)150 1539 y(Con)n(tributing)23 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)50 b Ff(7)150
+1789 y Fw(D)150 1905 y Ff(de-allo)r(cation)25 b Fa(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49
+b Ff(12)150 1992 y(Debian)18 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)45
+b Ff(3)150 2079 y(Do)n(wnload)22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48
+b Ff(6)150 2312 y Fw(E)150 2428 y Ff(Examples)7 b Fa(:)14
+b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)33 b Ff(38)150 2678 y Fw(F)150 2794 y Ff(FDL,)26
+b(GNU)f(F)-6 b(ree)25 b(Do)r(cumen)n(tation)h(License)20
+b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)45 b Ff(68)150 2881
+y(free)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49 b
+Ff(12)150 2968 y(F)-6 b(reeBSD)22 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49
+b Ff(5)150 3201 y Fw(G)150 3317 y Ff(GPL,)26 b(GNU)f(General)i(Public)f
+(License)e Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49
+b Ff(83)150 3567 y Fw(H)150 3683 y Ff(Hac)n(king)18 b
+Fa(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)45 b Ff(7)150 3770 y(heap)25 b(memory)10
+b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36
+b Ff(12)150 3857 y(HP-UX)12 b Fa(:)f(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39
+b Ff(4)150 4090 y Fw(I)150 4206 y Fd(idn)8 b Fa(:)14
+b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Ff(52)150 4293 y(IDNA)24
+b(F)-6 b(unctions)12 b Fa(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)38 b Ff(25)150 4381 y(Installation)14 b Fa(:)g(:)g(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41
+b Ff(6)150 4468 y(in)n(v)n(oking)25 b Fd(idn)8 b Fa(:)14
+b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
+b Ff(52)150 4555 y(IRIX)18 b Fa(:)12 b(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)45
+b Ff(4)150 4788 y Fw(L)150 4904 y Ff(LGPL,)26 b(GNU)f(Lesser)i(General)
+g(Public)f(License)19 b Fa(:)13 b(:)h(:)f(:)45 b Ff(75)150
+4991 y(License,)27 b(GNU)e(GPL)13 b Fa(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)39 b Ff(83)150 5079 y(License,)27 b(GNU)e(LGPL)6
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Ff(75)2025
+638 y Fw(M)2025 759 y Ff(MacOS)26 b(X)7 b Fa(:)12 b(:)h(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34
+b Ff(5)2025 848 y(Mandrak)n(e)20 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)48
+b Ff(4)2025 938 y(Memory)26 b(handling)9 b Fa(:)k(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)35 b Ff(12)2025 1027 y(Microsoft)13
+b Fa(:)i(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)40 b Ff(5)2025 1117 y(mingw32)23 b
+Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)49 b Ff(5)2025 1206 y(Motorola)28
+b(Cold\014re)10 b Fa(:)j(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)37 b Ff(5)2025 1451 y Fw(N)2025 1572 y Ff(NetBSD)15
+b Fa(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)42 b Ff(5)2025 1817 y Fw(O)2025
+1938 y Ff(Op)r(enBSD)18 b Fa(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47 b Ff(5)2025
+2027 y(Op)r(enP)n(o)n(w)n(er)26 b(720)10 b Fa(:)k(:)g(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Ff(4)2025 2289
+y Fw(P)2025 2410 y Ff(PR29)26 b(F)-6 b(unctions)20 b
+Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)46
+b Ff(36)2025 2499 y(Pun)n(yco)r(de)25 b(F)-6 b(unctions)17
+b Fa(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44 b Ff(22)2025
+2761 y Fw(R)2025 2882 y Ff(RedHat)7 b Fa(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34
+b Ff(4)2025 2971 y(RedHat)25 b(Adv)l(anced)f(Serv)n(er)19
+b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b Ff(4)2025 3061 y(Rep)r(orting)26
+b(Bugs)10 b Fa(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)37 b Ff(7)2025 3323 y Fw(S)2025 3443 y Ff(Solaris)9
+b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Ff(4)2025 3533 y(Stringprep)25
+b(F)-6 b(unctions)20 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47
+b Ff(17)2025 3622 y(SuSE)13 b Fa(:)f(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40
+b Ff(4)2025 3712 y(SuSE)25 b(Lin)n(ux)c Fa(:)14 b(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)50 b
+Ff(4)2025 3957 y Fw(T)2025 4078 y Ff(TLD)25 b(F)-6 b(unctions)15
+b Fa(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41
+b Ff(31)2025 4167 y(T)-6 b(ru64)21 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48
+b Ff(4)2025 4412 y Fw(U)2025 4533 y Ff(uClib)r(c)10 b
+Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)37 b Ff(5)2025 4622 y(uClin)n(ux)21
+b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)49 b Ff(5)2025 4712 y(Utilit)n(y)25
+b(F)-6 b(unctions)20 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)46 b Ff(14)2025 4974 y Fw(W)2025 5094 y Ff(Windo)n(ws)9
+b Fa(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)35 b Ff(4,)27 b(5)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/doc/libidn.texi b/doc/libidn.texi
new file mode 100644 (file)
index 0000000..c7f4698
--- /dev/null
@@ -0,0 +1,2176 @@
+\input texinfo   @c -*- mode: texinfo; coding: us-ascii; -*-
+@c This file is part of GNU Libidn.
+@c See below for copyright and license.
+
+@setfilename libidn.info
+@documentencoding UTF-8
+@include version.texi
+@settitle GNU Libidn
+@finalout
+
+@syncodeindex pg cp
+
+@copying
+This manual is last updated @value{UPDATED} for version
+@value{VERSION} of GNU Libidn.
+
+Copyright @copyright{} 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
+@end quotation
+@end copying
+
+@dircategory Software libraries
+@direntry
+* libidn: (libidn).    Internationalized string processing library.
+@end direntry
+
+@dircategory Localization
+@direntry
+* idn: (libidn)Invoking idn.   Internationalized Domain Name (IDN) string conversion.
+@end direntry
+
+@dircategory Emacs
+@direntry
+* IDN Library: (libidn)Emacs API.      Emacs API for IDN functions.
+@end direntry
+
+@titlepage
+@title GNU Libidn
+@subtitle Internationalized string processing for the GNU system
+@subtitle for version @value{VERSION}, @value{UPDATED}
+@author Simon Josefsson
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@top GNU Libidn
+
+@insertcopying
+@end ifnottex
+
+@menu
+* Introduction::               How to use this manual.
+* Preparation::                        What you should do before using the library.
+* Utility Functions::          Unicode transformation utility functions.
+* Stringprep Functions::       Stringprep functions.
+* Punycode Functions::         Punycode functions.
+* IDNA Functions::             IDNA functions.
+* TLD Functions::              TLD functions.
+* PR29 Functions::             Detect strings non-idempotent under NFKC.
+* Examples::                    Demonstrate how to use the library.
+* Invoking idn::               Command line interface to the library.
+* Emacs API::                   Emacs Lisp API for Libidn.
+* Java API::                    Notes on the Java port of Libidn.
+* C# API::                      Notes on the C# port of Libidn.
+* Acknowledgements::            Whom to blame.
+* History::                     Rough outline of development history.
+
+Appendices
+
+* PR29 discussion::             Implementation aspects of the PR29 flaw.
+* On Label Separators::         Discussions of a flaw in the IDNA spec.
+* Copying Information::                License text covering the Libidn library.
+
+Indices
+
+* Function and Variable Index::
+* Concept Index::
+
+@end menu
+
+
+@node Introduction
+@chapter Introduction
+
+GNU Libidn is a fully documented implementation of the Stringprep,
+Punycode and IDNA specifications.  Libidn's purpose is to encode and
+decode internationalized domain names.  The native C, C# and Java
+libraries are available under the GNU Lesser General Public License
+version 2.1 or later (@pxref{GNU LGPL}).
+
+The library contains a generic Stringprep implementation.  Profiles
+for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included.
+Punycode and ASCII Compatible Encoding (ACE) via IDNA are supported.
+A mechanism to define Top-Level Domain (TLD) specific validation
+tables, and to compare strings against those tables, is included.
+Default tables for some TLDs are also included.
+
+The Stringprep API consists of two main functions, one for converting
+data from the system's native representation into UTF-8, and one
+function to perform the Stringprep processing.  Adding a new
+Stringprep profile for your application within the API is
+straightforward.  The Punycode API consists of one encoding function
+and one decoding function.  The IDNA API consists of the ToASCII and
+ToUnicode functions, as well as an high-level interface for converting
+entire domain names to and from the ACE encoded form.  The TLD API
+consists of one set of functions to extract the TLD name from a domain
+string, one set of functions to locate the proper TLD table to use
+based on the TLD name, and core functions to validate a string against
+a TLD table, and some utility wrappers to perform all the steps in one
+call.
+
+The library is used by, e.g., GNU SASL and Shishi to process user
+names and passwords.  Libidn can be built into GNU Libc to enable a
+new system-wide getaddrinfo flag for IDN processing.
+
+Libidn is developed for the GNU/Linux system, but runs on over 20 Unix
+platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.  The
+library is written in C and (parts of) the API is also accessible from
+C++, Emacs Lisp, Python and Java.  A native Java and C# port is
+included.
+
+Also included is a command line tool, several self tests, code
+examples, and more, all licensed under the GNU General Public License
+version 3.0 or later (@pxref{GNU GPL}).
+
+@menu
+* Getting Started::
+* Features::
+* Library Overview::
+* Supported Platforms::
+* Getting help::
+* Commercial Support::
+* Downloading and Installing::
+* Bug Reports::
+* Contributing::
+@end menu
+
+@node Getting Started
+@section Getting Started
+
+This manual documents the library programming interface.  All
+functions and data types provided by the library are explained.
+Included are also examples, and documentation for the command line
+tool @file{idn} that provide a quick interface to the library.  The
+Emacs Lisp bindings for the library is also discussed.
+
+The reader is assumed to possess basic familiarity with
+internationalization concepts and network programming in C or C++.
+
+This manual can be used in several ways.  If read from the beginning
+to the end, it gives a good introduction into the library and how it
+can be used in an application.  Forward references are included where
+necessary.  Later on, the manual can be used as a reference manual to
+get just the information needed about any particular interface of the
+library.  Experienced programmers might want to start looking at the
+examples at the end of the manual (@pxref{Examples}), and then only
+read up those parts of the interface which are unclear.
+
+@node Features
+@section Features
+
+This library might have a couple of advantages over other libraries
+doing a similar job.
+
+@table @asis
+@item It's Free Software
+Anybody can use, modify, and redistribute it under the terms of the
+GNU Lesser General Public License version 2.1 or later (@pxref{GNU
+LGPL}).
+
+@item It's thread-safe
+No global state is kept in the library.  All functions are reentrant.
+
+@item It's portable
+The code is intended to be written in pure ANSI C89.  It has been
+tested on many Unix like operating systems, and Windows.
+
+@item It's modularized
+The library is composed of several modules, and the only interaction
+between modules is through each modules' public API.  If you only need
+one piece of functionality, it is possible to take the files you need
+and incorporate them into your own project.
+
+@item It's not bloated
+The design of the library is based on the smallest API necessary to
+implement the basic functionality.  It has been carefully extended
+with a small number of high-level wrappers to make it comfortable to
+use the library.  However, it does not implement additional
+functionality just for the sake of completeness.
+
+@item It's documented
+Sadly, not all software comes with documentation these days.  This one
+does.
+
+@end table
+
+@node Library Overview
+@section Library Overview
+
+The following illustration show the components that make up Libidn,
+and how your application relates to the library.  In the illustration,
+various components are shown as boxes.  You see the generic StringPrep
+component, the various StringPrep profiles including Nameprep, the
+Punycode component, the IDNA component, and the TLD component.  The
+arrows indicate aggregation, e.g., IDNA uses Punycode and Nameprep,
+and in turn Nameprep uses the generic StringPrep interface.  The
+interfaces to all components are available for applications, no
+component within the library is hidden from the application.
+
+@image{libidn-components}
+
+@node Supported Platforms
+@section Supported Platforms
+
+Libidn has at some point in time been tested on the following
+platforms.  Online build reports for each platforms and Libidn version
+is available at @url{http://autobuild.josefsson.org/libidn/}.
+
+@enumerate
+
+@item Debian GNU/Linux 3.0 (Woody)
+@cindex Debian
+
+GCC 2.95.4 and GNU Make. This is the main development platform.
+@code{alphaev67-unknown-linux-gnu}, @code{alphaev6-unknown-linux-gnu},
+@code{arm-unknown-linux-gnu}, @code{armv4l-unknown-linux-gnu},
+@code{hppa-unknown-linux-gnu}, @code{hppa64-unknown-linux-gnu},
+@code{i686-pc-linux-gnu}, @code{ia64-unknown-linux-gnu},
+@code{m68k-unknown-linux-gnu}, @code{mips-unknown-linux-gnu},
+@code{mipsel-unknown-linux-gnu}, @code{powerpc-unknown-linux-gnu},
+@code{s390-ibm-linux-gnu}, @code{sparc-unknown-linux-gnu},
+@code{sparc64-unknown-linux-gnu}.
+
+@item Debian GNU/Linux 2.1
+@cindex Debian
+
+GCC 2.95.1 and GNU Make. @code{armv4l-unknown-linux-gnu}.
+
+@item Tru64 UNIX
+@cindex Tru64
+
+Tru64 UNIX C compiler and Tru64 Make. @code{alphaev67-dec-osf5.1},
+@code{alphaev68-dec-osf5.1}.
+
+@item SuSE Linux 7.1
+@cindex SuSE
+
+GCC 2.96 and GNU Make. @code{alphaev6-unknown-linux-gnu},
+@code{alphaev67-unknown-linux-gnu}.
+
+@item SuSE Linux 7.2a
+@cindex SuSE Linux
+
+GCC 3.0 and GNU Make. @code{ia64-unknown-linux-gnu}.
+
+@item SuSE Linux
+@cindex SuSE Linux
+
+GCC 3.2.2 and GNU Make.  @code{x86_64-unknown-linux-gnu} (AMD64
+Opteron ``Melody'').
+
+@item SuSE Enterprise Server 9 on IBM OpenPower 720 
+@cindex SuSE Linux
+@cindex OpenPower 720
+
+GCC 3.3.3 and GNU Make.  @code{powerpc64-unknown-linux-gnu}.
+
+@item RedHat Linux 7.2
+@cindex RedHat
+
+GCC 2.96 and GNU Make. @code{alphaev6-unknown-linux-gnu},
+@code{alphaev67-unknown-linux-gnu}, @code{ia64-unknown-linux-gnu}.
+
+@item RedHat Linux 8.0
+@cindex RedHat
+
+GCC 3.2 and GNU Make. @code{i686-pc-linux-gnu}.
+
+@item RedHat Advanced Server 2.1
+@cindex RedHat Advanced Server
+
+GCC 2.96 and GNU Make. @code{i686-pc-linux-gnu}.
+
+@item Slackware Linux 8.0.01
+@cindex RedHat
+
+GCC 2.95.3 and GNU Make. @code{i686-pc-linux-gnu}.
+
+@item Mandrake Linux 9.0
+@cindex Mandrake
+
+GCC 3.2 and GNU Make. @code{i686-pc-linux-gnu}.
+
+@item IRIX 6.5
+@cindex IRIX
+
+MIPS C compiler, IRIX Make. @code{mips-sgi-irix6.5}.
+
+@item AIX 4.3.2
+@cindex AIX
+
+IBM C for AIX compiler, AIX Make.  @code{rs6000-ibm-aix4.3.2.0}.
+
+@item Microsoft Windows 2000 (Cygwin)
+@cindex Windows
+
+GCC 3.2, GNU make. @code{i686-pc-cygwin}.
+
+@item HP-UX 11
+@cindex HP-UX
+
+HP-UX C compiler and HP Make. @code{ia64-hp-hpux11.22},
+@code{hppa2.0w-hp-hpux11.11}.
+
+@item SUN Solaris 2.7
+@cindex Solaris
+
+GCC 3.0.4 and GNU Make. @code{sparc-sun-solaris2.7}.
+
+@item SUN Solaris 2.8
+@cindex Solaris
+
+Sun WorkShop Compiler C 6.0 and SUN Make. @code{sparc-sun-solaris2.8}.
+
+@item SUN Solaris 2.9
+@cindex Solaris
+
+Sun Forte Developer 7 C compiler and GNU
+Make. @code{sparc-sun-solaris2.9}.
+
+@item NetBSD 1.6
+@cindex NetBSD
+
+GCC 2.95.3 and GNU Make. @code{alpha-unknown-netbsd1.6},
+@code{i386-unknown-netbsdelf1.6}.
+
+@item OpenBSD 3.1 and 3.2
+@cindex OpenBSD
+
+GCC 2.95.3 and GNU Make. @code{alpha-unknown-openbsd3.1},
+@code{i386-unknown-openbsd3.1}.
+
+@item FreeBSD 4.7 and 4.8
+@cindex FreeBSD
+
+GCC 2.95.4 and GNU Make. @code{alpha-unknown-freebsd4.7},
+@code{alpha-unknown-freebsd4.8}, @code{i386-unknown-freebsd4.7},
+@code{i386-unknown-freebsd4.8}.
+
+@item MacOS X 10.2 Server Edition
+@cindex MacOS X
+
+GCC 3.1 and GNU Make. @code{powerpc-apple-darwin6.5}.
+
+@item MacOS X 10.4 ``Tiger'' with Xcode 2.0
+@cindex MacOS X
+
+GCC 4.0 and GNU Make. @code{powerpc-apple-darwin8.0}.
+
+@item Cross compiled to uClinux/uClibc on Motorola Coldfire
+@cindex Motorola Coldfire
+@cindex uClinux
+@cindex uClibc
+
+GCC 3.4 and GNU Make @code{m68k-uclinux-elf}.
+
+@item Cross compiled to ARM using Glibc
+@cindex ARM
+
+GCC 2.95 and GNU Make @code{arm-linux}.
+
+@item Cross compiled to Mingw32.
+@cindex Windows
+@cindex Microsoft
+@cindex mingw32
+
+GCC 3.4.4 and GNU Make @code{i586-mingw32msvc}.
+
+@end enumerate
+
+If you use Libidn on, or port Libidn to, a new platform please report
+it to the author.
+
+@node Getting help
+@section Getting help
+
+A mailing list where users of Libidn may help each other exists, and
+you can reach it by sending e-mail to @email{help-libidn@@gnu.org}.
+Archives of the mailing list discussions, and an interface to manage
+subscriptions, is available through the World Wide Web at
+@url{http://lists.gnu.org/mailman/listinfo/help-libidn}.
+
+@node Commercial Support
+@section Commercial Support
+
+Commercial support is available for users of GNU Libidn.  The kind of
+support that can be purchased may include:
+
+@itemize
+
+@item Implement new features.
+Such as country code specific profiling to support a restricted subset
+of Unicode.
+
+@item Port Libidn to new platforms.
+This could include porting Libidn to an embedded platforms that may
+need memory or size optimization.
+
+@item Integrating IDN support in your existing project.
+
+@item System design of components related to IDN.
+
+@end itemize
+
+If you are interested, please write to:
+
+@verbatim
+Simon Josefsson Datakonsult
+Hagagatan 24
+113 47 Stockholm
+Sweden
+
+E-mail: simon@josefsson.org
+@end verbatim
+
+If your company provide support related to GNU Libidn and would like
+to be mentioned here, contact the author (@pxref{Bug Reports}).
+
+@node Downloading and Installing
+@section Downloading and Installing
+@cindex Installation
+@cindex Download
+
+The package can be downloaded from several places, including:
+
+@url{ftp://alpha.gnu.org/pub/gnu/libidn/}
+
+The latest version is stored in a file, e.g.,
+@samp{libidn-@value{VERSION}.tar.gz} where the @samp{@value{VERSION}}
+value is the highest version number in the directory.
+
+The package is then extracted, configured and built like many other
+packages that use Autoconf.  For detailed information on configuring
+and building it, refer to the @file{INSTALL} file that is part of the
+distribution archive.
+
+Here is an example terminal session that download, configure, build
+and install the package.  You will need a few basic tools, such as
+@samp{sh}, @samp{make} and @samp{cc}.
+
+@example
+$ wget -q ftp://alpha.gnu.org/pub/gnu/libidn/libidn-@value{VERSION}.tar.gz
+$ tar xfz libidn-@value{VERSION}.tar.gz
+$ cd libidn-@value{VERSION}/
+$ ./configure
+...
+$ make
+...
+$ make install
+...
+@end example
+
+After that Libidn should be properly installed and ready for use.
+
+A few @code{configure} options may be relevant, summarized in the
+table.
+
+@table @code
+
+@item --enable-java
+Build the Java port into a *.JAR file.  @xref{Java API}, for more
+information.
+
+@item --disable-tld
+Disable the TLD module.  This would typically only be useful if you
+are building on a memory restricted platforms.  @xref{TLD Functions},
+for more information.
+
+@item --enable-csharp[=IMPL]
+Build the @code{C#} port into a @code{*.DLL} file.  @xref{C# API}, for
+more information.  Here, @code{IMPL} is @code{pnet} or @code{mono},
+indicating whether the PNET @command{cscc} compiler or the Mono
+@command{mcs} compiler should be used, respectively.
+
+@end table
+
+For the complete list, refer to the output from @code{configure
+--help}.
+
+@menu
+* Installing under Windows::    Windows specific build instructions.
+@end menu
+
+@node Installing under Windows
+@subsection Installing under Windows
+
+There are two ways to build Libidn on Windows: via MinGW or via Visual
+Studio.
+
+With MinGW, you can build a Libidn DLL and use it from other
+applications.  After installing MinGW (@url{http://mingw.org/}) follow
+the generic installation instructions (@pxref{Downloading and
+Installing}).  The DLL is installed by default.
+
+For information on how to use the DLL in other applications, see:
+@url{http://www.mingw.org/mingwfaq.shtml#faq-msvcdll}.
+
+You can build Libidn as a native Visual Studio C++ project.  This
+allows you to build the code for other platforms that VS supports,
+such as Windows Mobile.  You need Visual Studio 2005 or later.
+
+First download and unpack the archive as described in the generic
+installation instructions (@pxref{Downloading and Installing}).  Don't
+run @code{./configure}.  Instead, start Visual Studio and open the
+project file @file{win32/libidn.sln} inside the Libidn directory.  You
+should be able to build the project using Build Project.
+
+Output libraries will be written into the @code{win32/lib} (or
+@code{win32/lib/debug} for Debug versions) folder.
+
+When working with Windows you may want to look into the special memory
+handling functions that may be needed (@pxref{Memory handling under
+Windows}).
+
+@node Bug Reports
+@section Bug Reports
+@cindex Reporting Bugs
+
+If you think you have found a bug in Libidn, please investigate it and
+report it.
+
+@itemize @bullet
+
+@item Please make sure that the bug is really in Libidn, and
+preferably also check that it hasn't already been fixed in the latest
+version.
+
+@item You have to send us a test case that makes it possible for us to
+reproduce the bug.
+
+@item You also have to explain what is wrong; if you get a crash, or
+if the results printed are not good and in that case, in what way.
+Make sure that the bug report includes all information you would need
+to fix this kind of bug for someone else.
+
+@end itemize
+
+Please make an effort to produce a self-contained report, with
+something definite that can be tested or debugged.  Vague queries or
+piecemeal messages are difficult to act on and don't help the
+development effort.
+
+If your bug report is good, we will do our best to help you to get a
+corrected version of the software; if the bug report is poor, we won't
+do anything about it (apart from asking you to send better bug
+reports).
+
+If you think something in this manual is unclear, or downright
+incorrect, or if the language needs to be improved, please also send a
+note.
+
+Send your bug report to:
+
+@center @samp{bug-libidn@@gnu.org}
+
+
+@node Contributing
+@section Contributing
+@cindex Contributing
+@cindex Hacking
+
+If you want to submit a patch for inclusion -- from solve a typo you
+discovered, up to adding support for a new feature -- you should
+submit it as a bug report (@pxref{Bug Reports}).  There are some
+things that you can do to increase the chances for it to be included
+in the official package.
+
+Unless your patch is very small (say, under 10 lines) we require that
+you assign the copyright of your work to the Free Software Foundation.
+This is to protect the freedom of the project.  If you have not
+already signed papers, we will send you the necessary information when
+you submit your contribution.
+
+For contributions that doesn't consist of actual programming code, the
+only guidelines are common sense.  Use it.
+
+For code contributions, a number of style guides will help you:
+
+@itemize @bullet
+
+@item Coding Style.
+Follow the GNU Standards document (@pxref{top, GNU Coding Standards,,
+standards}).
+
+If you normally code using another coding standard, there is no
+problem, but you should use @samp{indent} to reformat the code
+(@pxref{top, GNU Indent,, indent}) before submitting your work.
+
+@item Use the unified diff format @samp{diff -u}.
+
+@item Return errors.
+No reason whatsoever should abort the execution of the library.  Even
+memory allocation errors, e.g. when malloc return NULL, should work
+although result in an error code.
+
+@item Design with thread safety in mind.
+Don't use global variables and the like.
+
+@item Avoid using the C math library.
+It causes problems for embedded implementations, and in most
+situations it is very easy to avoid using it.
+
+@item Document your functions.
+Use comments before each function headers, that, if properly
+formatted, are extracted into GTK-DOC web pages.  Don't forget to
+update the Texinfo manual as well.
+
+@item Supply a ChangeLog and NEWS entries, where appropriate.
+
+@end itemize
+
+@c **********************************************************
+@c *******************  Preparation  ************************
+@c **********************************************************
+@node Preparation
+@chapter Preparation
+
+To use `Libidn', you have to perform some changes to your sources and
+the build system.  The necessary changes are small and explained in
+the following sections.  At the end of this chapter, it is described
+how the library is initialized, and how the requirements of the
+library are verified.
+
+A faster way to find out how to adapt your application for use with
+`Libidn' may be to look at the examples at the end of this manual
+(@pxref{Examples}).
+
+@menu
+* Header::
+* Initialization::
+* Version Check::
+* Building the source::
+* Autoconf tests::
+* Memory handling under Windows::
+@end menu
+
+@node Header
+@section Header
+
+The library contains a few independent parts, and each part export the
+interfaces (data types and functions) in a header file.  You must
+include the appropriate header files in all programs using the
+library, either directly or through some other header file, like this:
+
+@example
+#include <stringprep.h>
+@end example
+
+The header files and the functions they define are categorized as
+follows:
+
+@table @asis
+@item stringprep.h
+
+The low-level stringprep API entry point.  For IDN applications, this
+is usually invoked via IDNA. Some applications, specifically non-IDN
+ones, may want to prepare strings directly though, and should include
+this header file.
+
+The name space of the stringprep part of Libidn is @code{stringprep*}
+for function names, @code{Stringprep*} for data types and
+@code{STRINGPREP_*} for other symbols.  In addition,
+@code{_stringprep*} is reserved for internal use and should never be
+used by applications.
+
+@item punycode.h
+
+The entry point to Punycode encoding and decoding functions.  Normally
+punycode is used via the idna.h interface, but some application may
+want to perform raw punycode operations.
+
+The name space of the punycode part of Libidn is @code{punycode_*} for
+function names, @code{Punycode*} for data types and @code{PUNYCODE_*}
+for other symbols.  In addition, @code{_punycode*} is reserved for
+internal use and should never be used by applications.
+@item idna.h
+
+The entry point to the IDNA functions.  This is the normal entry point
+for applications that need IDN functionality.
+
+The name space of the IDNA part of Libidn is @code{idna_*} for
+function names, @code{Idna*} for data types and @code{IDNA_*} for
+other symbols.  In addition, @code{_idna*} is reserved for internal
+use and should never be used by applications.
+
+@item tld.h
+
+The entry point to the TLD functions.  Normal applications are not
+expected to need this functionality, but it is present for
+applications that are used by TLDs to validate customer input.
+
+The name space of the TLD part of Libidn is @code{tld_*} for function
+names, @code{Tld_*} for data types and @code{TLD_*} for other symbols.
+In addition, @code{_tld*} is reserved for internal use and should
+never be used by applications.
+
+@item pr29.h
+
+The entry point to the PR29 functions.  These functions are used to
+detect ``problem sequences'' (@pxref{PR29 Functions}), mostly for use
+in security critical applications.
+
+The name space of the PR29 part of Libidn is @code{pr29_*} for
+function names, @code{Pr29_*} for data types and @code{PR29_*} for
+other symbols.  In addition, @code{_pr29*} is reserved for internal
+use and should never be used by applications.
+
+@item idn-free.h
+
+The entry point to the Windows memory de-allocation function
+(@pxref{Memory handling under Windows}).  It contains only one
+function @code{idn_free}.
+
+@end table
+
+All header files defined and use the symbol @code{IDNAPI} to decorate
+the API functions.
+
+@node Initialization
+@section Initialization
+
+Libidn is stateless and does not need any initialization.
+
+@node Version Check
+@section Version Check
+
+It is often desirable to check that the version of `Libidn' used is
+indeed one which fits all requirements.  Even with binary
+compatibility new features may have been introduced but due to problem
+with the dynamic linker an old version is actually used.  So you may
+want to check that the version is okay right after program startup.
+
+@include texi/stringprep_check_version.texi
+
+The normal way to use the function is to put something similar to the
+following first in your @code{main}:
+
+@example
+  if (!stringprep_check_version (STRINGPREP_VERSION))
+    @{
+      printf ("stringprep_check_version() failed:\n"
+              "Header file incompatible with shared library.\n");
+      exit(1);
+    @}
+@end example
+
+@node Building the source
+@section Building the source
+@cindex Compiling your application
+
+If you want to compile a source file including e.g. the `idna.h' header
+file, you must make sure that the compiler can find it in the
+directory hierarchy.  This is accomplished by adding the path to the
+directory in which the header file is located to the compilers include
+file search path (via the @option{-I} option).
+
+However, the path to the include file is determined at the time the
+source is configured.  To solve this problem, `Libidn' uses the
+external package @command{pkg-config} that knows the path to the
+include file and other configuration options.  The options that need
+to be added to the compiler invocation at compile time are output by
+the @option{--cflags} option to @command{pkg-config libidn}.  The
+following example shows how it can be used at the command line:
+
+@example
+gcc -c foo.c `pkg-config libidn --cflags`
+@end example
+
+Adding the output of @samp{pkg-config libidn --cflags} to the
+compilers command line will ensure that the compiler can find e.g. the
+idna.h header file.
+
+A similar problem occurs when linking the program with the library.
+Again, the compiler has to find the library files.  For this to work,
+the path to the library files has to be added to the library search
+path (via the @option{-L} option).  For this, the option
+@option{--libs} to @command{pkg-config libidn} can be used.  For
+convenience, this option also outputs all other options that are
+required to link the program with the `libidn' libarary.  The example
+shows how to link @file{foo.o} with the `libidn' library to a program
+@command{foo}.
+
+@example
+gcc -o foo foo.o `pkg-config libidn --libs`
+@end example
+
+Of course you can also combine both examples to a single command by
+specifying both options to @command{pkg-config}:
+
+@example
+gcc -o foo foo.c `pkg-config libidn --cflags --libs`
+@end example
+
+@node Autoconf tests
+@section Autoconf tests
+@cindex Autoconf tests
+@cindex Configure tests
+
+If your project uses Autoconf (@pxref{top, GNU Autoconf,, autoconf})
+to check for installed libraries, you might find the following snippet
+illustrative.  It add a new @file{configure} parameter
+@code{--with-libidn}, and check for @file{idna.h} and @samp{-lidn}
+(possibly below the directory specified as the optional argument to
+@code{--with-libidn}), and define the @acronym{CPP} symbol
+@code{LIBIDN} if the library is found.  The default behaviour is to
+search for the library and enable the functionality (that is, define
+the symbol) when the library is found, but if you wish to make the
+default behaviour of your package be that Libidn is not used (even if
+it is installed on the system), change @samp{libidn=yes} to
+@samp{libidn=no} on the third line.
+
+@example
+AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
+                                [Support IDN (needs GNU Libidn)]),
+  libidn=$withval, libidn=yes)
+if test "$libidn" != "no"; then
+  if test "$libidn" != "yes"; then
+    LDFLAGS="$@{LDFLAGS@} -L$libidn/lib"
+    CPPFLAGS="$@{CPPFLAGS@} -I$libidn/include"
+  fi
+  AC_CHECK_HEADER(idna.h,
+    AC_CHECK_LIB(idn, stringprep_check_version,
+      [libidn=yes LIBS="$@{LIBS@} -lidn"], libidn=no),
+    libidn=no)
+fi
+if test "$libidn" != "no" ; then
+  AC_DEFINE(LIBIDN, 1, [Define to 1 if you want IDN support.])
+else
+  AC_MSG_WARN([Libidn not found])
+fi
+AC_MSG_CHECKING([if Libidn should be used])
+AC_MSG_RESULT($libidn)
+@end example
+
+If you require that your users have installed @code{pkg-config} (which
+I cannot recommend generally), the above can be done more easily as
+follows.
+
+@example
+AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]],
+                                [Support IDN (needs GNU Libidn)]),
+  libidn=$withval, libidn=yes)
+if test "$libidn" != "no" ; then
+  PKG_CHECK_MODULES(LIBIDN, libidn >= 0.0.0, [libidn=yes], [libidn=no])
+  if test "$libidn" != "yes" ; then
+    libidn=no
+    AC_MSG_WARN([Libidn not found])
+  else
+    libidn=yes
+    AC_DEFINE(LIBIDN, 1, [Define to 1 if you want Libidn.])
+  fi
+fi
+AC_MSG_CHECKING([if Libidn should be used])
+AC_MSG_RESULT($libidn)
+@end example
+
+@node Memory handling under Windows
+@section Memory handling under Windows
+@cindex free
+@cindex Memory handling
+@cindex de-allocation
+@cindex heap memory
+
+Several functions in the library allocates memory.  The memory is
+expected to be de-allocated using the @code{free} function.  Under
+Windows, it is sometimes necessary to de-allocate memory in the same
+module that allocated a memory region.  The reason is that different
+modules use separate heap memory regions.  To solve this problem we
+provide a function to de-allocate memory inside the library.
+
+Note that we do not recommend using this interface generally if you do
+not care about Windows portability.
+
+@section Header file @code{idn-free.h}
+
+To use the function explained in this chapter, you need to include the
+file @file{idn-free.h} using:
+
+@example
+#include <idn-free.h>
+@end example
+
+@section Memory de-allocation function
+
+@include texi/idn_free.texi
+
+@c **********************************************************
+@c ********************  Utility Functions ******************
+@c **********************************************************
+@node Utility Functions
+@chapter Utility Functions
+@cindex Utility Functions
+
+The rest of this library makes extensive use of Unicode characters.
+In order to interface this library with the outside world, your
+application may need to make various Unicode transformations.
+
+@section Header file @code{stringprep.h}
+
+To use the functions explained in this chapter, you need to include
+the file @file{stringprep.h} using:
+
+@example
+#include <stringprep.h>
+@end example
+
+@section Unicode Encoding Transformation
+
+@include texi/stringprep_unichar_to_utf8.texi
+@include texi/stringprep_utf8_to_unichar.texi
+@include texi/stringprep_ucs4_to_utf8.texi
+@include texi/stringprep_utf8_to_ucs4.texi
+
+@section Unicode Normalization
+
+@include texi/stringprep_ucs4_nfkc_normalize.texi
+@include texi/stringprep_utf8_nfkc_normalize.texi
+
+@section Character Set Conversion
+
+@include texi/stringprep_locale_charset.texi
+@include texi/stringprep_convert.texi
+@include texi/stringprep_locale_to_utf8.texi
+@include texi/stringprep_utf8_to_locale.texi
+
+
+@c **********************************************************
+@c ******************  Stringprep Functions *****************
+@c **********************************************************
+@node Stringprep Functions
+@chapter Stringprep Functions
+@cindex Stringprep Functions
+
+Stringprep describes a framework for preparing Unicode text strings in
+order to increase the likelihood that string input and string
+comparison work in ways that make sense for typical users throughout
+the world. The stringprep protocol is useful for protocol identifier
+values, company and personal names, internationalized domain names,
+and other text strings.
+
+@section Header file @code{stringprep.h}
+
+To use the functions explained in this chapter, you need to include
+the file @file{stringprep.h} using:
+
+@example
+#include <stringprep.h>
+@end example
+
+@section Defining A Stringprep Profile
+
+Further types and structures are defined for applications that want to
+specify their own stringprep profile.  As these are fairly obscure,
+and by necessity tied to the implementation, we do not document them
+here.  Look into the @file{stringprep.h} header file, and the
+@file{profiles.c} source code for the details.
+
+@section Control Flags
+
+@deftypevr {Stringprep flags} {Stringprep_profile_flags} {STRINGPREP_NO_NFKC}
+Disable the NFKC normalization, as well as selecting the non-NFKC case
+folding tables.  Usually the profile specifies BIDI and NFKC settings,
+and applications should not override it unless in special situations.
+@end deftypevr
+
+@deftypevr {Stringprep flags} {Stringprep_profile_flags} {STRINGPREP_NO_BIDI}
+Disable the BIDI step.  Usually the profile specifies BIDI and NFKC
+settings, and applications should not override it unless in special
+situations.
+@end deftypevr
+
+@deftypevr {Stringprep flags} {Stringprep_profile_flags} {STRINGPREP_NO_UNASSIGNED}
+Make the library return with an error if string contains unassigned
+characters according to profile.
+@end deftypevr
+
+@section Core Functions
+
+@include texi/stringprep_4i.texi
+@include texi/stringprep_4zi.texi
+@include texi/stringprep.texi
+@include texi/stringprep_profile.texi
+
+@section Error Handling
+
+@include texi/stringprep_strerror.texi
+
+@section Stringprep Profile Macros
+
+@deftypefun {int} stringprep_nameprep_no_unassigned (char * @var{in}, int @var{maxlen})
+
+@var{in}: input/ouput array with string to prepare.
+
+@var{maxlen}: maximum length of input/output array.
+
+Prepare the input UTF-8 string according to the nameprep profile.  The
+AllowUnassigned flag is false, use @code{stringprep_nameprep} for
+true AllowUnassigned.  Returns 0 iff successful, or an error code.
+@end deftypefun
+
+@deftypefun {int} stringprep_iscsi (char * @var{in}, int @var{maxlen})
+
+@var{in}: input/ouput array with string to prepare.
+
+@var{maxlen}: maximum length of input/output array.
+
+Prepare the input UTF-8 string according to the draft iSCSI stringprep
+profile.  Returns 0 iff successful, or an error code.
+@end deftypefun
+
+@deftypefun {int} stringprep_plain (char * @var{in}, int @var{maxlen})
+
+@var{in}: input/ouput array with string to prepare.
+
+@var{maxlen}: maximum length of input/output array.
+
+Prepare the input UTF-8 string according to the draft SASL ANONYMOUS
+profile.  Returns 0 iff successful, or an error code.
+@end deftypefun
+
+@deftypefun {int} stringprep_xmpp_nodeprep (char * @var{in}, int @var{maxlen})
+
+@var{in}: input/ouput array with string to prepare.
+
+@var{maxlen}: maximum length of input/output array.
+
+Prepare the input UTF-8 string according to the draft XMPP node
+identifier profile.  Returns 0 iff successful, or an error code.
+@end deftypefun
+
+@deftypefun {int} stringprep_xmpp_resourceprep (char * @var{in}, int @var{maxlen})
+
+@var{in}: input/ouput array with string to prepare.
+
+@var{maxlen}: maximum length of input/output array.
+
+Prepare the input UTF-8 string according to the draft XMPP resource
+identifier profile.  Returns 0 iff successful, or an error code.
+@end deftypefun
+
+@c **********************************************************
+@c *******************  Punycode Functions ******************
+@c **********************************************************
+@node Punycode Functions
+@chapter Punycode Functions
+@cindex Punycode Functions
+
+Punycode is a simple and efficient transfer encoding syntax designed
+for use with Internationalized Domain Names in Applications. It
+uniquely and reversibly transforms a Unicode string into an ASCII
+string. ASCII characters in the Unicode string are represented
+literally, and non-ASCII characters are represented by ASCII
+characters that are allowed in host name labels (letters, digits, and
+hyphens). A general algorithm called Bootstring allows a string of
+basic code points to uniquely represent any string of code points
+drawn from a larger set. Punycode is an instance of Bootstring that
+uses particular parameter values, appropriate for IDNA.
+
+@section Header file @code{punycode.h}
+
+To use the functions explained in this chapter, you need to include
+the file @file{punycode.h} using:
+
+@example
+#include <punycode.h>
+@end example
+
+@section Unicode Code Point Data Type
+
+The punycode function uses a special type to denote Unicode code
+points.  It is guaranteed to always be a 32 bit unsigned integer.
+
+@deftypevr {Punycode Unicode code point} uint32_t punycode_uint
+A unsigned integer that hold Unicode code points.
+@end deftypevr
+
+@section Core Functions
+
+Note that the current implementation will fail if the
+@code{input_length} exceed 4294967295 (the size of
+@code{punycode_uint}).  This restriction may be removed in the future.
+Meanwhile applications are encouraged to not depend on this problem,
+and use @code{sizeof} to initialize @code{input_length} and
+@code{output_length}.
+
+The functions provided are the following two entry points:
+
+@include texi/punycode_encode.texi
+@include texi/punycode_decode.texi
+
+@section Error Handling
+
+@include texi/punycode_strerror.texi
+
+@c **********************************************************
+@c ********************* IDNA Functions *********************
+@c **********************************************************
+@node IDNA Functions
+@chapter IDNA Functions
+@cindex IDNA Functions
+
+Until now, there has been no standard method for domain names to use
+characters outside the ASCII repertoire. The IDNA document defines
+internationalized domain names (IDNs) and a mechanism called IDNA for
+handling them in a standard fashion. IDNs use characters drawn from a
+large repertoire (Unicode), but IDNA allows the non-ASCII characters
+to be represented using only the ASCII characters already allowed in
+so-called host names today. This backward-compatible representation is
+required in existing protocols like DNS, so that IDNs can be
+introduced with no changes to the existing infrastructure. IDNA is
+only meant for processing domain names, not free text.
+
+@section Header file @code{idna.h}
+
+To use the functions explained in this chapter, you need to include
+the file @file{idna.h} using:
+
+@example
+#include <idna.h>
+@end example
+
+@section Control Flags
+
+The IDNA @code{flags} parameter can take on the following values, or a
+bit-wise inclusive or of any subset of the parameters:
+
+@deftypevr {Return code} {Idna_flags} IDNA_ALLOW_UNASSIGNED
+Allow unassigned Unicode code points.
+@end deftypevr
+
+@deftypevr {Return code} {Idna_flags} IDNA_USE_STD3_ASCII_RULES
+Check output to make sure it is a STD3 conforming host name.
+@end deftypevr
+
+@section Prefix String
+
+@deftypevr {Macro} {#define} IDNA_ACE_PREFIX
+String with the official IDNA prefix, @code{xn--}.
+@end deftypevr
+
+@section Core Functions
+
+The idea behind the IDNA function names are as follows: the
+@code{idna_to_ascii_4i} and @code{idna_to_unicode_44i} functions are
+the core IDNA primitives.  The @code{4} indicate that the function
+takes UCS-4 strings (i.e., Unicode code points encoded in a 32-bit
+unsigned integer type) of the specified length.  The @code{i} indicate
+that the data is written ``inline'' into the buffer.  This means the
+caller is responsible for allocating (and deallocating) the string,
+and providing the library with the allocated length of the string.
+The output length is written in the output length variable.  The
+remaining functions all contain the @code{z} indicator, which means
+the strings are zero terminated.  All output strings are allocated by
+the library, and must be deallocated by the caller.  The @code{4}
+indicator again means that the string is UCS-4, the @code{8} means the
+strings are UTF-8 and the @code{l} indicator means the strings are
+encoded in the encoding used by the current locale.
+
+The functions provided are the following entry points:
+
+@include texi/idna_to_ascii_4i.texi
+@include texi/idna_to_unicode_44i.texi
+
+@section Simplified ToASCII Interface
+
+@include texi/idna_to_ascii_4z.texi
+@include texi/idna_to_ascii_8z.texi
+@include texi/idna_to_ascii_lz.texi
+
+@section Simplified ToUnicode Interface
+
+@include texi/idna_to_unicode_4z4z.texi
+@include texi/idna_to_unicode_8z4z.texi
+@include texi/idna_to_unicode_8z8z.texi
+@include texi/idna_to_unicode_8zlz.texi
+@include texi/idna_to_unicode_lzlz.texi
+
+@section Error Handling
+
+@include texi/idna_strerror.texi
+
+@c **********************************************************
+@c ********************** TLD Functions *********************
+@c **********************************************************
+@node TLD Functions
+@chapter TLD Functions
+@cindex TLD Functions
+
+Organizations that manage some Top Level Domains (@acronym{TLD}s) have
+published tables with characters they accept within the domain.  The
+reason may be to reduce complexity that come from using the full
+Unicode range, and to protect themselves from future (backwards
+incompatible) changes in the IDN or Unicode specifications.  Libidn
+implement an infrastructure for defining and checking strings against
+such tables.  Libidn also ship some tables from @acronym{TLD}s that we
+have managed to get permission to use them from.  Because these tables
+are even less static than Unicode or StringPrep tables, it is likely
+that they will be updated from time to time (even in backwards
+incompatibe ways).  The Libidn interface provide a ``version'' field
+for each @acronym{TLD} table, which can be compared for equality to
+guarantee the same operation over time.
+
+From a design point of view, you can regard the @acronym{TLD} tables
+for IDN as the ``localization'' step that come after the
+``internationalization'' step provided by the IETF standards.
+
+The TLD functionality rely on up-to-date tables.  The latest version
+of Libidn aim to provide these, but tables with unclear copying
+conditions, or generally experimental tables, are not included.  Some
+such tables can be found at @url{http://tldchk.berlios.de}.
+
+@section Header file @code{tld.h}
+
+To use the functions explained in this chapter, you need to include
+the file @file{tld.h} using:
+
+@example
+#include <tld.h>
+@end example
+
+@c @section Data Types
+@c
+@c @deftp {Data type} {Tld_table_element} @var{start} @var{end}
+@c @example
+@c /* Interval of valid code points in the TLD. */
+@c struct Tld_table_element
+@c @{
+@c   uint32_t start;           /* Start of range. */
+@c   uint32_t end;             /* End of range, end == start if single. */
+@c @};
+@c typedef struct Tld_table_element Tld_table_element;
+@c @end example
+@c This @code{struct} contain the @var{start} and @var{end} positions
+@c (inclusive) of a range.  If the range is a single (i.e., starts and
+@c ends in the same character), then set @var{end} to the same as
+@c @var{start}.  This structure is normally used as an array.
+@c @end deftp
+@c 
+@c @deftp {Data type} {Tld_table} @var{name} @var{version} @var{nvalid} @var{valid}
+@c @example
+@c /* List valid code points in a TLD. */
+@c struct Tld_table
+@c @{
+@c   char *name;                       /* TLD name, e.g., "no". */
+@c   char *version;            /* Version string from TLD file. */
+@c   size_t nvalid;            /* Number of entries in data. */
+@c   Tld_table_element *valid[];       /* Sorted array of valid code points. */
+@c @};
+@c typedef struct Tld_table Tld_table;
+@c @end example
+@c In this @code{struct}, the @var{name} field is a string (@samp{char*})
+@c indicating the TLD name (e.g., ``no'').  The @var{version} field is a
+@c string (@samp{char*}) containing a free form humanly readable string
+@c that can be used for equality comparison to compare different versions
+@c of the table.  The @var{nvalid} field indicate how many entries there
+@c are in @var{valid}, which brings us finally to @var{valid} that
+@c contain the actual code points that are valid for this TLD (see
+@c @code{Tld_table_element} above).
+@c @end deftp
+
+@section Core Functions
+
+@include texi/tld_check_4t.texi
+@include texi/tld_check_4tz.texi
+
+@section Utility Functions
+
+@include texi/tld_get_4.texi
+@include texi/tld_get_4z.texi
+@include texi/tld_get_z.texi
+@include texi/tld_get_table.texi
+@include texi/tld_default_table.texi
+
+@section High-Level Wrapper Functions
+
+@include texi/tld_check_4.texi
+@include texi/tld_check_4z.texi
+@include texi/tld_check_8z.texi
+@include texi/tld_check_lz.texi
+
+@section Error Handling
+
+@include texi/tld_strerror.texi
+
+@c **********************************************************
+@c ********************** PR29 Functions ********************
+@c **********************************************************
+@node PR29 Functions
+@chapter PR29 Functions
+@cindex PR29 Functions
+
+A deficiency in the specification of Unicode Normalization Forms has
+been found.  The consequence is that some strings can be normalized
+into different strings by different implementations.  In other words,
+two different implementations may return different output for the same
+input (because the interpretation of the specification is
+ambiguous). Further, an implementation invoked again on the one of the
+output strings may return a different string (because one of the
+interpretation of the ambiguous specification make normalization
+non-idempotent).  Fortunately, only a select few character sequence
+exhibit this problem, and none of them are expected to occur in
+natural languages (due to different linguistic uses of the involved
+characters).
+
+A full discussion of the problem may be found at:
+
+@url{http://www.unicode.org/review/pr-29.html}
+
+The PR29 functions below allow you to detect the problem sequence.  So
+when would you want to use these functions?  For most applications,
+such as those using Nameprep for IDN, this is likely only to be an
+interoperability problem.  Thus, you may not want to care about it, as
+the character sequences will rarely occur naturally.  However, if you
+are using a profile, such as SASLPrep, to process authentication
+tokens; authorization tokens; or passwords, there is a real danger
+that attackers may try to use the peculiarities in these strings to
+attack parts of your system.  As only a small number of strings, and
+no naturally occurring strings, exhibit this problem, the conservative
+approach of rejecting the strings is recommended.  If this approach is
+not used, you should instead verify that all parts of your system,
+that process the tokens and passwords, use a NFKC implementation that
+produce the same output for the same input.
+
+Technically inclined readers may be interested in knowing more about
+the implementation aspects of the PR29 flaw. @xref{PR29 discussion}.
+
+@section Header file @code{pr29.h}
+
+To use the functions explained in this chapter, you need to include
+the file @file{pr29.h} using:
+
+@example
+#include <pr29.h>
+@end example
+
+@section Core Functions
+
+@include texi/pr29_4.texi
+
+@section Utility Functions
+
+@include texi/pr29_4z.texi
+@include texi/pr29_8z.texi
+
+@section Error Handling
+
+@include texi/pr29_strerror.texi
+
+@c **********************************************************
+@c ***********************  Examples  ***********************
+@c **********************************************************
+@node Examples
+@chapter Examples
+@cindex Examples
+
+This chapter contains example code which illustrate how `Libidn' can
+be used when writing your own application.
+
+@menu
+* Example 1::          Example using stringprep.
+* Example 2::          Example using punycode.
+* Example 3::          Example using IDNA ToASCII.
+* Example 4::          Example using IDNA ToUnicode.
+* Example 5::          Example using TLD checking.
+@end menu
+
+@node Example 1
+@section Example 1
+
+This example demonstrates how the stringprep functions are used.
+
+@verbatiminclude example.c
+
+@node Example 2
+@section Example 2
+
+This example demonstrates how the punycode functions are used.
+
+@verbatiminclude example2.c
+
+@node Example 3
+@section Example 3
+
+This example demonstrates how the library is used to convert
+internationalized domain names into ASCII compatible names.
+
+@verbatiminclude example3.c
+
+@node Example 4
+@section Example 4
+
+This example demonstrates how the library is used to convert ASCII
+compatible names to internationalized domain names.
+
+@verbatiminclude example4.c
+
+@node Example 5
+@section Example 5
+
+This example demonstrates how the library is used to check a string
+for invalid characters within a specific TLD.
+
+@verbatiminclude example5.c
+
+@c **********************************************************
+@c *********************  Invoking idn  *********************
+@c **********************************************************
+@node Invoking idn
+@chapter Invoking idn
+
+@pindex idn
+@cindex invoking @command{idn}
+@cindex command line
+
+@section Name
+
+GNU Libidn (idn) -- Internationalized Domain Names command line tool
+
+@section Description
+@code{idn} allows internationalized string preparation
+(@samp{stringprep}), encoding and decoding of punycode data, and IDNA
+ToASCII/ToUnicode operations to be performed on the command line.
+
+If strings are specified on the command line, they are used as input
+and the computed output is printed to standard output @code{stdout}.
+If no strings are specified on the command line, the program read
+data, line by line, from the standard input @code{stdin}, and print
+the computed output to standard output.  What processing is performed
+(e.g., ToASCII, or Punycode encode) is indicated by options.  If any
+errors are encountered, the execution of the applications is aborted.
+
+All strings are expected to be encoded in the preferred charset used
+by your locale.  Use @code{--debug} to find out what this charset is.
+You can override the charset used by setting environment variable
+@code{CHARSET}.
+
+To process a string that starts with @code{-}, for example
+@code{-foo}, use @code{--} to signal the end of parameters, as in
+@code{idn --quiet -a -- -foo}.
+
+@section Options
+@code{idn} recognizes these commands:
+
+@verbatim
+  -h, --help               Print help and exit
+
+  -V, --version            Print version and exit
+
+  -s, --stringprep         Prepare string according to nameprep profile
+
+  -d, --punycode-decode    Decode Punycode
+
+  -e, --punycode-encode    Encode Punycode
+
+  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)
+
+  -u, --idna-to-unicode    Convert from ACE according to IDNA
+
+      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)
+
+      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)
+
+      --no-tld             Don't check string for TLD specific rules
+                             Only for --idna-to-ascii and --idna-to-unicode
+
+  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC
+
+  -p, --profile=STRING     Use specified stringprep profile instead
+                             Valid stringprep profiles: `Nameprep',
+                             `iSCSI', `Nodeprep', `Resourceprep', 
+                             `trace', `SASLprep'
+
+      --debug              Print debugging information
+
+      --quiet              Silent operation
+@end verbatim
+
+@section Environment Variables
+
+The @var{CHARSET} environment variable can be used to override what
+character set to be used for decoding incoming data (i.e., on the
+command line or on the standard input stream), and to encode data to
+the standard output.  If your system is set up correctly, however, the
+application will guess which character set is used automatically.
+Example usage:
+
+@example
+$ CHARSET=ISO-8859-1 idn --punycode-encode
+...
+@end example
+
+@section Examples
+
+Standard usage, reading input from standard input:
+
+@example
+jas@@latte:~$ idn
+libidn 0.3.5
+Copyright 2002, 2003 Simon Josefsson.
+GNU Libidn comes with NO WARRANTY, to the extent permitted by law.
+You may redistribute copies of GNU Libidn under the terms of
+the GNU Lesser General Public License.  For more information
+about these matters, see the file named COPYING.LIB.
+Type each input string on a line by itself, terminated by a newline character.
+r@"aksm@"org@aa{}s.se
+xn--rksmrgs-5wao1o.se
+jas@@latte:~$
+@end example
+
+Reading input from command line, and disabling copyright and license
+information:
+
+@example
+jas@@latte:~$ idn --quiet r@"aksm@"org@aa{}s.se bl@aa{}b@ae{}rgr@o{}d.no
+xn--rksmrgs-5wao1o.se
+xn--blbrgrd-fxak7p.no
+jas@@latte:~$
+@end example
+
+Accessing a specific StringPrep profile directly:
+
+@example
+jas@@latte:~$ idn --quiet --profile=SASLprep --stringprep te@ss{}t@ordf{}
+te@ss{}ta
+jas@@latte:~$
+@end example
+
+@section Troubleshooting
+
+Getting character data encoded right, and making sure Libidn use the
+same encoding, can be difficult.  The reason for this is that most
+systems encode character data in more than one character encoding,
+i.e., using @code{UTF-8} together with @code{ISO-8859-1} or
+@code{ISO-2022-JP}.  This problem is likely to continue to exist until
+only one character encoding come out as the evolutionary winner, or
+(more likely, at least to some extents) forever.
+
+The first step to troubleshooting character encoding problems with
+Libidn is to use the @samp{--debug} parameter to find out which
+character set encoding @samp{idn} believe your locale uses.
+
+@example
+jas@@latte:~$ idn --debug --quiet ""
+system locale uses charset `UTF-8'.
+
+jas@@latte:~$
+@end example
+
+If it prints @code{ANSI_X3.4-1968} (i.e., @code{US-ASCII}), this
+indicate you have not configured your locale properly.  To configure
+the locale, you can, for example, use @samp{LANG=sv_SE.UTF-8; export
+LANG} at a @code{/bin/sh} prompt, to set up your locale for a Swedish
+environment using @code{UTF-8} as the encoding.
+
+Sometimes @samp{idn} appear to be unable to translate from your system
+locale into @code{UTF-8} (which is used internally), and you get an
+error like the following:
+
+@example
+jas@@latte:~$ idn --quiet foo
+idn: could not convert from ISO-8859-1 to UTF-8.
+jas@@latte:~$
+@end example
+
+The simplest explanation is that you haven't installed the
+@samp{iconv} conversion tools.  You can find it as a standalone
+library in @acronym{GNU} Libiconv
+(@uref{http://www.gnu.org/software/libiconv/}).  On many
+@acronym{GNU}/Linux systems, this library is part of the system, but
+you may have to install additional packages (e.g., @samp{glibc-locale}
+for Debian) to be able to use it.
+
+Another explanation is that the error is correct and you are feeding
+@samp{idn} invalid data.  This can happen inadvertently if you are not
+careful with the character set encodings you use.  For example, if
+your shell run in a @code{ISO-8859-1} environment, and you invoke
+@samp{idn} with the @samp{CHARSET} environment variable as follows,
+you will feed it @code{ISO-8859-1} characters but force it to believe
+they are @code{UTF-8}.  Naturally this will lead to an error, unless
+the byte sequences happen to be parsable as @code{UTF-8}.  Note that
+even if you don't get an error, the output may be incorrect in this
+situation, because @code{ISO-8859-1} and @code{UTF-8} does not in
+general encode the same characters as the same byte sequences.
+
+@example
+jas@@latte:~$ idn --quiet --debug ""
+system locale uses charset `ISO-8859-1'.
+jas@@latte:~$ CHARSET=UTF-8 idn --quiet --debug r@"aksm@"org@aa{}s
+system locale uses charset `UTF-8'.
+input[0] = U+0072
+input[1] = U+4af3
+input[2] = U+006d
+input[3] = U+1b29e5
+input[4] = U+0073
+output[0] = U+0078
+output[1] = U+006e
+output[2] = U+002d
+output[3] = U+002d
+output[4] = U+0072
+output[5] = U+006d
+output[6] = U+0073
+output[7] = U+002d
+output[8] = U+0068
+output[9] = U+0069
+output[10] = U+0036
+output[11] = U+0064
+output[12] = U+0035
+output[13] = U+0039
+output[14] = U+0037
+output[15] = U+0035
+output[16] = U+0035
+output[17] = U+0032
+output[18] = U+0061
+xn--rms-hi6d597552a
+jas@@latte:~$
+@end example
+
+The sense moral here is to forget about @samp{CHARSET} (configure your
+locales properly instead) unless you know what you are doing, and if
+you want to use it, do it carefully, after verifying with
+@samp{--debug} that you get the desired results.
+
+@node Emacs API
+@chapter Emacs API
+
+Included in Libidn are @file{punycode.el} and @file{idna.el} that
+provides an Emacs Lisp API to (a limited set of) the Libidn API.  This
+section describes the API.  Currently the IDNA API always set the
+@code{UseSTD3ASCIIRules} flag and clear the @code{AllowUnassigned}
+flag, in the future there may be functionality to specify these flags
+via the API.
+
+@section Punycode Emacs API
+
+@defvar punycode-program
+Name of the GNU Libidn @file{idn} application.  The default is
+@samp{idn}.  This variable can be customized.
+@end defvar
+
+@defvar punycode-environment
+List of environment variable definitions prepended to
+@samp{process-environment}.  The default is @samp{("CHARSET=UTF-8")}.
+This variable can be customized.
+@end defvar
+
+@defvar punycode-encode-parameters
+List of parameters passed to @var{punycode-program} to invoke punycode
+encoding mode.  The default is @samp{("--quiet" "--punycode-encode")}.
+This variable can be customized.
+@end defvar
+
+@defvar punycode-decode-parameters
+Parameters passed to @var{punycode-program} to invoke punycode
+decoding mode.  The default is @samp{("--quiet" "--punycode-decode")}.
+This variable can be customized.
+@end defvar
+
+@defun punycode-encode string
+Returns a Punycode encoding of the @var{string}, after converting the
+input into UTF-8.
+@end defun
+
+@defun punycode-decode string
+Returns a possibly multibyte string which is the decoding of the
+@var{string} which is a punycode encoded string.
+@end defun
+
+@section IDNA Emacs API
+
+@defvar idna-program
+Name of the GNU Libidn @file{idn} application.  The default is
+@samp{idn}.  This variable can be customized.
+@end defvar
+
+@defvar idna-environment
+List of environment variable definitions prepended to
+@samp{process-environment}.  The default is @samp{("CHARSET=UTF-8")}.
+This variable can be customized.
+@end defvar
+
+@defvar idna-to-ascii-parameters
+List of parameters passed to @var{idna-program} to invoke IDNA ToASCII
+mode.  The default is @samp{("--quiet" "--idna-to-ascii"
+"--usestd3asciirules")}.  This variable can be customized.
+@end defvar
+
+@defvar idna-to-unicode-parameters
+Parameters passed @var{idna-program} to invoke IDNA ToUnicode mode.
+The default is @samp{("--quiet" "--idna-to-unicode"
+"--usestd3asciirules")}.  This variable can be customized.
+@end defvar
+
+@defun idna-to-ascii string
+Returns an ASCII Compatible Encoding (ACE) of the string computed by
+the IDNA ToASCII operation on the input @var{string}, after converting
+the input to UTF-8.
+@end defun
+
+@defun idna-to-unicode string
+Returns a possibly multibyte string which is the output of the IDNA
+ToUnicode operation computed on the input @var{string}.
+@end defun
+
+@node Java API
+@chapter Java API
+
+Libidn has been ported to the Java programming language, and as a
+consequence most of the API is available to native Java applications.
+This section contain notes on this support, complete documentation is
+pending.
+
+The Java library, if Libidn has been built with Java support
+(@pxref{Downloading and Installing}), will be placed in
+@file{java/libidn-@value{VERSION}.jar}.  The source code is located in
+@file{java/gnu/inet/encoding/}.
+
+@section Overview
+
+This package provides a Java implementation of the Internationalized
+Domain Names in Applications (IDNA) standard. It is written entirely
+in Java and does not require any additional libraries to be set up.
+
+The gnu.inet.encoding.IDNA class offers two public functions, toASCII
+and toUnicode which can be used as follows:
+
+@example
+gnu.inet.encoding.IDNA.toASCII("bl@"ods.z@"ug");
+gnu.inet.encoding.IDNA.toUnicode("xn--blds-6qa.xn--zg-xka");
+@end example
+
+@section Miscellaneous Programs
+
+The @file{misc/} directory contains several programs that are related
+to the Java part of GNU Libidn, but that don't need to be included in
+the main source tree.
+
+@subsection GenerateRFC3454
+
+This program parses RFC3454 and creates the RFC3454.java program that
+is required during the StringPrep phase.
+
+The RFC can be found at various locations, for example at
+@url{http://www.ietf.org/rfc/rfc3454.txt}.
+
+Invoke the program as follows:
+
+@example
+$ java GenerateRFC3454
+Creating RFC3454.java... Ok.
+@end example
+
+@subsection GenerateNFKC
+
+The GenerateNFKC program parses the Unicode character database file
+and generates all the tables required for NFKC. This program requires
+the two files UnicodeData.txt and CompositionExclusions.txt of version
+3.2 of the Unicode files. Note that RFC3454 (Stringprep) defines that
+Unicode version 3.2 is to be used, not the latest version.
+
+The Unicode data files can be found at
+@url{http://www.unicode.org/Public/}.
+
+Invoke the program as follows:
+
+@example
+$ java GenerateNFKC
+Creating CombiningClass.java... Ok.
+Creating DecompositionKeys.java... Ok.
+Creating DecompositionMappings.java... Ok.
+Creating Composition.java... Ok.
+@end example
+
+@subsection TestIDNA
+
+The TestIDNA program allows to test the IDNA implementation manually
+or against Simon Josefsson's test vectors.
+
+The test vectors can be found at the Libidn homepage,
+@url{http://www.gnu.org/software/libidn/}.
+
+To test the tranformation manually, use:
+
+@example
+$ java -cp .:../libidn.jar TestIDNA -a <string to test>
+Input: <string to test>
+Output: <toASCII(string to test)>
+$ java -cp .:../libidn.jar TestIDNA -u <string to test>
+Input: <string to test>
+Output: <toUnicode(string to test)>
+@end example
+
+To test against draft-josefsson-idn-test-vectors.html, use:
+
+@example
+$ java -cp .:../libidn.jar TestIDNA -t
+No errors detected!
+@end example
+
+@subsection TestNFKC
+
+The TestNFKC program allows to test the NFKC implementation manually
+or against the NormalizationTest.txt file from the Unicode data files.
+
+To test the normalization manually, use:
+
+@example
+$ java -cp .:../libidn.jar TestNFKC <string to test>
+Input: <string to test>
+Output: <nfkc version of the string to test>
+@end example
+
+To test against NormalizationTest.txt:
+
+@example
+$ java -cp .:../libidn.jar TestNFKC
+No errors detected!
+@end example
+
+@section Possible Problems
+
+Beware of Bugs: This Java API needs a lot more testing, especially
+with "exotic" character sets. While it works for me, it may not work
+for you.
+
+Encoding of your Java sources: If you are using non-ASCII characters
+in your Java source code, make sure javac compiles your programs with
+the correct encoding. If necessary specify the encoding using the
+-encoding parameter.
+
+Java Unicode handling: Java 1.4 only handles 16-bit Unicode code
+points (i.e. characters in the Basic Multilingual Plane), this
+implementation therefore ignores all references to so-called
+Supplementary Characters (U+10000 to U+10FFFF). Starting from Java
+1.5, these characters will also be supported by Java, but this will
+require changes to this library.  See also the next section.
+
+@section A Note on Java and Unicode
+
+This library uses Java's builtin 'char' datatype. Up to Java 1.4, this
+datatype only supports 16-bit Unicode code points, also called the
+Basic Multilingual Plane. For this reason, this library doesn't work
+for Supplementary Characters (i.e. characters from U+10000 to
+U+10FFFF). All references to such characters are silently ignored.
+
+Starting from Java 1.5, also Supplementary Characters will be
+supported. However, this will require changes in the present version
+of the library. Java 1.5 is currently in beta status.
+
+For more information refer to the documentation of java.lang.Character
+in the JDK API.
+
+@node C# API
+@chapter C# API
+
+The Libidn library has been ported to the C# language.  The port
+reside in the top-level @file{csharp/} directory.  Currently, no
+further documentation about the implementation or the API is
+available.  However, the C# port was based on the Java port, and the
+API is exactly the same as in the Java version.  The help files for
+the Java API may thus be useful.
+
+@c **********************************************************
+@c *******************  Acknowledgements  *******************
+@c **********************************************************
+@node Acknowledgements
+@chapter Acknowledgements
+
+The punycode implementation was taken from the IETF IDN Punycode
+specification, by Adam M. Costello.  The TLD code was contributed by
+Thomas Jacob.  The Java implementation was contributed by Oliver Hitz.
+The C# implementation was contributed by Alexander Gnauck.  The
+Unicode tables were provided by Unicode, Inc.  Some functions for
+dealing with Unicode (see nfkc.c and toutf8.c) were borrowed from
+GLib, downloaded from @url{http://www.gtk.org/}.  The manual borrowed
+text from Libgcrypt by Werner Koch.
+
+Inspiration for many things that, consciously or not, have gone into
+this package is due to a number of free software package that the
+author has been exposed to.  The author wishes to acknowledge the free
+software community in general, for giving an example on what role
+software development can play in the modern society.
+
+Several people reported bugs, sent patches or suggested improvements,
+see the file THANKS in the top-level directory of the source code.
+
+@c **********************************************************
+@c ************************  History  ***********************
+@c **********************************************************
+@node History
+@chapter History
+
+The complete history of user visible changes is stored in the file
+@file{NEWS} in the top-level directory of the source code tree.  The
+complete history of modifications to each file is stored in the file
+@file{ChangeLog} in the same directory.  This section contain a
+condensed version of that information, in the form of ``milestones''
+for the project.
+
+@table @asis
+@item Stringprep implementation.
+Version 0.0.0 released on 2002-11-05.
+
+@item IDNA and Punycode implementations, part of the GNU project.
+Version 0.1.0 released on 2003-01-05.
+
+@item Uses official IDNA ACE prefix @code{xn--}.
+Version 0.1.7 released on 2003-02-12.
+
+@item Command line interface.
+Version 0.1.11 released on 2003-02-26.
+
+@item GNU Libc add-on proposed.
+Version 0.1.12 released on 2003-03-06.
+
+@item Interoperability testing during IDNConnect.
+Version 0.3.1 released on 2003-10-02.
+
+@item TLD restriction testing.
+Version 0.4.0 released on 2004-02-28.
+
+@item GNU Libc add-on integrated.
+Version 0.4.1 released on 2004-03-08.
+
+@item Native Java implementation.
+Version 0.4.2-0.4.9 released between 2004-03-20 and 2004-06-11.
+
+@item PR-29 functions for ``problem sequences''.
+Version 0.5.0 released on 2004-06-26.
+
+@item Many small portability fixes and wider use.
+Version 0.5.1 through 0.5.20, released between 2004-07-09 and
+2005-10-23.
+
+@item Native C# implementation.
+Version 0.6.0 released on 2005-12-03.
+
+@item Windows support through cross-compilation.
+Version 0.6.1 released on 2006-01-20.
+
+@item Library declared stable by releasing v1.0.
+Version 1.0 released on 2007-07-31.
+
+@end table
+
+@node PR29 discussion
+@appendix PR29 discussion
+
+If you wish to experiment with a modified Unicode NFKC implementation
+according to the PR29 proposal, you may find the following bug report
+useful.  However, I have not verified that the suggested modifications
+are correct.  For reference, I'm including my response to the report
+as well.
+
+@verbatim
+From: Rick McGowan <rick@unicode.org>
+Subject: Possible bug and status of PR 29 change(s)
+To: bug-libidn@gnu.org
+Date: Wed, 27 Oct 2004 14:49:17 -0700
+
+Hello. On behalf of the Unicode Consortium editorial committee, I would  
+like to find out more information about the PR 29 fixes, if any, and  
+functions in Libidn. Your implementation was listed in the text of PR29 as  
+needing investigation, so I am following up on several implementations.
+
+The UTC has accepted the proposed fix to D2 as outlined in PR29, and a new  
+draft of UAX #15 has been issued.
+
+I have looked at Libidn 0.5.8 (today), and there may still be a possible  
+bug in NFKC.java and nfkc.c.
+
+------------------------------------------------------
+
+1. In NFKC.java, this line in canonicalOrdering():
+
+      if (i > 0 && (last_cc == 0 || last_cc != cc)) {
+
+should perhaps be changed to:
+
+      if (i > 0 && (last_cc == 0 || last_cc < cc)) {
+
+but I'm not sure of the sense of this comparison.
+
+------------------------------------------------------
+
+2. In nfkc.c, function _g_utf8_normalize_wc() has this code:
+
+         if (i > 0 &&
+             (last_cc == 0 || last_cc != cc) &&
+             combine (wc_buffer[last_start], wc_buffer[i],
+                      &wc_buffer[last_start]))
+           {
+
+This appears to have the same bug as the current Python implementation (in  
+Python 2.3.4). The code should be checking, as per new rule D2 UAX #15  
+update, that the next combining character is the same or HIGHER than the  
+current one. It now checks to see if it's non-zero and not equal.
+
+The above line(s) should perhaps be changed to:
+
+         if (i > 0 &&
+             (last_cc == 0 || last_cc < cc) &&
+             combine (wc_buffer[last_start], wc_buffer[i],
+                      &wc_buffer[last_start]))
+           {
+
+but I'm not sure of the sense of the comparison (< or > or <=?) here.
+
+In the text of PR29, I will be marking Libidn as "needs change" and adding  
+the version number that I checked. If any further change is made, please  
+let me know the release version, and I'll update again.
+
+Regards,
+       Rick McGowan
+@end verbatim
+
+@verbatim
+From: Simon Josefsson <jas@extundo.com>
+Subject: Re: Possible bug and status of PR 29 change(s)
+To: Rick McGowan <rick@unicode.org>
+Cc: bug-libidn@gnu.org
+Date: Thu, 28 Oct 2004 09:47:47 +0200
+
+Rick McGowan <rick@unicode.org> writes:
+
+> Hello. On behalf of the Unicode Consortium editorial committee, I would  
+> like to find out more information about the PR 29 fixes, if any, and  
+> functions in Libidn. Your implementation was listed in the text of PR29 as  
+> needing investigation, so I am following up on several implementations.
+>
+> The UTC has accepted the proposed fix to D2 as outlined in PR29, and a new  
+> draft of UAX #15 has been issued.
+>
+> I have looked at Libidn 0.5.8 (today), and there may still be a possible  
+> bug in NFKC.java and nfkc.c.
+
+Hello Rick.
+
+I believe the current behavior is intentional.  Libidn do not aim to
+implement latest-and-greatest NFKC, it aim to implement the NFKC
+functionality required for StringPrep and IDN.  As you may know,
+StringPrep/IDN reference Unicode 3.2.0, and explicitly says any later
+changes (which I consider PR29 as) do not apply.
+
+In fact, I believe that would I incorporate the changes suggested in
+PR29, I would in fact be violating the IDN specifications.
+
+Thanks for looking into the code and finding the place where the
+change could be made.  I'll see if I can mention this in the manual
+somewhere, for technically interested readers.
+
+Regards,
+Simon
+@end verbatim
+
+@node On Label Separators
+@appendix On Label Separators
+
+Some strings contains characters whose NFKC normalized form contain
+the ASCII dot (0x2E, ``.'').  Examples of these characters are U+2024
+(ONE DOT LEADER) and U+248C (DIGIT FIVE FULL STOP).  The strings have
+the interesting property that their IDNA ToASCII output will contain
+embedded dots.  For example:
+
+@example
+ToASCII (hi U+248C com) = hi5.com
+ToASCII (r@"aksm@"org@aa{}s U+2024 com) = xn--rksmrgs.com-l8as9u
+@end example
+
+This demonstrate the two general cases: The first where the ASCII dot
+is part of an output that do not begin with the IDN prefix
+@code{xn--}.  The second example illustrate when the dot is part of
+IDN prefixed with @code{xn--}.
+
+The input strings are, from the DNS point of view, a single label.
+The IDNA algorithm translate one label at a time.  Thus, the output is
+expected to be only one label.  What is important here is to make sure
+the DNS resolver receives the correct query.  The DNS protocol does
+not use the dot to delimit labels on the wire, rather it uses
+length-value pairs.  Thus the correct query would be for
+@code{@{7@}hi5.com} and @code{@{22@}xn--rksmrgs.com-l8as9u}
+respectively.
+
+Some implementations @footnote{Notably Microsoft's Internet Explorer
+and Mozilla's Firefox, but not Apple's Safari.} have decided that
+these inputs strings are potentially confusing for the user.  The
+string @code{hi U+248C com} looks like @code{hi5.com} on systems that
+support Unicode properly.  These implementations do not follow RFC
+3490.  They yield:
+
+@example
+ToASCII (hi U+248C com) = hi5.com
+ToASCII (r@"aksm@"org@aa{}s U+2024 com) = xn--rksmrgs-5wao1o.com
+@end example
+
+The DNS query they perform are @code{@{3@}hi5@{3@}com} and
+@code{@{18@}xn--rksmrgs-5wao1o@{3@}com} respectively.  Arguably, this
+leads to a better user experience, and suggests that the IDNA
+specification is sub-optimal in this area.
+
+@section Recommended Workaround
+
+It has been suggested to normalize the entire input string using NFKC
+before passing it to IDNA ToASCII.  You may use
+@code{stringprep_utf8_nfkc_normalize} or
+@code{stringprep_ucs4_nfkc_normalize}.  This appears to lead to
+similar behaviour as IE/Firefox, which would avoid the problem, but
+this needs to be confirmed.  Feel free to discuss the issue with us.
+
+Alternative workarounds are being considered.  Eventually Libidn may
+implement a new flag to the @code{idna_*} functions that implements a
+recommended way to work around this problem.
+
+@node Copying Information
+@appendix Copying Information
+
+@menu
+* GNU Free Documentation License::   License for copying this manual.
+* GNU LGPL::                         License for copying the library.
+* GNU GPL::                          License for copying the programs.
+@end menu
+
+@node GNU Free Documentation License
+@appendixsec GNU Free Documentation License
+
+@cindex FDL, GNU Free Documentation License
+
+@include fdl-1.3.texi
+
+@node GNU LGPL
+@appendixsec GNU Lesser General Public License
+@cindex LGPL, GNU Lesser General Public License
+@cindex License, GNU LGPL
+
+@include lgpl-2.1.texi
+
+@node GNU GPL
+@appendixsec GNU General Public License
+@cindex GPL, GNU General Public License
+@cindex License, GNU GPL
+
+@include gpl-3.0.texi
+
+@node Function and Variable Index
+@unnumbered Function and Variable Index
+
+@printindex fn
+
+@node Concept Index
+@unnumbered Concept Index
+
+@printindex cp
+
+@bye
diff --git a/doc/man/idn_free.3 b/doc/man/idn_free.3
new file mode 100644 (file)
index 0000000..84ac9e6
--- /dev/null
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idn_free" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idn_free \- API function
+.SH SYNOPSIS
+.B #include <idn.h>
+.sp
+.BI "void idn_free(void * " ptr ");"
+.SH ARGUMENTS
+.IP "void * ptr" 12
+memory region to deallocate, or \fBNULL\fP.
+.SH "DESCRIPTION"
+Deallocates memory region by calling \fBfree()\fP.  If \fIptr\fP is \fBNULL\fP no
+operation is performed.
+
+Normally applications de\-allocate strings allocated by libidn by
+calling \fBfree()\fP directly.  Under Windows, different parts of the
+same application may use different heap memory, and then it is
+important to deallocate memory allocated within the same module
+that allocated it.  This function makes that possible.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_strerror.3 b/doc/man/idna_strerror.3
new file mode 100644 (file)
index 0000000..186d932
--- /dev/null
@@ -0,0 +1,73 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_strerror" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_strerror \- return string describing idna error code
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "const char * idna_strerror(Idna_rc " rc ");"
+.SH ARGUMENTS
+.IP "Idna_rc rc" 12
+an \fBIdna_rc\fP return code.
+.SH "DESCRIPTION"
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+.SH "IDNA_SUCCESS"
+Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non\-zero values, for logical comparison purposes.
+.SH "IDNA_STRINGPREP_ERROR"
+Error during string preparation.
+.SH "IDNA_PUNYCODE_ERROR"
+Error during punycode operation.
+.SH "IDNA_CONTAINS_NON_LDH"
+For IDNA_USE_STD3_ASCII_RULES, indicate that
+the string contains non\-LDH ASCII characters.
+.SH "IDNA_CONTAINS_MINUS"
+For IDNA_USE_STD3_ASCII_RULES, indicate that
+the string contains a leading or trailing hyphen\-minus (U+002D).
+.SH "IDNA_INVALID_LENGTH"
+The final output string is not within the
+(inclusive) range 1 to 63 characters.
+.SH "IDNA_NO_ACE_PREFIX"
+The string does not contain the ACE prefix
+(for ToUnicode).
+.SH "IDNA_ROUNDTRIP_VERIFY_ERROR"
+The ToASCII operation on output
+string does not equal the input.
+.SH "IDNA_CONTAINS_ACE_PREFIX"
+The input contains the ACE prefix (for
+ToASCII).
+.SH "IDNA_ICONV_ERROR"
+Could not convert string in locale encoding.
+.SH "IDNA_MALLOC_ERROR"
+Could not allocate buffer (this is typically a
+fatal error).
+.SH "IDNA_DLOPEN_ERROR"
+Could not dlopen the libcidn DSO (only used
+internally in libc).
+.SH "RETURN VALUE"
+Returns a pointer to a statically allocated string
+containing a description of the error with the return code \fIrc\fP.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_ascii_4i.3 b/doc/man/idna_to_ascii_4i.3
new file mode 100644 (file)
index 0000000..28e7d52
--- /dev/null
@@ -0,0 +1,63 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_ascii_4i" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_ascii_4i \- convert Unicode domain name label to text
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_ascii_4i(const uint32_t * " in ", size_t " inlen ", char * " out ", int " flags ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+input array with unicode code points.
+.IP "size_t inlen" 12
+length of input array with unicode code points.
+.IP "char * out" 12
+output zero terminated string that must have room for at
+least 63 characters plus the terminating zero.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+The ToASCII operation takes a sequence of Unicode code points that
+make up one domain label and transforms it into a sequence of code
+points in the ASCII range (0..7F). If ToASCII succeeds, the
+original sequence and the resulting sequence are equivalent labels.
+
+It is important to note that the ToASCII operation can fail. ToASCII
+fails if any step of it fails. If any step of the ToASCII operation
+fails on any label in a domain name, that domain name MUST NOT be used
+as an internationalized domain name. The method for deadling with this
+failure is application\-specific.
+
+The inputs to ToASCII are a sequence of code points, the AllowUnassigned
+flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a
+sequence of ASCII code points or a failure condition.
+
+ToASCII never alters a sequence of code points that are all in the ASCII
+range to begin with (although it could fail). Applying the ToASCII
+operation multiple times has exactly the same effect as applying it just
+once.
+.SH "RETURN VALUE"
+Returns 0 on success, or an \fBIdna_rc\fP error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_ascii_4z.3 b/doc/man/idna_to_ascii_4z.3
new file mode 100644 (file)
index 0000000..6c9632e
--- /dev/null
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_ascii_4z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_ascii_4z \- convert Unicode domain name to text
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_ascii_4z(const uint32_t * " input ", char ** " output ", int " flags ");"
+.SH ARGUMENTS
+.IP "const uint32_t * input" 12
+zero terminated input Unicode string.
+.IP "char ** output" 12
+pointer to newly allocated output string.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+Convert UCS\-4 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.
+.SH "RETURN VALUE"
+Returns \fBIDNA_SUCCESS\fP on success, or error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_ascii_8z.3 b/doc/man/idna_to_ascii_8z.3
new file mode 100644 (file)
index 0000000..91a80cb
--- /dev/null
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_ascii_8z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_ascii_8z \- convert Unicode domain name to text
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_ascii_8z(const char * " input ", char ** " output ", int " flags ");"
+.SH ARGUMENTS
+.IP "const char * input" 12
+zero terminated input UTF\-8 string.
+.IP "char ** output" 12
+pointer to newly allocated output string.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+Convert UTF\-8 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.
+.SH "RETURN VALUE"
+Returns \fBIDNA_SUCCESS\fP on success, or error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_ascii_lz.3 b/doc/man/idna_to_ascii_lz.3
new file mode 100644 (file)
index 0000000..455e6a8
--- /dev/null
@@ -0,0 +1,45 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_ascii_lz" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_ascii_lz \- convert Unicode domain name to text
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_ascii_lz(const char * " input ", char ** " output ", int " flags ");"
+.SH ARGUMENTS
+.IP "const char * input" 12
+zero terminated input string encoded in the current locale's
+character set.
+.IP "char ** output" 12
+pointer to newly allocated output string.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+Convert domain name in the locale's encoding to ASCII string.  The
+domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.
+.SH "RETURN VALUE"
+Returns \fBIDNA_SUCCESS\fP on success, or error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_unicode_44i.3 b/doc/man/idna_to_unicode_44i.3
new file mode 100644 (file)
index 0000000..a9dee32
--- /dev/null
@@ -0,0 +1,68 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_unicode_44i" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_unicode_44i \- convert domain name label to Unicode
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_unicode_44i(const uint32_t * " in ", size_t " inlen ", uint32_t * " out ", size_t * " outlen ", int " flags ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+input array with unicode code points.
+.IP "size_t inlen" 12
+length of input array with unicode code points.
+.IP "uint32_t * out" 12
+output array with unicode code points.
+.IP "size_t * outlen" 12
+on input, maximum size of output array with unicode code points,
+on exit, actual size of output array with unicode code points.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+The ToUnicode operation takes a sequence of Unicode code points
+that make up one domain label and returns a sequence of Unicode
+code points. If the input sequence is a label in ACE form, then the
+result is an equivalent internationalized label that is not in ACE
+form, otherwise the original sequence is returned unaltered.
+
+ToUnicode never fails. If any step fails, then the original input
+sequence is returned immediately in that step.
+
+The Punycode decoder can never output more code points than it
+inputs, but Nameprep can, and therefore ToUnicode can.  Note that
+the number of octets needed to represent a sequence of code points
+depends on the particular character encoding used.
+
+The inputs to ToUnicode are a sequence of code points, the
+AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of
+ToUnicode is always a sequence of Unicode code points.
+.SH "RETURN VALUE"
+Returns \fBIdna_rc\fP error condition, but it must only be
+used for debugging purposes.  The output buffer is always
+guaranteed to contain the correct data according to the
+specification (sans malloc induced errors).  NB!  This means that
+you normally ignore the return code from this function, as
+checking it means breaking the standard.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_unicode_4z4z.3 b/doc/man/idna_to_unicode_4z4z.3
new file mode 100644 (file)
index 0000000..71fc95d
--- /dev/null
@@ -0,0 +1,45 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_unicode_4z4z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_unicode_4z4z \- convert domain name to Unicode
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_unicode_4z4z(const uint32_t * " input ", uint32_t ** " output ", int " flags ");"
+.SH ARGUMENTS
+.IP "const uint32_t * input" 12
+zero\-terminated Unicode string.
+.IP "uint32_t ** output" 12
+pointer to newly allocated output Unicode string.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+Convert possibly ACE encoded domain name in UCS\-4 format into a
+UCS\-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+.SH "RETURN VALUE"
+Returns \fBIDNA_SUCCESS\fP on success, or error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_unicode_8z4z.3 b/doc/man/idna_to_unicode_8z4z.3
new file mode 100644 (file)
index 0000000..f8b2746
--- /dev/null
@@ -0,0 +1,45 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_unicode_8z4z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_unicode_8z4z \- convert domain name to Unicode
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_unicode_8z4z(const char * " input ", uint32_t ** " output ", int " flags ");"
+.SH ARGUMENTS
+.IP "const char * input" 12
+zero\-terminated UTF\-8 string.
+.IP "uint32_t ** output" 12
+pointer to newly allocated output Unicode string.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+Convert possibly ACE encoded domain name in UTF\-8 format into a
+UCS\-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+.SH "RETURN VALUE"
+Returns \fBIDNA_SUCCESS\fP on success, or error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_unicode_8z8z.3 b/doc/man/idna_to_unicode_8z8z.3
new file mode 100644 (file)
index 0000000..d2aba5a
--- /dev/null
@@ -0,0 +1,45 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_unicode_8z8z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_unicode_8z8z \- convert domain name to Unicode
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_unicode_8z8z(const char * " input ", char ** " output ", int " flags ");"
+.SH ARGUMENTS
+.IP "const char * input" 12
+zero\-terminated UTF\-8 string.
+.IP "char ** output" 12
+pointer to newly allocated output UTF\-8 string.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+Convert possibly ACE encoded domain name in UTF\-8 format into a
+UTF\-8 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+.SH "RETURN VALUE"
+Returns \fBIDNA_SUCCESS\fP on success, or error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_unicode_8zlz.3 b/doc/man/idna_to_unicode_8zlz.3
new file mode 100644 (file)
index 0000000..02f4cc1
--- /dev/null
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_unicode_8zlz" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_unicode_8zlz \- convert domain name to Unicode
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_unicode_8zlz(const char * " input ", char ** " output ", int " flags ");"
+.SH ARGUMENTS
+.IP "const char * input" 12
+zero\-terminated UTF\-8 string.
+.IP "char ** output" 12
+pointer to newly allocated output string encoded in the
+current locale's character set.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+Convert possibly ACE encoded domain name in UTF\-8 format into a
+string encoded in the current locale's character set.  The domain
+name may contain several labels, separated by dots.  The output
+buffer must be deallocated by the caller.
+.SH "RETURN VALUE"
+Returns \fBIDNA_SUCCESS\fP on success, or error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/idna_to_unicode_lzlz.3 b/doc/man/idna_to_unicode_lzlz.3
new file mode 100644 (file)
index 0000000..fb18444
--- /dev/null
@@ -0,0 +1,47 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "idna_to_unicode_lzlz" 3 "1.15" "libidn" "libidn"
+.SH NAME
+idna_to_unicode_lzlz \- convert domain name to Unicode
+.SH SYNOPSIS
+.B #include <idna.h>
+.sp
+.BI "int idna_to_unicode_lzlz(const char * " input ", char ** " output ", int " flags ");"
+.SH ARGUMENTS
+.IP "const char * input" 12
+zero\-terminated string encoded in the current locale's
+character set.
+.IP "char ** output" 12
+pointer to newly allocated output string encoded in the
+current locale's character set.
+.IP "int flags" 12
+an \fBIdna_flags\fP value, e.g., \fBIDNA_ALLOW_UNASSIGNED\fP or
+\fBIDNA_USE_STD3_ASCII_RULES\fP.
+.SH "DESCRIPTION"
+Convert possibly ACE encoded domain name in the locale's character
+set into a string encoded in the current locale's character set.
+The domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.
+.SH "RETURN VALUE"
+Returns \fBIDNA_SUCCESS\fP on success, or error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/pr29_4.3 b/doc/man/pr29_4.3
new file mode 100644 (file)
index 0000000..5d9af50
--- /dev/null
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "pr29_4" 3 "1.15" "libidn" "libidn"
+.SH NAME
+pr29_4 \- check if input trigger Unicode normalization bugs
+.SH SYNOPSIS
+.B #include <pr29.h>
+.sp
+.BI "int pr29_4(const uint32_t * " in ", size_t " len ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+input array with unicode code points.
+.IP "size_t len" 12
+length of input array with unicode code points.
+.SH "DESCRIPTION"
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+.SH "RETURN VALUE"
+Returns the \fBPr29_rc\fP value \fBPR29_SUCCESS\fP on success,
+and \fBPR29_PROBLEM\fP if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations).
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/pr29_4z.3 b/doc/man/pr29_4z.3
new file mode 100644 (file)
index 0000000..e6fd508
--- /dev/null
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "pr29_4z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+pr29_4z \- check if input trigger Unicode normalization bugs
+.SH SYNOPSIS
+.B #include <pr29.h>
+.sp
+.BI "int pr29_4z(const uint32_t * " in ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+zero terminated array of Unicode code points.
+.SH "DESCRIPTION"
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+.SH "RETURN VALUE"
+Returns the \fBPr29_rc\fP value \fBPR29_SUCCESS\fP on success,
+and \fBPR29_PROBLEM\fP if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations).
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/pr29_8z.3 b/doc/man/pr29_8z.3
new file mode 100644 (file)
index 0000000..feb3054
--- /dev/null
@@ -0,0 +1,43 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "pr29_8z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+pr29_8z \- check if input trigger Unicode normalization bugs
+.SH SYNOPSIS
+.B #include <pr29.h>
+.sp
+.BI "int pr29_8z(const char * " in ");"
+.SH ARGUMENTS
+.IP "const char * in" 12
+zero terminated input UTF\-8 string.
+.SH "DESCRIPTION"
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+.SH "RETURN VALUE"
+Returns the \fBPr29_rc\fP value \fBPR29_SUCCESS\fP on success,
+and \fBPR29_PROBLEM\fP if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations), or \fBPR29_STRINGPREP_ERROR\fP if there was a
+problem converting the string from UTF\-8 to UCS\-4.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/pr29_strerror.3 b/doc/man/pr29_strerror.3
new file mode 100644 (file)
index 0000000..9784925
--- /dev/null
@@ -0,0 +1,48 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "pr29_strerror" 3 "1.15" "libidn" "libidn"
+.SH NAME
+pr29_strerror \- return string describing pr29 error code
+.SH SYNOPSIS
+.B #include <pr29.h>
+.sp
+.BI "const char * pr29_strerror(Pr29_rc " rc ");"
+.SH ARGUMENTS
+.IP "Pr29_rc rc" 12
+an \fBPr29_rc\fP return code.
+.SH "DESCRIPTION"
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+.SH "PR29_SUCCESS"
+Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non\-zero values, for logical comparison purposes.
+.SH "PR29_PROBLEM"
+A problem sequence was encountered.
+.SH "PR29_STRINGPREP_ERROR"
+The character set conversion failed (only
+for \fBpr29_8()\fP and \fBpr29_8z()\fP).
+.SH "RETURN VALUE"
+Returns a pointer to a statically allocated string
+containing a description of the error with the return code \fIrc\fP.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/punycode_decode.3 b/doc/man/punycode_decode.3
new file mode 100644 (file)
index 0000000..0ee171d
--- /dev/null
@@ -0,0 +1,67 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "punycode_decode" 3 "1.15" "libidn" "libidn"
+.SH NAME
+punycode_decode \- decode Punycode to Unicode
+.SH SYNOPSIS
+.B #include <punycode.h>
+.sp
+.BI "int punycode_decode(size_t " input_length ", const char [] " input ", size_t * " output_length ", punycode_uint [] " output ", unsigned char [] " case_flags ");"
+.SH ARGUMENTS
+.IP "size_t input_length" 12
+The number of ASCII code points in the \fIinput\fP array.
+.IP "const char [] input" 12
+An array of ASCII code points (0..7F).
+.IP "size_t * output_length" 12
+The caller passes in the maximum number of code
+points that it can receive into the \fIoutput\fP array (which is also
+the maximum number of flags that it can receive into the
+\fIcase_flags\fP array, if \fIcase_flags\fP is not a \fBNULL\fP pointer).  On
+successful return it will contain the number of code points
+actually output (which is also the number of flags actually
+output, if case_flags is not a null pointer).  The decoder will
+never need to output more code points than the number of ASCII
+code points in the input, because of the way the encoding is
+defined.  The number of code points output cannot exceed the
+maximum possible value of a punycode_uint, even if the supplied
+\fIoutput_length\fP is greater than that.
+.IP "punycode_uint [] output" 12
+An array of code points like the input argument of
+\fBpunycode_encode()\fP (see above).
+.IP "unsigned char [] case_flags" 12
+A \fBNULL\fP pointer (if the flags are not needed by the
+caller) or an array of boolean values parallel to the \fIoutput\fP
+array.  Nonzero (true, flagged) suggests that the corresponding
+Unicode character be forced to uppercase by the caller (if
+possible), and zero (false, unflagged) suggests that it be forced
+to lowercase (if possible).  ASCII code points (0..7F) are output
+already in the proper case, but their flags will be set
+appropriately so that applying the flags would be harmless.
+.SH "DESCRIPTION"
+Converts Punycode to a sequence of code points (presumed to be
+Unicode code points).
+.SH "RETURN VALUE"
+The return value can be any of the \fBPunycode_status\fP
+values defined above.  If not \fBPUNYCODE_SUCCESS\fP, then
+\fIoutput_length\fP, \fIoutput\fP, and \fIcase_flags\fP might contain garbage.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/punycode_encode.3 b/doc/man/punycode_encode.3
new file mode 100644 (file)
index 0000000..4521445
--- /dev/null
@@ -0,0 +1,70 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "punycode_encode" 3 "1.15" "libidn" "libidn"
+.SH NAME
+punycode_encode \- encode Unicode to Punycode
+.SH SYNOPSIS
+.B #include <punycode.h>
+.sp
+.BI "int punycode_encode(size_t " input_length ", const punycode_uint [] " input ", const unsigned char [] " case_flags ", size_t * " output_length ", char [] " output ");"
+.SH ARGUMENTS
+.IP "size_t input_length" 12
+The number of code points in the \fIinput\fP array and
+the number of flags in the \fIcase_flags\fP array.
+.IP "const punycode_uint [] input" 12
+An array of code points.  They are presumed to be Unicode
+code points, but that is not strictly REQUIRED.  The array
+contains code points, not code units.  UTF\-16 uses code units
+D800 through DFFF to refer to code points 10000..10FFFF.  The
+code points D800..DFFF do not occur in any valid Unicode string.
+The code points that can occur in Unicode strings (0..D7FF and
+E000..10FFFF) are also called Unicode scalar values.
+.IP "const unsigned char [] case_flags" 12
+A \fBNULL\fP pointer or an array of boolean values parallel
+to the \fIinput\fP array.  Nonzero (true, flagged) suggests that the
+corresponding Unicode character be forced to uppercase after
+being decoded (if possible), and zero (false, unflagged) suggests
+that it be forced to lowercase (if possible).  ASCII code points
+(0..7F) are encoded literally, except that ASCII letters are
+forced to uppercase or lowercase according to the corresponding
+case flags.  If \fIcase_flags\fP is a \fBNULL\fP pointer then ASCII letters
+are left as they are, and other code points are treated as
+unflagged.
+.IP "size_t * output_length" 12
+The caller passes in the maximum number of ASCII
+code points that it can receive.  On successful return it will
+contain the number of ASCII code points actually output.
+.IP "char [] output" 12
+An array of ASCII code points.  It is *not*
+null\-terminated; it will contain zeros if and only if the \fIinput\fP
+contains zeros.  (Of course the caller can leave room for a
+terminator and add one if needed.)
+.SH "DESCRIPTION"
+Converts a sequence of code points (presumed to be Unicode code
+points) to Punycode.
+.SH "RETURN VALUE"
+The return value can be any of the \fBPunycode_status\fP
+values defined above except \fBPUNYCODE_BAD_INPUT\fP.  If not
+\fBPUNYCODE_SUCCESS\fP, then \fIoutput_size\fP and \fIoutput\fP might contain
+garbage.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/punycode_strerror.3 b/doc/man/punycode_strerror.3
new file mode 100644 (file)
index 0000000..35b10a0
--- /dev/null
@@ -0,0 +1,49 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "punycode_strerror" 3 "1.15" "libidn" "libidn"
+.SH NAME
+punycode_strerror \- return string describing punycode error code
+.SH SYNOPSIS
+.B #include <punycode.h>
+.sp
+.BI "const char * punycode_strerror(Punycode_status " rc ");"
+.SH ARGUMENTS
+.IP "Punycode_status rc" 12
+an \fBPunycode_status\fP return code.
+.SH "DESCRIPTION"
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+.SH "PUNYCODE_SUCCESS"
+Successful operation.  This value is guaranteed
+to always be zero, the remaining ones are only guaranteed to hold
+non\-zero values, for logical comparison purposes.
+.SH "PUNYCODE_BAD_INPUT"
+Input is invalid.
+.SH "PUNYCODE_BIG_OUTPUT"
+Output would exceed the space provided.
+.SH "PUNYCODE_OVERFLOW"
+Input needs wider integers to process.
+.SH "RETURN VALUE"
+Returns a pointer to a statically allocated string
+containing a description of the error with the return code \fIrc\fP.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep.3 b/doc/man/stringprep.3
new file mode 100644 (file)
index 0000000..d7d3edc
--- /dev/null
@@ -0,0 +1,59 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep \- prepare internationalized string
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "int stringprep(char * " in ", size_t " maxlen ", Stringprep_profile_flags " flags ", const Stringprep_profile * " profile ");"
+.SH ARGUMENTS
+.IP "char * in" 12
+input/ouput array with string to prepare.
+.IP "size_t maxlen" 12
+maximum length of input/output array.
+.IP "Stringprep_profile_flags flags" 12
+a \fBStringprep_profile_flags\fP value, or 0.
+.IP "const Stringprep_profile * profile" 12
+pointer to \fBStringprep_profile\fP to use.
+.SH "DESCRIPTION"
+Prepare the input zero terminated UTF\-8 string according to the
+stringprep profile, and write back the result to the input string.
+
+Note that you must convert strings entered in the systems locale
+into UTF\-8 before using this function, see
+\fBstringprep_locale_to_utf8()\fP.
+
+Since the stringprep operation can expand the string, \fImaxlen\fP
+indicate how large the buffer holding the string is.  This function
+will not read or write to characters outside that size.
+
+The \fIflags\fP are one of \fBStringprep_profile_flags\fP values, or 0.
+
+The \fIprofile\fP contain the \fBStringprep_profile\fP instructions to
+perform.  Your application can define new profiles, possibly
+re\-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+.SH "RETURN VALUE"
+Returns \fBSTRINGPREP_OK\fP iff successful, or an error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_4i.3 b/doc/man/stringprep_4i.3
new file mode 100644 (file)
index 0000000..fffabc3
--- /dev/null
@@ -0,0 +1,64 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_4i" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_4i \- prepare internationalized string
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "int stringprep_4i(uint32_t * " ucs4 ", size_t * " len ", size_t " maxucs4len ", Stringprep_profile_flags " flags ", const Stringprep_profile * " profile ");"
+.SH ARGUMENTS
+.IP "uint32_t * ucs4" 12
+input/output array with string to prepare.
+.IP "size_t * len" 12
+on input, length of input array with Unicode code points,
+on exit, length of output array with Unicode code points.
+.IP "size_t maxucs4len" 12
+maximum length of input/output array.
+.IP "Stringprep_profile_flags flags" 12
+a \fBStringprep_profile_flags\fP value, or 0.
+.IP "const Stringprep_profile * profile" 12
+pointer to \fBStringprep_profile\fP to use.
+.SH "DESCRIPTION"
+Prepare the input UCS\-4 string according to the stringprep profile,
+and write back the result to the input string.
+
+The input is not required to be zero terminated (\fIucs4\fP[\fIlen\fP] = 0).
+The output will not be zero terminated unless \fIucs4\fP[\fIlen\fP] = 0.
+Instead, see \fBstringprep_4zi()\fP if your input is zero terminated or
+if you want the output to be.
+
+Since the stringprep operation can expand the string, \fImaxucs4len\fP
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+
+The \fIflags\fP are one of \fBStringprep_profile_flags\fP values, or 0.
+
+The \fIprofile\fP contain the \fBStringprep_profile\fP instructions to
+perform.  Your application can define new profiles, possibly
+re\-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+.SH "RETURN VALUE"
+Returns \fBSTRINGPREP_OK\fP iff successful, or an
+\fBStringprep_rc\fP error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_4zi.3 b/doc/man/stringprep_4zi.3
new file mode 100644 (file)
index 0000000..9ccd435
--- /dev/null
@@ -0,0 +1,56 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_4zi" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_4zi \- prepare internationalized string
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "int stringprep_4zi(uint32_t * " ucs4 ", size_t " maxucs4len ", Stringprep_profile_flags " flags ", const Stringprep_profile * " profile ");"
+.SH ARGUMENTS
+.IP "uint32_t * ucs4" 12
+input/output array with zero terminated string to prepare.
+.IP "size_t maxucs4len" 12
+maximum length of input/output array.
+.IP "Stringprep_profile_flags flags" 12
+a \fBStringprep_profile_flags\fP value, or 0.
+.IP "const Stringprep_profile * profile" 12
+pointer to \fBStringprep_profile\fP to use.
+.SH "DESCRIPTION"
+Prepare the input zero terminated UCS\-4 string according to the
+stringprep profile, and write back the result to the input string.
+
+Since the stringprep operation can expand the string, \fImaxucs4len\fP
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+
+The \fIflags\fP are one of \fBStringprep_profile_flags\fP values, or 0.
+
+The \fIprofile\fP contain the \fBStringprep_profile\fP instructions to
+perform.  Your application can define new profiles, possibly
+re\-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+.SH "RETURN VALUE"
+Returns \fBSTRINGPREP_OK\fP iff successful, or an
+\fBStringprep_rc\fP error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_check_version.3 b/doc/man/stringprep_check_version.3
new file mode 100644 (file)
index 0000000..ebafa05
--- /dev/null
@@ -0,0 +1,43 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_check_version" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_check_version \- check for library version
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "const char * stringprep_check_version(const char * " req_version ");"
+.SH ARGUMENTS
+.IP "const char * req_version" 12
+Required version number, or NULL.
+.SH "DESCRIPTION"
+Check that the version of the library is at minimum the requested one
+and return the version string; return NULL if the condition is not
+satisfied.  If a NULL is passed to this function, no check is done,
+but the version string is simply returned.
+
+See \fBSTRINGPREP_VERSION\fP for a suitable \fIreq_version\fP string.
+.SH "RETURN VALUE"
+Version string of run\-time library, or NULL if the
+run\-time library does not meet the required version number.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_convert.3 b/doc/man/stringprep_convert.3
new file mode 100644 (file)
index 0000000..1fc85cb
--- /dev/null
@@ -0,0 +1,43 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_convert" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_convert \- encode string using new character set
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "char * stringprep_convert(const char * " str ", const char * " to_codeset ", const char * " from_codeset ");"
+.SH ARGUMENTS
+.IP "const char * str" 12
+input zero\-terminated string.
+.IP "const char * to_codeset" 12
+name of destination character set.
+.IP "const char * from_codeset" 12
+name of origin character set, as used by \fIstr\fP.
+.SH "DESCRIPTION"
+Convert the string from one character set to another using the
+system's \fBiconv()\fP function.
+.SH "RETURN VALUE"
+Returns newly allocated zero\-terminated string which
+is \fIstr\fP transcoded into to_codeset.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_locale_charset.3 b/doc/man/stringprep_locale_charset.3
new file mode 100644 (file)
index 0000000..9fab670
--- /dev/null
@@ -0,0 +1,50 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_locale_charset" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_locale_charset \- return charset used in current locale
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "const char * stringprep_locale_charset( " void ");"
+.SH ARGUMENTS
+.IP " void" 12
+.SH "DESCRIPTION"
+
+Find out current locale charset.  The function respect the CHARSET
+environment variable, but typically uses nl_langinfo(CODESET) when
+it is supported.  It fall back on "ASCII" if CHARSET isn't set and
+nl_langinfo isn't supported or return anything.
+
+Note that this function return the application's locale's preferred
+charset (or thread's locale's preffered charset, if your system
+support thread\-specific locales).  It does not return what the
+system may be using.  Thus, if you receive data from external
+sources you cannot in general use this function to guess what
+charset it is encoded in.  Use stringprep_convert from the external
+representation into the charset returned by this function, to have
+data in the locale encoding.
+.SH "RETURN VALUE"
+Return the character set used by the current locale.
+It will never return NULL, but use "ASCII" as a fallback.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_locale_to_utf8.3 b/doc/man/stringprep_locale_to_utf8.3
new file mode 100644 (file)
index 0000000..08efd1d
--- /dev/null
@@ -0,0 +1,39 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_locale_to_utf8" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_locale_to_utf8 \- convert locale encoded string to UTF-8
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "char * stringprep_locale_to_utf8(const char * " str ");"
+.SH ARGUMENTS
+.IP "const char * str" 12
+input zero terminated string.
+.SH "DESCRIPTION"
+Convert string encoded in the locale's character set into UTF\-8 by
+using \fBstringprep_convert()\fP.
+.SH "RETURN VALUE"
+Returns newly allocated zero\-terminated string which
+is \fIstr\fP transcoded into UTF\-8.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_profile.3 b/doc/man/stringprep_profile.3
new file mode 100644 (file)
index 0000000..4fec550
--- /dev/null
@@ -0,0 +1,56 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_profile" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_profile \- prepare internationalized string
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "int stringprep_profile(const char * " in ", char ** " out ", const char * " profile ", Stringprep_profile_flags " flags ");"
+.SH ARGUMENTS
+.IP "const char * in" 12
+input array with UTF\-8 string to prepare.
+.IP "char ** out" 12
+output variable with pointer to newly allocate string.
+.IP "const char * profile" 12
+name of stringprep profile to use.
+.IP "Stringprep_profile_flags flags" 12
+a \fBStringprep_profile_flags\fP value, or 0.
+.SH "DESCRIPTION"
+Prepare the input zero terminated UTF\-8 string according to the
+stringprep profile, and return the result in a newly allocated
+variable.
+
+Note that you must convert strings entered in the systems locale
+into UTF\-8 before using this function, see
+\fBstringprep_locale_to_utf8()\fP.
+
+The output \fIout\fP variable must be deallocated by the caller.
+
+The \fIflags\fP are one of \fBStringprep_profile_flags\fP values, or 0.
+
+The \fIprofile\fP specifies the name of the stringprep profile to use.
+It must be one of the internally supported stringprep profiles.
+.SH "RETURN VALUE"
+Returns \fBSTRINGPREP_OK\fP iff successful, or an error code.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_strerror.3 b/doc/man/stringprep_strerror.3
new file mode 100644 (file)
index 0000000..d54fc94
--- /dev/null
@@ -0,0 +1,77 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_strerror" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_strerror \- return string describing stringprep error code
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "const char * stringprep_strerror(Stringprep_rc " rc ");"
+.SH ARGUMENTS
+.IP "Stringprep_rc rc" 12
+a \fBStringprep_rc\fP return code.
+.SH "DESCRIPTION"
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+.SH "STRINGPREP_OK"
+Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non\-zero values, for logical comparison purposes.
+.SH "STRINGPREP_CONTAINS_UNASSIGNED"
+String contain unassigned Unicode
+code points, which is forbidden by the profile.
+.SH "STRINGPREP_CONTAINS_PROHIBITED"
+String contain code points
+prohibited by the profile.
+.SH "STRINGPREP_BIDI_BOTH_L_AND_RAL"
+String contain code points with
+conflicting bidirection category.
+.SH "STRINGPREP_BIDI_LEADTRAIL_NOT_RAL"
+Leading and trailing character
+in string not of proper bidirectional category.
+.SH "STRINGPREP_BIDI_CONTAINS_PROHIBITED"
+Contains prohibited code
+points detected by bidirectional code.
+.SH "STRINGPREP_TOO_SMALL_BUFFER"
+Buffer handed to function was too
+small.  This usually indicate a problem in the calling
+application.
+.SH "STRINGPREP_PROFILE_ERROR"
+The stringprep profile was inconsistent.
+This usually indicate an internal error in the library.
+.SH "STRINGPREP_FLAG_ERROR"
+The supplied flag conflicted with profile.
+This usually indicate a problem in the calling application.
+.SH "STRINGPREP_UNKNOWN_PROFILE"
+The supplied profile name was not
+known to the library.
+.SH "STRINGPREP_NFKC_FAILED"
+The Unicode NFKC operation failed.  This
+usually indicate an internal error in the library.
+.SH "STRINGPREP_MALLOC_ERROR"
+The \fBmalloc()\fP was out of memory.  This is
+usually a fatal error.
+.SH "RETURN VALUE"
+Returns a pointer to a statically allocated string
+containing a description of the error with the return code \fIrc\fP.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_ucs4_nfkc_normalize.3 b/doc/man/stringprep_ucs4_nfkc_normalize.3
new file mode 100644 (file)
index 0000000..4d52444
--- /dev/null
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_ucs4_nfkc_normalize" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_ucs4_nfkc_normalize \- normalize Unicode string
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "uint32_t * stringprep_ucs4_nfkc_normalize(uint32_t * " str ", ssize_t " len ");"
+.SH ARGUMENTS
+.IP "uint32_t * str" 12
+a Unicode string.
+.IP "ssize_t len" 12
+length of \fIstr\fP array, or \-1 if \fIstr\fP is nul\-terminated.
+.SH "DESCRIPTION"
+Converts UCS4 string into UTF\-8 and runs
+\fBstringprep_utf8_nfkc_normalize()\fP.
+.SH "RETURN VALUE"
+a newly allocated Unicode string, that is the NFKC
+normalized form of \fIstr\fP.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_ucs4_to_utf8.3 b/doc/man/stringprep_ucs4_to_utf8.3
new file mode 100644 (file)
index 0000000..6cd152f
--- /dev/null
@@ -0,0 +1,50 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_ucs4_to_utf8" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_ucs4_to_utf8 \- convert UCS-4 string to UTF-8
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "char * stringprep_ucs4_to_utf8(const uint32_t * " str ", ssize_t " len ", size_t * " items_read ", size_t * " items_written ");"
+.SH ARGUMENTS
+.IP "const uint32_t * str" 12
+a UCS\-4 encoded string
+.IP "ssize_t len" 12
+the maximum length of \fIstr\fP to use. If \fIlen\fP < 0, then
+the string is terminated with a 0 character.
+.IP "size_t * items_read" 12
+location to store number of characters read read, or \fBNULL\fP.
+.IP "size_t * items_written" 12
+location to store number of bytes written or \fBNULL\fP.
+The value here stored does not include the trailing 0
+byte.
+.SH "DESCRIPTION"
+Convert a string from a 32\-bit fixed width representation as UCS\-4.
+to UTF\-8. The result will be terminated with a 0 byte.
+.SH "RETURN VALUE"
+a pointer to a newly allocated UTF\-8 string.
+This value must be deallocated by the caller.
+If an error occurs, \fBNULL\fP will be returned and \fIerror\fP
+set.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_unichar_to_utf8.3 b/doc/man/stringprep_unichar_to_utf8.3
new file mode 100644 (file)
index 0000000..59be1de
--- /dev/null
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_unichar_to_utf8" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_unichar_to_utf8 \- convert Unicode code point to UTF-8
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "int stringprep_unichar_to_utf8(uint32_t " c ", char * " outbuf ");"
+.SH ARGUMENTS
+.IP "uint32_t c" 12
+a ISO10646 character code
+.IP "char * outbuf" 12
+output buffer, must have at least 6 bytes of space.
+If \fBNULL\fP, the length will be computed and returned
+and nothing will be written to \fIoutbuf\fP.
+.SH "DESCRIPTION"
+Converts a single character to UTF\-8.
+.SH "RETURN VALUE"
+number of bytes written.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_utf8_nfkc_normalize.3 b/doc/man/stringprep_utf8_nfkc_normalize.3
new file mode 100644 (file)
index 0000000..b7c4aa6
--- /dev/null
@@ -0,0 +1,52 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_utf8_nfkc_normalize" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_utf8_nfkc_normalize \- normalize Unicode string
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "char * stringprep_utf8_nfkc_normalize(const char * " str ", ssize_t " len ");"
+.SH ARGUMENTS
+.IP "const char * str" 12
+a UTF\-8 encoded string.
+.IP "ssize_t len" 12
+length of \fIstr\fP, in bytes, or \-1 if \fIstr\fP is nul\-terminated.
+.SH "DESCRIPTION"
+Converts a string into canonical form, standardizing
+such issues as whether a character with an accent
+is represented as a base character and combining
+accent or as a single precomposed character.
+
+The normalization mode is NFKC (ALL COMPOSE).  It standardizes
+differences that do not affect the text content, such as the
+above\-mentioned accent representation. It standardizes the
+"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
+the standard forms (in this case DIGIT THREE). Formatting
+information may be lost but for most text operations such
+characters should be considered the same. It returns a result with
+composed forms rather than a maximally decomposed form.
+.SH "RETURN VALUE"
+a newly allocated string, that is the
+NFKC normalized form of \fIstr\fP.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_utf8_to_locale.3 b/doc/man/stringprep_utf8_to_locale.3
new file mode 100644 (file)
index 0000000..75f34a5
--- /dev/null
@@ -0,0 +1,39 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_utf8_to_locale" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_utf8_to_locale \- encode UTF-8 string to locale encoding
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "char * stringprep_utf8_to_locale(const char * " str ");"
+.SH ARGUMENTS
+.IP "const char * str" 12
+input zero terminated string.
+.SH "DESCRIPTION"
+Convert string encoded in UTF\-8 into the locale's character set by
+using \fBstringprep_convert()\fP.
+.SH "RETURN VALUE"
+Returns newly allocated zero\-terminated string which
+is \fIstr\fP transcoded into the locale's character set.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_utf8_to_ucs4.3 b/doc/man/stringprep_utf8_to_ucs4.3
new file mode 100644 (file)
index 0000000..fa89e1c
--- /dev/null
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_utf8_to_ucs4" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_utf8_to_ucs4 \- convert UTF-8 string to UCS-4
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "uint32_t * stringprep_utf8_to_ucs4(const char * " str ", ssize_t " len ", size_t * " items_written ");"
+.SH ARGUMENTS
+.IP "const char * str" 12
+a UTF\-8 encoded string
+.IP "ssize_t len" 12
+the maximum length of \fIstr\fP to use. If \fIlen\fP < 0, then
+the string is nul\-terminated.
+.IP "size_t * items_written" 12
+location to store the number of characters in the
+result, or \fBNULL\fP.
+.SH "DESCRIPTION"
+Convert a string from UTF\-8 to a 32\-bit fixed width
+representation as UCS\-4, assuming valid UTF\-8 input.
+This function does no error checking on the input.
+.SH "RETURN VALUE"
+a pointer to a newly allocated UCS\-4 string.
+This value must be deallocated by the caller.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/stringprep_utf8_to_unichar.3 b/doc/man/stringprep_utf8_to_unichar.3
new file mode 100644 (file)
index 0000000..0546303
--- /dev/null
@@ -0,0 +1,39 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "stringprep_utf8_to_unichar" 3 "1.15" "libidn" "libidn"
+.SH NAME
+stringprep_utf8_to_unichar \- convert UTF-8 to Unicode code point
+.SH SYNOPSIS
+.B #include <stringprep.h>
+.sp
+.BI "uint32_t stringprep_utf8_to_unichar(const char * " p ");"
+.SH ARGUMENTS
+.IP "const char * p" 12
+a pointer to Unicode character encoded as UTF\-8
+.SH "DESCRIPTION"
+Converts a sequence of bytes encoded as UTF\-8 to a Unicode character.
+If \fIp\fP does not point to a valid UTF\-8 encoded character, results are
+undefined.
+.SH "RETURN VALUE"
+the resulting character.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_check_4.3 b/doc/man/tld_check_4.3
new file mode 100644 (file)
index 0000000..1df5e2d
--- /dev/null
@@ -0,0 +1,55 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_check_4" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_check_4 \- verify that characters are permitted
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "int tld_check_4(const uint32_t * " in ", size_t " inlen ", size_t * " errpos ", const Tld_table ** " overrides ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+Array of unicode code points to process. Does not need to be
+zero terminated.
+.IP "size_t inlen" 12
+Number of unicode code points.
+.IP "size_t * errpos" 12
+Position of offending character is returned here.
+.IP "const Tld_table ** overrides" 12
+A \fBTld_table\fP array of additional domain restriction
+structures that complement and supersede the built\-in information.
+.SH "DESCRIPTION"
+Test each of the code points in \fIin\fP for whether or not they are
+allowed by the information in \fIoverrides\fP or by the built\-in TLD
+restriction data. When data for the same TLD is available both
+internally and in \fIoverrides\fP, the information in \fIoverrides\fP takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If \fIoverrides\fP is \fBNULL\fP, only the built\-in
+information is used.  The position of the first offending character
+is returned in \fIerrpos\fP.
+.SH "RETURN VALUE"
+Returns the \fBTld_rc\fP value \fBTLD_SUCCESS\fP if all code
+points are valid or when \fItld\fP is null, \fBTLD_INVALID\fP if a
+character is not allowed, or additional error codes on general
+failure conditions.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_check_4t.3 b/doc/man/tld_check_4t.3
new file mode 100644 (file)
index 0000000..1a92b49
--- /dev/null
@@ -0,0 +1,51 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_check_4t" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_check_4t \- verify that characters are permitted
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "int tld_check_4t(const uint32_t * " in ", size_t " inlen ", size_t * " errpos ", const Tld_table * " tld ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+Array of unicode code points to process. Does not need to be
+zero terminated.
+.IP "size_t inlen" 12
+Number of unicode code points.
+.IP "size_t * errpos" 12
+Position of offending character is returned here.
+.IP "const Tld_table * tld" 12
+A \fBTld_table\fP data structure representing the restrictions for
+which the input should be tested.
+.SH "DESCRIPTION"
+Test each of the code points in \fIin\fP for whether or not
+they are allowed by the data structure in \fItld\fP, return
+the position of the first character for which this is not
+the case in \fIerrpos\fP.
+.SH "RETURN VALUE"
+Returns the \fBTld_rc\fP value \fBTLD_SUCCESS\fP if all code
+points are valid or when \fItld\fP is null, \fBTLD_INVALID\fP if a
+character is not allowed, or additional error codes on general
+failure conditions.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_check_4tz.3 b/doc/man/tld_check_4tz.3
new file mode 100644 (file)
index 0000000..2f23852
--- /dev/null
@@ -0,0 +1,48 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_check_4tz" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_check_4tz \- verify that characters are permitted
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "int tld_check_4tz(const uint32_t * " in ", size_t * " errpos ", const Tld_table * " tld ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+Zero terminated array of unicode code points to process.
+.IP "size_t * errpos" 12
+Position of offending character is returned here.
+.IP "const Tld_table * tld" 12
+A \fBTld_table\fP data structure representing the restrictions for
+which the input should be tested.
+.SH "DESCRIPTION"
+Test each of the code points in \fIin\fP for whether or not
+they are allowed by the data structure in \fItld\fP, return
+the position of the first character for which this is not
+the case in \fIerrpos\fP.
+.SH "RETURN VALUE"
+Returns the \fBTld_rc\fP value \fBTLD_SUCCESS\fP if all code
+points are valid or when \fItld\fP is null, \fBTLD_INVALID\fP if a
+character is not allowed, or additional error codes on general
+failure conditions.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_check_4z.3 b/doc/man/tld_check_4z.3
new file mode 100644 (file)
index 0000000..2844102
--- /dev/null
@@ -0,0 +1,52 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_check_4z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_check_4z \- verify that characters are permitted
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "int tld_check_4z(const uint32_t * " in ", size_t * " errpos ", const Tld_table ** " overrides ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+Zero\-terminated array of unicode code points to process.
+.IP "size_t * errpos" 12
+Position of offending character is returned here.
+.IP "const Tld_table ** overrides" 12
+A \fBTld_table\fP array of additional domain restriction
+structures that complement and supersede the built\-in information.
+.SH "DESCRIPTION"
+Test each of the code points in \fIin\fP for whether or not they are
+allowed by the information in \fIoverrides\fP or by the built\-in TLD
+restriction data. When data for the same TLD is available both
+internally and in \fIoverrides\fP, the information in \fIoverrides\fP takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If \fIoverrides\fP is \fBNULL\fP, only the built\-in
+information is used.  The position of the first offending character
+is returned in \fIerrpos\fP.
+.SH "RETURN VALUE"
+Returns the \fBTld_rc\fP value \fBTLD_SUCCESS\fP if all code
+points are valid or when \fItld\fP is null, \fBTLD_INVALID\fP if a
+character is not allowed, or additional error codes on general
+failure conditions.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_check_8z.3 b/doc/man/tld_check_8z.3
new file mode 100644 (file)
index 0000000..d564079
--- /dev/null
@@ -0,0 +1,54 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_check_8z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_check_8z \- verify that characters are permitted
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "int tld_check_8z(const char * " in ", size_t * " errpos ", const Tld_table ** " overrides ");"
+.SH ARGUMENTS
+.IP "const char * in" 12
+Zero\-terminated UTF8 string to process.
+.IP "size_t * errpos" 12
+Position of offending character is returned here.
+.IP "const Tld_table ** overrides" 12
+A \fBTld_table\fP array of additional domain restriction
+structures that complement and supersede the built\-in information.
+.SH "DESCRIPTION"
+Test each of the characters in \fIin\fP for whether or not they are
+allowed by the information in \fIoverrides\fP or by the built\-in TLD
+restriction data. When data for the same TLD is available both
+internally and in \fIoverrides\fP, the information in \fIoverrides\fP takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If \fIoverrides\fP is \fBNULL\fP, only the built\-in
+information is used.  The position of the first offending character
+is returned in \fIerrpos\fP.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.
+.SH "RETURN VALUE"
+Returns the \fBTld_rc\fP value \fBTLD_SUCCESS\fP if all
+characters are valid or when \fItld\fP is null, \fBTLD_INVALID\fP if a
+character is not allowed, or additional error codes on general
+failure conditions.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_check_lz.3 b/doc/man/tld_check_lz.3
new file mode 100644 (file)
index 0000000..9f0d207
--- /dev/null
@@ -0,0 +1,54 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_check_lz" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_check_lz \- verify that characters are permitted
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "int tld_check_lz(const char * " in ", size_t * " errpos ", const Tld_table ** " overrides ");"
+.SH ARGUMENTS
+.IP "const char * in" 12
+Zero\-terminated string in the current locales encoding to process.
+.IP "size_t * errpos" 12
+Position of offending character is returned here.
+.IP "const Tld_table ** overrides" 12
+A \fBTld_table\fP array of additional domain restriction
+structures that complement and supersede the built\-in information.
+.SH "DESCRIPTION"
+Test each of the characters in \fIin\fP for whether or not they are
+allowed by the information in \fIoverrides\fP or by the built\-in TLD
+restriction data. When data for the same TLD is available both
+internally and in \fIoverrides\fP, the information in \fIoverrides\fP takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If \fIoverrides\fP is \fBNULL\fP, only the built\-in
+information is used.  The position of the first offending character
+is returned in \fIerrpos\fP.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.
+.SH "RETURN VALUE"
+Returns the \fBTld_rc\fP value \fBTLD_SUCCESS\fP if all
+characters are valid or when \fItld\fP is null, \fBTLD_INVALID\fP if a
+character is not allowed, or additional error codes on general
+failure conditions.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_default_table.3 b/doc/man/tld_default_table.3
new file mode 100644 (file)
index 0000000..3ae40bb
--- /dev/null
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_default_table" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_default_table \- get table for a TLD name
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "const Tld_table * tld_default_table(const char * " tld ", const Tld_table ** " overrides ");"
+.SH ARGUMENTS
+.IP "const char * tld" 12
+TLD name (e.g. "com") as zero terminated ASCII byte string.
+.IP "const Tld_table ** overrides" 12
+Additional zero terminated array of \fBTld_table\fP
+info\-structures for TLDs, or \fBNULL\fP to only use library deault
+tables.
+.SH "DESCRIPTION"
+Get the TLD table for a named TLD, using the internal defaults,
+possibly overrided by the (optional) supplied tables.
+.SH "RETURN VALUE"
+Return structure corresponding to TLD \fItld_str\fP, first
+looking through \fIoverrides\fP then thru built\-in list, or \fBNULL\fP if
+no such structure found.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_get_4.3 b/doc/man/tld_get_4.3
new file mode 100644 (file)
index 0000000..97700b7
--- /dev/null
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_get_4" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_get_4 \- extract top level domain part in input Unicode string
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "int tld_get_4(const uint32_t * " in ", size_t " inlen ", char ** " out ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+Array of unicode code points to process. Does not need to be
+zero terminated.
+.IP "size_t inlen" 12
+Number of unicode code points.
+.IP "char ** out" 12
+Zero terminated ascii result string pointer.
+.SH "DESCRIPTION"
+Isolate the top\-level domain of \fIin\fP and return it as an ASCII
+string in \fIout\fP.
+.SH "RETURN VALUE"
+Return \fBTLD_SUCCESS\fP on success, or the corresponding
+\fBTld_rc\fP error code otherwise.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_get_4z.3 b/doc/man/tld_get_4z.3
new file mode 100644 (file)
index 0000000..823e7c3
--- /dev/null
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_get_4z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_get_4z \- extract top level domain part in input Unicode string
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "int tld_get_4z(const uint32_t * " in ", char ** " out ");"
+.SH ARGUMENTS
+.IP "const uint32_t * in" 12
+Zero terminated array of unicode code points to process.
+.IP "char ** out" 12
+Zero terminated ascii result string pointer.
+.SH "DESCRIPTION"
+Isolate the top\-level domain of \fIin\fP and return it as an ASCII
+string in \fIout\fP.
+.SH "RETURN VALUE"
+Return \fBTLD_SUCCESS\fP on success, or the corresponding
+\fBTld_rc\fP error code otherwise.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_get_table.3 b/doc/man/tld_get_table.3
new file mode 100644 (file)
index 0000000..13fed72
--- /dev/null
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_get_table" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_get_table \- get table for a TLD name in table
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "const Tld_table * tld_get_table(const char * " tld ", const Tld_table ** " tables ");"
+.SH ARGUMENTS
+.IP "const char * tld" 12
+TLD name (e.g. "com") as zero terminated ASCII byte string.
+.IP "const Tld_table ** tables" 12
+Zero terminated array of \fBTld_table\fP info\-structures for
+TLDs.
+.SH "DESCRIPTION"
+Get the TLD table for a named TLD by searching through the given
+TLD table array.
+.SH "RETURN VALUE"
+Return structure corresponding to TLD \fItld\fP by going
+thru \fItables\fP, or return \fBNULL\fP if no such structure is found.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_get_z.3 b/doc/man/tld_get_z.3
new file mode 100644 (file)
index 0000000..280f3c3
--- /dev/null
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_get_z" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_get_z \- extract top level domain part in input string
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "int tld_get_z(const char * " in ", char ** " out ");"
+.SH ARGUMENTS
+.IP "const char * in" 12
+Zero terminated character array to process.
+.IP "char ** out" 12
+Zero terminated ascii result string pointer.
+.SH "DESCRIPTION"
+Isolate the top\-level domain of \fIin\fP and return it as an ASCII
+string in \fIout\fP.  The input string \fIin\fP may be UTF\-8, ISO\-8859\-1 or
+any ASCII compatible character encoding.
+.SH "RETURN VALUE"
+Return \fBTLD_SUCCESS\fP on success, or the corresponding
+\fBTld_rc\fP error code otherwise.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/man/tld_strerror.3 b/doc/man/tld_strerror.3
new file mode 100644 (file)
index 0000000..3de8e86
--- /dev/null
@@ -0,0 +1,53 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by gdoc.
+.TH "tld_strerror" 3 "1.15" "libidn" "libidn"
+.SH NAME
+tld_strerror \- return string describing tld error code
+.SH SYNOPSIS
+.B #include <tld.h>
+.sp
+.BI "const char * tld_strerror(Tld_rc " rc ");"
+.SH ARGUMENTS
+.IP "Tld_rc rc" 12
+tld return code
+.SH "DESCRIPTION"
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+.SH "TLD_SUCCESS"
+Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non\-zero values, for logical comparison purposes.
+.SH "TLD_INVALID"
+Invalid character found.
+.SH "TLD_NODATA"
+No input data was provided.
+.SH "TLD_MALLOC_ERROR"
+Error during memory allocation.
+.SH "TLD_ICONV_ERROR"
+Error during iconv string conversion.
+.SH "TLD_NO_TLD"
+No top\-level domain found in domain string.
+.SH "RETURN VALUE"
+Returns a pointer to a statically allocated string
+containing a description of the error with the return code \fIrc\fP.
+.SH "REPORTING BUGS"
+Report bugs to <bug-libidn@gnu.org>.
+GNU Libidn home page: http://www.gnu.org/software/libidn/
+General help using GNU software: http://www.gnu.org/gethelp/
+.SH COPYRIGHT
+Copyright \(co 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+.br
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+.SH "SEE ALSO"
+The full documentation for
+.B libidn
+is maintained as a Texinfo manual.  If the
+.B info
+and
+.B libidn
+programs are properly installed at your site, the command
+.IP
+.B info libidn
+.PP
+should give you access to the complete manual.
diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am
new file mode 100644 (file)
index 0000000..3152f9f
--- /dev/null
@@ -0,0 +1,87 @@
+## Process this file with automake to produce Makefile.in
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE=$(PACKAGE)
+
+# The top-level SGML file. You can change this if you want to.
+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
+
+# The directory containing the source code. Relative to $(srcdir).
+# gtk-doc will search all .c & .h files beneath here for inline comments
+# documenting the functions and macros.
+# e.g. DOC_SOURCE_DIR=../../../gtk
+DOC_SOURCE_DIR=../../lib
+
+# Extra options to pass to gtkdoc-scangobj. Not normally needed.
+SCANGOBJ_OPTIONS=
+
+# Extra options to supply to gtkdoc-scan.
+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
+SCAN_OPTIONS=--ignore-decorators=IDNAPI
+
+# Extra options to supply to gtkdoc-mkdb.
+# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
+MKDB_OPTIONS=--sgml-mode --output-format=xml
+
+# Extra options to supply to gtkdoc-mktmpl
+# e.g. MKTMPL_OPTIONS=--only-section-tmpl
+MKTMPL_OPTIONS=
+
+# Extra options to supply to gtkdoc-fixref. Not normally needed.
+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
+FIXXREF_OPTIONS=
+
+# Used for dependencies. The docs will be rebuilt if any of these change.
+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
+HFILE_GLOB=$(top_srcdir)/lib/*.h
+CFILE_GLOB=$(top_srcdir)/lib/*.c
+
+# Header files to ignore when scanning.
+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
+IGNORE_HFILES=gunibreak.h gunicomp.h gunidecomp.h idn-int.h gl
+
+# Images to copy into HTML directory.
+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
+HTML_IMAGES=../libidn-components.png
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
+content_files=
+
+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
+# These files must be listed here *and* in content_files
+# e.g. expand_content_files=running.sgml
+expand_content_files=
+
+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
+# Only needed if you are using gtkdoc-scangobj to dynamically query widget
+# signals and properties.
+# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
+# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
+AM_CPPFLAGS=
+GTKDOC_LIBS=
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+include $(top_srcdir)/gtk-doc.make
+
+# Other files to distribute
+# e.g. EXTRA_DIST += version.xml.in
+EXTRA_DIST +=
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want your docs-status tested during 'make check'
+#TESTS = $(GTKDOC_CHECK)
+
diff --git a/doc/reference/Makefile.in b/doc/reference/Makefile.in
new file mode 100644 (file)
index 0000000..8cfeaaa
--- /dev/null
@@ -0,0 +1,917 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/gtk-doc.make
+subdir = doc/reference
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE = $(PACKAGE)
+
+# The top-level SGML file. You can change this if you want to.
+DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml
+
+# The directory containing the source code. Relative to $(srcdir).
+# gtk-doc will search all .c & .h files beneath here for inline comments
+# documenting the functions and macros.
+# e.g. DOC_SOURCE_DIR=../../../gtk
+DOC_SOURCE_DIR = ../../lib
+
+# Extra options to pass to gtkdoc-scangobj. Not normally needed.
+SCANGOBJ_OPTIONS = 
+
+# Extra options to supply to gtkdoc-scan.
+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
+SCAN_OPTIONS = --ignore-decorators=IDNAPI
+
+# Extra options to supply to gtkdoc-mkdb.
+# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
+MKDB_OPTIONS = --sgml-mode --output-format=xml
+
+# Extra options to supply to gtkdoc-mktmpl
+# e.g. MKTMPL_OPTIONS=--only-section-tmpl
+MKTMPL_OPTIONS = 
+
+# Extra options to supply to gtkdoc-fixref. Not normally needed.
+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
+FIXXREF_OPTIONS = 
+
+# Used for dependencies. The docs will be rebuilt if any of these change.
+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
+HFILE_GLOB = $(top_srcdir)/lib/*.h
+CFILE_GLOB = $(top_srcdir)/lib/*.c
+
+# Header files to ignore when scanning.
+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
+IGNORE_HFILES = gunibreak.h gunicomp.h gunidecomp.h idn-int.h gl
+
+# Images to copy into HTML directory.
+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
+HTML_IMAGES = ../libidn-components.png
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
+content_files = 
+
+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
+# These files must be listed here *and* in content_files
+# e.g. expand_content_files=running.sgml
+expand_content_files = 
+
+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
+# Only needed if you are using gtkdoc-scangobj to dynamically query widget
+# signals and properties.
+# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
+# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
+AM_CPPFLAGS = 
+GTKDOC_LIBS = 
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = 
+@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+
+# Other files to distribute
+# e.g. EXTRA_DIST += version.xml.in
+EXTRA_DIST = $(content_files) $(HTML_IMAGES) $(DOC_MAIN_SGML_FILE) \
+       $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+          $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = \
+       $(DOC_MODULE).args       \
+       $(DOC_MODULE).hierarchy  \
+       $(DOC_MODULE).interfaces \
+       $(DOC_MODULE).prerequisites \
+       $(DOC_MODULE).signals
+
+REPORT_FILES = \
+       $(DOC_MODULE)-undocumented.txt \
+       $(DOC_MODULE)-undeclared.txt \
+       $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/reference/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/reference/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+       maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+       clean-libtool clean-local dist-hook distclean \
+       distclean-generic distclean-libtool distclean-local distdir \
+       dvi dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-data-local install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic \
+       maintainer-clean-local mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-local
+
+
+@ENABLE_GTK_DOC_TRUE@all-local: html-build.stamp
+@ENABLE_GTK_DOC_FALSE@all-local:
+
+docs: html-build.stamp
+
+$(REPORT_FILES): sgml-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+       @echo 'gtk-doc: Scanning header files'
+       @-chmod -R u+w $(srcdir)
+       @cd $(srcdir) && \
+         gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+       @if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+           CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+       else \
+           cd $(srcdir) ; \
+           for i in $(SCANOBJ_FILES) ; do \
+               test -f $$i || touch $$i ; \
+           done \
+       fi
+       @touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+       @true
+
+#### templates ####
+
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+       @echo 'gtk-doc: Rebuilding template files'
+       @-chmod -R u+w $(srcdir)
+       @cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+       @touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+       @true
+
+$(srcdir)/tmpl/*.sgml:
+       @true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+       @echo 'gtk-doc: Building XML'
+       @-chmod -R u+w $(srcdir)
+       @cd $(srcdir) && \
+       gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
+       @touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+       @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+       @echo 'gtk-doc: Building HTML'
+       @-chmod -R u+w $(srcdir)
+       @rm -rf $(srcdir)/html
+       @mkdir $(srcdir)/html
+       @mkhtml_options=""; \
+       gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-path"; \
+       if test "$(?)" = "0"; then \
+         mkhtml_options=--path="$(srcdir)"; \
+       fi; \
+       cd $(srcdir)/html && gtkdoc-mkhtml $(mkhtml_options) $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+       @test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+       @echo 'gtk-doc: Fixing cross-references'
+       @cd $(srcdir) && gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+       @touch html-build.stamp
+
+##############
+
+clean-local:
+       rm -f *~ *.bak
+       rm -rf .libs
+
+distclean-local:
+       cd $(srcdir) && \
+         rm -rf xml $(REPORT_FILES) \
+                $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+maintainer-clean-local: clean
+       cd $(srcdir) && rm -rf xml html
+
+install-data-local:
+       @installfiles=`echo $(srcdir)/html/*`; \
+       if test "$$installfiles" = '$(srcdir)/html/*'; \
+       then echo '-- Nothing to install' ; \
+       else \
+         if test -n "$(DOC_MODULE_VERSION)"; then \
+           installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+         else \
+           installdir="$(DESTDIR)$(TARGET_DIR)"; \
+         fi; \
+         $(mkinstalldirs) $${installdir} ; \
+         for i in $$installfiles; do \
+           echo '-- Installing '$$i ; \
+           $(INSTALL_DATA) $$i $${installdir}; \
+         done; \
+         if test -n "$(DOC_MODULE_VERSION)"; then \
+           mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+             $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+           mv -f $${installdir}/$(DOC_MODULE).devhelp \
+             $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \
+         fi; \
+         $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
+       fi
+
+uninstall-local:
+       @if test -n "$(DOC_MODULE_VERSION)"; then \
+         installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+       else \
+         installdir="$(DESTDIR)$(TARGET_DIR)"; \
+       fi; \
+       rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+@ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc:
+@ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc:
+@ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+@ENABLE_GTK_DOC_FALSE@ @false
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+       mkdir $(distdir)/tmpl
+       mkdir $(distdir)/xml
+       mkdir $(distdir)/html
+       -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+       -cp $(srcdir)/xml/*.xml $(distdir)/xml
+       cp $(srcdir)/html/* $(distdir)/html
+       -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+       -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+       cd $(distdir) && rm -f $(DISTCLEANFILES)
+       $(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want your docs-status tested during 'make check'
+#TESTS = $(GTKDOC_CHECK)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/reference/html/ch01.html b/doc/reference/html/ch01.html
new file mode 100644 (file)
index 0000000..1f1d830
--- /dev/null
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GNU Libidn API Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="up" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="prev" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="next" href="libidn-idna.html" title="idna">
+<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="chapter" href="ch01.html" title="GNU Libidn API Reference Manual">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GNU Libidn API Reference Manual</th>
+<td><a accesskey="n" href="libidn-idna.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter" title="GNU Libidn API Reference Manual">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="id2984190"></a>GNU Libidn API Reference Manual</h2></div></div></div>
+<div class="toc"><dl>
+<dt>
+<span class="refentrytitle"><a href="libidn-idna.html">idna</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-pr29.html">pr29</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-punycode.html">punycode</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-tld.html">tld</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-stringprep.html">stringprep</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-idn-free.html">idn-free</a></span><span class="refpurpose"></span>
+</dt>
+</dl></div>
+<p>
+GNU Libidn is a fully documented implementation of the Stringprep,
+Punycode and IDNA specifications.  Libidn's purpose is to encode and
+decode internationalized domain names.  The native C, C# and Java
+libraries are available under the GNU Lesser General Public License
+version 2.1 or later.
+    </p>
+<p>
+The library contains a generic Stringprep implementation.  Profiles
+for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included.
+Punycode and ASCII Compatible Encoding (ACE) via IDNA are supported.
+A mechanism to define Top-Level Domain (TLD) specific validation
+tables, and to compare strings against those tables, is included.
+Default tables for some TLDs are also included.
+    </p>
+<p>
+The Stringprep API consists of two main functions, one for converting
+data from the system's native representation into UTF-8, and one
+function to perform the Stringprep processing.  Adding a new
+Stringprep profile for your application within the API is
+straightforward.  The Punycode API consists of one encoding function
+and one decoding function.  The IDNA API consists of the ToASCII and
+ToUnicode functions, as well as an high-level interface for converting
+entire domain names to and from the ACE encoded form.  The TLD API
+consists of one set of functions to extract the TLD name from a domain
+string, one set of functions to locate the proper TLD table to use
+based on the TLD name, and core functions to validate a string against
+a TLD table, and some utility wrappers to perform all the steps in one
+call.
+    </p>
+<p>
+The library is used by, e.g., GNU SASL and Shishi to process user
+names and passwords.  Libidn can be built into GNU Libc to enable a
+new system-wide getaddrinfo flag for IDN processing.
+    </p>
+<p>
+Libidn is developed for the GNU/Linux system, but runs on over 20 Unix
+platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.  The
+library is written in C and (parts of) the API is also accessible from
+C++, Emacs Lisp, Python and Java.  A native Java and C# port is
+included.
+    </p>
+<p>
+Also included is a command line tool, several self tests, code
+examples, and more, all licensed under the GNU General Public License
+version 3.0 or later.
+    </p>
+<p>
+      The internal layout of the library, and how your application
+      interact with the various parts of the library, are shown in
+      <a class="xref" href="ch01.html#components" title="Figure 1. Components of Libidn">Figure 1, “Components of Libidn”</a>.
+    </p>
+<div class="figure">
+<a name="components"></a><p class="title"><b>Figure 1. Components of Libidn</b></p>
+<div class="figure-contents"><div><img src="libidn-components.png" alt="Components of Libidn"></div></div>
+</div>
+<br class="figure-break">
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.11</div>
+</body>
+</html>
diff --git a/doc/reference/html/home.png b/doc/reference/html/home.png
new file mode 100644 (file)
index 0000000..1700361
Binary files /dev/null and b/doc/reference/html/home.png differ
diff --git a/doc/reference/html/index.html b/doc/reference/html/index.html
new file mode 100644 (file)
index 0000000..040d93b
--- /dev/null
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GNU Libidn API Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="next" href="ch01.html" title="GNU Libidn API Reference Manual">
+<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="chapter" href="ch01.html" title="GNU Libidn API Reference Manual">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book" title="GNU Libidn API Reference Manual">
+<div class="titlepage">
+<div><div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GNU Libidn API Reference Manual</p></th></tr></table></div></div>
+<hr>
+</div>
+<div class="toc"><dl>
+<dt><span class="chapter"><a href="ch01.html">GNU Libidn API Reference Manual</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="libidn-idna.html">idna</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-pr29.html">pr29</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-punycode.html">punycode</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-tld.html">tld</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-stringprep.html">stringprep</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="libidn-idn-free.html">idn-free</a></span><span class="refpurpose"></span>
+</dt>
+</dl></dd>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.11</div>
+</body>
+</html>
diff --git a/doc/reference/html/index.sgml b/doc/reference/html/index.sgml
new file mode 100644 (file)
index 0000000..74f3de9
--- /dev/null
@@ -0,0 +1,100 @@
+<ANCHOR id="libidn-idna" href="libidn/libidn-idna.html">
+<ANCHOR id="libidn-idna.synopsis" href="libidn/libidn-idna.html#libidn-idna.synopsis">
+<ANCHOR id="libidn-idna.description" href="libidn/libidn-idna.html#libidn-idna.description">
+<ANCHOR id="libidn-idna.details" href="libidn/libidn-idna.html#libidn-idna.details">
+<ANCHOR id="IDNAPI--CAPS" href="libidn/libidn-idna.html#IDNAPI--CAPS">
+<ANCHOR id="Idna-rc" href="libidn/libidn-idna.html#Idna-rc">
+<ANCHOR id="Idna-flags" href="libidn/libidn-idna.html#Idna-flags">
+<ANCHOR id="IDNA-ACE-PREFIX--CAPS" href="libidn/libidn-idna.html#IDNA-ACE-PREFIX--CAPS">
+<ANCHOR id="idna-strerror" href="libidn/libidn-idna.html#idna-strerror">
+<ANCHOR id="idna-to-ascii-4i" href="libidn/libidn-idna.html#idna-to-ascii-4i">
+<ANCHOR id="idna-to-unicode-44i" href="libidn/libidn-idna.html#idna-to-unicode-44i">
+<ANCHOR id="idna-to-ascii-4z" href="libidn/libidn-idna.html#idna-to-ascii-4z">
+<ANCHOR id="idna-to-ascii-8z" href="libidn/libidn-idna.html#idna-to-ascii-8z">
+<ANCHOR id="idna-to-ascii-lz" href="libidn/libidn-idna.html#idna-to-ascii-lz">
+<ANCHOR id="idna-to-unicode-4z4z" href="libidn/libidn-idna.html#idna-to-unicode-4z4z">
+<ANCHOR id="idna-to-unicode-8z4z" href="libidn/libidn-idna.html#idna-to-unicode-8z4z">
+<ANCHOR id="idna-to-unicode-8z8z" href="libidn/libidn-idna.html#idna-to-unicode-8z8z">
+<ANCHOR id="idna-to-unicode-8zlz" href="libidn/libidn-idna.html#idna-to-unicode-8zlz">
+<ANCHOR id="idna-to-unicode-lzlz" href="libidn/libidn-idna.html#idna-to-unicode-lzlz">
+<ANCHOR id="libidn-pr29" href="libidn/libidn-pr29.html">
+<ANCHOR id="libidn-pr29.synopsis" href="libidn/libidn-pr29.html#libidn-pr29.synopsis">
+<ANCHOR id="libidn-pr29.description" href="libidn/libidn-pr29.html#libidn-pr29.description">
+<ANCHOR id="libidn-pr29.details" href="libidn/libidn-pr29.html#libidn-pr29.details">
+<ANCHOR id="IDNAPI--CAPS" href="libidn/libidn-pr29.html#IDNAPI--CAPS">
+<ANCHOR id="Pr29-rc" href="libidn/libidn-pr29.html#Pr29-rc">
+<ANCHOR id="pr29-strerror" href="libidn/libidn-pr29.html#pr29-strerror">
+<ANCHOR id="pr29-4" href="libidn/libidn-pr29.html#pr29-4">
+<ANCHOR id="pr29-4z" href="libidn/libidn-pr29.html#pr29-4z">
+<ANCHOR id="pr29-8z" href="libidn/libidn-pr29.html#pr29-8z">
+<ANCHOR id="libidn-punycode" href="libidn/libidn-punycode.html">
+<ANCHOR id="libidn-punycode.synopsis" href="libidn/libidn-punycode.html#libidn-punycode.synopsis">
+<ANCHOR id="libidn-punycode.description" href="libidn/libidn-punycode.html#libidn-punycode.description">
+<ANCHOR id="libidn-punycode.details" href="libidn/libidn-punycode.html#libidn-punycode.details">
+<ANCHOR id="IDNAPI--CAPS" href="libidn/libidn-punycode.html#IDNAPI--CAPS">
+<ANCHOR id="Punycode-status" href="libidn/libidn-punycode.html#Punycode-status">
+<ANCHOR id="punycode-strerror" href="libidn/libidn-punycode.html#punycode-strerror">
+<ANCHOR id="punycode-uint" href="libidn/libidn-punycode.html#punycode-uint">
+<ANCHOR id="punycode-encode" href="libidn/libidn-punycode.html#punycode-encode">
+<ANCHOR id="punycode-decode" href="libidn/libidn-punycode.html#punycode-decode">
+<ANCHOR id="libidn-tld" href="libidn/libidn-tld.html">
+<ANCHOR id="libidn-tld.synopsis" href="libidn/libidn-tld.html#libidn-tld.synopsis">
+<ANCHOR id="libidn-tld.description" href="libidn/libidn-tld.html#libidn-tld.description">
+<ANCHOR id="libidn-tld.details" href="libidn/libidn-tld.html#libidn-tld.details">
+<ANCHOR id="IDNAPI--CAPS" href="libidn/libidn-tld.html#IDNAPI--CAPS">
+<ANCHOR id="Tld-table-element" href="libidn/libidn-tld.html#Tld-table-element">
+<ANCHOR id="Tld-table" href="libidn/libidn-tld.html#Tld-table">
+<ANCHOR id="Tld-rc" href="libidn/libidn-tld.html#Tld-rc">
+<ANCHOR id="tld-strerror" href="libidn/libidn-tld.html#tld-strerror">
+<ANCHOR id="tld-get-4" href="libidn/libidn-tld.html#tld-get-4">
+<ANCHOR id="tld-get-4z" href="libidn/libidn-tld.html#tld-get-4z">
+<ANCHOR id="tld-get-z" href="libidn/libidn-tld.html#tld-get-z">
+<ANCHOR id="tld-get-table" href="libidn/libidn-tld.html#tld-get-table">
+<ANCHOR id="tld-default-table" href="libidn/libidn-tld.html#tld-default-table">
+<ANCHOR id="tld-check-4t" href="libidn/libidn-tld.html#tld-check-4t">
+<ANCHOR id="tld-check-4tz" href="libidn/libidn-tld.html#tld-check-4tz">
+<ANCHOR id="tld-check-4" href="libidn/libidn-tld.html#tld-check-4">
+<ANCHOR id="tld-check-4z" href="libidn/libidn-tld.html#tld-check-4z">
+<ANCHOR id="tld-check-8z" href="libidn/libidn-tld.html#tld-check-8z">
+<ANCHOR id="tld-check-lz" href="libidn/libidn-tld.html#tld-check-lz">
+<ANCHOR id="libidn-stringprep" href="libidn/libidn-stringprep.html">
+<ANCHOR id="libidn-stringprep.synopsis" href="libidn/libidn-stringprep.html#libidn-stringprep.synopsis">
+<ANCHOR id="libidn-stringprep.description" href="libidn/libidn-stringprep.html#libidn-stringprep.description">
+<ANCHOR id="libidn-stringprep.details" href="libidn/libidn-stringprep.html#libidn-stringprep.details">
+<ANCHOR id="IDNAPI--CAPS" href="libidn/libidn-stringprep.html#IDNAPI--CAPS">
+<ANCHOR id="STRINGPREP-VERSION--CAPS" href="libidn/libidn-stringprep.html#STRINGPREP-VERSION--CAPS">
+<ANCHOR id="Stringprep-rc" href="libidn/libidn-stringprep.html#Stringprep-rc">
+<ANCHOR id="Stringprep-profile-flags" href="libidn/libidn-stringprep.html#Stringprep-profile-flags">
+<ANCHOR id="Stringprep-profile-steps" href="libidn/libidn-stringprep.html#Stringprep-profile-steps">
+<ANCHOR id="STRINGPREP-MAX-MAP-CHARS--CAPS" href="libidn/libidn-stringprep.html#STRINGPREP-MAX-MAP-CHARS--CAPS">
+<ANCHOR id="Stringprep-table-element" href="libidn/libidn-stringprep.html#Stringprep-table-element">
+<ANCHOR id="Stringprep-profile" href="libidn/libidn-stringprep.html#Stringprep-profile">
+<ANCHOR id="Stringprep-profiles" href="libidn/libidn-stringprep.html#Stringprep-profiles">
+<ANCHOR id="stringprep-nameprep" href="libidn/libidn-stringprep.html#stringprep-nameprep">
+<ANCHOR id="stringprep-nameprep-no-unassigned" href="libidn/libidn-stringprep.html#stringprep-nameprep-no-unassigned">
+<ANCHOR id="stringprep-plain" href="libidn/libidn-stringprep.html#stringprep-plain">
+<ANCHOR id="stringprep-kerberos5" href="libidn/libidn-stringprep.html#stringprep-kerberos5">
+<ANCHOR id="stringprep-xmpp-nodeprep" href="libidn/libidn-stringprep.html#stringprep-xmpp-nodeprep">
+<ANCHOR id="stringprep-xmpp-resourceprep" href="libidn/libidn-stringprep.html#stringprep-xmpp-resourceprep">
+<ANCHOR id="stringprep-iscsi" href="libidn/libidn-stringprep.html#stringprep-iscsi">
+<ANCHOR id="stringprep-4i" href="libidn/libidn-stringprep.html#stringprep-4i">
+<ANCHOR id="stringprep-4zi" href="libidn/libidn-stringprep.html#stringprep-4zi">
+<ANCHOR id="stringprep" href="libidn/libidn-stringprep.html#stringprep">
+<ANCHOR id="stringprep-profile" href="libidn/libidn-stringprep.html#stringprep-profile">
+<ANCHOR id="stringprep-strerror" href="libidn/libidn-stringprep.html#stringprep-strerror">
+<ANCHOR id="stringprep-check-version" href="libidn/libidn-stringprep.html#stringprep-check-version">
+<ANCHOR id="stringprep-unichar-to-utf8" href="libidn/libidn-stringprep.html#stringprep-unichar-to-utf8">
+<ANCHOR id="stringprep-utf8-to-unichar" href="libidn/libidn-stringprep.html#stringprep-utf8-to-unichar">
+<ANCHOR id="stringprep-utf8-to-ucs4" href="libidn/libidn-stringprep.html#stringprep-utf8-to-ucs4">
+<ANCHOR id="stringprep-ucs4-to-utf8" href="libidn/libidn-stringprep.html#stringprep-ucs4-to-utf8">
+<ANCHOR id="stringprep-utf8-nfkc-normalize" href="libidn/libidn-stringprep.html#stringprep-utf8-nfkc-normalize">
+<ANCHOR id="stringprep-ucs4-nfkc-normalize" href="libidn/libidn-stringprep.html#stringprep-ucs4-nfkc-normalize">
+<ANCHOR id="stringprep-locale-charset" href="libidn/libidn-stringprep.html#stringprep-locale-charset">
+<ANCHOR id="stringprep-convert" href="libidn/libidn-stringprep.html#stringprep-convert">
+<ANCHOR id="stringprep-locale-to-utf8" href="libidn/libidn-stringprep.html#stringprep-locale-to-utf8">
+<ANCHOR id="stringprep-utf8-to-locale" href="libidn/libidn-stringprep.html#stringprep-utf8-to-locale">
+<ANCHOR id="libidn-idn-free" href="libidn/libidn-idn-free.html">
+<ANCHOR id="libidn-idn-free.synopsis" href="libidn/libidn-idn-free.html#libidn-idn-free.synopsis">
+<ANCHOR id="libidn-idn-free.description" href="libidn/libidn-idn-free.html#libidn-idn-free.description">
+<ANCHOR id="libidn-idn-free.details" href="libidn/libidn-idn-free.html#libidn-idn-free.details">
+<ANCHOR id="IDNAPI--CAPS" href="libidn/libidn-idn-free.html#IDNAPI--CAPS">
diff --git a/doc/reference/html/left.png b/doc/reference/html/left.png
new file mode 100644 (file)
index 0000000..2d05b3d
Binary files /dev/null and b/doc/reference/html/left.png differ
diff --git a/doc/reference/html/libidn-components.png b/doc/reference/html/libidn-components.png
new file mode 100644 (file)
index 0000000..697d948
Binary files /dev/null and b/doc/reference/html/libidn-components.png differ
diff --git a/doc/reference/html/libidn-idn-free.html b/doc/reference/html/libidn-idn-free.html
new file mode 100644 (file)
index 0000000..2d626c0
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>idn-free</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="up" href="ch01.html" title="GNU Libidn API Reference Manual">
+<link rel="prev" href="libidn-stringprep.html" title="stringprep">
+<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="chapter" href="ch01.html" title="GNU Libidn API Reference Manual">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libidn-stringprep.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GNU Libidn API Reference Manual</th>
+<td> </td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libidn-idn-free.synopsis" class="shortcut">Top</a>
+                 | 
+                <a href="#libidn-idn-free.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry" title="idn-free">
+<a name="libidn-idn-free"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libidn-idn-free.top_of_page"></a>idn-free</span></h2>
+<p>idn-free</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv" title="Synopsis">
+<a name="libidn-idn-free.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#define             <a class="link" href="libidn-idna.html#IDNAPI--CAPS" title="IDNAPI">IDNAPI</a>
+</pre>
+</div>
+<div class="refsect1" title="Description">
+<a name="libidn-idn-free.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1" title="Details">
+<a name="libidn-idn-free.details"></a><h2>Details</h2>
+<div class="refsect2" title="IDNAPI">
+<a name="IDNAPI--CAPS"></a><h3>IDNAPI</h3>
+<pre class="programlisting">#define             IDNAPI</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.11</div>
+</body>
+</html>
diff --git a/doc/reference/html/libidn-idna.html b/doc/reference/html/libidn-idna.html
new file mode 100644 (file)
index 0000000..cf8bcf4
--- /dev/null
@@ -0,0 +1,762 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>idna</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="up" href="ch01.html" title="GNU Libidn API Reference Manual">
+<link rel="prev" href="ch01.html" title="GNU Libidn API Reference Manual">
+<link rel="next" href="libidn-pr29.html" title="pr29">
+<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="chapter" href="ch01.html" title="GNU Libidn API Reference Manual">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="ch01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GNU Libidn API Reference Manual</th>
+<td><a accesskey="n" href="libidn-pr29.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libidn-idna.synopsis" class="shortcut">Top</a>
+                 | 
+                <a href="#libidn-idna.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry" title="idna">
+<a name="libidn-idna"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libidn-idna.top_of_page"></a>idna</span></h2>
+<p>idna</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv" title="Synopsis">
+<a name="libidn-idna.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#define             <a class="link" href="libidn-idna.html#IDNAPI--CAPS" title="IDNAPI">IDNAPI</a>
+enum                <a class="link" href="libidn-idna.html#Idna-rc" title="enum Idna_rc">Idna_rc</a>;
+enum                <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags">Idna_flags</a>;
+#define             <a class="link" href="libidn-idna.html#IDNA-ACE-PREFIX--CAPS" title="IDNA_ACE_PREFIX">IDNA_ACE_PREFIX</a>
+const char *        <a class="link" href="libidn-idna.html#idna-strerror" title="idna_strerror ()">idna_strerror</a>                       (<a class="link" href="libidn-idna.html#Idna-rc" title="enum Idna_rc">Idna_rc</a> rc);
+int                 <a class="link" href="libidn-idna.html#idna-to-ascii-4i" title="idna_to_ascii_4i ()">idna_to_ascii_4i</a>                    (const uint32_t *in,
+                                                         size_t inlen,
+                                                         char *out,
+                                                         int flags);
+int                 <a class="link" href="libidn-idna.html#idna-to-unicode-44i" title="idna_to_unicode_44i ()">idna_to_unicode_44i</a>                 (const uint32_t *in,
+                                                         size_t inlen,
+                                                         uint32_t *out,
+                                                         size_t *outlen,
+                                                         int flags);
+int                 <a class="link" href="libidn-idna.html#idna-to-ascii-4z" title="idna_to_ascii_4z ()">idna_to_ascii_4z</a>                    (const uint32_t *input,
+                                                         char **output,
+                                                         int flags);
+int                 <a class="link" href="libidn-idna.html#idna-to-ascii-8z" title="idna_to_ascii_8z ()">idna_to_ascii_8z</a>                    (const char *input,
+                                                         char **output,
+                                                         int flags);
+int                 <a class="link" href="libidn-idna.html#idna-to-ascii-lz" title="idna_to_ascii_lz ()">idna_to_ascii_lz</a>                    (const char *input,
+                                                         char **output,
+                                                         int flags);
+int                 <a class="link" href="libidn-idna.html#idna-to-unicode-4z4z" title="idna_to_unicode_4z4z ()">idna_to_unicode_4z4z</a>                (const uint32_t *input,
+                                                         uint32_t **output,
+                                                         int flags);
+int                 <a class="link" href="libidn-idna.html#idna-to-unicode-8z4z" title="idna_to_unicode_8z4z ()">idna_to_unicode_8z4z</a>                (const char *input,
+                                                         uint32_t **output,
+                                                         int flags);
+int                 <a class="link" href="libidn-idna.html#idna-to-unicode-8z8z" title="idna_to_unicode_8z8z ()">idna_to_unicode_8z8z</a>                (const char *input,
+                                                         char **output,
+                                                         int flags);
+int                 <a class="link" href="libidn-idna.html#idna-to-unicode-8zlz" title="idna_to_unicode_8zlz ()">idna_to_unicode_8zlz</a>                (const char *input,
+                                                         char **output,
+                                                         int flags);
+int                 <a class="link" href="libidn-idna.html#idna-to-unicode-lzlz" title="idna_to_unicode_lzlz ()">idna_to_unicode_lzlz</a>                (const char *input,
+                                                         char **output,
+                                                         int flags);
+</pre>
+</div>
+<div class="refsect1" title="Description">
+<a name="libidn-idna.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1" title="Details">
+<a name="libidn-idna.details"></a><h2>Details</h2>
+<div class="refsect2" title="IDNAPI">
+<a name="IDNAPI--CAPS"></a><h3>IDNAPI</h3>
+<pre class="programlisting">#define             IDNAPI</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="enum Idna_rc">
+<a name="Idna-rc"></a><h3>enum Idna_rc</h3>
+<pre class="programlisting">  typedef enum
+  {
+    IDNA_SUCCESS = 0,
+    IDNA_STRINGPREP_ERROR = 1,
+    IDNA_PUNYCODE_ERROR = 2,
+    IDNA_CONTAINS_NON_LDH = 3,
+    /* Workaround typo in earlier versions. */
+    IDNA_CONTAINS_LDH = IDNA_CONTAINS_NON_LDH,
+    IDNA_CONTAINS_MINUS = 4,
+    IDNA_INVALID_LENGTH = 5,
+    IDNA_NO_ACE_PREFIX = 6,
+    IDNA_ROUNDTRIP_VERIFY_ERROR = 7,
+    IDNA_CONTAINS_ACE_PREFIX = 8,
+    IDNA_ICONV_ERROR = 9,
+    /* Internal errors. */
+    IDNA_MALLOC_ERROR = 201,
+    IDNA_DLOPEN_ERROR = 202
+  } Idna_rc;
+</pre>
+<p>
+Enumerated return codes of <a class="link" href="libidn-idna.html#idna-to-ascii-4i" title="idna_to_ascii_4i ()"><code class="function">idna_to_ascii_4i()</code></a>,
+<a class="link" href="libidn-idna.html#idna-to-unicode-44i" title="idna_to_unicode_44i ()"><code class="function">idna_to_unicode_44i()</code></a> functions (and functions derived from those
+functions).  The value 0 is guaranteed to always correspond to
+success.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="IDNA-SUCCESS--CAPS"></a><span class="term"><code class="literal">IDNA_SUCCESS</code></span></p></td>
+<td> Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-STRINGPREP-ERROR--CAPS"></a><span class="term"><code class="literal">IDNA_STRINGPREP_ERROR</code></span></p></td>
+<td>  Error during string preparation.
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-PUNYCODE-ERROR--CAPS"></a><span class="term"><code class="literal">IDNA_PUNYCODE_ERROR</code></span></p></td>
+<td> Error during punycode operation.
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-CONTAINS-NON-LDH--CAPS"></a><span class="term"><code class="literal">IDNA_CONTAINS_NON_LDH</code></span></p></td>
+<td> For IDNA_USE_STD3_ASCII_RULES, indicate that
+  the string contains non-LDH ASCII characters.
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-CONTAINS-LDH--CAPS"></a><span class="term"><code class="literal">IDNA_CONTAINS_LDH</code></span></p></td>
+<td>
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-CONTAINS-MINUS--CAPS"></a><span class="term"><code class="literal">IDNA_CONTAINS_MINUS</code></span></p></td>
+<td> For IDNA_USE_STD3_ASCII_RULES, indicate that
+  the string contains a leading or trailing hyphen-minus (U+002D).
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-INVALID-LENGTH--CAPS"></a><span class="term"><code class="literal">IDNA_INVALID_LENGTH</code></span></p></td>
+<td> The final output string is not within the
+  (inclusive) range 1 to 63 characters.
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-NO-ACE-PREFIX--CAPS"></a><span class="term"><code class="literal">IDNA_NO_ACE_PREFIX</code></span></p></td>
+<td> The string does not contain the ACE prefix
+  (for ToUnicode).
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-ROUNDTRIP-VERIFY-ERROR--CAPS"></a><span class="term"><code class="literal">IDNA_ROUNDTRIP_VERIFY_ERROR</code></span></p></td>
+<td> The ToASCII operation on output
+  string does not equal the input.
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-CONTAINS-ACE-PREFIX--CAPS"></a><span class="term"><code class="literal">IDNA_CONTAINS_ACE_PREFIX</code></span></p></td>
+<td> The input contains the ACE prefix (for
+  ToASCII).
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-ICONV-ERROR--CAPS"></a><span class="term"><code class="literal">IDNA_ICONV_ERROR</code></span></p></td>
+<td> Could not convert string in locale encoding.
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-MALLOC-ERROR--CAPS"></a><span class="term"><code class="literal">IDNA_MALLOC_ERROR</code></span></p></td>
+<td> Could not allocate buffer (this is typically a
+  fatal error).
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-DLOPEN-ERROR--CAPS"></a><span class="term"><code class="literal">IDNA_DLOPEN_ERROR</code></span></p></td>
+<td> Could not dlopen the libcidn DSO (only used
+  internally in libc).
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="enum Idna_flags">
+<a name="Idna-flags"></a><h3>enum Idna_flags</h3>
+<pre class="programlisting">  typedef enum
+  {
+    IDNA_ALLOW_UNASSIGNED = 0x0001,
+    IDNA_USE_STD3_ASCII_RULES = 0x0002
+  } Idna_flags;
+</pre>
+<p>
+Flags to pass to <a class="link" href="libidn-idna.html#idna-to-ascii-4i" title="idna_to_ascii_4i ()"><code class="function">idna_to_ascii_4i()</code></a>, <a class="link" href="libidn-idna.html#idna-to-unicode-44i" title="idna_to_unicode_44i ()"><code class="function">idna_to_unicode_44i()</code></a> etc.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="IDNA-ALLOW-UNASSIGNED--CAPS"></a><span class="term"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></span></p></td>
+<td> Don't reject strings containing unassigned
+  Unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><a name="IDNA-USE-STD3-ASCII-RULES--CAPS"></a><span class="term"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></span></p></td>
+<td> Validate strings according to STD3
+  rules (i.e., normal host name rules).
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="IDNA_ACE_PREFIX">
+<a name="IDNA-ACE-PREFIX--CAPS"></a><h3>IDNA_ACE_PREFIX</h3>
+<pre class="programlisting">#  define IDNA_ACE_PREFIX "xn--"
+</pre>
+<p>
+The IANA allocated prefix to use for IDNA. "xn--"</p>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="idna_strerror ()">
+<a name="idna-strerror"></a><h3>idna_strerror ()</h3>
+<pre class="programlisting">const char *        idna_strerror                       (<a class="link" href="libidn-idna.html#Idna-rc" title="enum Idna_rc">Idna_rc</a> rc);</pre>
+<p>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</p>
+<p>
+IDNA_SUCCESS: Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+IDNA_STRINGPREP_ERROR:  Error during string preparation.
+IDNA_PUNYCODE_ERROR: Error during punycode operation.
+IDNA_CONTAINS_NON_LDH: For IDNA_USE_STD3_ASCII_RULES, indicate that
+  the string contains non-LDH ASCII characters.
+IDNA_CONTAINS_MINUS: For IDNA_USE_STD3_ASCII_RULES, indicate that
+  the string contains a leading or trailing hyphen-minus (U+002D).
+IDNA_INVALID_LENGTH: The final output string is not within the
+  (inclusive) range 1 to 63 characters.
+IDNA_NO_ACE_PREFIX: The string does not contain the ACE prefix
+  (for ToUnicode).
+IDNA_ROUNDTRIP_VERIFY_ERROR: The ToASCII operation on output
+  string does not equal the input.
+IDNA_CONTAINS_ACE_PREFIX: The input contains the ACE prefix (for
+  ToASCII).
+IDNA_ICONV_ERROR: Could not convert string in locale encoding.
+IDNA_MALLOC_ERROR: Could not allocate buffer (this is typically a
+  fatal error).
+IDNA_DLOPEN_ERROR: Could not dlopen the libcidn DSO (only used
+  internally in libc).</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rc</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-rc" title="enum Idna_rc"><span class="type">Idna_rc</span></a> return code.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <em class="parameter"><code>rc</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_ascii_4i ()">
+<a name="idna-to-ascii-4i"></a><h3>idna_to_ascii_4i ()</h3>
+<pre class="programlisting">int                 idna_to_ascii_4i                    (const uint32_t *in,
+                                                         size_t inlen,
+                                                         char *out,
+                                                         int flags);</pre>
+<p>
+The ToASCII operation takes a sequence of Unicode code points that
+make up one domain label and transforms it into a sequence of code
+points in the ASCII range (0..7F). If ToASCII succeeds, the
+original sequence and the resulting sequence are equivalent labels.
+</p>
+<p>
+It is important to note that the ToASCII operation can fail. ToASCII
+fails if any step of it fails. If any step of the ToASCII operation
+fails on any label in a domain name, that domain name MUST NOT be used
+as an internationalized domain name. The method for deadling with this
+failure is application-specific.
+</p>
+<p>
+The inputs to ToASCII are a sequence of code points, the AllowUnassigned
+flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a
+sequence of ASCII code points or a failure condition.
+</p>
+<p>
+ToASCII never alters a sequence of code points that are all in the ASCII
+range to begin with (although it could fail). Applying the ToASCII
+operation multiple times has exactly the same effect as applying it just
+once.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input array with unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>inlen</code></em> :</span></p></td>
+<td> length of input array with unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out</code></em> :</span></p></td>
+<td> output zero terminated string that must have room for at
+      least 63 characters plus the terminating zero.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns 0 on success, or an <a class="link" href="libidn-idna.html#Idna-rc" title="enum Idna_rc"><span class="type">Idna_rc</span></a> error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_unicode_44i ()">
+<a name="idna-to-unicode-44i"></a><h3>idna_to_unicode_44i ()</h3>
+<pre class="programlisting">int                 idna_to_unicode_44i                 (const uint32_t *in,
+                                                         size_t inlen,
+                                                         uint32_t *out,
+                                                         size_t *outlen,
+                                                         int flags);</pre>
+<p>
+The ToUnicode operation takes a sequence of Unicode code points
+that make up one domain label and returns a sequence of Unicode
+code points. If the input sequence is a label in ACE form, then the
+result is an equivalent internationalized label that is not in ACE
+form, otherwise the original sequence is returned unaltered.
+</p>
+<p>
+ToUnicode never fails. If any step fails, then the original input
+sequence is returned immediately in that step.
+</p>
+<p>
+The Punycode decoder can never output more code points than it
+inputs, but Nameprep can, and therefore ToUnicode can.  Note that
+the number of octets needed to represent a sequence of code points
+depends on the particular character encoding used.
+</p>
+<p>
+The inputs to ToUnicode are a sequence of code points, the
+AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of
+ToUnicode is always a sequence of Unicode code points.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input array with unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>inlen</code></em> :</span></p></td>
+<td> length of input array with unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out</code></em> :</span></p></td>
+<td> output array with unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>outlen</code></em> :</span></p></td>
+<td> on input, maximum size of output array with unicode code points,
+         on exit, actual size of output array with unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-idna.html#Idna-rc" title="enum Idna_rc"><span class="type">Idna_rc</span></a> error condition, but it must only be
+  used for debugging purposes.  The output buffer is always
+  guaranteed to contain the correct data according to the
+  specification (sans malloc induced errors).  NB!  This means that
+  you normally ignore the return code from this function, as
+  checking it means breaking the standard.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_ascii_4z ()">
+<a name="idna-to-ascii-4z"></a><h3>idna_to_ascii_4z ()</h3>
+<pre class="programlisting">int                 idna_to_ascii_4z                    (const uint32_t *input,
+                                                         char **output,
+                                                         int flags);</pre>
+<p>
+Convert UCS-4 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> zero terminated input Unicode string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> pointer to newly allocated output string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-idna.html#IDNA-SUCCESS--CAPS"><code class="literal">IDNA_SUCCESS</code></a> on success, or error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_ascii_8z ()">
+<a name="idna-to-ascii-8z"></a><h3>idna_to_ascii_8z ()</h3>
+<pre class="programlisting">int                 idna_to_ascii_8z                    (const char *input,
+                                                         char **output,
+                                                         int flags);</pre>
+<p>
+Convert UTF-8 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> zero terminated input UTF-8 string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> pointer to newly allocated output string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-idna.html#IDNA-SUCCESS--CAPS"><code class="literal">IDNA_SUCCESS</code></a> on success, or error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_ascii_lz ()">
+<a name="idna-to-ascii-lz"></a><h3>idna_to_ascii_lz ()</h3>
+<pre class="programlisting">int                 idna_to_ascii_lz                    (const char *input,
+                                                         char **output,
+                                                         int flags);</pre>
+<p>
+Convert domain name in the locale's encoding to ASCII string.  The
+domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> zero terminated input string encoded in the current locale's
+  character set.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> pointer to newly allocated output string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-idna.html#IDNA-SUCCESS--CAPS"><code class="literal">IDNA_SUCCESS</code></a> on success, or error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_unicode_4z4z ()">
+<a name="idna-to-unicode-4z4z"></a><h3>idna_to_unicode_4z4z ()</h3>
+<pre class="programlisting">int                 idna_to_unicode_4z4z                (const uint32_t *input,
+                                                         uint32_t **output,
+                                                         int flags);</pre>
+<p>
+Convert possibly ACE encoded domain name in UCS-4 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> zero-terminated Unicode string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> pointer to newly allocated output Unicode string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-idna.html#IDNA-SUCCESS--CAPS"><code class="literal">IDNA_SUCCESS</code></a> on success, or error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_unicode_8z4z ()">
+<a name="idna-to-unicode-8z4z"></a><h3>idna_to_unicode_8z4z ()</h3>
+<pre class="programlisting">int                 idna_to_unicode_8z4z                (const char *input,
+                                                         uint32_t **output,
+                                                         int flags);</pre>
+<p>
+Convert possibly ACE encoded domain name in UTF-8 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> zero-terminated UTF-8 string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> pointer to newly allocated output Unicode string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-idna.html#IDNA-SUCCESS--CAPS"><code class="literal">IDNA_SUCCESS</code></a> on success, or error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_unicode_8z8z ()">
+<a name="idna-to-unicode-8z8z"></a><h3>idna_to_unicode_8z8z ()</h3>
+<pre class="programlisting">int                 idna_to_unicode_8z8z                (const char *input,
+                                                         char **output,
+                                                         int flags);</pre>
+<p>
+Convert possibly ACE encoded domain name in UTF-8 format into a
+UTF-8 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> zero-terminated UTF-8 string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> pointer to newly allocated output UTF-8 string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-idna.html#IDNA-SUCCESS--CAPS"><code class="literal">IDNA_SUCCESS</code></a> on success, or error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_unicode_8zlz ()">
+<a name="idna-to-unicode-8zlz"></a><h3>idna_to_unicode_8zlz ()</h3>
+<pre class="programlisting">int                 idna_to_unicode_8zlz                (const char *input,
+                                                         char **output,
+                                                         int flags);</pre>
+<p>
+Convert possibly ACE encoded domain name in UTF-8 format into a
+string encoded in the current locale's character set.  The domain
+name may contain several labels, separated by dots.  The output
+buffer must be deallocated by the caller.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> zero-terminated UTF-8 string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> pointer to newly allocated output string encoded in the
+  current locale's character set.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-idna.html#IDNA-SUCCESS--CAPS"><code class="literal">IDNA_SUCCESS</code></a> on success, or error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="idna_to_unicode_lzlz ()">
+<a name="idna-to-unicode-lzlz"></a><h3>idna_to_unicode_lzlz ()</h3>
+<pre class="programlisting">int                 idna_to_unicode_lzlz                (const char *input,
+                                                         char **output,
+                                                         int flags);</pre>
+<p>
+Convert possibly ACE encoded domain name in the locale's character
+set into a string encoded in the current locale's character set.
+The domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> zero-terminated string encoded in the current locale's
+  character set.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> pointer to newly allocated output string encoded in the
+  current locale's character set.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-idna.html#Idna-flags" title="enum Idna_flags"><span class="type">Idna_flags</span></a> value, e.g., <a class="link" href="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"><code class="literal">IDNA_ALLOW_UNASSIGNED</code></a> or
+  <a class="link" href="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"><code class="literal">IDNA_USE_STD3_ASCII_RULES</code></a>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-idna.html#IDNA-SUCCESS--CAPS"><code class="literal">IDNA_SUCCESS</code></a> on success, or error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.11</div>
+</body>
+</html>
diff --git a/doc/reference/html/libidn-pr29.html b/doc/reference/html/libidn-pr29.html
new file mode 100644 (file)
index 0000000..dc653df
--- /dev/null
@@ -0,0 +1,237 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>pr29</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="up" href="ch01.html" title="GNU Libidn API Reference Manual">
+<link rel="prev" href="libidn-idna.html" title="idna">
+<link rel="next" href="libidn-punycode.html" title="punycode">
+<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="chapter" href="ch01.html" title="GNU Libidn API Reference Manual">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libidn-idna.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GNU Libidn API Reference Manual</th>
+<td><a accesskey="n" href="libidn-punycode.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libidn-pr29.synopsis" class="shortcut">Top</a>
+                 | 
+                <a href="#libidn-pr29.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry" title="pr29">
+<a name="libidn-pr29"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libidn-pr29.top_of_page"></a>pr29</span></h2>
+<p>pr29</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv" title="Synopsis">
+<a name="libidn-pr29.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#define             <a class="link" href="libidn-idna.html#IDNAPI--CAPS" title="IDNAPI">IDNAPI</a>
+enum                <a class="link" href="libidn-pr29.html#Pr29-rc" title="enum Pr29_rc">Pr29_rc</a>;
+const char *        <a class="link" href="libidn-pr29.html#pr29-strerror" title="pr29_strerror ()">pr29_strerror</a>                       (<a class="link" href="libidn-pr29.html#Pr29-rc" title="enum Pr29_rc">Pr29_rc</a> rc);
+int                 <a class="link" href="libidn-pr29.html#pr29-4" title="pr29_4 ()">pr29_4</a>                              (const uint32_t *in,
+                                                         size_t len);
+int                 <a class="link" href="libidn-pr29.html#pr29-4z" title="pr29_4z ()">pr29_4z</a>                             (const uint32_t *in);
+int                 <a class="link" href="libidn-pr29.html#pr29-8z" title="pr29_8z ()">pr29_8z</a>                             (const char *in);
+</pre>
+</div>
+<div class="refsect1" title="Description">
+<a name="libidn-pr29.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1" title="Details">
+<a name="libidn-pr29.details"></a><h2>Details</h2>
+<div class="refsect2" title="IDNAPI">
+<a name="IDNAPI--CAPS"></a><h3>IDNAPI</h3>
+<pre class="programlisting">#define             IDNAPI</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="enum Pr29_rc">
+<a name="Pr29-rc"></a><h3>enum Pr29_rc</h3>
+<pre class="programlisting">  typedef enum
+  {
+    PR29_SUCCESS = 0,
+    PR29_PROBLEM = 1,          /* String is a problem sequence. */
+    PR29_STRINGPREP_ERROR = 2  /* Charset conversion failed (p29_8*). */
+  } Pr29_rc;
+</pre>
+<p>
+Enumerated return codes for <a class="link" href="libidn-pr29.html#pr29-4" title="pr29_4 ()"><code class="function">pr29_4()</code></a>, <a class="link" href="libidn-pr29.html#pr29-4z" title="pr29_4z ()"><code class="function">pr29_4z()</code></a>, <a class="link" href="libidn-pr29.html#pr29-8z" title="pr29_8z ()"><code class="function">pr29_8z()</code></a>.  The
+value 0 is guaranteed to always correspond to success.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="PR29-SUCCESS--CAPS"></a><span class="term"><code class="literal">PR29_SUCCESS</code></span></p></td>
+<td> Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</td>
+</tr>
+<tr>
+<td><p><a name="PR29-PROBLEM--CAPS"></a><span class="term"><code class="literal">PR29_PROBLEM</code></span></p></td>
+<td> A problem sequence was encountered.
+</td>
+</tr>
+<tr>
+<td><p><a name="PR29-STRINGPREP-ERROR--CAPS"></a><span class="term"><code class="literal">PR29_STRINGPREP_ERROR</code></span></p></td>
+<td> The character set conversion failed (only
+  for <code class="function">pr29_8()</code> and <a class="link" href="libidn-pr29.html#pr29-8z" title="pr29_8z ()"><code class="function">pr29_8z()</code></a>).
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="pr29_strerror ()">
+<a name="pr29-strerror"></a><h3>pr29_strerror ()</h3>
+<pre class="programlisting">const char *        pr29_strerror                       (<a class="link" href="libidn-pr29.html#Pr29-rc" title="enum Pr29_rc">Pr29_rc</a> rc);</pre>
+<p>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</p>
+<p>
+PR29_SUCCESS: Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+PR29_PROBLEM: A problem sequence was encountered.
+PR29_STRINGPREP_ERROR: The character set conversion failed (only
+  for <code class="function">pr29_8()</code> and <a class="link" href="libidn-pr29.html#pr29-8z" title="pr29_8z ()"><code class="function">pr29_8z()</code></a>).</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rc</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-pr29.html#Pr29-rc" title="enum Pr29_rc"><span class="type">Pr29_rc</span></a> return code.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns a pointer to a statically allocated string
+  containing a description of the error with the return code <em class="parameter"><code>rc</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="pr29_4 ()">
+<a name="pr29-4"></a><h3>pr29_4 ()</h3>
+<pre class="programlisting">int                 pr29_4                              (const uint32_t *in,
+                                                         size_t len);</pre>
+<p>
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input array with unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td> length of input array with unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns the <a class="link" href="libidn-pr29.html#Pr29-rc" title="enum Pr29_rc"><span class="type">Pr29_rc</span></a> value <a class="link" href="libidn-pr29.html#PR29-SUCCESS--CAPS"><code class="literal">PR29_SUCCESS</code></a> on success,
+  and <a class="link" href="libidn-pr29.html#PR29-PROBLEM--CAPS"><code class="literal">PR29_PROBLEM</code></a> if the input sequence is a "problem sequence"
+  (i.e., may be normalized into different strings by different
+  implementations).
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="pr29_4z ()">
+<a name="pr29-4z"></a><h3>pr29_4z ()</h3>
+<pre class="programlisting">int                 pr29_4z                             (const uint32_t *in);</pre>
+<p>
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> zero terminated array of Unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns the <a class="link" href="libidn-pr29.html#Pr29-rc" title="enum Pr29_rc"><span class="type">Pr29_rc</span></a> value <a class="link" href="libidn-pr29.html#PR29-SUCCESS--CAPS"><code class="literal">PR29_SUCCESS</code></a> on success,
+  and <a class="link" href="libidn-pr29.html#PR29-PROBLEM--CAPS"><code class="literal">PR29_PROBLEM</code></a> if the input sequence is a "problem sequence"
+  (i.e., may be normalized into different strings by different
+  implementations).
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="pr29_8z ()">
+<a name="pr29-8z"></a><h3>pr29_8z ()</h3>
+<pre class="programlisting">int                 pr29_8z                             (const char *in);</pre>
+<p>
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> zero terminated input UTF-8 string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns the <a class="link" href="libidn-pr29.html#Pr29-rc" title="enum Pr29_rc"><span class="type">Pr29_rc</span></a> value <a class="link" href="libidn-pr29.html#PR29-SUCCESS--CAPS"><code class="literal">PR29_SUCCESS</code></a> on success,
+  and <a class="link" href="libidn-pr29.html#PR29-PROBLEM--CAPS"><code class="literal">PR29_PROBLEM</code></a> if the input sequence is a "problem sequence"
+  (i.e., may be normalized into different strings by different
+  implementations), or <a class="link" href="libidn-pr29.html#PR29-STRINGPREP-ERROR--CAPS"><code class="literal">PR29_STRINGPREP_ERROR</code></a> if there was a
+  problem converting the string from UTF-8 to UCS-4.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.11</div>
+</body>
+</html>
diff --git a/doc/reference/html/libidn-punycode.html b/doc/reference/html/libidn-punycode.html
new file mode 100644 (file)
index 0000000..ae827a1
--- /dev/null
@@ -0,0 +1,310 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>punycode</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="up" href="ch01.html" title="GNU Libidn API Reference Manual">
+<link rel="prev" href="libidn-pr29.html" title="pr29">
+<link rel="next" href="libidn-tld.html" title="tld">
+<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="chapter" href="ch01.html" title="GNU Libidn API Reference Manual">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libidn-pr29.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GNU Libidn API Reference Manual</th>
+<td><a accesskey="n" href="libidn-tld.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libidn-punycode.synopsis" class="shortcut">Top</a>
+                 | 
+                <a href="#libidn-punycode.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry" title="punycode">
+<a name="libidn-punycode"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libidn-punycode.top_of_page"></a>punycode</span></h2>
+<p>punycode</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv" title="Synopsis">
+<a name="libidn-punycode.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#define             <a class="link" href="libidn-idna.html#IDNAPI--CAPS" title="IDNAPI">IDNAPI</a>
+enum                <a class="link" href="libidn-punycode.html#Punycode-status" title="enum Punycode_status">Punycode_status</a>;
+const char *        <a class="link" href="libidn-punycode.html#punycode-strerror" title="punycode_strerror ()">punycode_strerror</a>                   (<a class="link" href="libidn-punycode.html#Punycode-status" title="enum Punycode_status">Punycode_status</a> rc);
+typedef             <a class="link" href="libidn-punycode.html#punycode-uint" title="punycode_uint">punycode_uint</a>;
+int                 <a class="link" href="libidn-punycode.html#punycode-encode" title="punycode_encode ()">punycode_encode</a>                     (size_t input_length,
+                                                         const <a class="link" href="libidn-punycode.html#punycode-uint" title="punycode_uint">punycode_uint</a> input[],
+                                                         unsigned char case_flags[],
+                                                         size_t *output_length,
+                                                         char output[]);
+int                 <a class="link" href="libidn-punycode.html#punycode-decode" title="punycode_decode ()">punycode_decode</a>                     (size_t input_length,
+                                                         const char input[],
+                                                         size_t *output_length,
+                                                         <a class="link" href="libidn-punycode.html#punycode-uint" title="punycode_uint">punycode_uint</a> output[],
+                                                         unsigned char case_flags[]);
+</pre>
+</div>
+<div class="refsect1" title="Description">
+<a name="libidn-punycode.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1" title="Details">
+<a name="libidn-punycode.details"></a><h2>Details</h2>
+<div class="refsect2" title="IDNAPI">
+<a name="IDNAPI--CAPS"></a><h3>IDNAPI</h3>
+<pre class="programlisting">#define             IDNAPI</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="enum Punycode_status">
+<a name="Punycode-status"></a><h3>enum Punycode_status</h3>
+<pre class="programlisting">  typedef enum
+  {
+    PUNYCODE_SUCCESS = punycode_success,
+    PUNYCODE_BAD_INPUT = punycode_bad_input,
+    PUNYCODE_BIG_OUTPUT = punycode_big_output,
+    PUNYCODE_OVERFLOW = punycode_overflow
+  } Punycode_status;
+</pre>
+<p>
+Enumerated return codes of <a class="link" href="libidn-punycode.html#punycode-encode" title="punycode_encode ()"><code class="function">punycode_encode()</code></a> and <a class="link" href="libidn-punycode.html#punycode-decode" title="punycode_decode ()"><code class="function">punycode_decode()</code></a>.
+The value 0 is guaranteed to always correspond to success.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="PUNYCODE-SUCCESS--CAPS"></a><span class="term"><code class="literal">PUNYCODE_SUCCESS</code></span></p></td>
+<td> Successful operation.  This value is guaranteed
+  to always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</td>
+</tr>
+<tr>
+<td><p><a name="PUNYCODE-BAD-INPUT--CAPS"></a><span class="term"><code class="literal">PUNYCODE_BAD_INPUT</code></span></p></td>
+<td> Input is invalid.
+</td>
+</tr>
+<tr>
+<td><p><a name="PUNYCODE-BIG-OUTPUT--CAPS"></a><span class="term"><code class="literal">PUNYCODE_BIG_OUTPUT</code></span></p></td>
+<td> Output would exceed the space provided.
+</td>
+</tr>
+<tr>
+<td><p><a name="PUNYCODE-OVERFLOW--CAPS"></a><span class="term"><code class="literal">PUNYCODE_OVERFLOW</code></span></p></td>
+<td> Input needs wider integers to process.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="punycode_strerror ()">
+<a name="punycode-strerror"></a><h3>punycode_strerror ()</h3>
+<pre class="programlisting">const char *        punycode_strerror                   (<a class="link" href="libidn-punycode.html#Punycode-status" title="enum Punycode_status">Punycode_status</a> rc);</pre>
+<p>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</p>
+<p>
+PUNYCODE_SUCCESS: Successful operation.  This value is guaranteed
+  to always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+PUNYCODE_BAD_INPUT: Input is invalid.
+PUNYCODE_BIG_OUTPUT: Output would exceed the space provided.
+PUNYCODE_OVERFLOW: Input needs wider integers to process.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rc</code></em> :</span></p></td>
+<td> an <a class="link" href="libidn-punycode.html#Punycode-status" title="enum Punycode_status"><span class="type">Punycode_status</span></a> return code.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <em class="parameter"><code>rc</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="punycode_uint">
+<a name="punycode-uint"></a><h3>punycode_uint</h3>
+<pre class="programlisting">  typedef uint32_t punycode_uint;
+</pre>
+<p>
+Unicode code point data type, this is always a 32 bit unsigned
+integer.</p>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="punycode_encode ()">
+<a name="punycode-encode"></a><h3>punycode_encode ()</h3>
+<pre class="programlisting">int                 punycode_encode                     (size_t input_length,
+                                                         const <a class="link" href="libidn-punycode.html#punycode-uint" title="punycode_uint">punycode_uint</a> input[],
+                                                         unsigned char case_flags[],
+                                                         size_t *output_length,
+                                                         char output[]);</pre>
+<p>
+Converts a sequence of code points (presumed to be Unicode code
+points) to Punycode.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input_length</code></em> :</span></p></td>
+<td> The number of code points in the <em class="parameter"><code>input</code></em> array and
+  the number of flags in the <em class="parameter"><code>case_flags</code></em> array.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> An array of code points.  They are presumed to be Unicode
+  code points, but that is not strictly REQUIRED.  The array
+  contains code points, not code units.  UTF-16 uses code units
+  D800 through DFFF to refer to code points 10000..10FFFF.  The
+  code points D800..DFFF do not occur in any valid Unicode string.
+  The code points that can occur in Unicode strings (0..D7FF and
+  E000..10FFFF) are also called Unicode scalar values.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>case_flags</code></em> :</span></p></td>
+<td> A <code class="literal">NULL</code> pointer or an array of boolean values parallel
+  to the <em class="parameter"><code>input</code></em> array.  Nonzero (true, flagged) suggests that the
+  corresponding Unicode character be forced to uppercase after
+  being decoded (if possible), and zero (false, unflagged) suggests
+  that it be forced to lowercase (if possible).  ASCII code points
+  (0..7F) are encoded literally, except that ASCII letters are
+  forced to uppercase or lowercase according to the corresponding
+  case flags.  If <em class="parameter"><code>case_flags</code></em> is a <code class="literal">NULL</code> pointer then ASCII letters
+  are left as they are, and other code points are treated as
+  unflagged.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output_length</code></em> :</span></p></td>
+<td> The caller passes in the maximum number of ASCII
+  code points that it can receive.  On successful return it will
+  contain the number of ASCII code points actually output.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> An array of ASCII code points.  It is *not*
+  null-terminated; it will contain zeros if and only if the <em class="parameter"><code>input</code></em>
+  contains zeros.  (Of course the caller can leave room for a
+  terminator and add one if needed.)
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> The return value can be any of the <a class="link" href="libidn-punycode.html#Punycode-status" title="enum Punycode_status"><span class="type">Punycode_status</span></a>
+  values defined above except <a class="link" href="libidn-punycode.html#PUNYCODE-BAD-INPUT--CAPS"><code class="literal">PUNYCODE_BAD_INPUT</code></a>.  If not
+  <a class="link" href="libidn-punycode.html#PUNYCODE-SUCCESS--CAPS"><code class="literal">PUNYCODE_SUCCESS</code></a>, then <em class="parameter"><code>output_size</code></em> and <em class="parameter"><code>output</code></em> might contain
+  garbage.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="punycode_decode ()">
+<a name="punycode-decode"></a><h3>punycode_decode ()</h3>
+<pre class="programlisting">int                 punycode_decode                     (size_t input_length,
+                                                         const char input[],
+                                                         size_t *output_length,
+                                                         <a class="link" href="libidn-punycode.html#punycode-uint" title="punycode_uint">punycode_uint</a> output[],
+                                                         unsigned char case_flags[]);</pre>
+<p>
+Converts Punycode to a sequence of code points (presumed to be
+Unicode code points).</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input_length</code></em> :</span></p></td>
+<td> The number of ASCII code points in the <em class="parameter"><code>input</code></em> array.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td>
+<td> An array of ASCII code points (0..7F).
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output_length</code></em> :</span></p></td>
+<td> The caller passes in the maximum number of code
+  points that it can receive into the <em class="parameter"><code>output</code></em> array (which is also
+  the maximum number of flags that it can receive into the
+  <em class="parameter"><code>case_flags</code></em> array, if <em class="parameter"><code>case_flags</code></em> is not a <code class="literal">NULL</code> pointer).  On
+  successful return it will contain the number of code points
+  actually output (which is also the number of flags actually
+  output, if case_flags is not a null pointer).  The decoder will
+  never need to output more code points than the number of ASCII
+  code points in the input, because of the way the encoding is
+  defined.  The number of code points output cannot exceed the
+  maximum possible value of a punycode_uint, even if the supplied
+  <em class="parameter"><code>output_length</code></em> is greater than that.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td>
+<td> An array of code points like the input argument of
+  <a class="link" href="libidn-punycode.html#punycode-encode" title="punycode_encode ()"><code class="function">punycode_encode()</code></a> (see above).
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>case_flags</code></em> :</span></p></td>
+<td> A <code class="literal">NULL</code> pointer (if the flags are not needed by the
+  caller) or an array of boolean values parallel to the <em class="parameter"><code>output</code></em>
+  array.  Nonzero (true, flagged) suggests that the corresponding
+  Unicode character be forced to uppercase by the caller (if
+  possible), and zero (false, unflagged) suggests that it be forced
+  to lowercase (if possible).  ASCII code points (0..7F) are output
+  already in the proper case, but their flags will be set
+  appropriately so that applying the flags would be harmless.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> The return value can be any of the <a class="link" href="libidn-punycode.html#Punycode-status" title="enum Punycode_status"><span class="type">Punycode_status</span></a>
+  values defined above.  If not <a class="link" href="libidn-punycode.html#PUNYCODE-SUCCESS--CAPS"><code class="literal">PUNYCODE_SUCCESS</code></a>, then
+  <em class="parameter"><code>output_length</code></em>, <em class="parameter"><code>output</code></em>, and <em class="parameter"><code>case_flags</code></em> might contain garbage.
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.11</div>
+</body>
+</html>
diff --git a/doc/reference/html/libidn-stringprep.html b/doc/reference/html/libidn-stringprep.html
new file mode 100644 (file)
index 0000000..9c338d1
--- /dev/null
@@ -0,0 +1,1191 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>stringprep</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="up" href="ch01.html" title="GNU Libidn API Reference Manual">
+<link rel="prev" href="libidn-tld.html" title="tld">
+<link rel="next" href="libidn-idn-free.html" title="idn-free">
+<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="chapter" href="ch01.html" title="GNU Libidn API Reference Manual">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libidn-tld.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GNU Libidn API Reference Manual</th>
+<td><a accesskey="n" href="libidn-idn-free.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libidn-stringprep.synopsis" class="shortcut">Top</a>
+                 | 
+                <a href="#libidn-stringprep.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry" title="stringprep">
+<a name="libidn-stringprep"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libidn-stringprep.top_of_page"></a>stringprep</span></h2>
+<p>stringprep</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv" title="Synopsis">
+<a name="libidn-stringprep.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#define             <a class="link" href="libidn-idna.html#IDNAPI--CAPS" title="IDNAPI">IDNAPI</a>
+#define             <a class="link" href="libidn-stringprep.html#STRINGPREP-VERSION--CAPS" title="STRINGPREP_VERSION">STRINGPREP_VERSION</a>
+enum                <a class="link" href="libidn-stringprep.html#Stringprep-rc" title="enum Stringprep_rc">Stringprep_rc</a>;
+enum                <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags">Stringprep_profile_flags</a>;
+enum                <a class="link" href="libidn-stringprep.html#Stringprep-profile-steps" title="enum Stringprep_profile_steps">Stringprep_profile_steps</a>;
+#define             <a class="link" href="libidn-stringprep.html#STRINGPREP-MAX-MAP-CHARS--CAPS" title="STRINGPREP_MAX_MAP_CHARS">STRINGPREP_MAX_MAP_CHARS</a>
+typedef             <a class="link" href="libidn-stringprep.html#Stringprep-table-element" title="Stringprep_table_element">Stringprep_table_element</a>;
+typedef             <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile">Stringprep_profile</a>;
+typedef             <a class="link" href="libidn-stringprep.html#Stringprep-profiles" title="Stringprep_profiles">Stringprep_profiles</a>;
+#define             <a class="link" href="libidn-stringprep.html#stringprep-nameprep" title="stringprep_nameprep()">stringprep_nameprep</a>                 (in, maxlen)
+#define             <a class="link" href="libidn-stringprep.html#stringprep-nameprep-no-unassigned" title="stringprep_nameprep_no_unassigned()">stringprep_nameprep_no_unassigned</a>   (in, maxlen)
+#define             <a class="link" href="libidn-stringprep.html#stringprep-plain" title="stringprep_plain()">stringprep_plain</a>                    (in, maxlen)
+#define             <a class="link" href="libidn-stringprep.html#stringprep-kerberos5" title="stringprep_kerberos5()">stringprep_kerberos5</a>                (in, maxlen)
+#define             <a class="link" href="libidn-stringprep.html#stringprep-xmpp-nodeprep" title="stringprep_xmpp_nodeprep()">stringprep_xmpp_nodeprep</a>            (in, maxlen)
+#define             <a class="link" href="libidn-stringprep.html#stringprep-xmpp-resourceprep" title="stringprep_xmpp_resourceprep()">stringprep_xmpp_resourceprep</a>        (in, maxlen)
+#define             <a class="link" href="libidn-stringprep.html#stringprep-iscsi" title="stringprep_iscsi()">stringprep_iscsi</a>                    (in, maxlen)
+int                 <a class="link" href="libidn-stringprep.html#stringprep-4i" title="stringprep_4i ()">stringprep_4i</a>                       (uint32_t *ucs4,
+                                                         size_t *len,
+                                                         size_t maxucs4len,
+                                                         <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags">Stringprep_profile_flags</a> flags,
+                                                         const <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile">Stringprep_profile</a> *profile);
+int                 <a class="link" href="libidn-stringprep.html#stringprep-4zi" title="stringprep_4zi ()">stringprep_4zi</a>                      (uint32_t *ucs4,
+                                                         size_t maxucs4len,
+                                                         <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags">Stringprep_profile_flags</a> flags,
+                                                         const <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile">Stringprep_profile</a> *profile);
+int                 <a class="link" href="libidn-stringprep.html#stringprep" title="stringprep ()">stringprep</a>                          (char *in,
+                                                         size_t maxlen,
+                                                         <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags">Stringprep_profile_flags</a> flags,
+                                                         const <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile">Stringprep_profile</a> *profile);
+int                 <a class="link" href="libidn-stringprep.html#stringprep-profile" title="stringprep_profile ()">stringprep_profile</a>                  (const char *in,
+                                                         char **out,
+                                                         const char *profile,
+                                                         <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags">Stringprep_profile_flags</a> flags);
+const char *        <a class="link" href="libidn-stringprep.html#stringprep-strerror" title="stringprep_strerror ()">stringprep_strerror</a>                 (<a class="link" href="libidn-stringprep.html#Stringprep-rc" title="enum Stringprep_rc">Stringprep_rc</a> rc);
+const char *        <a class="link" href="libidn-stringprep.html#stringprep-check-version" title="stringprep_check_version ()">stringprep_check_version</a>            (const char *req_version);
+int                 <a class="link" href="libidn-stringprep.html#stringprep-unichar-to-utf8" title="stringprep_unichar_to_utf8 ()">stringprep_unichar_to_utf8</a>          (uint32_t c,
+                                                         char *outbuf);
+uint32_t            <a class="link" href="libidn-stringprep.html#stringprep-utf8-to-unichar" title="stringprep_utf8_to_unichar ()">stringprep_utf8_to_unichar</a>          (const char *p);
+uint32_t *          <a class="link" href="libidn-stringprep.html#stringprep-utf8-to-ucs4" title="stringprep_utf8_to_ucs4 ()">stringprep_utf8_to_ucs4</a>             (const char *str,
+                                                         ssize_t len,
+                                                         size_t *items_written);
+char *              <a class="link" href="libidn-stringprep.html#stringprep-ucs4-to-utf8" title="stringprep_ucs4_to_utf8 ()">stringprep_ucs4_to_utf8</a>             (const uint32_t *str,
+                                                         ssize_t len,
+                                                         size_t *items_read,
+                                                         size_t *items_written);
+char *              <a class="link" href="libidn-stringprep.html#stringprep-utf8-nfkc-normalize" title="stringprep_utf8_nfkc_normalize ()">stringprep_utf8_nfkc_normalize</a>      (const char *str,
+                                                         ssize_t len);
+uint32_t *          <a class="link" href="libidn-stringprep.html#stringprep-ucs4-nfkc-normalize" title="stringprep_ucs4_nfkc_normalize ()">stringprep_ucs4_nfkc_normalize</a>      (uint32_t *str,
+                                                         ssize_t len);
+const char *        <a class="link" href="libidn-stringprep.html#stringprep-locale-charset" title="stringprep_locale_charset ()">stringprep_locale_charset</a>           (void);
+char *              <a class="link" href="libidn-stringprep.html#stringprep-convert" title="stringprep_convert ()">stringprep_convert</a>                  (const char *str,
+                                                         const char *to_codeset,
+                                                         const char *from_codeset);
+char *              <a class="link" href="libidn-stringprep.html#stringprep-locale-to-utf8" title="stringprep_locale_to_utf8 ()">stringprep_locale_to_utf8</a>           (const char *str);
+char *              <a class="link" href="libidn-stringprep.html#stringprep-utf8-to-locale" title="stringprep_utf8_to_locale ()">stringprep_utf8_to_locale</a>           (const char *str);
+</pre>
+</div>
+<div class="refsect1" title="Description">
+<a name="libidn-stringprep.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1" title="Details">
+<a name="libidn-stringprep.details"></a><h2>Details</h2>
+<div class="refsect2" title="IDNAPI">
+<a name="IDNAPI--CAPS"></a><h3>IDNAPI</h3>
+<pre class="programlisting">#define             IDNAPI</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="STRINGPREP_VERSION">
+<a name="STRINGPREP-VERSION--CAPS"></a><h3>STRINGPREP_VERSION</h3>
+<pre class="programlisting"># define STRINGPREP_VERSION "1.15"
+</pre>
+<p>
+String defined via CPP denoting the header file version number.
+Used together with <a class="link" href="libidn-stringprep.html#stringprep-check-version" title="stringprep_check_version ()"><code class="function">stringprep_check_version()</code></a> to verify header file
+and run-time library consistency.</p>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="enum Stringprep_rc">
+<a name="Stringprep-rc"></a><h3>enum Stringprep_rc</h3>
+<pre class="programlisting">  typedef enum
+  {
+    STRINGPREP_OK = 0,
+    /* Stringprep errors. */
+    STRINGPREP_CONTAINS_UNASSIGNED = 1,
+    STRINGPREP_CONTAINS_PROHIBITED = 2,
+    STRINGPREP_BIDI_BOTH_L_AND_RAL = 3,
+    STRINGPREP_BIDI_LEADTRAIL_NOT_RAL = 4,
+    STRINGPREP_BIDI_CONTAINS_PROHIBITED = 5,
+    /* Error in calling application. */
+    STRINGPREP_TOO_SMALL_BUFFER = 100,
+    STRINGPREP_PROFILE_ERROR = 101,
+    STRINGPREP_FLAG_ERROR = 102,
+    STRINGPREP_UNKNOWN_PROFILE = 103,
+    /* Internal errors. */
+    STRINGPREP_NFKC_FAILED = 200,
+    STRINGPREP_MALLOC_ERROR = 201
+  } Stringprep_rc;
+</pre>
+<p>
+Enumerated return codes of <a class="link" href="libidn-stringprep.html#stringprep" title="stringprep ()"><code class="function">stringprep()</code></a>, <a class="link" href="libidn-stringprep.html#stringprep-profile" title="stringprep_profile ()"><code class="function">stringprep_profile()</code></a>
+functions (and macros using those functions).  The value 0 is
+guaranteed to always correspond to success.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="STRINGPREP-OK--CAPS"></a><span class="term"><code class="literal">STRINGPREP_OK</code></span></p></td>
+<td> Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-CONTAINS-UNASSIGNED--CAPS"></a><span class="term"><code class="literal">STRINGPREP_CONTAINS_UNASSIGNED</code></span></p></td>
+<td> String contain unassigned Unicode
+  code points, which is forbidden by the profile.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-CONTAINS-PROHIBITED--CAPS"></a><span class="term"><code class="literal">STRINGPREP_CONTAINS_PROHIBITED</code></span></p></td>
+<td> String contain code points
+  prohibited by the profile.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-BIDI-BOTH-L-AND-RAL--CAPS"></a><span class="term"><code class="literal">STRINGPREP_BIDI_BOTH_L_AND_RAL</code></span></p></td>
+<td> String contain code points with
+  conflicting bidirection category.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-BIDI-LEADTRAIL-NOT-RAL--CAPS"></a><span class="term"><code class="literal">STRINGPREP_BIDI_LEADTRAIL_NOT_RAL</code></span></p></td>
+<td> Leading and trailing character
+  in string not of proper bidirectional category.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-BIDI-CONTAINS-PROHIBITED--CAPS"></a><span class="term"><code class="literal">STRINGPREP_BIDI_CONTAINS_PROHIBITED</code></span></p></td>
+<td> Contains prohibited code
+  points detected by bidirectional code.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-TOO-SMALL-BUFFER--CAPS"></a><span class="term"><code class="literal">STRINGPREP_TOO_SMALL_BUFFER</code></span></p></td>
+<td> Buffer handed to function was too
+  small.  This usually indicate a problem in the calling
+  application.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-PROFILE-ERROR--CAPS"></a><span class="term"><code class="literal">STRINGPREP_PROFILE_ERROR</code></span></p></td>
+<td> The stringprep profile was inconsistent.
+  This usually indicate an internal error in the library.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-FLAG-ERROR--CAPS"></a><span class="term"><code class="literal">STRINGPREP_FLAG_ERROR</code></span></p></td>
+<td> The supplied flag conflicted with profile.
+  This usually indicate a problem in the calling application.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-UNKNOWN-PROFILE--CAPS"></a><span class="term"><code class="literal">STRINGPREP_UNKNOWN_PROFILE</code></span></p></td>
+<td> The supplied profile name was not
+  known to the library.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-NFKC-FAILED--CAPS"></a><span class="term"><code class="literal">STRINGPREP_NFKC_FAILED</code></span></p></td>
+<td> The Unicode NFKC operation failed.  This
+  usually indicate an internal error in the library.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-MALLOC-ERROR--CAPS"></a><span class="term"><code class="literal">STRINGPREP_MALLOC_ERROR</code></span></p></td>
+<td> The <code class="function">malloc()</code> was out of memory.  This is
+  usually a fatal error.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="enum Stringprep_profile_flags">
+<a name="Stringprep-profile-flags"></a><h3>enum Stringprep_profile_flags</h3>
+<pre class="programlisting">  typedef enum
+  {
+    STRINGPREP_NO_NFKC = 1,
+    STRINGPREP_NO_BIDI = 2,
+    STRINGPREP_NO_UNASSIGNED = 4
+  } Stringprep_profile_flags;
+</pre>
+<p>
+Stringprep profile flags.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="STRINGPREP-NO-NFKC--CAPS"></a><span class="term"><code class="literal">STRINGPREP_NO_NFKC</code></span></p></td>
+<td> Disable the NFKC normalization, as well as
+  selecting the non-NFKC case folding tables.  Usually the profile
+  specifies BIDI and NFKC settings, and applications should not
+  override it unless in special situations.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-NO-BIDI--CAPS"></a><span class="term"><code class="literal">STRINGPREP_NO_BIDI</code></span></p></td>
+<td> Disable the BIDI step.  Usually the profile
+  specifies BIDI and NFKC settings, and applications should not
+  override it unless in special situations.
+</td>
+</tr>
+<tr>
+<td><p><a name="STRINGPREP-NO-UNASSIGNED--CAPS"></a><span class="term"><code class="literal">STRINGPREP_NO_UNASSIGNED</code></span></p></td>
+<td> Make the library return with an error if
+  string contains unassigned characters according to profile.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="enum Stringprep_profile_steps">
+<a name="Stringprep-profile-steps"></a><h3>enum Stringprep_profile_steps</h3>
+<pre class="programlisting">  typedef enum
+  {
+    STRINGPREP_NFKC = 1,
+    STRINGPREP_BIDI = 2,
+    STRINGPREP_MAP_TABLE = 3,
+    STRINGPREP_UNASSIGNED_TABLE = 4,
+    STRINGPREP_PROHIBIT_TABLE = 5,
+    STRINGPREP_BIDI_PROHIBIT_TABLE = 6,
+    STRINGPREP_BIDI_RAL_TABLE = 7,
+    STRINGPREP_BIDI_L_TABLE = 8
+  } Stringprep_profile_steps;
+</pre>
+<p>
+Various steps in the stringprep algorithm.  You really want to
+study the source code to understand this one.  Only useful if you
+want to add another profile.</p>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="STRINGPREP_MAX_MAP_CHARS">
+<a name="STRINGPREP-MAX-MAP-CHARS--CAPS"></a><h3>STRINGPREP_MAX_MAP_CHARS</h3>
+<pre class="programlisting"># define STRINGPREP_MAX_MAP_CHARS 4
+</pre>
+<p>
+Maximum number of code points that can replace a single code point,
+during stringprep mapping.</p>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="Stringprep_table_element">
+<a name="Stringprep-table-element"></a><h3>Stringprep_table_element</h3>
+<pre class="programlisting">  typedef struct Stringprep_table_element Stringprep_table_element;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="Stringprep_profile">
+<a name="Stringprep-profile"></a><h3>Stringprep_profile</h3>
+<pre class="programlisting">  typedef struct Stringprep_table Stringprep_profile;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="Stringprep_profiles">
+<a name="Stringprep-profiles"></a><h3>Stringprep_profiles</h3>
+<pre class="programlisting">  typedef struct Stringprep_profiles Stringprep_profiles;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_nameprep()">
+<a name="stringprep-nameprep"></a><h3>stringprep_nameprep()</h3>
+<pre class="programlisting">#define             stringprep_nameprep(in, maxlen)</pre>
+<p>
+Prepare the input UTF-8 string according to the nameprep profile.
+The AllowUnassigned flag is true, use
+<a class="link" href="libidn-stringprep.html#stringprep-nameprep-no-unassigned" title="stringprep_nameprep_no_unassigned()"><code class="function">stringprep_nameprep_no_unassigned()</code></a> if you want a false
+AllowUnassigned.  Returns 0 iff successful, or an error code.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input/ouput array with string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxlen</code></em> :</span></p></td>
+<td> maximum length of input/output array.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_nameprep_no_unassigned()">
+<a name="stringprep-nameprep-no-unassigned"></a><h3>stringprep_nameprep_no_unassigned()</h3>
+<pre class="programlisting">#define             stringprep_nameprep_no_unassigned(in, maxlen)</pre>
+<p>
+Prepare the input UTF-8 string according to the nameprep profile.
+The AllowUnassigned flag is false, use <a class="link" href="libidn-stringprep.html#stringprep-nameprep" title="stringprep_nameprep()"><code class="function">stringprep_nameprep()</code></a> for
+true AllowUnassigned.  Returns 0 iff successful, or an error code.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input/ouput array with string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxlen</code></em> :</span></p></td>
+<td> maximum length of input/output array.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_plain()">
+<a name="stringprep-plain"></a><h3>stringprep_plain()</h3>
+<pre class="programlisting">#define             stringprep_plain(in, maxlen)</pre>
+<p>
+Prepare the input UTF-8 string according to the draft SASL
+ANONYMOUS profile.  Returns 0 iff successful, or an error code.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input/ouput array with string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxlen</code></em> :</span></p></td>
+<td> maximum length of input/output array.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_kerberos5()">
+<a name="stringprep-kerberos5"></a><h3>stringprep_kerberos5()</h3>
+<pre class="programlisting">#define             stringprep_kerberos5(in, maxlen)</pre>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxlen</code></em> :</span></p></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_xmpp_nodeprep()">
+<a name="stringprep-xmpp-nodeprep"></a><h3>stringprep_xmpp_nodeprep()</h3>
+<pre class="programlisting">#define             stringprep_xmpp_nodeprep(in, maxlen)</pre>
+<p>
+Prepare the input UTF-8 string according to the draft XMPP node
+identifier profile.  Returns 0 iff successful, or an error code.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input/ouput array with string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxlen</code></em> :</span></p></td>
+<td> maximum length of input/output array.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_xmpp_resourceprep()">
+<a name="stringprep-xmpp-resourceprep"></a><h3>stringprep_xmpp_resourceprep()</h3>
+<pre class="programlisting">#define             stringprep_xmpp_resourceprep(in, maxlen)</pre>
+<p>
+Prepare the input UTF-8 string according to the draft XMPP resource
+identifier profile.  Returns 0 iff successful, or an error code.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input/ouput array with string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxlen</code></em> :</span></p></td>
+<td> maximum length of input/output array.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_iscsi()">
+<a name="stringprep-iscsi"></a><h3>stringprep_iscsi()</h3>
+<pre class="programlisting">#define             stringprep_iscsi(in, maxlen)</pre>
+<p>
+Prepare the input UTF-8 string according to the draft iSCSI
+stringprep profile.  Returns 0 iff successful, or an error code.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input/ouput array with string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxlen</code></em> :</span></p></td>
+<td> maximum length of input/output array.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_4i ()">
+<a name="stringprep-4i"></a><h3>stringprep_4i ()</h3>
+<pre class="programlisting">int                 stringprep_4i                       (uint32_t *ucs4,
+                                                         size_t *len,
+                                                         size_t maxucs4len,
+                                                         <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags">Stringprep_profile_flags</a> flags,
+                                                         const <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile">Stringprep_profile</a> *profile);</pre>
+<p>
+Prepare the input UCS-4 string according to the stringprep profile,
+and write back the result to the input string.
+</p>
+<p>
+The input is not required to be zero terminated (<em class="parameter"><code>ucs4</code></em>[<em class="parameter"><code>len</code></em>] = 0).
+The output will not be zero terminated unless <em class="parameter"><code>ucs4</code></em>[<em class="parameter"><code>len</code></em>] = 0.
+Instead, see <a class="link" href="libidn-stringprep.html#stringprep-4zi" title="stringprep_4zi ()"><code class="function">stringprep_4zi()</code></a> if your input is zero terminated or
+if you want the output to be.
+</p>
+<p>
+Since the stringprep operation can expand the string, <em class="parameter"><code>maxucs4len</code></em>
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+</p>
+<p>
+The <em class="parameter"><code>flags</code></em> are one of <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags"><span class="type">Stringprep_profile_flags</span></a> values, or 0.
+</p>
+<p>
+The <em class="parameter"><code>profile</code></em> contain the <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile"><span class="type">Stringprep_profile</span></a> instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ucs4</code></em> :</span></p></td>
+<td> input/output array with string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td> on input, length of input array with Unicode code points,
+  on exit, length of output array with Unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxucs4len</code></em> :</span></p></td>
+<td> maximum length of input/output array.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> a <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags"><span class="type">Stringprep_profile_flags</span></a> value, or 0.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>profile</code></em> :</span></p></td>
+<td> pointer to <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile"><span class="type">Stringprep_profile</span></a> to use.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-stringprep.html#STRINGPREP-OK--CAPS"><code class="literal">STRINGPREP_OK</code></a> iff successful, or an
+  <a class="link" href="libidn-stringprep.html#Stringprep-rc" title="enum Stringprep_rc"><span class="type">Stringprep_rc</span></a> error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_4zi ()">
+<a name="stringprep-4zi"></a><h3>stringprep_4zi ()</h3>
+<pre class="programlisting">int                 stringprep_4zi                      (uint32_t *ucs4,
+                                                         size_t maxucs4len,
+                                                         <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags">Stringprep_profile_flags</a> flags,
+                                                         const <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile">Stringprep_profile</a> *profile);</pre>
+<p>
+Prepare the input zero terminated UCS-4 string according to the
+stringprep profile, and write back the result to the input string.
+</p>
+<p>
+Since the stringprep operation can expand the string, <em class="parameter"><code>maxucs4len</code></em>
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+</p>
+<p>
+The <em class="parameter"><code>flags</code></em> are one of <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags"><span class="type">Stringprep_profile_flags</span></a> values, or 0.
+</p>
+<p>
+The <em class="parameter"><code>profile</code></em> contain the <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile"><span class="type">Stringprep_profile</span></a> instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ucs4</code></em> :</span></p></td>
+<td> input/output array with zero terminated string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxucs4len</code></em> :</span></p></td>
+<td> maximum length of input/output array.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> a <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags"><span class="type">Stringprep_profile_flags</span></a> value, or 0.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>profile</code></em> :</span></p></td>
+<td> pointer to <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile"><span class="type">Stringprep_profile</span></a> to use.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-stringprep.html#STRINGPREP-OK--CAPS"><code class="literal">STRINGPREP_OK</code></a> iff successful, or an
+  <a class="link" href="libidn-stringprep.html#Stringprep-rc" title="enum Stringprep_rc"><span class="type">Stringprep_rc</span></a> error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep ()">
+<a name="stringprep"></a><h3>stringprep ()</h3>
+<pre class="programlisting">int                 stringprep                          (char *in,
+                                                         size_t maxlen,
+                                                         <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags">Stringprep_profile_flags</a> flags,
+                                                         const <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile">Stringprep_profile</a> *profile);</pre>
+<p>
+Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and write back the result to the input string.
+</p>
+<p>
+Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+<a class="link" href="libidn-stringprep.html#stringprep-locale-to-utf8" title="stringprep_locale_to_utf8 ()"><code class="function">stringprep_locale_to_utf8()</code></a>.
+</p>
+<p>
+Since the stringprep operation can expand the string, <em class="parameter"><code>maxlen</code></em>
+indicate how large the buffer holding the string is.  This function
+will not read or write to characters outside that size.
+</p>
+<p>
+The <em class="parameter"><code>flags</code></em> are one of <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags"><span class="type">Stringprep_profile_flags</span></a> values, or 0.
+</p>
+<p>
+The <em class="parameter"><code>profile</code></em> contain the <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile"><span class="type">Stringprep_profile</span></a> instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input/ouput array with string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>maxlen</code></em> :</span></p></td>
+<td> maximum length of input/output array.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> a <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags"><span class="type">Stringprep_profile_flags</span></a> value, or 0.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>profile</code></em> :</span></p></td>
+<td> pointer to <a class="link" href="libidn-stringprep.html#Stringprep-profile" title="Stringprep_profile"><span class="type">Stringprep_profile</span></a> to use.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-stringprep.html#STRINGPREP-OK--CAPS"><code class="literal">STRINGPREP_OK</code></a> iff successful, or an error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_profile ()">
+<a name="stringprep-profile"></a><h3>stringprep_profile ()</h3>
+<pre class="programlisting">int                 stringprep_profile                  (const char *in,
+                                                         char **out,
+                                                         const char *profile,
+                                                         <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags">Stringprep_profile_flags</a> flags);</pre>
+<p>
+Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and return the result in a newly allocated
+variable.
+</p>
+<p>
+Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+<a class="link" href="libidn-stringprep.html#stringprep-locale-to-utf8" title="stringprep_locale_to_utf8 ()"><code class="function">stringprep_locale_to_utf8()</code></a>.
+</p>
+<p>
+The output <em class="parameter"><code>out</code></em> variable must be deallocated by the caller.
+</p>
+<p>
+The <em class="parameter"><code>flags</code></em> are one of <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags"><span class="type">Stringprep_profile_flags</span></a> values, or 0.
+</p>
+<p>
+The <em class="parameter"><code>profile</code></em> specifies the name of the stringprep profile to use.
+It must be one of the internally supported stringprep profiles.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> input array with UTF-8 string to prepare.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out</code></em> :</span></p></td>
+<td> output variable with pointer to newly allocate string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>profile</code></em> :</span></p></td>
+<td> name of stringprep profile to use.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
+<td> a <a class="link" href="libidn-stringprep.html#Stringprep-profile-flags" title="enum Stringprep_profile_flags"><span class="type">Stringprep_profile_flags</span></a> value, or 0.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns <a class="link" href="libidn-stringprep.html#STRINGPREP-OK--CAPS"><code class="literal">STRINGPREP_OK</code></a> iff successful, or an error code.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_strerror ()">
+<a name="stringprep-strerror"></a><h3>stringprep_strerror ()</h3>
+<pre class="programlisting">const char *        stringprep_strerror                 (<a class="link" href="libidn-stringprep.html#Stringprep-rc" title="enum Stringprep_rc">Stringprep_rc</a> rc);</pre>
+<p>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</p>
+<p>
+STRINGPREP_OK: Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+STRINGPREP_CONTAINS_UNASSIGNED: String contain unassigned Unicode
+  code points, which is forbidden by the profile.
+STRINGPREP_CONTAINS_PROHIBITED: String contain code points
+  prohibited by the profile.
+STRINGPREP_BIDI_BOTH_L_AND_RAL: String contain code points with
+  conflicting bidirection category.
+STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: Leading and trailing character
+  in string not of proper bidirectional category.
+STRINGPREP_BIDI_CONTAINS_PROHIBITED: Contains prohibited code
+  points detected by bidirectional code.
+STRINGPREP_TOO_SMALL_BUFFER: Buffer handed to function was too
+  small.  This usually indicate a problem in the calling
+  application.
+STRINGPREP_PROFILE_ERROR: The stringprep profile was inconsistent.
+  This usually indicate an internal error in the library.
+STRINGPREP_FLAG_ERROR: The supplied flag conflicted with profile.
+  This usually indicate a problem in the calling application.
+STRINGPREP_UNKNOWN_PROFILE: The supplied profile name was not
+  known to the library.
+STRINGPREP_NFKC_FAILED: The Unicode NFKC operation failed.  This
+  usually indicate an internal error in the library.
+STRINGPREP_MALLOC_ERROR: The <code class="function">malloc()</code> was out of memory.  This is
+  usually a fatal error.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rc</code></em> :</span></p></td>
+<td> a <a class="link" href="libidn-stringprep.html#Stringprep-rc" title="enum Stringprep_rc"><span class="type">Stringprep_rc</span></a> return code.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns a pointer to a statically allocated string
+  containing a description of the error with the return code <em class="parameter"><code>rc</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_check_version ()">
+<a name="stringprep-check-version"></a><h3>stringprep_check_version ()</h3>
+<pre class="programlisting">const char *        stringprep_check_version            (const char *req_version);</pre>
+<p>
+Check that the version of the library is at minimum the requested one
+and return the version string; return NULL if the condition is not
+satisfied.  If a NULL is passed to this function, no check is done,
+but the version string is simply returned.
+</p>
+<p>
+See <a class="link" href="libidn-stringprep.html#STRINGPREP-VERSION--CAPS" title="STRINGPREP_VERSION"><code class="literal">STRINGPREP_VERSION</code></a> for a suitable <em class="parameter"><code>req_version</code></em> string.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>req_version</code></em> :</span></p></td>
+<td> Required version number, or NULL.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Version string of run-time library, or NULL if the
+run-time library does not meet the required version number.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_unichar_to_utf8 ()">
+<a name="stringprep-unichar-to-utf8"></a><h3>stringprep_unichar_to_utf8 ()</h3>
+<pre class="programlisting">int                 stringprep_unichar_to_utf8          (uint32_t c,
+                                                         char *outbuf);</pre>
+<p>
+Converts a single character to UTF-8.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>c</code></em> :</span></p></td>
+<td> a ISO10646 character code
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>outbuf</code></em> :</span></p></td>
+<td> output buffer, must have at least 6 bytes of space.
+      If <code class="literal">NULL</code>, the length will be computed and returned
+      and nothing will be written to <em class="parameter"><code>outbuf</code></em>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> number of bytes written.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_utf8_to_unichar ()">
+<a name="stringprep-utf8-to-unichar"></a><h3>stringprep_utf8_to_unichar ()</h3>
+<pre class="programlisting">uint32_t            stringprep_utf8_to_unichar          (const char *p);</pre>
+<p>
+Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
+If <em class="parameter"><code>p</code></em> does not point to a valid UTF-8 encoded character, results are
+undefined.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>p</code></em> :</span></p></td>
+<td> a pointer to Unicode character encoded as UTF-8
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> the resulting character.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_utf8_to_ucs4 ()">
+<a name="stringprep-utf8-to-ucs4"></a><h3>stringprep_utf8_to_ucs4 ()</h3>
+<pre class="programlisting">uint32_t *          stringprep_utf8_to_ucs4             (const char *str,
+                                                         ssize_t len,
+                                                         size_t *items_written);</pre>
+<p>
+Convert a string from UTF-8 to a 32-bit fixed width
+representation as UCS-4, assuming valid UTF-8 input.
+This function does no error checking on the input.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
+<td> a UTF-8 encoded string
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td> the maximum length of <em class="parameter"><code>str</code></em> to use. If <em class="parameter"><code>len</code></em> &lt; 0, then
+      the string is nul-terminated.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>items_written</code></em> :</span></p></td>
+<td> location to store the number of characters in the
+                result, or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> a pointer to a newly allocated UCS-4 string.
+              This value must be deallocated by the caller.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_ucs4_to_utf8 ()">
+<a name="stringprep-ucs4-to-utf8"></a><h3>stringprep_ucs4_to_utf8 ()</h3>
+<pre class="programlisting">char *              stringprep_ucs4_to_utf8             (const uint32_t *str,
+                                                         ssize_t len,
+                                                         size_t *items_read,
+                                                         size_t *items_written);</pre>
+<p>
+Convert a string from a 32-bit fixed width representation as UCS-4.
+to UTF-8. The result will be terminated with a 0 byte.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
+<td> a UCS-4 encoded string
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td> the maximum length of <em class="parameter"><code>str</code></em> to use. If <em class="parameter"><code>len</code></em> &lt; 0, then
+      the string is terminated with a 0 character.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>items_read</code></em> :</span></p></td>
+<td> location to store number of characters read read, or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>items_written</code></em> :</span></p></td>
+<td> location to store number of bytes written or <code class="literal">NULL</code>.
+                The value here stored does not include the trailing 0
+                byte.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> a pointer to a newly allocated UTF-8 string.
+              This value must be deallocated by the caller.
+              If an error occurs, <code class="literal">NULL</code> will be returned and <em class="parameter"><code>error</code></em>
+              set.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_utf8_nfkc_normalize ()">
+<a name="stringprep-utf8-nfkc-normalize"></a><h3>stringprep_utf8_nfkc_normalize ()</h3>
+<pre class="programlisting">char *              stringprep_utf8_nfkc_normalize      (const char *str,
+                                                         ssize_t len);</pre>
+<p>
+Converts a string into canonical form, standardizing
+such issues as whether a character with an accent
+is represented as a base character and combining
+accent or as a single precomposed character.
+</p>
+<p>
+The normalization mode is NFKC (ALL COMPOSE).  It standardizes
+differences that do not affect the text content, such as the
+above-mentioned accent representation. It standardizes the
+"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
+the standard forms (in this case DIGIT THREE). Formatting
+information may be lost but for most text operations such
+characters should be considered the same. It returns a result with
+composed forms rather than a maximally decomposed form.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
+<td> a UTF-8 encoded string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td> length of <em class="parameter"><code>str</code></em>, in bytes, or -1 if <em class="parameter"><code>str</code></em> is nul-terminated.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> a newly allocated string, that is the
+  NFKC normalized form of <em class="parameter"><code>str</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_ucs4_nfkc_normalize ()">
+<a name="stringprep-ucs4-nfkc-normalize"></a><h3>stringprep_ucs4_nfkc_normalize ()</h3>
+<pre class="programlisting">uint32_t *          stringprep_ucs4_nfkc_normalize      (uint32_t *str,
+                                                         ssize_t len);</pre>
+<p>
+Converts UCS4 string into UTF-8 and runs
+<a class="link" href="libidn-stringprep.html#stringprep-utf8-nfkc-normalize" title="stringprep_utf8_nfkc_normalize ()"><code class="function">stringprep_utf8_nfkc_normalize()</code></a>.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
+<td> a Unicode string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
+<td> length of <em class="parameter"><code>str</code></em> array, or -1 if <em class="parameter"><code>str</code></em> is nul-terminated.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> a newly allocated Unicode string, that is the NFKC
+  normalized form of <em class="parameter"><code>str</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_locale_charset ()">
+<a name="stringprep-locale-charset"></a><h3>stringprep_locale_charset ()</h3>
+<pre class="programlisting">const char *        stringprep_locale_charset           (void);</pre>
+<p>
+Find out current locale charset.  The function respect the CHARSET
+environment variable, but typically uses nl_langinfo(CODESET) when
+it is supported.  It fall back on "ASCII" if CHARSET isn't set and
+nl_langinfo isn't supported or return anything.
+</p>
+<p>
+Note that this function return the application's locale's preferred
+charset (or thread's locale's preffered charset, if your system
+support thread-specific locales).  It does not return what the
+system may be using.  Thus, if you receive data from external
+sources you cannot in general use this function to guess what
+charset it is encoded in.  Use stringprep_convert from the external
+representation into the charset returned by this function, to have
+data in the locale encoding.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Return the character set used by the current locale.
+  It will never return NULL, but use "ASCII" as a fallback.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_convert ()">
+<a name="stringprep-convert"></a><h3>stringprep_convert ()</h3>
+<pre class="programlisting">char *              stringprep_convert                  (const char *str,
+                                                         const char *to_codeset,
+                                                         const char *from_codeset);</pre>
+<p>
+Convert the string from one character set to another using the
+system's <code class="function">iconv()</code> function.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
+<td> input zero-terminated string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>to_codeset</code></em> :</span></p></td>
+<td> name of destination character set.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>from_codeset</code></em> :</span></p></td>
+<td> name of origin character set, as used by <em class="parameter"><code>str</code></em>.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns newly allocated zero-terminated string which
+  is <em class="parameter"><code>str</code></em> transcoded into to_codeset.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_locale_to_utf8 ()">
+<a name="stringprep-locale-to-utf8"></a><h3>stringprep_locale_to_utf8 ()</h3>
+<pre class="programlisting">char *              stringprep_locale_to_utf8           (const char *str);</pre>
+<p>
+Convert string encoded in the locale's character set into UTF-8 by
+using <a class="link" href="libidn-stringprep.html#stringprep-convert" title="stringprep_convert ()"><code class="function">stringprep_convert()</code></a>.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
+<td> input zero terminated string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns newly allocated zero-terminated string which
+  is <em class="parameter"><code>str</code></em> transcoded into UTF-8.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="stringprep_utf8_to_locale ()">
+<a name="stringprep-utf8-to-locale"></a><h3>stringprep_utf8_to_locale ()</h3>
+<pre class="programlisting">char *              stringprep_utf8_to_locale           (const char *str);</pre>
+<p>
+Convert string encoded in UTF-8 into the locale's character set by
+using <a class="link" href="libidn-stringprep.html#stringprep-convert" title="stringprep_convert ()"><code class="function">stringprep_convert()</code></a>.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>str</code></em> :</span></p></td>
+<td> input zero terminated string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns newly allocated zero-terminated string which
+  is <em class="parameter"><code>str</code></em> transcoded into the locale's character set.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.11</div>
+</body>
+</html>
diff --git a/doc/reference/html/libidn-tld.html b/doc/reference/html/libidn-tld.html
new file mode 100644 (file)
index 0000000..a3d5b16
--- /dev/null
@@ -0,0 +1,678 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>tld</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="index.html" title="GNU Libidn API Reference Manual">
+<link rel="up" href="ch01.html" title="GNU Libidn API Reference Manual">
+<link rel="prev" href="libidn-punycode.html" title="punycode">
+<link rel="next" href="libidn-stringprep.html" title="stringprep">
+<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="chapter" href="ch01.html" title="GNU Libidn API Reference Manual">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="libidn-punycode.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GNU Libidn API Reference Manual</th>
+<td><a accesskey="n" href="libidn-stringprep.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#libidn-tld.synopsis" class="shortcut">Top</a>
+                 | 
+                <a href="#libidn-tld.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry" title="tld">
+<a name="libidn-tld"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="libidn-tld.top_of_page"></a>tld</span></h2>
+<p>tld</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv" title="Synopsis">
+<a name="libidn-tld.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#define             <a class="link" href="libidn-idna.html#IDNAPI--CAPS" title="IDNAPI">IDNAPI</a>
+typedef             <a class="link" href="libidn-tld.html#Tld-table-element" title="Tld_table_element">Tld_table_element</a>;
+typedef             <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a>;
+enum                <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc">Tld_rc</a>;
+const char *        <a class="link" href="libidn-tld.html#tld-strerror" title="tld_strerror ()">tld_strerror</a>                        (<a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc">Tld_rc</a> rc);
+int                 <a class="link" href="libidn-tld.html#tld-get-4" title="tld_get_4 ()">tld_get_4</a>                           (const uint32_t *in,
+                                                         size_t inlen,
+                                                         char **out);
+int                 <a class="link" href="libidn-tld.html#tld-get-4z" title="tld_get_4z ()">tld_get_4z</a>                          (const uint32_t *in,
+                                                         char **out);
+int                 <a class="link" href="libidn-tld.html#tld-get-z" title="tld_get_z ()">tld_get_z</a>                           (const char *in,
+                                                         char **out);
+const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> *   <a class="link" href="libidn-tld.html#tld-get-table" title="tld_get_table ()">tld_get_table</a>                       (const char *tld,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **tables);
+const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> *   <a class="link" href="libidn-tld.html#tld-default-table" title="tld_default_table ()">tld_default_table</a>                   (const char *tld,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);
+int                 <a class="link" href="libidn-tld.html#tld-check-4t" title="tld_check_4t ()">tld_check_4t</a>                        (const uint32_t *in,
+                                                         size_t inlen,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> *tld);
+int                 <a class="link" href="libidn-tld.html#tld-check-4tz" title="tld_check_4tz ()">tld_check_4tz</a>                       (const uint32_t *in,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> *tld);
+int                 <a class="link" href="libidn-tld.html#tld-check-4" title="tld_check_4 ()">tld_check_4</a>                         (const uint32_t *in,
+                                                         size_t inlen,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);
+int                 <a class="link" href="libidn-tld.html#tld-check-4z" title="tld_check_4z ()">tld_check_4z</a>                        (const uint32_t *in,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);
+int                 <a class="link" href="libidn-tld.html#tld-check-8z" title="tld_check_8z ()">tld_check_8z</a>                        (const char *in,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);
+int                 <a class="link" href="libidn-tld.html#tld-check-lz" title="tld_check_lz ()">tld_check_lz</a>                        (const char *in,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);
+</pre>
+</div>
+<div class="refsect1" title="Description">
+<a name="libidn-tld.description"></a><h2>Description</h2>
+<p>
+</p>
+</div>
+<div class="refsect1" title="Details">
+<a name="libidn-tld.details"></a><h2>Details</h2>
+<div class="refsect2" title="IDNAPI">
+<a name="IDNAPI--CAPS"></a><h3>IDNAPI</h3>
+<pre class="programlisting">#define             IDNAPI</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="Tld_table_element">
+<a name="Tld-table-element"></a><h3>Tld_table_element</h3>
+<pre class="programlisting">  typedef struct Tld_table_element Tld_table_element;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="Tld_table">
+<a name="Tld-table"></a><h3>Tld_table</h3>
+<pre class="programlisting">  typedef struct Tld_table Tld_table;
+</pre>
+<p>
+</p>
+</div>
+<hr>
+<div class="refsect2" title="enum Tld_rc">
+<a name="Tld-rc"></a><h3>enum Tld_rc</h3>
+<pre class="programlisting">  typedef enum
+  {
+    TLD_SUCCESS = 0,
+    TLD_INVALID = 1,           /* Invalid character found. */
+    TLD_NODATA = 2,            /* Char, domain or inlen = 0. */
+    TLD_MALLOC_ERROR = 3,
+    TLD_ICONV_ERROR = 4,
+    TLD_NO_TLD = 5,
+    /* Workaround typo in earlier versions. */
+    TLD_NOTLD = TLD_NO_TLD
+  } Tld_rc;
+</pre>
+<p>
+Enumerated return codes of the TLD checking functions.
+The value 0 is guaranteed to always correspond to success.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="TLD-SUCCESS--CAPS"></a><span class="term"><code class="literal">TLD_SUCCESS</code></span></p></td>
+<td> Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</td>
+</tr>
+<tr>
+<td><p><a name="TLD-INVALID--CAPS"></a><span class="term"><code class="literal">TLD_INVALID</code></span></p></td>
+<td> Invalid character found.
+</td>
+</tr>
+<tr>
+<td><p><a name="TLD-NODATA--CAPS"></a><span class="term"><code class="literal">TLD_NODATA</code></span></p></td>
+<td> No input data was provided.
+</td>
+</tr>
+<tr>
+<td><p><a name="TLD-MALLOC-ERROR--CAPS"></a><span class="term"><code class="literal">TLD_MALLOC_ERROR</code></span></p></td>
+<td> Error during memory allocation.
+</td>
+</tr>
+<tr>
+<td><p><a name="TLD-ICONV-ERROR--CAPS"></a><span class="term"><code class="literal">TLD_ICONV_ERROR</code></span></p></td>
+<td> Error during iconv string conversion.
+</td>
+</tr>
+<tr>
+<td><p><a name="TLD-NO-TLD--CAPS"></a><span class="term"><code class="literal">TLD_NO_TLD</code></span></p></td>
+<td> No top-level domain found in domain string.
+</td>
+</tr>
+<tr>
+<td><p><a name="TLD-NOTLD--CAPS"></a><span class="term"><code class="literal">TLD_NOTLD</code></span></p></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_strerror ()">
+<a name="tld-strerror"></a><h3>tld_strerror ()</h3>
+<pre class="programlisting">const char *        tld_strerror                        (<a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc">Tld_rc</a> rc);</pre>
+<p>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</p>
+<p>
+TLD_SUCCESS: Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+TLD_INVALID: Invalid character found.
+TLD_NODATA: No input data was provided.
+TLD_MALLOC_ERROR: Error during memory allocation.
+TLD_ICONV_ERROR: Error during iconv string conversion.
+TLD_NO_TLD: No top-level domain found in domain string.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rc</code></em> :</span></p></td>
+<td> tld return code
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <em class="parameter"><code>rc</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_get_4 ()">
+<a name="tld-get-4"></a><h3>tld_get_4 ()</h3>
+<pre class="programlisting">int                 tld_get_4                           (const uint32_t *in,
+                                                         size_t inlen,
+                                                         char **out);</pre>
+<p>
+Isolate the top-level domain of <em class="parameter"><code>in</code></em> and return it as an ASCII
+string in <em class="parameter"><code>out</code></em>.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> Array of unicode code points to process. Does not need to be
+  zero terminated.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>inlen</code></em> :</span></p></td>
+<td> Number of unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out</code></em> :</span></p></td>
+<td> Zero terminated ascii result string pointer.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Return <a class="link" href="libidn-tld.html#TLD-SUCCESS--CAPS"><code class="literal">TLD_SUCCESS</code></a> on success, or the corresponding
+  <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc"><span class="type">Tld_rc</span></a> error code otherwise.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_get_4z ()">
+<a name="tld-get-4z"></a><h3>tld_get_4z ()</h3>
+<pre class="programlisting">int                 tld_get_4z                          (const uint32_t *in,
+                                                         char **out);</pre>
+<p>
+Isolate the top-level domain of <em class="parameter"><code>in</code></em> and return it as an ASCII
+string in <em class="parameter"><code>out</code></em>.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> Zero terminated array of unicode code points to process.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out</code></em> :</span></p></td>
+<td> Zero terminated ascii result string pointer.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Return <a class="link" href="libidn-tld.html#TLD-SUCCESS--CAPS"><code class="literal">TLD_SUCCESS</code></a> on success, or the corresponding
+  <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc"><span class="type">Tld_rc</span></a> error code otherwise.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_get_z ()">
+<a name="tld-get-z"></a><h3>tld_get_z ()</h3>
+<pre class="programlisting">int                 tld_get_z                           (const char *in,
+                                                         char **out);</pre>
+<p>
+Isolate the top-level domain of <em class="parameter"><code>in</code></em> and return it as an ASCII
+string in <em class="parameter"><code>out</code></em>.  The input string <em class="parameter"><code>in</code></em> may be UTF-8, ISO-8859-1 or
+any ASCII compatible character encoding.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> Zero terminated character array to process.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>out</code></em> :</span></p></td>
+<td> Zero terminated ascii result string pointer.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Return <a class="link" href="libidn-tld.html#TLD-SUCCESS--CAPS"><code class="literal">TLD_SUCCESS</code></a> on success, or the corresponding
+  <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc"><span class="type">Tld_rc</span></a> error code otherwise.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_get_table ()">
+<a name="tld-get-table"></a><h3>tld_get_table ()</h3>
+<pre class="programlisting">const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> *   tld_get_table                       (const char *tld,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **tables);</pre>
+<p>
+Get the TLD table for a named TLD by searching through the given
+TLD table array.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tld</code></em> :</span></p></td>
+<td> TLD name (e.g. "com") as zero terminated ASCII byte string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tables</code></em> :</span></p></td>
+<td> Zero terminated array of <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table"><span class="type">Tld_table</span></a> info-structures for
+  TLDs.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Return structure corresponding to TLD <em class="parameter"><code>tld</code></em> by going
+  thru <em class="parameter"><code>tables</code></em>, or return <code class="literal">NULL</code> if no such structure is found.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_default_table ()">
+<a name="tld-default-table"></a><h3>tld_default_table ()</h3>
+<pre class="programlisting">const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> *   tld_default_table                   (const char *tld,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);</pre>
+<p>
+Get the TLD table for a named TLD, using the internal defaults,
+possibly overrided by the (optional) supplied tables.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tld</code></em> :</span></p></td>
+<td> TLD name (e.g. "com") as zero terminated ASCII byte string.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>overrides</code></em> :</span></p></td>
+<td> Additional zero terminated array of <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table"><span class="type">Tld_table</span></a>
+  info-structures for TLDs, or <code class="literal">NULL</code> to only use library deault
+  tables.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Return structure corresponding to TLD <em class="parameter"><code>tld_str</code></em>, first
+  looking through <em class="parameter"><code>overrides</code></em> then thru built-in list, or <code class="literal">NULL</code> if
+  no such structure found.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_check_4t ()">
+<a name="tld-check-4t"></a><h3>tld_check_4t ()</h3>
+<pre class="programlisting">int                 tld_check_4t                        (const uint32_t *in,
+                                                         size_t inlen,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> *tld);</pre>
+<p>
+Test each of the code points in <em class="parameter"><code>in</code></em> for whether or not
+they are allowed by the data structure in <em class="parameter"><code>tld</code></em>, return
+the position of the first character for which this is not
+the case in <em class="parameter"><code>errpos</code></em>.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> Array of unicode code points to process. Does not need to be
+  zero terminated.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>inlen</code></em> :</span></p></td>
+<td> Number of unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>errpos</code></em> :</span></p></td>
+<td> Position of offending character is returned here.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tld</code></em> :</span></p></td>
+<td> A <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table"><span class="type">Tld_table</span></a> data structure representing the restrictions for
+  which the input should be tested.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns the <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc"><span class="type">Tld_rc</span></a> value <a class="link" href="libidn-tld.html#TLD-SUCCESS--CAPS"><code class="literal">TLD_SUCCESS</code></a> if all code
+  points are valid or when <em class="parameter"><code>tld</code></em> is null, <a class="link" href="libidn-tld.html#TLD-INVALID--CAPS"><code class="literal">TLD_INVALID</code></a> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_check_4tz ()">
+<a name="tld-check-4tz"></a><h3>tld_check_4tz ()</h3>
+<pre class="programlisting">int                 tld_check_4tz                       (const uint32_t *in,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> *tld);</pre>
+<p>
+Test each of the code points in <em class="parameter"><code>in</code></em> for whether or not
+they are allowed by the data structure in <em class="parameter"><code>tld</code></em>, return
+the position of the first character for which this is not
+the case in <em class="parameter"><code>errpos</code></em>.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> Zero terminated array of unicode code points to process.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>errpos</code></em> :</span></p></td>
+<td> Position of offending character is returned here.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>tld</code></em> :</span></p></td>
+<td> A <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table"><span class="type">Tld_table</span></a> data structure representing the restrictions for
+  which the input should be tested.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns the <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc"><span class="type">Tld_rc</span></a> value <a class="link" href="libidn-tld.html#TLD-SUCCESS--CAPS"><code class="literal">TLD_SUCCESS</code></a> if all code
+  points are valid or when <em class="parameter"><code>tld</code></em> is null, <a class="link" href="libidn-tld.html#TLD-INVALID--CAPS"><code class="literal">TLD_INVALID</code></a> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_check_4 ()">
+<a name="tld-check-4"></a><h3>tld_check_4 ()</h3>
+<pre class="programlisting">int                 tld_check_4                         (const uint32_t *in,
+                                                         size_t inlen,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);</pre>
+<p>
+Test each of the code points in <em class="parameter"><code>in</code></em> for whether or not they are
+allowed by the information in <em class="parameter"><code>overrides</code></em> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <em class="parameter"><code>overrides</code></em>, the information in <em class="parameter"><code>overrides</code></em> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <em class="parameter"><code>overrides</code></em> is <code class="literal">NULL</code>, only the built-in
+information is used.  The position of the first offending character
+is returned in <em class="parameter"><code>errpos</code></em>.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> Array of unicode code points to process. Does not need to be
+  zero terminated.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>inlen</code></em> :</span></p></td>
+<td> Number of unicode code points.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>errpos</code></em> :</span></p></td>
+<td> Position of offending character is returned here.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>overrides</code></em> :</span></p></td>
+<td> A <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table"><span class="type">Tld_table</span></a> array of additional domain restriction
+ structures that complement and supersede the built-in information.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns the <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc"><span class="type">Tld_rc</span></a> value <a class="link" href="libidn-tld.html#TLD-SUCCESS--CAPS"><code class="literal">TLD_SUCCESS</code></a> if all code
+  points are valid or when <em class="parameter"><code>tld</code></em> is null, <a class="link" href="libidn-tld.html#TLD-INVALID--CAPS"><code class="literal">TLD_INVALID</code></a> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_check_4z ()">
+<a name="tld-check-4z"></a><h3>tld_check_4z ()</h3>
+<pre class="programlisting">int                 tld_check_4z                        (const uint32_t *in,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);</pre>
+<p>
+Test each of the code points in <em class="parameter"><code>in</code></em> for whether or not they are
+allowed by the information in <em class="parameter"><code>overrides</code></em> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <em class="parameter"><code>overrides</code></em>, the information in <em class="parameter"><code>overrides</code></em> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <em class="parameter"><code>overrides</code></em> is <code class="literal">NULL</code>, only the built-in
+information is used.  The position of the first offending character
+is returned in <em class="parameter"><code>errpos</code></em>.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> Zero-terminated array of unicode code points to process.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>errpos</code></em> :</span></p></td>
+<td> Position of offending character is returned here.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>overrides</code></em> :</span></p></td>
+<td> A <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table"><span class="type">Tld_table</span></a> array of additional domain restriction
+  structures that complement and supersede the built-in information.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns the <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc"><span class="type">Tld_rc</span></a> value <a class="link" href="libidn-tld.html#TLD-SUCCESS--CAPS"><code class="literal">TLD_SUCCESS</code></a> if all code
+  points are valid or when <em class="parameter"><code>tld</code></em> is null, <a class="link" href="libidn-tld.html#TLD-INVALID--CAPS"><code class="literal">TLD_INVALID</code></a> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_check_8z ()">
+<a name="tld-check-8z"></a><h3>tld_check_8z ()</h3>
+<pre class="programlisting">int                 tld_check_8z                        (const char *in,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);</pre>
+<p>
+Test each of the characters in <em class="parameter"><code>in</code></em> for whether or not they are
+allowed by the information in <em class="parameter"><code>overrides</code></em> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <em class="parameter"><code>overrides</code></em>, the information in <em class="parameter"><code>overrides</code></em> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <em class="parameter"><code>overrides</code></em> is <code class="literal">NULL</code>, only the built-in
+information is used.  The position of the first offending character
+is returned in <em class="parameter"><code>errpos</code></em>.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> Zero-terminated UTF8 string to process.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>errpos</code></em> :</span></p></td>
+<td> Position of offending character is returned here.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>overrides</code></em> :</span></p></td>
+<td> A <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table"><span class="type">Tld_table</span></a> array of additional domain restriction
+  structures that complement and supersede the built-in information.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns the <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc"><span class="type">Tld_rc</span></a> value <a class="link" href="libidn-tld.html#TLD-SUCCESS--CAPS"><code class="literal">TLD_SUCCESS</code></a> if all
+  characters are valid or when <em class="parameter"><code>tld</code></em> is null, <a class="link" href="libidn-tld.html#TLD-INVALID--CAPS"><code class="literal">TLD_INVALID</code></a> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" title="tld_check_lz ()">
+<a name="tld-check-lz"></a><h3>tld_check_lz ()</h3>
+<pre class="programlisting">int                 tld_check_lz                        (const char *in,
+                                                         size_t *errpos,
+                                                         const <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table">Tld_table</a> **overrides);</pre>
+<p>
+Test each of the characters in <em class="parameter"><code>in</code></em> for whether or not they are
+allowed by the information in <em class="parameter"><code>overrides</code></em> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <em class="parameter"><code>overrides</code></em>, the information in <em class="parameter"><code>overrides</code></em> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <em class="parameter"><code>overrides</code></em> is <code class="literal">NULL</code>, only the built-in
+information is used.  The position of the first offending character
+is returned in <em class="parameter"><code>errpos</code></em>.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.</p>
+<p>
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>in</code></em> :</span></p></td>
+<td> Zero-terminated string in the current locales encoding to process.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>errpos</code></em> :</span></p></td>
+<td> Position of offending character is returned here.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>overrides</code></em> :</span></p></td>
+<td> A <a class="link" href="libidn-tld.html#Tld-table" title="Tld_table"><span class="type">Tld_table</span></a> array of additional domain restriction
+  structures that complement and supersede the built-in information.
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td> Returns the <a class="link" href="libidn-tld.html#Tld-rc" title="enum Tld_rc"><span class="type">Tld_rc</span></a> value <a class="link" href="libidn-tld.html#TLD-SUCCESS--CAPS"><code class="literal">TLD_SUCCESS</code></a> if all
+  characters are valid or when <em class="parameter"><code>tld</code></em> is null, <a class="link" href="libidn-tld.html#TLD-INVALID--CAPS"><code class="literal">TLD_INVALID</code></a> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.11</div>
+</body>
+</html>
diff --git a/doc/reference/html/libidn.devhelp b/doc/reference/html/libidn.devhelp
new file mode 100644 (file)
index 0000000..425c605
--- /dev/null
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="GNU Libidn API Reference Manual" link="index.html" author="" name="libidn">
+  <chapters>
+    <sub name="GNU Libidn API Reference Manual" link="ch01.html">
+      <sub name="idna" link="libidn-idna.html"/>
+      <sub name="pr29" link="libidn-pr29.html"/>
+      <sub name="punycode" link="libidn-punycode.html"/>
+      <sub name="tld" link="libidn-tld.html"/>
+      <sub name="stringprep" link="libidn-stringprep.html"/>
+      <sub name="idn-free" link="libidn-idn-free.html"/>
+    </sub>
+  </chapters>
+  <functions>
+    <function name="IDNAPI" link="libidn-idna.html#IDNAPI--CAPS"/>
+    <function name="enum Idna_rc" link="libidn-idna.html#Idna-rc"/>
+    <function name="enum Idna_flags" link="libidn-idna.html#Idna-flags"/>
+    <function name="IDNA_ACE_PREFIX" link="libidn-idna.html#IDNA-ACE-PREFIX--CAPS"/>
+    <function name="idna_strerror ()" link="libidn-idna.html#idna-strerror"/>
+    <function name="idna_to_ascii_4i ()" link="libidn-idna.html#idna-to-ascii-4i"/>
+    <function name="idna_to_unicode_44i ()" link="libidn-idna.html#idna-to-unicode-44i"/>
+    <function name="idna_to_ascii_4z ()" link="libidn-idna.html#idna-to-ascii-4z"/>
+    <function name="idna_to_ascii_8z ()" link="libidn-idna.html#idna-to-ascii-8z"/>
+    <function name="idna_to_ascii_lz ()" link="libidn-idna.html#idna-to-ascii-lz"/>
+    <function name="idna_to_unicode_4z4z ()" link="libidn-idna.html#idna-to-unicode-4z4z"/>
+    <function name="idna_to_unicode_8z4z ()" link="libidn-idna.html#idna-to-unicode-8z4z"/>
+    <function name="idna_to_unicode_8z8z ()" link="libidn-idna.html#idna-to-unicode-8z8z"/>
+    <function name="idna_to_unicode_8zlz ()" link="libidn-idna.html#idna-to-unicode-8zlz"/>
+    <function name="idna_to_unicode_lzlz ()" link="libidn-idna.html#idna-to-unicode-lzlz"/>
+    <function name="IDNAPI" link="libidn-pr29.html#IDNAPI--CAPS"/>
+    <function name="enum Pr29_rc" link="libidn-pr29.html#Pr29-rc"/>
+    <function name="pr29_strerror ()" link="libidn-pr29.html#pr29-strerror"/>
+    <function name="pr29_4 ()" link="libidn-pr29.html#pr29-4"/>
+    <function name="pr29_4z ()" link="libidn-pr29.html#pr29-4z"/>
+    <function name="pr29_8z ()" link="libidn-pr29.html#pr29-8z"/>
+    <function name="IDNAPI" link="libidn-punycode.html#IDNAPI--CAPS"/>
+    <function name="enum Punycode_status" link="libidn-punycode.html#Punycode-status"/>
+    <function name="punycode_strerror ()" link="libidn-punycode.html#punycode-strerror"/>
+    <function name="punycode_uint" link="libidn-punycode.html#punycode-uint"/>
+    <function name="punycode_encode ()" link="libidn-punycode.html#punycode-encode"/>
+    <function name="punycode_decode ()" link="libidn-punycode.html#punycode-decode"/>
+    <function name="IDNAPI" link="libidn-tld.html#IDNAPI--CAPS"/>
+    <function name="Tld_table_element" link="libidn-tld.html#Tld-table-element"/>
+    <function name="Tld_table" link="libidn-tld.html#Tld-table"/>
+    <function name="enum Tld_rc" link="libidn-tld.html#Tld-rc"/>
+    <function name="tld_strerror ()" link="libidn-tld.html#tld-strerror"/>
+    <function name="tld_get_4 ()" link="libidn-tld.html#tld-get-4"/>
+    <function name="tld_get_4z ()" link="libidn-tld.html#tld-get-4z"/>
+    <function name="tld_get_z ()" link="libidn-tld.html#tld-get-z"/>
+    <function name="tld_get_table ()" link="libidn-tld.html#tld-get-table"/>
+    <function name="tld_default_table ()" link="libidn-tld.html#tld-default-table"/>
+    <function name="tld_check_4t ()" link="libidn-tld.html#tld-check-4t"/>
+    <function name="tld_check_4tz ()" link="libidn-tld.html#tld-check-4tz"/>
+    <function name="tld_check_4 ()" link="libidn-tld.html#tld-check-4"/>
+    <function name="tld_check_4z ()" link="libidn-tld.html#tld-check-4z"/>
+    <function name="tld_check_8z ()" link="libidn-tld.html#tld-check-8z"/>
+    <function name="tld_check_lz ()" link="libidn-tld.html#tld-check-lz"/>
+    <function name="IDNAPI" link="libidn-stringprep.html#IDNAPI--CAPS"/>
+    <function name="STRINGPREP_VERSION" link="libidn-stringprep.html#STRINGPREP-VERSION--CAPS"/>
+    <function name="enum Stringprep_rc" link="libidn-stringprep.html#Stringprep-rc"/>
+    <function name="enum Stringprep_profile_flags" link="libidn-stringprep.html#Stringprep-profile-flags"/>
+    <function name="enum Stringprep_profile_steps" link="libidn-stringprep.html#Stringprep-profile-steps"/>
+    <function name="STRINGPREP_MAX_MAP_CHARS" link="libidn-stringprep.html#STRINGPREP-MAX-MAP-CHARS--CAPS"/>
+    <function name="Stringprep_table_element" link="libidn-stringprep.html#Stringprep-table-element"/>
+    <function name="Stringprep_profile" link="libidn-stringprep.html#Stringprep-profile"/>
+    <function name="Stringprep_profiles" link="libidn-stringprep.html#Stringprep-profiles"/>
+    <function name="stringprep_nameprep()" link="libidn-stringprep.html#stringprep-nameprep"/>
+    <function name="stringprep_nameprep_no_unassigned()" link="libidn-stringprep.html#stringprep-nameprep-no-unassigned"/>
+    <function name="stringprep_plain()" link="libidn-stringprep.html#stringprep-plain"/>
+    <function name="stringprep_kerberos5()" link="libidn-stringprep.html#stringprep-kerberos5"/>
+    <function name="stringprep_xmpp_nodeprep()" link="libidn-stringprep.html#stringprep-xmpp-nodeprep"/>
+    <function name="stringprep_xmpp_resourceprep()" link="libidn-stringprep.html#stringprep-xmpp-resourceprep"/>
+    <function name="stringprep_iscsi()" link="libidn-stringprep.html#stringprep-iscsi"/>
+    <function name="stringprep_4i ()" link="libidn-stringprep.html#stringprep-4i"/>
+    <function name="stringprep_4zi ()" link="libidn-stringprep.html#stringprep-4zi"/>
+    <function name="stringprep ()" link="libidn-stringprep.html#stringprep"/>
+    <function name="stringprep_profile ()" link="libidn-stringprep.html#stringprep-profile"/>
+    <function name="stringprep_strerror ()" link="libidn-stringprep.html#stringprep-strerror"/>
+    <function name="stringprep_check_version ()" link="libidn-stringprep.html#stringprep-check-version"/>
+    <function name="stringprep_unichar_to_utf8 ()" link="libidn-stringprep.html#stringprep-unichar-to-utf8"/>
+    <function name="stringprep_utf8_to_unichar ()" link="libidn-stringprep.html#stringprep-utf8-to-unichar"/>
+    <function name="stringprep_utf8_to_ucs4 ()" link="libidn-stringprep.html#stringprep-utf8-to-ucs4"/>
+    <function name="stringprep_ucs4_to_utf8 ()" link="libidn-stringprep.html#stringprep-ucs4-to-utf8"/>
+    <function name="stringprep_utf8_nfkc_normalize ()" link="libidn-stringprep.html#stringprep-utf8-nfkc-normalize"/>
+    <function name="stringprep_ucs4_nfkc_normalize ()" link="libidn-stringprep.html#stringprep-ucs4-nfkc-normalize"/>
+    <function name="stringprep_locale_charset ()" link="libidn-stringprep.html#stringprep-locale-charset"/>
+    <function name="stringprep_convert ()" link="libidn-stringprep.html#stringprep-convert"/>
+    <function name="stringprep_locale_to_utf8 ()" link="libidn-stringprep.html#stringprep-locale-to-utf8"/>
+    <function name="stringprep_utf8_to_locale ()" link="libidn-stringprep.html#stringprep-utf8-to-locale"/>
+    <function name="IDNAPI" link="libidn-idn-free.html#IDNAPI--CAPS"/>
+  </functions>
+</book>
diff --git a/doc/reference/html/libidn.devhelp2 b/doc/reference/html/libidn.devhelp2
new file mode 100644 (file)
index 0000000..decdecf
--- /dev/null
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="GNU Libidn API Reference Manual" link="index.html" author="" name="libidn" version="2" language="c">
+  <chapters>
+    <sub name="GNU Libidn API Reference Manual" link="ch01.html">
+      <sub name="idna" link="libidn-idna.html"/>
+      <sub name="pr29" link="libidn-pr29.html"/>
+      <sub name="punycode" link="libidn-punycode.html"/>
+      <sub name="tld" link="libidn-tld.html"/>
+      <sub name="stringprep" link="libidn-stringprep.html"/>
+      <sub name="idn-free" link="libidn-idn-free.html"/>
+    </sub>
+  </chapters>
+  <functions>
+    <keyword type="macro" name="IDNAPI" link="libidn-idna.html#IDNAPI--CAPS"/>
+    <keyword type="enum" name="enum Idna_rc" link="libidn-idna.html#Idna-rc"/>
+    <keyword type="enum" name="enum Idna_flags" link="libidn-idna.html#Idna-flags"/>
+    <keyword type="macro" name="IDNA_ACE_PREFIX" link="libidn-idna.html#IDNA-ACE-PREFIX--CAPS"/>
+    <keyword type="function" name="idna_strerror ()" link="libidn-idna.html#idna-strerror"/>
+    <keyword type="function" name="idna_to_ascii_4i ()" link="libidn-idna.html#idna-to-ascii-4i"/>
+    <keyword type="function" name="idna_to_unicode_44i ()" link="libidn-idna.html#idna-to-unicode-44i"/>
+    <keyword type="function" name="idna_to_ascii_4z ()" link="libidn-idna.html#idna-to-ascii-4z"/>
+    <keyword type="function" name="idna_to_ascii_8z ()" link="libidn-idna.html#idna-to-ascii-8z"/>
+    <keyword type="function" name="idna_to_ascii_lz ()" link="libidn-idna.html#idna-to-ascii-lz"/>
+    <keyword type="function" name="idna_to_unicode_4z4z ()" link="libidn-idna.html#idna-to-unicode-4z4z"/>
+    <keyword type="function" name="idna_to_unicode_8z4z ()" link="libidn-idna.html#idna-to-unicode-8z4z"/>
+    <keyword type="function" name="idna_to_unicode_8z8z ()" link="libidn-idna.html#idna-to-unicode-8z8z"/>
+    <keyword type="function" name="idna_to_unicode_8zlz ()" link="libidn-idna.html#idna-to-unicode-8zlz"/>
+    <keyword type="function" name="idna_to_unicode_lzlz ()" link="libidn-idna.html#idna-to-unicode-lzlz"/>
+    <keyword type="macro" name="IDNAPI" link="libidn-pr29.html#IDNAPI--CAPS"/>
+    <keyword type="enum" name="enum Pr29_rc" link="libidn-pr29.html#Pr29-rc"/>
+    <keyword type="function" name="pr29_strerror ()" link="libidn-pr29.html#pr29-strerror"/>
+    <keyword type="function" name="pr29_4 ()" link="libidn-pr29.html#pr29-4"/>
+    <keyword type="function" name="pr29_4z ()" link="libidn-pr29.html#pr29-4z"/>
+    <keyword type="function" name="pr29_8z ()" link="libidn-pr29.html#pr29-8z"/>
+    <keyword type="macro" name="IDNAPI" link="libidn-punycode.html#IDNAPI--CAPS"/>
+    <keyword type="enum" name="enum Punycode_status" link="libidn-punycode.html#Punycode-status"/>
+    <keyword type="function" name="punycode_strerror ()" link="libidn-punycode.html#punycode-strerror"/>
+    <keyword type="typedef" name="punycode_uint" link="libidn-punycode.html#punycode-uint"/>
+    <keyword type="function" name="punycode_encode ()" link="libidn-punycode.html#punycode-encode"/>
+    <keyword type="function" name="punycode_decode ()" link="libidn-punycode.html#punycode-decode"/>
+    <keyword type="macro" name="IDNAPI" link="libidn-tld.html#IDNAPI--CAPS"/>
+    <keyword type="typedef" name="Tld_table_element" link="libidn-tld.html#Tld-table-element"/>
+    <keyword type="typedef" name="Tld_table" link="libidn-tld.html#Tld-table"/>
+    <keyword type="enum" name="enum Tld_rc" link="libidn-tld.html#Tld-rc"/>
+    <keyword type="function" name="tld_strerror ()" link="libidn-tld.html#tld-strerror"/>
+    <keyword type="function" name="tld_get_4 ()" link="libidn-tld.html#tld-get-4"/>
+    <keyword type="function" name="tld_get_4z ()" link="libidn-tld.html#tld-get-4z"/>
+    <keyword type="function" name="tld_get_z ()" link="libidn-tld.html#tld-get-z"/>
+    <keyword type="function" name="tld_get_table ()" link="libidn-tld.html#tld-get-table"/>
+    <keyword type="function" name="tld_default_table ()" link="libidn-tld.html#tld-default-table"/>
+    <keyword type="function" name="tld_check_4t ()" link="libidn-tld.html#tld-check-4t"/>
+    <keyword type="function" name="tld_check_4tz ()" link="libidn-tld.html#tld-check-4tz"/>
+    <keyword type="function" name="tld_check_4 ()" link="libidn-tld.html#tld-check-4"/>
+    <keyword type="function" name="tld_check_4z ()" link="libidn-tld.html#tld-check-4z"/>
+    <keyword type="function" name="tld_check_8z ()" link="libidn-tld.html#tld-check-8z"/>
+    <keyword type="function" name="tld_check_lz ()" link="libidn-tld.html#tld-check-lz"/>
+    <keyword type="macro" name="IDNAPI" link="libidn-stringprep.html#IDNAPI--CAPS"/>
+    <keyword type="macro" name="STRINGPREP_VERSION" link="libidn-stringprep.html#STRINGPREP-VERSION--CAPS"/>
+    <keyword type="enum" name="enum Stringprep_rc" link="libidn-stringprep.html#Stringprep-rc"/>
+    <keyword type="enum" name="enum Stringprep_profile_flags" link="libidn-stringprep.html#Stringprep-profile-flags"/>
+    <keyword type="enum" name="enum Stringprep_profile_steps" link="libidn-stringprep.html#Stringprep-profile-steps"/>
+    <keyword type="macro" name="STRINGPREP_MAX_MAP_CHARS" link="libidn-stringprep.html#STRINGPREP-MAX-MAP-CHARS--CAPS"/>
+    <keyword type="typedef" name="Stringprep_table_element" link="libidn-stringprep.html#Stringprep-table-element"/>
+    <keyword type="typedef" name="Stringprep_profile" link="libidn-stringprep.html#Stringprep-profile"/>
+    <keyword type="typedef" name="Stringprep_profiles" link="libidn-stringprep.html#Stringprep-profiles"/>
+    <keyword type="macro" name="stringprep_nameprep()" link="libidn-stringprep.html#stringprep-nameprep"/>
+    <keyword type="macro" name="stringprep_nameprep_no_unassigned()" link="libidn-stringprep.html#stringprep-nameprep-no-unassigned"/>
+    <keyword type="macro" name="stringprep_plain()" link="libidn-stringprep.html#stringprep-plain"/>
+    <keyword type="macro" name="stringprep_kerberos5()" link="libidn-stringprep.html#stringprep-kerberos5"/>
+    <keyword type="macro" name="stringprep_xmpp_nodeprep()" link="libidn-stringprep.html#stringprep-xmpp-nodeprep"/>
+    <keyword type="macro" name="stringprep_xmpp_resourceprep()" link="libidn-stringprep.html#stringprep-xmpp-resourceprep"/>
+    <keyword type="macro" name="stringprep_iscsi()" link="libidn-stringprep.html#stringprep-iscsi"/>
+    <keyword type="function" name="stringprep_4i ()" link="libidn-stringprep.html#stringprep-4i"/>
+    <keyword type="function" name="stringprep_4zi ()" link="libidn-stringprep.html#stringprep-4zi"/>
+    <keyword type="function" name="stringprep ()" link="libidn-stringprep.html#stringprep"/>
+    <keyword type="function" name="stringprep_profile ()" link="libidn-stringprep.html#stringprep-profile"/>
+    <keyword type="function" name="stringprep_strerror ()" link="libidn-stringprep.html#stringprep-strerror"/>
+    <keyword type="function" name="stringprep_check_version ()" link="libidn-stringprep.html#stringprep-check-version"/>
+    <keyword type="function" name="stringprep_unichar_to_utf8 ()" link="libidn-stringprep.html#stringprep-unichar-to-utf8"/>
+    <keyword type="function" name="stringprep_utf8_to_unichar ()" link="libidn-stringprep.html#stringprep-utf8-to-unichar"/>
+    <keyword type="function" name="stringprep_utf8_to_ucs4 ()" link="libidn-stringprep.html#stringprep-utf8-to-ucs4"/>
+    <keyword type="function" name="stringprep_ucs4_to_utf8 ()" link="libidn-stringprep.html#stringprep-ucs4-to-utf8"/>
+    <keyword type="function" name="stringprep_utf8_nfkc_normalize ()" link="libidn-stringprep.html#stringprep-utf8-nfkc-normalize"/>
+    <keyword type="function" name="stringprep_ucs4_nfkc_normalize ()" link="libidn-stringprep.html#stringprep-ucs4-nfkc-normalize"/>
+    <keyword type="function" name="stringprep_locale_charset ()" link="libidn-stringprep.html#stringprep-locale-charset"/>
+    <keyword type="function" name="stringprep_convert ()" link="libidn-stringprep.html#stringprep-convert"/>
+    <keyword type="function" name="stringprep_locale_to_utf8 ()" link="libidn-stringprep.html#stringprep-locale-to-utf8"/>
+    <keyword type="function" name="stringprep_utf8_to_locale ()" link="libidn-stringprep.html#stringprep-utf8-to-locale"/>
+    <keyword type="macro" name="IDNAPI" link="libidn-idn-free.html#IDNAPI--CAPS"/>
+    <keyword type="constant" name="IDNA_SUCCESS" link="libidn-idna.html#IDNA-SUCCESS--CAPS"/>
+    <keyword type="constant" name="IDNA_STRINGPREP_ERROR" link="libidn-idna.html#IDNA-STRINGPREP-ERROR--CAPS"/>
+    <keyword type="constant" name="IDNA_PUNYCODE_ERROR" link="libidn-idna.html#IDNA-PUNYCODE-ERROR--CAPS"/>
+    <keyword type="constant" name="IDNA_CONTAINS_NON_LDH" link="libidn-idna.html#IDNA-CONTAINS-NON-LDH--CAPS"/>
+    <keyword type="constant" name="IDNA_CONTAINS_LDH" link="libidn-idna.html#IDNA-CONTAINS-LDH--CAPS"/>
+    <keyword type="constant" name="IDNA_CONTAINS_MINUS" link="libidn-idna.html#IDNA-CONTAINS-MINUS--CAPS"/>
+    <keyword type="constant" name="IDNA_INVALID_LENGTH" link="libidn-idna.html#IDNA-INVALID-LENGTH--CAPS"/>
+    <keyword type="constant" name="IDNA_NO_ACE_PREFIX" link="libidn-idna.html#IDNA-NO-ACE-PREFIX--CAPS"/>
+    <keyword type="constant" name="IDNA_ROUNDTRIP_VERIFY_ERROR" link="libidn-idna.html#IDNA-ROUNDTRIP-VERIFY-ERROR--CAPS"/>
+    <keyword type="constant" name="IDNA_CONTAINS_ACE_PREFIX" link="libidn-idna.html#IDNA-CONTAINS-ACE-PREFIX--CAPS"/>
+    <keyword type="constant" name="IDNA_ICONV_ERROR" link="libidn-idna.html#IDNA-ICONV-ERROR--CAPS"/>
+    <keyword type="constant" name="IDNA_MALLOC_ERROR" link="libidn-idna.html#IDNA-MALLOC-ERROR--CAPS"/>
+    <keyword type="constant" name="IDNA_DLOPEN_ERROR" link="libidn-idna.html#IDNA-DLOPEN-ERROR--CAPS"/>
+    <keyword type="constant" name="IDNA_ALLOW_UNASSIGNED" link="libidn-idna.html#IDNA-ALLOW-UNASSIGNED--CAPS"/>
+    <keyword type="constant" name="IDNA_USE_STD3_ASCII_RULES" link="libidn-idna.html#IDNA-USE-STD3-ASCII-RULES--CAPS"/>
+    <keyword type="constant" name="PR29_SUCCESS" link="libidn-pr29.html#PR29-SUCCESS--CAPS"/>
+    <keyword type="constant" name="PR29_PROBLEM" link="libidn-pr29.html#PR29-PROBLEM--CAPS"/>
+    <keyword type="constant" name="PR29_STRINGPREP_ERROR" link="libidn-pr29.html#PR29-STRINGPREP-ERROR--CAPS"/>
+    <keyword type="constant" name="PUNYCODE_SUCCESS" link="libidn-punycode.html#PUNYCODE-SUCCESS--CAPS"/>
+    <keyword type="constant" name="PUNYCODE_BAD_INPUT" link="libidn-punycode.html#PUNYCODE-BAD-INPUT--CAPS"/>
+    <keyword type="constant" name="PUNYCODE_BIG_OUTPUT" link="libidn-punycode.html#PUNYCODE-BIG-OUTPUT--CAPS"/>
+    <keyword type="constant" name="PUNYCODE_OVERFLOW" link="libidn-punycode.html#PUNYCODE-OVERFLOW--CAPS"/>
+    <keyword type="constant" name="TLD_SUCCESS" link="libidn-tld.html#TLD-SUCCESS--CAPS"/>
+    <keyword type="constant" name="TLD_INVALID" link="libidn-tld.html#TLD-INVALID--CAPS"/>
+    <keyword type="constant" name="TLD_NODATA" link="libidn-tld.html#TLD-NODATA--CAPS"/>
+    <keyword type="constant" name="TLD_MALLOC_ERROR" link="libidn-tld.html#TLD-MALLOC-ERROR--CAPS"/>
+    <keyword type="constant" name="TLD_ICONV_ERROR" link="libidn-tld.html#TLD-ICONV-ERROR--CAPS"/>
+    <keyword type="constant" name="TLD_NO_TLD" link="libidn-tld.html#TLD-NO-TLD--CAPS"/>
+    <keyword type="constant" name="TLD_NOTLD" link="libidn-tld.html#TLD-NOTLD--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_OK" link="libidn-stringprep.html#STRINGPREP-OK--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_CONTAINS_UNASSIGNED" link="libidn-stringprep.html#STRINGPREP-CONTAINS-UNASSIGNED--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_CONTAINS_PROHIBITED" link="libidn-stringprep.html#STRINGPREP-CONTAINS-PROHIBITED--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_BIDI_BOTH_L_AND_RAL" link="libidn-stringprep.html#STRINGPREP-BIDI-BOTH-L-AND-RAL--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_BIDI_LEADTRAIL_NOT_RAL" link="libidn-stringprep.html#STRINGPREP-BIDI-LEADTRAIL-NOT-RAL--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_BIDI_CONTAINS_PROHIBITED" link="libidn-stringprep.html#STRINGPREP-BIDI-CONTAINS-PROHIBITED--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_TOO_SMALL_BUFFER" link="libidn-stringprep.html#STRINGPREP-TOO-SMALL-BUFFER--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_PROFILE_ERROR" link="libidn-stringprep.html#STRINGPREP-PROFILE-ERROR--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_FLAG_ERROR" link="libidn-stringprep.html#STRINGPREP-FLAG-ERROR--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_UNKNOWN_PROFILE" link="libidn-stringprep.html#STRINGPREP-UNKNOWN-PROFILE--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_NFKC_FAILED" link="libidn-stringprep.html#STRINGPREP-NFKC-FAILED--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_MALLOC_ERROR" link="libidn-stringprep.html#STRINGPREP-MALLOC-ERROR--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_NO_NFKC" link="libidn-stringprep.html#STRINGPREP-NO-NFKC--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_NO_BIDI" link="libidn-stringprep.html#STRINGPREP-NO-BIDI--CAPS"/>
+    <keyword type="constant" name="STRINGPREP_NO_UNASSIGNED" link="libidn-stringprep.html#STRINGPREP-NO-UNASSIGNED--CAPS"/>
+  </functions>
+</book>
diff --git a/doc/reference/html/right.png b/doc/reference/html/right.png
new file mode 100644 (file)
index 0000000..92832e3
Binary files /dev/null and b/doc/reference/html/right.png differ
diff --git a/doc/reference/html/style.css b/doc/reference/html/style.css
new file mode 100644 (file)
index 0000000..bb44c28
--- /dev/null
@@ -0,0 +1,167 @@
+.synopsis, .classsynopsis
+{
+  background: #eeeeee;
+  border: solid 1px #aaaaaa;
+  padding: 0.5em;
+}
+.programlisting
+{
+  background: #eeeeff;
+  border: solid 1px #aaaaff;
+  padding: 0.5em;
+}
+.variablelist
+{
+  padding: 4px;
+  margin-left: 3em;
+}
+.variablelist td:first-child
+{
+  vertical-align: top;
+}
+
+/* this is needed so that the local anchors are displayed below the naviagtion */
+@media screen {
+  sup a.footnote
+  {
+    position: relative;
+    top: 0em ! important;
+  }
+  div.refnamediv a[name], div.refsect1 a[name]
+  {
+    position: relative;
+    top: -4.5em;
+  }
+  table.navigation#top
+  {
+    background: #ffeeee;
+    border: solid 1px #ffaaaa;
+    margin-top: 0;
+    margin-bottom: 0;
+    position: fixed;
+    top: 0;
+    left: 0;
+    height: 2em;
+    z-index: 1;
+  }
+  .navigation a
+  {
+    color: #770000;
+  }
+  .navigation a:visited
+  {
+    color: #550000;
+  }
+  td.shortcuts
+  {
+    color: #770000;
+    font-size: 80%;
+    white-space: nowrap;
+  }
+  div.refentry, div.chapter, div.reference, div.part, div.book, div.glossary, div.sect1, div.appendix, div.preface
+  {
+    position: relative;
+    top: 3em;
+    z-index: 0;
+  }
+  div.glossary, div.index
+  {
+    position: relative;
+    top: 2em;
+    z-index: 0;
+  }
+  div.refnamediv
+  {
+    margin-top: 2em;
+  }
+  body
+  {
+    padding-bottom: 20em;
+  }
+}
+@media print {
+  table.navigation {
+    visibility: collapse;
+    display: none;
+  }
+  div.titlepage table.navigation {
+    visibility: visible;
+    display: table;
+    background: #ffeeee;
+    border: solid 1px #ffaaaa;
+    margin-top: 0;
+    margin-bottom: 0;
+    top: 0;
+    left: 0;
+    height: 2em;
+  }
+}
+
+.navigation .title
+{
+  font-size: 200%;
+}
+
+
+div.gallery-float
+{
+  float: left;
+  padding: 10px;
+}
+div.gallery-float img
+{
+  border-style: none;
+}
+div.gallery-spacer
+{
+  clear: both;
+}
+a
+{
+  text-decoration: none;
+}
+a:hover
+{
+  text-decoration: underline;
+  color: #FF0000;
+}
+
+div.table table
+{
+  border-collapse: collapse;
+  border-spacing: 0px;
+  border-style: solid;
+  border-color: #777777;
+  border-width: 1px;
+}
+
+div.table table td, div.table table th
+{
+  border-style: solid;
+  border-color: #777777;
+  border-width: 1px;
+  padding: 3px;
+  vertical-align: top;
+}
+
+div.table table th
+{
+  background-color: #eeeeee;
+}
+
+hr
+{
+  color: #777777;
+  background: #777777;
+  border: 0;
+  height: 1px;
+  clear: both;
+}
+
+.footer
+{
+  padding-top: 3.5em;
+  color: #777777;
+  text-align: center;
+  font-size: 80%;
+}
diff --git a/doc/reference/html/up.png b/doc/reference/html/up.png
new file mode 100644 (file)
index 0000000..85b3e2a
Binary files /dev/null and b/doc/reference/html/up.png differ
diff --git a/doc/reference/libidn-docs.sgml b/doc/reference/libidn-docs.sgml
new file mode 100644 (file)
index 0000000..cbf57c7
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
+  <bookinfo>
+    <title>GNU Libidn API Reference Manual</title>
+  </bookinfo>
+
+  <chapter>
+    <title>GNU Libidn API Reference Manual</title>
+
+    <para>
+GNU Libidn is a fully documented implementation of the Stringprep,
+Punycode and IDNA specifications.  Libidn's purpose is to encode and
+decode internationalized domain names.  The native C, C# and Java
+libraries are available under the GNU Lesser General Public License
+version 2.1 or later.
+    </para>
+
+    <para>
+The library contains a generic Stringprep implementation.  Profiles
+for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included.
+Punycode and ASCII Compatible Encoding (ACE) via IDNA are supported.
+A mechanism to define Top-Level Domain (TLD) specific validation
+tables, and to compare strings against those tables, is included.
+Default tables for some TLDs are also included.
+    </para>
+
+    <para>
+The Stringprep API consists of two main functions, one for converting
+data from the system's native representation into UTF-8, and one
+function to perform the Stringprep processing.  Adding a new
+Stringprep profile for your application within the API is
+straightforward.  The Punycode API consists of one encoding function
+and one decoding function.  The IDNA API consists of the ToASCII and
+ToUnicode functions, as well as an high-level interface for converting
+entire domain names to and from the ACE encoded form.  The TLD API
+consists of one set of functions to extract the TLD name from a domain
+string, one set of functions to locate the proper TLD table to use
+based on the TLD name, and core functions to validate a string against
+a TLD table, and some utility wrappers to perform all the steps in one
+call.
+    </para>
+
+    <para>
+The library is used by, e.g., GNU SASL and Shishi to process user
+names and passwords.  Libidn can be built into GNU Libc to enable a
+new system-wide getaddrinfo flag for IDN processing.
+    </para>
+
+    <para>
+Libidn is developed for the GNU/Linux system, but runs on over 20 Unix
+platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.  The
+library is written in C and (parts of) the API is also accessible from
+C++, Emacs Lisp, Python and Java.  A native Java and C# port is
+included.
+    </para>
+
+    <para>
+Also included is a command line tool, several self tests, code
+examples, and more, all licensed under the GNU General Public License
+version 3.0 or later.
+    </para>
+
+    <para>
+      The internal layout of the library, and how your application
+      interact with the various parts of the library, are shown in
+      <xref linkend="components"/>.
+    </para>
+
+    <figure id="components">
+      <title>Components of Libidn</title>
+      <graphic fileref="libidn-components.png" format="PNG"></graphic>
+    </figure>
+
+    <xi:include href="xml/idna.xml"/>
+    <xi:include href="xml/pr29.xml"/>
+    <xi:include href="xml/punycode.xml"/>
+    <xi:include href="xml/tld.xml"/>
+    <xi:include href="xml/stringprep.xml"/>
+    <xi:include href="xml/idn-free.xml"/>
+  </chapter>
+</book>
diff --git a/doc/reference/libidn-overrides.txt b/doc/reference/libidn-overrides.txt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/doc/reference/libidn-sections.txt b/doc/reference/libidn-sections.txt
new file mode 100644 (file)
index 0000000..a0a3db4
--- /dev/null
@@ -0,0 +1,121 @@
+<SECTION>
+<FILE>intprops</FILE>
+TYPE_TWOS_COMPLEMENT
+TYPE_ONES_COMPLEMENT
+TYPE_SIGNED_MAGNITUDE
+TYPE_SIGNED
+TYPE_MINIMUM
+TYPE_MAXIMUM
+signed_type_or_expr__
+INT_STRLEN_BOUND
+INT_BUFSIZE_BOUND
+<SUBSECTION Standard>
+TYPE_IS_INTEGER
+</SECTION>
+
+<SECTION>
+<FILE>idna</FILE>
+IDNAPI
+Idna_rc
+Idna_flags
+IDNA_ACE_PREFIX
+idna_strerror
+idna_to_ascii_4i
+idna_to_unicode_44i
+idna_to_ascii_4z
+idna_to_ascii_8z
+idna_to_ascii_lz
+idna_to_unicode_4z4z
+idna_to_unicode_8z4z
+idna_to_unicode_8z8z
+idna_to_unicode_8zlz
+idna_to_unicode_lzlz
+</SECTION>
+
+<SECTION>
+<FILE>pr29</FILE>
+IDNAPI
+Pr29_rc
+pr29_strerror
+pr29_4
+pr29_4z
+pr29_8z
+</SECTION>
+
+<SECTION>
+<FILE>tld</FILE>
+IDNAPI
+Tld_table_element
+Tld_table
+Tld_rc
+tld_strerror
+tld_get_4
+tld_get_4z
+tld_get_z
+tld_get_table
+tld_default_table
+tld_check_4t
+tld_check_4tz
+tld_check_4
+tld_check_4z
+tld_check_8z
+tld_check_lz
+</SECTION>
+
+<SECTION>
+<FILE>punycode</FILE>
+IDNAPI
+Punycode_status
+punycode_strerror
+punycode_uint
+punycode_encode
+punycode_decode
+</SECTION>
+
+<SECTION>
+<FILE>idn-free</FILE>
+IDNAPI
+</SECTION>
+
+<SECTION>
+<FILE>stringprep</FILE>
+IDNAPI
+STRINGPREP_VERSION
+Stringprep_rc
+Stringprep_profile_flags
+Stringprep_profile_steps
+STRINGPREP_MAX_MAP_CHARS
+Stringprep_table_element
+Stringprep_profile
+Stringprep_profiles
+stringprep_nameprep
+stringprep_nameprep_no_unassigned
+stringprep_plain
+stringprep_kerberos5
+stringprep_xmpp_nodeprep
+stringprep_xmpp_resourceprep
+stringprep_iscsi
+stringprep_4i
+stringprep_4zi
+stringprep
+stringprep_profile
+stringprep_strerror
+stringprep_check_version
+stringprep_unichar_to_utf8
+stringprep_utf8_to_unichar
+stringprep_utf8_to_ucs4
+stringprep_ucs4_to_utf8
+stringprep_utf8_nfkc_normalize
+stringprep_ucs4_nfkc_normalize
+stringprep_locale_charset
+stringprep_convert
+stringprep_locale_to_utf8
+stringprep_utf8_to_locale
+</SECTION>
+
+<SECTION>
+<FILE>verify</FILE>
+verify_true
+verify
+</SECTION>
+
diff --git a/doc/reference/libidn.types b/doc/reference/libidn.types
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/doc/reference/tmpl/idn-free.sgml b/doc/reference/tmpl/idn-free.sgml
new file mode 100644 (file)
index 0000000..11b27f1
--- /dev/null
@@ -0,0 +1,28 @@
+<!-- ##### SECTION Title ##### -->
+idn-free
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO IDNAPI ##### -->
+<para>
+
+</para>
+
+
+
diff --git a/doc/reference/tmpl/idna.sgml b/doc/reference/tmpl/idna.sgml
new file mode 100644 (file)
index 0000000..f995297
--- /dev/null
@@ -0,0 +1,184 @@
+<!-- ##### SECTION Title ##### -->
+idna
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO IDNAPI ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### ENUM Idna_rc ##### -->
+<para>
+
+</para>
+
+@IDNA_SUCCESS: 
+@IDNA_STRINGPREP_ERROR: 
+@IDNA_PUNYCODE_ERROR: 
+@IDNA_CONTAINS_NON_LDH: 
+@IDNA_CONTAINS_LDH: 
+@IDNA_CONTAINS_MINUS: 
+@IDNA_INVALID_LENGTH: 
+@IDNA_NO_ACE_PREFIX: 
+@IDNA_ROUNDTRIP_VERIFY_ERROR: 
+@IDNA_CONTAINS_ACE_PREFIX: 
+@IDNA_ICONV_ERROR: 
+@IDNA_MALLOC_ERROR: 
+@IDNA_DLOPEN_ERROR: 
+
+<!-- ##### ENUM Idna_flags ##### -->
+<para>
+
+</para>
+
+@IDNA_ALLOW_UNASSIGNED: 
+@IDNA_USE_STD3_ASCII_RULES: 
+
+<!-- ##### MACRO IDNA_ACE_PREFIX ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### FUNCTION idna_strerror ##### -->
+<para>
+
+</para>
+
+@rc: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_ascii_4i ##### -->
+<para>
+
+</para>
+
+@in: 
+@inlen: 
+@out: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_unicode_44i ##### -->
+<para>
+
+</para>
+
+@in: 
+@inlen: 
+@out: 
+@outlen: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_ascii_4z ##### -->
+<para>
+
+</para>
+
+@input: 
+@output: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_ascii_8z ##### -->
+<para>
+
+</para>
+
+@input: 
+@output: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_ascii_lz ##### -->
+<para>
+
+</para>
+
+@input: 
+@output: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_unicode_4z4z ##### -->
+<para>
+
+</para>
+
+@input: 
+@output: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_unicode_8z4z ##### -->
+<para>
+
+</para>
+
+@input: 
+@output: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_unicode_8z8z ##### -->
+<para>
+
+</para>
+
+@input: 
+@output: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_unicode_8zlz ##### -->
+<para>
+
+</para>
+
+@input: 
+@output: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION idna_to_unicode_lzlz ##### -->
+<para>
+
+</para>
+
+@input: 
+@output: 
+@flags: 
+@Returns: 
+
+
diff --git a/doc/reference/tmpl/intprops.sgml b/doc/reference/tmpl/intprops.sgml
new file mode 100644 (file)
index 0000000..8a900a5
--- /dev/null
@@ -0,0 +1,93 @@
+<!-- ##### SECTION Title ##### -->
+intprops
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO TYPE_TWOS_COMPLEMENT ##### -->
+<para>
+
+</para>
+
+@t: 
+
+
+<!-- ##### MACRO TYPE_ONES_COMPLEMENT ##### -->
+<para>
+
+</para>
+
+@t: 
+
+
+<!-- ##### MACRO TYPE_SIGNED_MAGNITUDE ##### -->
+<para>
+
+</para>
+
+@t: 
+
+
+<!-- ##### MACRO TYPE_SIGNED ##### -->
+<para>
+
+</para>
+
+@t: 
+
+
+<!-- ##### MACRO TYPE_MINIMUM ##### -->
+<para>
+
+</para>
+
+@t: 
+
+
+<!-- ##### MACRO TYPE_MAXIMUM ##### -->
+<para>
+
+</para>
+
+@t: 
+
+
+<!-- ##### MACRO signed_type_or_expr__ ##### -->
+<para>
+
+</para>
+
+@t: 
+
+
+<!-- ##### MACRO INT_STRLEN_BOUND ##### -->
+<para>
+
+</para>
+
+@t: 
+
+
+<!-- ##### MACRO INT_BUFSIZE_BOUND ##### -->
+<para>
+
+</para>
+
+@t: 
+
+
diff --git a/doc/reference/tmpl/libidn-unused.sgml b/doc/reference/tmpl/libidn-unused.sgml
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/doc/reference/tmpl/pr29.sgml b/doc/reference/tmpl/pr29.sgml
new file mode 100644 (file)
index 0000000..43d7d22
--- /dev/null
@@ -0,0 +1,74 @@
+<!-- ##### SECTION Title ##### -->
+pr29
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO IDNAPI ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### ENUM Pr29_rc ##### -->
+<para>
+
+</para>
+
+@PR29_SUCCESS: 
+@PR29_PROBLEM: 
+@PR29_STRINGPREP_ERROR: 
+
+<!-- ##### FUNCTION pr29_strerror ##### -->
+<para>
+
+</para>
+
+@rc: 
+@Returns: 
+
+
+<!-- ##### FUNCTION pr29_4 ##### -->
+<para>
+
+</para>
+
+@in: 
+@len: 
+@Returns: 
+
+
+<!-- ##### FUNCTION pr29_4z ##### -->
+<para>
+
+</para>
+
+@in: 
+@Returns: 
+
+
+<!-- ##### FUNCTION pr29_8z ##### -->
+<para>
+
+</para>
+
+@in: 
+@Returns: 
+
+
diff --git a/doc/reference/tmpl/punycode.sgml b/doc/reference/tmpl/punycode.sgml
new file mode 100644 (file)
index 0000000..5cbe442
--- /dev/null
@@ -0,0 +1,79 @@
+<!-- ##### SECTION Title ##### -->
+punycode
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO IDNAPI ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### ENUM Punycode_status ##### -->
+<para>
+
+</para>
+
+@PUNYCODE_SUCCESS: 
+@PUNYCODE_BAD_INPUT: 
+@PUNYCODE_BIG_OUTPUT: 
+@PUNYCODE_OVERFLOW: 
+
+<!-- ##### FUNCTION punycode_strerror ##### -->
+<para>
+
+</para>
+
+@rc: 
+@Returns: 
+
+
+<!-- ##### TYPEDEF punycode_uint ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION punycode_encode ##### -->
+<para>
+
+</para>
+
+@input_length: 
+@input: 
+@case_flags: 
+@output_length: 
+@output: 
+@Returns: 
+
+
+<!-- ##### FUNCTION punycode_decode ##### -->
+<para>
+
+</para>
+
+@input_length: 
+@input: 
+@output_length: 
+@output: 
+@case_flags: 
+@Returns: 
+
+
diff --git a/doc/reference/tmpl/stringprep.sgml b/doc/reference/tmpl/stringprep.sgml
new file mode 100644 (file)
index 0000000..59f8d30
--- /dev/null
@@ -0,0 +1,330 @@
+<!-- ##### SECTION Title ##### -->
+stringprep
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO IDNAPI ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO STRINGPREP_VERSION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### ENUM Stringprep_rc ##### -->
+<para>
+
+</para>
+
+@STRINGPREP_OK: 
+@STRINGPREP_CONTAINS_UNASSIGNED: 
+@STRINGPREP_CONTAINS_PROHIBITED: 
+@STRINGPREP_BIDI_BOTH_L_AND_RAL: 
+@STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: 
+@STRINGPREP_BIDI_CONTAINS_PROHIBITED: 
+@STRINGPREP_TOO_SMALL_BUFFER: 
+@STRINGPREP_PROFILE_ERROR: 
+@STRINGPREP_FLAG_ERROR: 
+@STRINGPREP_UNKNOWN_PROFILE: 
+@STRINGPREP_NFKC_FAILED: 
+@STRINGPREP_MALLOC_ERROR: 
+
+<!-- ##### ENUM Stringprep_profile_flags ##### -->
+<para>
+
+</para>
+
+@STRINGPREP_NO_NFKC: 
+@STRINGPREP_NO_BIDI: 
+@STRINGPREP_NO_UNASSIGNED: 
+
+<!-- ##### ENUM Stringprep_profile_steps ##### -->
+<para>
+
+</para>
+
+@STRINGPREP_NFKC: 
+@STRINGPREP_BIDI: 
+@STRINGPREP_MAP_TABLE: 
+@STRINGPREP_UNASSIGNED_TABLE: 
+@STRINGPREP_PROHIBIT_TABLE: 
+@STRINGPREP_BIDI_PROHIBIT_TABLE: 
+@STRINGPREP_BIDI_RAL_TABLE: 
+@STRINGPREP_BIDI_L_TABLE: 
+
+<!-- ##### MACRO STRINGPREP_MAX_MAP_CHARS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### TYPEDEF Stringprep_table_element ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF Stringprep_profile ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF Stringprep_profiles ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO stringprep_nameprep ##### -->
+<para>
+
+</para>
+
+@in: 
+@maxlen: 
+
+
+<!-- ##### MACRO stringprep_nameprep_no_unassigned ##### -->
+<para>
+
+</para>
+
+@in: 
+@maxlen: 
+
+
+<!-- ##### MACRO stringprep_plain ##### -->
+<para>
+
+</para>
+
+@in: 
+@maxlen: 
+
+
+<!-- ##### MACRO stringprep_kerberos5 ##### -->
+<para>
+
+</para>
+
+@in: 
+@maxlen: 
+
+
+<!-- ##### MACRO stringprep_xmpp_nodeprep ##### -->
+<para>
+
+</para>
+
+@in: 
+@maxlen: 
+
+
+<!-- ##### MACRO stringprep_xmpp_resourceprep ##### -->
+<para>
+
+</para>
+
+@in: 
+@maxlen: 
+
+
+<!-- ##### MACRO stringprep_iscsi ##### -->
+<para>
+
+</para>
+
+@in: 
+@maxlen: 
+
+
+<!-- ##### FUNCTION stringprep_4i ##### -->
+<para>
+
+</para>
+
+@ucs4: 
+@len: 
+@maxucs4len: 
+@flags: 
+@profile: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_4zi ##### -->
+<para>
+
+</para>
+
+@ucs4: 
+@maxucs4len: 
+@flags: 
+@profile: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep ##### -->
+<para>
+
+</para>
+
+@in: 
+@maxlen: 
+@flags: 
+@profile: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_profile ##### -->
+<para>
+
+</para>
+
+@in: 
+@out: 
+@profile: 
+@flags: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_strerror ##### -->
+<para>
+
+</para>
+
+@rc: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_check_version ##### -->
+<para>
+
+</para>
+
+@req_version: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_unichar_to_utf8 ##### -->
+<para>
+
+</para>
+
+@c: 
+@outbuf: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_utf8_to_unichar ##### -->
+<para>
+
+</para>
+
+@p: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_utf8_to_ucs4 ##### -->
+<para>
+
+</para>
+
+@str: 
+@len: 
+@items_written: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_ucs4_to_utf8 ##### -->
+<para>
+
+</para>
+
+@str: 
+@len: 
+@items_read: 
+@items_written: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_utf8_nfkc_normalize ##### -->
+<para>
+
+</para>
+
+@str: 
+@len: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_ucs4_nfkc_normalize ##### -->
+<para>
+
+</para>
+
+@str: 
+@len: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_locale_charset ##### -->
+<para>
+
+</para>
+
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_convert ##### -->
+<para>
+
+</para>
+
+@str: 
+@to_codeset: 
+@from_codeset: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_locale_to_utf8 ##### -->
+<para>
+
+</para>
+
+@str: 
+@Returns: 
+
+
+<!-- ##### FUNCTION stringprep_utf8_to_locale ##### -->
+<para>
+
+</para>
+
+@str: 
+@Returns: 
+
+
diff --git a/doc/reference/tmpl/tld.sgml b/doc/reference/tmpl/tld.sgml
new file mode 100644 (file)
index 0000000..680d2cc
--- /dev/null
@@ -0,0 +1,181 @@
+<!-- ##### SECTION Title ##### -->
+tld
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO IDNAPI ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### TYPEDEF Tld_table_element ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF Tld_table ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM Tld_rc ##### -->
+<para>
+
+</para>
+
+@TLD_SUCCESS: 
+@TLD_INVALID: 
+@TLD_NODATA: 
+@TLD_MALLOC_ERROR: 
+@TLD_ICONV_ERROR: 
+@TLD_NO_TLD: 
+@TLD_NOTLD: 
+
+<!-- ##### FUNCTION tld_strerror ##### -->
+<para>
+
+</para>
+
+@rc: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_get_4 ##### -->
+<para>
+
+</para>
+
+@in: 
+@inlen: 
+@out: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_get_4z ##### -->
+<para>
+
+</para>
+
+@in: 
+@out: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_get_z ##### -->
+<para>
+
+</para>
+
+@in: 
+@out: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_get_table ##### -->
+<para>
+
+</para>
+
+@tld: 
+@tables: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_default_table ##### -->
+<para>
+
+</para>
+
+@tld: 
+@overrides: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_check_4t ##### -->
+<para>
+
+</para>
+
+@in: 
+@inlen: 
+@errpos: 
+@tld: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_check_4tz ##### -->
+<para>
+
+</para>
+
+@in: 
+@errpos: 
+@tld: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_check_4 ##### -->
+<para>
+
+</para>
+
+@in: 
+@inlen: 
+@errpos: 
+@overrides: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_check_4z ##### -->
+<para>
+
+</para>
+
+@in: 
+@errpos: 
+@overrides: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_check_8z ##### -->
+<para>
+
+</para>
+
+@in: 
+@errpos: 
+@overrides: 
+@Returns: 
+
+
+<!-- ##### FUNCTION tld_check_lz ##### -->
+<para>
+
+</para>
+
+@in: 
+@errpos: 
+@overrides: 
+@Returns: 
+
+
diff --git a/doc/reference/tmpl/verify.sgml b/doc/reference/tmpl/verify.sgml
new file mode 100644 (file)
index 0000000..7ae5ca7
--- /dev/null
@@ -0,0 +1,37 @@
+<!-- ##### SECTION Title ##### -->
+verify
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO verify_true ##### -->
+<para>
+
+</para>
+
+@R: 
+
+
+<!-- ##### MACRO verify ##### -->
+<para>
+
+</para>
+
+@R: 
+
+
diff --git a/doc/reference/xml/api-index-deprecated.xml b/doc/reference/xml/api-index-deprecated.xml
new file mode 100644 (file)
index 0000000..1132835
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<indexdiv>
+</indexdiv>
diff --git a/doc/reference/xml/api-index-full.xml b/doc/reference/xml/api-index-full.xml
new file mode 100644 (file)
index 0000000..70cf02b
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<indexdiv>
+<indexdiv><title>I</title>
+<indexentry><primaryie linkends="IDNAPI--CAPS"><link linkend="IDNAPI--CAPS">IDNAPI</link></primaryie></indexentry>
+<indexentry><primaryie linkends="IDNA-ACE-PREFIX--CAPS"><link linkend="IDNA-ACE-PREFIX--CAPS">IDNA_ACE_PREFIX</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Idna-flags"><link linkend="Idna-flags">Idna_flags</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Idna-rc"><link linkend="Idna-rc">Idna_rc</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-strerror"><link linkend="idna-strerror">idna_strerror</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-ascii-4i"><link linkend="idna-to-ascii-4i">idna_to_ascii_4i</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-ascii-4z"><link linkend="idna-to-ascii-4z">idna_to_ascii_4z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-ascii-8z"><link linkend="idna-to-ascii-8z">idna_to_ascii_8z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-ascii-lz"><link linkend="idna-to-ascii-lz">idna_to_ascii_lz</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-unicode-44i"><link linkend="idna-to-unicode-44i">idna_to_unicode_44i</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-unicode-4z4z"><link linkend="idna-to-unicode-4z4z">idna_to_unicode_4z4z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-unicode-8z4z"><link linkend="idna-to-unicode-8z4z">idna_to_unicode_8z4z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-unicode-8z8z"><link linkend="idna-to-unicode-8z8z">idna_to_unicode_8z8z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-unicode-8zlz"><link linkend="idna-to-unicode-8zlz">idna_to_unicode_8zlz</link></primaryie></indexentry>
+<indexentry><primaryie linkends="idna-to-unicode-lzlz"><link linkend="idna-to-unicode-lzlz">idna_to_unicode_lzlz</link></primaryie></indexentry>
+<indexentry><primaryie linkends="INT-BUFSIZE-BOUND--CAPS"><link linkend="INT-BUFSIZE-BOUND--CAPS">INT_BUFSIZE_BOUND</link></primaryie></indexentry>
+<indexentry><primaryie linkends="INT-STRLEN-BOUND--CAPS"><link linkend="INT-STRLEN-BOUND--CAPS">INT_STRLEN_BOUND</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>P</title>
+<indexentry><primaryie linkends="pr29-4"><link linkend="pr29-4">pr29_4</link></primaryie></indexentry>
+<indexentry><primaryie linkends="pr29-4z"><link linkend="pr29-4z">pr29_4z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="pr29-8z"><link linkend="pr29-8z">pr29_8z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Pr29-rc"><link linkend="Pr29-rc">Pr29_rc</link></primaryie></indexentry>
+<indexentry><primaryie linkends="pr29-strerror"><link linkend="pr29-strerror">pr29_strerror</link></primaryie></indexentry>
+<indexentry><primaryie linkends="punycode-decode"><link linkend="punycode-decode">punycode_decode</link></primaryie></indexentry>
+<indexentry><primaryie linkends="punycode-encode"><link linkend="punycode-encode">punycode_encode</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Punycode-status"><link linkend="Punycode-status">Punycode_status</link></primaryie></indexentry>
+<indexentry><primaryie linkends="punycode-strerror"><link linkend="punycode-strerror">punycode_strerror</link></primaryie></indexentry>
+<indexentry><primaryie linkends="punycode-uint"><link linkend="punycode-uint">punycode_uint</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>S</title>
+<indexentry><primaryie linkends="signed-type-or-expr--"><link linkend="signed-type-or-expr--">signed_type_or_expr__</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep"><link linkend="stringprep">stringprep</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-4i"><link linkend="stringprep-4i">stringprep_4i</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-4zi"><link linkend="stringprep-4zi">stringprep_4zi</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-check-version"><link linkend="stringprep-check-version">stringprep_check_version</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-convert"><link linkend="stringprep-convert">stringprep_convert</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-iscsi"><link linkend="stringprep-iscsi">stringprep_iscsi</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-kerberos5"><link linkend="stringprep-kerberos5">stringprep_kerberos5</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-locale-charset"><link linkend="stringprep-locale-charset">stringprep_locale_charset</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-locale-to-utf8"><link linkend="stringprep-locale-to-utf8">stringprep_locale_to_utf8</link></primaryie></indexentry>
+<indexentry><primaryie linkends="STRINGPREP-MAX-MAP-CHARS--CAPS"><link linkend="STRINGPREP-MAX-MAP-CHARS--CAPS">STRINGPREP_MAX_MAP_CHARS</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-nameprep"><link linkend="stringprep-nameprep">stringprep_nameprep</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-nameprep-no-unassigned"><link linkend="stringprep-nameprep-no-unassigned">stringprep_nameprep_no_unassigned</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-plain"><link linkend="stringprep-plain">stringprep_plain</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Stringprep-profile"><link linkend="Stringprep-profile">Stringprep_profile</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-profile"><link linkend="stringprep-profile">stringprep_profile</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Stringprep-profiles"><link linkend="Stringprep-profiles">Stringprep_profiles</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Stringprep-profile-flags"><link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Stringprep-profile-steps"><link linkend="Stringprep-profile-steps">Stringprep_profile_steps</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Stringprep-rc"><link linkend="Stringprep-rc">Stringprep_rc</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-strerror"><link linkend="stringprep-strerror">stringprep_strerror</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Stringprep-table-element"><link linkend="Stringprep-table-element">Stringprep_table_element</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-ucs4-nfkc-normalize"><link linkend="stringprep-ucs4-nfkc-normalize">stringprep_ucs4_nfkc_normalize</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-ucs4-to-utf8"><link linkend="stringprep-ucs4-to-utf8">stringprep_ucs4_to_utf8</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-unichar-to-utf8"><link linkend="stringprep-unichar-to-utf8">stringprep_unichar_to_utf8</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-utf8-nfkc-normalize"><link linkend="stringprep-utf8-nfkc-normalize">stringprep_utf8_nfkc_normalize</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-utf8-to-locale"><link linkend="stringprep-utf8-to-locale">stringprep_utf8_to_locale</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-utf8-to-ucs4"><link linkend="stringprep-utf8-to-ucs4">stringprep_utf8_to_ucs4</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-utf8-to-unichar"><link linkend="stringprep-utf8-to-unichar">stringprep_utf8_to_unichar</link></primaryie></indexentry>
+<indexentry><primaryie linkends="STRINGPREP-VERSION--CAPS"><link linkend="STRINGPREP-VERSION--CAPS">STRINGPREP_VERSION</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-xmpp-nodeprep"><link linkend="stringprep-xmpp-nodeprep">stringprep_xmpp_nodeprep</link></primaryie></indexentry>
+<indexentry><primaryie linkends="stringprep-xmpp-resourceprep"><link linkend="stringprep-xmpp-resourceprep">stringprep_xmpp_resourceprep</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>T</title>
+<indexentry><primaryie linkends="tld-check-4"><link linkend="tld-check-4">tld_check_4</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-check-4t"><link linkend="tld-check-4t">tld_check_4t</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-check-4tz"><link linkend="tld-check-4tz">tld_check_4tz</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-check-4z"><link linkend="tld-check-4z">tld_check_4z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-check-8z"><link linkend="tld-check-8z">tld_check_8z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-check-lz"><link linkend="tld-check-lz">tld_check_lz</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-default-table"><link linkend="tld-default-table">tld_default_table</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-get-4"><link linkend="tld-get-4">tld_get_4</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-get-4z"><link linkend="tld-get-4z">tld_get_4z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-get-table"><link linkend="tld-get-table">tld_get_table</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-get-z"><link linkend="tld-get-z">tld_get_z</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Tld-rc"><link linkend="Tld-rc">Tld_rc</link></primaryie></indexentry>
+<indexentry><primaryie linkends="tld-strerror"><link linkend="tld-strerror">tld_strerror</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Tld-table"><link linkend="Tld-table">Tld_table</link></primaryie></indexentry>
+<indexentry><primaryie linkends="Tld-table-element"><link linkend="Tld-table-element">Tld_table_element</link></primaryie></indexentry>
+<indexentry><primaryie linkends="TYPE-MAXIMUM--CAPS"><link linkend="TYPE-MAXIMUM--CAPS">TYPE_MAXIMUM</link></primaryie></indexentry>
+<indexentry><primaryie linkends="TYPE-MINIMUM--CAPS"><link linkend="TYPE-MINIMUM--CAPS">TYPE_MINIMUM</link></primaryie></indexentry>
+<indexentry><primaryie linkends="TYPE-ONES-COMPLEMENT--CAPS"><link linkend="TYPE-ONES-COMPLEMENT--CAPS">TYPE_ONES_COMPLEMENT</link></primaryie></indexentry>
+<indexentry><primaryie linkends="TYPE-SIGNED--CAPS"><link linkend="TYPE-SIGNED--CAPS">TYPE_SIGNED</link></primaryie></indexentry>
+<indexentry><primaryie linkends="TYPE-SIGNED-MAGNITUDE--CAPS"><link linkend="TYPE-SIGNED-MAGNITUDE--CAPS">TYPE_SIGNED_MAGNITUDE</link></primaryie></indexentry>
+<indexentry><primaryie linkends="TYPE-TWOS-COMPLEMENT--CAPS"><link linkend="TYPE-TWOS-COMPLEMENT--CAPS">TYPE_TWOS_COMPLEMENT</link></primaryie></indexentry>
+</indexdiv>
+<indexdiv><title>V</title>
+<indexentry><primaryie linkends="verify"><link linkend="verify">verify</link></primaryie></indexentry>
+<indexentry><primaryie linkends="verify-true"><link linkend="verify-true">verify_true</link></primaryie></indexentry>
+</indexdiv>
+</indexdiv>
diff --git a/doc/reference/xml/idn-free.xml b/doc/reference/xml/idn-free.xml
new file mode 100644 (file)
index 0000000..787c26f
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="libidn-idn-free">
+<refmeta>
+<refentrytitle role="top_of_page" id="libidn-idn-free.top_of_page">idn-free</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>LIBIDN Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>idn-free</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv id="libidn-idn-free.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#define             <link linkend="IDNAPI--CAPS">IDNAPI</link>
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1 id="libidn-idn-free.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="libidn-idn-free.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="IDNAPI--CAPS" role="macro">
+<title>IDNAPI</title>
+<indexterm zone="IDNAPI--CAPS"><primary sortas="IDNAPI">IDNAPI</primary></indexterm><programlisting>#define             IDNAPI</programlisting>
+<para>
+</para></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/reference/xml/idna.xml b/doc/reference/xml/idna.xml
new file mode 100644 (file)
index 0000000..309aa91
--- /dev/null
@@ -0,0 +1,568 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="libidn-idna">
+<refmeta>
+<refentrytitle role="top_of_page" id="libidn-idna.top_of_page">idna</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>LIBIDN Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>idna</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv id="libidn-idna.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#define             <link linkend="IDNAPI--CAPS">IDNAPI</link>
+enum                <link linkend="Idna-rc">Idna_rc</link>;
+enum                <link linkend="Idna-flags">Idna_flags</link>;
+#define             <link linkend="IDNA-ACE-PREFIX--CAPS">IDNA_ACE_PREFIX</link>
+const <link linkend="char">char</link> *        <link linkend="idna-strerror">idna_strerror</link>                       (<link linkend="Idna-rc">Idna_rc</link> rc);
+<link linkend="int">int</link>                 <link linkend="idna-to-ascii-4i">idna_to_ascii_4i</link>                    (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="char">char</link> *out,
+                                                         <link linkend="int">int</link> flags);
+<link linkend="int">int</link>                 <link linkend="idna-to-unicode-44i">idna_to_unicode_44i</link>                 (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="uint32-t">uint32_t</link> *out,
+                                                         <link linkend="size-t">size_t</link> *outlen,
+                                                         <link linkend="int">int</link> flags);
+<link linkend="int">int</link>                 <link linkend="idna-to-ascii-4z">idna_to_ascii_4z</link>                    (const <link linkend="uint32-t">uint32_t</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);
+<link linkend="int">int</link>                 <link linkend="idna-to-ascii-8z">idna_to_ascii_8z</link>                    (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);
+<link linkend="int">int</link>                 <link linkend="idna-to-ascii-lz">idna_to_ascii_lz</link>                    (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);
+<link linkend="int">int</link>                 <link linkend="idna-to-unicode-4z4z">idna_to_unicode_4z4z</link>                (const <link linkend="uint32-t">uint32_t</link> *input,
+                                                         <link linkend="uint32-t">uint32_t</link> **output,
+                                                         <link linkend="int">int</link> flags);
+<link linkend="int">int</link>                 <link linkend="idna-to-unicode-8z4z">idna_to_unicode_8z4z</link>                (const <link linkend="char">char</link> *input,
+                                                         <link linkend="uint32-t">uint32_t</link> **output,
+                                                         <link linkend="int">int</link> flags);
+<link linkend="int">int</link>                 <link linkend="idna-to-unicode-8z8z">idna_to_unicode_8z8z</link>                (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);
+<link linkend="int">int</link>                 <link linkend="idna-to-unicode-8zlz">idna_to_unicode_8zlz</link>                (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);
+<link linkend="int">int</link>                 <link linkend="idna-to-unicode-lzlz">idna_to_unicode_lzlz</link>                (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1 id="libidn-idna.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="libidn-idna.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="IDNAPI--CAPS" role="macro">
+<title>IDNAPI</title>
+<indexterm zone="IDNAPI--CAPS"><primary sortas="IDNAPI">IDNAPI</primary></indexterm><programlisting>#define             IDNAPI</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="Idna-rc" role="enum">
+<title>enum Idna_rc</title>
+<indexterm zone="Idna-rc"><primary sortas="Idna_rc">Idna_rc</primary></indexterm><programlisting>  typedef enum
+  {
+    IDNA_SUCCESS = 0,
+    IDNA_STRINGPREP_ERROR = 1,
+    IDNA_PUNYCODE_ERROR = 2,
+    IDNA_CONTAINS_NON_LDH = 3,
+    /* Workaround typo in earlier versions. */
+    IDNA_CONTAINS_LDH = IDNA_CONTAINS_NON_LDH,
+    IDNA_CONTAINS_MINUS = 4,
+    IDNA_INVALID_LENGTH = 5,
+    IDNA_NO_ACE_PREFIX = 6,
+    IDNA_ROUNDTRIP_VERIFY_ERROR = 7,
+    IDNA_CONTAINS_ACE_PREFIX = 8,
+    IDNA_ICONV_ERROR = 9,
+    /* Internal errors. */
+    IDNA_MALLOC_ERROR = 201,
+    IDNA_DLOPEN_ERROR = 202
+  } Idna_rc;
+</programlisting>
+<para>
+Enumerated return codes of <link linkend="idna-to-ascii-4i"><function>idna_to_ascii_4i()</function></link>,
+<link linkend="idna-to-unicode-44i"><function>idna_to_unicode_44i()</function></link> functions (and functions derived from those
+functions).  The value 0 is guaranteed to always correspond to
+success.</para>
+<para>
+</para><variablelist role="enum">
+<varlistentry id="IDNA-SUCCESS--CAPS" role="constant">
+<term><literal>IDNA_SUCCESS</literal></term>
+<listitem><simpara> Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-STRINGPREP-ERROR--CAPS" role="constant">
+<term><literal>IDNA_STRINGPREP_ERROR</literal></term>
+<listitem><simpara>  Error during string preparation.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-PUNYCODE-ERROR--CAPS" role="constant">
+<term><literal>IDNA_PUNYCODE_ERROR</literal></term>
+<listitem><simpara> Error during punycode operation.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-CONTAINS-NON-LDH--CAPS" role="constant">
+<term><literal>IDNA_CONTAINS_NON_LDH</literal></term>
+<listitem><simpara> For IDNA_USE_STD3_ASCII_RULES, indicate that
+  the string contains non-LDH ASCII characters.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-CONTAINS-LDH--CAPS" role="constant">
+<term><literal>IDNA_CONTAINS_LDH</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-CONTAINS-MINUS--CAPS" role="constant">
+<term><literal>IDNA_CONTAINS_MINUS</literal></term>
+<listitem><simpara> For IDNA_USE_STD3_ASCII_RULES, indicate that
+  the string contains a leading or trailing hyphen-minus (U+002D).
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-INVALID-LENGTH--CAPS" role="constant">
+<term><literal>IDNA_INVALID_LENGTH</literal></term>
+<listitem><simpara> The final output string is not within the
+  (inclusive) range 1 to 63 characters.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-NO-ACE-PREFIX--CAPS" role="constant">
+<term><literal>IDNA_NO_ACE_PREFIX</literal></term>
+<listitem><simpara> The string does not contain the ACE prefix
+  (for ToUnicode).
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-ROUNDTRIP-VERIFY-ERROR--CAPS" role="constant">
+<term><literal>IDNA_ROUNDTRIP_VERIFY_ERROR</literal></term>
+<listitem><simpara> The ToASCII operation on output
+  string does not equal the input.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-CONTAINS-ACE-PREFIX--CAPS" role="constant">
+<term><literal>IDNA_CONTAINS_ACE_PREFIX</literal></term>
+<listitem><simpara> The input contains the ACE prefix (for
+  ToASCII).
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-ICONV-ERROR--CAPS" role="constant">
+<term><literal>IDNA_ICONV_ERROR</literal></term>
+<listitem><simpara> Could not convert string in locale encoding.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-MALLOC-ERROR--CAPS" role="constant">
+<term><literal>IDNA_MALLOC_ERROR</literal></term>
+<listitem><simpara> Could not allocate buffer (this is typically a
+  fatal error).
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-DLOPEN-ERROR--CAPS" role="constant">
+<term><literal>IDNA_DLOPEN_ERROR</literal></term>
+<listitem><simpara> Could not dlopen the libcidn DSO (only used
+  internally in libc).
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="Idna-flags" role="enum">
+<title>enum Idna_flags</title>
+<indexterm zone="Idna-flags"><primary sortas="Idna_flags">Idna_flags</primary></indexterm><programlisting>  typedef enum
+  {
+    IDNA_ALLOW_UNASSIGNED = 0x0001,
+    IDNA_USE_STD3_ASCII_RULES = 0x0002
+  } Idna_flags;
+</programlisting>
+<para>
+Flags to pass to <link linkend="idna-to-ascii-4i"><function>idna_to_ascii_4i()</function></link>, <link linkend="idna-to-unicode-44i"><function>idna_to_unicode_44i()</function></link> etc.</para>
+<para>
+</para><variablelist role="enum">
+<varlistentry id="IDNA-ALLOW-UNASSIGNED--CAPS" role="constant">
+<term><literal>IDNA_ALLOW_UNASSIGNED</literal></term>
+<listitem><simpara> Don't reject strings containing unassigned
+  Unicode code points.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="IDNA-USE-STD3-ASCII-RULES--CAPS" role="constant">
+<term><literal>IDNA_USE_STD3_ASCII_RULES</literal></term>
+<listitem><simpara> Validate strings according to STD3
+  rules (i.e., normal host name rules).
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="IDNA-ACE-PREFIX--CAPS" role="macro">
+<title>IDNA_ACE_PREFIX</title>
+<indexterm zone="IDNA-ACE-PREFIX--CAPS"><primary sortas="IDNA_ACE_PREFIX">IDNA_ACE_PREFIX</primary></indexterm><programlisting>#  define IDNA_ACE_PREFIX "xn--"
+</programlisting>
+<para>
+The IANA allocated prefix to use for IDNA. "xn--"</para>
+<para>
+</para></refsect2>
+<refsect2 id="idna-strerror" role="function">
+<title>idna_strerror ()</title>
+<indexterm zone="idna-strerror"><primary sortas="idna_strerror">idna_strerror</primary></indexterm><programlisting>const <link linkend="char">char</link> *        idna_strerror                       (<link linkend="Idna-rc">Idna_rc</link> rc);</programlisting>
+<para>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</para>
+<para>
+IDNA_SUCCESS: Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+IDNA_STRINGPREP_ERROR:  Error during string preparation.
+IDNA_PUNYCODE_ERROR: Error during punycode operation.
+IDNA_CONTAINS_NON_LDH: For IDNA_USE_STD3_ASCII_RULES, indicate that
+  the string contains non-LDH ASCII characters.
+IDNA_CONTAINS_MINUS: For IDNA_USE_STD3_ASCII_RULES, indicate that
+  the string contains a leading or trailing hyphen-minus (U+002D).
+IDNA_INVALID_LENGTH: The final output string is not within the
+  (inclusive) range 1 to 63 characters.
+IDNA_NO_ACE_PREFIX: The string does not contain the ACE prefix
+  (for ToUnicode).
+IDNA_ROUNDTRIP_VERIFY_ERROR: The ToASCII operation on output
+  string does not equal the input.
+IDNA_CONTAINS_ACE_PREFIX: The input contains the ACE prefix (for
+  ToASCII).
+IDNA_ICONV_ERROR: Could not convert string in locale encoding.
+IDNA_MALLOC_ERROR: Could not allocate buffer (this is typically a
+  fatal error).
+IDNA_DLOPEN_ERROR: Could not dlopen the libcidn DSO (only used
+  internally in libc).</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>rc</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-rc"><type>Idna_rc</type></link> return code.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <parameter>rc</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-ascii-4i" role="function">
+<title>idna_to_ascii_4i ()</title>
+<indexterm zone="idna-to-ascii-4i"><primary sortas="idna_to_ascii_4i">idna_to_ascii_4i</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_ascii_4i                    (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="char">char</link> *out,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+The ToASCII operation takes a sequence of Unicode code points that
+make up one domain label and transforms it into a sequence of code
+points in the ASCII range (0..7F). If ToASCII succeeds, the
+original sequence and the resulting sequence are equivalent labels.
+</para>
+<para>
+It is important to note that the ToASCII operation can fail. ToASCII
+fails if any step of it fails. If any step of the ToASCII operation
+fails on any label in a domain name, that domain name MUST NOT be used
+as an internationalized domain name. The method for deadling with this
+failure is application-specific.
+</para>
+<para>
+The inputs to ToASCII are a sequence of code points, the AllowUnassigned
+flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a
+sequence of ASCII code points or a failure condition.
+</para>
+<para>
+ToASCII never alters a sequence of code points that are all in the ASCII
+range to begin with (although it could fail). Applying the ToASCII
+operation multiple times has exactly the same effect as applying it just
+once.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input array with unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>inlen</parameter>&#160;:</term>
+<listitem><simpara> length of input array with unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter>&#160;:</term>
+<listitem><simpara> output zero terminated string that must have room for at
+      least 63 characters plus the terminating zero.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns 0 on success, or an <link linkend="Idna-rc"><type>Idna_rc</type></link> error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-unicode-44i" role="function">
+<title>idna_to_unicode_44i ()</title>
+<indexterm zone="idna-to-unicode-44i"><primary sortas="idna_to_unicode_44i">idna_to_unicode_44i</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_unicode_44i                 (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="uint32-t">uint32_t</link> *out,
+                                                         <link linkend="size-t">size_t</link> *outlen,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+The ToUnicode operation takes a sequence of Unicode code points
+that make up one domain label and returns a sequence of Unicode
+code points. If the input sequence is a label in ACE form, then the
+result is an equivalent internationalized label that is not in ACE
+form, otherwise the original sequence is returned unaltered.
+</para>
+<para>
+ToUnicode never fails. If any step fails, then the original input
+sequence is returned immediately in that step.
+</para>
+<para>
+The Punycode decoder can never output more code points than it
+inputs, but Nameprep can, and therefore ToUnicode can.  Note that
+the number of octets needed to represent a sequence of code points
+depends on the particular character encoding used.
+</para>
+<para>
+The inputs to ToUnicode are a sequence of code points, the
+AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of
+ToUnicode is always a sequence of Unicode code points.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input array with unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>inlen</parameter>&#160;:</term>
+<listitem><simpara> length of input array with unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter>&#160;:</term>
+<listitem><simpara> output array with unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>outlen</parameter>&#160;:</term>
+<listitem><simpara> on input, maximum size of output array with unicode code points,
+         on exit, actual size of output array with unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="Idna-rc"><type>Idna_rc</type></link> error condition, but it must only be
+  used for debugging purposes.  The output buffer is always
+  guaranteed to contain the correct data according to the
+  specification (sans malloc induced errors).  NB!  This means that
+  you normally ignore the return code from this function, as
+  checking it means breaking the standard.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-ascii-4z" role="function">
+<title>idna_to_ascii_4z ()</title>
+<indexterm zone="idna-to-ascii-4z"><primary sortas="idna_to_ascii_4z">idna_to_ascii_4z</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_ascii_4z                    (const <link linkend="uint32-t">uint32_t</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+Convert UCS-4 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> zero terminated input Unicode string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> pointer to newly allocated output string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="IDNA-SUCCESS--CAPS"><literal>IDNA_SUCCESS</literal></link> on success, or error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-ascii-8z" role="function">
+<title>idna_to_ascii_8z ()</title>
+<indexterm zone="idna-to-ascii-8z"><primary sortas="idna_to_ascii_8z">idna_to_ascii_8z</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_ascii_8z                    (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+Convert UTF-8 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> zero terminated input UTF-8 string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> pointer to newly allocated output string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="IDNA-SUCCESS--CAPS"><literal>IDNA_SUCCESS</literal></link> on success, or error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-ascii-lz" role="function">
+<title>idna_to_ascii_lz ()</title>
+<indexterm zone="idna-to-ascii-lz"><primary sortas="idna_to_ascii_lz">idna_to_ascii_lz</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_ascii_lz                    (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+Convert domain name in the locale's encoding to ASCII string.  The
+domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> zero terminated input string encoded in the current locale's
+  character set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> pointer to newly allocated output string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="IDNA-SUCCESS--CAPS"><literal>IDNA_SUCCESS</literal></link> on success, or error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-unicode-4z4z" role="function">
+<title>idna_to_unicode_4z4z ()</title>
+<indexterm zone="idna-to-unicode-4z4z"><primary sortas="idna_to_unicode_4z4z">idna_to_unicode_4z4z</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_unicode_4z4z                (const <link linkend="uint32-t">uint32_t</link> *input,
+                                                         <link linkend="uint32-t">uint32_t</link> **output,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+Convert possibly ACE encoded domain name in UCS-4 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> zero-terminated Unicode string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> pointer to newly allocated output Unicode string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="IDNA-SUCCESS--CAPS"><literal>IDNA_SUCCESS</literal></link> on success, or error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-unicode-8z4z" role="function">
+<title>idna_to_unicode_8z4z ()</title>
+<indexterm zone="idna-to-unicode-8z4z"><primary sortas="idna_to_unicode_8z4z">idna_to_unicode_8z4z</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_unicode_8z4z                (const <link linkend="char">char</link> *input,
+                                                         <link linkend="uint32-t">uint32_t</link> **output,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+Convert possibly ACE encoded domain name in UTF-8 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> zero-terminated UTF-8 string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> pointer to newly allocated output Unicode string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="IDNA-SUCCESS--CAPS"><literal>IDNA_SUCCESS</literal></link> on success, or error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-unicode-8z8z" role="function">
+<title>idna_to_unicode_8z8z ()</title>
+<indexterm zone="idna-to-unicode-8z8z"><primary sortas="idna_to_unicode_8z8z">idna_to_unicode_8z8z</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_unicode_8z8z                (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+Convert possibly ACE encoded domain name in UTF-8 format into a
+UTF-8 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> zero-terminated UTF-8 string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> pointer to newly allocated output UTF-8 string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="IDNA-SUCCESS--CAPS"><literal>IDNA_SUCCESS</literal></link> on success, or error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-unicode-8zlz" role="function">
+<title>idna_to_unicode_8zlz ()</title>
+<indexterm zone="idna-to-unicode-8zlz"><primary sortas="idna_to_unicode_8zlz">idna_to_unicode_8zlz</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_unicode_8zlz                (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+Convert possibly ACE encoded domain name in UTF-8 format into a
+string encoded in the current locale's character set.  The domain
+name may contain several labels, separated by dots.  The output
+buffer must be deallocated by the caller.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> zero-terminated UTF-8 string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> pointer to newly allocated output string encoded in the
+  current locale's character set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="IDNA-SUCCESS--CAPS"><literal>IDNA_SUCCESS</literal></link> on success, or error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="idna-to-unicode-lzlz" role="function">
+<title>idna_to_unicode_lzlz ()</title>
+<indexterm zone="idna-to-unicode-lzlz"><primary sortas="idna_to_unicode_lzlz">idna_to_unicode_lzlz</primary></indexterm><programlisting><link linkend="int">int</link>                 idna_to_unicode_lzlz                (const <link linkend="char">char</link> *input,
+                                                         <link linkend="char">char</link> **output,
+                                                         <link linkend="int">int</link> flags);</programlisting>
+<para>
+Convert possibly ACE encoded domain name in the locale's character
+set into a string encoded in the current locale's character set.
+The domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> zero-terminated string encoded in the current locale's
+  character set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> pointer to newly allocated output string encoded in the
+  current locale's character set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Idna-flags"><type>Idna_flags</type></link> value, e.g., <link linkend="IDNA-ALLOW-UNASSIGNED--CAPS"><literal>IDNA_ALLOW_UNASSIGNED</literal></link> or
+  <link linkend="IDNA-USE-STD3-ASCII-RULES--CAPS"><literal>IDNA_USE_STD3_ASCII_RULES</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="IDNA-SUCCESS--CAPS"><literal>IDNA_SUCCESS</literal></link> on success, or error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/reference/xml/intprops.xml b/doc/reference/xml/intprops.xml
new file mode 100644 (file)
index 0000000..0d70f2a
--- /dev/null
@@ -0,0 +1,140 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="libidn-intprops">
+<refmeta>
+<refentrytitle role="top_of_page" id="libidn-intprops.top_of_page">intprops</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>LIBIDN Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>intprops</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv id="libidn-intprops.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#define             <link linkend="TYPE-TWOS-COMPLEMENT--CAPS">TYPE_TWOS_COMPLEMENT</link>                (t)
+#define             <link linkend="TYPE-ONES-COMPLEMENT--CAPS">TYPE_ONES_COMPLEMENT</link>                (t)
+#define             <link linkend="TYPE-SIGNED-MAGNITUDE--CAPS">TYPE_SIGNED_MAGNITUDE</link>               (t)
+#define             <link linkend="TYPE-SIGNED--CAPS">TYPE_SIGNED</link>                         (t)
+#define             <link linkend="TYPE-MINIMUM--CAPS">TYPE_MINIMUM</link>                        (t)
+#define             <link linkend="TYPE-MAXIMUM--CAPS">TYPE_MAXIMUM</link>                        (t)
+#define             <link linkend="signed-type-or-expr--">signed_type_or_expr__</link>               (t)
+#define             <link linkend="INT-STRLEN-BOUND--CAPS">INT_STRLEN_BOUND</link>                    (t)
+#define             <link linkend="INT-BUFSIZE-BOUND--CAPS">INT_BUFSIZE_BOUND</link>                   (t)
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1 id="libidn-intprops.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="libidn-intprops.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="TYPE-TWOS-COMPLEMENT--CAPS" role="macro">
+<title>TYPE_TWOS_COMPLEMENT()</title>
+<indexterm zone="TYPE-TWOS-COMPLEMENT--CAPS"><primary sortas="TYPE_TWOS_COMPLEMENT">TYPE_TWOS_COMPLEMENT</primary></indexterm><programlisting>#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>t</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="TYPE-ONES-COMPLEMENT--CAPS" role="macro">
+<title>TYPE_ONES_COMPLEMENT()</title>
+<indexterm zone="TYPE-ONES-COMPLEMENT--CAPS"><primary sortas="TYPE_ONES_COMPLEMENT">TYPE_ONES_COMPLEMENT</primary></indexterm><programlisting>#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>t</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="TYPE-SIGNED-MAGNITUDE--CAPS" role="macro">
+<title>TYPE_SIGNED_MAGNITUDE()</title>
+<indexterm zone="TYPE-SIGNED-MAGNITUDE--CAPS"><primary sortas="TYPE_SIGNED_MAGNITUDE">TYPE_SIGNED_MAGNITUDE</primary></indexterm><programlisting>#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 &lt; (t) -1)
+</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>t</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="TYPE-SIGNED--CAPS" role="macro">
+<title>TYPE_SIGNED()</title>
+<indexterm zone="TYPE-SIGNED--CAPS"><primary sortas="TYPE_SIGNED">TYPE_SIGNED</primary></indexterm><programlisting>#define TYPE_SIGNED(t) (! ((t) 0 &lt; (t) -1))
+</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>t</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="TYPE-MINIMUM--CAPS" role="macro">
+<title>TYPE_MINIMUM()</title>
+<indexterm zone="TYPE-MINIMUM--CAPS"><primary sortas="TYPE_MINIMUM">TYPE_MINIMUM</primary></indexterm><programlisting>#define             TYPE_MINIMUM(t)</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>t</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="TYPE-MAXIMUM--CAPS" role="macro">
+<title>TYPE_MAXIMUM()</title>
+<indexterm zone="TYPE-MAXIMUM--CAPS"><primary sortas="TYPE_MAXIMUM">TYPE_MAXIMUM</primary></indexterm><programlisting>#define             TYPE_MAXIMUM(t)</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>t</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="signed-type-or-expr--" role="macro">
+<title>signed_type_or_expr__()</title>
+<indexterm zone="signed-type-or-expr--"><primary sortas="signed_type_or_expr__">signed_type_or_expr__</primary></indexterm><programlisting>#define             signed_type_or_expr__(t)</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>t</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="INT-STRLEN-BOUND--CAPS" role="macro">
+<title>INT_STRLEN_BOUND()</title>
+<indexterm zone="INT-STRLEN-BOUND--CAPS"><primary sortas="INT_STRLEN_BOUND">INT_STRLEN_BOUND</primary></indexterm><programlisting>#define             INT_STRLEN_BOUND(t)</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>t</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="INT-BUFSIZE-BOUND--CAPS" role="macro">
+<title>INT_BUFSIZE_BOUND()</title>
+<indexterm zone="INT-BUFSIZE-BOUND--CAPS"><primary sortas="INT_BUFSIZE_BOUND">INT_BUFSIZE_BOUND</primary></indexterm><programlisting>#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
+</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>t</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/reference/xml/pr29.xml b/doc/reference/xml/pr29.xml
new file mode 100644 (file)
index 0000000..dc1d62b
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="libidn-pr29">
+<refmeta>
+<refentrytitle role="top_of_page" id="libidn-pr29.top_of_page">pr29</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>LIBIDN Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>pr29</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv id="libidn-pr29.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#define             <link linkend="IDNAPI--CAPS">IDNAPI</link>
+enum                <link linkend="Pr29-rc">Pr29_rc</link>;
+const <link linkend="char">char</link> *        <link linkend="pr29-strerror">pr29_strerror</link>                       (<link linkend="Pr29-rc">Pr29_rc</link> rc);
+<link linkend="int">int</link>                 <link linkend="pr29-4">pr29_4</link>                              (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> len);
+<link linkend="int">int</link>                 <link linkend="pr29-4z">pr29_4z</link>                             (const <link linkend="uint32-t">uint32_t</link> *in);
+<link linkend="int">int</link>                 <link linkend="pr29-8z">pr29_8z</link>                             (const <link linkend="char">char</link> *in);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1 id="libidn-pr29.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="libidn-pr29.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="IDNAPI--CAPS" role="macro">
+<title>IDNAPI</title>
+<indexterm zone="IDNAPI--CAPS"><primary sortas="IDNAPI">IDNAPI</primary></indexterm><programlisting>#define             IDNAPI</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="Pr29-rc" role="enum">
+<title>enum Pr29_rc</title>
+<indexterm zone="Pr29-rc"><primary sortas="Pr29_rc">Pr29_rc</primary></indexterm><programlisting>  typedef enum
+  {
+    PR29_SUCCESS = 0,
+    PR29_PROBLEM = 1,          /* String is a problem sequence. */
+    PR29_STRINGPREP_ERROR = 2  /* Charset conversion failed (p29_8*). */
+  } Pr29_rc;
+</programlisting>
+<para>
+Enumerated return codes for <link linkend="pr29-4"><function>pr29_4()</function></link>, <link linkend="pr29-4z"><function>pr29_4z()</function></link>, <link linkend="pr29-8z"><function>pr29_8z()</function></link>.  The
+value 0 is guaranteed to always correspond to success.</para>
+<para>
+</para><variablelist role="enum">
+<varlistentry id="PR29-SUCCESS--CAPS" role="constant">
+<term><literal>PR29_SUCCESS</literal></term>
+<listitem><simpara> Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="PR29-PROBLEM--CAPS" role="constant">
+<term><literal>PR29_PROBLEM</literal></term>
+<listitem><simpara> A problem sequence was encountered.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="PR29-STRINGPREP-ERROR--CAPS" role="constant">
+<term><literal>PR29_STRINGPREP_ERROR</literal></term>
+<listitem><simpara> The character set conversion failed (only
+  for <link linkend="pr29-8"><function>pr29_8()</function></link> and <link linkend="pr29-8z"><function>pr29_8z()</function></link>).
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="pr29-strerror" role="function">
+<title>pr29_strerror ()</title>
+<indexterm zone="pr29-strerror"><primary sortas="pr29_strerror">pr29_strerror</primary></indexterm><programlisting>const <link linkend="char">char</link> *        pr29_strerror                       (<link linkend="Pr29-rc">Pr29_rc</link> rc);</programlisting>
+<para>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</para>
+<para>
+PR29_SUCCESS: Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+PR29_PROBLEM: A problem sequence was encountered.
+PR29_STRINGPREP_ERROR: The character set conversion failed (only
+  for <link linkend="pr29-8"><function>pr29_8()</function></link> and <link linkend="pr29-8z"><function>pr29_8z()</function></link>).</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>rc</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Pr29-rc"><type>Pr29_rc</type></link> return code.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns a pointer to a statically allocated string
+  containing a description of the error with the return code <parameter>rc</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="pr29-4" role="function">
+<title>pr29_4 ()</title>
+<indexterm zone="pr29-4"><primary sortas="pr29_4">pr29_4</primary></indexterm><programlisting><link linkend="int">int</link>                 pr29_4                              (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> len);</programlisting>
+<para>
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input array with unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&#160;:</term>
+<listitem><simpara> length of input array with unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns the <link linkend="Pr29-rc"><type>Pr29_rc</type></link> value <link linkend="PR29-SUCCESS--CAPS"><literal>PR29_SUCCESS</literal></link> on success,
+  and <link linkend="PR29-PROBLEM--CAPS"><literal>PR29_PROBLEM</literal></link> if the input sequence is a "problem sequence"
+  (i.e., may be normalized into different strings by different
+  implementations).
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="pr29-4z" role="function">
+<title>pr29_4z ()</title>
+<indexterm zone="pr29-4z"><primary sortas="pr29_4z">pr29_4z</primary></indexterm><programlisting><link linkend="int">int</link>                 pr29_4z                             (const <link linkend="uint32-t">uint32_t</link> *in);</programlisting>
+<para>
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> zero terminated array of Unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns the <link linkend="Pr29-rc"><type>Pr29_rc</type></link> value <link linkend="PR29-SUCCESS--CAPS"><literal>PR29_SUCCESS</literal></link> on success,
+  and <link linkend="PR29-PROBLEM--CAPS"><literal>PR29_PROBLEM</literal></link> if the input sequence is a "problem sequence"
+  (i.e., may be normalized into different strings by different
+  implementations).
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="pr29-8z" role="function">
+<title>pr29_8z ()</title>
+<indexterm zone="pr29-8z"><primary sortas="pr29_8z">pr29_8z</primary></indexterm><programlisting><link linkend="int">int</link>                 pr29_8z                             (const <link linkend="char">char</link> *in);</programlisting>
+<para>
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> zero terminated input UTF-8 string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns the <link linkend="Pr29-rc"><type>Pr29_rc</type></link> value <link linkend="PR29-SUCCESS--CAPS"><literal>PR29_SUCCESS</literal></link> on success,
+  and <link linkend="PR29-PROBLEM--CAPS"><literal>PR29_PROBLEM</literal></link> if the input sequence is a "problem sequence"
+  (i.e., may be normalized into different strings by different
+  implementations), or <link linkend="PR29-STRINGPREP-ERROR--CAPS"><literal>PR29_STRINGPREP_ERROR</literal></link> if there was a
+  problem converting the string from UTF-8 to UCS-4.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/reference/xml/punycode.xml b/doc/reference/xml/punycode.xml
new file mode 100644 (file)
index 0000000..2176286
--- /dev/null
@@ -0,0 +1,240 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="libidn-punycode">
+<refmeta>
+<refentrytitle role="top_of_page" id="libidn-punycode.top_of_page">punycode</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>LIBIDN Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>punycode</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv id="libidn-punycode.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#define             <link linkend="IDNAPI--CAPS">IDNAPI</link>
+enum                <link linkend="Punycode-status">Punycode_status</link>;
+const <link linkend="char">char</link> *        <link linkend="punycode-strerror">punycode_strerror</link>                   (<link linkend="Punycode-status">Punycode_status</link> rc);
+typedef             <link linkend="punycode-uint">punycode_uint</link>;
+<link linkend="int">int</link>                 <link linkend="punycode-encode">punycode_encode</link>                     (<link linkend="size-t">size_t</link> input_length,
+                                                         const <link linkend="punycode-uint">punycode_uint</link> input[],
+                                                         unsigned <link linkend="char">char</link> case_flags[],
+                                                         <link linkend="size-t">size_t</link> *output_length,
+                                                         <link linkend="char">char</link> output[]);
+<link linkend="int">int</link>                 <link linkend="punycode-decode">punycode_decode</link>                     (<link linkend="size-t">size_t</link> input_length,
+                                                         const <link linkend="char">char</link> input[],
+                                                         <link linkend="size-t">size_t</link> *output_length,
+                                                         <link linkend="punycode-uint">punycode_uint</link> output[],
+                                                         unsigned <link linkend="char">char</link> case_flags[]);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1 id="libidn-punycode.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="libidn-punycode.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="IDNAPI--CAPS" role="macro">
+<title>IDNAPI</title>
+<indexterm zone="IDNAPI--CAPS"><primary sortas="IDNAPI">IDNAPI</primary></indexterm><programlisting>#define             IDNAPI</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="Punycode-status" role="enum">
+<title>enum Punycode_status</title>
+<indexterm zone="Punycode-status"><primary sortas="Punycode_status">Punycode_status</primary></indexterm><programlisting>  typedef enum
+  {
+    PUNYCODE_SUCCESS = punycode_success,
+    PUNYCODE_BAD_INPUT = punycode_bad_input,
+    PUNYCODE_BIG_OUTPUT = punycode_big_output,
+    PUNYCODE_OVERFLOW = punycode_overflow
+  } Punycode_status;
+</programlisting>
+<para>
+Enumerated return codes of <link linkend="punycode-encode"><function>punycode_encode()</function></link> and <link linkend="punycode-decode"><function>punycode_decode()</function></link>.
+The value 0 is guaranteed to always correspond to success.</para>
+<para>
+</para><variablelist role="enum">
+<varlistentry id="PUNYCODE-SUCCESS--CAPS" role="constant">
+<term><literal>PUNYCODE_SUCCESS</literal></term>
+<listitem><simpara> Successful operation.  This value is guaranteed
+  to always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="PUNYCODE-BAD-INPUT--CAPS" role="constant">
+<term><literal>PUNYCODE_BAD_INPUT</literal></term>
+<listitem><simpara> Input is invalid.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="PUNYCODE-BIG-OUTPUT--CAPS" role="constant">
+<term><literal>PUNYCODE_BIG_OUTPUT</literal></term>
+<listitem><simpara> Output would exceed the space provided.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="PUNYCODE-OVERFLOW--CAPS" role="constant">
+<term><literal>PUNYCODE_OVERFLOW</literal></term>
+<listitem><simpara> Input needs wider integers to process.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="punycode-strerror" role="function">
+<title>punycode_strerror ()</title>
+<indexterm zone="punycode-strerror"><primary sortas="punycode_strerror">punycode_strerror</primary></indexterm><programlisting>const <link linkend="char">char</link> *        punycode_strerror                   (<link linkend="Punycode-status">Punycode_status</link> rc);</programlisting>
+<para>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</para>
+<para>
+PUNYCODE_SUCCESS: Successful operation.  This value is guaranteed
+  to always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+PUNYCODE_BAD_INPUT: Input is invalid.
+PUNYCODE_BIG_OUTPUT: Output would exceed the space provided.
+PUNYCODE_OVERFLOW: Input needs wider integers to process.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>rc</parameter>&#160;:</term>
+<listitem><simpara> an <link linkend="Punycode-status"><type>Punycode_status</type></link> return code.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <parameter>rc</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="punycode-uint" role="typedef">
+<title>punycode_uint</title>
+<indexterm zone="punycode-uint"><primary sortas="punycode_uint">punycode_uint</primary></indexterm><programlisting>  typedef uint32_t punycode_uint;
+</programlisting>
+<para>
+Unicode code point data type, this is always a 32 bit unsigned
+integer.</para>
+<para>
+</para></refsect2>
+<refsect2 id="punycode-encode" role="function">
+<title>punycode_encode ()</title>
+<indexterm zone="punycode-encode"><primary sortas="punycode_encode">punycode_encode</primary></indexterm><programlisting><link linkend="int">int</link>                 punycode_encode                     (<link linkend="size-t">size_t</link> input_length,
+                                                         const <link linkend="punycode-uint">punycode_uint</link> input[],
+                                                         unsigned <link linkend="char">char</link> case_flags[],
+                                                         <link linkend="size-t">size_t</link> *output_length,
+                                                         <link linkend="char">char</link> output[]);</programlisting>
+<para>
+Converts a sequence of code points (presumed to be Unicode code
+points) to Punycode.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input_length</parameter>&#160;:</term>
+<listitem><simpara> The number of code points in the <parameter>input</parameter> array and
+  the number of flags in the <parameter>case_flags</parameter> array.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> An array of code points.  They are presumed to be Unicode
+  code points, but that is not strictly REQUIRED.  The array
+  contains code points, not code units.  UTF-16 uses code units
+  D800 through DFFF to refer to code points 10000..10FFFF.  The
+  code points D800..DFFF do not occur in any valid Unicode string.
+  The code points that can occur in Unicode strings (0..D7FF and
+  E000..10FFFF) are also called Unicode scalar values.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>case_flags</parameter>&#160;:</term>
+<listitem><simpara> A <link linkend="NULL--CAPS"><literal>NULL</literal></link> pointer or an array of boolean values parallel
+  to the <parameter>input</parameter> array.  Nonzero (true, flagged) suggests that the
+  corresponding Unicode character be forced to uppercase after
+  being decoded (if possible), and zero (false, unflagged) suggests
+  that it be forced to lowercase (if possible).  ASCII code points
+  (0..7F) are encoded literally, except that ASCII letters are
+  forced to uppercase or lowercase according to the corresponding
+  case flags.  If <parameter>case_flags</parameter> is a <link linkend="NULL--CAPS"><literal>NULL</literal></link> pointer then ASCII letters
+  are left as they are, and other code points are treated as
+  unflagged.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output_length</parameter>&#160;:</term>
+<listitem><simpara> The caller passes in the maximum number of ASCII
+  code points that it can receive.  On successful return it will
+  contain the number of ASCII code points actually output.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> An array of ASCII code points.  It is *not*
+  null-terminated; it will contain zeros if and only if the <parameter>input</parameter>
+  contains zeros.  (Of course the caller can leave room for a
+  terminator and add one if needed.)
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> The return value can be any of the <link linkend="Punycode-status"><type>Punycode_status</type></link>
+  values defined above except <link linkend="PUNYCODE-BAD-INPUT--CAPS"><literal>PUNYCODE_BAD_INPUT</literal></link>.  If not
+  <link linkend="PUNYCODE-SUCCESS--CAPS"><literal>PUNYCODE_SUCCESS</literal></link>, then <parameter>output_size</parameter> and <parameter>output</parameter> might contain
+  garbage.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="punycode-decode" role="function">
+<title>punycode_decode ()</title>
+<indexterm zone="punycode-decode"><primary sortas="punycode_decode">punycode_decode</primary></indexterm><programlisting><link linkend="int">int</link>                 punycode_decode                     (<link linkend="size-t">size_t</link> input_length,
+                                                         const <link linkend="char">char</link> input[],
+                                                         <link linkend="size-t">size_t</link> *output_length,
+                                                         <link linkend="punycode-uint">punycode_uint</link> output[],
+                                                         unsigned <link linkend="char">char</link> case_flags[]);</programlisting>
+<para>
+Converts Punycode to a sequence of code points (presumed to be
+Unicode code points).</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>input_length</parameter>&#160;:</term>
+<listitem><simpara> The number of ASCII code points in the <parameter>input</parameter> array.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>input</parameter>&#160;:</term>
+<listitem><simpara> An array of ASCII code points (0..7F).
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output_length</parameter>&#160;:</term>
+<listitem><simpara> The caller passes in the maximum number of code
+  points that it can receive into the <parameter>output</parameter> array (which is also
+  the maximum number of flags that it can receive into the
+  <parameter>case_flags</parameter> array, if <parameter>case_flags</parameter> is not a <link linkend="NULL--CAPS"><literal>NULL</literal></link> pointer).  On
+  successful return it will contain the number of code points
+  actually output (which is also the number of flags actually
+  output, if case_flags is not a null pointer).  The decoder will
+  never need to output more code points than the number of ASCII
+  code points in the input, because of the way the encoding is
+  defined.  The number of code points output cannot exceed the
+  maximum possible value of a punycode_uint, even if the supplied
+  <parameter>output_length</parameter> is greater than that.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&#160;:</term>
+<listitem><simpara> An array of code points like the input argument of
+  <link linkend="punycode-encode"><function>punycode_encode()</function></link> (see above).
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>case_flags</parameter>&#160;:</term>
+<listitem><simpara> A <link linkend="NULL--CAPS"><literal>NULL</literal></link> pointer (if the flags are not needed by the
+  caller) or an array of boolean values parallel to the <parameter>output</parameter>
+  array.  Nonzero (true, flagged) suggests that the corresponding
+  Unicode character be forced to uppercase by the caller (if
+  possible), and zero (false, unflagged) suggests that it be forced
+  to lowercase (if possible).  ASCII code points (0..7F) are output
+  already in the proper case, but their flags will be set
+  appropriately so that applying the flags would be harmless.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> The return value can be any of the <link linkend="Punycode-status"><type>Punycode_status</type></link>
+  values defined above.  If not <link linkend="PUNYCODE-SUCCESS--CAPS"><literal>PUNYCODE_SUCCESS</literal></link>, then
+  <parameter>output_length</parameter>, <parameter>output</parameter>, and <parameter>case_flags</parameter> might contain garbage.
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/reference/xml/stringprep.xml b/doc/reference/xml/stringprep.xml
new file mode 100644 (file)
index 0000000..4af4a8b
--- /dev/null
@@ -0,0 +1,866 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="libidn-stringprep">
+<refmeta>
+<refentrytitle role="top_of_page" id="libidn-stringprep.top_of_page">stringprep</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>LIBIDN Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>stringprep</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv id="libidn-stringprep.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#define             <link linkend="IDNAPI--CAPS">IDNAPI</link>
+#define             <link linkend="STRINGPREP-VERSION--CAPS">STRINGPREP_VERSION</link>
+enum                <link linkend="Stringprep-rc">Stringprep_rc</link>;
+enum                <link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link>;
+enum                <link linkend="Stringprep-profile-steps">Stringprep_profile_steps</link>;
+#define             <link linkend="STRINGPREP-MAX-MAP-CHARS--CAPS">STRINGPREP_MAX_MAP_CHARS</link>
+typedef             <link linkend="Stringprep-table-element">Stringprep_table_element</link>;
+typedef             <link linkend="Stringprep-profile">Stringprep_profile</link>;
+typedef             <link linkend="Stringprep-profiles">Stringprep_profiles</link>;
+#define             <link linkend="stringprep-nameprep">stringprep_nameprep</link>                 (in, maxlen)
+#define             <link linkend="stringprep-nameprep-no-unassigned">stringprep_nameprep_no_unassigned</link>   (in, maxlen)
+#define             <link linkend="stringprep-plain">stringprep_plain</link>                    (in, maxlen)
+#define             <link linkend="stringprep-kerberos5">stringprep_kerberos5</link>                (in, maxlen)
+#define             <link linkend="stringprep-xmpp-nodeprep">stringprep_xmpp_nodeprep</link>            (in, maxlen)
+#define             <link linkend="stringprep-xmpp-resourceprep">stringprep_xmpp_resourceprep</link>        (in, maxlen)
+#define             <link linkend="stringprep-iscsi">stringprep_iscsi</link>                    (in, maxlen)
+<link linkend="int">int</link>                 <link linkend="stringprep-4i">stringprep_4i</link>                       (<link linkend="uint32-t">uint32_t</link> *ucs4,
+                                                         <link linkend="size-t">size_t</link> *len,
+                                                         <link linkend="size-t">size_t</link> maxucs4len,
+                                                         <link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link> flags,
+                                                         const <link linkend="Stringprep-profile">Stringprep_profile</link> *profile);
+<link linkend="int">int</link>                 <link linkend="stringprep-4zi">stringprep_4zi</link>                      (<link linkend="uint32-t">uint32_t</link> *ucs4,
+                                                         <link linkend="size-t">size_t</link> maxucs4len,
+                                                         <link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link> flags,
+                                                         const <link linkend="Stringprep-profile">Stringprep_profile</link> *profile);
+<link linkend="int">int</link>                 <link linkend="stringprep">stringprep</link>                          (<link linkend="char">char</link> *in,
+                                                         <link linkend="size-t">size_t</link> maxlen,
+                                                         <link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link> flags,
+                                                         const <link linkend="Stringprep-profile">Stringprep_profile</link> *profile);
+<link linkend="int">int</link>                 <link linkend="stringprep-profile">stringprep_profile</link>                  (const <link linkend="char">char</link> *in,
+                                                         <link linkend="char">char</link> **out,
+                                                         const <link linkend="char">char</link> *profile,
+                                                         <link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link> flags);
+const <link linkend="char">char</link> *        <link linkend="stringprep-strerror">stringprep_strerror</link>                 (<link linkend="Stringprep-rc">Stringprep_rc</link> rc);
+const <link linkend="char">char</link> *        <link linkend="stringprep-check-version">stringprep_check_version</link>            (const <link linkend="char">char</link> *req_version);
+<link linkend="int">int</link>                 <link linkend="stringprep-unichar-to-utf8">stringprep_unichar_to_utf8</link>          (<link linkend="uint32-t">uint32_t</link> c,
+                                                         <link linkend="char">char</link> *outbuf);
+<link linkend="uint32-t">uint32_t</link>            <link linkend="stringprep-utf8-to-unichar">stringprep_utf8_to_unichar</link>          (const <link linkend="char">char</link> *p);
+<link linkend="uint32-t">uint32_t</link> *          <link linkend="stringprep-utf8-to-ucs4">stringprep_utf8_to_ucs4</link>             (const <link linkend="char">char</link> *str,
+                                                         <link linkend="ssize-t">ssize_t</link> len,
+                                                         <link linkend="size-t">size_t</link> *items_written);
+<link linkend="char">char</link> *              <link linkend="stringprep-ucs4-to-utf8">stringprep_ucs4_to_utf8</link>             (const <link linkend="uint32-t">uint32_t</link> *str,
+                                                         <link linkend="ssize-t">ssize_t</link> len,
+                                                         <link linkend="size-t">size_t</link> *items_read,
+                                                         <link linkend="size-t">size_t</link> *items_written);
+<link linkend="char">char</link> *              <link linkend="stringprep-utf8-nfkc-normalize">stringprep_utf8_nfkc_normalize</link>      (const <link linkend="char">char</link> *str,
+                                                         <link linkend="ssize-t">ssize_t</link> len);
+<link linkend="uint32-t">uint32_t</link> *          <link linkend="stringprep-ucs4-nfkc-normalize">stringprep_ucs4_nfkc_normalize</link>      (<link linkend="uint32-t">uint32_t</link> *str,
+                                                         <link linkend="ssize-t">ssize_t</link> len);
+const <link linkend="char">char</link> *        <link linkend="stringprep-locale-charset">stringprep_locale_charset</link>           (void);
+<link linkend="char">char</link> *              <link linkend="stringprep-convert">stringprep_convert</link>                  (const <link linkend="char">char</link> *str,
+                                                         const <link linkend="char">char</link> *to_codeset,
+                                                         const <link linkend="char">char</link> *from_codeset);
+<link linkend="char">char</link> *              <link linkend="stringprep-locale-to-utf8">stringprep_locale_to_utf8</link>           (const <link linkend="char">char</link> *str);
+<link linkend="char">char</link> *              <link linkend="stringprep-utf8-to-locale">stringprep_utf8_to_locale</link>           (const <link linkend="char">char</link> *str);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1 id="libidn-stringprep.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="libidn-stringprep.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="IDNAPI--CAPS" role="macro">
+<title>IDNAPI</title>
+<indexterm zone="IDNAPI--CAPS"><primary sortas="IDNAPI">IDNAPI</primary></indexterm><programlisting>#define             IDNAPI</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="STRINGPREP-VERSION--CAPS" role="macro">
+<title>STRINGPREP_VERSION</title>
+<indexterm zone="STRINGPREP-VERSION--CAPS"><primary sortas="STRINGPREP_VERSION">STRINGPREP_VERSION</primary></indexterm><programlisting># define STRINGPREP_VERSION "1.15"
+</programlisting>
+<para>
+String defined via CPP denoting the header file version number.
+Used together with <link linkend="stringprep-check-version"><function>stringprep_check_version()</function></link> to verify header file
+and run-time library consistency.</para>
+<para>
+</para></refsect2>
+<refsect2 id="Stringprep-rc" role="enum">
+<title>enum Stringprep_rc</title>
+<indexterm zone="Stringprep-rc"><primary sortas="Stringprep_rc">Stringprep_rc</primary></indexterm><programlisting>  typedef enum
+  {
+    STRINGPREP_OK = 0,
+    /* Stringprep errors. */
+    STRINGPREP_CONTAINS_UNASSIGNED = 1,
+    STRINGPREP_CONTAINS_PROHIBITED = 2,
+    STRINGPREP_BIDI_BOTH_L_AND_RAL = 3,
+    STRINGPREP_BIDI_LEADTRAIL_NOT_RAL = 4,
+    STRINGPREP_BIDI_CONTAINS_PROHIBITED = 5,
+    /* Error in calling application. */
+    STRINGPREP_TOO_SMALL_BUFFER = 100,
+    STRINGPREP_PROFILE_ERROR = 101,
+    STRINGPREP_FLAG_ERROR = 102,
+    STRINGPREP_UNKNOWN_PROFILE = 103,
+    /* Internal errors. */
+    STRINGPREP_NFKC_FAILED = 200,
+    STRINGPREP_MALLOC_ERROR = 201
+  } Stringprep_rc;
+</programlisting>
+<para>
+Enumerated return codes of <link linkend="stringprep"><function>stringprep()</function></link>, <link linkend="stringprep-profile"><function>stringprep_profile()</function></link>
+functions (and macros using those functions).  The value 0 is
+guaranteed to always correspond to success.</para>
+<para>
+</para><variablelist role="enum">
+<varlistentry id="STRINGPREP-OK--CAPS" role="constant">
+<term><literal>STRINGPREP_OK</literal></term>
+<listitem><simpara> Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-CONTAINS-UNASSIGNED--CAPS" role="constant">
+<term><literal>STRINGPREP_CONTAINS_UNASSIGNED</literal></term>
+<listitem><simpara> String contain unassigned Unicode
+  code points, which is forbidden by the profile.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-CONTAINS-PROHIBITED--CAPS" role="constant">
+<term><literal>STRINGPREP_CONTAINS_PROHIBITED</literal></term>
+<listitem><simpara> String contain code points
+  prohibited by the profile.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-BIDI-BOTH-L-AND-RAL--CAPS" role="constant">
+<term><literal>STRINGPREP_BIDI_BOTH_L_AND_RAL</literal></term>
+<listitem><simpara> String contain code points with
+  conflicting bidirection category.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-BIDI-LEADTRAIL-NOT-RAL--CAPS" role="constant">
+<term><literal>STRINGPREP_BIDI_LEADTRAIL_NOT_RAL</literal></term>
+<listitem><simpara> Leading and trailing character
+  in string not of proper bidirectional category.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-BIDI-CONTAINS-PROHIBITED--CAPS" role="constant">
+<term><literal>STRINGPREP_BIDI_CONTAINS_PROHIBITED</literal></term>
+<listitem><simpara> Contains prohibited code
+  points detected by bidirectional code.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-TOO-SMALL-BUFFER--CAPS" role="constant">
+<term><literal>STRINGPREP_TOO_SMALL_BUFFER</literal></term>
+<listitem><simpara> Buffer handed to function was too
+  small.  This usually indicate a problem in the calling
+  application.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-PROFILE-ERROR--CAPS" role="constant">
+<term><literal>STRINGPREP_PROFILE_ERROR</literal></term>
+<listitem><simpara> The stringprep profile was inconsistent.
+  This usually indicate an internal error in the library.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-FLAG-ERROR--CAPS" role="constant">
+<term><literal>STRINGPREP_FLAG_ERROR</literal></term>
+<listitem><simpara> The supplied flag conflicted with profile.
+  This usually indicate a problem in the calling application.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-UNKNOWN-PROFILE--CAPS" role="constant">
+<term><literal>STRINGPREP_UNKNOWN_PROFILE</literal></term>
+<listitem><simpara> The supplied profile name was not
+  known to the library.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-NFKC-FAILED--CAPS" role="constant">
+<term><literal>STRINGPREP_NFKC_FAILED</literal></term>
+<listitem><simpara> The Unicode NFKC operation failed.  This
+  usually indicate an internal error in the library.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-MALLOC-ERROR--CAPS" role="constant">
+<term><literal>STRINGPREP_MALLOC_ERROR</literal></term>
+<listitem><simpara> The <link linkend="malloc"><function>malloc()</function></link> was out of memory.  This is
+  usually a fatal error.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="Stringprep-profile-flags" role="enum">
+<title>enum Stringprep_profile_flags</title>
+<indexterm zone="Stringprep-profile-flags"><primary sortas="Stringprep_profile_flags">Stringprep_profile_flags</primary></indexterm><programlisting>  typedef enum
+  {
+    STRINGPREP_NO_NFKC = 1,
+    STRINGPREP_NO_BIDI = 2,
+    STRINGPREP_NO_UNASSIGNED = 4
+  } Stringprep_profile_flags;
+</programlisting>
+<para>
+Stringprep profile flags.</para>
+<para>
+</para><variablelist role="enum">
+<varlistentry id="STRINGPREP-NO-NFKC--CAPS" role="constant">
+<term><literal>STRINGPREP_NO_NFKC</literal></term>
+<listitem><simpara> Disable the NFKC normalization, as well as
+  selecting the non-NFKC case folding tables.  Usually the profile
+  specifies BIDI and NFKC settings, and applications should not
+  override it unless in special situations.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-NO-BIDI--CAPS" role="constant">
+<term><literal>STRINGPREP_NO_BIDI</literal></term>
+<listitem><simpara> Disable the BIDI step.  Usually the profile
+  specifies BIDI and NFKC settings, and applications should not
+  override it unless in special situations.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="STRINGPREP-NO-UNASSIGNED--CAPS" role="constant">
+<term><literal>STRINGPREP_NO_UNASSIGNED</literal></term>
+<listitem><simpara> Make the library return with an error if
+  string contains unassigned characters according to profile.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="Stringprep-profile-steps" role="enum">
+<title>enum Stringprep_profile_steps</title>
+<indexterm zone="Stringprep-profile-steps"><primary sortas="Stringprep_profile_steps">Stringprep_profile_steps</primary></indexterm><programlisting>  typedef enum
+  {
+    STRINGPREP_NFKC = 1,
+    STRINGPREP_BIDI = 2,
+    STRINGPREP_MAP_TABLE = 3,
+    STRINGPREP_UNASSIGNED_TABLE = 4,
+    STRINGPREP_PROHIBIT_TABLE = 5,
+    STRINGPREP_BIDI_PROHIBIT_TABLE = 6,
+    STRINGPREP_BIDI_RAL_TABLE = 7,
+    STRINGPREP_BIDI_L_TABLE = 8
+  } Stringprep_profile_steps;
+</programlisting>
+<para>
+Various steps in the stringprep algorithm.  You really want to
+study the source code to understand this one.  Only useful if you
+want to add another profile.</para>
+<para>
+</para></refsect2>
+<refsect2 id="STRINGPREP-MAX-MAP-CHARS--CAPS" role="macro">
+<title>STRINGPREP_MAX_MAP_CHARS</title>
+<indexterm zone="STRINGPREP-MAX-MAP-CHARS--CAPS"><primary sortas="STRINGPREP_MAX_MAP_CHARS">STRINGPREP_MAX_MAP_CHARS</primary></indexterm><programlisting># define STRINGPREP_MAX_MAP_CHARS 4
+</programlisting>
+<para>
+Maximum number of code points that can replace a single code point,
+during stringprep mapping.</para>
+<para>
+</para></refsect2>
+<refsect2 id="Stringprep-table-element" role="typedef">
+<title>Stringprep_table_element</title>
+<indexterm zone="Stringprep-table-element"><primary sortas="Stringprep_table_element">Stringprep_table_element</primary></indexterm><programlisting>  typedef struct Stringprep_table_element Stringprep_table_element;
+</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="Stringprep-profile" role="typedef">
+<title>Stringprep_profile</title>
+<indexterm zone="Stringprep-profile"><primary sortas="Stringprep_profile">Stringprep_profile</primary></indexterm><programlisting>  typedef struct Stringprep_table Stringprep_profile;
+</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="Stringprep-profiles" role="typedef">
+<title>Stringprep_profiles</title>
+<indexterm zone="Stringprep-profiles"><primary sortas="Stringprep_profiles">Stringprep_profiles</primary></indexterm><programlisting>  typedef struct Stringprep_profiles Stringprep_profiles;
+</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="stringprep-nameprep" role="macro">
+<title>stringprep_nameprep()</title>
+<indexterm zone="stringprep-nameprep"><primary sortas="stringprep_nameprep">stringprep_nameprep</primary></indexterm><programlisting>#define             stringprep_nameprep(in, maxlen)</programlisting>
+<para>
+Prepare the input UTF-8 string according to the nameprep profile.
+The AllowUnassigned flag is true, use
+<link linkend="stringprep-nameprep-no-unassigned"><function>stringprep_nameprep_no_unassigned()</function></link> if you want a false
+AllowUnassigned.  Returns 0 iff successful, or an error code.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input/ouput array with string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxlen</parameter>&#160;:</term>
+<listitem><simpara> maximum length of input/output array.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-nameprep-no-unassigned" role="macro">
+<title>stringprep_nameprep_no_unassigned()</title>
+<indexterm zone="stringprep-nameprep-no-unassigned"><primary sortas="stringprep_nameprep_no_unassigned">stringprep_nameprep_no_unassigned</primary></indexterm><programlisting>#define             stringprep_nameprep_no_unassigned(in, maxlen)</programlisting>
+<para>
+Prepare the input UTF-8 string according to the nameprep profile.
+The AllowUnassigned flag is false, use <link linkend="stringprep-nameprep"><function>stringprep_nameprep()</function></link> for
+true AllowUnassigned.  Returns 0 iff successful, or an error code.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input/ouput array with string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxlen</parameter>&#160;:</term>
+<listitem><simpara> maximum length of input/output array.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-plain" role="macro">
+<title>stringprep_plain()</title>
+<indexterm zone="stringprep-plain"><primary sortas="stringprep_plain">stringprep_plain</primary></indexterm><programlisting>#define             stringprep_plain(in, maxlen)</programlisting>
+<para>
+Prepare the input UTF-8 string according to the draft SASL
+ANONYMOUS profile.  Returns 0 iff successful, or an error code.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input/ouput array with string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxlen</parameter>&#160;:</term>
+<listitem><simpara> maximum length of input/output array.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-kerberos5" role="macro">
+<title>stringprep_kerberos5()</title>
+<indexterm zone="stringprep-kerberos5"><primary sortas="stringprep_kerberos5">stringprep_kerberos5</primary></indexterm><programlisting>#define             stringprep_kerberos5(in, maxlen)</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxlen</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-xmpp-nodeprep" role="macro">
+<title>stringprep_xmpp_nodeprep()</title>
+<indexterm zone="stringprep-xmpp-nodeprep"><primary sortas="stringprep_xmpp_nodeprep">stringprep_xmpp_nodeprep</primary></indexterm><programlisting>#define             stringprep_xmpp_nodeprep(in, maxlen)</programlisting>
+<para>
+Prepare the input UTF-8 string according to the draft XMPP node
+identifier profile.  Returns 0 iff successful, or an error code.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input/ouput array with string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxlen</parameter>&#160;:</term>
+<listitem><simpara> maximum length of input/output array.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-xmpp-resourceprep" role="macro">
+<title>stringprep_xmpp_resourceprep()</title>
+<indexterm zone="stringprep-xmpp-resourceprep"><primary sortas="stringprep_xmpp_resourceprep">stringprep_xmpp_resourceprep</primary></indexterm><programlisting>#define             stringprep_xmpp_resourceprep(in, maxlen)</programlisting>
+<para>
+Prepare the input UTF-8 string according to the draft XMPP resource
+identifier profile.  Returns 0 iff successful, or an error code.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input/ouput array with string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxlen</parameter>&#160;:</term>
+<listitem><simpara> maximum length of input/output array.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-iscsi" role="macro">
+<title>stringprep_iscsi()</title>
+<indexterm zone="stringprep-iscsi"><primary sortas="stringprep_iscsi">stringprep_iscsi</primary></indexterm><programlisting>#define             stringprep_iscsi(in, maxlen)</programlisting>
+<para>
+Prepare the input UTF-8 string according to the draft iSCSI
+stringprep profile.  Returns 0 iff successful, or an error code.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input/ouput array with string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxlen</parameter>&#160;:</term>
+<listitem><simpara> maximum length of input/output array.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-4i" role="function">
+<title>stringprep_4i ()</title>
+<indexterm zone="stringprep-4i"><primary sortas="stringprep_4i">stringprep_4i</primary></indexterm><programlisting><link linkend="int">int</link>                 stringprep_4i                       (<link linkend="uint32-t">uint32_t</link> *ucs4,
+                                                         <link linkend="size-t">size_t</link> *len,
+                                                         <link linkend="size-t">size_t</link> maxucs4len,
+                                                         <link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link> flags,
+                                                         const <link linkend="Stringprep-profile">Stringprep_profile</link> *profile);</programlisting>
+<para>
+Prepare the input UCS-4 string according to the stringprep profile,
+and write back the result to the input string.
+</para>
+<para>
+The input is not required to be zero terminated (<parameter>ucs4</parameter>[<parameter>len</parameter>] = 0).
+The output will not be zero terminated unless <parameter>ucs4</parameter>[<parameter>len</parameter>] = 0.
+Instead, see <link linkend="stringprep-4zi"><function>stringprep_4zi()</function></link> if your input is zero terminated or
+if you want the output to be.
+</para>
+<para>
+Since the stringprep operation can expand the string, <parameter>maxucs4len</parameter>
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+</para>
+<para>
+The <parameter>flags</parameter> are one of <link linkend="Stringprep-profile-flags"><type>Stringprep_profile_flags</type></link> values, or 0.
+</para>
+<para>
+The <parameter>profile</parameter> contain the <link linkend="Stringprep-profile"><type>Stringprep_profile</type></link> instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>ucs4</parameter>&#160;:</term>
+<listitem><simpara> input/output array with string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&#160;:</term>
+<listitem><simpara> on input, length of input array with Unicode code points,
+  on exit, length of output array with Unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxucs4len</parameter>&#160;:</term>
+<listitem><simpara> maximum length of input/output array.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> a <link linkend="Stringprep-profile-flags"><type>Stringprep_profile_flags</type></link> value, or 0.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>profile</parameter>&#160;:</term>
+<listitem><simpara> pointer to <link linkend="Stringprep-profile"><type>Stringprep_profile</type></link> to use.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="STRINGPREP-OK--CAPS"><literal>STRINGPREP_OK</literal></link> iff successful, or an
+  <link linkend="Stringprep-rc"><type>Stringprep_rc</type></link> error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-4zi" role="function">
+<title>stringprep_4zi ()</title>
+<indexterm zone="stringprep-4zi"><primary sortas="stringprep_4zi">stringprep_4zi</primary></indexterm><programlisting><link linkend="int">int</link>                 stringprep_4zi                      (<link linkend="uint32-t">uint32_t</link> *ucs4,
+                                                         <link linkend="size-t">size_t</link> maxucs4len,
+                                                         <link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link> flags,
+                                                         const <link linkend="Stringprep-profile">Stringprep_profile</link> *profile);</programlisting>
+<para>
+Prepare the input zero terminated UCS-4 string according to the
+stringprep profile, and write back the result to the input string.
+</para>
+<para>
+Since the stringprep operation can expand the string, <parameter>maxucs4len</parameter>
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+</para>
+<para>
+The <parameter>flags</parameter> are one of <link linkend="Stringprep-profile-flags"><type>Stringprep_profile_flags</type></link> values, or 0.
+</para>
+<para>
+The <parameter>profile</parameter> contain the <link linkend="Stringprep-profile"><type>Stringprep_profile</type></link> instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>ucs4</parameter>&#160;:</term>
+<listitem><simpara> input/output array with zero terminated string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxucs4len</parameter>&#160;:</term>
+<listitem><simpara> maximum length of input/output array.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> a <link linkend="Stringprep-profile-flags"><type>Stringprep_profile_flags</type></link> value, or 0.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>profile</parameter>&#160;:</term>
+<listitem><simpara> pointer to <link linkend="Stringprep-profile"><type>Stringprep_profile</type></link> to use.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="STRINGPREP-OK--CAPS"><literal>STRINGPREP_OK</literal></link> iff successful, or an
+  <link linkend="Stringprep-rc"><type>Stringprep_rc</type></link> error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep" role="function">
+<title>stringprep ()</title>
+<indexterm zone="stringprep"><primary sortas="stringprep">stringprep</primary></indexterm><programlisting><link linkend="int">int</link>                 stringprep                          (<link linkend="char">char</link> *in,
+                                                         <link linkend="size-t">size_t</link> maxlen,
+                                                         <link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link> flags,
+                                                         const <link linkend="Stringprep-profile">Stringprep_profile</link> *profile);</programlisting>
+<para>
+Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and write back the result to the input string.
+</para>
+<para>
+Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+<link linkend="stringprep-locale-to-utf8"><function>stringprep_locale_to_utf8()</function></link>.
+</para>
+<para>
+Since the stringprep operation can expand the string, <parameter>maxlen</parameter>
+indicate how large the buffer holding the string is.  This function
+will not read or write to characters outside that size.
+</para>
+<para>
+The <parameter>flags</parameter> are one of <link linkend="Stringprep-profile-flags"><type>Stringprep_profile_flags</type></link> values, or 0.
+</para>
+<para>
+The <parameter>profile</parameter> contain the <link linkend="Stringprep-profile"><type>Stringprep_profile</type></link> instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input/ouput array with string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>maxlen</parameter>&#160;:</term>
+<listitem><simpara> maximum length of input/output array.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> a <link linkend="Stringprep-profile-flags"><type>Stringprep_profile_flags</type></link> value, or 0.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>profile</parameter>&#160;:</term>
+<listitem><simpara> pointer to <link linkend="Stringprep-profile"><type>Stringprep_profile</type></link> to use.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="STRINGPREP-OK--CAPS"><literal>STRINGPREP_OK</literal></link> iff successful, or an error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-profile" role="function">
+<title>stringprep_profile ()</title>
+<indexterm zone="stringprep-profile"><primary sortas="stringprep_profile">stringprep_profile</primary></indexterm><programlisting><link linkend="int">int</link>                 stringprep_profile                  (const <link linkend="char">char</link> *in,
+                                                         <link linkend="char">char</link> **out,
+                                                         const <link linkend="char">char</link> *profile,
+                                                         <link linkend="Stringprep-profile-flags">Stringprep_profile_flags</link> flags);</programlisting>
+<para>
+Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and return the result in a newly allocated
+variable.
+</para>
+<para>
+Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+<link linkend="stringprep-locale-to-utf8"><function>stringprep_locale_to_utf8()</function></link>.
+</para>
+<para>
+The output <parameter>out</parameter> variable must be deallocated by the caller.
+</para>
+<para>
+The <parameter>flags</parameter> are one of <link linkend="Stringprep-profile-flags"><type>Stringprep_profile_flags</type></link> values, or 0.
+</para>
+<para>
+The <parameter>profile</parameter> specifies the name of the stringprep profile to use.
+It must be one of the internally supported stringprep profiles.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> input array with UTF-8 string to prepare.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter>&#160;:</term>
+<listitem><simpara> output variable with pointer to newly allocate string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>profile</parameter>&#160;:</term>
+<listitem><simpara> name of stringprep profile to use.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>flags</parameter>&#160;:</term>
+<listitem><simpara> a <link linkend="Stringprep-profile-flags"><type>Stringprep_profile_flags</type></link> value, or 0.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns <link linkend="STRINGPREP-OK--CAPS"><literal>STRINGPREP_OK</literal></link> iff successful, or an error code.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-strerror" role="function">
+<title>stringprep_strerror ()</title>
+<indexterm zone="stringprep-strerror"><primary sortas="stringprep_strerror">stringprep_strerror</primary></indexterm><programlisting>const <link linkend="char">char</link> *        stringprep_strerror                 (<link linkend="Stringprep-rc">Stringprep_rc</link> rc);</programlisting>
+<para>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</para>
+<para>
+STRINGPREP_OK: Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+STRINGPREP_CONTAINS_UNASSIGNED: String contain unassigned Unicode
+  code points, which is forbidden by the profile.
+STRINGPREP_CONTAINS_PROHIBITED: String contain code points
+  prohibited by the profile.
+STRINGPREP_BIDI_BOTH_L_AND_RAL: String contain code points with
+  conflicting bidirection category.
+STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: Leading and trailing character
+  in string not of proper bidirectional category.
+STRINGPREP_BIDI_CONTAINS_PROHIBITED: Contains prohibited code
+  points detected by bidirectional code.
+STRINGPREP_TOO_SMALL_BUFFER: Buffer handed to function was too
+  small.  This usually indicate a problem in the calling
+  application.
+STRINGPREP_PROFILE_ERROR: The stringprep profile was inconsistent.
+  This usually indicate an internal error in the library.
+STRINGPREP_FLAG_ERROR: The supplied flag conflicted with profile.
+  This usually indicate a problem in the calling application.
+STRINGPREP_UNKNOWN_PROFILE: The supplied profile name was not
+  known to the library.
+STRINGPREP_NFKC_FAILED: The Unicode NFKC operation failed.  This
+  usually indicate an internal error in the library.
+STRINGPREP_MALLOC_ERROR: The <link linkend="malloc"><function>malloc()</function></link> was out of memory.  This is
+  usually a fatal error.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>rc</parameter>&#160;:</term>
+<listitem><simpara> a <link linkend="Stringprep-rc"><type>Stringprep_rc</type></link> return code.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns a pointer to a statically allocated string
+  containing a description of the error with the return code <parameter>rc</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-check-version" role="function">
+<title>stringprep_check_version ()</title>
+<indexterm zone="stringprep-check-version"><primary sortas="stringprep_check_version">stringprep_check_version</primary></indexterm><programlisting>const <link linkend="char">char</link> *        stringprep_check_version            (const <link linkend="char">char</link> *req_version);</programlisting>
+<para>
+Check that the version of the library is at minimum the requested one
+and return the version string; return NULL if the condition is not
+satisfied.  If a NULL is passed to this function, no check is done,
+but the version string is simply returned.
+</para>
+<para>
+See <link linkend="STRINGPREP-VERSION--CAPS"><literal>STRINGPREP_VERSION</literal></link> for a suitable <parameter>req_version</parameter> string.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>req_version</parameter>&#160;:</term>
+<listitem><simpara> Required version number, or NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Version string of run-time library, or NULL if the
+run-time library does not meet the required version number.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-unichar-to-utf8" role="function">
+<title>stringprep_unichar_to_utf8 ()</title>
+<indexterm zone="stringprep-unichar-to-utf8"><primary sortas="stringprep_unichar_to_utf8">stringprep_unichar_to_utf8</primary></indexterm><programlisting><link linkend="int">int</link>                 stringprep_unichar_to_utf8          (<link linkend="uint32-t">uint32_t</link> c,
+                                                         <link linkend="char">char</link> *outbuf);</programlisting>
+<para>
+Converts a single character to UTF-8.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>c</parameter>&#160;:</term>
+<listitem><simpara> a ISO10646 character code
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>outbuf</parameter>&#160;:</term>
+<listitem><simpara> output buffer, must have at least 6 bytes of space.
+      If <link linkend="NULL--CAPS"><literal>NULL</literal></link>, the length will be computed and returned
+      and nothing will be written to <parameter>outbuf</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> number of bytes written.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-utf8-to-unichar" role="function">
+<title>stringprep_utf8_to_unichar ()</title>
+<indexterm zone="stringprep-utf8-to-unichar"><primary sortas="stringprep_utf8_to_unichar">stringprep_utf8_to_unichar</primary></indexterm><programlisting><link linkend="uint32-t">uint32_t</link>            stringprep_utf8_to_unichar          (const <link linkend="char">char</link> *p);</programlisting>
+<para>
+Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
+If <parameter>p</parameter> does not point to a valid UTF-8 encoded character, results are
+undefined.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&#160;:</term>
+<listitem><simpara> a pointer to Unicode character encoded as UTF-8
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> the resulting character.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-utf8-to-ucs4" role="function">
+<title>stringprep_utf8_to_ucs4 ()</title>
+<indexterm zone="stringprep-utf8-to-ucs4"><primary sortas="stringprep_utf8_to_ucs4">stringprep_utf8_to_ucs4</primary></indexterm><programlisting><link linkend="uint32-t">uint32_t</link> *          stringprep_utf8_to_ucs4             (const <link linkend="char">char</link> *str,
+                                                         <link linkend="ssize-t">ssize_t</link> len,
+                                                         <link linkend="size-t">size_t</link> *items_written);</programlisting>
+<para>
+Convert a string from UTF-8 to a 32-bit fixed width
+representation as UCS-4, assuming valid UTF-8 input.
+This function does no error checking on the input.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>str</parameter>&#160;:</term>
+<listitem><simpara> a UTF-8 encoded string
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&#160;:</term>
+<listitem><simpara> the maximum length of <parameter>str</parameter> to use. If <parameter>len</parameter> &lt; 0, then
+      the string is nul-terminated.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>items_written</parameter>&#160;:</term>
+<listitem><simpara> location to store the number of characters in the
+                result, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> a pointer to a newly allocated UCS-4 string.
+              This value must be deallocated by the caller.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-ucs4-to-utf8" role="function">
+<title>stringprep_ucs4_to_utf8 ()</title>
+<indexterm zone="stringprep-ucs4-to-utf8"><primary sortas="stringprep_ucs4_to_utf8">stringprep_ucs4_to_utf8</primary></indexterm><programlisting><link linkend="char">char</link> *              stringprep_ucs4_to_utf8             (const <link linkend="uint32-t">uint32_t</link> *str,
+                                                         <link linkend="ssize-t">ssize_t</link> len,
+                                                         <link linkend="size-t">size_t</link> *items_read,
+                                                         <link linkend="size-t">size_t</link> *items_written);</programlisting>
+<para>
+Convert a string from a 32-bit fixed width representation as UCS-4.
+to UTF-8. The result will be terminated with a 0 byte.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>str</parameter>&#160;:</term>
+<listitem><simpara> a UCS-4 encoded string
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&#160;:</term>
+<listitem><simpara> the maximum length of <parameter>str</parameter> to use. If <parameter>len</parameter> &lt; 0, then
+      the string is terminated with a 0 character.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>items_read</parameter>&#160;:</term>
+<listitem><simpara> location to store number of characters read read, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>items_written</parameter>&#160;:</term>
+<listitem><simpara> location to store number of bytes written or <link linkend="NULL--CAPS"><literal>NULL</literal></link>.
+                The value here stored does not include the trailing 0
+                byte.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> a pointer to a newly allocated UTF-8 string.
+              This value must be deallocated by the caller.
+              If an error occurs, <link linkend="NULL--CAPS"><literal>NULL</literal></link> will be returned and <parameter>error</parameter>
+              set.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-utf8-nfkc-normalize" role="function">
+<title>stringprep_utf8_nfkc_normalize ()</title>
+<indexterm zone="stringprep-utf8-nfkc-normalize"><primary sortas="stringprep_utf8_nfkc_normalize">stringprep_utf8_nfkc_normalize</primary></indexterm><programlisting><link linkend="char">char</link> *              stringprep_utf8_nfkc_normalize      (const <link linkend="char">char</link> *str,
+                                                         <link linkend="ssize-t">ssize_t</link> len);</programlisting>
+<para>
+Converts a string into canonical form, standardizing
+such issues as whether a character with an accent
+is represented as a base character and combining
+accent or as a single precomposed character.
+</para>
+<para>
+The normalization mode is NFKC (ALL COMPOSE).  It standardizes
+differences that do not affect the text content, such as the
+above-mentioned accent representation. It standardizes the
+"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
+the standard forms (in this case DIGIT THREE). Formatting
+information may be lost but for most text operations such
+characters should be considered the same. It returns a result with
+composed forms rather than a maximally decomposed form.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>str</parameter>&#160;:</term>
+<listitem><simpara> a UTF-8 encoded string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&#160;:</term>
+<listitem><simpara> length of <parameter>str</parameter>, in bytes, or -1 if <parameter>str</parameter> is nul-terminated.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> a newly allocated string, that is the
+  NFKC normalized form of <parameter>str</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-ucs4-nfkc-normalize" role="function">
+<title>stringprep_ucs4_nfkc_normalize ()</title>
+<indexterm zone="stringprep-ucs4-nfkc-normalize"><primary sortas="stringprep_ucs4_nfkc_normalize">stringprep_ucs4_nfkc_normalize</primary></indexterm><programlisting><link linkend="uint32-t">uint32_t</link> *          stringprep_ucs4_nfkc_normalize      (<link linkend="uint32-t">uint32_t</link> *str,
+                                                         <link linkend="ssize-t">ssize_t</link> len);</programlisting>
+<para>
+Converts UCS4 string into UTF-8 and runs
+<link linkend="stringprep-utf8-nfkc-normalize"><function>stringprep_utf8_nfkc_normalize()</function></link>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>str</parameter>&#160;:</term>
+<listitem><simpara> a Unicode string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&#160;:</term>
+<listitem><simpara> length of <parameter>str</parameter> array, or -1 if <parameter>str</parameter> is nul-terminated.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> a newly allocated Unicode string, that is the NFKC
+  normalized form of <parameter>str</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-locale-charset" role="function">
+<title>stringprep_locale_charset ()</title>
+<indexterm zone="stringprep-locale-charset"><primary sortas="stringprep_locale_charset">stringprep_locale_charset</primary></indexterm><programlisting>const <link linkend="char">char</link> *        stringprep_locale_charset           (void);</programlisting>
+<para>
+Find out current locale charset.  The function respect the CHARSET
+environment variable, but typically uses nl_langinfo(CODESET) when
+it is supported.  It fall back on "ASCII" if CHARSET isn't set and
+nl_langinfo isn't supported or return anything.
+</para>
+<para>
+Note that this function return the application's locale's preferred
+charset (or thread's locale's preffered charset, if your system
+support thread-specific locales).  It does not return what the
+system may be using.  Thus, if you receive data from external
+sources you cannot in general use this function to guess what
+charset it is encoded in.  Use stringprep_convert from the external
+representation into the charset returned by this function, to have
+data in the locale encoding.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Return the character set used by the current locale.
+  It will never return NULL, but use "ASCII" as a fallback.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-convert" role="function">
+<title>stringprep_convert ()</title>
+<indexterm zone="stringprep-convert"><primary sortas="stringprep_convert">stringprep_convert</primary></indexterm><programlisting><link linkend="char">char</link> *              stringprep_convert                  (const <link linkend="char">char</link> *str,
+                                                         const <link linkend="char">char</link> *to_codeset,
+                                                         const <link linkend="char">char</link> *from_codeset);</programlisting>
+<para>
+Convert the string from one character set to another using the
+system's <link linkend="iconv"><function>iconv()</function></link> function.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>str</parameter>&#160;:</term>
+<listitem><simpara> input zero-terminated string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>to_codeset</parameter>&#160;:</term>
+<listitem><simpara> name of destination character set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>from_codeset</parameter>&#160;:</term>
+<listitem><simpara> name of origin character set, as used by <parameter>str</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns newly allocated zero-terminated string which
+  is <parameter>str</parameter> transcoded into to_codeset.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-locale-to-utf8" role="function">
+<title>stringprep_locale_to_utf8 ()</title>
+<indexterm zone="stringprep-locale-to-utf8"><primary sortas="stringprep_locale_to_utf8">stringprep_locale_to_utf8</primary></indexterm><programlisting><link linkend="char">char</link> *              stringprep_locale_to_utf8           (const <link linkend="char">char</link> *str);</programlisting>
+<para>
+Convert string encoded in the locale's character set into UTF-8 by
+using <link linkend="stringprep-convert"><function>stringprep_convert()</function></link>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>str</parameter>&#160;:</term>
+<listitem><simpara> input zero terminated string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns newly allocated zero-terminated string which
+  is <parameter>str</parameter> transcoded into UTF-8.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="stringprep-utf8-to-locale" role="function">
+<title>stringprep_utf8_to_locale ()</title>
+<indexterm zone="stringprep-utf8-to-locale"><primary sortas="stringprep_utf8_to_locale">stringprep_utf8_to_locale</primary></indexterm><programlisting><link linkend="char">char</link> *              stringprep_utf8_to_locale           (const <link linkend="char">char</link> *str);</programlisting>
+<para>
+Convert string encoded in UTF-8 into the locale's character set by
+using <link linkend="stringprep-convert"><function>stringprep_convert()</function></link>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>str</parameter>&#160;:</term>
+<listitem><simpara> input zero terminated string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns newly allocated zero-terminated string which
+  is <parameter>str</parameter> transcoded into the locale's character set.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/reference/xml/tld.xml b/doc/reference/xml/tld.xml
new file mode 100644 (file)
index 0000000..3fc8000
--- /dev/null
@@ -0,0 +1,483 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="libidn-tld">
+<refmeta>
+<refentrytitle role="top_of_page" id="libidn-tld.top_of_page">tld</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>LIBIDN Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>tld</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv id="libidn-tld.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#define             <link linkend="IDNAPI--CAPS">IDNAPI</link>
+typedef             <link linkend="Tld-table-element">Tld_table_element</link>;
+typedef             <link linkend="Tld-table">Tld_table</link>;
+enum                <link linkend="Tld-rc">Tld_rc</link>;
+const <link linkend="char">char</link> *        <link linkend="tld-strerror">tld_strerror</link>                        (<link linkend="Tld-rc">Tld_rc</link> rc);
+<link linkend="int">int</link>                 <link linkend="tld-get-4">tld_get_4</link>                           (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="char">char</link> **out);
+<link linkend="int">int</link>                 <link linkend="tld-get-4z">tld_get_4z</link>                          (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="char">char</link> **out);
+<link linkend="int">int</link>                 <link linkend="tld-get-z">tld_get_z</link>                           (const <link linkend="char">char</link> *in,
+                                                         <link linkend="char">char</link> **out);
+const <link linkend="Tld-table">Tld_table</link> *   <link linkend="tld-get-table">tld_get_table</link>                       (const <link linkend="char">char</link> *tld,
+                                                         const <link linkend="Tld-table">Tld_table</link> **tables);
+const <link linkend="Tld-table">Tld_table</link> *   <link linkend="tld-default-table">tld_default_table</link>                   (const <link linkend="char">char</link> *tld,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);
+<link linkend="int">int</link>                 <link linkend="tld-check-4t">tld_check_4t</link>                        (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> *tld);
+<link linkend="int">int</link>                 <link linkend="tld-check-4tz">tld_check_4tz</link>                       (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> *tld);
+<link linkend="int">int</link>                 <link linkend="tld-check-4">tld_check_4</link>                         (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);
+<link linkend="int">int</link>                 <link linkend="tld-check-4z">tld_check_4z</link>                        (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);
+<link linkend="int">int</link>                 <link linkend="tld-check-8z">tld_check_8z</link>                        (const <link linkend="char">char</link> *in,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);
+<link linkend="int">int</link>                 <link linkend="tld-check-lz">tld_check_lz</link>                        (const <link linkend="char">char</link> *in,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1 id="libidn-tld.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="libidn-tld.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="IDNAPI--CAPS" role="macro">
+<title>IDNAPI</title>
+<indexterm zone="IDNAPI--CAPS"><primary sortas="IDNAPI">IDNAPI</primary></indexterm><programlisting>#define             IDNAPI</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="Tld-table-element" role="typedef">
+<title>Tld_table_element</title>
+<indexterm zone="Tld-table-element"><primary sortas="Tld_table_element">Tld_table_element</primary></indexterm><programlisting>  typedef struct Tld_table_element Tld_table_element;
+</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="Tld-table" role="typedef">
+<title>Tld_table</title>
+<indexterm zone="Tld-table"><primary sortas="Tld_table">Tld_table</primary></indexterm><programlisting>  typedef struct Tld_table Tld_table;
+</programlisting>
+<para>
+</para></refsect2>
+<refsect2 id="Tld-rc" role="enum">
+<title>enum Tld_rc</title>
+<indexterm zone="Tld-rc"><primary sortas="Tld_rc">Tld_rc</primary></indexterm><programlisting>  typedef enum
+  {
+    TLD_SUCCESS = 0,
+    TLD_INVALID = 1,           /* Invalid character found. */
+    TLD_NODATA = 2,            /* Char, domain or inlen = 0. */
+    TLD_MALLOC_ERROR = 3,
+    TLD_ICONV_ERROR = 4,
+    TLD_NO_TLD = 5,
+    /* Workaround typo in earlier versions. */
+    TLD_NOTLD = TLD_NO_TLD
+  } Tld_rc;
+</programlisting>
+<para>
+Enumerated return codes of the TLD checking functions.
+The value 0 is guaranteed to always correspond to success.</para>
+<para>
+</para><variablelist role="enum">
+<varlistentry id="TLD-SUCCESS--CAPS" role="constant">
+<term><literal>TLD_SUCCESS</literal></term>
+<listitem><simpara> Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="TLD-INVALID--CAPS" role="constant">
+<term><literal>TLD_INVALID</literal></term>
+<listitem><simpara> Invalid character found.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="TLD-NODATA--CAPS" role="constant">
+<term><literal>TLD_NODATA</literal></term>
+<listitem><simpara> No input data was provided.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="TLD-MALLOC-ERROR--CAPS" role="constant">
+<term><literal>TLD_MALLOC_ERROR</literal></term>
+<listitem><simpara> Error during memory allocation.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="TLD-ICONV-ERROR--CAPS" role="constant">
+<term><literal>TLD_ICONV_ERROR</literal></term>
+<listitem><simpara> Error during iconv string conversion.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="TLD-NO-TLD--CAPS" role="constant">
+<term><literal>TLD_NO_TLD</literal></term>
+<listitem><simpara> No top-level domain found in domain string.
+</simpara></listitem>
+</varlistentry>
+<varlistentry id="TLD-NOTLD--CAPS" role="constant">
+<term><literal>TLD_NOTLD</literal></term>
+<listitem><simpara>
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-strerror" role="function">
+<title>tld_strerror ()</title>
+<indexterm zone="tld-strerror"><primary sortas="tld_strerror">tld_strerror</primary></indexterm><programlisting>const <link linkend="char">char</link> *        tld_strerror                        (<link linkend="Tld-rc">Tld_rc</link> rc);</programlisting>
+<para>
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+</para>
+<para>
+TLD_SUCCESS: Successful operation.  This value is guaranteed to
+  always be zero, the remaining ones are only guaranteed to hold
+  non-zero values, for logical comparison purposes.
+TLD_INVALID: Invalid character found.
+TLD_NODATA: No input data was provided.
+TLD_MALLOC_ERROR: Error during memory allocation.
+TLD_ICONV_ERROR: Error during iconv string conversion.
+TLD_NO_TLD: No top-level domain found in domain string.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>rc</parameter>&#160;:</term>
+<listitem><simpara> tld return code
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns a pointer to a statically allocated string
+containing a description of the error with the return code <parameter>rc</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-get-4" role="function">
+<title>tld_get_4 ()</title>
+<indexterm zone="tld-get-4"><primary sortas="tld_get_4">tld_get_4</primary></indexterm><programlisting><link linkend="int">int</link>                 tld_get_4                           (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="char">char</link> **out);</programlisting>
+<para>
+Isolate the top-level domain of <parameter>in</parameter> and return it as an ASCII
+string in <parameter>out</parameter>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> Array of unicode code points to process. Does not need to be
+  zero terminated.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>inlen</parameter>&#160;:</term>
+<listitem><simpara> Number of unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter>&#160;:</term>
+<listitem><simpara> Zero terminated ascii result string pointer.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Return <link linkend="TLD-SUCCESS--CAPS"><literal>TLD_SUCCESS</literal></link> on success, or the corresponding
+  <link linkend="Tld-rc"><type>Tld_rc</type></link> error code otherwise.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-get-4z" role="function">
+<title>tld_get_4z ()</title>
+<indexterm zone="tld-get-4z"><primary sortas="tld_get_4z">tld_get_4z</primary></indexterm><programlisting><link linkend="int">int</link>                 tld_get_4z                          (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="char">char</link> **out);</programlisting>
+<para>
+Isolate the top-level domain of <parameter>in</parameter> and return it as an ASCII
+string in <parameter>out</parameter>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> Zero terminated array of unicode code points to process.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter>&#160;:</term>
+<listitem><simpara> Zero terminated ascii result string pointer.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Return <link linkend="TLD-SUCCESS--CAPS"><literal>TLD_SUCCESS</literal></link> on success, or the corresponding
+  <link linkend="Tld-rc"><type>Tld_rc</type></link> error code otherwise.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-get-z" role="function">
+<title>tld_get_z ()</title>
+<indexterm zone="tld-get-z"><primary sortas="tld_get_z">tld_get_z</primary></indexterm><programlisting><link linkend="int">int</link>                 tld_get_z                           (const <link linkend="char">char</link> *in,
+                                                         <link linkend="char">char</link> **out);</programlisting>
+<para>
+Isolate the top-level domain of <parameter>in</parameter> and return it as an ASCII
+string in <parameter>out</parameter>.  The input string <parameter>in</parameter> may be UTF-8, ISO-8859-1 or
+any ASCII compatible character encoding.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> Zero terminated character array to process.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter>&#160;:</term>
+<listitem><simpara> Zero terminated ascii result string pointer.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Return <link linkend="TLD-SUCCESS--CAPS"><literal>TLD_SUCCESS</literal></link> on success, or the corresponding
+  <link linkend="Tld-rc"><type>Tld_rc</type></link> error code otherwise.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-get-table" role="function">
+<title>tld_get_table ()</title>
+<indexterm zone="tld-get-table"><primary sortas="tld_get_table">tld_get_table</primary></indexterm><programlisting>const <link linkend="Tld-table">Tld_table</link> *   tld_get_table                       (const <link linkend="char">char</link> *tld,
+                                                         const <link linkend="Tld-table">Tld_table</link> **tables);</programlisting>
+<para>
+Get the TLD table for a named TLD by searching through the given
+TLD table array.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>tld</parameter>&#160;:</term>
+<listitem><simpara> TLD name (e.g. "com") as zero terminated ASCII byte string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>tables</parameter>&#160;:</term>
+<listitem><simpara> Zero terminated array of <link linkend="Tld-table"><type>Tld_table</type></link> info-structures for
+  TLDs.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Return structure corresponding to TLD <parameter>tld</parameter> by going
+  thru <parameter>tables</parameter>, or return <link linkend="NULL--CAPS"><literal>NULL</literal></link> if no such structure is found.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-default-table" role="function">
+<title>tld_default_table ()</title>
+<indexterm zone="tld-default-table"><primary sortas="tld_default_table">tld_default_table</primary></indexterm><programlisting>const <link linkend="Tld-table">Tld_table</link> *   tld_default_table                   (const <link linkend="char">char</link> *tld,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);</programlisting>
+<para>
+Get the TLD table for a named TLD, using the internal defaults,
+possibly overrided by the (optional) supplied tables.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>tld</parameter>&#160;:</term>
+<listitem><simpara> TLD name (e.g. "com") as zero terminated ASCII byte string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>overrides</parameter>&#160;:</term>
+<listitem><simpara> Additional zero terminated array of <link linkend="Tld-table"><type>Tld_table</type></link>
+  info-structures for TLDs, or <link linkend="NULL--CAPS"><literal>NULL</literal></link> to only use library deault
+  tables.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Return structure corresponding to TLD <parameter>tld_str</parameter>, first
+  looking through <parameter>overrides</parameter> then thru built-in list, or <link linkend="NULL--CAPS"><literal>NULL</literal></link> if
+  no such structure found.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-check-4t" role="function">
+<title>tld_check_4t ()</title>
+<indexterm zone="tld-check-4t"><primary sortas="tld_check_4t">tld_check_4t</primary></indexterm><programlisting><link linkend="int">int</link>                 tld_check_4t                        (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> *tld);</programlisting>
+<para>
+Test each of the code points in <parameter>in</parameter> for whether or not
+they are allowed by the data structure in <parameter>tld</parameter>, return
+the position of the first character for which this is not
+the case in <parameter>errpos</parameter>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> Array of unicode code points to process. Does not need to be
+  zero terminated.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>inlen</parameter>&#160;:</term>
+<listitem><simpara> Number of unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>errpos</parameter>&#160;:</term>
+<listitem><simpara> Position of offending character is returned here.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>tld</parameter>&#160;:</term>
+<listitem><simpara> A <link linkend="Tld-table"><type>Tld_table</type></link> data structure representing the restrictions for
+  which the input should be tested.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns the <link linkend="Tld-rc"><type>Tld_rc</type></link> value <link linkend="TLD-SUCCESS--CAPS"><literal>TLD_SUCCESS</literal></link> if all code
+  points are valid or when <parameter>tld</parameter> is null, <link linkend="TLD-INVALID--CAPS"><literal>TLD_INVALID</literal></link> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-check-4tz" role="function">
+<title>tld_check_4tz ()</title>
+<indexterm zone="tld-check-4tz"><primary sortas="tld_check_4tz">tld_check_4tz</primary></indexterm><programlisting><link linkend="int">int</link>                 tld_check_4tz                       (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> *tld);</programlisting>
+<para>
+Test each of the code points in <parameter>in</parameter> for whether or not
+they are allowed by the data structure in <parameter>tld</parameter>, return
+the position of the first character for which this is not
+the case in <parameter>errpos</parameter>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> Zero terminated array of unicode code points to process.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>errpos</parameter>&#160;:</term>
+<listitem><simpara> Position of offending character is returned here.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>tld</parameter>&#160;:</term>
+<listitem><simpara> A <link linkend="Tld-table"><type>Tld_table</type></link> data structure representing the restrictions for
+  which the input should be tested.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns the <link linkend="Tld-rc"><type>Tld_rc</type></link> value <link linkend="TLD-SUCCESS--CAPS"><literal>TLD_SUCCESS</literal></link> if all code
+  points are valid or when <parameter>tld</parameter> is null, <link linkend="TLD-INVALID--CAPS"><literal>TLD_INVALID</literal></link> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-check-4" role="function">
+<title>tld_check_4 ()</title>
+<indexterm zone="tld-check-4"><primary sortas="tld_check_4">tld_check_4</primary></indexterm><programlisting><link linkend="int">int</link>                 tld_check_4                         (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> inlen,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);</programlisting>
+<para>
+Test each of the code points in <parameter>in</parameter> for whether or not they are
+allowed by the information in <parameter>overrides</parameter> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <parameter>overrides</parameter>, the information in <parameter>overrides</parameter> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <parameter>overrides</parameter> is <link linkend="NULL--CAPS"><literal>NULL</literal></link>, only the built-in
+information is used.  The position of the first offending character
+is returned in <parameter>errpos</parameter>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> Array of unicode code points to process. Does not need to be
+  zero terminated.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>inlen</parameter>&#160;:</term>
+<listitem><simpara> Number of unicode code points.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>errpos</parameter>&#160;:</term>
+<listitem><simpara> Position of offending character is returned here.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>overrides</parameter>&#160;:</term>
+<listitem><simpara> A <link linkend="Tld-table"><type>Tld_table</type></link> array of additional domain restriction
+ structures that complement and supersede the built-in information.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns the <link linkend="Tld-rc"><type>Tld_rc</type></link> value <link linkend="TLD-SUCCESS--CAPS"><literal>TLD_SUCCESS</literal></link> if all code
+  points are valid or when <parameter>tld</parameter> is null, <link linkend="TLD-INVALID--CAPS"><literal>TLD_INVALID</literal></link> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-check-4z" role="function">
+<title>tld_check_4z ()</title>
+<indexterm zone="tld-check-4z"><primary sortas="tld_check_4z">tld_check_4z</primary></indexterm><programlisting><link linkend="int">int</link>                 tld_check_4z                        (const <link linkend="uint32-t">uint32_t</link> *in,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);</programlisting>
+<para>
+Test each of the code points in <parameter>in</parameter> for whether or not they are
+allowed by the information in <parameter>overrides</parameter> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <parameter>overrides</parameter>, the information in <parameter>overrides</parameter> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <parameter>overrides</parameter> is <link linkend="NULL--CAPS"><literal>NULL</literal></link>, only the built-in
+information is used.  The position of the first offending character
+is returned in <parameter>errpos</parameter>.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> Zero-terminated array of unicode code points to process.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>errpos</parameter>&#160;:</term>
+<listitem><simpara> Position of offending character is returned here.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>overrides</parameter>&#160;:</term>
+<listitem><simpara> A <link linkend="Tld-table"><type>Tld_table</type></link> array of additional domain restriction
+  structures that complement and supersede the built-in information.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns the <link linkend="Tld-rc"><type>Tld_rc</type></link> value <link linkend="TLD-SUCCESS--CAPS"><literal>TLD_SUCCESS</literal></link> if all code
+  points are valid or when <parameter>tld</parameter> is null, <link linkend="TLD-INVALID--CAPS"><literal>TLD_INVALID</literal></link> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-check-8z" role="function">
+<title>tld_check_8z ()</title>
+<indexterm zone="tld-check-8z"><primary sortas="tld_check_8z">tld_check_8z</primary></indexterm><programlisting><link linkend="int">int</link>                 tld_check_8z                        (const <link linkend="char">char</link> *in,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);</programlisting>
+<para>
+Test each of the characters in <parameter>in</parameter> for whether or not they are
+allowed by the information in <parameter>overrides</parameter> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <parameter>overrides</parameter>, the information in <parameter>overrides</parameter> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <parameter>overrides</parameter> is <link linkend="NULL--CAPS"><literal>NULL</literal></link>, only the built-in
+information is used.  The position of the first offending character
+is returned in <parameter>errpos</parameter>.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> Zero-terminated UTF8 string to process.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>errpos</parameter>&#160;:</term>
+<listitem><simpara> Position of offending character is returned here.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>overrides</parameter>&#160;:</term>
+<listitem><simpara> A <link linkend="Tld-table"><type>Tld_table</type></link> array of additional domain restriction
+  structures that complement and supersede the built-in information.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns the <link linkend="Tld-rc"><type>Tld_rc</type></link> value <link linkend="TLD-SUCCESS--CAPS"><literal>TLD_SUCCESS</literal></link> if all
+  characters are valid or when <parameter>tld</parameter> is null, <link linkend="TLD-INVALID--CAPS"><literal>TLD_INVALID</literal></link> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="tld-check-lz" role="function">
+<title>tld_check_lz ()</title>
+<indexterm zone="tld-check-lz"><primary sortas="tld_check_lz">tld_check_lz</primary></indexterm><programlisting><link linkend="int">int</link>                 tld_check_lz                        (const <link linkend="char">char</link> *in,
+                                                         <link linkend="size-t">size_t</link> *errpos,
+                                                         const <link linkend="Tld-table">Tld_table</link> **overrides);</programlisting>
+<para>
+Test each of the characters in <parameter>in</parameter> for whether or not they are
+allowed by the information in <parameter>overrides</parameter> or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in <parameter>overrides</parameter>, the information in <parameter>overrides</parameter> takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If <parameter>overrides</parameter> is <link linkend="NULL--CAPS"><literal>NULL</literal></link>, only the built-in
+information is used.  The position of the first offending character
+is returned in <parameter>errpos</parameter>.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.</para>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&#160;:</term>
+<listitem><simpara> Zero-terminated string in the current locales encoding to process.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>errpos</parameter>&#160;:</term>
+<listitem><simpara> Position of offending character is returned here.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>overrides</parameter>&#160;:</term>
+<listitem><simpara> A <link linkend="Tld-table"><type>Tld_table</type></link> array of additional domain restriction
+  structures that complement and supersede the built-in information.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> Returns the <link linkend="Tld-rc"><type>Tld_rc</type></link> value <link linkend="TLD-SUCCESS--CAPS"><literal>TLD_SUCCESS</literal></link> if all
+  characters are valid or when <parameter>tld</parameter> is null, <link linkend="TLD-INVALID--CAPS"><literal>TLD_INVALID</literal></link> if a
+  character is not allowed, or additional error codes on general
+  failure conditions.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/reference/xml/verify.xml b/doc/reference/xml/verify.xml
new file mode 100644 (file)
index 0000000..55b9819
--- /dev/null
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="libidn-verify">
+<refmeta>
+<refentrytitle role="top_of_page" id="libidn-verify.top_of_page">verify</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>LIBIDN Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>verify</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv id="libidn-verify.synopsis" role="synopsis">
+<title role="synopsis.title">Synopsis</title>
+
+<synopsis>
+#define             <link linkend="verify-true">verify_true</link>                         (R)
+#define             <link linkend="verify">verify</link>                              (R)
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1 id="libidn-verify.description" role="desc">
+<title role="desc.title">Description</title>
+<para>
+</para>
+</refsect1>
+
+<refsect1 id="libidn-verify.details" role="details">
+<title role="details.title">Details</title>
+<refsect2 id="verify-true" role="macro">
+<title>verify_true()</title>
+<indexterm zone="verify-true"><primary sortas="verify_true">verify_true</primary></indexterm><programlisting>#define             verify_true(R)</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>R</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2 id="verify" role="macro">
+<title>verify()</title>
+<indexterm zone="verify"><primary sortas="verify">verify</primary></indexterm><programlisting># define verify(R) extern int (* verify_function__ (void)) [verify_true (R)]
+</programlisting>
+<para>
+</para><variablelist role="params">
+<varlistentry><term><parameter>R</parameter>&#160;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
diff --git a/doc/specifications/BidiMirroring-3.2.0.txt b/doc/specifications/BidiMirroring-3.2.0.txt
new file mode 100644 (file)
index 0000000..fa62021
--- /dev/null
@@ -0,0 +1,529 @@
+# BidiMirroring-3.2.0.txt
+# 
+# This file is an informative supplement to the UnicodeData file. It
+# lists characters that have the mirrored property
+# where there is another Unicode character that typically has a glyph
+# that is the mirror image of the original character's glyph.
+# The repertoire covered by the file is Unicode 3.2.0.
+# 
+# The file contains a list of lines with mappings from one code point
+# to another one for character-based mirroring.
+# Note that for "real" mirroring, a rendering engine needs to select
+# appropriate alternative glyphs, and that many Unicode characters do not
+# have a mirror-image Unicode character.
+# 
+# Each mapping line contains two fields, separated by a semicolon (';').
+# Each of the two fields contains a code point represented as a
+# variable-length hexadecimal value with 4 to 6 digits.
+# A comment indicates where the characters are "BEST FIT" mirroring.
+# 
+# Code points with the "mirrored" property but no appropriate mirrors are
+# listed as comments at the end of the file.
+# 
+# For information on bidi mirroring, see UAX #9: Bidirectional Algorithm,
+# at http://www.unicode.org/unicode/reports/tr9/
+# 
+# Please address any comments to <errata@unicode.org>.
+# Note that this is an archival address: messages will be checked,
+# but do not expect an immediate response.
+# 
+# This file was originally created by Markus Scherer.
+# Extended for Unicode 3.2 by Ken Whistler.
+# 
+# ############################################################
+
+0028; 0029 # LEFT PARENTHESIS
+0029; 0028 # RIGHT PARENTHESIS
+003C; 003E # LESS-THAN SIGN
+003E; 003C # GREATER-THAN SIGN
+005B; 005D # LEFT SQUARE BRACKET
+005D; 005B # RIGHT SQUARE BRACKET
+007B; 007D # LEFT CURLY BRACKET
+007D; 007B # RIGHT CURLY BRACKET
+00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+2045; 2046 # LEFT SQUARE BRACKET WITH QUILL
+2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL
+207D; 207E # SUPERSCRIPT LEFT PARENTHESIS
+207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS
+208D; 208E # SUBSCRIPT LEFT PARENTHESIS
+208E; 208D # SUBSCRIPT RIGHT PARENTHESIS
+2208; 220B # ELEMENT OF
+2209; 220C # NOT AN ELEMENT OF
+220A; 220D # SMALL ELEMENT OF
+220B; 2208 # CONTAINS AS MEMBER
+220C; 2209 # DOES NOT CONTAIN AS MEMBER
+220D; 220A # SMALL CONTAINS AS MEMBER
+2215; 29F5 # DIVISION SLASH
+223C; 223D # TILDE OPERATOR
+223D; 223C # REVERSED TILDE
+2243; 22CD # ASYMPTOTICALLY EQUAL TO
+2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF
+2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO
+2254; 2255 # COLON EQUALS
+2255; 2254 # EQUALS COLON
+2264; 2265 # LESS-THAN OR EQUAL TO
+2265; 2264 # GREATER-THAN OR EQUAL TO
+2266; 2267 # LESS-THAN OVER EQUAL TO
+2267; 2266 # GREATER-THAN OVER EQUAL TO
+2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO
+2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO
+226A; 226B # MUCH LESS-THAN
+226B; 226A # MUCH GREATER-THAN
+226E; 226F # [BEST FIT] NOT LESS-THAN
+226F; 226E # [BEST FIT] NOT GREATER-THAN
+2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO
+2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO
+2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO
+2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO
+2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO
+2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO
+2276; 2277 # LESS-THAN OR GREATER-THAN
+2277; 2276 # GREATER-THAN OR LESS-THAN
+2278; 2279 # NEITHER LESS-THAN NOR GREATER-THAN
+2279; 2278 # NEITHER GREATER-THAN NOR LESS-THAN
+227A; 227B # PRECEDES
+227B; 227A # SUCCEEDS
+227C; 227D # PRECEDES OR EQUAL TO
+227D; 227C # SUCCEEDS OR EQUAL TO
+227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO
+227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO
+2280; 2281 # [BEST FIT] DOES NOT PRECEDE
+2281; 2280 # [BEST FIT] DOES NOT SUCCEED
+2282; 2283 # SUBSET OF
+2283; 2282 # SUPERSET OF
+2284; 2285 # [BEST FIT] NOT A SUBSET OF
+2285; 2284 # [BEST FIT] NOT A SUPERSET OF
+2286; 2287 # SUBSET OF OR EQUAL TO
+2287; 2286 # SUPERSET OF OR EQUAL TO
+2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO
+2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO
+228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO
+228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO
+228F; 2290 # SQUARE IMAGE OF
+2290; 228F # SQUARE ORIGINAL OF
+2291; 2292 # SQUARE IMAGE OF OR EQUAL TO
+2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO
+2298; 29B8 # CIRCLED DIVISION SLASH
+22A2; 22A3 # RIGHT TACK
+22A3; 22A2 # LEFT TACK
+22A6; 2ADE # ASSERTION
+22A8; 2AE4 # TRUE
+22A9; 2AE3 # FORCES
+22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22B0; 22B1 # PRECEDES UNDER RELATION
+22B1; 22B0 # SUCCEEDS UNDER RELATION
+22B2; 22B3 # NORMAL SUBGROUP OF
+22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP
+22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO
+22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22B6; 22B7 # ORIGINAL OF
+22B7; 22B6 # IMAGE OF
+22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CB; 22CC # LEFT SEMIDIRECT PRODUCT
+22CC; 22CB # RIGHT SEMIDIRECT PRODUCT
+22CD; 2243 # REVERSED TILDE EQUALS
+22D0; 22D1 # DOUBLE SUBSET
+22D1; 22D0 # DOUBLE SUPERSET
+22D6; 22D7 # LESS-THAN WITH DOT
+22D7; 22D6 # GREATER-THAN WITH DOT
+22D8; 22D9 # VERY MUCH LESS-THAN
+22D9; 22D8 # VERY MUCH GREATER-THAN
+22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN
+22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN
+22DC; 22DD # EQUAL TO OR LESS-THAN
+22DD; 22DC # EQUAL TO OR GREATER-THAN
+22DE; 22DF # EQUAL TO OR PRECEDES
+22DF; 22DE # EQUAL TO OR SUCCEEDS
+22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL
+22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL
+22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO
+22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO
+22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO
+22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO
+22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO
+22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO
+22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO
+22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO
+22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF
+22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS
+22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS
+22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE
+22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F6; 22FD # ELEMENT OF WITH OVERBAR
+22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR
+22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE
+22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FD; 22F6 # CONTAINS WITH OVERBAR
+22FE; 22F7 # SMALL CONTAINS WITH OVERBAR
+2308; 2309 # LEFT CEILING
+2309; 2308 # RIGHT CEILING
+230A; 230B # LEFT FLOOR
+230B; 230A # RIGHT FLOOR
+2329; 232A # LEFT-POINTING ANGLE BRACKET
+232A; 2329 # RIGHT-POINTING ANGLE BRACKET
+2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT
+2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT
+276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET
+2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET
+2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT
+2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT
+27D5; 27D6 # LEFT OUTER JOIN
+27D6; 27D5 # RIGHT OUTER JOIN
+27DD; 27DE # LONG RIGHT TACK
+27DE; 27DD # LONG LEFT TACK
+27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
+27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
+27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK
+27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK
+27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET
+27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET
+27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+2983; 2984 # LEFT WHITE CURLY BRACKET
+2984; 2983 # RIGHT WHITE CURLY BRACKET
+2985; 2986 # LEFT WHITE PARENTHESIS
+2986; 2985 # RIGHT WHITE PARENTHESIS
+2987; 2988 # Z NOTATION LEFT IMAGE BRACKET
+2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET
+2989; 298A # Z NOTATION LEFT BINDING BRACKET
+298A; 2989 # Z NOTATION RIGHT BINDING BRACKET
+298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR
+298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR
+298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991; 2992 # LEFT ANGLE BRACKET WITH DOT
+2992; 2991 # RIGHT ANGLE BRACKET WITH DOT
+2993; 2994 # LEFT ARC LESS-THAN BRACKET
+2994; 2993 # RIGHT ARC GREATER-THAN BRACKET
+2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET
+2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET
+29B8; 2298 # CIRCLED REVERSE SOLIDUS
+29C0; 29C1 # CIRCLED LESS-THAN
+29C1; 29C0 # CIRCLED GREATER-THAN
+29C4; 29C5 # SQUARED RISING DIAGONAL SLASH
+29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH
+29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR
+29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE
+29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK
+29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK
+29D4; 29D5 # TIMES WITH LEFT HALF BLACK
+29D5; 29D4 # TIMES WITH RIGHT HALF BLACK
+29D8; 29D9 # LEFT WIGGLY FENCE
+29D9; 29D8 # RIGHT WIGGLY FENCE
+29DA; 29DB # LEFT DOUBLE WIGGLY FENCE
+29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE
+29F5; 2215 # REVERSE SOLIDUS OPERATOR
+29F8; 29F9 # BIG SOLIDUS
+29F9; 29F8 # BIG REVERSE SOLIDUS
+29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET
+29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET
+2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS
+2A2C; 2A2B # MINUS SIGN WITH RISING DOTS
+2A2D; 2A2C # PLUS SIGN IN LEFT HALF CIRCLE
+2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE
+2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
+2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
+2A3C; 2A3D # INTERIOR PRODUCT
+2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT
+2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION
+2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION
+2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE
+2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE
+2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO
+2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO
+2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
+2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
+2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
+2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
+2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
+2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
+2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN
+2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN
+2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
+2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
+2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN
+2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN
+2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
+2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
+2AA1; 2AA2 # DOUBLE NESTED LESS-THAN
+2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN
+2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE
+2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE
+2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AAA; 2AAB # SMALLER THAN
+2AAB; 2AAA # LARGER THAN
+2AAC; 2AAD # SMALLER THAN OR EQUAL TO
+2AAD; 2AAC # LARGER THAN OR EQUAL TO
+2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN
+2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN
+2ABB; 2ABC # DOUBLE PRECEDES
+2ABC; 2ABB # DOUBLE SUCCEEDS
+2ABD; 2ABE # SUBSET WITH DOT
+2ABE; 2ABD # SUPERSET WITH DOT
+2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW
+2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW
+2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW
+2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW
+2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE
+2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN
+2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN
+2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR
+2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR
+2ACF; 2AD0 # CLOSED SUBSET
+2AD0; 2ACF # CLOSED SUPERSET
+2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO
+2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO
+2AD3; 2AD4 # SUBSET ABOVE SUPERSET
+2AD4; 2AD3 # SUPERSET ABOVE SUBSET
+2AD5; 2AD6 # SUBSET ABOVE SUBSET
+2AD6; 2AD5 # SUPERSET ABOVE SUPERSET
+2ADE; 22A6 # SHORT LEFT TACK
+2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE
+2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AEC; 2AED # DOUBLE STROKE NOT SIGN
+2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN
+2AF7; 2AF8 # TRIPLE NESTED LESS-THAN
+2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN
+2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
+2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
+3008; 3009 # LEFT ANGLE BRACKET
+3009; 3008 # RIGHT ANGLE BRACKET
+300A; 300B # LEFT DOUBLE ANGLE BRACKET
+300B; 300A # RIGHT DOUBLE ANGLE BRACKET
+300C; 300D # [BEST FIT] LEFT CORNER BRACKET
+300D; 300C # [BEST FIT] RIGHT CORNER BRACKET
+300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET
+300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET
+3010; 3011 # LEFT BLACK LENTICULAR BRACKET
+3011; 3010 # RIGHT BLACK LENTICULAR BRACKET
+3014; 3015 # LEFT TORTOISE SHELL BRACKET
+3015; 3014 # RIGHT TORTOISE SHELL BRACKET
+3016; 3017 # LEFT WHITE LENTICULAR BRACKET
+3017; 3016 # RIGHT WHITE LENTICULAR BRACKET
+3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET
+3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET
+301A; 301B # LEFT WHITE SQUARE BRACKET
+301B; 301A # RIGHT WHITE SQUARE BRACKET
+FF08; FF09 # FULLWIDTH LEFT PARENTHESIS
+FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS
+FF1C; FF1E # FULLWIDTH LESS-THAN SIGN
+FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN
+FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET
+FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET
+FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET
+FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET
+FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS
+FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS
+FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET
+FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET
+
+# The following characters have no appropriate mirroring character
+
+# 2140; DOUBLE-STRUCK N-ARY SUMMATION
+# 2201; COMPLEMENT
+# 2202; PARTIAL DIFFERENTIAL
+# 2203; THERE EXISTS
+# 2204; THERE DOES NOT EXIST
+# 2211; N-ARY SUMMATION
+# 2216; SET MINUS
+# 221A; SQUARE ROOT
+# 221B; CUBE ROOT
+# 221C; FOURTH ROOT
+# 221D; PROPORTIONAL TO
+# 221F; RIGHT ANGLE
+# 2220; ANGLE
+# 2221; MEASURED ANGLE
+# 2222; SPHERICAL ANGLE
+# 2224; DOES NOT DIVIDE
+# 2226; NOT PARALLEL TO
+# 222B; INTEGRAL
+# 222C; DOUBLE INTEGRAL
+# 222D; TRIPLE INTEGRAL
+# 222E; CONTOUR INTEGRAL
+# 222F; SURFACE INTEGRAL
+# 2230; VOLUME INTEGRAL
+# 2231; CLOCKWISE INTEGRAL
+# 2232; CLOCKWISE CONTOUR INTEGRAL
+# 2233; ANTICLOCKWISE CONTOUR INTEGRAL
+# 2239; EXCESS
+# 223B; HOMOTHETIC
+# 223E; INVERTED LAZY S
+# 223F; SINE WAVE
+# 2240; WREATH PRODUCT
+# 2241; NOT TILDE
+# 2242; MINUS TILDE
+# 2244; NOT ASYMPTOTICALLY EQUAL TO
+# 2245; APPROXIMATELY EQUAL TO
+# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+# 2248; ALMOST EQUAL TO
+# 2249; NOT ALMOST EQUAL TO
+# 224A; ALMOST EQUAL OR EQUAL TO
+# 224B; TRIPLE TILDE
+# 224C; ALL EQUAL TO
+# 225F; QUESTIONED EQUAL TO
+# 2260; NOT EQUAL TO
+# 2262; NOT IDENTICAL TO
+# 228C; MULTISET
+# 22A7; MODELS
+# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE
+# 22AC; DOES NOT PROVE
+# 22AD; NOT TRUE
+# 22AE; DOES NOT FORCE
+# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+# 22B8; MULTIMAP
+# 22BE; RIGHT ANGLE WITH ARC
+# 22BF; RIGHT TRIANGLE
+# 22F5; ELEMENT OF WITH DOT ABOVE
+# 22F8; ELEMENT OF WITH UNDERBAR
+# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES
+# 22FF; Z NOTATION BAG MEMBERSHIP
+# 2320; TOP HALF INTEGRAL
+# 2321; BOTTOM HALF INTEGRAL
+# 27D3; LOWER RIGHT CORNER WITH DOT
+# 27D4; UPPER LEFT CORNER WITH DOT
+# 27DC; LEFT MULTIMAP
+# 299B; MEASURED ANGLE OPENING LEFT
+# 299C; RIGHT ANGLE VARIANT WITH SQUARE
+# 299D; MEASURED RIGHT ANGLE WITH DOT
+# 299E; ANGLE WITH S INSIDE
+# 299F; ACUTE ANGLE
+# 29A0; SPHERICAL ANGLE OPENING LEFT
+# 29A1; SPHERICAL ANGLE OPENING UP
+# 29A2; TURNED ANGLE
+# 29A3; REVERSED ANGLE
+# 29A4; ANGLE WITH UNDERBAR
+# 29A5; REVERSED ANGLE WITH UNDERBAR
+# 29A6; OBLIQUE ANGLE OPENING UP
+# 29A7; OBLIQUE ANGLE OPENING DOWN
+# 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
+# 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
+# 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
+# 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
+# 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
+# 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
+# 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
+# 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
+# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT
+# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
+# 29C9; TWO JOINED SQUARES
+# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE
+# 29DC; INCOMPLETE INFINITY
+# 29E1; INCREASES AS
+# 29E3; EQUALS SIGN AND SLANTED PARALLEL
+# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
+# 29E5; IDENTICAL TO AND SLANTED PARALLEL
+# 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
+# 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
+# 29F4; RULE-DELAYED
+# 29F6; SOLIDUS WITH OVERBAR
+# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE
+# 2A0A; MODULO TWO SUM
+# 2A0B; SUMMATION WITH INTEGRAL
+# 2A0C; QUADRUPLE INTEGRAL OPERATOR
+# 2A0D; FINITE PART INTEGRAL
+# 2A0E; INTEGRAL WITH DOUBLE STROKE
+# 2A0F; INTEGRAL AVERAGE WITH SLASH
+# 2A10; CIRCULATION FUNCTION
+# 2A11; ANTICLOCKWISE INTEGRATION
+# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
+# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
+# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE
+# 2A15; INTEGRAL AROUND A POINT OPERATOR
+# 2A16; QUATERNION INTEGRAL OPERATOR
+# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
+# 2A18; INTEGRAL WITH TIMES SIGN
+# 2A19; INTEGRAL WITH INTERSECTION
+# 2A1A; INTEGRAL WITH UNION
+# 2A1B; INTEGRAL WITH OVERBAR
+# 2A1C; INTEGRAL WITH UNDERBAR
+# 2A1E; LARGE LEFT TRIANGLE OPERATOR
+# 2A1F; Z NOTATION SCHEMA COMPOSITION
+# 2A20; Z NOTATION SCHEMA PIPING
+# 2A21; Z NOTATION SCHEMA PROJECTION
+# 2A24; PLUS SIGN WITH TILDE ABOVE
+# 2A26; PLUS SIGN WITH TILDE BELOW
+# 2A29; MINUS SIGN WITH COMMA ABOVE
+# 2A3E; Z NOTATION RELATIONAL COMPOSITION
+# 2A57; SLOPING LARGE OR
+# 2A58; SLOPING LARGE AND
+# 2A6A; TILDE OPERATOR WITH DOT ABOVE
+# 2A6B; TILDE OPERATOR WITH RISING DOTS
+# 2A6C; SIMILAR MINUS SIMILAR
+# 2A6D; CONGRUENT WITH DOT ABOVE
+# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
+# 2A70; APPROXIMATELY EQUAL OR EQUAL TO
+# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR
+# 2A74; DOUBLE COLON EQUAL
+# 2A7B; LESS-THAN WITH QUESTION MARK ABOVE
+# 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE
+# 2A85; LESS-THAN OR APPROXIMATE
+# 2A86; GREATER-THAN OR APPROXIMATE
+# 2A87; LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+# 2A88; GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+# 2A89; LESS-THAN AND NOT APPROXIMATE
+# 2A8A; GREATER-THAN AND NOT APPROXIMATE
+# 2A8D; LESS-THAN ABOVE SIMILAR OR EQUAL
+# 2A8E; GREATER-THAN ABOVE SIMILAR OR EQUAL
+# 2A8F; LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
+# 2A90; GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
+# 2A9D; SIMILAR OR LESS-THAN
+# 2A9E; SIMILAR OR GREATER-THAN
+# 2A9F; SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
+# 2AA0; SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
+# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR
+# 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
+# 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+# 2AB5; PRECEDES ABOVE NOT EQUAL TO
+# 2AB6; SUCCEEDS ABOVE NOT EQUAL TO
+# 2AB7; PRECEDES ABOVE ALMOST EQUAL TO
+# 2AB8; SUCCEEDS ABOVE ALMOST EQUAL TO
+# 2AB9; PRECEDES ABOVE NOT ALMOST EQUAL TO
+# 2ABA; SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+# 2AC7; SUBSET OF ABOVE TILDE OPERATOR
+# 2AC8; SUPERSET OF ABOVE TILDE OPERATOR
+# 2AC9; SUBSET OF ABOVE ALMOST EQUAL TO
+# 2ACA; SUPERSET OF ABOVE ALMOST EQUAL TO
+# 2ACB; SUBSET OF ABOVE NOT EQUAL TO
+# 2ACC; SUPERSET OF ABOVE NOT EQUAL TO
+# 2ADC; FORKING
+# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE
+# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
+# 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
+# 2AF3; PARALLEL WITH TILDE OPERATOR
+# 2AFB; TRIPLE SOLIDUS BINARY RELATION
+# 2AFD; DOUBLE SOLIDUS OPERATOR
diff --git a/doc/specifications/COPYING.UCD b/doc/specifications/COPYING.UCD
new file mode 100644 (file)
index 0000000..e1f615d
--- /dev/null
@@ -0,0 +1,61 @@
+License below is copied from <http://www.unicode.org/copyright.html>,
+last updated 7 July 2004, and claims to apply to all Unicode versions.
+
+According to a post on emacs-devel,
+<http://lists.gnu.org/archive/html/emacs-devel/2004-04/msg00036.html>,
+RMS believe it is a free license:
+
+        This is a free license, and even compatible with the GPL (if
+        that ever matters).  Yes, we can use it now.
+
+EXHIBIT 1
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/ and
+http://www.unicode.org/reports/. Unicode Software includes any source
+code under the directories http://www.unicode.org/Public/ and
+http://www.unicode.org/reports/.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
+DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU
+UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND
+CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD,
+INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 1991-2004 Unicode, Inc. All rights reserved. Distributed
+under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and associated documentation (the
+"Data Files") or Unicode software and associated documentation (the
+"Software") to deal in the Data Files or Software without restriction,
+including without limitation the rights to use, copy, modify, merge,
+publish, distribute, and/or sell copies of the Data Files or Software,
+and to permit persons to whom the Data Files or Software are furnished
+to do so, provided that (a) the above copyright notice(s) and this
+permission notice appear in all copies of the Data Files or Software,
+(b) both the above copyright notice(s) and this permission notice
+appear in associated documentation, and (c) there is clear notice in
+each modified Data File or in the Software as well as in the
+documentation associated with the Data File(s) or Software that the
+data or software has been modified.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
+ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
diff --git a/doc/specifications/CaseFolding-3.2.0.txt b/doc/specifications/CaseFolding-3.2.0.txt
new file mode 100644 (file)
index 0000000..104a823
--- /dev/null
@@ -0,0 +1,912 @@
+# CaseFolding-3.2.0.txt
+# Date: 2002-03-22,20:54:33 GMT [MD]
+#
+# Case Folding Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It provides a case folding mapping generated from the Unicode Character Database.
+# If all characters are mapped according to the full mapping below, then
+# case differences (according to UnicodeData.txt and SpecialCasing.txt)
+# are eliminated.
+#
+# The data supports both implementations that require simple case foldings
+# (where string lengths don't change), and implementations that allow full case folding
+# (where string lengths may grow). Note that where they can be supported, the
+# full case foldings are superior: for example, they allow "MASSE" and "Maße" to match.
+#
+# NOTE: case folding does not preserve normalization formats!
+#
+# For information on case folding, see
+# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/
+#
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <code>; <status>; <mapping>; # <name>
+#
+# The status field is:
+# C: common case folding, common mappings shared by both simple and full mappings.
+# F: full case folding, mappings that cause strings to grow in length. Multiple characters are separated by spaces.
+# S: simple case folding, mappings to single characters where different from F.
+# T: special case for uppercase I and dotted uppercase I
+#    - For non-Turkic languages, this mapping is normally not used.
+#    - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters.
+#
+# Usage:
+#  A. To do a simple case folding, use the mappings with status C + S.
+#  B. To do a full case folding, use the mappings with status C + F.
+#
+#    The mappings with status T can be used or omitted depending on the desired case-folding
+#    behavior. (The default option is to exclude them.)
+#
+# =================================================================
+
+0041; C; 0061; # LATIN CAPITAL LETTER A
+0042; C; 0062; # LATIN CAPITAL LETTER B
+0043; C; 0063; # LATIN CAPITAL LETTER C
+0044; C; 0064; # LATIN CAPITAL LETTER D
+0045; C; 0065; # LATIN CAPITAL LETTER E
+0046; C; 0066; # LATIN CAPITAL LETTER F
+0047; C; 0067; # LATIN CAPITAL LETTER G
+0048; C; 0068; # LATIN CAPITAL LETTER H
+0049; C; 0069; # LATIN CAPITAL LETTER I
+0049; T; 0131; # LATIN CAPITAL LETTER I
+004A; C; 006A; # LATIN CAPITAL LETTER J
+004B; C; 006B; # LATIN CAPITAL LETTER K
+004C; C; 006C; # LATIN CAPITAL LETTER L
+004D; C; 006D; # LATIN CAPITAL LETTER M
+004E; C; 006E; # LATIN CAPITAL LETTER N
+004F; C; 006F; # LATIN CAPITAL LETTER O
+0050; C; 0070; # LATIN CAPITAL LETTER P
+0051; C; 0071; # LATIN CAPITAL LETTER Q
+0052; C; 0072; # LATIN CAPITAL LETTER R
+0053; C; 0073; # LATIN CAPITAL LETTER S
+0054; C; 0074; # LATIN CAPITAL LETTER T
+0055; C; 0075; # LATIN CAPITAL LETTER U
+0056; C; 0076; # LATIN CAPITAL LETTER V
+0057; C; 0077; # LATIN CAPITAL LETTER W
+0058; C; 0078; # LATIN CAPITAL LETTER X
+0059; C; 0079; # LATIN CAPITAL LETTER Y
+005A; C; 007A; # LATIN CAPITAL LETTER Z
+00B5; C; 03BC; # MICRO SIGN
+00C0; C; 00E0; # LATIN CAPITAL LETTER A WITH GRAVE
+00C1; C; 00E1; # LATIN CAPITAL LETTER A WITH ACUTE
+00C2; C; 00E2; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3; C; 00E3; # LATIN CAPITAL LETTER A WITH TILDE
+00C4; C; 00E4; # LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5; C; 00E5; # LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6; C; 00E6; # LATIN CAPITAL LETTER AE
+00C7; C; 00E7; # LATIN CAPITAL LETTER C WITH CEDILLA
+00C8; C; 00E8; # LATIN CAPITAL LETTER E WITH GRAVE
+00C9; C; 00E9; # LATIN CAPITAL LETTER E WITH ACUTE
+00CA; C; 00EA; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB; C; 00EB; # LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC; C; 00EC; # LATIN CAPITAL LETTER I WITH GRAVE
+00CD; C; 00ED; # LATIN CAPITAL LETTER I WITH ACUTE
+00CE; C; 00EE; # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF; C; 00EF; # LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0; C; 00F0; # LATIN CAPITAL LETTER ETH
+00D1; C; 00F1; # LATIN CAPITAL LETTER N WITH TILDE
+00D2; C; 00F2; # LATIN CAPITAL LETTER O WITH GRAVE
+00D3; C; 00F3; # LATIN CAPITAL LETTER O WITH ACUTE
+00D4; C; 00F4; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5; C; 00F5; # LATIN CAPITAL LETTER O WITH TILDE
+00D6; C; 00F6; # LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8; C; 00F8; # LATIN CAPITAL LETTER O WITH STROKE
+00D9; C; 00F9; # LATIN CAPITAL LETTER U WITH GRAVE
+00DA; C; 00FA; # LATIN CAPITAL LETTER U WITH ACUTE
+00DB; C; 00FB; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC; C; 00FC; # LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD; C; 00FD; # LATIN CAPITAL LETTER Y WITH ACUTE
+00DE; C; 00FE; # LATIN CAPITAL LETTER THORN
+00DF; F; 0073 0073; # LATIN SMALL LETTER SHARP S
+0100; C; 0101; # LATIN CAPITAL LETTER A WITH MACRON
+0102; C; 0103; # LATIN CAPITAL LETTER A WITH BREVE
+0104; C; 0105; # LATIN CAPITAL LETTER A WITH OGONEK
+0106; C; 0107; # LATIN CAPITAL LETTER C WITH ACUTE
+0108; C; 0109; # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+010A; C; 010B; # LATIN CAPITAL LETTER C WITH DOT ABOVE
+010C; C; 010D; # LATIN CAPITAL LETTER C WITH CARON
+010E; C; 010F; # LATIN CAPITAL LETTER D WITH CARON
+0110; C; 0111; # LATIN CAPITAL LETTER D WITH STROKE
+0112; C; 0113; # LATIN CAPITAL LETTER E WITH MACRON
+0114; C; 0115; # LATIN CAPITAL LETTER E WITH BREVE
+0116; C; 0117; # LATIN CAPITAL LETTER E WITH DOT ABOVE
+0118; C; 0119; # LATIN CAPITAL LETTER E WITH OGONEK
+011A; C; 011B; # LATIN CAPITAL LETTER E WITH CARON
+011C; C; 011D; # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011E; C; 011F; # LATIN CAPITAL LETTER G WITH BREVE
+0120; C; 0121; # LATIN CAPITAL LETTER G WITH DOT ABOVE
+0122; C; 0123; # LATIN CAPITAL LETTER G WITH CEDILLA
+0124; C; 0125; # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0126; C; 0127; # LATIN CAPITAL LETTER H WITH STROKE
+0128; C; 0129; # LATIN CAPITAL LETTER I WITH TILDE
+012A; C; 012B; # LATIN CAPITAL LETTER I WITH MACRON
+012C; C; 012D; # LATIN CAPITAL LETTER I WITH BREVE
+012E; C; 012F; # LATIN CAPITAL LETTER I WITH OGONEK
+0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132; C; 0133; # LATIN CAPITAL LIGATURE IJ
+0134; C; 0135; # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0136; C; 0137; # LATIN CAPITAL LETTER K WITH CEDILLA
+0139; C; 013A; # LATIN CAPITAL LETTER L WITH ACUTE
+013B; C; 013C; # LATIN CAPITAL LETTER L WITH CEDILLA
+013D; C; 013E; # LATIN CAPITAL LETTER L WITH CARON
+013F; C; 0140; # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0141; C; 0142; # LATIN CAPITAL LETTER L WITH STROKE
+0143; C; 0144; # LATIN CAPITAL LETTER N WITH ACUTE
+0145; C; 0146; # LATIN CAPITAL LETTER N WITH CEDILLA
+0147; C; 0148; # LATIN CAPITAL LETTER N WITH CARON
+0149; F; 02BC 006E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A; C; 014B; # LATIN CAPITAL LETTER ENG
+014C; C; 014D; # LATIN CAPITAL LETTER O WITH MACRON
+014E; C; 014F; # LATIN CAPITAL LETTER O WITH BREVE
+0150; C; 0151; # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0152; C; 0153; # LATIN CAPITAL LIGATURE OE
+0154; C; 0155; # LATIN CAPITAL LETTER R WITH ACUTE
+0156; C; 0157; # LATIN CAPITAL LETTER R WITH CEDILLA
+0158; C; 0159; # LATIN CAPITAL LETTER R WITH CARON
+015A; C; 015B; # LATIN CAPITAL LETTER S WITH ACUTE
+015C; C; 015D; # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015E; C; 015F; # LATIN CAPITAL LETTER S WITH CEDILLA
+0160; C; 0161; # LATIN CAPITAL LETTER S WITH CARON
+0162; C; 0163; # LATIN CAPITAL LETTER T WITH CEDILLA
+0164; C; 0165; # LATIN CAPITAL LETTER T WITH CARON
+0166; C; 0167; # LATIN CAPITAL LETTER T WITH STROKE
+0168; C; 0169; # LATIN CAPITAL LETTER U WITH TILDE
+016A; C; 016B; # LATIN CAPITAL LETTER U WITH MACRON
+016C; C; 016D; # LATIN CAPITAL LETTER U WITH BREVE
+016E; C; 016F; # LATIN CAPITAL LETTER U WITH RING ABOVE
+0170; C; 0171; # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0172; C; 0173; # LATIN CAPITAL LETTER U WITH OGONEK
+0174; C; 0175; # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0176; C; 0177; # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0178; C; 00FF; # LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179; C; 017A; # LATIN CAPITAL LETTER Z WITH ACUTE
+017B; C; 017C; # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017D; C; 017E; # LATIN CAPITAL LETTER Z WITH CARON
+017F; C; 0073; # LATIN SMALL LETTER LONG S
+0181; C; 0253; # LATIN CAPITAL LETTER B WITH HOOK
+0182; C; 0183; # LATIN CAPITAL LETTER B WITH TOPBAR
+0184; C; 0185; # LATIN CAPITAL LETTER TONE SIX
+0186; C; 0254; # LATIN CAPITAL LETTER OPEN O
+0187; C; 0188; # LATIN CAPITAL LETTER C WITH HOOK
+0189; C; 0256; # LATIN CAPITAL LETTER AFRICAN D
+018A; C; 0257; # LATIN CAPITAL LETTER D WITH HOOK
+018B; C; 018C; # LATIN CAPITAL LETTER D WITH TOPBAR
+018E; C; 01DD; # LATIN CAPITAL LETTER REVERSED E
+018F; C; 0259; # LATIN CAPITAL LETTER SCHWA
+0190; C; 025B; # LATIN CAPITAL LETTER OPEN E
+0191; C; 0192; # LATIN CAPITAL LETTER F WITH HOOK
+0193; C; 0260; # LATIN CAPITAL LETTER G WITH HOOK
+0194; C; 0263; # LATIN CAPITAL LETTER GAMMA
+0196; C; 0269; # LATIN CAPITAL LETTER IOTA
+0197; C; 0268; # LATIN CAPITAL LETTER I WITH STROKE
+0198; C; 0199; # LATIN CAPITAL LETTER K WITH HOOK
+019C; C; 026F; # LATIN CAPITAL LETTER TURNED M
+019D; C; 0272; # LATIN CAPITAL LETTER N WITH LEFT HOOK
+019F; C; 0275; # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+01A0; C; 01A1; # LATIN CAPITAL LETTER O WITH HORN
+01A2; C; 01A3; # LATIN CAPITAL LETTER OI
+01A4; C; 01A5; # LATIN CAPITAL LETTER P WITH HOOK
+01A6; C; 0280; # LATIN LETTER YR
+01A7; C; 01A8; # LATIN CAPITAL LETTER TONE TWO
+01A9; C; 0283; # LATIN CAPITAL LETTER ESH
+01AC; C; 01AD; # LATIN CAPITAL LETTER T WITH HOOK
+01AE; C; 0288; # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+01AF; C; 01B0; # LATIN CAPITAL LETTER U WITH HORN
+01B1; C; 028A; # LATIN CAPITAL LETTER UPSILON
+01B2; C; 028B; # LATIN CAPITAL LETTER V WITH HOOK
+01B3; C; 01B4; # LATIN CAPITAL LETTER Y WITH HOOK
+01B5; C; 01B6; # LATIN CAPITAL LETTER Z WITH STROKE
+01B7; C; 0292; # LATIN CAPITAL LETTER EZH
+01B8; C; 01B9; # LATIN CAPITAL LETTER EZH REVERSED
+01BC; C; 01BD; # LATIN CAPITAL LETTER TONE FIVE
+01C4; C; 01C6; # LATIN CAPITAL LETTER DZ WITH CARON
+01C5; C; 01C6; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C7; C; 01C9; # LATIN CAPITAL LETTER LJ
+01C8; C; 01C9; # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01CA; C; 01CC; # LATIN CAPITAL LETTER NJ
+01CB; C; 01CC; # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CD; C; 01CE; # LATIN CAPITAL LETTER A WITH CARON
+01CF; C; 01D0; # LATIN CAPITAL LETTER I WITH CARON
+01D1; C; 01D2; # LATIN CAPITAL LETTER O WITH CARON
+01D3; C; 01D4; # LATIN CAPITAL LETTER U WITH CARON
+01D5; C; 01D6; # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D7; C; 01D8; # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D9; C; 01DA; # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DB; C; 01DC; # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DE; C; 01DF; # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01E0; C; 01E1; # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E2; C; 01E3; # LATIN CAPITAL LETTER AE WITH MACRON
+01E4; C; 01E5; # LATIN CAPITAL LETTER G WITH STROKE
+01E6; C; 01E7; # LATIN CAPITAL LETTER G WITH CARON
+01E8; C; 01E9; # LATIN CAPITAL LETTER K WITH CARON
+01EA; C; 01EB; # LATIN CAPITAL LETTER O WITH OGONEK
+01EC; C; 01ED; # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01EE; C; 01EF; # LATIN CAPITAL LETTER EZH WITH CARON
+01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON
+01F1; C; 01F3; # LATIN CAPITAL LETTER DZ
+01F2; C; 01F3; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F4; C; 01F5; # LATIN CAPITAL LETTER G WITH ACUTE
+01F6; C; 0195; # LATIN CAPITAL LETTER HWAIR
+01F7; C; 01BF; # LATIN CAPITAL LETTER WYNN
+01F8; C; 01F9; # LATIN CAPITAL LETTER N WITH GRAVE
+01FA; C; 01FB; # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FC; C; 01FD; # LATIN CAPITAL LETTER AE WITH ACUTE
+01FE; C; 01FF; # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0200; C; 0201; # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0202; C; 0203; # LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0204; C; 0205; # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0206; C; 0207; # LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0208; C; 0209; # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+020A; C; 020B; # LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020C; C; 020D; # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020E; C; 020F; # LATIN CAPITAL LETTER O WITH INVERTED BREVE
+0210; C; 0211; # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0212; C; 0213; # LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0214; C; 0215; # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0216; C; 0217; # LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0218; C; 0219; # LATIN CAPITAL LETTER S WITH COMMA BELOW
+021A; C; 021B; # LATIN CAPITAL LETTER T WITH COMMA BELOW
+021C; C; 021D; # LATIN CAPITAL LETTER YOGH
+021E; C; 021F; # LATIN CAPITAL LETTER H WITH CARON
+0220; C; 019E; # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+0222; C; 0223; # LATIN CAPITAL LETTER OU
+0224; C; 0225; # LATIN CAPITAL LETTER Z WITH HOOK
+0226; C; 0227; # LATIN CAPITAL LETTER A WITH DOT ABOVE
+0228; C; 0229; # LATIN CAPITAL LETTER E WITH CEDILLA
+022A; C; 022B; # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022C; C; 022D; # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022E; C; 022F; # LATIN CAPITAL LETTER O WITH DOT ABOVE
+0230; C; 0231; # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0232; C; 0233; # LATIN CAPITAL LETTER Y WITH MACRON
+0345; C; 03B9; # COMBINING GREEK YPOGEGRAMMENI
+0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS
+038A; C; 03AF; # GREEK CAPITAL LETTER IOTA WITH TONOS
+038C; C; 03CC; # GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E; C; 03CD; # GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F; C; 03CE; # GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391; C; 03B1; # GREEK CAPITAL LETTER ALPHA
+0392; C; 03B2; # GREEK CAPITAL LETTER BETA
+0393; C; 03B3; # GREEK CAPITAL LETTER GAMMA
+0394; C; 03B4; # GREEK CAPITAL LETTER DELTA
+0395; C; 03B5; # GREEK CAPITAL LETTER EPSILON
+0396; C; 03B6; # GREEK CAPITAL LETTER ZETA
+0397; C; 03B7; # GREEK CAPITAL LETTER ETA
+0398; C; 03B8; # GREEK CAPITAL LETTER THETA
+0399; C; 03B9; # GREEK CAPITAL LETTER IOTA
+039A; C; 03BA; # GREEK CAPITAL LETTER KAPPA
+039B; C; 03BB; # GREEK CAPITAL LETTER LAMDA
+039C; C; 03BC; # GREEK CAPITAL LETTER MU
+039D; C; 03BD; # GREEK CAPITAL LETTER NU
+039E; C; 03BE; # GREEK CAPITAL LETTER XI
+039F; C; 03BF; # GREEK CAPITAL LETTER OMICRON
+03A0; C; 03C0; # GREEK CAPITAL LETTER PI
+03A1; C; 03C1; # GREEK CAPITAL LETTER RHO
+03A3; C; 03C3; # GREEK CAPITAL LETTER SIGMA
+03A4; C; 03C4; # GREEK CAPITAL LETTER TAU
+03A5; C; 03C5; # GREEK CAPITAL LETTER UPSILON
+03A6; C; 03C6; # GREEK CAPITAL LETTER PHI
+03A7; C; 03C7; # GREEK CAPITAL LETTER CHI
+03A8; C; 03C8; # GREEK CAPITAL LETTER PSI
+03A9; C; 03C9; # GREEK CAPITAL LETTER OMEGA
+03AA; C; 03CA; # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB; C; 03CB; # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03B0; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03C2; C; 03C3; # GREEK SMALL LETTER FINAL SIGMA
+03D0; C; 03B2; # GREEK BETA SYMBOL
+03D1; C; 03B8; # GREEK THETA SYMBOL
+03D5; C; 03C6; # GREEK PHI SYMBOL
+03D6; C; 03C0; # GREEK PI SYMBOL
+03D8; C; 03D9; # GREEK LETTER ARCHAIC KOPPA
+03DA; C; 03DB; # GREEK LETTER STIGMA
+03DC; C; 03DD; # GREEK LETTER DIGAMMA
+03DE; C; 03DF; # GREEK LETTER KOPPA
+03E0; C; 03E1; # GREEK LETTER SAMPI
+03E2; C; 03E3; # COPTIC CAPITAL LETTER SHEI
+03E4; C; 03E5; # COPTIC CAPITAL LETTER FEI
+03E6; C; 03E7; # COPTIC CAPITAL LETTER KHEI
+03E8; C; 03E9; # COPTIC CAPITAL LETTER HORI
+03EA; C; 03EB; # COPTIC CAPITAL LETTER GANGIA
+03EC; C; 03ED; # COPTIC CAPITAL LETTER SHIMA
+03EE; C; 03EF; # COPTIC CAPITAL LETTER DEI
+03F0; C; 03BA; # GREEK KAPPA SYMBOL
+03F1; C; 03C1; # GREEK RHO SYMBOL
+03F2; C; 03C3; # GREEK LUNATE SIGMA SYMBOL
+03F4; C; 03B8; # GREEK CAPITAL THETA SYMBOL
+03F5; C; 03B5; # GREEK LUNATE EPSILON SYMBOL
+0400; C; 0450; # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401; C; 0451; # CYRILLIC CAPITAL LETTER IO
+0402; C; 0452; # CYRILLIC CAPITAL LETTER DJE
+0403; C; 0453; # CYRILLIC CAPITAL LETTER GJE
+0404; C; 0454; # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405; C; 0455; # CYRILLIC CAPITAL LETTER DZE
+0406; C; 0456; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407; C; 0457; # CYRILLIC CAPITAL LETTER YI
+0408; C; 0458; # CYRILLIC CAPITAL LETTER JE
+0409; C; 0459; # CYRILLIC CAPITAL LETTER LJE
+040A; C; 045A; # CYRILLIC CAPITAL LETTER NJE
+040B; C; 045B; # CYRILLIC CAPITAL LETTER TSHE
+040C; C; 045C; # CYRILLIC CAPITAL LETTER KJE
+040D; C; 045D; # CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E; C; 045E; # CYRILLIC CAPITAL LETTER SHORT U
+040F; C; 045F; # CYRILLIC CAPITAL LETTER DZHE
+0410; C; 0430; # CYRILLIC CAPITAL LETTER A
+0411; C; 0431; # CYRILLIC CAPITAL LETTER BE
+0412; C; 0432; # CYRILLIC CAPITAL LETTER VE
+0413; C; 0433; # CYRILLIC CAPITAL LETTER GHE
+0414; C; 0434; # CYRILLIC CAPITAL LETTER DE
+0415; C; 0435; # CYRILLIC CAPITAL LETTER IE
+0416; C; 0436; # CYRILLIC CAPITAL LETTER ZHE
+0417; C; 0437; # CYRILLIC CAPITAL LETTER ZE
+0418; C; 0438; # CYRILLIC CAPITAL LETTER I
+0419; C; 0439; # CYRILLIC CAPITAL LETTER SHORT I
+041A; C; 043A; # CYRILLIC CAPITAL LETTER KA
+041B; C; 043B; # CYRILLIC CAPITAL LETTER EL
+041C; C; 043C; # CYRILLIC CAPITAL LETTER EM
+041D; C; 043D; # CYRILLIC CAPITAL LETTER EN
+041E; C; 043E; # CYRILLIC CAPITAL LETTER O
+041F; C; 043F; # CYRILLIC CAPITAL LETTER PE
+0420; C; 0440; # CYRILLIC CAPITAL LETTER ER
+0421; C; 0441; # CYRILLIC CAPITAL LETTER ES
+0422; C; 0442; # CYRILLIC CAPITAL LETTER TE
+0423; C; 0443; # CYRILLIC CAPITAL LETTER U
+0424; C; 0444; # CYRILLIC CAPITAL LETTER EF
+0425; C; 0445; # CYRILLIC CAPITAL LETTER HA
+0426; C; 0446; # CYRILLIC CAPITAL LETTER TSE
+0427; C; 0447; # CYRILLIC CAPITAL LETTER CHE
+0428; C; 0448; # CYRILLIC CAPITAL LETTER SHA
+0429; C; 0449; # CYRILLIC CAPITAL LETTER SHCHA
+042A; C; 044A; # CYRILLIC CAPITAL LETTER HARD SIGN
+042B; C; 044B; # CYRILLIC CAPITAL LETTER YERU
+042C; C; 044C; # CYRILLIC CAPITAL LETTER SOFT SIGN
+042D; C; 044D; # CYRILLIC CAPITAL LETTER E
+042E; C; 044E; # CYRILLIC CAPITAL LETTER YU
+042F; C; 044F; # CYRILLIC CAPITAL LETTER YA
+0460; C; 0461; # CYRILLIC CAPITAL LETTER OMEGA
+0462; C; 0463; # CYRILLIC CAPITAL LETTER YAT
+0464; C; 0465; # CYRILLIC CAPITAL LETTER IOTIFIED E
+0466; C; 0467; # CYRILLIC CAPITAL LETTER LITTLE YUS
+0468; C; 0469; # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+046A; C; 046B; # CYRILLIC CAPITAL LETTER BIG YUS
+046C; C; 046D; # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046E; C; 046F; # CYRILLIC CAPITAL LETTER KSI
+0470; C; 0471; # CYRILLIC CAPITAL LETTER PSI
+0472; C; 0473; # CYRILLIC CAPITAL LETTER FITA
+0474; C; 0475; # CYRILLIC CAPITAL LETTER IZHITSA
+0476; C; 0477; # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478; C; 0479; # CYRILLIC CAPITAL LETTER UK
+047A; C; 047B; # CYRILLIC CAPITAL LETTER ROUND OMEGA
+047C; C; 047D; # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047E; C; 047F; # CYRILLIC CAPITAL LETTER OT
+0480; C; 0481; # CYRILLIC CAPITAL LETTER KOPPA
+048A; C; 048B; # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+048C; C; 048D; # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048E; C; 048F; # CYRILLIC CAPITAL LETTER ER WITH TICK
+0490; C; 0491; # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0492; C; 0493; # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0494; C; 0495; # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0496; C; 0497; # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0498; C; 0499; # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+049A; C; 049B; # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049C; C; 049D; # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049E; C; 049F; # CYRILLIC CAPITAL LETTER KA WITH STROKE
+04A0; C; 04A1; # CYRILLIC CAPITAL LETTER BASHKIR KA
+04A2; C; 04A3; # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A4; C; 04A5; # CYRILLIC CAPITAL LIGATURE EN GHE
+04A6; C; 04A7; # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A8; C; 04A9; # CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04AA; C; 04AB; # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AC; C; 04AD; # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AE; C; 04AF; # CYRILLIC CAPITAL LETTER STRAIGHT U
+04B0; C; 04B1; # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B2; C; 04B3; # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B4; C; 04B5; # CYRILLIC CAPITAL LIGATURE TE TSE
+04B6; C; 04B7; # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B8; C; 04B9; # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04BA; C; 04BB; # CYRILLIC CAPITAL LETTER SHHA
+04BC; C; 04BD; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BE; C; 04BF; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04C1; C; 04C2; # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C3; C; 04C4; # CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C5; C; 04C6; # CYRILLIC CAPITAL LETTER EL WITH TAIL
+04C7; C; 04C8; # CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C9; C; 04CA; # CYRILLIC CAPITAL LETTER EN WITH TAIL
+04CB; C; 04CC; # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CD; C; 04CE; # CYRILLIC CAPITAL LETTER EM WITH TAIL
+04D0; C; 04D1; # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D2; C; 04D3; # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D4; C; 04D5; # CYRILLIC CAPITAL LIGATURE A IE
+04D6; C; 04D7; # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D8; C; 04D9; # CYRILLIC CAPITAL LETTER SCHWA
+04DA; C; 04DB; # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DC; C; 04DD; # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DE; C; 04DF; # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E0; C; 04E1; # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E2; C; 04E3; # CYRILLIC CAPITAL LETTER I WITH MACRON
+04E4; C; 04E5; # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E6; C; 04E7; # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E8; C; 04E9; # CYRILLIC CAPITAL LETTER BARRED O
+04EA; C; 04EB; # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EC; C; 04ED; # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04EE; C; 04EF; # CYRILLIC CAPITAL LETTER U WITH MACRON
+04F0; C; 04F1; # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F2; C; 04F3; # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F4; C; 04F5; # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F8; C; 04F9; # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+0500; C; 0501; # CYRILLIC CAPITAL LETTER KOMI DE
+0502; C; 0503; # CYRILLIC CAPITAL LETTER KOMI DJE
+0504; C; 0505; # CYRILLIC CAPITAL LETTER KOMI ZJE
+0506; C; 0507; # CYRILLIC CAPITAL LETTER KOMI DZJE
+0508; C; 0509; # CYRILLIC CAPITAL LETTER KOMI LJE
+050A; C; 050B; # CYRILLIC CAPITAL LETTER KOMI NJE
+050C; C; 050D; # CYRILLIC CAPITAL LETTER KOMI SJE
+050E; C; 050F; # CYRILLIC CAPITAL LETTER KOMI TJE
+0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB
+0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN
+0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM
+0534; C; 0564; # ARMENIAN CAPITAL LETTER DA
+0535; C; 0565; # ARMENIAN CAPITAL LETTER ECH
+0536; C; 0566; # ARMENIAN CAPITAL LETTER ZA
+0537; C; 0567; # ARMENIAN CAPITAL LETTER EH
+0538; C; 0568; # ARMENIAN CAPITAL LETTER ET
+0539; C; 0569; # ARMENIAN CAPITAL LETTER TO
+053A; C; 056A; # ARMENIAN CAPITAL LETTER ZHE
+053B; C; 056B; # ARMENIAN CAPITAL LETTER INI
+053C; C; 056C; # ARMENIAN CAPITAL LETTER LIWN
+053D; C; 056D; # ARMENIAN CAPITAL LETTER XEH
+053E; C; 056E; # ARMENIAN CAPITAL LETTER CA
+053F; C; 056F; # ARMENIAN CAPITAL LETTER KEN
+0540; C; 0570; # ARMENIAN CAPITAL LETTER HO
+0541; C; 0571; # ARMENIAN CAPITAL LETTER JA
+0542; C; 0572; # ARMENIAN CAPITAL LETTER GHAD
+0543; C; 0573; # ARMENIAN CAPITAL LETTER CHEH
+0544; C; 0574; # ARMENIAN CAPITAL LETTER MEN
+0545; C; 0575; # ARMENIAN CAPITAL LETTER YI
+0546; C; 0576; # ARMENIAN CAPITAL LETTER NOW
+0547; C; 0577; # ARMENIAN CAPITAL LETTER SHA
+0548; C; 0578; # ARMENIAN CAPITAL LETTER VO
+0549; C; 0579; # ARMENIAN CAPITAL LETTER CHA
+054A; C; 057A; # ARMENIAN CAPITAL LETTER PEH
+054B; C; 057B; # ARMENIAN CAPITAL LETTER JHEH
+054C; C; 057C; # ARMENIAN CAPITAL LETTER RA
+054D; C; 057D; # ARMENIAN CAPITAL LETTER SEH
+054E; C; 057E; # ARMENIAN CAPITAL LETTER VEW
+054F; C; 057F; # ARMENIAN CAPITAL LETTER TIWN
+0550; C; 0580; # ARMENIAN CAPITAL LETTER REH
+0551; C; 0581; # ARMENIAN CAPITAL LETTER CO
+0552; C; 0582; # ARMENIAN CAPITAL LETTER YIWN
+0553; C; 0583; # ARMENIAN CAPITAL LETTER PIWR
+0554; C; 0584; # ARMENIAN CAPITAL LETTER KEH
+0555; C; 0585; # ARMENIAN CAPITAL LETTER OH
+0556; C; 0586; # ARMENIAN CAPITAL LETTER FEH
+0587; F; 0565 0582; # ARMENIAN SMALL LIGATURE ECH YIWN
+1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW
+1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW
+1E06; C; 1E07; # LATIN CAPITAL LETTER B WITH LINE BELOW
+1E08; C; 1E09; # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E0A; C; 1E0B; # LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0C; C; 1E0D; # LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0E; C; 1E0F; # LATIN CAPITAL LETTER D WITH LINE BELOW
+1E10; C; 1E11; # LATIN CAPITAL LETTER D WITH CEDILLA
+1E12; C; 1E13; # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E14; C; 1E15; # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E16; C; 1E17; # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E18; C; 1E19; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E1A; C; 1E1B; # LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1C; C; 1E1D; # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1E; C; 1E1F; # LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E20; C; 1E21; # LATIN CAPITAL LETTER G WITH MACRON
+1E22; C; 1E23; # LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E24; C; 1E25; # LATIN CAPITAL LETTER H WITH DOT BELOW
+1E26; C; 1E27; # LATIN CAPITAL LETTER H WITH DIAERESIS
+1E28; C; 1E29; # LATIN CAPITAL LETTER H WITH CEDILLA
+1E2A; C; 1E2B; # LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2C; C; 1E2D; # LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2E; C; 1E2F; # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E30; C; 1E31; # LATIN CAPITAL LETTER K WITH ACUTE
+1E32; C; 1E33; # LATIN CAPITAL LETTER K WITH DOT BELOW
+1E34; C; 1E35; # LATIN CAPITAL LETTER K WITH LINE BELOW
+1E36; C; 1E37; # LATIN CAPITAL LETTER L WITH DOT BELOW
+1E38; C; 1E39; # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E3A; C; 1E3B; # LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3C; C; 1E3D; # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3E; C; 1E3F; # LATIN CAPITAL LETTER M WITH ACUTE
+1E40; C; 1E41; # LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E42; C; 1E43; # LATIN CAPITAL LETTER M WITH DOT BELOW
+1E44; C; 1E45; # LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E46; C; 1E47; # LATIN CAPITAL LETTER N WITH DOT BELOW
+1E48; C; 1E49; # LATIN CAPITAL LETTER N WITH LINE BELOW
+1E4A; C; 1E4B; # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4C; C; 1E4D; # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4E; C; 1E4F; # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E50; C; 1E51; # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E52; C; 1E53; # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E54; C; 1E55; # LATIN CAPITAL LETTER P WITH ACUTE
+1E56; C; 1E57; # LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E58; C; 1E59; # LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E5A; C; 1E5B; # LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5C; C; 1E5D; # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5E; C; 1E5F; # LATIN CAPITAL LETTER R WITH LINE BELOW
+1E60; C; 1E61; # LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E62; C; 1E63; # LATIN CAPITAL LETTER S WITH DOT BELOW
+1E64; C; 1E65; # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E66; C; 1E67; # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E68; C; 1E69; # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A; C; 1E6B; # LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6C; C; 1E6D; # LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6E; C; 1E6F; # LATIN CAPITAL LETTER T WITH LINE BELOW
+1E70; C; 1E71; # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E72; C; 1E73; # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E74; C; 1E75; # LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E76; C; 1E77; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E78; C; 1E79; # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E7A; C; 1E7B; # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7C; C; 1E7D; # LATIN CAPITAL LETTER V WITH TILDE
+1E7E; C; 1E7F; # LATIN CAPITAL LETTER V WITH DOT BELOW
+1E80; C; 1E81; # LATIN CAPITAL LETTER W WITH GRAVE
+1E82; C; 1E83; # LATIN CAPITAL LETTER W WITH ACUTE
+1E84; C; 1E85; # LATIN CAPITAL LETTER W WITH DIAERESIS
+1E86; C; 1E87; # LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E88; C; 1E89; # LATIN CAPITAL LETTER W WITH DOT BELOW
+1E8A; C; 1E8B; # LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8C; C; 1E8D; # LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8E; C; 1E8F; # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E90; C; 1E91; # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E92; C; 1E93; # LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E94; C; 1E95; # LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E96; F; 0068 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; F; 0074 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; F; 0077 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; F; 0079 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; F; 0061 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1E9B; C; 1E61; # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0; C; 1EA1; # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA2; C; 1EA3; # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA4; C; 1EA5; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6; C; 1EA7; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8; C; 1EA9; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA; C; 1EAB; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC; C; 1EAD; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE; C; 1EAF; # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB0; C; 1EB1; # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB2; C; 1EB3; # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4; C; 1EB5; # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB6; C; 1EB7; # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB8; C; 1EB9; # LATIN CAPITAL LETTER E WITH DOT BELOW
+1EBA; C; 1EBB; # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBC; C; 1EBD; # LATIN CAPITAL LETTER E WITH TILDE
+1EBE; C; 1EBF; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0; C; 1EC1; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2; C; 1EC3; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4; C; 1EC5; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6; C; 1EC7; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8; C; 1EC9; # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1ECA; C; 1ECB; # LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECC; C; 1ECD; # LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECE; C; 1ECF; # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ED0; C; 1ED1; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2; C; 1ED3; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4; C; 1ED5; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6; C; 1ED7; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8; C; 1ED9; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA; C; 1EDB; # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDC; C; 1EDD; # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDE; C; 1EDF; # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE0; C; 1EE1; # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE2; C; 1EE3; # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE4; C; 1EE5; # LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE6; C; 1EE7; # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE8; C; 1EE9; # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEA; C; 1EEB; # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEC; C; 1EED; # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EEE; C; 1EEF; # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EF0; C; 1EF1; # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF2; C; 1EF3; # LATIN CAPITAL LETTER Y WITH GRAVE
+1EF4; C; 1EF5; # LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF6; C; 1EF7; # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF8; C; 1EF9; # LATIN CAPITAL LETTER Y WITH TILDE
+1F08; C; 1F00; # GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09; C; 1F01; # GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A; C; 1F02; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B; C; 1F03; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C; C; 1F04; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D; C; 1F05; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E; C; 1F06; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F; C; 1F07; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F18; C; 1F10; # GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19; C; 1F11; # GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A; C; 1F12; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B; C; 1F13; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C; C; 1F14; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D; C; 1F15; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F28; C; 1F20; # GREEK CAPITAL LETTER ETA WITH PSILI
+1F29; C; 1F21; # GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A; C; 1F22; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B; C; 1F23; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C; C; 1F24; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D; C; 1F25; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E; C; 1F26; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F; C; 1F27; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F38; C; 1F30; # GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39; C; 1F31; # GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A; C; 1F32; # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B; C; 1F33; # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C; C; 1F34; # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D; C; 1F35; # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E; C; 1F36; # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F; C; 1F37; # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F48; C; 1F40; # GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49; C; 1F41; # GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A; C; 1F42; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B; C; 1F43; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C; C; 1F44; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D; C; 1F45; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50; F; 03C5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; F; 03C5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; F; 03C5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; F; 03C5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F59; C; 1F51; # GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B; C; 1F53; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D; C; 1F55; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F; C; 1F57; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F68; C; 1F60; # GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69; C; 1F61; # GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A; C; 1F62; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B; C; 1F63; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C; C; 1F64; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D; C; 1F65; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E; C; 1F66; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F; C; 1F67; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F80; F; 1F00 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; F; 1F01 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; F; 1F02 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; F; 1F03 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; F; 1F04 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; F; 1F05 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; F; 1F06 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; F; 1F07 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; F; 1F00 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F88; S; 1F80; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; F; 1F01 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F89; S; 1F81; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; F; 1F02 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8A; S; 1F82; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; F; 1F03 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8B; S; 1F83; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; F; 1F04 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8C; S; 1F84; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; F; 1F05 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8D; S; 1F85; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; F; 1F06 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8E; S; 1F86; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; F; 1F07 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; S; 1F87; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; F; 1F20 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; F; 1F21 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; F; 1F22 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; F; 1F23 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; F; 1F24 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; F; 1F25 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; F; 1F26 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; F; 1F27 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; F; 1F20 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F98; S; 1F90; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; F; 1F21 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F99; S; 1F91; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; F; 1F22 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9A; S; 1F92; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; F; 1F23 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9B; S; 1F93; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; F; 1F24 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9C; S; 1F94; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; F; 1F25 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9D; S; 1F95; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; F; 1F26 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9E; S; 1F96; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; F; 1F27 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; S; 1F97; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; F; 1F60 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; F; 1F61 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; F; 1F62 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; F; 1F63 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; F; 1F64 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; F; 1F65 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; F; 1F66 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; F; 1F67 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; F; 1F60 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA8; S; 1FA0; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; F; 1F61 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FA9; S; 1FA1; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; F; 1F62 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAA; S; 1FA2; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; F; 1F63 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAB; S; 1FA3; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; F; 1F64 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAC; S; 1FA4; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; F; 1F65 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAD; S; 1FA5; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; F; 1F66 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAE; S; 1FA6; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; F; 1F67 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; S; 1FA7; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB2; F; 1F70 03B9; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3; F; 03B1 03B9; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4; F; 03AC 03B9; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6; F; 03B1 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7; F; 03B1 0342 03B9; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8; C; 1FB0; # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9; C; 1FB1; # GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA; C; 1F70; # GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB; C; 1F71; # GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC; F; 03B1 03B9; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBC; S; 1FB3; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBE; C; 03B9; # GREEK PROSGEGRAMMENI
+1FC2; F; 1F74 03B9; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3; F; 03B7 03B9; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4; F; 03AE 03B9; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6; F; 03B7 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7; F; 03B7 0342 03B9; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8; C; 1F72; # GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9; C; 1F73; # GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA; C; 1F74; # GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB; C; 1F75; # GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC; F; 03B7 03B9; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9; C; 1FD1; # GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA; C; 1F76; # GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8; C; 1FE0; # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9; C; 1FE1; # GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA; C; 1F7A; # GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB; C; 1F7B; # GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC; C; 1FE5; # GREEK CAPITAL LETTER RHO WITH DASIA
+1FF2; F; 1F7C 03B9; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3; F; 03C9 03B9; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4; F; 03CE 03B9; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6; F; 03C9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7; F; 03C9 0342 03B9; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8; C; 1F78; # GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9; C; 1F79; # GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA; C; 1F7C; # GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB; C; 1F7D; # GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC; F; 03C9 03B9; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFC; S; 1FF3; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+2126; C; 03C9; # OHM SIGN
+212A; C; 006B; # KELVIN SIGN
+212B; C; 00E5; # ANGSTROM SIGN
+2160; C; 2170; # ROMAN NUMERAL ONE
+2161; C; 2171; # ROMAN NUMERAL TWO
+2162; C; 2172; # ROMAN NUMERAL THREE
+2163; C; 2173; # ROMAN NUMERAL FOUR
+2164; C; 2174; # ROMAN NUMERAL FIVE
+2165; C; 2175; # ROMAN NUMERAL SIX
+2166; C; 2176; # ROMAN NUMERAL SEVEN
+2167; C; 2177; # ROMAN NUMERAL EIGHT
+2168; C; 2178; # ROMAN NUMERAL NINE
+2169; C; 2179; # ROMAN NUMERAL TEN
+216A; C; 217A; # ROMAN NUMERAL ELEVEN
+216B; C; 217B; # ROMAN NUMERAL TWELVE
+216C; C; 217C; # ROMAN NUMERAL FIFTY
+216D; C; 217D; # ROMAN NUMERAL ONE HUNDRED
+216E; C; 217E; # ROMAN NUMERAL FIVE HUNDRED
+216F; C; 217F; # ROMAN NUMERAL ONE THOUSAND
+24B6; C; 24D0; # CIRCLED LATIN CAPITAL LETTER A
+24B7; C; 24D1; # CIRCLED LATIN CAPITAL LETTER B
+24B8; C; 24D2; # CIRCLED LATIN CAPITAL LETTER C
+24B9; C; 24D3; # CIRCLED LATIN CAPITAL LETTER D
+24BA; C; 24D4; # CIRCLED LATIN CAPITAL LETTER E
+24BB; C; 24D5; # CIRCLED LATIN CAPITAL LETTER F
+24BC; C; 24D6; # CIRCLED LATIN CAPITAL LETTER G
+24BD; C; 24D7; # CIRCLED LATIN CAPITAL LETTER H
+24BE; C; 24D8; # CIRCLED LATIN CAPITAL LETTER I
+24BF; C; 24D9; # CIRCLED LATIN CAPITAL LETTER J
+24C0; C; 24DA; # CIRCLED LATIN CAPITAL LETTER K
+24C1; C; 24DB; # CIRCLED LATIN CAPITAL LETTER L
+24C2; C; 24DC; # CIRCLED LATIN CAPITAL LETTER M
+24C3; C; 24DD; # CIRCLED LATIN CAPITAL LETTER N
+24C4; C; 24DE; # CIRCLED LATIN CAPITAL LETTER O
+24C5; C; 24DF; # CIRCLED LATIN CAPITAL LETTER P
+24C6; C; 24E0; # CIRCLED LATIN CAPITAL LETTER Q
+24C7; C; 24E1; # CIRCLED LATIN CAPITAL LETTER R
+24C8; C; 24E2; # CIRCLED LATIN CAPITAL LETTER S
+24C9; C; 24E3; # CIRCLED LATIN CAPITAL LETTER T
+24CA; C; 24E4; # CIRCLED LATIN CAPITAL LETTER U
+24CB; C; 24E5; # CIRCLED LATIN CAPITAL LETTER V
+24CC; C; 24E6; # CIRCLED LATIN CAPITAL LETTER W
+24CD; C; 24E7; # CIRCLED LATIN CAPITAL LETTER X
+24CE; C; 24E8; # CIRCLED LATIN CAPITAL LETTER Y
+24CF; C; 24E9; # CIRCLED LATIN CAPITAL LETTER Z
+FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF
+FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI
+FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL
+FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI
+FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL
+FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T
+FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST
+FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; F; 0574 056B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; F; 057E 0576; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; F; 0574 056D; # ARMENIAN SMALL LIGATURE MEN XEH
+FF21; C; FF41; # FULLWIDTH LATIN CAPITAL LETTER A
+FF22; C; FF42; # FULLWIDTH LATIN CAPITAL LETTER B
+FF23; C; FF43; # FULLWIDTH LATIN CAPITAL LETTER C
+FF24; C; FF44; # FULLWIDTH LATIN CAPITAL LETTER D
+FF25; C; FF45; # FULLWIDTH LATIN CAPITAL LETTER E
+FF26; C; FF46; # FULLWIDTH LATIN CAPITAL LETTER F
+FF27; C; FF47; # FULLWIDTH LATIN CAPITAL LETTER G
+FF28; C; FF48; # FULLWIDTH LATIN CAPITAL LETTER H
+FF29; C; FF49; # FULLWIDTH LATIN CAPITAL LETTER I
+FF2A; C; FF4A; # FULLWIDTH LATIN CAPITAL LETTER J
+FF2B; C; FF4B; # FULLWIDTH LATIN CAPITAL LETTER K
+FF2C; C; FF4C; # FULLWIDTH LATIN CAPITAL LETTER L
+FF2D; C; FF4D; # FULLWIDTH LATIN CAPITAL LETTER M
+FF2E; C; FF4E; # FULLWIDTH LATIN CAPITAL LETTER N
+FF2F; C; FF4F; # FULLWIDTH LATIN CAPITAL LETTER O
+FF30; C; FF50; # FULLWIDTH LATIN CAPITAL LETTER P
+FF31; C; FF51; # FULLWIDTH LATIN CAPITAL LETTER Q
+FF32; C; FF52; # FULLWIDTH LATIN CAPITAL LETTER R
+FF33; C; FF53; # FULLWIDTH LATIN CAPITAL LETTER S
+FF34; C; FF54; # FULLWIDTH LATIN CAPITAL LETTER T
+FF35; C; FF55; # FULLWIDTH LATIN CAPITAL LETTER U
+FF36; C; FF56; # FULLWIDTH LATIN CAPITAL LETTER V
+FF37; C; FF57; # FULLWIDTH LATIN CAPITAL LETTER W
+FF38; C; FF58; # FULLWIDTH LATIN CAPITAL LETTER X
+FF39; C; FF59; # FULLWIDTH LATIN CAPITAL LETTER Y
+FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
+10400; C; 10428; # DESERET CAPITAL LETTER LONG I
+10401; C; 10429; # DESERET CAPITAL LETTER LONG E
+10402; C; 1042A; # DESERET CAPITAL LETTER LONG A
+10403; C; 1042B; # DESERET CAPITAL LETTER LONG AH
+10404; C; 1042C; # DESERET CAPITAL LETTER LONG O
+10405; C; 1042D; # DESERET CAPITAL LETTER LONG OO
+10406; C; 1042E; # DESERET CAPITAL LETTER SHORT I
+10407; C; 1042F; # DESERET CAPITAL LETTER SHORT E
+10408; C; 10430; # DESERET CAPITAL LETTER SHORT A
+10409; C; 10431; # DESERET CAPITAL LETTER SHORT AH
+1040A; C; 10432; # DESERET CAPITAL LETTER SHORT O
+1040B; C; 10433; # DESERET CAPITAL LETTER SHORT OO
+1040C; C; 10434; # DESERET CAPITAL LETTER AY
+1040D; C; 10435; # DESERET CAPITAL LETTER OW
+1040E; C; 10436; # DESERET CAPITAL LETTER WU
+1040F; C; 10437; # DESERET CAPITAL LETTER YEE
+10410; C; 10438; # DESERET CAPITAL LETTER H
+10411; C; 10439; # DESERET CAPITAL LETTER PEE
+10412; C; 1043A; # DESERET CAPITAL LETTER BEE
+10413; C; 1043B; # DESERET CAPITAL LETTER TEE
+10414; C; 1043C; # DESERET CAPITAL LETTER DEE
+10415; C; 1043D; # DESERET CAPITAL LETTER CHEE
+10416; C; 1043E; # DESERET CAPITAL LETTER JEE
+10417; C; 1043F; # DESERET CAPITAL LETTER KAY
+10418; C; 10440; # DESERET CAPITAL LETTER GAY
+10419; C; 10441; # DESERET CAPITAL LETTER EF
+1041A; C; 10442; # DESERET CAPITAL LETTER VEE
+1041B; C; 10443; # DESERET CAPITAL LETTER ETH
+1041C; C; 10444; # DESERET CAPITAL LETTER THEE
+1041D; C; 10445; # DESERET CAPITAL LETTER ES
+1041E; C; 10446; # DESERET CAPITAL LETTER ZEE
+1041F; C; 10447; # DESERET CAPITAL LETTER ESH
+10420; C; 10448; # DESERET CAPITAL LETTER ZHEE
+10421; C; 10449; # DESERET CAPITAL LETTER ER
+10422; C; 1044A; # DESERET CAPITAL LETTER EL
+10423; C; 1044B; # DESERET CAPITAL LETTER EM
+10424; C; 1044C; # DESERET CAPITAL LETTER EN
+10425; C; 1044D; # DESERET CAPITAL LETTER ENG
diff --git a/doc/specifications/CompositionExclusions-3.2.0.txt b/doc/specifications/CompositionExclusions-3.2.0.txt
new file mode 100644 (file)
index 0000000..07a60b8
--- /dev/null
@@ -0,0 +1,176 @@
+# CompositionExclusions-3.2.0.txt
+# Date: 2002-03-19,23:30:28 GMT [MD]
+#
+# This file lists the characters from the UAX #15 Composition Exclusion Table.
+#
+# The format of the comments in this file has been updated since the last version,
+# CompositionExclusions-3.txt. The only substantive change to this file between that
+# version and this one is the addition of U+2ADC FORKING.
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+# ================================================
+
+# (1) Script Specifics
+# This list of characters cannot be derived from the UnicodeData file.
+# ================================================
+
+0958    #  DEVANAGARI LETTER QA
+0959    #  DEVANAGARI LETTER KHHA
+095A    #  DEVANAGARI LETTER GHHA
+095B    #  DEVANAGARI LETTER ZA
+095C    #  DEVANAGARI LETTER DDDHA
+095D    #  DEVANAGARI LETTER RHA
+095E    #  DEVANAGARI LETTER FA
+095F    #  DEVANAGARI LETTER YYA
+09DC    #  BENGALI LETTER RRA
+09DD    #  BENGALI LETTER RHA
+09DF    #  BENGALI LETTER YYA
+0A33    #  GURMUKHI LETTER LLA
+0A36    #  GURMUKHI LETTER SHA
+0A59    #  GURMUKHI LETTER KHHA
+0A5A    #  GURMUKHI LETTER GHHA
+0A5B    #  GURMUKHI LETTER ZA
+0A5E    #  GURMUKHI LETTER FA
+0B5C    #  ORIYA LETTER RRA
+0B5D    #  ORIYA LETTER RHA
+0F43    #  TIBETAN LETTER GHA
+0F4D    #  TIBETAN LETTER DDHA
+0F52    #  TIBETAN LETTER DHA
+0F57    #  TIBETAN LETTER BHA
+0F5C    #  TIBETAN LETTER DZHA
+0F69    #  TIBETAN LETTER KSSA
+0F76    #  TIBETAN VOWEL SIGN VOCALIC R
+0F78    #  TIBETAN VOWEL SIGN VOCALIC L
+0F93    #  TIBETAN SUBJOINED LETTER GHA
+0F9D    #  TIBETAN SUBJOINED LETTER DDHA
+0FA2    #  TIBETAN SUBJOINED LETTER DHA
+0FA7    #  TIBETAN SUBJOINED LETTER BHA
+0FAC    #  TIBETAN SUBJOINED LETTER DZHA
+0FB9    #  TIBETAN SUBJOINED LETTER KSSA
+FB1D    #  HEBREW LETTER YOD WITH HIRIQ
+FB1F    #  HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A    #  HEBREW LETTER SHIN WITH SHIN DOT
+FB2B    #  HEBREW LETTER SHIN WITH SIN DOT
+FB2C    #  HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D    #  HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E    #  HEBREW LETTER ALEF WITH PATAH
+FB2F    #  HEBREW LETTER ALEF WITH QAMATS
+FB30    #  HEBREW LETTER ALEF WITH MAPIQ
+FB31    #  HEBREW LETTER BET WITH DAGESH
+FB32    #  HEBREW LETTER GIMEL WITH DAGESH
+FB33    #  HEBREW LETTER DALET WITH DAGESH
+FB34    #  HEBREW LETTER HE WITH MAPIQ
+FB35    #  HEBREW LETTER VAV WITH DAGESH
+FB36    #  HEBREW LETTER ZAYIN WITH DAGESH
+FB38    #  HEBREW LETTER TET WITH DAGESH
+FB39    #  HEBREW LETTER YOD WITH DAGESH
+FB3A    #  HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B    #  HEBREW LETTER KAF WITH DAGESH
+FB3C    #  HEBREW LETTER LAMED WITH DAGESH
+FB3E    #  HEBREW LETTER MEM WITH DAGESH
+FB40    #  HEBREW LETTER NUN WITH DAGESH
+FB41    #  HEBREW LETTER SAMEKH WITH DAGESH
+FB43    #  HEBREW LETTER FINAL PE WITH DAGESH
+FB44    #  HEBREW LETTER PE WITH DAGESH
+FB46    #  HEBREW LETTER TSADI WITH DAGESH
+FB47    #  HEBREW LETTER QOF WITH DAGESH
+FB48    #  HEBREW LETTER RESH WITH DAGESH
+FB49    #  HEBREW LETTER SHIN WITH DAGESH
+FB4A    #  HEBREW LETTER TAV WITH DAGESH
+FB4B    #  HEBREW LETTER VAV WITH HOLAM
+FB4C    #  HEBREW LETTER BET WITH RAFE
+FB4D    #  HEBREW LETTER KAF WITH RAFE
+FB4E    #  HEBREW LETTER PE WITH RAFE
+
+# Total code points: 67
+
+# ================================================
+# (2) Post Composition Version precomposed characters
+# These characters cannot be derived solely from the UnicodeData.txt file
+# in this version of Unicode.
+# ================================================
+
+2ADC    #  FORKING
+1D15E   #  MUSICAL SYMBOL HALF NOTE
+1D15F   #  MUSICAL SYMBOL QUARTER NOTE
+1D160   #  MUSICAL SYMBOL EIGHTH NOTE
+1D161   #  MUSICAL SYMBOL SIXTEENTH NOTE
+1D162   #  MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163   #  MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164   #  MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB   #  MUSICAL SYMBOL MINIMA
+1D1BC   #  MUSICAL SYMBOL MINIMA BLACK
+1D1BD   #  MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE   #  MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF   #  MUSICAL SYMBOL FUSA WHITE
+1D1C0   #  MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 14
+
+# ================================================
+# (3) Singleton Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+# These characters are simply quoted here for reference.
+# ================================================
+
+# 0340..0341       [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+# 0343                 COMBINING GREEK KORONIS
+# 0374                 GREEK NUMERAL SIGN
+# 037E                 GREEK QUESTION MARK
+# 0387                 GREEK ANO TELEIA
+# 1F71                 GREEK SMALL LETTER ALPHA WITH OXIA
+# 1F73                 GREEK SMALL LETTER EPSILON WITH OXIA
+# 1F75                 GREEK SMALL LETTER ETA WITH OXIA
+# 1F77                 GREEK SMALL LETTER IOTA WITH OXIA
+# 1F79                 GREEK SMALL LETTER OMICRON WITH OXIA
+# 1F7B                 GREEK SMALL LETTER UPSILON WITH OXIA
+# 1F7D                 GREEK SMALL LETTER OMEGA WITH OXIA
+# 1FBB                 GREEK CAPITAL LETTER ALPHA WITH OXIA
+# 1FBE                 GREEK PROSGEGRAMMENI
+# 1FC9                 GREEK CAPITAL LETTER EPSILON WITH OXIA
+# 1FCB                 GREEK CAPITAL LETTER ETA WITH OXIA
+# 1FD3                 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+# 1FDB                 GREEK CAPITAL LETTER IOTA WITH OXIA
+# 1FE3                 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+# 1FEB                 GREEK CAPITAL LETTER UPSILON WITH OXIA
+# 1FEE..1FEF       [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+# 1FF9                 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB                 GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD                 GREEK OXIA
+# 2000..2001       [2] EN QUAD..EM QUAD
+# 2126                 OHM SIGN
+# 212A..212B       [2] KELVIN SIGN..ANGSTROM SIGN
+# 2329                 LEFT-POINTING ANGLE BRACKET
+# 232A                 RIGHT-POINTING ANGLE BRACKET
+# F900..FA0D     [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10                 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12                 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15..FA1E      [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20                 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22                 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25..FA26       [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A..FA2D       [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+# FA30..FA6A      [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+# 2F800..2FA1D   [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 924
+
+# ================================================
+# (4) Non-Starter Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition consists
+# of a sequence of characters, the first of which has a non-zero
+# combining class.
+# These characters are simply quoted here for reference.
+# ================================================
+
+# 0344                 COMBINING GREEK DIALYTIKA TONOS
+# 0F73                 TIBETAN VOWEL SIGN II
+# 0F75                 TIBETAN VOWEL SIGN UU
+# 0F81                 TIBETAN VOWEL SIGN REVERSED II
+
+# Total code points: 4
+
diff --git a/doc/specifications/LineBreak-3.2.0.txt b/doc/specifications/LineBreak-3.2.0.txt
new file mode 100644 (file)
index 0000000..8549eb8
--- /dev/null
@@ -0,0 +1,13889 @@
+# LineBreak-3.2.0.txt
+#
+# Line Break Properties
+#
+# This file is a supplement to the UnicodeData.txt file.
+# It contains both normative and informative data.
+# The format is two fields separated by a semicolon.
+# Field 1: Unicode value
+# Field 2: LineBreak property, consisting of one of the following values:
+#   Normative:
+#         "BK", "CR", "LF", "CM", "SG", "GL", "CB", "SP", "ZW"
+#   Informative:
+#         "XX", "OP", "CL", "QU", "NS", "EX", "SY",
+#         "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY",
+#         "BB", "BA", "SA", "AI", "B2"
+#  - Assigned characters that are not listed explicitly are given the value
+#    "AL".
+#  - Unassigned characters are given the value "XX".
+#  - Characters ranges are specified as for other property files in
+#         the Unicode Character Database.
+#
+# The Unicode name of each character is provided in a comment for help
+# in identifying the characters.
+#
+# See UTR #14: Line Breaking Properties, for more information
+0000;CM # <control>
+0001;CM # <control>
+0002;CM # <control>
+0003;CM # <control>
+0004;CM # <control>
+0005;CM # <control>
+0006;CM # <control>
+0007;CM # <control>
+0008;CM # <control>
+0009;BA # <control>
+000A;LF # <control>
+000B;CM # <control>
+000C;BK # <control>
+000D;CR # <control>
+000E;CM # <control>
+000F;CM # <control>
+0010;CM # <control>
+0011;CM # <control>
+0012;CM # <control>
+0013;CM # <control>
+0014;CM # <control>
+0015;CM # <control>
+0016;CM # <control>
+0017;CM # <control>
+0018;CM # <control>
+0019;CM # <control>
+001A;CM # <control>
+001B;CM # <control>
+001C;CM # <control>
+001D;CM # <control>
+001E;CM # <control>
+001F;CM # <control>
+0020;SP # SPACE
+0021;EX # EXCLAMATION MARK
+0022;QU # QUOTATION MARK
+0023;AL # NUMBER SIGN
+0024;PR # DOLLAR SIGN
+0025;PO # PERCENT SIGN
+0026;AL # AMPERSAND
+0027;QU # APOSTROPHE
+0028;OP # LEFT PARENTHESIS
+0029;CL # RIGHT PARENTHESIS
+002A;AL # ASTERISK
+002B;PR # PLUS SIGN
+002C;IS # COMMA
+002D;HY # HYPHEN-MINUS
+002E;IS # FULL STOP
+002F;SY # SOLIDUS
+0030;NU # DIGIT ZERO
+0031;NU # DIGIT ONE
+0032;NU # DIGIT TWO
+0033;NU # DIGIT THREE
+0034;NU # DIGIT FOUR
+0035;NU # DIGIT FIVE
+0036;NU # DIGIT SIX
+0037;NU # DIGIT SEVEN
+0038;NU # DIGIT EIGHT
+0039;NU # DIGIT NINE
+003A;IS # COLON
+003B;IS # SEMICOLON
+003C;AL # LESS-THAN SIGN
+003D;AL # EQUALS SIGN
+003E;AL # GREATER-THAN SIGN
+003F;EX # QUESTION MARK
+0040;AL # COMMERCIAL AT
+0041;AL # LATIN CAPITAL LETTER A
+0042;AL # LATIN CAPITAL LETTER B
+0043;AL # LATIN CAPITAL LETTER C
+0044;AL # LATIN CAPITAL LETTER D
+0045;AL # LATIN CAPITAL LETTER E
+0046;AL # LATIN CAPITAL LETTER F
+0047;AL # LATIN CAPITAL LETTER G
+0048;AL # LATIN CAPITAL LETTER H
+0049;AL # LATIN CAPITAL LETTER I
+004A;AL # LATIN CAPITAL LETTER J
+004B;AL # LATIN CAPITAL LETTER K
+004C;AL # LATIN CAPITAL LETTER L
+004D;AL # LATIN CAPITAL LETTER M
+004E;AL # LATIN CAPITAL LETTER N
+004F;AL # LATIN CAPITAL LETTER O
+0050;AL # LATIN CAPITAL LETTER P
+0051;AL # LATIN CAPITAL LETTER Q
+0052;AL # LATIN CAPITAL LETTER R
+0053;AL # LATIN CAPITAL LETTER S
+0054;AL # LATIN CAPITAL LETTER T
+0055;AL # LATIN CAPITAL LETTER U
+0056;AL # LATIN CAPITAL LETTER V
+0057;AL # LATIN CAPITAL LETTER W
+0058;AL # LATIN CAPITAL LETTER X
+0059;AL # LATIN CAPITAL LETTER Y
+005A;AL # LATIN CAPITAL LETTER Z
+005B;OP # LEFT SQUARE BRACKET
+005C;PR # REVERSE SOLIDUS
+005D;CL # RIGHT SQUARE BRACKET
+005E;AL # CIRCUMFLEX ACCENT
+005F;AL # LOW LINE
+0060;AL # GRAVE ACCENT
+0061;AL # LATIN SMALL LETTER A
+0062;AL # LATIN SMALL LETTER B
+0063;AL # LATIN SMALL LETTER C
+0064;AL # LATIN SMALL LETTER D
+0065;AL # LATIN SMALL LETTER E
+0066;AL # LATIN SMALL LETTER F
+0067;AL # LATIN SMALL LETTER G
+0068;AL # LATIN SMALL LETTER H
+0069;AL # LATIN SMALL LETTER I
+006A;AL # LATIN SMALL LETTER J
+006B;AL # LATIN SMALL LETTER K
+006C;AL # LATIN SMALL LETTER L
+006D;AL # LATIN SMALL LETTER M
+006E;AL # LATIN SMALL LETTER N
+006F;AL # LATIN SMALL LETTER O
+0070;AL # LATIN SMALL LETTER P
+0071;AL # LATIN SMALL LETTER Q
+0072;AL # LATIN SMALL LETTER R
+0073;AL # LATIN SMALL LETTER S
+0074;AL # LATIN SMALL LETTER T
+0075;AL # LATIN SMALL LETTER U
+0076;AL # LATIN SMALL LETTER V
+0077;AL # LATIN SMALL LETTER W
+0078;AL # LATIN SMALL LETTER X
+0079;AL # LATIN SMALL LETTER Y
+007A;AL # LATIN SMALL LETTER Z
+007B;OP # LEFT CURLY BRACKET
+007C;BA # VERTICAL LINE
+007D;CL # RIGHT CURLY BRACKET
+007E;AL # TILDE
+007F;CM # <control>
+0080;CM # <control>
+0081;CM # <control>
+0082;CM # <control>
+0083;CM # <control>
+0084;CM # <control>
+0085;CM # <control>
+0086;CM # <control>
+0087;CM # <control>
+0088;CM # <control>
+0089;CM # <control>
+008A;CM # <control>
+008B;CM # <control>
+008C;CM # <control>
+008D;CM # <control>
+008E;CM # <control>
+008F;CM # <control>
+0090;CM # <control>
+0091;CM # <control>
+0092;CM # <control>
+0093;CM # <control>
+0094;CM # <control>
+0095;CM # <control>
+0096;CM # <control>
+0097;CM # <control>
+0098;CM # <control>
+0099;CM # <control>
+009A;CM # <control>
+009B;CM # <control>
+009C;CM # <control>
+009D;CM # <control>
+009E;CM # <control>
+009F;CM # <control>
+00A0;GL # NO-BREAK SPACE
+00A1;AI # INVERTED EXCLAMATION MARK
+00A2;PO # CENT SIGN
+00A3;PR # POUND SIGN
+00A4;PR # CURRENCY SIGN
+00A5;PR # YEN SIGN
+00A6;AL # BROKEN BAR
+00A7;AI # SECTION SIGN
+00A8;AI # DIAERESIS
+00A9;AL # COPYRIGHT SIGN
+00AA;AI # FEMININE ORDINAL INDICATOR
+00AB;QU # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC;AL # NOT SIGN
+00AD;BA # SOFT HYPHEN
+00AE;AL # REGISTERED SIGN
+00AF;AL # MACRON
+00B0;PO # DEGREE SIGN
+00B1;PR # PLUS-MINUS SIGN
+00B2;AI # SUPERSCRIPT TWO
+00B3;AI # SUPERSCRIPT THREE
+00B4;BB # ACUTE ACCENT
+00B5;AL # MICRO SIGN
+00B6;AI # PILCROW SIGN
+00B7;AI # MIDDLE DOT
+00B8;AI # CEDILLA
+00B9;AI # SUPERSCRIPT ONE
+00BA;AI # MASCULINE ORDINAL INDICATOR
+00BB;QU # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC;AI # VULGAR FRACTION ONE QUARTER
+00BD;AI # VULGAR FRACTION ONE HALF
+00BE;AI # VULGAR FRACTION THREE QUARTERS
+00BF;AI # INVERTED QUESTION MARK
+00C0;AL # LATIN CAPITAL LETTER A WITH GRAVE
+00C1;AL # LATIN CAPITAL LETTER A WITH ACUTE
+00C2;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3;AL # LATIN CAPITAL LETTER A WITH TILDE
+00C4;AL # LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5;AL # LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6;AI # LATIN CAPITAL LETTER AE
+00C7;AL # LATIN CAPITAL LETTER C WITH CEDILLA
+00C8;AL # LATIN CAPITAL LETTER E WITH GRAVE
+00C9;AL # LATIN CAPITAL LETTER E WITH ACUTE
+00CA;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB;AL # LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC;AL # LATIN CAPITAL LETTER I WITH GRAVE
+00CD;AL # LATIN CAPITAL LETTER I WITH ACUTE
+00CE;AL # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF;AL # LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0;AI # LATIN CAPITAL LETTER ETH
+00D1;AL # LATIN CAPITAL LETTER N WITH TILDE
+00D2;AL # LATIN CAPITAL LETTER O WITH GRAVE
+00D3;AL # LATIN CAPITAL LETTER O WITH ACUTE
+00D4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5;AL # LATIN CAPITAL LETTER O WITH TILDE
+00D6;AL # LATIN CAPITAL LETTER O WITH DIAERESIS
+00D7;AI # MULTIPLICATION SIGN
+00D8;AI # LATIN CAPITAL LETTER O WITH STROKE
+00D9;AL # LATIN CAPITAL LETTER U WITH GRAVE
+00DA;AL # LATIN CAPITAL LETTER U WITH ACUTE
+00DB;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC;AL # LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD;AL # LATIN CAPITAL LETTER Y WITH ACUTE
+00DE;AI # LATIN CAPITAL LETTER THORN
+00DF;AI # LATIN SMALL LETTER SHARP S
+00E0;AI # LATIN SMALL LETTER A WITH GRAVE
+00E1;AI # LATIN SMALL LETTER A WITH ACUTE
+00E2;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3;AL # LATIN SMALL LETTER A WITH TILDE
+00E4;AL # LATIN SMALL LETTER A WITH DIAERESIS
+00E5;AL # LATIN SMALL LETTER A WITH RING ABOVE
+00E6;AI # LATIN SMALL LETTER AE
+00E7;AL # LATIN SMALL LETTER C WITH CEDILLA
+00E8;AI # LATIN SMALL LETTER E WITH GRAVE
+00E9;AI # LATIN SMALL LETTER E WITH ACUTE
+00EA;AI # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB;AL # LATIN SMALL LETTER E WITH DIAERESIS
+00EC;AI # LATIN SMALL LETTER I WITH GRAVE
+00ED;AI # LATIN SMALL LETTER I WITH ACUTE
+00EE;AL # LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF;AL # LATIN SMALL LETTER I WITH DIAERESIS
+00F0;AI # LATIN SMALL LETTER ETH
+00F1;AL # LATIN SMALL LETTER N WITH TILDE
+00F2;AI # LATIN SMALL LETTER O WITH GRAVE
+00F3;AI # LATIN SMALL LETTER O WITH ACUTE
+00F4;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5;AL # LATIN SMALL LETTER O WITH TILDE
+00F6;AL # LATIN SMALL LETTER O WITH DIAERESIS
+00F7;AI # DIVISION SIGN
+00F8;AI # LATIN SMALL LETTER O WITH STROKE
+00F9;AI # LATIN SMALL LETTER U WITH GRAVE
+00FA;AI # LATIN SMALL LETTER U WITH ACUTE
+00FB;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC;AI # LATIN SMALL LETTER U WITH DIAERESIS
+00FD;AL # LATIN SMALL LETTER Y WITH ACUTE
+00FE;AI # LATIN SMALL LETTER THORN
+00FF;AL # LATIN SMALL LETTER Y WITH DIAERESIS
+0100;AL # LATIN CAPITAL LETTER A WITH MACRON
+0101;AI # LATIN SMALL LETTER A WITH MACRON
+0102;AL # LATIN CAPITAL LETTER A WITH BREVE
+0103;AL # LATIN SMALL LETTER A WITH BREVE
+0104;AL # LATIN CAPITAL LETTER A WITH OGONEK
+0105;AL # LATIN SMALL LETTER A WITH OGONEK
+0106;AL # LATIN CAPITAL LETTER C WITH ACUTE
+0107;AL # LATIN SMALL LETTER C WITH ACUTE
+0108;AL # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109;AL # LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A;AL # LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B;AL # LATIN SMALL LETTER C WITH DOT ABOVE
+010C;AL # LATIN CAPITAL LETTER C WITH CARON
+010D;AL # LATIN SMALL LETTER C WITH CARON
+010E;AL # LATIN CAPITAL LETTER D WITH CARON
+010F;AL # LATIN SMALL LETTER D WITH CARON
+0110;AL # LATIN CAPITAL LETTER D WITH STROKE
+0111;AI # LATIN SMALL LETTER D WITH STROKE
+0112;AL # LATIN CAPITAL LETTER E WITH MACRON
+0113;AI # LATIN SMALL LETTER E WITH MACRON
+0114;AL # LATIN CAPITAL LETTER E WITH BREVE
+0115;AL # LATIN SMALL LETTER E WITH BREVE
+0116;AL # LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117;AL # LATIN SMALL LETTER E WITH DOT ABOVE
+0118;AL # LATIN CAPITAL LETTER E WITH OGONEK
+0119;AL # LATIN SMALL LETTER E WITH OGONEK
+011A;AL # LATIN CAPITAL LETTER E WITH CARON
+011B;AI # LATIN SMALL LETTER E WITH CARON
+011C;AL # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D;AL # LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E;AL # LATIN CAPITAL LETTER G WITH BREVE
+011F;AL # LATIN SMALL LETTER G WITH BREVE
+0120;AL # LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121;AL # LATIN SMALL LETTER G WITH DOT ABOVE
+0122;AL # LATIN CAPITAL LETTER G WITH CEDILLA
+0123;AL # LATIN SMALL LETTER G WITH CEDILLA
+0124;AL # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125;AL # LATIN SMALL LETTER H WITH CIRCUMFLEX
+0126;AI # LATIN CAPITAL LETTER H WITH STROKE
+0127;AI # LATIN SMALL LETTER H WITH STROKE
+0128;AL # LATIN CAPITAL LETTER I WITH TILDE
+0129;AL # LATIN SMALL LETTER I WITH TILDE
+012A;AL # LATIN CAPITAL LETTER I WITH MACRON
+012B;AI # LATIN SMALL LETTER I WITH MACRON
+012C;AL # LATIN CAPITAL LETTER I WITH BREVE
+012D;AL # LATIN SMALL LETTER I WITH BREVE
+012E;AL # LATIN CAPITAL LETTER I WITH OGONEK
+012F;AL # LATIN SMALL LETTER I WITH OGONEK
+0130;AL # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0131;AI # LATIN SMALL LETTER DOTLESS I
+0132;AI # LATIN CAPITAL LIGATURE IJ
+0133;AI # LATIN SMALL LIGATURE IJ
+0134;AL # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135;AL # LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136;AL # LATIN CAPITAL LETTER K WITH CEDILLA
+0137;AL # LATIN SMALL LETTER K WITH CEDILLA
+0138;AI # LATIN SMALL LETTER KRA
+0139;AL # LATIN CAPITAL LETTER L WITH ACUTE
+013A;AL # LATIN SMALL LETTER L WITH ACUTE
+013B;AL # LATIN CAPITAL LETTER L WITH CEDILLA
+013C;AL # LATIN SMALL LETTER L WITH CEDILLA
+013D;AL # LATIN CAPITAL LETTER L WITH CARON
+013E;AL # LATIN SMALL LETTER L WITH CARON
+013F;AI # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140;AI # LATIN SMALL LETTER L WITH MIDDLE DOT
+0141;AI # LATIN CAPITAL LETTER L WITH STROKE
+0142;AI # LATIN SMALL LETTER L WITH STROKE
+0143;AL # LATIN CAPITAL LETTER N WITH ACUTE
+0144;AI # LATIN SMALL LETTER N WITH ACUTE
+0145;AL # LATIN CAPITAL LETTER N WITH CEDILLA
+0146;AL # LATIN SMALL LETTER N WITH CEDILLA
+0147;AL # LATIN CAPITAL LETTER N WITH CARON
+0148;AI # LATIN SMALL LETTER N WITH CARON
+0149;AI # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A;AI # LATIN CAPITAL LETTER ENG
+014B;AL # LATIN SMALL LETTER ENG
+014C;AL # LATIN CAPITAL LETTER O WITH MACRON
+014D;AI # LATIN SMALL LETTER O WITH MACRON
+014E;AL # LATIN CAPITAL LETTER O WITH BREVE
+014F;AL # LATIN SMALL LETTER O WITH BREVE
+0150;AL # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151;AL # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0152;AI # LATIN CAPITAL LIGATURE OE
+0153;AI # LATIN SMALL LIGATURE OE
+0154;AL # LATIN CAPITAL LETTER R WITH ACUTE
+0155;AL # LATIN SMALL LETTER R WITH ACUTE
+0156;AL # LATIN CAPITAL LETTER R WITH CEDILLA
+0157;AL # LATIN SMALL LETTER R WITH CEDILLA
+0158;AL # LATIN CAPITAL LETTER R WITH CARON
+0159;AL # LATIN SMALL LETTER R WITH CARON
+015A;AL # LATIN CAPITAL LETTER S WITH ACUTE
+015B;AL # LATIN SMALL LETTER S WITH ACUTE
+015C;AL # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D;AL # LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E;AL # LATIN CAPITAL LETTER S WITH CEDILLA
+015F;AL # LATIN SMALL LETTER S WITH CEDILLA
+0160;AL # LATIN CAPITAL LETTER S WITH CARON
+0161;AL # LATIN SMALL LETTER S WITH CARON
+0162;AL # LATIN CAPITAL LETTER T WITH CEDILLA
+0163;AL # LATIN SMALL LETTER T WITH CEDILLA
+0164;AL # LATIN CAPITAL LETTER T WITH CARON
+0165;AL # LATIN SMALL LETTER T WITH CARON
+0166;AI # LATIN CAPITAL LETTER T WITH STROKE
+0167;AI # LATIN SMALL LETTER T WITH STROKE
+0168;AL # LATIN CAPITAL LETTER U WITH TILDE
+0169;AL # LATIN SMALL LETTER U WITH TILDE
+016A;AL # LATIN CAPITAL LETTER U WITH MACRON
+016B;AI # LATIN SMALL LETTER U WITH MACRON
+016C;AL # LATIN CAPITAL LETTER U WITH BREVE
+016D;AL # LATIN SMALL LETTER U WITH BREVE
+016E;AL # LATIN CAPITAL LETTER U WITH RING ABOVE
+016F;AL # LATIN SMALL LETTER U WITH RING ABOVE
+0170;AL # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171;AL # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172;AL # LATIN CAPITAL LETTER U WITH OGONEK
+0173;AL # LATIN SMALL LETTER U WITH OGONEK
+0174;AL # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175;AL # LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176;AL # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177;AL # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178;AL # LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179;AL # LATIN CAPITAL LETTER Z WITH ACUTE
+017A;AL # LATIN SMALL LETTER Z WITH ACUTE
+017B;AL # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C;AL # LATIN SMALL LETTER Z WITH DOT ABOVE
+017D;AL # LATIN CAPITAL LETTER Z WITH CARON
+017E;AL # LATIN SMALL LETTER Z WITH CARON
+017F;AL # LATIN SMALL LETTER LONG S
+0180;AL # LATIN SMALL LETTER B WITH STROKE
+0181;AL # LATIN CAPITAL LETTER B WITH HOOK
+0182;AL # LATIN CAPITAL LETTER B WITH TOPBAR
+0183;AL # LATIN SMALL LETTER B WITH TOPBAR
+0184;AL # LATIN CAPITAL LETTER TONE SIX
+0185;AL # LATIN SMALL LETTER TONE SIX
+0186;AL # LATIN CAPITAL LETTER OPEN O
+0187;AL # LATIN CAPITAL LETTER C WITH HOOK
+0188;AL # LATIN SMALL LETTER C WITH HOOK
+0189;AL # LATIN CAPITAL LETTER AFRICAN D
+018A;AL # LATIN CAPITAL LETTER D WITH HOOK
+018B;AL # LATIN CAPITAL LETTER D WITH TOPBAR
+018C;AL # LATIN SMALL LETTER D WITH TOPBAR
+018D;AL # LATIN SMALL LETTER TURNED DELTA
+018E;AL # LATIN CAPITAL LETTER REVERSED E
+018F;AL # LATIN CAPITAL LETTER SCHWA
+0190;AL # LATIN CAPITAL LETTER OPEN E
+0191;AL # LATIN CAPITAL LETTER F WITH HOOK
+0192;AL # LATIN SMALL LETTER F WITH HOOK
+0193;AL # LATIN CAPITAL LETTER G WITH HOOK
+0194;AL # LATIN CAPITAL LETTER GAMMA
+0195;AL # LATIN SMALL LETTER HV
+0196;AL # LATIN CAPITAL LETTER IOTA
+0197;AL # LATIN CAPITAL LETTER I WITH STROKE
+0198;AL # LATIN CAPITAL LETTER K WITH HOOK
+0199;AL # LATIN SMALL LETTER K WITH HOOK
+019A;AL # LATIN SMALL LETTER L WITH BAR
+019B;AL # LATIN SMALL LETTER LAMBDA WITH STROKE
+019C;AL # LATIN CAPITAL LETTER TURNED M
+019D;AL # LATIN CAPITAL LETTER N WITH LEFT HOOK
+019E;AL # LATIN SMALL LETTER N WITH LONG RIGHT LEG
+019F;AL # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+01A0;AL # LATIN CAPITAL LETTER O WITH HORN
+01A1;AL # LATIN SMALL LETTER O WITH HORN
+01A2;AL # LATIN CAPITAL LETTER OI
+01A3;AL # LATIN SMALL LETTER OI
+01A4;AL # LATIN CAPITAL LETTER P WITH HOOK
+01A5;AL # LATIN SMALL LETTER P WITH HOOK
+01A6;AL # LATIN LETTER YR
+01A7;AL # LATIN CAPITAL LETTER TONE TWO
+01A8;AL # LATIN SMALL LETTER TONE TWO
+01A9;AL # LATIN CAPITAL LETTER ESH
+01AA;AL # LATIN LETTER REVERSED ESH LOOP
+01AB;AL # LATIN SMALL LETTER T WITH PALATAL HOOK
+01AC;AL # LATIN CAPITAL LETTER T WITH HOOK
+01AD;AL # LATIN SMALL LETTER T WITH HOOK
+01AE;AL # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+01AF;AL # LATIN CAPITAL LETTER U WITH HORN
+01B0;AL # LATIN SMALL LETTER U WITH HORN
+01B1;AL # LATIN CAPITAL LETTER UPSILON
+01B2;AL # LATIN CAPITAL LETTER V WITH HOOK
+01B3;AL # LATIN CAPITAL LETTER Y WITH HOOK
+01B4;AL # LATIN SMALL LETTER Y WITH HOOK
+01B5;AL # LATIN CAPITAL LETTER Z WITH STROKE
+01B6;AL # LATIN SMALL LETTER Z WITH STROKE
+01B7;AL # LATIN CAPITAL LETTER EZH
+01B8;AL # LATIN CAPITAL LETTER EZH REVERSED
+01B9;AL # LATIN SMALL LETTER EZH REVERSED
+01BA;AL # LATIN SMALL LETTER EZH WITH TAIL
+01BB;AL # LATIN LETTER TWO WITH STROKE
+01BC;AL # LATIN CAPITAL LETTER TONE FIVE
+01BD;AL # LATIN SMALL LETTER TONE FIVE
+01BE;AL # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+01BF;AL # LATIN LETTER WYNN
+01C0;AL # LATIN LETTER DENTAL CLICK
+01C1;AL # LATIN LETTER LATERAL CLICK
+01C2;AL # LATIN LETTER ALVEOLAR CLICK
+01C3;AL # LATIN LETTER RETROFLEX CLICK
+01C4;AL # LATIN CAPITAL LETTER DZ WITH CARON
+01C5;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C6;AL # LATIN SMALL LETTER DZ WITH CARON
+01C7;AL # LATIN CAPITAL LETTER LJ
+01C8;AL # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01C9;AL # LATIN SMALL LETTER LJ
+01CA;AL # LATIN CAPITAL LETTER NJ
+01CB;AL # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CC;AL # LATIN SMALL LETTER NJ
+01CD;AL # LATIN CAPITAL LETTER A WITH CARON
+01CE;AI # LATIN SMALL LETTER A WITH CARON
+01CF;AL # LATIN CAPITAL LETTER I WITH CARON
+01D0;AI # LATIN SMALL LETTER I WITH CARON
+01D1;AL # LATIN CAPITAL LETTER O WITH CARON
+01D2;AI # LATIN SMALL LETTER O WITH CARON
+01D3;AL # LATIN CAPITAL LETTER U WITH CARON
+01D4;AI # LATIN SMALL LETTER U WITH CARON
+01D5;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D6;AI # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D7;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D8;AI # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D9;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DA;AI # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DB;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DC;AI # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DD;AL # LATIN SMALL LETTER TURNED E
+01DE;AL # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01DF;AL # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E0;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E1;AL # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E2;AL # LATIN CAPITAL LETTER AE WITH MACRON
+01E3;AL # LATIN SMALL LETTER AE WITH MACRON
+01E4;AL # LATIN CAPITAL LETTER G WITH STROKE
+01E5;AL # LATIN SMALL LETTER G WITH STROKE
+01E6;AL # LATIN CAPITAL LETTER G WITH CARON
+01E7;AL # LATIN SMALL LETTER G WITH CARON
+01E8;AL # LATIN CAPITAL LETTER K WITH CARON
+01E9;AL # LATIN SMALL LETTER K WITH CARON
+01EA;AL # LATIN CAPITAL LETTER O WITH OGONEK
+01EB;AL # LATIN SMALL LETTER O WITH OGONEK
+01EC;AL # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01ED;AL # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EE;AL # LATIN CAPITAL LETTER EZH WITH CARON
+01EF;AL # LATIN SMALL LETTER EZH WITH CARON
+01F0;AL # LATIN SMALL LETTER J WITH CARON
+01F1;AL # LATIN CAPITAL LETTER DZ
+01F2;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F3;AL # LATIN SMALL LETTER DZ
+01F4;AL # LATIN CAPITAL LETTER G WITH ACUTE
+01F5;AL # LATIN SMALL LETTER G WITH ACUTE
+01F6;AL # LATIN CAPITAL LETTER HWAIR
+01F7;AL # LATIN CAPITAL LETTER WYNN
+01F8;AL # LATIN CAPITAL LETTER N WITH GRAVE
+01F9;AL # LATIN SMALL LETTER N WITH GRAVE
+01FA;AL # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FB;AL # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FC;AL # LATIN CAPITAL LETTER AE WITH ACUTE
+01FD;AL # LATIN SMALL LETTER AE WITH ACUTE
+01FE;AL # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01FF;AL # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0200;AL # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0201;AL # LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0202;AL # LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0203;AL # LATIN SMALL LETTER A WITH INVERTED BREVE
+0204;AL # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0205;AL # LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0206;AL # LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0207;AL # LATIN SMALL LETTER E WITH INVERTED BREVE
+0208;AL # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+0209;AL # LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020A;AL # LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020B;AL # LATIN SMALL LETTER I WITH INVERTED BREVE
+020C;AL # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020D;AL # LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020E;AL # LATIN CAPITAL LETTER O WITH INVERTED BREVE
+020F;AL # LATIN SMALL LETTER O WITH INVERTED BREVE
+0210;AL # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0211;AL # LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0212;AL # LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0213;AL # LATIN SMALL LETTER R WITH INVERTED BREVE
+0214;AL # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0215;AL # LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0216;AL # LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0217;AL # LATIN SMALL LETTER U WITH INVERTED BREVE
+0218;AL # LATIN CAPITAL LETTER S WITH COMMA BELOW
+0219;AL # LATIN SMALL LETTER S WITH COMMA BELOW
+021A;AL # LATIN CAPITAL LETTER T WITH COMMA BELOW
+021B;AL # LATIN SMALL LETTER T WITH COMMA BELOW
+021C;AL # LATIN CAPITAL LETTER YOGH
+021D;AL # LATIN SMALL LETTER YOGH
+021E;AL # LATIN CAPITAL LETTER H WITH CARON
+021F;AL # LATIN SMALL LETTER H WITH CARON
+0220;AL # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+0222;AL # LATIN CAPITAL LETTER OU
+0223;AL # LATIN SMALL LETTER OU
+0224;AL # LATIN CAPITAL LETTER Z WITH HOOK
+0225;AL # LATIN SMALL LETTER Z WITH HOOK
+0226;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE
+0227;AL # LATIN SMALL LETTER A WITH DOT ABOVE
+0228;AL # LATIN CAPITAL LETTER E WITH CEDILLA
+0229;AL # LATIN SMALL LETTER E WITH CEDILLA
+022A;AL # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022B;AL # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022C;AL # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022D;AL # LATIN SMALL LETTER O WITH TILDE AND MACRON
+022E;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE
+022F;AL # LATIN SMALL LETTER O WITH DOT ABOVE
+0230;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0231;AL # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0232;AL # LATIN CAPITAL LETTER Y WITH MACRON
+0233;AL # LATIN SMALL LETTER Y WITH MACRON
+0250;AL # LATIN SMALL LETTER TURNED A
+0251;AI # LATIN SMALL LETTER ALPHA
+0252;AL # LATIN SMALL LETTER TURNED ALPHA
+0253;AL # LATIN SMALL LETTER B WITH HOOK
+0254;AL # LATIN SMALL LETTER OPEN O
+0255;AL # LATIN SMALL LETTER C WITH CURL
+0256;AL # LATIN SMALL LETTER D WITH TAIL
+0257;AL # LATIN SMALL LETTER D WITH HOOK
+0258;AL # LATIN SMALL LETTER REVERSED E
+0259;AL # LATIN SMALL LETTER SCHWA
+025A;AL # LATIN SMALL LETTER SCHWA WITH HOOK
+025B;AL # LATIN SMALL LETTER OPEN E
+025C;AL # LATIN SMALL LETTER REVERSED OPEN E
+025D;AL # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+025E;AL # LATIN SMALL LETTER CLOSED REVERSED OPEN E
+025F;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE
+0260;AL # LATIN SMALL LETTER G WITH HOOK
+0261;AI # LATIN SMALL LETTER SCRIPT G
+0262;AL # LATIN LETTER SMALL CAPITAL G
+0263;AL # LATIN SMALL LETTER GAMMA
+0264;AL # LATIN SMALL LETTER RAMS HORN
+0265;AL # LATIN SMALL LETTER TURNED H
+0266;AL # LATIN SMALL LETTER H WITH HOOK
+0267;AL # LATIN SMALL LETTER HENG WITH HOOK
+0268;AL # LATIN SMALL LETTER I WITH STROKE
+0269;AL # LATIN SMALL LETTER IOTA
+026A;AL # LATIN LETTER SMALL CAPITAL I
+026B;AL # LATIN SMALL LETTER L WITH MIDDLE TILDE
+026C;AL # LATIN SMALL LETTER L WITH BELT
+026D;AL # LATIN SMALL LETTER L WITH RETROFLEX HOOK
+026E;AL # LATIN SMALL LETTER LEZH
+026F;AL # LATIN SMALL LETTER TURNED M
+0270;AL # LATIN SMALL LETTER TURNED M WITH LONG LEG
+0271;AL # LATIN SMALL LETTER M WITH HOOK
+0272;AL # LATIN SMALL LETTER N WITH LEFT HOOK
+0273;AL # LATIN SMALL LETTER N WITH RETROFLEX HOOK
+0274;AL # LATIN LETTER SMALL CAPITAL N
+0275;AL # LATIN SMALL LETTER BARRED O
+0276;AL # LATIN LETTER SMALL CAPITAL OE
+0277;AL # LATIN SMALL LETTER CLOSED OMEGA
+0278;AL # LATIN SMALL LETTER PHI
+0279;AL # LATIN SMALL LETTER TURNED R
+027A;AL # LATIN SMALL LETTER TURNED R WITH LONG LEG
+027B;AL # LATIN SMALL LETTER TURNED R WITH HOOK
+027C;AL # LATIN SMALL LETTER R WITH LONG LEG
+027D;AL # LATIN SMALL LETTER R WITH TAIL
+027E;AL # LATIN SMALL LETTER R WITH FISHHOOK
+027F;AL # LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+0280;AL # LATIN LETTER SMALL CAPITAL R
+0281;AL # LATIN LETTER SMALL CAPITAL INVERTED R
+0282;AL # LATIN SMALL LETTER S WITH HOOK
+0283;AL # LATIN SMALL LETTER ESH
+0284;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+0285;AL # LATIN SMALL LETTER SQUAT REVERSED ESH
+0286;AL # LATIN SMALL LETTER ESH WITH CURL
+0287;AL # LATIN SMALL LETTER TURNED T
+0288;AL # LATIN SMALL LETTER T WITH RETROFLEX HOOK
+0289;AL # LATIN SMALL LETTER U BAR
+028A;AL # LATIN SMALL LETTER UPSILON
+028B;AL # LATIN SMALL LETTER V WITH HOOK
+028C;AL # LATIN SMALL LETTER TURNED V
+028D;AL # LATIN SMALL LETTER TURNED W
+028E;AL # LATIN SMALL LETTER TURNED Y
+028F;AL # LATIN LETTER SMALL CAPITAL Y
+0290;AL # LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+0291;AL # LATIN SMALL LETTER Z WITH CURL
+0292;AL # LATIN SMALL LETTER EZH
+0293;AL # LATIN SMALL LETTER EZH WITH CURL
+0294;AL # LATIN LETTER GLOTTAL STOP
+0295;AL # LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+0296;AL # LATIN LETTER INVERTED GLOTTAL STOP
+0297;AL # LATIN LETTER STRETCHED C
+0298;AL # LATIN LETTER BILABIAL CLICK
+0299;AL # LATIN LETTER SMALL CAPITAL B
+029A;AL # LATIN SMALL LETTER CLOSED OPEN E
+029B;AL # LATIN LETTER SMALL CAPITAL G WITH HOOK
+029C;AL # LATIN LETTER SMALL CAPITAL H
+029D;AL # LATIN SMALL LETTER J WITH CROSSED-TAIL
+029E;AL # LATIN SMALL LETTER TURNED K
+029F;AL # LATIN LETTER SMALL CAPITAL L
+02A0;AL # LATIN SMALL LETTER Q WITH HOOK
+02A1;AL # LATIN LETTER GLOTTAL STOP WITH STROKE
+02A2;AL # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+02A3;AL # LATIN SMALL LETTER DZ DIGRAPH
+02A4;AL # LATIN SMALL LETTER DEZH DIGRAPH
+02A5;AL # LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+02A6;AL # LATIN SMALL LETTER TS DIGRAPH
+02A7;AL # LATIN SMALL LETTER TESH DIGRAPH
+02A8;AL # LATIN SMALL LETTER TC DIGRAPH WITH CURL
+02A9;AL # LATIN SMALL LETTER FENG DIGRAPH
+02AA;AL # LATIN SMALL LETTER LS DIGRAPH
+02AB;AL # LATIN SMALL LETTER LZ DIGRAPH
+02AC;AL # LATIN LETTER BILABIAL PERCUSSIVE
+02AD;AL # LATIN LETTER BIDENTAL PERCUSSIVE
+02B0;AL # MODIFIER LETTER SMALL H
+02B1;AL # MODIFIER LETTER SMALL H WITH HOOK
+02B2;AL # MODIFIER LETTER SMALL J
+02B3;AL # MODIFIER LETTER SMALL R
+02B4;AL # MODIFIER LETTER SMALL TURNED R
+02B5;AL # MODIFIER LETTER SMALL TURNED R WITH HOOK
+02B6;AL # MODIFIER LETTER SMALL CAPITAL INVERTED R
+02B7;AL # MODIFIER LETTER SMALL W
+02B8;AL # MODIFIER LETTER SMALL Y
+02B9;AL # MODIFIER LETTER PRIME
+02BA;AL # MODIFIER LETTER DOUBLE PRIME
+02BB;AL # MODIFIER LETTER TURNED COMMA
+02BC;AL # MODIFIER LETTER APOSTROPHE
+02BD;AL # MODIFIER LETTER REVERSED COMMA
+02BE;AL # MODIFIER LETTER RIGHT HALF RING
+02BF;AL # MODIFIER LETTER LEFT HALF RING
+02C0;AL # MODIFIER LETTER GLOTTAL STOP
+02C1;AL # MODIFIER LETTER REVERSED GLOTTAL STOP
+02C2;AL # MODIFIER LETTER LEFT ARROWHEAD
+02C3;AL # MODIFIER LETTER RIGHT ARROWHEAD
+02C4;AL # MODIFIER LETTER UP ARROWHEAD
+02C5;AL # MODIFIER LETTER DOWN ARROWHEAD
+02C6;AL # MODIFIER LETTER CIRCUMFLEX ACCENT
+02C7;AI # CARON
+02C8;BB # MODIFIER LETTER VERTICAL LINE
+02C9;AI # MODIFIER LETTER MACRON
+02CA;AI # MODIFIER LETTER ACUTE ACCENT
+02CB;AI # MODIFIER LETTER GRAVE ACCENT
+02CC;BB # MODIFIER LETTER LOW VERTICAL LINE
+02CD;AI # MODIFIER LETTER LOW MACRON
+02CE;AL # MODIFIER LETTER LOW GRAVE ACCENT
+02CF;AL # MODIFIER LETTER LOW ACUTE ACCENT
+02D0;AI # MODIFIER LETTER TRIANGULAR COLON
+02D1;AL # MODIFIER LETTER HALF TRIANGULAR COLON
+02D2;AL # MODIFIER LETTER CENTRED RIGHT HALF RING
+02D3;AL # MODIFIER LETTER CENTRED LEFT HALF RING
+02D4;AL # MODIFIER LETTER UP TACK
+02D5;AL # MODIFIER LETTER DOWN TACK
+02D6;AL # MODIFIER LETTER PLUS SIGN
+02D7;AL # MODIFIER LETTER MINUS SIGN
+02D8;AI # BREVE
+02D9;AI # DOT ABOVE
+02DA;AI # RING ABOVE
+02DB;AI # OGONEK
+02DC;AL # SMALL TILDE
+02DD;AI # DOUBLE ACUTE ACCENT
+02DE;AL # MODIFIER LETTER RHOTIC HOOK
+02DF;AL # MODIFIER LETTER CROSS ACCENT
+02E0;AL # MODIFIER LETTER SMALL GAMMA
+02E1;AL # MODIFIER LETTER SMALL L
+02E2;AL # MODIFIER LETTER SMALL S
+02E3;AL # MODIFIER LETTER SMALL X
+02E4;AL # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02E5;AL # MODIFIER LETTER EXTRA-HIGH TONE BAR
+02E6;AL # MODIFIER LETTER HIGH TONE BAR
+02E7;AL # MODIFIER LETTER MID TONE BAR
+02E8;AL # MODIFIER LETTER LOW TONE BAR
+02E9;AL # MODIFIER LETTER EXTRA-LOW TONE BAR
+02EA;AL # MODIFIER LETTER YIN DEPARTING TONE MARK
+02EB;AL # MODIFIER LETTER YANG DEPARTING TONE MARK
+02EC;AL # MODIFIER LETTER VOICING
+02ED;AL # MODIFIER LETTER UNASPIRATED
+02EE;AL # MODIFIER LETTER DOUBLE APOSTROPHE
+0300;CM # COMBINING GRAVE ACCENT
+0301;CM # COMBINING ACUTE ACCENT
+0302;CM # COMBINING CIRCUMFLEX ACCENT
+0303;CM # COMBINING TILDE
+0304;CM # COMBINING MACRON
+0305;CM # COMBINING OVERLINE
+0306;CM # COMBINING BREVE
+0307;CM # COMBINING DOT ABOVE
+0308;CM # COMBINING DIAERESIS
+0309;CM # COMBINING HOOK ABOVE
+030A;CM # COMBINING RING ABOVE
+030B;CM # COMBINING DOUBLE ACUTE ACCENT
+030C;CM # COMBINING CARON
+030D;CM # COMBINING VERTICAL LINE ABOVE
+030E;CM # COMBINING DOUBLE VERTICAL LINE ABOVE
+030F;CM # COMBINING DOUBLE GRAVE ACCENT
+0310;CM # COMBINING CANDRABINDU
+0311;CM # COMBINING INVERTED BREVE
+0312;CM # COMBINING TURNED COMMA ABOVE
+0313;CM # COMBINING COMMA ABOVE
+0314;CM # COMBINING REVERSED COMMA ABOVE
+0315;CM # COMBINING COMMA ABOVE RIGHT
+0316;CM # COMBINING GRAVE ACCENT BELOW
+0317;CM # COMBINING ACUTE ACCENT BELOW
+0318;CM # COMBINING LEFT TACK BELOW
+0319;CM # COMBINING RIGHT TACK BELOW
+031A;CM # COMBINING LEFT ANGLE ABOVE
+031B;CM # COMBINING HORN
+031C;CM # COMBINING LEFT HALF RING BELOW
+031D;CM # COMBINING UP TACK BELOW
+031E;CM # COMBINING DOWN TACK BELOW
+031F;CM # COMBINING PLUS SIGN BELOW
+0320;CM # COMBINING MINUS SIGN BELOW
+0321;CM # COMBINING PALATALIZED HOOK BELOW
+0322;CM # COMBINING RETROFLEX HOOK BELOW
+0323;CM # COMBINING DOT BELOW
+0324;CM # COMBINING DIAERESIS BELOW
+0325;CM # COMBINING RING BELOW
+0326;CM # COMBINING COMMA BELOW
+0327;CM # COMBINING CEDILLA
+0328;CM # COMBINING OGONEK
+0329;CM # COMBINING VERTICAL LINE BELOW
+032A;CM # COMBINING BRIDGE BELOW
+032B;CM # COMBINING INVERTED DOUBLE ARCH BELOW
+032C;CM # COMBINING CARON BELOW
+032D;CM # COMBINING CIRCUMFLEX ACCENT BELOW
+032E;CM # COMBINING BREVE BELOW
+032F;CM # COMBINING INVERTED BREVE BELOW
+0330;CM # COMBINING TILDE BELOW
+0331;CM # COMBINING MACRON BELOW
+0332;CM # COMBINING LOW LINE
+0333;CM # COMBINING DOUBLE LOW LINE
+0334;CM # COMBINING TILDE OVERLAY
+0335;CM # COMBINING SHORT STROKE OVERLAY
+0336;CM # COMBINING LONG STROKE OVERLAY
+0337;CM # COMBINING SHORT SOLIDUS OVERLAY
+0338;CM # COMBINING LONG SOLIDUS OVERLAY
+0339;CM # COMBINING RIGHT HALF RING BELOW
+033A;CM # COMBINING INVERTED BRIDGE BELOW
+033B;CM # COMBINING SQUARE BELOW
+033C;CM # COMBINING SEAGULL BELOW
+033D;CM # COMBINING X ABOVE
+033E;CM # COMBINING VERTICAL TILDE
+033F;CM # COMBINING DOUBLE OVERLINE
+0340;CM # COMBINING GRAVE TONE MARK
+0341;CM # COMBINING ACUTE TONE MARK
+0342;CM # COMBINING GREEK PERISPOMENI
+0343;CM # COMBINING GREEK KORONIS
+0344;CM # COMBINING GREEK DIALYTIKA TONOS
+0345;CM # COMBINING GREEK YPOGEGRAMMENI
+0346;CM # COMBINING BRIDGE ABOVE
+0347;CM # COMBINING EQUALS SIGN BELOW
+0348;CM # COMBINING DOUBLE VERTICAL LINE BELOW
+0349;CM # COMBINING LEFT ANGLE BELOW
+034A;CM # COMBINING NOT TILDE ABOVE
+034B;CM # COMBINING HOMOTHETIC ABOVE
+034C;CM # COMBINING ALMOST EQUAL TO ABOVE
+034D;CM # COMBINING LEFT RIGHT ARROW BELOW
+034E;CM # COMBINING UPWARDS ARROW BELOW
+034F;CM # COMBINING GRAPHEME JOINER
+0360;CM # COMBINING DOUBLE TILDE
+0361;CM # COMBINING DOUBLE INVERTED BREVE
+0362;CM # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+0363;CM # COMBINING LATIN SMALL LETTER A
+0364;CM # COMBINING LATIN SMALL LETTER E
+0365;CM # COMBINING LATIN SMALL LETTER I
+0366;CM # COMBINING LATIN SMALL LETTER O
+0367;CM # COMBINING LATIN SMALL LETTER U
+0368;CM # COMBINING LATIN SMALL LETTER C
+0369;CM # COMBINING LATIN SMALL LETTER D
+036A;CM # COMBINING LATIN SMALL LETTER H
+036B;CM # COMBINING LATIN SMALL LETTER M
+036C;CM # COMBINING LATIN SMALL LETTER R
+036D;CM # COMBINING LATIN SMALL LETTER T
+036E;CM # COMBINING LATIN SMALL LETTER V
+036F;CM # COMBINING LATIN SMALL LETTER X
+0374;AL # GREEK NUMERAL SIGN
+0375;AL # GREEK LOWER NUMERAL SIGN
+037A;AL # GREEK YPOGEGRAMMENI
+037E;AL # GREEK QUESTION MARK
+0384;AL # GREEK TONOS
+0385;AL # GREEK DIALYTIKA TONOS
+0386;AL # GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387;AL # GREEK ANO TELEIA
+0388;AL # GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389;AL # GREEK CAPITAL LETTER ETA WITH TONOS
+038A;AL # GREEK CAPITAL LETTER IOTA WITH TONOS
+038C;AL # GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E;AL # GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F;AL # GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391;AI # GREEK CAPITAL LETTER ALPHA
+0392;AI # GREEK CAPITAL LETTER BETA
+0393;AI # GREEK CAPITAL LETTER GAMMA
+0394;AI # GREEK CAPITAL LETTER DELTA
+0395;AI # GREEK CAPITAL LETTER EPSILON
+0396;AI # GREEK CAPITAL LETTER ZETA
+0397;AI # GREEK CAPITAL LETTER ETA
+0398;AI # GREEK CAPITAL LETTER THETA
+0399;AI # GREEK CAPITAL LETTER IOTA
+039A;AI # GREEK CAPITAL LETTER KAPPA
+039B;AI # GREEK CAPITAL LETTER LAMDA
+039C;AI # GREEK CAPITAL LETTER MU
+039D;AI # GREEK CAPITAL LETTER NU
+039E;AI # GREEK CAPITAL LETTER XI
+039F;AI # GREEK CAPITAL LETTER OMICRON
+03A0;AI # GREEK CAPITAL LETTER PI
+03A1;AI # GREEK CAPITAL LETTER RHO
+03A3;AI # GREEK CAPITAL LETTER SIGMA
+03A4;AI # GREEK CAPITAL LETTER TAU
+03A5;AI # GREEK CAPITAL LETTER UPSILON
+03A6;AI # GREEK CAPITAL LETTER PHI
+03A7;AI # GREEK CAPITAL LETTER CHI
+03A8;AI # GREEK CAPITAL LETTER PSI
+03A9;AI # GREEK CAPITAL LETTER OMEGA
+03AA;AL # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB;AL # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03AC;AL # GREEK SMALL LETTER ALPHA WITH TONOS
+03AD;AL # GREEK SMALL LETTER EPSILON WITH TONOS
+03AE;AL # GREEK SMALL LETTER ETA WITH TONOS
+03AF;AL # GREEK SMALL LETTER IOTA WITH TONOS
+03B0;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03B1;AI # GREEK SMALL LETTER ALPHA
+03B2;AI # GREEK SMALL LETTER BETA
+03B3;AI # GREEK SMALL LETTER GAMMA
+03B4;AI # GREEK SMALL LETTER DELTA
+03B5;AI # GREEK SMALL LETTER EPSILON
+03B6;AI # GREEK SMALL LETTER ZETA
+03B7;AI # GREEK SMALL LETTER ETA
+03B8;AI # GREEK SMALL LETTER THETA
+03B9;AI # GREEK SMALL LETTER IOTA
+03BA;AI # GREEK SMALL LETTER KAPPA
+03BB;AI # GREEK SMALL LETTER LAMDA
+03BC;AI # GREEK SMALL LETTER MU
+03BD;AI # GREEK SMALL LETTER NU
+03BE;AI # GREEK SMALL LETTER XI
+03BF;AI # GREEK SMALL LETTER OMICRON
+03C0;AI # GREEK SMALL LETTER PI
+03C1;AI # GREEK SMALL LETTER RHO
+03C2;AL # GREEK SMALL LETTER FINAL SIGMA
+03C3;AI # GREEK SMALL LETTER SIGMA
+03C4;AI # GREEK SMALL LETTER TAU
+03C5;AI # GREEK SMALL LETTER UPSILON
+03C6;AI # GREEK SMALL LETTER PHI
+03C7;AI # GREEK SMALL LETTER CHI
+03C8;AI # GREEK SMALL LETTER PSI
+03C9;AI # GREEK SMALL LETTER OMEGA
+03CA;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03CB;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03CC;AL # GREEK SMALL LETTER OMICRON WITH TONOS
+03CD;AL # GREEK SMALL LETTER UPSILON WITH TONOS
+03CE;AL # GREEK SMALL LETTER OMEGA WITH TONOS
+03D0;AL # GREEK BETA SYMBOL
+03D1;AL # GREEK THETA SYMBOL
+03D2;AL # GREEK UPSILON WITH HOOK SYMBOL
+03D3;AL # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4;AL # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D5;AL # GREEK PHI SYMBOL
+03D6;AL # GREEK PI SYMBOL
+03D7;AL # GREEK KAI SYMBOL
+03D8;AL # GREEK LETTER ARCHAIC KOPPA
+03D9;AL # GREEK SMALL LETTER ARCHAIC KOPPA
+03DA;AL # GREEK LETTER STIGMA
+03DB;AL # GREEK SMALL LETTER STIGMA
+03DC;AL # GREEK LETTER DIGAMMA
+03DD;AL # GREEK SMALL LETTER DIGAMMA
+03DE;AL # GREEK LETTER KOPPA
+03DF;AL # GREEK SMALL LETTER KOPPA
+03E0;AL # GREEK LETTER SAMPI
+03E1;AL # GREEK SMALL LETTER SAMPI
+03E2;AL # COPTIC CAPITAL LETTER SHEI
+03E3;AL # COPTIC SMALL LETTER SHEI
+03E4;AL # COPTIC CAPITAL LETTER FEI
+03E5;AL # COPTIC SMALL LETTER FEI
+03E6;AL # COPTIC CAPITAL LETTER KHEI
+03E7;AL # COPTIC SMALL LETTER KHEI
+03E8;AL # COPTIC CAPITAL LETTER HORI
+03E9;AL # COPTIC SMALL LETTER HORI
+03EA;AL # COPTIC CAPITAL LETTER GANGIA
+03EB;AL # COPTIC SMALL LETTER GANGIA
+03EC;AL # COPTIC CAPITAL LETTER SHIMA
+03ED;AL # COPTIC SMALL LETTER SHIMA
+03EE;AL # COPTIC CAPITAL LETTER DEI
+03EF;AL # COPTIC SMALL LETTER DEI
+03F0;AL # GREEK KAPPA SYMBOL
+03F1;AL # GREEK RHO SYMBOL
+03F2;AL # GREEK LUNATE SIGMA SYMBOL
+03F3;AL # GREEK LETTER YOT
+03F4;AL # GREEK CAPITAL THETA SYMBOL
+03F5;AL # GREEK LUNATE EPSILON SYMBOL
+03F6;AL # GREEK REVERSED LUNATE EPSILON SYMBOL
+0400;AL # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401;AI # CYRILLIC CAPITAL LETTER IO
+0402;AL # CYRILLIC CAPITAL LETTER DJE
+0403;AL # CYRILLIC CAPITAL LETTER GJE
+0404;AL # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405;AL # CYRILLIC CAPITAL LETTER DZE
+0406;AL # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407;AL # CYRILLIC CAPITAL LETTER YI
+0408;AL # CYRILLIC CAPITAL LETTER JE
+0409;AL # CYRILLIC CAPITAL LETTER LJE
+040A;AL # CYRILLIC CAPITAL LETTER NJE
+040B;AL # CYRILLIC CAPITAL LETTER TSHE
+040C;AL # CYRILLIC CAPITAL LETTER KJE
+040D;AL # CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E;AL # CYRILLIC CAPITAL LETTER SHORT U
+040F;AL # CYRILLIC CAPITAL LETTER DZHE
+0410;AI # CYRILLIC CAPITAL LETTER A
+0411;AI # CYRILLIC CAPITAL LETTER BE
+0412;AI # CYRILLIC CAPITAL LETTER VE
+0413;AI # CYRILLIC CAPITAL LETTER GHE
+0414;AI # CYRILLIC CAPITAL LETTER DE
+0415;AI # CYRILLIC CAPITAL LETTER IE
+0416;AI # CYRILLIC CAPITAL LETTER ZHE
+0417;AI # CYRILLIC CAPITAL LETTER ZE
+0418;AI # CYRILLIC CAPITAL LETTER I
+0419;AI # CYRILLIC CAPITAL LETTER SHORT I
+041A;AI # CYRILLIC CAPITAL LETTER KA
+041B;AI # CYRILLIC CAPITAL LETTER EL
+041C;AI # CYRILLIC CAPITAL LETTER EM
+041D;AI # CYRILLIC CAPITAL LETTER EN
+041E;AI # CYRILLIC CAPITAL LETTER O
+041F;AI # CYRILLIC CAPITAL LETTER PE
+0420;AI # CYRILLIC CAPITAL LETTER ER
+0421;AI # CYRILLIC CAPITAL LETTER ES
+0422;AI # CYRILLIC CAPITAL LETTER TE
+0423;AI # CYRILLIC CAPITAL LETTER U
+0424;AI # CYRILLIC CAPITAL LETTER EF
+0425;AI # CYRILLIC CAPITAL LETTER HA
+0426;AI # CYRILLIC CAPITAL LETTER TSE
+0427;AI # CYRILLIC CAPITAL LETTER CHE
+0428;AI # CYRILLIC CAPITAL LETTER SHA
+0429;AI # CYRILLIC CAPITAL LETTER SHCHA
+042A;AI # CYRILLIC CAPITAL LETTER HARD SIGN
+042B;AI # CYRILLIC CAPITAL LETTER YERU
+042C;AI # CYRILLIC CAPITAL LETTER SOFT SIGN
+042D;AI # CYRILLIC CAPITAL LETTER E
+042E;AI # CYRILLIC CAPITAL LETTER YU
+042F;AI # CYRILLIC CAPITAL LETTER YA
+0430;AI # CYRILLIC SMALL LETTER A
+0431;AI # CYRILLIC SMALL LETTER BE
+0432;AI # CYRILLIC SMALL LETTER VE
+0433;AI # CYRILLIC SMALL LETTER GHE
+0434;AI # CYRILLIC SMALL LETTER DE
+0435;AI # CYRILLIC SMALL LETTER IE
+0436;AI # CYRILLIC SMALL LETTER ZHE
+0437;AI # CYRILLIC SMALL LETTER ZE
+0438;AI # CYRILLIC SMALL LETTER I
+0439;AI # CYRILLIC SMALL LETTER SHORT I
+043A;AI # CYRILLIC SMALL LETTER KA
+043B;AI # CYRILLIC SMALL LETTER EL
+043C;AI # CYRILLIC SMALL LETTER EM
+043D;AI # CYRILLIC SMALL LETTER EN
+043E;AI # CYRILLIC SMALL LETTER O
+043F;AI # CYRILLIC SMALL LETTER PE
+0440;AI # CYRILLIC SMALL LETTER ER
+0441;AI # CYRILLIC SMALL LETTER ES
+0442;AI # CYRILLIC SMALL LETTER TE
+0443;AI # CYRILLIC SMALL LETTER U
+0444;AI # CYRILLIC SMALL LETTER EF
+0445;AI # CYRILLIC SMALL LETTER HA
+0446;AI # CYRILLIC SMALL LETTER TSE
+0447;AI # CYRILLIC SMALL LETTER CHE
+0448;AI # CYRILLIC SMALL LETTER SHA
+0449;AI # CYRILLIC SMALL LETTER SHCHA
+044A;AI # CYRILLIC SMALL LETTER HARD SIGN
+044B;AI # CYRILLIC SMALL LETTER YERU
+044C;AI # CYRILLIC SMALL LETTER SOFT SIGN
+044D;AI # CYRILLIC SMALL LETTER E
+044E;AI # CYRILLIC SMALL LETTER YU
+044F;AI # CYRILLIC SMALL LETTER YA
+0450;AL # CYRILLIC SMALL LETTER IE WITH GRAVE
+0451;AI # CYRILLIC SMALL LETTER IO
+0452;AL # CYRILLIC SMALL LETTER DJE
+0453;AL # CYRILLIC SMALL LETTER GJE
+0454;AL # CYRILLIC SMALL LETTER UKRAINIAN IE
+0455;AL # CYRILLIC SMALL LETTER DZE
+0456;AL # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457;AL # CYRILLIC SMALL LETTER YI
+0458;AL # CYRILLIC SMALL LETTER JE
+0459;AL # CYRILLIC SMALL LETTER LJE
+045A;AL # CYRILLIC SMALL LETTER NJE
+045B;AL # CYRILLIC SMALL LETTER TSHE
+045C;AL # CYRILLIC SMALL LETTER KJE
+045D;AL # CYRILLIC SMALL LETTER I WITH GRAVE
+045E;AL # CYRILLIC SMALL LETTER SHORT U
+045F;AL # CYRILLIC SMALL LETTER DZHE
+0460;AL # CYRILLIC CAPITAL LETTER OMEGA
+0461;AL # CYRILLIC SMALL LETTER OMEGA
+0462;AL # CYRILLIC CAPITAL LETTER YAT
+0463;AL # CYRILLIC SMALL LETTER YAT
+0464;AL # CYRILLIC CAPITAL LETTER IOTIFIED E
+0465;AL # CYRILLIC SMALL LETTER IOTIFIED E
+0466;AL # CYRILLIC CAPITAL LETTER LITTLE YUS
+0467;AL # CYRILLIC SMALL LETTER LITTLE YUS
+0468;AL # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+0469;AL # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046A;AL # CYRILLIC CAPITAL LETTER BIG YUS
+046B;AL # CYRILLIC SMALL LETTER BIG YUS
+046C;AL # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046D;AL # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046E;AL # CYRILLIC CAPITAL LETTER KSI
+046F;AL # CYRILLIC SMALL LETTER KSI
+0470;AL # CYRILLIC CAPITAL LETTER PSI
+0471;AL # CYRILLIC SMALL LETTER PSI
+0472;AL # CYRILLIC CAPITAL LETTER FITA
+0473;AL # CYRILLIC SMALL LETTER FITA
+0474;AL # CYRILLIC CAPITAL LETTER IZHITSA
+0475;AL # CYRILLIC SMALL LETTER IZHITSA
+0476;AL # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0477;AL # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478;AL # CYRILLIC CAPITAL LETTER UK
+0479;AL # CYRILLIC SMALL LETTER UK
+047A;AL # CYRILLIC CAPITAL LETTER ROUND OMEGA
+047B;AL # CYRILLIC SMALL LETTER ROUND OMEGA
+047C;AL # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047D;AL # CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047E;AL # CYRILLIC CAPITAL LETTER OT
+047F;AL # CYRILLIC SMALL LETTER OT
+0480;AL # CYRILLIC CAPITAL LETTER KOPPA
+0481;AL # CYRILLIC SMALL LETTER KOPPA
+0482;AL # CYRILLIC THOUSANDS SIGN
+0483;CM # COMBINING CYRILLIC TITLO
+0484;CM # COMBINING CYRILLIC PALATALIZATION
+0485;CM # COMBINING CYRILLIC DASIA PNEUMATA
+0486;CM # COMBINING CYRILLIC PSILI PNEUMATA
+0488;CM # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
+0489;CM # COMBINING CYRILLIC MILLIONS SIGN
+048A;AL # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+048B;AL # CYRILLIC SMALL LETTER SHORT I WITH TAIL
+048C;AL # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048D;AL # CYRILLIC SMALL LETTER SEMISOFT SIGN
+048E;AL # CYRILLIC CAPITAL LETTER ER WITH TICK
+048F;AL # CYRILLIC SMALL LETTER ER WITH TICK
+0490;AL # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0491;AL # CYRILLIC SMALL LETTER GHE WITH UPTURN
+0492;AL # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0493;AL # CYRILLIC SMALL LETTER GHE WITH STROKE
+0494;AL # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0495;AL # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0496;AL # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0497;AL # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0498;AL # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0499;AL # CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049A;AL # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049B;AL # CYRILLIC SMALL LETTER KA WITH DESCENDER
+049C;AL # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049D;AL # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049E;AL # CYRILLIC CAPITAL LETTER KA WITH STROKE
+049F;AL # CYRILLIC SMALL LETTER KA WITH STROKE
+04A0;AL # CYRILLIC CAPITAL LETTER BASHKIR KA
+04A1;AL # CYRILLIC SMALL LETTER BASHKIR KA
+04A2;AL # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A3;AL # CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A4;AL # CYRILLIC CAPITAL LIGATURE EN GHE
+04A5;AL # CYRILLIC SMALL LIGATURE EN GHE
+04A6;AL # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A7;AL # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A8;AL # CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04A9;AL # CYRILLIC SMALL LETTER ABKHASIAN HA
+04AA;AL # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AB;AL # CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AC;AL # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AD;AL # CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AE;AL # CYRILLIC CAPITAL LETTER STRAIGHT U
+04AF;AL # CYRILLIC SMALL LETTER STRAIGHT U
+04B0;AL # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B1;AL # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B2;AL # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B3;AL # CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B4;AL # CYRILLIC CAPITAL LIGATURE TE TSE
+04B5;AL # CYRILLIC SMALL LIGATURE TE TSE
+04B6;AL # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B7;AL # CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B8;AL # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04B9;AL # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04BA;AL # CYRILLIC CAPITAL LETTER SHHA
+04BB;AL # CYRILLIC SMALL LETTER SHHA
+04BC;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BD;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BE;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04BF;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0;AL # CYRILLIC LETTER PALOCHKA
+04C1;AL # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C2;AL # CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C3;AL # CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C4;AL # CYRILLIC SMALL LETTER KA WITH HOOK
+04C5;AL # CYRILLIC CAPITAL LETTER EL WITH TAIL
+04C6;AL # CYRILLIC SMALL LETTER EL WITH TAIL
+04C7;AL # CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C8;AL # CYRILLIC SMALL LETTER EN WITH HOOK
+04C9;AL # CYRILLIC CAPITAL LETTER EN WITH TAIL
+04CA;AL # CYRILLIC SMALL LETTER EN WITH TAIL
+04CB;AL # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CC;AL # CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04CD;AL # CYRILLIC CAPITAL LETTER EM WITH TAIL
+04CE;AL # CYRILLIC SMALL LETTER EM WITH TAIL
+04D0;AL # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D1;AL # CYRILLIC SMALL LETTER A WITH BREVE
+04D2;AL # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D3;AL # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D4;AL # CYRILLIC CAPITAL LIGATURE A IE
+04D5;AL # CYRILLIC SMALL LIGATURE A IE
+04D6;AL # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D7;AL # CYRILLIC SMALL LETTER IE WITH BREVE
+04D8;AL # CYRILLIC CAPITAL LETTER SCHWA
+04D9;AL # CYRILLIC SMALL LETTER SCHWA
+04DA;AL # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DB;AL # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DC;AL # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DD;AL # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DE;AL # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04DF;AL # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E0;AL # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E1;AL # CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E2;AL # CYRILLIC CAPITAL LETTER I WITH MACRON
+04E3;AL # CYRILLIC SMALL LETTER I WITH MACRON
+04E4;AL # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E5;AL # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E6;AL # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E7;AL # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E8;AL # CYRILLIC CAPITAL LETTER BARRED O
+04E9;AL # CYRILLIC SMALL LETTER BARRED O
+04EA;AL # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EB;AL # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EC;AL # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04ED;AL # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EE;AL # CYRILLIC CAPITAL LETTER U WITH MACRON
+04EF;AL # CYRILLIC SMALL LETTER U WITH MACRON
+04F0;AL # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F1;AL # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F2;AL # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F3;AL # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F4;AL # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F5;AL # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8;AL # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04F9;AL # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0500;AL # CYRILLIC CAPITAL LETTER KOMI DE
+0501;AL # CYRILLIC SMALL LETTER KOMI DE
+0502;AL # CYRILLIC CAPITAL LETTER KOMI DJE
+0503;AL # CYRILLIC SMALL LETTER KOMI DJE
+0504;AL # CYRILLIC CAPITAL LETTER KOMI ZJE
+0505;AL # CYRILLIC SMALL LETTER KOMI ZJE
+0506;AL # CYRILLIC CAPITAL LETTER KOMI DZJE
+0507;AL # CYRILLIC SMALL LETTER KOMI DZJE
+0508;AL # CYRILLIC CAPITAL LETTER KOMI LJE
+0509;AL # CYRILLIC SMALL LETTER KOMI LJE
+050A;AL # CYRILLIC CAPITAL LETTER KOMI NJE
+050B;AL # CYRILLIC SMALL LETTER KOMI NJE
+050C;AL # CYRILLIC CAPITAL LETTER KOMI SJE
+050D;AL # CYRILLIC SMALL LETTER KOMI SJE
+050E;AL # CYRILLIC CAPITAL LETTER KOMI TJE
+050F;AL # CYRILLIC SMALL LETTER KOMI TJE
+0531;AL # ARMENIAN CAPITAL LETTER AYB
+0532;AL # ARMENIAN CAPITAL LETTER BEN
+0533;AL # ARMENIAN CAPITAL LETTER GIM
+0534;AL # ARMENIAN CAPITAL LETTER DA
+0535;AL # ARMENIAN CAPITAL LETTER ECH
+0536;AL # ARMENIAN CAPITAL LETTER ZA
+0537;AL # ARMENIAN CAPITAL LETTER EH
+0538;AL # ARMENIAN CAPITAL LETTER ET
+0539;AL # ARMENIAN CAPITAL LETTER TO
+053A;AL # ARMENIAN CAPITAL LETTER ZHE
+053B;AL # ARMENIAN CAPITAL LETTER INI
+053C;AL # ARMENIAN CAPITAL LETTER LIWN
+053D;AL # ARMENIAN CAPITAL LETTER XEH
+053E;AL # ARMENIAN CAPITAL LETTER CA
+053F;AL # ARMENIAN CAPITAL LETTER KEN
+0540;AL # ARMENIAN CAPITAL LETTER HO
+0541;AL # ARMENIAN CAPITAL LETTER JA
+0542;AL # ARMENIAN CAPITAL LETTER GHAD
+0543;AL # ARMENIAN CAPITAL LETTER CHEH
+0544;AL # ARMENIAN CAPITAL LETTER MEN
+0545;AL # ARMENIAN CAPITAL LETTER YI
+0546;AL # ARMENIAN CAPITAL LETTER NOW
+0547;AL # ARMENIAN CAPITAL LETTER SHA
+0548;AL # ARMENIAN CAPITAL LETTER VO
+0549;AL # ARMENIAN CAPITAL LETTER CHA
+054A;AL # ARMENIAN CAPITAL LETTER PEH
+054B;AL # ARMENIAN CAPITAL LETTER JHEH
+054C;AL # ARMENIAN CAPITAL LETTER RA
+054D;AL # ARMENIAN CAPITAL LETTER SEH
+054E;AL # ARMENIAN CAPITAL LETTER VEW
+054F;AL # ARMENIAN CAPITAL LETTER TIWN
+0550;AL # ARMENIAN CAPITAL LETTER REH
+0551;AL # ARMENIAN CAPITAL LETTER CO
+0552;AL # ARMENIAN CAPITAL LETTER YIWN
+0553;AL # ARMENIAN CAPITAL LETTER PIWR
+0554;AL # ARMENIAN CAPITAL LETTER KEH
+0555;AL # ARMENIAN CAPITAL LETTER OH
+0556;AL # ARMENIAN CAPITAL LETTER FEH
+0559;AL # ARMENIAN MODIFIER LETTER LEFT HALF RING
+055A;AL # ARMENIAN APOSTROPHE
+055B;AL # ARMENIAN EMPHASIS MARK
+055C;AL # ARMENIAN EXCLAMATION MARK
+055D;AL # ARMENIAN COMMA
+055E;AL # ARMENIAN QUESTION MARK
+055F;AL # ARMENIAN ABBREVIATION MARK
+0561;AL # ARMENIAN SMALL LETTER AYB
+0562;AL # ARMENIAN SMALL LETTER BEN
+0563;AL # ARMENIAN SMALL LETTER GIM
+0564;AL # ARMENIAN SMALL LETTER DA
+0565;AL # ARMENIAN SMALL LETTER ECH
+0566;AL # ARMENIAN SMALL LETTER ZA
+0567;AL # ARMENIAN SMALL LETTER EH
+0568;AL # ARMENIAN SMALL LETTER ET
+0569;AL # ARMENIAN SMALL LETTER TO
+056A;AL # ARMENIAN SMALL LETTER ZHE
+056B;AL # ARMENIAN SMALL LETTER INI
+056C;AL # ARMENIAN SMALL LETTER LIWN
+056D;AL # ARMENIAN SMALL LETTER XEH
+056E;AL # ARMENIAN SMALL LETTER CA
+056F;AL # ARMENIAN SMALL LETTER KEN
+0570;AL # ARMENIAN SMALL LETTER HO
+0571;AL # ARMENIAN SMALL LETTER JA
+0572;AL # ARMENIAN SMALL LETTER GHAD
+0573;AL # ARMENIAN SMALL LETTER CHEH
+0574;AL # ARMENIAN SMALL LETTER MEN
+0575;AL # ARMENIAN SMALL LETTER YI
+0576;AL # ARMENIAN SMALL LETTER NOW
+0577;AL # ARMENIAN SMALL LETTER SHA
+0578;AL # ARMENIAN SMALL LETTER VO
+0579;AL # ARMENIAN SMALL LETTER CHA
+057A;AL # ARMENIAN SMALL LETTER PEH
+057B;AL # ARMENIAN SMALL LETTER JHEH
+057C;AL # ARMENIAN SMALL LETTER RA
+057D;AL # ARMENIAN SMALL LETTER SEH
+057E;AL # ARMENIAN SMALL LETTER VEW
+057F;AL # ARMENIAN SMALL LETTER TIWN
+0580;AL # ARMENIAN SMALL LETTER REH
+0581;AL # ARMENIAN SMALL LETTER CO
+0582;AL # ARMENIAN SMALL LETTER YIWN
+0583;AL # ARMENIAN SMALL LETTER PIWR
+0584;AL # ARMENIAN SMALL LETTER KEH
+0585;AL # ARMENIAN SMALL LETTER OH
+0586;AL # ARMENIAN SMALL LETTER FEH
+0587;AL # ARMENIAN SMALL LIGATURE ECH YIWN
+0589;IS # ARMENIAN FULL STOP
+058A;BA # ARMENIAN HYPHEN
+0591;CM # HEBREW ACCENT ETNAHTA
+0592;CM # HEBREW ACCENT SEGOL
+0593;CM # HEBREW ACCENT SHALSHELET
+0594;CM # HEBREW ACCENT ZAQEF QATAN
+0595;CM # HEBREW ACCENT ZAQEF GADOL
+0596;CM # HEBREW ACCENT TIPEHA
+0597;CM # HEBREW ACCENT REVIA
+0598;CM # HEBREW ACCENT ZARQA
+0599;CM # HEBREW ACCENT PASHTA
+059A;CM # HEBREW ACCENT YETIV
+059B;CM # HEBREW ACCENT TEVIR
+059C;CM # HEBREW ACCENT GERESH
+059D;CM # HEBREW ACCENT GERESH MUQDAM
+059E;CM # HEBREW ACCENT GERSHAYIM
+059F;CM # HEBREW ACCENT QARNEY PARA
+05A0;CM # HEBREW ACCENT TELISHA GEDOLA
+05A1;CM # HEBREW ACCENT PAZER
+05A3;CM # HEBREW ACCENT MUNAH
+05A4;CM # HEBREW ACCENT MAHAPAKH
+05A5;CM # HEBREW ACCENT MERKHA
+05A6;CM # HEBREW ACCENT MERKHA KEFULA
+05A7;CM # HEBREW ACCENT DARGA
+05A8;CM # HEBREW ACCENT QADMA
+05A9;CM # HEBREW ACCENT TELISHA QETANA
+05AA;CM # HEBREW ACCENT YERAH BEN YOMO
+05AB;CM # HEBREW ACCENT OLE
+05AC;CM # HEBREW ACCENT ILUY
+05AD;CM # HEBREW ACCENT DEHI
+05AE;CM # HEBREW ACCENT ZINOR
+05AF;CM # HEBREW MARK MASORA CIRCLE
+05B0;CM # HEBREW POINT SHEVA
+05B1;CM # HEBREW POINT HATAF SEGOL
+05B2;CM # HEBREW POINT HATAF PATAH
+05B3;CM # HEBREW POINT HATAF QAMATS
+05B4;CM # HEBREW POINT HIRIQ
+05B5;CM # HEBREW POINT TSERE
+05B6;CM # HEBREW POINT SEGOL
+05B7;CM # HEBREW POINT PATAH
+05B8;CM # HEBREW POINT QAMATS
+05B9;CM # HEBREW POINT HOLAM
+05BB;CM # HEBREW POINT QUBUTS
+05BC;CM # HEBREW POINT DAGESH OR MAPIQ
+05BD;CM # HEBREW POINT METEG
+05BE;AL # HEBREW PUNCTUATION MAQAF
+05BF;CM # HEBREW POINT RAFE
+05C0;AL # HEBREW PUNCTUATION PASEQ
+05C1;CM # HEBREW POINT SHIN DOT
+05C2;CM # HEBREW POINT SIN DOT
+05C3;AL # HEBREW PUNCTUATION SOF PASUQ
+05C4;CM # HEBREW MARK UPPER DOT
+05D0;AL # HEBREW LETTER ALEF
+05D1;AL # HEBREW LETTER BET
+05D2;AL # HEBREW LETTER GIMEL
+05D3;AL # HEBREW LETTER DALET
+05D4;AL # HEBREW LETTER HE
+05D5;AL # HEBREW LETTER VAV
+05D6;AL # HEBREW LETTER ZAYIN
+05D7;AL # HEBREW LETTER HET
+05D8;AL # HEBREW LETTER TET
+05D9;AL # HEBREW LETTER YOD
+05DA;AL # HEBREW LETTER FINAL KAF
+05DB;AL # HEBREW LETTER KAF
+05DC;AL # HEBREW LETTER LAMED
+05DD;AL # HEBREW LETTER FINAL MEM
+05DE;AL # HEBREW LETTER MEM
+05DF;AL # HEBREW LETTER FINAL NUN
+05E0;AL # HEBREW LETTER NUN
+05E1;AL # HEBREW LETTER SAMEKH
+05E2;AL # HEBREW LETTER AYIN
+05E3;AL # HEBREW LETTER FINAL PE
+05E4;AL # HEBREW LETTER PE
+05E5;AL # HEBREW LETTER FINAL TSADI
+05E6;AL # HEBREW LETTER TSADI
+05E7;AL # HEBREW LETTER QOF
+05E8;AL # HEBREW LETTER RESH
+05E9;AL # HEBREW LETTER SHIN
+05EA;AL # HEBREW LETTER TAV
+05F0;AL # HEBREW LIGATURE YIDDISH DOUBLE VAV
+05F1;AL # HEBREW LIGATURE YIDDISH VAV YOD
+05F2;AL # HEBREW LIGATURE YIDDISH DOUBLE YOD
+05F3;AL # HEBREW PUNCTUATION GERESH
+05F4;AL # HEBREW PUNCTUATION GERSHAYIM
+060C;AL # ARABIC COMMA
+061B;AL # ARABIC SEMICOLON
+061F;AL # ARABIC QUESTION MARK
+0621;AL # ARABIC LETTER HAMZA
+0622;AL # ARABIC LETTER ALEF WITH MADDA ABOVE
+0623;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0624;AL # ARABIC LETTER WAW WITH HAMZA ABOVE
+0625;AL # ARABIC LETTER ALEF WITH HAMZA BELOW
+0626;AL # ARABIC LETTER YEH WITH HAMZA ABOVE
+0627;AL # ARABIC LETTER ALEF
+0628;AL # ARABIC LETTER BEH
+0629;AL # ARABIC LETTER TEH MARBUTA
+062A;AL # ARABIC LETTER TEH
+062B;AL # ARABIC LETTER THEH
+062C;AL # ARABIC LETTER JEEM
+062D;AL # ARABIC LETTER HAH
+062E;AL # ARABIC LETTER KHAH
+062F;AL # ARABIC LETTER DAL
+0630;AL # ARABIC LETTER THAL
+0631;AL # ARABIC LETTER REH
+0632;AL # ARABIC LETTER ZAIN
+0633;AL # ARABIC LETTER SEEN
+0634;AL # ARABIC LETTER SHEEN
+0635;AL # ARABIC LETTER SAD
+0636;AL # ARABIC LETTER DAD
+0637;AL # ARABIC LETTER TAH
+0638;AL # ARABIC LETTER ZAH
+0639;AL # ARABIC LETTER AIN
+063A;AL # ARABIC LETTER GHAIN
+0640;AL # ARABIC TATWEEL
+0641;AL # ARABIC LETTER FEH
+0642;AL # ARABIC LETTER QAF
+0643;AL # ARABIC LETTER KAF
+0644;AL # ARABIC LETTER LAM
+0645;AL # ARABIC LETTER MEEM
+0646;AL # ARABIC LETTER NOON
+0647;AL # ARABIC LETTER HEH
+0648;AL # ARABIC LETTER WAW
+0649;AL # ARABIC LETTER ALEF MAKSURA
+064A;AL # ARABIC LETTER YEH
+064B;CM # ARABIC FATHATAN
+064C;CM # ARABIC DAMMATAN
+064D;CM # ARABIC KASRATAN
+064E;CM # ARABIC FATHA
+064F;CM # ARABIC DAMMA
+0650;CM # ARABIC KASRA
+0651;CM # ARABIC SHADDA
+0652;CM # ARABIC SUKUN
+0653;CM # ARABIC MADDAH ABOVE
+0654;CM # ARABIC HAMZA ABOVE
+0655;CM # ARABIC HAMZA BELOW
+0660;NU # ARABIC-INDIC DIGIT ZERO
+0661;NU # ARABIC-INDIC DIGIT ONE
+0662;NU # ARABIC-INDIC DIGIT TWO
+0663;NU # ARABIC-INDIC DIGIT THREE
+0664;NU # ARABIC-INDIC DIGIT FOUR
+0665;NU # ARABIC-INDIC DIGIT FIVE
+0666;NU # ARABIC-INDIC DIGIT SIX
+0667;NU # ARABIC-INDIC DIGIT SEVEN
+0668;NU # ARABIC-INDIC DIGIT EIGHT
+0669;NU # ARABIC-INDIC DIGIT NINE
+066A;AL # ARABIC PERCENT SIGN
+066B;AL # ARABIC DECIMAL SEPARATOR
+066C;AL # ARABIC THOUSANDS SEPARATOR
+066D;AL # ARABIC FIVE POINTED STAR
+066E;AL # ARABIC LETTER DOTLESS BEH
+066F;AL # ARABIC LETTER DOTLESS QAF
+0670;CM # ARABIC LETTER SUPERSCRIPT ALEF
+0671;AL # ARABIC LETTER ALEF WASLA
+0672;AL # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0673;AL # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0674;AL # ARABIC LETTER HIGH HAMZA
+0675;AL # ARABIC LETTER HIGH HAMZA ALEF
+0676;AL # ARABIC LETTER HIGH HAMZA WAW
+0677;AL # ARABIC LETTER U WITH HAMZA ABOVE
+0678;AL # ARABIC LETTER HIGH HAMZA YEH
+0679;AL # ARABIC LETTER TTEH
+067A;AL # ARABIC LETTER TTEHEH
+067B;AL # ARABIC LETTER BEEH
+067C;AL # ARABIC LETTER TEH WITH RING
+067D;AL # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
+067E;AL # ARABIC LETTER PEH
+067F;AL # ARABIC LETTER TEHEH
+0680;AL # ARABIC LETTER BEHEH
+0681;AL # ARABIC LETTER HAH WITH HAMZA ABOVE
+0682;AL # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
+0683;AL # ARABIC LETTER NYEH
+0684;AL # ARABIC LETTER DYEH
+0685;AL # ARABIC LETTER HAH WITH THREE DOTS ABOVE
+0686;AL # ARABIC LETTER TCHEH
+0687;AL # ARABIC LETTER TCHEHEH
+0688;AL # ARABIC LETTER DDAL
+0689;AL # ARABIC LETTER DAL WITH RING
+068A;AL # ARABIC LETTER DAL WITH DOT BELOW
+068B;AL # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
+068C;AL # ARABIC LETTER DAHAL
+068D;AL # ARABIC LETTER DDAHAL
+068E;AL # ARABIC LETTER DUL
+068F;AL # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
+0690;AL # ARABIC LETTER DAL WITH FOUR DOTS ABOVE
+0691;AL # ARABIC LETTER RREH
+0692;AL # ARABIC LETTER REH WITH SMALL V
+0693;AL # ARABIC LETTER REH WITH RING
+0694;AL # ARABIC LETTER REH WITH DOT BELOW
+0695;AL # ARABIC LETTER REH WITH SMALL V BELOW
+0696;AL # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
+0697;AL # ARABIC LETTER REH WITH TWO DOTS ABOVE
+0698;AL # ARABIC LETTER JEH
+0699;AL # ARABIC LETTER REH WITH FOUR DOTS ABOVE
+069A;AL # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
+069B;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW
+069C;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
+069D;AL # ARABIC LETTER SAD WITH TWO DOTS BELOW
+069E;AL # ARABIC LETTER SAD WITH THREE DOTS ABOVE
+069F;AL # ARABIC LETTER TAH WITH THREE DOTS ABOVE
+06A0;AL # ARABIC LETTER AIN WITH THREE DOTS ABOVE
+06A1;AL # ARABIC LETTER DOTLESS FEH
+06A2;AL # ARABIC LETTER FEH WITH DOT MOVED BELOW
+06A3;AL # ARABIC LETTER FEH WITH DOT BELOW
+06A4;AL # ARABIC LETTER VEH
+06A5;AL # ARABIC LETTER FEH WITH THREE DOTS BELOW
+06A6;AL # ARABIC LETTER PEHEH
+06A7;AL # ARABIC LETTER QAF WITH DOT ABOVE
+06A8;AL # ARABIC LETTER QAF WITH THREE DOTS ABOVE
+06A9;AL # ARABIC LETTER KEHEH
+06AA;AL # ARABIC LETTER SWASH KAF
+06AB;AL # ARABIC LETTER KAF WITH RING
+06AC;AL # ARABIC LETTER KAF WITH DOT ABOVE
+06AD;AL # ARABIC LETTER NG
+06AE;AL # ARABIC LETTER KAF WITH THREE DOTS BELOW
+06AF;AL # ARABIC LETTER GAF
+06B0;AL # ARABIC LETTER GAF WITH RING
+06B1;AL # ARABIC LETTER NGOEH
+06B2;AL # ARABIC LETTER GAF WITH TWO DOTS BELOW
+06B3;AL # ARABIC LETTER GUEH
+06B4;AL # ARABIC LETTER GAF WITH THREE DOTS ABOVE
+06B5;AL # ARABIC LETTER LAM WITH SMALL V
+06B6;AL # ARABIC LETTER LAM WITH DOT ABOVE
+06B7;AL # ARABIC LETTER LAM WITH THREE DOTS ABOVE
+06B8;AL # ARABIC LETTER LAM WITH THREE DOTS BELOW
+06B9;AL # ARABIC LETTER NOON WITH DOT BELOW
+06BA;AL # ARABIC LETTER NOON GHUNNA
+06BB;AL # ARABIC LETTER RNOON
+06BC;AL # ARABIC LETTER NOON WITH RING
+06BD;AL # ARABIC LETTER NOON WITH THREE DOTS ABOVE
+06BE;AL # ARABIC LETTER HEH DOACHASHMEE
+06BF;AL # ARABIC LETTER TCHEH WITH DOT ABOVE
+06C0;AL # ARABIC LETTER HEH WITH YEH ABOVE
+06C1;AL # ARABIC LETTER HEH GOAL
+06C2;AL # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06C3;AL # ARABIC LETTER TEH MARBUTA GOAL
+06C4;AL # ARABIC LETTER WAW WITH RING
+06C5;AL # ARABIC LETTER KIRGHIZ OE
+06C6;AL # ARABIC LETTER OE
+06C7;AL # ARABIC LETTER U
+06C8;AL # ARABIC LETTER YU
+06C9;AL # ARABIC LETTER KIRGHIZ YU
+06CA;AL # ARABIC LETTER WAW WITH TWO DOTS ABOVE
+06CB;AL # ARABIC LETTER VE
+06CC;AL # ARABIC LETTER FARSI YEH
+06CD;AL # ARABIC LETTER YEH WITH TAIL
+06CE;AL # ARABIC LETTER YEH WITH SMALL V
+06CF;AL # ARABIC LETTER WAW WITH DOT ABOVE
+06D0;AL # ARABIC LETTER E
+06D1;AL # ARABIC LETTER YEH WITH THREE DOTS BELOW
+06D2;AL # ARABIC LETTER YEH BARREE
+06D3;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D4;AL # ARABIC FULL STOP
+06D5;AL # ARABIC LETTER AE
+06D6;CM # ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
+06D7;CM # ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
+06D8;CM # ARABIC SMALL HIGH MEEM INITIAL FORM
+06D9;CM # ARABIC SMALL HIGH LAM ALEF
+06DA;CM # ARABIC SMALL HIGH JEEM
+06DB;CM # ARABIC SMALL HIGH THREE DOTS
+06DC;CM # ARABIC SMALL HIGH SEEN
+06DD;CM # ARABIC END OF AYAH
+06DE;CM # ARABIC START OF RUB EL HIZB
+06DF;CM # ARABIC SMALL HIGH ROUNDED ZERO
+06E0;CM # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
+06E1;CM # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+06E2;CM # ARABIC SMALL HIGH MEEM ISOLATED FORM
+06E3;CM # ARABIC SMALL LOW SEEN
+06E4;CM # ARABIC SMALL HIGH MADDA
+06E5;AL # ARABIC SMALL WAW
+06E6;AL # ARABIC SMALL YEH
+06E7;CM # ARABIC SMALL HIGH YEH
+06E8;CM # ARABIC SMALL HIGH NOON
+06E9;AL # ARABIC PLACE OF SAJDAH
+06EA;CM # ARABIC EMPTY CENTRE LOW STOP
+06EB;CM # ARABIC EMPTY CENTRE HIGH STOP
+06EC;CM # ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
+06ED;CM # ARABIC SMALL LOW MEEM
+06F0;NU # EXTENDED ARABIC-INDIC DIGIT ZERO
+06F1;NU # EXTENDED ARABIC-INDIC DIGIT ONE
+06F2;NU # EXTENDED ARABIC-INDIC DIGIT TWO
+06F3;NU # EXTENDED ARABIC-INDIC DIGIT THREE
+06F4;NU # EXTENDED ARABIC-INDIC DIGIT FOUR
+06F5;NU # EXTENDED ARABIC-INDIC DIGIT FIVE
+06F6;NU # EXTENDED ARABIC-INDIC DIGIT SIX
+06F7;NU # EXTENDED ARABIC-INDIC DIGIT SEVEN
+06F8;NU # EXTENDED ARABIC-INDIC DIGIT EIGHT
+06F9;NU # EXTENDED ARABIC-INDIC DIGIT NINE
+06FA;AL # ARABIC LETTER SHEEN WITH DOT BELOW
+06FB;AL # ARABIC LETTER DAD WITH DOT BELOW
+06FC;AL # ARABIC LETTER GHAIN WITH DOT BELOW
+06FD;AL # ARABIC SIGN SINDHI AMPERSAND
+06FE;AL # ARABIC SIGN SINDHI POSTPOSITION MEN
+0700;AL # SYRIAC END OF PARAGRAPH
+0701;AL # SYRIAC SUPRALINEAR FULL STOP
+0702;AL # SYRIAC SUBLINEAR FULL STOP
+0703;AL # SYRIAC SUPRALINEAR COLON
+0704;AL # SYRIAC SUBLINEAR COLON
+0705;AL # SYRIAC HORIZONTAL COLON
+0706;AL # SYRIAC COLON SKEWED LEFT
+0707;AL # SYRIAC COLON SKEWED RIGHT
+0708;AL # SYRIAC SUPRALINEAR COLON SKEWED LEFT
+0709;AL # SYRIAC SUBLINEAR COLON SKEWED RIGHT
+070A;AL # SYRIAC CONTRACTION
+070B;AL # SYRIAC HARKLEAN OBELUS
+070C;AL # SYRIAC HARKLEAN METOBELUS
+070D;AL # SYRIAC HARKLEAN ASTERISCUS
+070F;CM # SYRIAC ABBREVIATION MARK
+0710;AL # SYRIAC LETTER ALAPH
+0711;CM # SYRIAC LETTER SUPERSCRIPT ALAPH
+0712;AL # SYRIAC LETTER BETH
+0713;AL # SYRIAC LETTER GAMAL
+0714;AL # SYRIAC LETTER GAMAL GARSHUNI
+0715;AL # SYRIAC LETTER DALATH
+0716;AL # SYRIAC LETTER DOTLESS DALATH RISH
+0717;AL # SYRIAC LETTER HE
+0718;AL # SYRIAC LETTER WAW
+0719;AL # SYRIAC LETTER ZAIN
+071A;AL # SYRIAC LETTER HETH
+071B;AL # SYRIAC LETTER TETH
+071C;AL # SYRIAC LETTER TETH GARSHUNI
+071D;AL # SYRIAC LETTER YUDH
+071E;AL # SYRIAC LETTER YUDH HE
+071F;AL # SYRIAC LETTER KAPH
+0720;AL # SYRIAC LETTER LAMADH
+0721;AL # SYRIAC LETTER MIM
+0722;AL # SYRIAC LETTER NUN
+0723;AL # SYRIAC LETTER SEMKATH
+0724;AL # SYRIAC LETTER FINAL SEMKATH
+0725;AL # SYRIAC LETTER E
+0726;AL # SYRIAC LETTER PE
+0727;AL # SYRIAC LETTER REVERSED PE
+0728;AL # SYRIAC LETTER SADHE
+0729;AL # SYRIAC LETTER QAPH
+072A;AL # SYRIAC LETTER RISH
+072B;AL # SYRIAC LETTER SHIN
+072C;AL # SYRIAC LETTER TAW
+0730;CM # SYRIAC PTHAHA ABOVE
+0731;CM # SYRIAC PTHAHA BELOW
+0732;CM # SYRIAC PTHAHA DOTTED
+0733;CM # SYRIAC ZQAPHA ABOVE
+0734;CM # SYRIAC ZQAPHA BELOW
+0735;CM # SYRIAC ZQAPHA DOTTED
+0736;CM # SYRIAC RBASA ABOVE
+0737;CM # SYRIAC RBASA BELOW
+0738;CM # SYRIAC DOTTED ZLAMA HORIZONTAL
+0739;CM # SYRIAC DOTTED ZLAMA ANGULAR
+073A;CM # SYRIAC HBASA ABOVE
+073B;CM # SYRIAC HBASA BELOW
+073C;CM # SYRIAC HBASA-ESASA DOTTED
+073D;CM # SYRIAC ESASA ABOVE
+073E;CM # SYRIAC ESASA BELOW
+073F;CM # SYRIAC RWAHA
+0740;CM # SYRIAC FEMININE DOT
+0741;CM # SYRIAC QUSHSHAYA
+0742;CM # SYRIAC RUKKAKHA
+0743;CM # SYRIAC TWO VERTICAL DOTS ABOVE
+0744;CM # SYRIAC TWO VERTICAL DOTS BELOW
+0745;CM # SYRIAC THREE DOTS ABOVE
+0746;CM # SYRIAC THREE DOTS BELOW
+0747;CM # SYRIAC OBLIQUE LINE ABOVE
+0748;CM # SYRIAC OBLIQUE LINE BELOW
+0749;CM # SYRIAC MUSIC
+074A;CM # SYRIAC BARREKH
+0780;AL # THAANA LETTER HAA
+0781;AL # THAANA LETTER SHAVIYANI
+0782;AL # THAANA LETTER NOONU
+0783;AL # THAANA LETTER RAA
+0784;AL # THAANA LETTER BAA
+0785;AL # THAANA LETTER LHAVIYANI
+0786;AL # THAANA LETTER KAAFU
+0787;AL # THAANA LETTER ALIFU
+0788;AL # THAANA LETTER VAAVU
+0789;AL # THAANA LETTER MEEMU
+078A;AL # THAANA LETTER FAAFU
+078B;AL # THAANA LETTER DHAALU
+078C;AL # THAANA LETTER THAA
+078D;AL # THAANA LETTER LAAMU
+078E;AL # THAANA LETTER GAAFU
+078F;AL # THAANA LETTER GNAVIYANI
+0790;AL # THAANA LETTER SEENU
+0791;AL # THAANA LETTER DAVIYANI
+0792;AL # THAANA LETTER ZAVIYANI
+0793;AL # THAANA LETTER TAVIYANI
+0794;AL # THAANA LETTER YAA
+0795;AL # THAANA LETTER PAVIYANI
+0796;AL # THAANA LETTER JAVIYANI
+0797;AL # THAANA LETTER CHAVIYANI
+0798;AL # THAANA LETTER TTAA
+0799;AL # THAANA LETTER HHAA
+079A;AL # THAANA LETTER KHAA
+079B;AL # THAANA LETTER THAALU
+079C;AL # THAANA LETTER ZAA
+079D;AL # THAANA LETTER SHEENU
+079E;AL # THAANA LETTER SAADHU
+079F;AL # THAANA LETTER DAADHU
+07A0;AL # THAANA LETTER TO
+07A1;AL # THAANA LETTER ZO
+07A2;AL # THAANA LETTER AINU
+07A3;AL # THAANA LETTER GHAINU
+07A4;AL # THAANA LETTER QAAFU
+07A5;AL # THAANA LETTER WAAVU
+07A6;CM # THAANA ABAFILI
+07A7;CM # THAANA AABAAFILI
+07A8;CM # THAANA IBIFILI
+07A9;CM # THAANA EEBEEFILI
+07AA;CM # THAANA UBUFILI
+07AB;CM # THAANA OOBOOFILI
+07AC;CM # THAANA EBEFILI
+07AD;CM # THAANA EYBEYFILI
+07AE;CM # THAANA OBOFILI
+07AF;CM # THAANA OABOAFILI
+07B0;CM # THAANA SUKUN
+07B1;AL # THAANA LETTER NAA
+0901;CM # DEVANAGARI SIGN CANDRABINDU
+0902;CM # DEVANAGARI SIGN ANUSVARA
+0903;CM # DEVANAGARI SIGN VISARGA
+0905;AL # DEVANAGARI LETTER A
+0906;AL # DEVANAGARI LETTER AA
+0907;AL # DEVANAGARI LETTER I
+0908;AL # DEVANAGARI LETTER II
+0909;AL # DEVANAGARI LETTER U
+090A;AL # DEVANAGARI LETTER UU
+090B;AL # DEVANAGARI LETTER VOCALIC R
+090C;AL # DEVANAGARI LETTER VOCALIC L
+090D;AL # DEVANAGARI LETTER CANDRA E
+090E;AL # DEVANAGARI LETTER SHORT E
+090F;AL # DEVANAGARI LETTER E
+0910;AL # DEVANAGARI LETTER AI
+0911;AL # DEVANAGARI LETTER CANDRA O
+0912;AL # DEVANAGARI LETTER SHORT O
+0913;AL # DEVANAGARI LETTER O
+0914;AL # DEVANAGARI LETTER AU
+0915;AL # DEVANAGARI LETTER KA
+0916;AL # DEVANAGARI LETTER KHA
+0917;AL # DEVANAGARI LETTER GA
+0918;AL # DEVANAGARI LETTER GHA
+0919;AL # DEVANAGARI LETTER NGA
+091A;AL # DEVANAGARI LETTER CA
+091B;AL # DEVANAGARI LETTER CHA
+091C;AL # DEVANAGARI LETTER JA
+091D;AL # DEVANAGARI LETTER JHA
+091E;AL # DEVANAGARI LETTER NYA
+091F;AL # DEVANAGARI LETTER TTA
+0920;AL # DEVANAGARI LETTER TTHA
+0921;AL # DEVANAGARI LETTER DDA
+0922;AL # DEVANAGARI LETTER DDHA
+0923;AL # DEVANAGARI LETTER NNA
+0924;AL # DEVANAGARI LETTER TA
+0925;AL # DEVANAGARI LETTER THA
+0926;AL # DEVANAGARI LETTER DA
+0927;AL # DEVANAGARI LETTER DHA
+0928;AL # DEVANAGARI LETTER NA
+0929;AL # DEVANAGARI LETTER NNNA
+092A;AL # DEVANAGARI LETTER PA
+092B;AL # DEVANAGARI LETTER PHA
+092C;AL # DEVANAGARI LETTER BA
+092D;AL # DEVANAGARI LETTER BHA
+092E;AL # DEVANAGARI LETTER MA
+092F;AL # DEVANAGARI LETTER YA
+0930;AL # DEVANAGARI LETTER RA
+0931;AL # DEVANAGARI LETTER RRA
+0932;AL # DEVANAGARI LETTER LA
+0933;AL # DEVANAGARI LETTER LLA
+0934;AL # DEVANAGARI LETTER LLLA
+0935;AL # DEVANAGARI LETTER VA
+0936;AL # DEVANAGARI LETTER SHA
+0937;AL # DEVANAGARI LETTER SSA
+0938;AL # DEVANAGARI LETTER SA
+0939;AL # DEVANAGARI LETTER HA
+093C;CM # DEVANAGARI SIGN NUKTA
+093D;AL # DEVANAGARI SIGN AVAGRAHA
+093E;CM # DEVANAGARI VOWEL SIGN AA
+093F;CM # DEVANAGARI VOWEL SIGN I
+0940;CM # DEVANAGARI VOWEL SIGN II
+0941;CM # DEVANAGARI VOWEL SIGN U
+0942;CM # DEVANAGARI VOWEL SIGN UU
+0943;CM # DEVANAGARI VOWEL SIGN VOCALIC R
+0944;CM # DEVANAGARI VOWEL SIGN VOCALIC RR
+0945;CM # DEVANAGARI VOWEL SIGN CANDRA E
+0946;CM # DEVANAGARI VOWEL SIGN SHORT E
+0947;CM # DEVANAGARI VOWEL SIGN E
+0948;CM # DEVANAGARI VOWEL SIGN AI
+0949;CM # DEVANAGARI VOWEL SIGN CANDRA O
+094A;CM # DEVANAGARI VOWEL SIGN SHORT O
+094B;CM # DEVANAGARI VOWEL SIGN O
+094C;CM # DEVANAGARI VOWEL SIGN AU
+094D;CM # DEVANAGARI SIGN VIRAMA
+0950;AL # DEVANAGARI OM
+0951;CM # DEVANAGARI STRESS SIGN UDATTA
+0952;CM # DEVANAGARI STRESS SIGN ANUDATTA
+0953;CM # DEVANAGARI GRAVE ACCENT
+0954;CM # DEVANAGARI ACUTE ACCENT
+0958;AL # DEVANAGARI LETTER QA
+0959;AL # DEVANAGARI LETTER KHHA
+095A;AL # DEVANAGARI LETTER GHHA
+095B;AL # DEVANAGARI LETTER ZA
+095C;AL # DEVANAGARI LETTER DDDHA
+095D;AL # DEVANAGARI LETTER RHA
+095E;AL # DEVANAGARI LETTER FA
+095F;AL # DEVANAGARI LETTER YYA
+0960;AL # DEVANAGARI LETTER VOCALIC RR
+0961;AL # DEVANAGARI LETTER VOCALIC LL
+0962;CM # DEVANAGARI VOWEL SIGN VOCALIC L
+0963;CM # DEVANAGARI VOWEL SIGN VOCALIC LL
+0964;AL # DEVANAGARI DANDA
+0965;AL # DEVANAGARI DOUBLE DANDA
+0966;NU # DEVANAGARI DIGIT ZERO
+0967;NU # DEVANAGARI DIGIT ONE
+0968;NU # DEVANAGARI DIGIT TWO
+0969;NU # DEVANAGARI DIGIT THREE
+096A;NU # DEVANAGARI DIGIT FOUR
+096B;NU # DEVANAGARI DIGIT FIVE
+096C;NU # DEVANAGARI DIGIT SIX
+096D;NU # DEVANAGARI DIGIT SEVEN
+096E;NU # DEVANAGARI DIGIT EIGHT
+096F;NU # DEVANAGARI DIGIT NINE
+0970;AL # DEVANAGARI ABBREVIATION SIGN
+0981;CM # BENGALI SIGN CANDRABINDU
+0982;CM # BENGALI SIGN ANUSVARA
+0983;CM # BENGALI SIGN VISARGA
+0985;AL # BENGALI LETTER A
+0986;AL # BENGALI LETTER AA
+0987;AL # BENGALI LETTER I
+0988;AL # BENGALI LETTER II
+0989;AL # BENGALI LETTER U
+098A;AL # BENGALI LETTER UU
+098B;AL # BENGALI LETTER VOCALIC R
+098C;AL # BENGALI LETTER VOCALIC L
+098F;AL # BENGALI LETTER E
+0990;AL # BENGALI LETTER AI
+0993;AL # BENGALI LETTER O
+0994;AL # BENGALI LETTER AU
+0995;AL # BENGALI LETTER KA
+0996;AL # BENGALI LETTER KHA
+0997;AL # BENGALI LETTER GA
+0998;AL # BENGALI LETTER GHA
+0999;AL # BENGALI LETTER NGA
+099A;AL # BENGALI LETTER CA
+099B;AL # BENGALI LETTER CHA
+099C;AL # BENGALI LETTER JA
+099D;AL # BENGALI LETTER JHA
+099E;AL # BENGALI LETTER NYA
+099F;AL # BENGALI LETTER TTA
+09A0;AL # BENGALI LETTER TTHA
+09A1;AL # BENGALI LETTER DDA
+09A2;AL # BENGALI LETTER DDHA
+09A3;AL # BENGALI LETTER NNA
+09A4;AL # BENGALI LETTER TA
+09A5;AL # BENGALI LETTER THA
+09A6;AL # BENGALI LETTER DA
+09A7;AL # BENGALI LETTER DHA
+09A8;AL # BENGALI LETTER NA
+09AA;AL # BENGALI LETTER PA
+09AB;AL # BENGALI LETTER PHA
+09AC;AL # BENGALI LETTER BA
+09AD;AL # BENGALI LETTER BHA
+09AE;AL # BENGALI LETTER MA
+09AF;AL # BENGALI LETTER YA
+09B0;AL # BENGALI LETTER RA
+09B2;AL # BENGALI LETTER LA
+09B6;AL # BENGALI LETTER SHA
+09B7;AL # BENGALI LETTER SSA
+09B8;AL # BENGALI LETTER SA
+09B9;AL # BENGALI LETTER HA
+09BC;CM # BENGALI SIGN NUKTA
+09BE;CM # BENGALI VOWEL SIGN AA
+09BF;CM # BENGALI VOWEL SIGN I
+09C0;CM # BENGALI VOWEL SIGN II
+09C1;CM # BENGALI VOWEL SIGN U
+09C2;CM # BENGALI VOWEL SIGN UU
+09C3;CM # BENGALI VOWEL SIGN VOCALIC R
+09C4;CM # BENGALI VOWEL SIGN VOCALIC RR
+09C7;CM # BENGALI VOWEL SIGN E
+09C8;CM # BENGALI VOWEL SIGN AI
+09CB;CM # BENGALI VOWEL SIGN O
+09CC;CM # BENGALI VOWEL SIGN AU
+09CD;CM # BENGALI SIGN VIRAMA
+09D7;CM # BENGALI AU LENGTH MARK
+09DC;AL # BENGALI LETTER RRA
+09DD;AL # BENGALI LETTER RHA
+09DF;AL # BENGALI LETTER YYA
+09E0;AL # BENGALI LETTER VOCALIC RR
+09E1;AL # BENGALI LETTER VOCALIC LL
+09E2;CM # BENGALI VOWEL SIGN VOCALIC L
+09E3;CM # BENGALI VOWEL SIGN VOCALIC LL
+09E6;NU # BENGALI DIGIT ZERO
+09E7;NU # BENGALI DIGIT ONE
+09E8;NU # BENGALI DIGIT TWO
+09E9;NU # BENGALI DIGIT THREE
+09EA;NU # BENGALI DIGIT FOUR
+09EB;NU # BENGALI DIGIT FIVE
+09EC;NU # BENGALI DIGIT SIX
+09ED;NU # BENGALI DIGIT SEVEN
+09EE;NU # BENGALI DIGIT EIGHT
+09EF;NU # BENGALI DIGIT NINE
+09F0;AL # BENGALI LETTER RA WITH MIDDLE DIAGONAL
+09F1;AL # BENGALI LETTER RA WITH LOWER DIAGONAL
+09F2;PR # BENGALI RUPEE MARK
+09F3;PR # BENGALI RUPEE SIGN
+09F4;AL # BENGALI CURRENCY NUMERATOR ONE
+09F5;AL # BENGALI CURRENCY NUMERATOR TWO
+09F6;AL # BENGALI CURRENCY NUMERATOR THREE
+09F7;AL # BENGALI CURRENCY NUMERATOR FOUR
+09F8;AL # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+09F9;AL # BENGALI CURRENCY DENOMINATOR SIXTEEN
+09FA;AL # BENGALI ISSHAR
+0A02;CM # GURMUKHI SIGN BINDI
+0A05;AL # GURMUKHI LETTER A
+0A06;AL # GURMUKHI LETTER AA
+0A07;AL # GURMUKHI LETTER I
+0A08;AL # GURMUKHI LETTER II
+0A09;AL # GURMUKHI LETTER U
+0A0A;AL # GURMUKHI LETTER UU
+0A0F;AL # GURMUKHI LETTER EE
+0A10;AL # GURMUKHI LETTER AI
+0A13;AL # GURMUKHI LETTER OO
+0A14;AL # GURMUKHI LETTER AU
+0A15;AL # GURMUKHI LETTER KA
+0A16;AL # GURMUKHI LETTER KHA
+0A17;AL # GURMUKHI LETTER GA
+0A18;AL # GURMUKHI LETTER GHA
+0A19;AL # GURMUKHI LETTER NGA
+0A1A;AL # GURMUKHI LETTER CA
+0A1B;AL # GURMUKHI LETTER CHA
+0A1C;AL # GURMUKHI LETTER JA
+0A1D;AL # GURMUKHI LETTER JHA
+0A1E;AL # GURMUKHI LETTER NYA
+0A1F;AL # GURMUKHI LETTER TTA
+0A20;AL # GURMUKHI LETTER TTHA
+0A21;AL # GURMUKHI LETTER DDA
+0A22;AL # GURMUKHI LETTER DDHA
+0A23;AL # GURMUKHI LETTER NNA
+0A24;AL # GURMUKHI LETTER TA
+0A25;AL # GURMUKHI LETTER THA
+0A26;AL # GURMUKHI LETTER DA
+0A27;AL # GURMUKHI LETTER DHA
+0A28;AL # GURMUKHI LETTER NA
+0A2A;AL # GURMUKHI LETTER PA
+0A2B;AL # GURMUKHI LETTER PHA
+0A2C;AL # GURMUKHI LETTER BA
+0A2D;AL # GURMUKHI LETTER BHA
+0A2E;AL # GURMUKHI LETTER MA
+0A2F;AL # GURMUKHI LETTER YA
+0A30;AL # GURMUKHI LETTER RA
+0A32;AL # GURMUKHI LETTER LA
+0A33;AL # GURMUKHI LETTER LLA
+0A35;AL # GURMUKHI LETTER VA
+0A36;AL # GURMUKHI LETTER SHA
+0A38;AL # GURMUKHI LETTER SA
+0A39;AL # GURMUKHI LETTER HA
+0A3C;CM # GURMUKHI SIGN NUKTA
+0A3E;CM # GURMUKHI VOWEL SIGN AA
+0A3F;CM # GURMUKHI VOWEL SIGN I
+0A40;CM # GURMUKHI VOWEL SIGN II
+0A41;CM # GURMUKHI VOWEL SIGN U
+0A42;CM # GURMUKHI VOWEL SIGN UU
+0A47;CM # GURMUKHI VOWEL SIGN EE
+0A48;CM # GURMUKHI VOWEL SIGN AI
+0A4B;CM # GURMUKHI VOWEL SIGN OO
+0A4C;CM # GURMUKHI VOWEL SIGN AU
+0A4D;CM # GURMUKHI SIGN VIRAMA
+0A59;AL # GURMUKHI LETTER KHHA
+0A5A;AL # GURMUKHI LETTER GHHA
+0A5B;AL # GURMUKHI LETTER ZA
+0A5C;AL # GURMUKHI LETTER RRA
+0A5E;AL # GURMUKHI LETTER FA
+0A66;NU # GURMUKHI DIGIT ZERO
+0A67;NU # GURMUKHI DIGIT ONE
+0A68;NU # GURMUKHI DIGIT TWO
+0A69;NU # GURMUKHI DIGIT THREE
+0A6A;NU # GURMUKHI DIGIT FOUR
+0A6B;NU # GURMUKHI DIGIT FIVE
+0A6C;NU # GURMUKHI DIGIT SIX
+0A6D;NU # GURMUKHI DIGIT SEVEN
+0A6E;NU # GURMUKHI DIGIT EIGHT
+0A6F;NU # GURMUKHI DIGIT NINE
+0A70;CM # GURMUKHI TIPPI
+0A71;CM # GURMUKHI ADDAK
+0A72;AL # GURMUKHI IRI
+0A73;AL # GURMUKHI URA
+0A74;AL # GURMUKHI EK ONKAR
+0A81;CM # GUJARATI SIGN CANDRABINDU
+0A82;CM # GUJARATI SIGN ANUSVARA
+0A83;CM # GUJARATI SIGN VISARGA
+0A85;AL # GUJARATI LETTER A
+0A86;AL # GUJARATI LETTER AA
+0A87;AL # GUJARATI LETTER I
+0A88;AL # GUJARATI LETTER II
+0A89;AL # GUJARATI LETTER U
+0A8A;AL # GUJARATI LETTER UU
+0A8B;AL # GUJARATI LETTER VOCALIC R
+0A8D;AL # GUJARATI VOWEL CANDRA E
+0A8F;AL # GUJARATI LETTER E
+0A90;AL # GUJARATI LETTER AI
+0A91;AL # GUJARATI VOWEL CANDRA O
+0A93;AL # GUJARATI LETTER O
+0A94;AL # GUJARATI LETTER AU
+0A95;AL # GUJARATI LETTER KA
+0A96;AL # GUJARATI LETTER KHA
+0A97;AL # GUJARATI LETTER GA
+0A98;AL # GUJARATI LETTER GHA
+0A99;AL # GUJARATI LETTER NGA
+0A9A;AL # GUJARATI LETTER CA
+0A9B;AL # GUJARATI LETTER CHA
+0A9C;AL # GUJARATI LETTER JA
+0A9D;AL # GUJARATI LETTER JHA
+0A9E;AL # GUJARATI LETTER NYA
+0A9F;AL # GUJARATI LETTER TTA
+0AA0;AL # GUJARATI LETTER TTHA
+0AA1;AL # GUJARATI LETTER DDA
+0AA2;AL # GUJARATI LETTER DDHA
+0AA3;AL # GUJARATI LETTER NNA
+0AA4;AL # GUJARATI LETTER TA
+0AA5;AL # GUJARATI LETTER THA
+0AA6;AL # GUJARATI LETTER DA
+0AA7;AL # GUJARATI LETTER DHA
+0AA8;AL # GUJARATI LETTER NA
+0AAA;AL # GUJARATI LETTER PA
+0AAB;AL # GUJARATI LETTER PHA
+0AAC;AL # GUJARATI LETTER BA
+0AAD;AL # GUJARATI LETTER BHA
+0AAE;AL # GUJARATI LETTER MA
+0AAF;AL # GUJARATI LETTER YA
+0AB0;AL # GUJARATI LETTER RA
+0AB2;AL # GUJARATI LETTER LA
+0AB3;AL # GUJARATI LETTER LLA
+0AB5;AL # GUJARATI LETTER VA
+0AB6;AL # GUJARATI LETTER SHA
+0AB7;AL # GUJARATI LETTER SSA
+0AB8;AL # GUJARATI LETTER SA
+0AB9;AL # GUJARATI LETTER HA
+0ABC;CM # GUJARATI SIGN NUKTA
+0ABD;AL # GUJARATI SIGN AVAGRAHA
+0ABE;CM # GUJARATI VOWEL SIGN AA
+0ABF;CM # GUJARATI VOWEL SIGN I
+0AC0;CM # GUJARATI VOWEL SIGN II
+0AC1;CM # GUJARATI VOWEL SIGN U
+0AC2;CM # GUJARATI VOWEL SIGN UU
+0AC3;CM # GUJARATI VOWEL SIGN VOCALIC R
+0AC4;CM # GUJARATI VOWEL SIGN VOCALIC RR
+0AC5;CM # GUJARATI VOWEL SIGN CANDRA E
+0AC7;CM # GUJARATI VOWEL SIGN E
+0AC8;CM # GUJARATI VOWEL SIGN AI
+0AC9;CM # GUJARATI VOWEL SIGN CANDRA O
+0ACB;CM # GUJARATI VOWEL SIGN O
+0ACC;CM # GUJARATI VOWEL SIGN AU
+0ACD;CM # GUJARATI SIGN VIRAMA
+0AD0;AL # GUJARATI OM
+0AE0;AL # GUJARATI LETTER VOCALIC RR
+0AE6;NU # GUJARATI DIGIT ZERO
+0AE7;NU # GUJARATI DIGIT ONE
+0AE8;NU # GUJARATI DIGIT TWO
+0AE9;NU # GUJARATI DIGIT THREE
+0AEA;NU # GUJARATI DIGIT FOUR
+0AEB;NU # GUJARATI DIGIT FIVE
+0AEC;NU # GUJARATI DIGIT SIX
+0AED;NU # GUJARATI DIGIT SEVEN
+0AEE;NU # GUJARATI DIGIT EIGHT
+0AEF;NU # GUJARATI DIGIT NINE
+0B01;CM # ORIYA SIGN CANDRABINDU
+0B02;CM # ORIYA SIGN ANUSVARA
+0B03;CM # ORIYA SIGN VISARGA
+0B05;AL # ORIYA LETTER A
+0B06;AL # ORIYA LETTER AA
+0B07;AL # ORIYA LETTER I
+0B08;AL # ORIYA LETTER II
+0B09;AL # ORIYA LETTER U
+0B0A;AL # ORIYA LETTER UU
+0B0B;AL # ORIYA LETTER VOCALIC R
+0B0C;AL # ORIYA LETTER VOCALIC L
+0B0F;AL # ORIYA LETTER E
+0B10;AL # ORIYA LETTER AI
+0B13;AL # ORIYA LETTER O
+0B14;AL # ORIYA LETTER AU
+0B15;AL # ORIYA LETTER KA
+0B16;AL # ORIYA LETTER KHA
+0B17;AL # ORIYA LETTER GA
+0B18;AL # ORIYA LETTER GHA
+0B19;AL # ORIYA LETTER NGA
+0B1A;AL # ORIYA LETTER CA
+0B1B;AL # ORIYA LETTER CHA
+0B1C;AL # ORIYA LETTER JA
+0B1D;AL # ORIYA LETTER JHA
+0B1E;AL # ORIYA LETTER NYA
+0B1F;AL # ORIYA LETTER TTA
+0B20;AL # ORIYA LETTER TTHA
+0B21;AL # ORIYA LETTER DDA
+0B22;AL # ORIYA LETTER DDHA
+0B23;AL # ORIYA LETTER NNA
+0B24;AL # ORIYA LETTER TA
+0B25;AL # ORIYA LETTER THA
+0B26;AL # ORIYA LETTER DA
+0B27;AL # ORIYA LETTER DHA
+0B28;AL # ORIYA LETTER NA
+0B2A;AL # ORIYA LETTER PA
+0B2B;AL # ORIYA LETTER PHA
+0B2C;AL # ORIYA LETTER BA
+0B2D;AL # ORIYA LETTER BHA
+0B2E;AL # ORIYA LETTER MA
+0B2F;AL # ORIYA LETTER YA
+0B30;AL # ORIYA LETTER RA
+0B32;AL # ORIYA LETTER LA
+0B33;AL # ORIYA LETTER LLA
+0B36;AL # ORIYA LETTER SHA
+0B37;AL # ORIYA LETTER SSA
+0B38;AL # ORIYA LETTER SA
+0B39;AL # ORIYA LETTER HA
+0B3C;CM # ORIYA SIGN NUKTA
+0B3D;AL # ORIYA SIGN AVAGRAHA
+0B3E;CM # ORIYA VOWEL SIGN AA
+0B3F;CM # ORIYA VOWEL SIGN I
+0B40;CM # ORIYA VOWEL SIGN II
+0B41;CM # ORIYA VOWEL SIGN U
+0B42;CM # ORIYA VOWEL SIGN UU
+0B43;CM # ORIYA VOWEL SIGN VOCALIC R
+0B47;CM # ORIYA VOWEL SIGN E
+0B48;CM # ORIYA VOWEL SIGN AI
+0B4B;CM # ORIYA VOWEL SIGN O
+0B4C;CM # ORIYA VOWEL SIGN AU
+0B4D;CM # ORIYA SIGN VIRAMA
+0B56;CM # ORIYA AI LENGTH MARK
+0B57;CM # ORIYA AU LENGTH MARK
+0B5C;AL # ORIYA LETTER RRA
+0B5D;AL # ORIYA LETTER RHA
+0B5F;AL # ORIYA LETTER YYA
+0B60;AL # ORIYA LETTER VOCALIC RR
+0B61;AL # ORIYA LETTER VOCALIC LL
+0B66;NU # ORIYA DIGIT ZERO
+0B67;NU # ORIYA DIGIT ONE
+0B68;NU # ORIYA DIGIT TWO
+0B69;NU # ORIYA DIGIT THREE
+0B6A;NU # ORIYA DIGIT FOUR
+0B6B;NU # ORIYA DIGIT FIVE
+0B6C;NU # ORIYA DIGIT SIX
+0B6D;NU # ORIYA DIGIT SEVEN
+0B6E;NU # ORIYA DIGIT EIGHT
+0B6F;NU # ORIYA DIGIT NINE
+0B70;AL # ORIYA ISSHAR
+0B82;CM # TAMIL SIGN ANUSVARA
+0B83;AL # TAMIL SIGN VISARGA
+0B85;AL # TAMIL LETTER A
+0B86;AL # TAMIL LETTER AA
+0B87;AL # TAMIL LETTER I
+0B88;AL # TAMIL LETTER II
+0B89;AL # TAMIL LETTER U
+0B8A;AL # TAMIL LETTER UU
+0B8E;AL # TAMIL LETTER E
+0B8F;AL # TAMIL LETTER EE
+0B90;AL # TAMIL LETTER AI
+0B92;AL # TAMIL LETTER O
+0B93;AL # TAMIL LETTER OO
+0B94;AL # TAMIL LETTER AU
+0B95;AL # TAMIL LETTER KA
+0B99;AL # TAMIL LETTER NGA
+0B9A;AL # TAMIL LETTER CA
+0B9C;AL # TAMIL LETTER JA
+0B9E;AL # TAMIL LETTER NYA
+0B9F;AL # TAMIL LETTER TTA
+0BA3;AL # TAMIL LETTER NNA
+0BA4;AL # TAMIL LETTER TA
+0BA8;AL # TAMIL LETTER NA
+0BA9;AL # TAMIL LETTER NNNA
+0BAA;AL # TAMIL LETTER PA
+0BAE;AL # TAMIL LETTER MA
+0BAF;AL # TAMIL LETTER YA
+0BB0;AL # TAMIL LETTER RA
+0BB1;AL # TAMIL LETTER RRA
+0BB2;AL # TAMIL LETTER LA
+0BB3;AL # TAMIL LETTER LLA
+0BB4;AL # TAMIL LETTER LLLA
+0BB5;AL # TAMIL LETTER VA
+0BB7;AL # TAMIL LETTER SSA
+0BB8;AL # TAMIL LETTER SA
+0BB9;AL # TAMIL LETTER HA
+0BBE;CM # TAMIL VOWEL SIGN AA
+0BBF;CM # TAMIL VOWEL SIGN I
+0BC0;CM # TAMIL VOWEL SIGN II
+0BC1;CM # TAMIL VOWEL SIGN U
+0BC2;CM # TAMIL VOWEL SIGN UU
+0BC6;CM # TAMIL VOWEL SIGN E
+0BC7;CM # TAMIL VOWEL SIGN EE
+0BC8;CM # TAMIL VOWEL SIGN AI
+0BCA;CM # TAMIL VOWEL SIGN O
+0BCB;CM # TAMIL VOWEL SIGN OO
+0BCC;CM # TAMIL VOWEL SIGN AU
+0BCD;CM # TAMIL SIGN VIRAMA
+0BD7;CM # TAMIL AU LENGTH MARK
+0BE7;NU # TAMIL DIGIT ONE
+0BE8;NU # TAMIL DIGIT TWO
+0BE9;NU # TAMIL DIGIT THREE
+0BEA;NU # TAMIL DIGIT FOUR
+0BEB;NU # TAMIL DIGIT FIVE
+0BEC;NU # TAMIL DIGIT SIX
+0BED;NU # TAMIL DIGIT SEVEN
+0BEE;NU # TAMIL DIGIT EIGHT
+0BEF;NU # TAMIL DIGIT NINE
+0BF0;AL # TAMIL NUMBER TEN
+0BF1;AL # TAMIL NUMBER ONE HUNDRED
+0BF2;AL # TAMIL NUMBER ONE THOUSAND
+0C01;CM # TELUGU SIGN CANDRABINDU
+0C02;CM # TELUGU SIGN ANUSVARA
+0C03;CM # TELUGU SIGN VISARGA
+0C05;AL # TELUGU LETTER A
+0C06;AL # TELUGU LETTER AA
+0C07;AL # TELUGU LETTER I
+0C08;AL # TELUGU LETTER II
+0C09;AL # TELUGU LETTER U
+0C0A;AL # TELUGU LETTER UU
+0C0B;AL # TELUGU LETTER VOCALIC R
+0C0C;AL # TELUGU LETTER VOCALIC L
+0C0E;AL # TELUGU LETTER E
+0C0F;AL # TELUGU LETTER EE
+0C10;AL # TELUGU LETTER AI
+0C12;AL # TELUGU LETTER O
+0C13;AL # TELUGU LETTER OO
+0C14;AL # TELUGU LETTER AU
+0C15;AL # TELUGU LETTER KA
+0C16;AL # TELUGU LETTER KHA
+0C17;AL # TELUGU LETTER GA
+0C18;AL # TELUGU LETTER GHA
+0C19;AL # TELUGU LETTER NGA
+0C1A;AL # TELUGU LETTER CA
+0C1B;AL # TELUGU LETTER CHA
+0C1C;AL # TELUGU LETTER JA
+0C1D;AL # TELUGU LETTER JHA
+0C1E;AL # TELUGU LETTER NYA
+0C1F;AL # TELUGU LETTER TTA
+0C20;AL # TELUGU LETTER TTHA
+0C21;AL # TELUGU LETTER DDA
+0C22;AL # TELUGU LETTER DDHA
+0C23;AL # TELUGU LETTER NNA
+0C24;AL # TELUGU LETTER TA
+0C25;AL # TELUGU LETTER THA
+0C26;AL # TELUGU LETTER DA
+0C27;AL # TELUGU LETTER DHA
+0C28;AL # TELUGU LETTER NA
+0C2A;AL # TELUGU LETTER PA
+0C2B;AL # TELUGU LETTER PHA
+0C2C;AL # TELUGU LETTER BA
+0C2D;AL # TELUGU LETTER BHA
+0C2E;AL # TELUGU LETTER MA
+0C2F;AL # TELUGU LETTER YA
+0C30;AL # TELUGU LETTER RA
+0C31;AL # TELUGU LETTER RRA
+0C32;AL # TELUGU LETTER LA
+0C33;AL # TELUGU LETTER LLA
+0C35;AL # TELUGU LETTER VA
+0C36;AL # TELUGU LETTER SHA
+0C37;AL # TELUGU LETTER SSA
+0C38;AL # TELUGU LETTER SA
+0C39;AL # TELUGU LETTER HA
+0C3E;CM # TELUGU VOWEL SIGN AA
+0C3F;CM # TELUGU VOWEL SIGN I
+0C40;CM # TELUGU VOWEL SIGN II
+0C41;CM # TELUGU VOWEL SIGN U
+0C42;CM # TELUGU VOWEL SIGN UU
+0C43;CM # TELUGU VOWEL SIGN VOCALIC R
+0C44;CM # TELUGU VOWEL SIGN VOCALIC RR
+0C46;CM # TELUGU VOWEL SIGN E
+0C47;CM # TELUGU VOWEL SIGN EE
+0C48;CM # TELUGU VOWEL SIGN AI
+0C4A;CM # TELUGU VOWEL SIGN O
+0C4B;CM # TELUGU VOWEL SIGN OO
+0C4C;CM # TELUGU VOWEL SIGN AU
+0C4D;CM # TELUGU SIGN VIRAMA
+0C55;CM # TELUGU LENGTH MARK
+0C56;CM # TELUGU AI LENGTH MARK
+0C60;AL # TELUGU LETTER VOCALIC RR
+0C61;AL # TELUGU LETTER VOCALIC LL
+0C66;NU # TELUGU DIGIT ZERO
+0C67;NU # TELUGU DIGIT ONE
+0C68;NU # TELUGU DIGIT TWO
+0C69;NU # TELUGU DIGIT THREE
+0C6A;NU # TELUGU DIGIT FOUR
+0C6B;NU # TELUGU DIGIT FIVE
+0C6C;NU # TELUGU DIGIT SIX
+0C6D;NU # TELUGU DIGIT SEVEN
+0C6E;NU # TELUGU DIGIT EIGHT
+0C6F;NU # TELUGU DIGIT NINE
+0C82;CM # KANNADA SIGN ANUSVARA
+0C83;CM # KANNADA SIGN VISARGA
+0C85;AL # KANNADA LETTER A
+0C86;AL # KANNADA LETTER AA
+0C87;AL # KANNADA LETTER I
+0C88;AL # KANNADA LETTER II
+0C89;AL # KANNADA LETTER U
+0C8A;AL # KANNADA LETTER UU
+0C8B;AL # KANNADA LETTER VOCALIC R
+0C8C;AL # KANNADA LETTER VOCALIC L
+0C8E;AL # KANNADA LETTER E
+0C8F;AL # KANNADA LETTER EE
+0C90;AL # KANNADA LETTER AI
+0C92;AL # KANNADA LETTER O
+0C93;AL # KANNADA LETTER OO
+0C94;AL # KANNADA LETTER AU
+0C95;AL # KANNADA LETTER KA
+0C96;AL # KANNADA LETTER KHA
+0C97;AL # KANNADA LETTER GA
+0C98;AL # KANNADA LETTER GHA
+0C99;AL # KANNADA LETTER NGA
+0C9A;AL # KANNADA LETTER CA
+0C9B;AL # KANNADA LETTER CHA
+0C9C;AL # KANNADA LETTER JA
+0C9D;AL # KANNADA LETTER JHA
+0C9E;AL # KANNADA LETTER NYA
+0C9F;AL # KANNADA LETTER TTA
+0CA0;AL # KANNADA LETTER TTHA
+0CA1;AL # KANNADA LETTER DDA
+0CA2;AL # KANNADA LETTER DDHA
+0CA3;AL # KANNADA LETTER NNA
+0CA4;AL # KANNADA LETTER TA
+0CA5;AL # KANNADA LETTER THA
+0CA6;AL # KANNADA LETTER DA
+0CA7;AL # KANNADA LETTER DHA
+0CA8;AL # KANNADA LETTER NA
+0CAA;AL # KANNADA LETTER PA
+0CAB;AL # KANNADA LETTER PHA
+0CAC;AL # KANNADA LETTER BA
+0CAD;AL # KANNADA LETTER BHA
+0CAE;AL # KANNADA LETTER MA
+0CAF;AL # KANNADA LETTER YA
+0CB0;AL # KANNADA LETTER RA
+0CB1;AL # KANNADA LETTER RRA
+0CB2;AL # KANNADA LETTER LA
+0CB3;AL # KANNADA LETTER LLA
+0CB5;AL # KANNADA LETTER VA
+0CB6;AL # KANNADA LETTER SHA
+0CB7;AL # KANNADA LETTER SSA
+0CB8;AL # KANNADA LETTER SA
+0CB9;AL # KANNADA LETTER HA
+0CBE;CM # KANNADA VOWEL SIGN AA
+0CBF;CM # KANNADA VOWEL SIGN I
+0CC0;CM # KANNADA VOWEL SIGN II
+0CC1;CM # KANNADA VOWEL SIGN U
+0CC2;CM # KANNADA VOWEL SIGN UU
+0CC3;CM # KANNADA VOWEL SIGN VOCALIC R
+0CC4;CM # KANNADA VOWEL SIGN VOCALIC RR
+0CC6;CM # KANNADA VOWEL SIGN E
+0CC7;CM # KANNADA VOWEL SIGN EE
+0CC8;CM # KANNADA VOWEL SIGN AI
+0CCA;CM # KANNADA VOWEL SIGN O
+0CCB;CM # KANNADA VOWEL SIGN OO
+0CCC;CM # KANNADA VOWEL SIGN AU
+0CCD;CM # KANNADA SIGN VIRAMA
+0CD5;CM # KANNADA LENGTH MARK
+0CD6;CM # KANNADA AI LENGTH MARK
+0CDE;AL # KANNADA LETTER FA
+0CE0;AL # KANNADA LETTER VOCALIC RR
+0CE1;AL # KANNADA LETTER VOCALIC LL
+0CE6;NU # KANNADA DIGIT ZERO
+0CE7;NU # KANNADA DIGIT ONE
+0CE8;NU # KANNADA DIGIT TWO
+0CE9;NU # KANNADA DIGIT THREE
+0CEA;NU # KANNADA DIGIT FOUR
+0CEB;NU # KANNADA DIGIT FIVE
+0CEC;NU # KANNADA DIGIT SIX
+0CED;NU # KANNADA DIGIT SEVEN
+0CEE;NU # KANNADA DIGIT EIGHT
+0CEF;NU # KANNADA DIGIT NINE
+0D02;CM # MALAYALAM SIGN ANUSVARA
+0D03;CM # MALAYALAM SIGN VISARGA
+0D05;AL # MALAYALAM LETTER A
+0D06;AL # MALAYALAM LETTER AA
+0D07;AL # MALAYALAM LETTER I
+0D08;AL # MALAYALAM LETTER II
+0D09;AL # MALAYALAM LETTER U
+0D0A;AL # MALAYALAM LETTER UU
+0D0B;AL # MALAYALAM LETTER VOCALIC R
+0D0C;AL # MALAYALAM LETTER VOCALIC L
+0D0E;AL # MALAYALAM LETTER E
+0D0F;AL # MALAYALAM LETTER EE
+0D10;AL # MALAYALAM LETTER AI
+0D12;AL # MALAYALAM LETTER O
+0D13;AL # MALAYALAM LETTER OO
+0D14;AL # MALAYALAM LETTER AU
+0D15;AL # MALAYALAM LETTER KA
+0D16;AL # MALAYALAM LETTER KHA
+0D17;AL # MALAYALAM LETTER GA
+0D18;AL # MALAYALAM LETTER GHA
+0D19;AL # MALAYALAM LETTER NGA
+0D1A;AL # MALAYALAM LETTER CA
+0D1B;AL # MALAYALAM LETTER CHA
+0D1C;AL # MALAYALAM LETTER JA
+0D1D;AL # MALAYALAM LETTER JHA
+0D1E;AL # MALAYALAM LETTER NYA
+0D1F;AL # MALAYALAM LETTER TTA
+0D20;AL # MALAYALAM LETTER TTHA
+0D21;AL # MALAYALAM LETTER DDA
+0D22;AL # MALAYALAM LETTER DDHA
+0D23;AL # MALAYALAM LETTER NNA
+0D24;AL # MALAYALAM LETTER TA
+0D25;AL # MALAYALAM LETTER THA
+0D26;AL # MALAYALAM LETTER DA
+0D27;AL # MALAYALAM LETTER DHA
+0D28;AL # MALAYALAM LETTER NA
+0D2A;AL # MALAYALAM LETTER PA
+0D2B;AL # MALAYALAM LETTER PHA
+0D2C;AL # MALAYALAM LETTER BA
+0D2D;AL # MALAYALAM LETTER BHA
+0D2E;AL # MALAYALAM LETTER MA
+0D2F;AL # MALAYALAM LETTER YA
+0D30;AL # MALAYALAM LETTER RA
+0D31;AL # MALAYALAM LETTER RRA
+0D32;AL # MALAYALAM LETTER LA
+0D33;AL # MALAYALAM LETTER LLA
+0D34;AL # MALAYALAM LETTER LLLA
+0D35;AL # MALAYALAM LETTER VA
+0D36;AL # MALAYALAM LETTER SHA
+0D37;AL # MALAYALAM LETTER SSA
+0D38;AL # MALAYALAM LETTER SA
+0D39;AL # MALAYALAM LETTER HA
+0D3E;CM # MALAYALAM VOWEL SIGN AA
+0D3F;CM # MALAYALAM VOWEL SIGN I
+0D40;CM # MALAYALAM VOWEL SIGN II
+0D41;CM # MALAYALAM VOWEL SIGN U
+0D42;CM # MALAYALAM VOWEL SIGN UU
+0D43;CM # MALAYALAM VOWEL SIGN VOCALIC R
+0D46;CM # MALAYALAM VOWEL SIGN E
+0D47;CM # MALAYALAM VOWEL SIGN EE
+0D48;CM # MALAYALAM VOWEL SIGN AI
+0D4A;CM # MALAYALAM VOWEL SIGN O
+0D4B;CM # MALAYALAM VOWEL SIGN OO
+0D4C;CM # MALAYALAM VOWEL SIGN AU
+0D4D;CM # MALAYALAM SIGN VIRAMA
+0D57;CM # MALAYALAM AU LENGTH MARK
+0D60;AL # MALAYALAM LETTER VOCALIC RR
+0D61;AL # MALAYALAM LETTER VOCALIC LL
+0D66;NU # MALAYALAM DIGIT ZERO
+0D67;NU # MALAYALAM DIGIT ONE
+0D68;NU # MALAYALAM DIGIT TWO
+0D69;NU # MALAYALAM DIGIT THREE
+0D6A;NU # MALAYALAM DIGIT FOUR
+0D6B;NU # MALAYALAM DIGIT FIVE
+0D6C;NU # MALAYALAM DIGIT SIX
+0D6D;NU # MALAYALAM DIGIT SEVEN
+0D6E;NU # MALAYALAM DIGIT EIGHT
+0D6F;NU # MALAYALAM DIGIT NINE
+0D82;CM # SINHALA SIGN ANUSVARAYA
+0D83;CM # SINHALA SIGN VISARGAYA
+0D85;AL # SINHALA LETTER AYANNA
+0D86;AL # SINHALA LETTER AAYANNA
+0D87;AL # SINHALA LETTER AEYANNA
+0D88;AL # SINHALA LETTER AEEYANNA
+0D89;AL # SINHALA LETTER IYANNA
+0D8A;AL # SINHALA LETTER IIYANNA
+0D8B;AL # SINHALA LETTER UYANNA
+0D8C;AL # SINHALA LETTER UUYANNA
+0D8D;AL # SINHALA LETTER IRUYANNA
+0D8E;AL # SINHALA LETTER IRUUYANNA
+0D8F;AL # SINHALA LETTER ILUYANNA
+0D90;AL # SINHALA LETTER ILUUYANNA
+0D91;AL # SINHALA LETTER EYANNA
+0D92;AL # SINHALA LETTER EEYANNA
+0D93;AL # SINHALA LETTER AIYANNA
+0D94;AL # SINHALA LETTER OYANNA
+0D95;AL # SINHALA LETTER OOYANNA
+0D96;AL # SINHALA LETTER AUYANNA
+0D9A;AL # SINHALA LETTER ALPAPRAANA KAYANNA
+0D9B;AL # SINHALA LETTER MAHAAPRAANA KAYANNA
+0D9C;AL # SINHALA LETTER ALPAPRAANA GAYANNA
+0D9D;AL # SINHALA LETTER MAHAAPRAANA GAYANNA
+0D9E;AL # SINHALA LETTER KANTAJA NAASIKYAYA
+0D9F;AL # SINHALA LETTER SANYAKA GAYANNA
+0DA0;AL # SINHALA LETTER ALPAPRAANA CAYANNA
+0DA1;AL # SINHALA LETTER MAHAAPRAANA CAYANNA
+0DA2;AL # SINHALA LETTER ALPAPRAANA JAYANNA
+0DA3;AL # SINHALA LETTER MAHAAPRAANA JAYANNA
+0DA4;AL # SINHALA LETTER TAALUJA NAASIKYAYA
+0DA5;AL # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0DA6;AL # SINHALA LETTER SANYAKA JAYANNA
+0DA7;AL # SINHALA LETTER ALPAPRAANA TTAYANNA
+0DA8;AL # SINHALA LETTER MAHAAPRAANA TTAYANNA
+0DA9;AL # SINHALA LETTER ALPAPRAANA DDAYANNA
+0DAA;AL # SINHALA LETTER MAHAAPRAANA DDAYANNA
+0DAB;AL # SINHALA LETTER MUURDHAJA NAYANNA
+0DAC;AL # SINHALA LETTER SANYAKA DDAYANNA
+0DAD;AL # SINHALA LETTER ALPAPRAANA TAYANNA
+0DAE;AL # SINHALA LETTER MAHAAPRAANA TAYANNA
+0DAF;AL # SINHALA LETTER ALPAPRAANA DAYANNA
+0DB0;AL # SINHALA LETTER MAHAAPRAANA DAYANNA
+0DB1;AL # SINHALA LETTER DANTAJA NAYANNA
+0DB3;AL # SINHALA LETTER SANYAKA DAYANNA
+0DB4;AL # SINHALA LETTER ALPAPRAANA PAYANNA
+0DB5;AL # SINHALA LETTER MAHAAPRAANA PAYANNA
+0DB6;AL # SINHALA LETTER ALPAPRAANA BAYANNA
+0DB7;AL # SINHALA LETTER MAHAAPRAANA BAYANNA
+0DB8;AL # SINHALA LETTER MAYANNA
+0DB9;AL # SINHALA LETTER AMBA BAYANNA
+0DBA;AL # SINHALA LETTER YAYANNA
+0DBB;AL # SINHALA LETTER RAYANNA
+0DBD;AL # SINHALA LETTER DANTAJA LAYANNA
+0DC0;AL # SINHALA LETTER VAYANNA
+0DC1;AL # SINHALA LETTER TAALUJA SAYANNA
+0DC2;AL # SINHALA LETTER MUURDHAJA SAYANNA
+0DC3;AL # SINHALA LETTER DANTAJA SAYANNA
+0DC4;AL # SINHALA LETTER HAYANNA
+0DC5;AL # SINHALA LETTER MUURDHAJA LAYANNA
+0DC6;AL # SINHALA LETTER FAYANNA
+0DCA;CM # SINHALA SIGN AL-LAKUNA
+0DCF;CM # SINHALA VOWEL SIGN AELA-PILLA
+0DD0;CM # SINHALA VOWEL SIGN KETTI AEDA-PILLA
+0DD1;CM # SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2;CM # SINHALA VOWEL SIGN KETTI IS-PILLA
+0DD3;CM # SINHALA VOWEL SIGN DIGA IS-PILLA
+0DD4;CM # SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6;CM # SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8;CM # SINHALA VOWEL SIGN GAETTA-PILLA
+0DD9;CM # SINHALA VOWEL SIGN KOMBUVA
+0DDA;CM # SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDB;CM # SINHALA VOWEL SIGN KOMBU DEKA
+0DDC;CM # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DDD;CM # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDE;CM # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DDF;CM # SINHALA VOWEL SIGN GAYANUKITTA
+0DF2;CM # SINHALA VOWEL SIGN DIGA GAETTA-PILLA
+0DF3;CM # SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0DF4;AL # SINHALA PUNCTUATION KUNDDALIYA
+0E01;SA # THAI CHARACTER KO KAI
+0E02;SA # THAI CHARACTER KHO KHAI
+0E03;SA # THAI CHARACTER KHO KHUAT
+0E04;SA # THAI CHARACTER KHO KHWAI
+0E05;SA # THAI CHARACTER KHO KHON
+0E06;SA # THAI CHARACTER KHO RAKHANG
+0E07;SA # THAI CHARACTER NGO NGU
+0E08;SA # THAI CHARACTER CHO CHAN
+0E09;SA # THAI CHARACTER CHO CHING
+0E0A;SA # THAI CHARACTER CHO CHANG
+0E0B;SA # THAI CHARACTER SO SO
+0E0C;SA # THAI CHARACTER CHO CHOE
+0E0D;SA # THAI CHARACTER YO YING
+0E0E;SA # THAI CHARACTER DO CHADA
+0E0F;SA # THAI CHARACTER TO PATAK
+0E10;SA # THAI CHARACTER THO THAN
+0E11;SA # THAI CHARACTER THO NANGMONTHO
+0E12;SA # THAI CHARACTER THO PHUTHAO
+0E13;SA # THAI CHARACTER NO NEN
+0E14;SA # THAI CHARACTER DO DEK
+0E15;SA # THAI CHARACTER TO TAO
+0E16;SA # THAI CHARACTER THO THUNG
+0E17;SA # THAI CHARACTER THO THAHAN
+0E18;SA # THAI CHARACTER THO THONG
+0E19;SA # THAI CHARACTER NO NU
+0E1A;SA # THAI CHARACTER BO BAIMAI
+0E1B;SA # THAI CHARACTER PO PLA
+0E1C;SA # THAI CHARACTER PHO PHUNG
+0E1D;SA # THAI CHARACTER FO FA
+0E1E;SA # THAI CHARACTER PHO PHAN
+0E1F;SA # THAI CHARACTER FO FAN
+0E20;SA # THAI CHARACTER PHO SAMPHAO
+0E21;SA # THAI CHARACTER MO MA
+0E22;SA # THAI CHARACTER YO YAK
+0E23;SA # THAI CHARACTER RO RUA
+0E24;SA # THAI CHARACTER RU
+0E25;SA # THAI CHARACTER LO LING
+0E26;SA # THAI CHARACTER LU
+0E27;SA # THAI CHARACTER WO WAEN
+0E28;SA # THAI CHARACTER SO SALA
+0E29;SA # THAI CHARACTER SO RUSI
+0E2A;SA # THAI CHARACTER SO SUA
+0E2B;SA # THAI CHARACTER HO HIP
+0E2C;SA # THAI CHARACTER LO CHULA
+0E2D;SA # THAI CHARACTER O ANG
+0E2E;SA # THAI CHARACTER HO NOKHUK
+0E2F;SA # THAI CHARACTER PAIYANNOI
+0E30;SA # THAI CHARACTER SARA A
+0E31;CM # THAI CHARACTER MAI HAN-AKAT
+0E32;SA # THAI CHARACTER SARA AA
+0E33;SA # THAI CHARACTER SARA AM
+0E34;CM # THAI CHARACTER SARA I
+0E35;CM # THAI CHARACTER SARA II
+0E36;CM # THAI CHARACTER SARA UE
+0E37;CM # THAI CHARACTER SARA UEE
+0E38;CM # THAI CHARACTER SARA U
+0E39;CM # THAI CHARACTER SARA UU
+0E3A;CM # THAI CHARACTER PHINTHU
+0E3F;PR # THAI CURRENCY SYMBOL BAHT
+0E40;SA # THAI CHARACTER SARA E
+0E41;SA # THAI CHARACTER SARA AE
+0E42;SA # THAI CHARACTER SARA O
+0E43;SA # THAI CHARACTER SARA AI MAIMUAN
+0E44;SA # THAI CHARACTER SARA AI MAIMALAI
+0E45;SA # THAI CHARACTER LAKKHANGYAO
+0E46;SA # THAI CHARACTER MAIYAMOK
+0E47;CM # THAI CHARACTER MAITAIKHU
+0E48;CM # THAI CHARACTER MAI EK
+0E49;CM # THAI CHARACTER MAI THO
+0E4A;CM # THAI CHARACTER MAI TRI
+0E4B;CM # THAI CHARACTER MAI CHATTAWA
+0E4C;CM # THAI CHARACTER THANTHAKHAT
+0E4D;CM # THAI CHARACTER NIKHAHIT
+0E4E;CM # THAI CHARACTER YAMAKKAN
+0E4F;AL # THAI CHARACTER FONGMAN
+0E50;NU # THAI DIGIT ZERO
+0E51;NU # THAI DIGIT ONE
+0E52;NU # THAI DIGIT TWO
+0E53;NU # THAI DIGIT THREE
+0E54;NU # THAI DIGIT FOUR
+0E55;NU # THAI DIGIT FIVE
+0E56;NU # THAI DIGIT SIX
+0E57;NU # THAI DIGIT SEVEN
+0E58;NU # THAI DIGIT EIGHT
+0E59;NU # THAI DIGIT NINE
+0E5A;NS # THAI CHARACTER ANGKHANKHU
+0E5B;NS # THAI CHARACTER KHOMUT
+0E81;SA # LAO LETTER KO
+0E82;SA # LAO LETTER KHO SUNG
+0E84;SA # LAO LETTER KHO TAM
+0E87;SA # LAO LETTER NGO
+0E88;SA # LAO LETTER CO
+0E8A;SA # LAO LETTER SO TAM
+0E8D;SA # LAO LETTER NYO
+0E94;SA # LAO LETTER DO
+0E95;SA # LAO LETTER TO
+0E96;SA # LAO LETTER THO SUNG
+0E97;SA # LAO LETTER THO TAM
+0E99;SA # LAO LETTER NO
+0E9A;SA # LAO LETTER BO
+0E9B;SA # LAO LETTER PO
+0E9C;SA # LAO LETTER PHO SUNG
+0E9D;SA # LAO LETTER FO TAM
+0E9E;SA # LAO LETTER PHO TAM
+0E9F;SA # LAO LETTER FO SUNG
+0EA1;SA # LAO LETTER MO
+0EA2;SA # LAO LETTER YO
+0EA3;SA # LAO LETTER LO LING
+0EA5;SA # LAO LETTER LO LOOT
+0EA7;SA # LAO LETTER WO
+0EAA;SA # LAO LETTER SO SUNG
+0EAB;SA # LAO LETTER HO SUNG
+0EAD;SA # LAO LETTER O
+0EAE;SA # LAO LETTER HO TAM
+0EAF;SA # LAO ELLIPSIS
+0EB0;SA # LAO VOWEL SIGN A
+0EB1;CM # LAO VOWEL SIGN MAI KAN
+0EB2;SA # LAO VOWEL SIGN AA
+0EB3;SA # LAO VOWEL SIGN AM
+0EB4;CM # LAO VOWEL SIGN I
+0EB5;CM # LAO VOWEL SIGN II
+0EB6;CM # LAO VOWEL SIGN Y
+0EB7;CM # LAO VOWEL SIGN YY
+0EB8;CM # LAO VOWEL SIGN U
+0EB9;CM # LAO VOWEL SIGN UU
+0EBB;CM # LAO VOWEL SIGN MAI KON
+0EBC;CM # LAO SEMIVOWEL SIGN LO
+0EBD;SA # LAO SEMIVOWEL SIGN NYO
+0EC0;SA # LAO VOWEL SIGN E
+0EC1;SA # LAO VOWEL SIGN EI
+0EC2;SA # LAO VOWEL SIGN O
+0EC3;SA # LAO VOWEL SIGN AY
+0EC4;SA # LAO VOWEL SIGN AI
+0EC6;SA # LAO KO LA
+0EC8;CM # LAO TONE MAI EK
+0EC9;CM # LAO TONE MAI THO
+0ECA;CM # LAO TONE MAI TI
+0ECB;CM # LAO TONE MAI CATAWA
+0ECC;CM # LAO CANCELLATION MARK
+0ECD;CM # LAO NIGGAHITA
+0ED0;NU # LAO DIGIT ZERO
+0ED1;NU # LAO DIGIT ONE
+0ED2;NU # LAO DIGIT TWO
+0ED3;NU # LAO DIGIT THREE
+0ED4;NU # LAO DIGIT FOUR
+0ED5;NU # LAO DIGIT FIVE
+0ED6;NU # LAO DIGIT SIX
+0ED7;NU # LAO DIGIT SEVEN
+0ED8;NU # LAO DIGIT EIGHT
+0ED9;NU # LAO DIGIT NINE
+0EDC;SA # LAO HO NO
+0EDD;SA # LAO HO MO
+0F00;AL # TIBETAN SYLLABLE OM
+0F01;AL # TIBETAN MARK GTER YIG MGO TRUNCATED A
+0F02;AL # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
+0F03;AL # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F04;AL # TIBETAN MARK INITIAL YIG MGO MDUN MA
+0F05;AL # TIBETAN MARK CLOSING YIG MGO SGAB MA
+0F06;AL # TIBETAN MARK CARET YIG MGO PHUR SHAD MA
+0F07;AL # TIBETAN MARK YIG MGO TSHEG SHAD MA
+0F08;AL # TIBETAN MARK SBRUL SHAD
+0F09;AL # TIBETAN MARK BSKUR YIG MGO
+0F0A;AL # TIBETAN MARK BKA- SHOG YIG MGO
+0F0B;BA # TIBETAN MARK INTERSYLLABIC TSHEG
+0F0C;GL # TIBETAN MARK DELIMITER TSHEG BSTAR
+0F0D;AL # TIBETAN MARK SHAD
+0F0E;AL # TIBETAN MARK NYIS SHAD
+0F0F;AL # TIBETAN MARK TSHEG SHAD
+0F10;AL # TIBETAN MARK NYIS TSHEG SHAD
+0F11;AL # TIBETAN MARK RIN CHEN SPUNGS SHAD
+0F12;AL # TIBETAN MARK RGYA GRAM SHAD
+0F13;AL # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
+0F14;AL # TIBETAN MARK GTER TSHEG
+0F15;AL # TIBETAN LOGOTYPE SIGN CHAD RTAGS
+0F16;AL # TIBETAN LOGOTYPE SIGN LHAG RTAGS
+0F17;AL # TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F18;CM # TIBETAN ASTROLOGICAL SIGN -KHYUD PA
+0F19;CM # TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F1A;AL # TIBETAN SIGN RDEL DKAR GCIG
+0F1B;AL # TIBETAN SIGN RDEL DKAR GNYIS
+0F1C;AL # TIBETAN SIGN RDEL DKAR GSUM
+0F1D;AL # TIBETAN SIGN RDEL NAG GCIG
+0F1E;AL # TIBETAN SIGN RDEL NAG GNYIS
+0F1F;AL # TIBETAN SIGN RDEL DKAR RDEL NAG
+0F20;NU # TIBETAN DIGIT ZERO
+0F21;NU # TIBETAN DIGIT ONE
+0F22;NU # TIBETAN DIGIT TWO
+0F23;NU # TIBETAN DIGIT THREE
+0F24;NU # TIBETAN DIGIT FOUR
+0F25;NU # TIBETAN DIGIT FIVE
+0F26;NU # TIBETAN DIGIT SIX
+0F27;NU # TIBETAN DIGIT SEVEN
+0F28;NU # TIBETAN DIGIT EIGHT
+0F29;NU # TIBETAN DIGIT NINE
+0F2A;AL # TIBETAN DIGIT HALF ONE
+0F2B;AL # TIBETAN DIGIT HALF TWO
+0F2C;AL # TIBETAN DIGIT HALF THREE
+0F2D;AL # TIBETAN DIGIT HALF FOUR
+0F2E;AL # TIBETAN DIGIT HALF FIVE
+0F2F;AL # TIBETAN DIGIT HALF SIX
+0F30;AL # TIBETAN DIGIT HALF SEVEN
+0F31;AL # TIBETAN DIGIT HALF EIGHT
+0F32;AL # TIBETAN DIGIT HALF NINE
+0F33;AL # TIBETAN DIGIT HALF ZERO
+0F34;AL # TIBETAN MARK BSDUS RTAGS
+0F35;CM # TIBETAN MARK NGAS BZUNG NYI ZLA
+0F36;AL # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F37;CM # TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F38;AL # TIBETAN MARK CHE MGO
+0F39;CM # TIBETAN MARK TSA -PHRU
+0F3A;OP # TIBETAN MARK GUG RTAGS GYON
+0F3B;CL # TIBETAN MARK GUG RTAGS GYAS
+0F3C;OP # TIBETAN MARK ANG KHANG GYON
+0F3D;CL # TIBETAN MARK ANG KHANG GYAS
+0F3E;CM # TIBETAN SIGN YAR TSHES
+0F3F;CM # TIBETAN SIGN MAR TSHES
+0F40;AL # TIBETAN LETTER KA
+0F41;AL # TIBETAN LETTER KHA
+0F42;AL # TIBETAN LETTER GA
+0F43;AL # TIBETAN LETTER GHA
+0F44;AL # TIBETAN LETTER NGA
+0F45;AL # TIBETAN LETTER CA
+0F46;AL # TIBETAN LETTER CHA
+0F47;AL # TIBETAN LETTER JA
+0F49;AL # TIBETAN LETTER NYA
+0F4A;AL # TIBETAN LETTER TTA
+0F4B;AL # TIBETAN LETTER TTHA
+0F4C;AL # TIBETAN LETTER DDA
+0F4D;AL # TIBETAN LETTER DDHA
+0F4E;AL # TIBETAN LETTER NNA
+0F4F;AL # TIBETAN LETTER TA
+0F50;AL # TIBETAN LETTER THA
+0F51;AL # TIBETAN LETTER DA
+0F52;AL # TIBETAN LETTER DHA
+0F53;AL # TIBETAN LETTER NA
+0F54;AL # TIBETAN LETTER PA
+0F55;AL # TIBETAN LETTER PHA
+0F56;AL # TIBETAN LETTER BA
+0F57;AL # TIBETAN LETTER BHA
+0F58;AL # TIBETAN LETTER MA
+0F59;AL # TIBETAN LETTER TSA
+0F5A;AL # TIBETAN LETTER TSHA
+0F5B;AL # TIBETAN LETTER DZA
+0F5C;AL # TIBETAN LETTER DZHA
+0F5D;AL # TIBETAN LETTER WA
+0F5E;AL # TIBETAN LETTER ZHA
+0F5F;AL # TIBETAN LETTER ZA
+0F60;AL # TIBETAN LETTER -A
+0F61;AL # TIBETAN LETTER YA
+0F62;AL # TIBETAN LETTER RA
+0F63;AL # TIBETAN LETTER LA
+0F64;AL # TIBETAN LETTER SHA
+0F65;AL # TIBETAN LETTER SSA
+0F66;AL # TIBETAN LETTER SA
+0F67;AL # TIBETAN LETTER HA
+0F68;AL # TIBETAN LETTER A
+0F69;AL # TIBETAN LETTER KSSA
+0F6A;AL # TIBETAN LETTER FIXED-FORM RA
+0F71;CM # TIBETAN VOWEL SIGN AA
+0F72;CM # TIBETAN VOWEL SIGN I
+0F73;CM # TIBETAN VOWEL SIGN II
+0F74;CM # TIBETAN VOWEL SIGN U
+0F75;CM # TIBETAN VOWEL SIGN UU
+0F76;CM # TIBETAN VOWEL SIGN VOCALIC R
+0F77;CM # TIBETAN VOWEL SIGN VOCALIC RR
+0F78;CM # TIBETAN VOWEL SIGN VOCALIC L
+0F79;CM # TIBETAN VOWEL SIGN VOCALIC LL
+0F7A;CM # TIBETAN VOWEL SIGN E
+0F7B;CM # TIBETAN VOWEL SIGN EE
+0F7C;CM # TIBETAN VOWEL SIGN O
+0F7D;CM # TIBETAN VOWEL SIGN OO
+0F7E;CM # TIBETAN SIGN RJES SU NGA RO
+0F7F;CM # TIBETAN SIGN RNAM BCAD
+0F80;CM # TIBETAN VOWEL SIGN REVERSED I
+0F81;CM # TIBETAN VOWEL SIGN REVERSED II
+0F82;CM # TIBETAN SIGN NYI ZLA NAA DA
+0F83;CM # TIBETAN SIGN SNA LDAN
+0F84;CM # TIBETAN MARK HALANTA
+0F85;AL # TIBETAN MARK PALUTA
+0F86;CM # TIBETAN SIGN LCI RTAGS
+0F87;CM # TIBETAN SIGN YANG RTAGS
+0F88;AL # TIBETAN SIGN LCE TSA CAN
+0F89;AL # TIBETAN SIGN MCHU CAN
+0F8A;AL # TIBETAN SIGN GRU CAN RGYINGS
+0F8B;AL # TIBETAN SIGN GRU MED RGYINGS
+0F90;CM # TIBETAN SUBJOINED LETTER KA
+0F91;CM # TIBETAN SUBJOINED LETTER KHA
+0F92;CM # TIBETAN SUBJOINED LETTER GA
+0F93;CM # TIBETAN SUBJOINED LETTER GHA
+0F94;CM # TIBETAN SUBJOINED LETTER NGA
+0F95;CM # TIBETAN SUBJOINED LETTER CA
+0F96;CM # TIBETAN SUBJOINED LETTER CHA
+0F97;CM # TIBETAN SUBJOINED LETTER JA
+0F99;CM # TIBETAN SUBJOINED LETTER NYA
+0F9A;CM # TIBETAN SUBJOINED LETTER TTA
+0F9B;CM # TIBETAN SUBJOINED LETTER TTHA
+0F9C;CM # TIBETAN SUBJOINED LETTER DDA
+0F9D;CM # TIBETAN SUBJOINED LETTER DDHA
+0F9E;CM # TIBETAN SUBJOINED LETTER NNA
+0F9F;CM # TIBETAN SUBJOINED LETTER TA
+0FA0;CM # TIBETAN SUBJOINED LETTER THA
+0FA1;CM # TIBETAN SUBJOINED LETTER DA
+0FA2;CM # TIBETAN SUBJOINED LETTER DHA
+0FA3;CM # TIBETAN SUBJOINED LETTER NA
+0FA4;CM # TIBETAN SUBJOINED LETTER PA
+0FA5;CM # TIBETAN SUBJOINED LETTER PHA
+0FA6;CM # TIBETAN SUBJOINED LETTER BA
+0FA7;CM # TIBETAN SUBJOINED LETTER BHA
+0FA8;CM # TIBETAN SUBJOINED LETTER MA
+0FA9;CM # TIBETAN SUBJOINED LETTER TSA
+0FAA;CM # TIBETAN SUBJOINED LETTER TSHA
+0FAB;CM # TIBETAN SUBJOINED LETTER DZA
+0FAC;CM # TIBETAN SUBJOINED LETTER DZHA
+0FAD;CM # TIBETAN SUBJOINED LETTER WA
+0FAE;CM # TIBETAN SUBJOINED LETTER ZHA
+0FAF;CM # TIBETAN SUBJOINED LETTER ZA
+0FB0;CM # TIBETAN SUBJOINED LETTER -A
+0FB1;CM # TIBETAN SUBJOINED LETTER YA
+0FB2;CM # TIBETAN SUBJOINED LETTER RA
+0FB3;CM # TIBETAN SUBJOINED LETTER LA
+0FB4;CM # TIBETAN SUBJOINED LETTER SHA
+0FB5;CM # TIBETAN SUBJOINED LETTER SSA
+0FB6;CM # TIBETAN SUBJOINED LETTER SA
+0FB7;CM # TIBETAN SUBJOINED LETTER HA
+0FB8;CM # TIBETAN SUBJOINED LETTER A
+0FB9;CM # TIBETAN SUBJOINED LETTER KSSA
+0FBA;CM # TIBETAN SUBJOINED LETTER FIXED-FORM WA
+0FBB;CM # TIBETAN SUBJOINED LETTER FIXED-FORM YA
+0FBC;CM # TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FBE;AL # TIBETAN KU RU KHA
+0FBF;AL # TIBETAN KU RU KHA BZHI MIG CAN
+0FC0;AL # TIBETAN CANTILLATION SIGN HEAVY BEAT
+0FC1;AL # TIBETAN CANTILLATION SIGN LIGHT BEAT
+0FC2;AL # TIBETAN CANTILLATION SIGN CANG TE-U
+0FC3;AL # TIBETAN CANTILLATION SIGN SBUB -CHAL
+0FC4;AL # TIBETAN SYMBOL DRIL BU
+0FC5;AL # TIBETAN SYMBOL RDO RJE
+0FC6;CM # TIBETAN SYMBOL PADMA GDAN
+0FC7;AL # TIBETAN SYMBOL RDO RJE RGYA GRAM
+0FC8;AL # TIBETAN SYMBOL PHUR PA
+0FC9;AL # TIBETAN SYMBOL NOR BU
+0FCA;AL # TIBETAN SYMBOL NOR BU NYIS -KHYIL
+0FCB;AL # TIBETAN SYMBOL NOR BU GSUM -KHYIL
+0FCC;AL # TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCF;AL # TIBETAN SIGN RDEL NAG GSUM
+1000;SA # MYANMAR LETTER KA
+1001;SA # MYANMAR LETTER KHA
+1002;SA # MYANMAR LETTER GA
+1003;SA # MYANMAR LETTER GHA
+1004;SA # MYANMAR LETTER NGA
+1005;SA # MYANMAR LETTER CA
+1006;SA # MYANMAR LETTER CHA
+1007;SA # MYANMAR LETTER JA
+1008;SA # MYANMAR LETTER JHA
+1009;SA # MYANMAR LETTER NYA
+100A;SA # MYANMAR LETTER NNYA
+100B;SA # MYANMAR LETTER TTA
+100C;SA # MYANMAR LETTER TTHA
+100D;SA # MYANMAR LETTER DDA
+100E;SA # MYANMAR LETTER DDHA
+100F;SA # MYANMAR LETTER NNA
+1010;SA # MYANMAR LETTER TA
+1011;SA # MYANMAR LETTER THA
+1012;SA # MYANMAR LETTER DA
+1013;SA # MYANMAR LETTER DHA
+1014;SA # MYANMAR LETTER NA
+1015;SA # MYANMAR LETTER PA
+1016;SA # MYANMAR LETTER PHA
+1017;SA # MYANMAR LETTER BA
+1018;SA # MYANMAR LETTER BHA
+1019;SA # MYANMAR LETTER MA
+101A;SA # MYANMAR LETTER YA
+101B;SA # MYANMAR LETTER RA
+101C;SA # MYANMAR LETTER LA
+101D;SA # MYANMAR LETTER WA
+101E;SA # MYANMAR LETTER SA
+101F;SA # MYANMAR LETTER HA
+1020;SA # MYANMAR LETTER LLA
+1021;SA # MYANMAR LETTER A
+1023;SA # MYANMAR LETTER I
+1024;SA # MYANMAR LETTER II
+1025;SA # MYANMAR LETTER U
+1026;SA # MYANMAR LETTER UU
+1027;SA # MYANMAR LETTER E
+1029;SA # MYANMAR LETTER O
+102A;SA # MYANMAR LETTER AU
+102C;CM # MYANMAR VOWEL SIGN AA
+102D;CM # MYANMAR VOWEL SIGN I
+102E;CM # MYANMAR VOWEL SIGN II
+102F;CM # MYANMAR VOWEL SIGN U
+1030;CM # MYANMAR VOWEL SIGN UU
+1031;CM # MYANMAR VOWEL SIGN E
+1032;CM # MYANMAR VOWEL SIGN AI
+1036;CM # MYANMAR SIGN ANUSVARA
+1037;CM # MYANMAR SIGN DOT BELOW
+1038;CM # MYANMAR SIGN VISARGA
+1039;CM # MYANMAR SIGN VIRAMA
+1040;NU # MYANMAR DIGIT ZERO
+1041;NU # MYANMAR DIGIT ONE
+1042;NU # MYANMAR DIGIT TWO
+1043;NU # MYANMAR DIGIT THREE
+1044;NU # MYANMAR DIGIT FOUR
+1045;NU # MYANMAR DIGIT FIVE
+1046;NU # MYANMAR DIGIT SIX
+1047;NU # MYANMAR DIGIT SEVEN
+1048;NU # MYANMAR DIGIT EIGHT
+1049;NU # MYANMAR DIGIT NINE
+104A;AL # MYANMAR SIGN LITTLE SECTION
+104B;AL # MYANMAR SIGN SECTION
+104C;AL # MYANMAR SYMBOL LOCATIVE
+104D;AL # MYANMAR SYMBOL COMPLETED
+104E;AL # MYANMAR SYMBOL AFOREMENTIONED
+104F;AL # MYANMAR SYMBOL GENITIVE
+1050;SA # MYANMAR LETTER SHA
+1051;SA # MYANMAR LETTER SSA
+1052;SA # MYANMAR LETTER VOCALIC R
+1053;SA # MYANMAR LETTER VOCALIC RR
+1054;SA # MYANMAR LETTER VOCALIC L
+1055;SA # MYANMAR LETTER VOCALIC LL
+1056;CM # MYANMAR VOWEL SIGN VOCALIC R
+1057;CM # MYANMAR VOWEL SIGN VOCALIC RR
+1058;CM # MYANMAR VOWEL SIGN VOCALIC L
+1059;CM # MYANMAR VOWEL SIGN VOCALIC LL
+10A0;AL # GEORGIAN CAPITAL LETTER AN
+10A1;AL # GEORGIAN CAPITAL LETTER BAN
+10A2;AL # GEORGIAN CAPITAL LETTER GAN
+10A3;AL # GEORGIAN CAPITAL LETTER DON
+10A4;AL # GEORGIAN CAPITAL LETTER EN
+10A5;AL # GEORGIAN CAPITAL LETTER VIN
+10A6;AL # GEORGIAN CAPITAL LETTER ZEN
+10A7;AL # GEORGIAN CAPITAL LETTER TAN
+10A8;AL # GEORGIAN CAPITAL LETTER IN
+10A9;AL # GEORGIAN CAPITAL LETTER KAN
+10AA;AL # GEORGIAN CAPITAL LETTER LAS
+10AB;AL # GEORGIAN CAPITAL LETTER MAN
+10AC;AL # GEORGIAN CAPITAL LETTER NAR
+10AD;AL # GEORGIAN CAPITAL LETTER ON
+10AE;AL # GEORGIAN CAPITAL LETTER PAR
+10AF;AL # GEORGIAN CAPITAL LETTER ZHAR
+10B0;AL # GEORGIAN CAPITAL LETTER RAE
+10B1;AL # GEORGIAN CAPITAL LETTER SAN
+10B2;AL # GEORGIAN CAPITAL LETTER TAR
+10B3;AL # GEORGIAN CAPITAL LETTER UN
+10B4;AL # GEORGIAN CAPITAL LETTER PHAR
+10B5;AL # GEORGIAN CAPITAL LETTER KHAR
+10B6;AL # GEORGIAN CAPITAL LETTER GHAN
+10B7;AL # GEORGIAN CAPITAL LETTER QAR
+10B8;AL # GEORGIAN CAPITAL LETTER SHIN
+10B9;AL # GEORGIAN CAPITAL LETTER CHIN
+10BA;AL # GEORGIAN CAPITAL LETTER CAN
+10BB;AL # GEORGIAN CAPITAL LETTER JIL
+10BC;AL # GEORGIAN CAPITAL LETTER CIL
+10BD;AL # GEORGIAN CAPITAL LETTER CHAR
+10BE;AL # GEORGIAN CAPITAL LETTER XAN
+10BF;AL # GEORGIAN CAPITAL LETTER JHAN
+10C0;AL # GEORGIAN CAPITAL LETTER HAE
+10C1;AL # GEORGIAN CAPITAL LETTER HE
+10C2;AL # GEORGIAN CAPITAL LETTER HIE
+10C3;AL # GEORGIAN CAPITAL LETTER WE
+10C4;AL # GEORGIAN CAPITAL LETTER HAR
+10C5;AL # GEORGIAN CAPITAL LETTER HOE
+10D0;AL # GEORGIAN LETTER AN
+10D1;AL # GEORGIAN LETTER BAN
+10D2;AL # GEORGIAN LETTER GAN
+10D3;AL # GEORGIAN LETTER DON
+10D4;AL # GEORGIAN LETTER EN
+10D5;AL # GEORGIAN LETTER VIN
+10D6;AL # GEORGIAN LETTER ZEN
+10D7;AL # GEORGIAN LETTER TAN
+10D8;AL # GEORGIAN LETTER IN
+10D9;AL # GEORGIAN LETTER KAN
+10DA;AL # GEORGIAN LETTER LAS
+10DB;AL # GEORGIAN LETTER MAN
+10DC;AL # GEORGIAN LETTER NAR
+10DD;AL # GEORGIAN LETTER ON
+10DE;AL # GEORGIAN LETTER PAR
+10DF;AL # GEORGIAN LETTER ZHAR
+10E0;AL # GEORGIAN LETTER RAE
+10E1;AL # GEORGIAN LETTER SAN
+10E2;AL # GEORGIAN LETTER TAR
+10E3;AL # GEORGIAN LETTER UN
+10E4;AL # GEORGIAN LETTER PHAR
+10E5;AL # GEORGIAN LETTER KHAR
+10E6;AL # GEORGIAN LETTER GHAN
+10E7;AL # GEORGIAN LETTER QAR
+10E8;AL # GEORGIAN LETTER SHIN
+10E9;AL # GEORGIAN LETTER CHIN
+10EA;AL # GEORGIAN LETTER CAN
+10EB;AL # GEORGIAN LETTER JIL
+10EC;AL # GEORGIAN LETTER CIL
+10ED;AL # GEORGIAN LETTER CHAR
+10EE;AL # GEORGIAN LETTER XAN
+10EF;AL # GEORGIAN LETTER JHAN
+10F0;AL # GEORGIAN LETTER HAE
+10F1;AL # GEORGIAN LETTER HE
+10F2;AL # GEORGIAN LETTER HIE
+10F3;AL # GEORGIAN LETTER WE
+10F4;AL # GEORGIAN LETTER HAR
+10F5;AL # GEORGIAN LETTER HOE
+10F6;AL # GEORGIAN LETTER FI
+10F7;AL # GEORGIAN LETTER YN
+10F8;AL # GEORGIAN LETTER ELIFI
+10FB;AL # GEORGIAN PARAGRAPH SEPARATOR
+1100;ID # HANGUL CHOSEONG KIYEOK
+1101;ID # HANGUL CHOSEONG SSANGKIYEOK
+1102;ID # HANGUL CHOSEONG NIEUN
+1103;ID # HANGUL CHOSEONG TIKEUT
+1104;ID # HANGUL CHOSEONG SSANGTIKEUT
+1105;ID # HANGUL CHOSEONG RIEUL
+1106;ID # HANGUL CHOSEONG MIEUM
+1107;ID # HANGUL CHOSEONG PIEUP
+1108;ID # HANGUL CHOSEONG SSANGPIEUP
+1109;ID # HANGUL CHOSEONG SIOS
+110A;ID # HANGUL CHOSEONG SSANGSIOS
+110B;ID # HANGUL CHOSEONG IEUNG
+110C;ID # HANGUL CHOSEONG CIEUC
+110D;ID # HANGUL CHOSEONG SSANGCIEUC
+110E;ID # HANGUL CHOSEONG CHIEUCH
+110F;ID # HANGUL CHOSEONG KHIEUKH
+1110;ID # HANGUL CHOSEONG THIEUTH
+1111;ID # HANGUL CHOSEONG PHIEUPH
+1112;ID # HANGUL CHOSEONG HIEUH
+1113;ID # HANGUL CHOSEONG NIEUN-KIYEOK
+1114;ID # HANGUL CHOSEONG SSANGNIEUN
+1115;ID # HANGUL CHOSEONG NIEUN-TIKEUT
+1116;ID # HANGUL CHOSEONG NIEUN-PIEUP
+1117;ID # HANGUL CHOSEONG TIKEUT-KIYEOK
+1118;ID # HANGUL CHOSEONG RIEUL-NIEUN
+1119;ID # HANGUL CHOSEONG SSANGRIEUL
+111A;ID # HANGUL CHOSEONG RIEUL-HIEUH
+111B;ID # HANGUL CHOSEONG KAPYEOUNRIEUL
+111C;ID # HANGUL CHOSEONG MIEUM-PIEUP
+111D;ID # HANGUL CHOSEONG KAPYEOUNMIEUM
+111E;ID # HANGUL CHOSEONG PIEUP-KIYEOK
+111F;ID # HANGUL CHOSEONG PIEUP-NIEUN
+1120;ID # HANGUL CHOSEONG PIEUP-TIKEUT
+1121;ID # HANGUL CHOSEONG PIEUP-SIOS
+1122;ID # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
+1123;ID # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
+1124;ID # HANGUL CHOSEONG PIEUP-SIOS-PIEUP
+1125;ID # HANGUL CHOSEONG PIEUP-SSANGSIOS
+1126;ID # HANGUL CHOSEONG PIEUP-SIOS-CIEUC
+1127;ID # HANGUL CHOSEONG PIEUP-CIEUC
+1128;ID # HANGUL CHOSEONG PIEUP-CHIEUCH
+1129;ID # HANGUL CHOSEONG PIEUP-THIEUTH
+112A;ID # HANGUL CHOSEONG PIEUP-PHIEUPH
+112B;ID # HANGUL CHOSEONG KAPYEOUNPIEUP
+112C;ID # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
+112D;ID # HANGUL CHOSEONG SIOS-KIYEOK
+112E;ID # HANGUL CHOSEONG SIOS-NIEUN
+112F;ID # HANGUL CHOSEONG SIOS-TIKEUT
+1130;ID # HANGUL CHOSEONG SIOS-RIEUL
+1131;ID # HANGUL CHOSEONG SIOS-MIEUM
+1132;ID # HANGUL CHOSEONG SIOS-PIEUP
+1133;ID # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
+1134;ID # HANGUL CHOSEONG SIOS-SSANGSIOS
+1135;ID # HANGUL CHOSEONG SIOS-IEUNG
+1136;ID # HANGUL CHOSEONG SIOS-CIEUC
+1137;ID # HANGUL CHOSEONG SIOS-CHIEUCH
+1138;ID # HANGUL CHOSEONG SIOS-KHIEUKH
+1139;ID # HANGUL CHOSEONG SIOS-THIEUTH
+113A;ID # HANGUL CHOSEONG SIOS-PHIEUPH
+113B;ID # HANGUL CHOSEONG SIOS-HIEUH
+113C;ID # HANGUL CHOSEONG CHITUEUMSIOS
+113D;ID # HANGUL CHOSEONG CHITUEUMSSANGSIOS
+113E;ID # HANGUL CHOSEONG CEONGCHIEUMSIOS
+113F;ID # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
+1140;ID # HANGUL CHOSEONG PANSIOS
+1141;ID # HANGUL CHOSEONG IEUNG-KIYEOK
+1142;ID # HANGUL CHOSEONG IEUNG-TIKEUT
+1143;ID # HANGUL CHOSEONG IEUNG-MIEUM
+1144;ID # HANGUL CHOSEONG IEUNG-PIEUP
+1145;ID # HANGUL CHOSEONG IEUNG-SIOS
+1146;ID # HANGUL CHOSEONG IEUNG-PANSIOS
+1147;ID # HANGUL CHOSEONG SSANGIEUNG
+1148;ID # HANGUL CHOSEONG IEUNG-CIEUC
+1149;ID # HANGUL CHOSEONG IEUNG-CHIEUCH
+114A;ID # HANGUL CHOSEONG IEUNG-THIEUTH
+114B;ID # HANGUL CHOSEONG IEUNG-PHIEUPH
+114C;ID # HANGUL CHOSEONG YESIEUNG
+114D;ID # HANGUL CHOSEONG CIEUC-IEUNG
+114E;ID # HANGUL CHOSEONG CHITUEUMCIEUC
+114F;ID # HANGUL CHOSEONG CHITUEUMSSANGCIEUC
+1150;ID # HANGUL CHOSEONG CEONGCHIEUMCIEUC
+1151;ID # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
+1152;ID # HANGUL CHOSEONG CHIEUCH-KHIEUKH
+1153;ID # HANGUL CHOSEONG CHIEUCH-HIEUH
+1154;ID # HANGUL CHOSEONG CHITUEUMCHIEUCH
+1155;ID # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
+1156;ID # HANGUL CHOSEONG PHIEUPH-PIEUP
+1157;ID # HANGUL CHOSEONG KAPYEOUNPHIEUPH
+1158;ID # HANGUL CHOSEONG SSANGHIEUH
+1159;ID # HANGUL CHOSEONG YEORINHIEUH
+115F;ID # HANGUL CHOSEONG FILLER
+1160;CM # HANGUL JUNGSEONG FILLER
+1161;CM # HANGUL JUNGSEONG A
+1162;CM # HANGUL JUNGSEONG AE
+1163;CM # HANGUL JUNGSEONG YA
+1164;CM # HANGUL JUNGSEONG YAE
+1165;CM # HANGUL JUNGSEONG EO
+1166;CM # HANGUL JUNGSEONG E
+1167;CM # HANGUL JUNGSEONG YEO
+1168;CM # HANGUL JUNGSEONG YE
+1169;CM # HANGUL JUNGSEONG O
+116A;CM # HANGUL JUNGSEONG WA
+116B;CM # HANGUL JUNGSEONG WAE
+116C;CM # HANGUL JUNGSEONG OE
+116D;CM # HANGUL JUNGSEONG YO
+116E;CM # HANGUL JUNGSEONG U
+116F;CM # HANGUL JUNGSEONG WEO
+1170;CM # HANGUL JUNGSEONG WE
+1171;CM # HANGUL JUNGSEONG WI
+1172;CM # HANGUL JUNGSEONG YU
+1173;CM # HANGUL JUNGSEONG EU
+1174;CM # HANGUL JUNGSEONG YI
+1175;CM # HANGUL JUNGSEONG I
+1176;CM # HANGUL JUNGSEONG A-O
+1177;CM # HANGUL JUNGSEONG A-U
+1178;CM # HANGUL JUNGSEONG YA-O
+1179;CM # HANGUL JUNGSEONG YA-YO
+117A;CM # HANGUL JUNGSEONG EO-O
+117B;CM # HANGUL JUNGSEONG EO-U
+117C;CM # HANGUL JUNGSEONG EO-EU
+117D;CM # HANGUL JUNGSEONG YEO-O
+117E;CM # HANGUL JUNGSEONG YEO-U
+117F;CM # HANGUL JUNGSEONG O-EO
+1180;CM # HANGUL JUNGSEONG O-E
+1181;CM # HANGUL JUNGSEONG O-YE
+1182;CM # HANGUL JUNGSEONG O-O
+1183;CM # HANGUL JUNGSEONG O-U
+1184;CM # HANGUL JUNGSEONG YO-YA
+1185;CM # HANGUL JUNGSEONG YO-YAE
+1186;CM # HANGUL JUNGSEONG YO-YEO
+1187;CM # HANGUL JUNGSEONG YO-O
+1188;CM # HANGUL JUNGSEONG YO-I
+1189;CM # HANGUL JUNGSEONG U-A
+118A;CM # HANGUL JUNGSEONG U-AE
+118B;CM # HANGUL JUNGSEONG U-EO-EU
+118C;CM # HANGUL JUNGSEONG U-YE
+118D;CM # HANGUL JUNGSEONG U-U
+118E;CM # HANGUL JUNGSEONG YU-A
+118F;CM # HANGUL JUNGSEONG YU-EO
+1190;CM # HANGUL JUNGSEONG YU-E
+1191;CM # HANGUL JUNGSEONG YU-YEO
+1192;CM # HANGUL JUNGSEONG YU-YE
+1193;CM # HANGUL JUNGSEONG YU-U
+1194;CM # HANGUL JUNGSEONG YU-I
+1195;CM # HANGUL JUNGSEONG EU-U
+1196;CM # HANGUL JUNGSEONG EU-EU
+1197;CM # HANGUL JUNGSEONG YI-U
+1198;CM # HANGUL JUNGSEONG I-A
+1199;CM # HANGUL JUNGSEONG I-YA
+119A;CM # HANGUL JUNGSEONG I-O
+119B;CM # HANGUL JUNGSEONG I-U
+119C;CM # HANGUL JUNGSEONG I-EU
+119D;CM # HANGUL JUNGSEONG I-ARAEA
+119E;CM # HANGUL JUNGSEONG ARAEA
+119F;CM # HANGUL JUNGSEONG ARAEA-EO
+11A0;CM # HANGUL JUNGSEONG ARAEA-U
+11A1;CM # HANGUL JUNGSEONG ARAEA-I
+11A2;CM # HANGUL JUNGSEONG SSANGARAEA
+11A8;CM # HANGUL JONGSEONG KIYEOK
+11A9;CM # HANGUL JONGSEONG SSANGKIYEOK
+11AA;CM # HANGUL JONGSEONG KIYEOK-SIOS
+11AB;CM # HANGUL JONGSEONG NIEUN
+11AC;CM # HANGUL JONGSEONG NIEUN-CIEUC
+11AD;CM # HANGUL JONGSEONG NIEUN-HIEUH
+11AE;CM # HANGUL JONGSEONG TIKEUT
+11AF;CM # HANGUL JONGSEONG RIEUL
+11B0;CM # HANGUL JONGSEONG RIEUL-KIYEOK
+11B1;CM # HANGUL JONGSEONG RIEUL-MIEUM
+11B2;CM # HANGUL JONGSEONG RIEUL-PIEUP
+11B3;CM # HANGUL JONGSEONG RIEUL-SIOS
+11B4;CM # HANGUL JONGSEONG RIEUL-THIEUTH
+11B5;CM # HANGUL JONGSEONG RIEUL-PHIEUPH
+11B6;CM # HANGUL JONGSEONG RIEUL-HIEUH
+11B7;CM # HANGUL JONGSEONG MIEUM
+11B8;CM # HANGUL JONGSEONG PIEUP
+11B9;CM # HANGUL JONGSEONG PIEUP-SIOS
+11BA;CM # HANGUL JONGSEONG SIOS
+11BB;CM # HANGUL JONGSEONG SSANGSIOS
+11BC;CM # HANGUL JONGSEONG IEUNG
+11BD;CM # HANGUL JONGSEONG CIEUC
+11BE;CM # HANGUL JONGSEONG CHIEUCH
+11BF;CM # HANGUL JONGSEONG KHIEUKH
+11C0;CM # HANGUL JONGSEONG THIEUTH
+11C1;CM # HANGUL JONGSEONG PHIEUPH
+11C2;CM # HANGUL JONGSEONG HIEUH
+11C3;CM # HANGUL JONGSEONG KIYEOK-RIEUL
+11C4;CM # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
+11C5;CM # HANGUL JONGSEONG NIEUN-KIYEOK
+11C6;CM # HANGUL JONGSEONG NIEUN-TIKEUT
+11C7;CM # HANGUL JONGSEONG NIEUN-SIOS
+11C8;CM # HANGUL JONGSEONG NIEUN-PANSIOS
+11C9;CM # HANGUL JONGSEONG NIEUN-THIEUTH
+11CA;CM # HANGUL JONGSEONG TIKEUT-KIYEOK
+11CB;CM # HANGUL JONGSEONG TIKEUT-RIEUL
+11CC;CM # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
+11CD;CM # HANGUL JONGSEONG RIEUL-NIEUN
+11CE;CM # HANGUL JONGSEONG RIEUL-TIKEUT
+11CF;CM # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
+11D0;CM # HANGUL JONGSEONG SSANGRIEUL
+11D1;CM # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
+11D2;CM # HANGUL JONGSEONG RIEUL-MIEUM-SIOS
+11D3;CM # HANGUL JONGSEONG RIEUL-PIEUP-SIOS
+11D4;CM # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
+11D5;CM # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
+11D6;CM # HANGUL JONGSEONG RIEUL-SSANGSIOS
+11D7;CM # HANGUL JONGSEONG RIEUL-PANSIOS
+11D8;CM # HANGUL JONGSEONG RIEUL-KHIEUKH
+11D9;CM # HANGUL JONGSEONG RIEUL-YEORINHIEUH
+11DA;CM # HANGUL JONGSEONG MIEUM-KIYEOK
+11DB;CM # HANGUL JONGSEONG MIEUM-RIEUL
+11DC;CM # HANGUL JONGSEONG MIEUM-PIEUP
+11DD;CM # HANGUL JONGSEONG MIEUM-SIOS
+11DE;CM # HANGUL JONGSEONG MIEUM-SSANGSIOS
+11DF;CM # HANGUL JONGSEONG MIEUM-PANSIOS
+11E0;CM # HANGUL JONGSEONG MIEUM-CHIEUCH
+11E1;CM # HANGUL JONGSEONG MIEUM-HIEUH
+11E2;CM # HANGUL JONGSEONG KAPYEOUNMIEUM
+11E3;CM # HANGUL JONGSEONG PIEUP-RIEUL
+11E4;CM # HANGUL JONGSEONG PIEUP-PHIEUPH
+11E5;CM # HANGUL JONGSEONG PIEUP-HIEUH
+11E6;CM # HANGUL JONGSEONG KAPYEOUNPIEUP
+11E7;CM # HANGUL JONGSEONG SIOS-KIYEOK
+11E8;CM # HANGUL JONGSEONG SIOS-TIKEUT
+11E9;CM # HANGUL JONGSEONG SIOS-RIEUL
+11EA;CM # HANGUL JONGSEONG SIOS-PIEUP
+11EB;CM # HANGUL JONGSEONG PANSIOS
+11EC;CM # HANGUL JONGSEONG IEUNG-KIYEOK
+11ED;CM # HANGUL JONGSEONG IEUNG-SSANGKIYEOK
+11EE;CM # HANGUL JONGSEONG SSANGIEUNG
+11EF;CM # HANGUL JONGSEONG IEUNG-KHIEUKH
+11F0;CM # HANGUL JONGSEONG YESIEUNG
+11F1;CM # HANGUL JONGSEONG YESIEUNG-SIOS
+11F2;CM # HANGUL JONGSEONG YESIEUNG-PANSIOS
+11F3;CM # HANGUL JONGSEONG PHIEUPH-PIEUP
+11F4;CM # HANGUL JONGSEONG KAPYEOUNPHIEUPH
+11F5;CM # HANGUL JONGSEONG HIEUH-NIEUN
+11F6;CM # HANGUL JONGSEONG HIEUH-RIEUL
+11F7;CM # HANGUL JONGSEONG HIEUH-MIEUM
+11F8;CM # HANGUL JONGSEONG HIEUH-PIEUP
+11F9;CM # HANGUL JONGSEONG YEORINHIEUH
+1200;AL # ETHIOPIC SYLLABLE HA
+1201;AL # ETHIOPIC SYLLABLE HU
+1202;AL # ETHIOPIC SYLLABLE HI
+1203;AL # ETHIOPIC SYLLABLE HAA
+1204;AL # ETHIOPIC SYLLABLE HEE
+1205;AL # ETHIOPIC SYLLABLE HE
+1206;AL # ETHIOPIC SYLLABLE HO
+1208;AL # ETHIOPIC SYLLABLE LA
+1209;AL # ETHIOPIC SYLLABLE LU
+120A;AL # ETHIOPIC SYLLABLE LI
+120B;AL # ETHIOPIC SYLLABLE LAA
+120C;AL # ETHIOPIC SYLLABLE LEE
+120D;AL # ETHIOPIC SYLLABLE LE
+120E;AL # ETHIOPIC SYLLABLE LO
+120F;AL # ETHIOPIC SYLLABLE LWA
+1210;AL # ETHIOPIC SYLLABLE HHA
+1211;AL # ETHIOPIC SYLLABLE HHU
+1212;AL # ETHIOPIC SYLLABLE HHI
+1213;AL # ETHIOPIC SYLLABLE HHAA
+1214;AL # ETHIOPIC SYLLABLE HHEE
+1215;AL # ETHIOPIC SYLLABLE HHE
+1216;AL # ETHIOPIC SYLLABLE HHO
+1217;AL # ETHIOPIC SYLLABLE HHWA
+1218;AL # ETHIOPIC SYLLABLE MA
+1219;AL # ETHIOPIC SYLLABLE MU
+121A;AL # ETHIOPIC SYLLABLE MI
+121B;AL # ETHIOPIC SYLLABLE MAA
+121C;AL # ETHIOPIC SYLLABLE MEE
+121D;AL # ETHIOPIC SYLLABLE ME
+121E;AL # ETHIOPIC SYLLABLE MO
+121F;AL # ETHIOPIC SYLLABLE MWA
+1220;AL # ETHIOPIC SYLLABLE SZA
+1221;AL # ETHIOPIC SYLLABLE SZU
+1222;AL # ETHIOPIC SYLLABLE SZI
+1223;AL # ETHIOPIC SYLLABLE SZAA
+1224;AL # ETHIOPIC SYLLABLE SZEE
+1225;AL # ETHIOPIC SYLLABLE SZE
+1226;AL # ETHIOPIC SYLLABLE SZO
+1227;AL # ETHIOPIC SYLLABLE SZWA
+1228;AL # ETHIOPIC SYLLABLE RA
+1229;AL # ETHIOPIC SYLLABLE RU
+122A;AL # ETHIOPIC SYLLABLE RI
+122B;AL # ETHIOPIC SYLLABLE RAA
+122C;AL # ETHIOPIC SYLLABLE REE
+122D;AL # ETHIOPIC SYLLABLE RE
+122E;AL # ETHIOPIC SYLLABLE RO
+122F;AL # ETHIOPIC SYLLABLE RWA
+1230;AL # ETHIOPIC SYLLABLE SA
+1231;AL # ETHIOPIC SYLLABLE SU
+1232;AL # ETHIOPIC SYLLABLE SI
+1233;AL # ETHIOPIC SYLLABLE SAA
+1234;AL # ETHIOPIC SYLLABLE SEE
+1235;AL # ETHIOPIC SYLLABLE SE
+1236;AL # ETHIOPIC SYLLABLE SO
+1237;AL # ETHIOPIC SYLLABLE SWA
+1238;AL # ETHIOPIC SYLLABLE SHA
+1239;AL # ETHIOPIC SYLLABLE SHU
+123A;AL # ETHIOPIC SYLLABLE SHI
+123B;AL # ETHIOPIC SYLLABLE SHAA
+123C;AL # ETHIOPIC SYLLABLE SHEE
+123D;AL # ETHIOPIC SYLLABLE SHE
+123E;AL # ETHIOPIC SYLLABLE SHO
+123F;AL # ETHIOPIC SYLLABLE SHWA
+1240;AL # ETHIOPIC SYLLABLE QA
+1241;AL # ETHIOPIC SYLLABLE QU
+1242;AL # ETHIOPIC SYLLABLE QI
+1243;AL # ETHIOPIC SYLLABLE QAA
+1244;AL # ETHIOPIC SYLLABLE QEE
+1245;AL # ETHIOPIC SYLLABLE QE
+1246;AL # ETHIOPIC SYLLABLE QO
+1248;AL # ETHIOPIC SYLLABLE QWA
+124A;AL # ETHIOPIC SYLLABLE QWI
+124B;AL # ETHIOPIC SYLLABLE QWAA
+124C;AL # ETHIOPIC SYLLABLE QWEE
+124D;AL # ETHIOPIC SYLLABLE QWE
+1250;AL # ETHIOPIC SYLLABLE QHA
+1251;AL # ETHIOPIC SYLLABLE QHU
+1252;AL # ETHIOPIC SYLLABLE QHI
+1253;AL # ETHIOPIC SYLLABLE QHAA
+1254;AL # ETHIOPIC SYLLABLE QHEE
+1255;AL # ETHIOPIC SYLLABLE QHE
+1256;AL # ETHIOPIC SYLLABLE QHO
+1258;AL # ETHIOPIC SYLLABLE QHWA
+125A;AL # ETHIOPIC SYLLABLE QHWI
+125B;AL # ETHIOPIC SYLLABLE QHWAA
+125C;AL # ETHIOPIC SYLLABLE QHWEE
+125D;AL # ETHIOPIC SYLLABLE QHWE
+1260;AL # ETHIOPIC SYLLABLE BA
+1261;AL # ETHIOPIC SYLLABLE BU
+1262;AL # ETHIOPIC SYLLABLE BI
+1263;AL # ETHIOPIC SYLLABLE BAA
+1264;AL # ETHIOPIC SYLLABLE BEE
+1265;AL # ETHIOPIC SYLLABLE BE
+1266;AL # ETHIOPIC SYLLABLE BO
+1267;AL # ETHIOPIC SYLLABLE BWA
+1268;AL # ETHIOPIC SYLLABLE VA
+1269;AL # ETHIOPIC SYLLABLE VU
+126A;AL # ETHIOPIC SYLLABLE VI
+126B;AL # ETHIOPIC SYLLABLE VAA
+126C;AL # ETHIOPIC SYLLABLE VEE
+126D;AL # ETHIOPIC SYLLABLE VE
+126E;AL # ETHIOPIC SYLLABLE VO
+126F;AL # ETHIOPIC SYLLABLE VWA
+1270;AL # ETHIOPIC SYLLABLE TA
+1271;AL # ETHIOPIC SYLLABLE TU
+1272;AL # ETHIOPIC SYLLABLE TI
+1273;AL # ETHIOPIC SYLLABLE TAA
+1274;AL # ETHIOPIC SYLLABLE TEE
+1275;AL # ETHIOPIC SYLLABLE TE
+1276;AL # ETHIOPIC SYLLABLE TO
+1277;AL # ETHIOPIC SYLLABLE TWA
+1278;AL # ETHIOPIC SYLLABLE CA
+1279;AL # ETHIOPIC SYLLABLE CU
+127A;AL # ETHIOPIC SYLLABLE CI
+127B;AL # ETHIOPIC SYLLABLE CAA
+127C;AL # ETHIOPIC SYLLABLE CEE
+127D;AL # ETHIOPIC SYLLABLE CE
+127E;AL # ETHIOPIC SYLLABLE CO
+127F;AL # ETHIOPIC SYLLABLE CWA
+1280;AL # ETHIOPIC SYLLABLE XA
+1281;AL # ETHIOPIC SYLLABLE XU
+1282;AL # ETHIOPIC SYLLABLE XI
+1283;AL # ETHIOPIC SYLLABLE XAA
+1284;AL # ETHIOPIC SYLLABLE XEE
+1285;AL # ETHIOPIC SYLLABLE XE
+1286;AL # ETHIOPIC SYLLABLE XO
+1288;AL # ETHIOPIC SYLLABLE XWA
+128A;AL # ETHIOPIC SYLLABLE XWI
+128B;AL # ETHIOPIC SYLLABLE XWAA
+128C;AL # ETHIOPIC SYLLABLE XWEE
+128D;AL # ETHIOPIC SYLLABLE XWE
+1290;AL # ETHIOPIC SYLLABLE NA
+1291;AL # ETHIOPIC SYLLABLE NU
+1292;AL # ETHIOPIC SYLLABLE NI
+1293;AL # ETHIOPIC SYLLABLE NAA
+1294;AL # ETHIOPIC SYLLABLE NEE
+1295;AL # ETHIOPIC SYLLABLE NE
+1296;AL # ETHIOPIC SYLLABLE NO
+1297;AL # ETHIOPIC SYLLABLE NWA
+1298;AL # ETHIOPIC SYLLABLE NYA
+1299;AL # ETHIOPIC SYLLABLE NYU
+129A;AL # ETHIOPIC SYLLABLE NYI
+129B;AL # ETHIOPIC SYLLABLE NYAA
+129C;AL # ETHIOPIC SYLLABLE NYEE
+129D;AL # ETHIOPIC SYLLABLE NYE
+129E;AL # ETHIOPIC SYLLABLE NYO
+129F;AL # ETHIOPIC SYLLABLE NYWA
+12A0;AL # ETHIOPIC SYLLABLE GLOTTAL A
+12A1;AL # ETHIOPIC SYLLABLE GLOTTAL U
+12A2;AL # ETHIOPIC SYLLABLE GLOTTAL I
+12A3;AL # ETHIOPIC SYLLABLE GLOTTAL AA
+12A4;AL # ETHIOPIC SYLLABLE GLOTTAL EE
+12A5;AL # ETHIOPIC SYLLABLE GLOTTAL E
+12A6;AL # ETHIOPIC SYLLABLE GLOTTAL O
+12A7;AL # ETHIOPIC SYLLABLE GLOTTAL WA
+12A8;AL # ETHIOPIC SYLLABLE KA
+12A9;AL # ETHIOPIC SYLLABLE KU
+12AA;AL # ETHIOPIC SYLLABLE KI
+12AB;AL # ETHIOPIC SYLLABLE KAA
+12AC;AL # ETHIOPIC SYLLABLE KEE
+12AD;AL # ETHIOPIC SYLLABLE KE
+12AE;AL # ETHIOPIC SYLLABLE KO
+12B0;AL # ETHIOPIC SYLLABLE KWA
+12B2;AL # ETHIOPIC SYLLABLE KWI
+12B3;AL # ETHIOPIC SYLLABLE KWAA
+12B4;AL # ETHIOPIC SYLLABLE KWEE
+12B5;AL # ETHIOPIC SYLLABLE KWE
+12B8;AL # ETHIOPIC SYLLABLE KXA
+12B9;AL # ETHIOPIC SYLLABLE KXU
+12BA;AL # ETHIOPIC SYLLABLE KXI
+12BB;AL # ETHIOPIC SYLLABLE KXAA
+12BC;AL # ETHIOPIC SYLLABLE KXEE
+12BD;AL # ETHIOPIC SYLLABLE KXE
+12BE;AL # ETHIOPIC SYLLABLE KXO
+12C0;AL # ETHIOPIC SYLLABLE KXWA
+12C2;AL # ETHIOPIC SYLLABLE KXWI
+12C3;AL # ETHIOPIC SYLLABLE KXWAA
+12C4;AL # ETHIOPIC SYLLABLE KXWEE
+12C5;AL # ETHIOPIC SYLLABLE KXWE
+12C8;AL # ETHIOPIC SYLLABLE WA
+12C9;AL # ETHIOPIC SYLLABLE WU
+12CA;AL # ETHIOPIC SYLLABLE WI
+12CB;AL # ETHIOPIC SYLLABLE WAA
+12CC;AL # ETHIOPIC SYLLABLE WEE
+12CD;AL # ETHIOPIC SYLLABLE WE
+12CE;AL # ETHIOPIC SYLLABLE WO
+12D0;AL # ETHIOPIC SYLLABLE PHARYNGEAL A
+12D1;AL # ETHIOPIC SYLLABLE PHARYNGEAL U
+12D2;AL # ETHIOPIC SYLLABLE PHARYNGEAL I
+12D3;AL # ETHIOPIC SYLLABLE PHARYNGEAL AA
+12D4;AL # ETHIOPIC SYLLABLE PHARYNGEAL EE
+12D5;AL # ETHIOPIC SYLLABLE PHARYNGEAL E
+12D6;AL # ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8;AL # ETHIOPIC SYLLABLE ZA
+12D9;AL # ETHIOPIC SYLLABLE ZU
+12DA;AL # ETHIOPIC SYLLABLE ZI
+12DB;AL # ETHIOPIC SYLLABLE ZAA
+12DC;AL # ETHIOPIC SYLLABLE ZEE
+12DD;AL # ETHIOPIC SYLLABLE ZE
+12DE;AL # ETHIOPIC SYLLABLE ZO
+12DF;AL # ETHIOPIC SYLLABLE ZWA
+12E0;AL # ETHIOPIC SYLLABLE ZHA
+12E1;AL # ETHIOPIC SYLLABLE ZHU
+12E2;AL # ETHIOPIC SYLLABLE ZHI
+12E3;AL # ETHIOPIC SYLLABLE ZHAA
+12E4;AL # ETHIOPIC SYLLABLE ZHEE
+12E5;AL # ETHIOPIC SYLLABLE ZHE
+12E6;AL # ETHIOPIC SYLLABLE ZHO
+12E7;AL # ETHIOPIC SYLLABLE ZHWA
+12E8;AL # ETHIOPIC SYLLABLE YA
+12E9;AL # ETHIOPIC SYLLABLE YU
+12EA;AL # ETHIOPIC SYLLABLE YI
+12EB;AL # ETHIOPIC SYLLABLE YAA
+12EC;AL # ETHIOPIC SYLLABLE YEE
+12ED;AL # ETHIOPIC SYLLABLE YE
+12EE;AL # ETHIOPIC SYLLABLE YO
+12F0;AL # ETHIOPIC SYLLABLE DA
+12F1;AL # ETHIOPIC SYLLABLE DU
+12F2;AL # ETHIOPIC SYLLABLE DI
+12F3;AL # ETHIOPIC SYLLABLE DAA
+12F4;AL # ETHIOPIC SYLLABLE DEE
+12F5;AL # ETHIOPIC SYLLABLE DE
+12F6;AL # ETHIOPIC SYLLABLE DO
+12F7;AL # ETHIOPIC SYLLABLE DWA
+12F8;AL # ETHIOPIC SYLLABLE DDA
+12F9;AL # ETHIOPIC SYLLABLE DDU
+12FA;AL # ETHIOPIC SYLLABLE DDI
+12FB;AL # ETHIOPIC SYLLABLE DDAA
+12FC;AL # ETHIOPIC SYLLABLE DDEE
+12FD;AL # ETHIOPIC SYLLABLE DDE
+12FE;AL # ETHIOPIC SYLLABLE DDO
+12FF;AL # ETHIOPIC SYLLABLE DDWA
+1300;AL # ETHIOPIC SYLLABLE JA
+1301;AL # ETHIOPIC SYLLABLE JU
+1302;AL # ETHIOPIC SYLLABLE JI
+1303;AL # ETHIOPIC SYLLABLE JAA
+1304;AL # ETHIOPIC SYLLABLE JEE
+1305;AL # ETHIOPIC SYLLABLE JE
+1306;AL # ETHIOPIC SYLLABLE JO
+1307;AL # ETHIOPIC SYLLABLE JWA
+1308;AL # ETHIOPIC SYLLABLE GA
+1309;AL # ETHIOPIC SYLLABLE GU
+130A;AL # ETHIOPIC SYLLABLE GI
+130B;AL # ETHIOPIC SYLLABLE GAA
+130C;AL # ETHIOPIC SYLLABLE GEE
+130D;AL # ETHIOPIC SYLLABLE GE
+130E;AL # ETHIOPIC SYLLABLE GO
+1310;AL # ETHIOPIC SYLLABLE GWA
+1312;AL # ETHIOPIC SYLLABLE GWI
+1313;AL # ETHIOPIC SYLLABLE GWAA
+1314;AL # ETHIOPIC SYLLABLE GWEE
+1315;AL # ETHIOPIC SYLLABLE GWE
+1318;AL # ETHIOPIC SYLLABLE GGA
+1319;AL # ETHIOPIC SYLLABLE GGU
+131A;AL # ETHIOPIC SYLLABLE GGI
+131B;AL # ETHIOPIC SYLLABLE GGAA
+131C;AL # ETHIOPIC SYLLABLE GGEE
+131D;AL # ETHIOPIC SYLLABLE GGE
+131E;AL # ETHIOPIC SYLLABLE GGO
+1320;AL # ETHIOPIC SYLLABLE THA
+1321;AL # ETHIOPIC SYLLABLE THU
+1322;AL # ETHIOPIC SYLLABLE THI
+1323;AL # ETHIOPIC SYLLABLE THAA
+1324;AL # ETHIOPIC SYLLABLE THEE
+1325;AL # ETHIOPIC SYLLABLE THE
+1326;AL # ETHIOPIC SYLLABLE THO
+1327;AL # ETHIOPIC SYLLABLE THWA
+1328;AL # ETHIOPIC SYLLABLE CHA
+1329;AL # ETHIOPIC SYLLABLE CHU
+132A;AL # ETHIOPIC SYLLABLE CHI
+132B;AL # ETHIOPIC SYLLABLE CHAA
+132C;AL # ETHIOPIC SYLLABLE CHEE
+132D;AL # ETHIOPIC SYLLABLE CHE
+132E;AL # ETHIOPIC SYLLABLE CHO
+132F;AL # ETHIOPIC SYLLABLE CHWA
+1330;AL # ETHIOPIC SYLLABLE PHA
+1331;AL # ETHIOPIC SYLLABLE PHU
+1332;AL # ETHIOPIC SYLLABLE PHI
+1333;AL # ETHIOPIC SYLLABLE PHAA
+1334;AL # ETHIOPIC SYLLABLE PHEE
+1335;AL # ETHIOPIC SYLLABLE PHE
+1336;AL # ETHIOPIC SYLLABLE PHO
+1337;AL # ETHIOPIC SYLLABLE PHWA
+1338;AL # ETHIOPIC SYLLABLE TSA
+1339;AL # ETHIOPIC SYLLABLE TSU
+133A;AL # ETHIOPIC SYLLABLE TSI
+133B;AL # ETHIOPIC SYLLABLE TSAA
+133C;AL # ETHIOPIC SYLLABLE TSEE
+133D;AL # ETHIOPIC SYLLABLE TSE
+133E;AL # ETHIOPIC SYLLABLE TSO
+133F;AL # ETHIOPIC SYLLABLE TSWA
+1340;AL # ETHIOPIC SYLLABLE TZA
+1341;AL # ETHIOPIC SYLLABLE TZU
+1342;AL # ETHIOPIC SYLLABLE TZI
+1343;AL # ETHIOPIC SYLLABLE TZAA
+1344;AL # ETHIOPIC SYLLABLE TZEE
+1345;AL # ETHIOPIC SYLLABLE TZE
+1346;AL # ETHIOPIC SYLLABLE TZO
+1348;AL # ETHIOPIC SYLLABLE FA
+1349;AL # ETHIOPIC SYLLABLE FU
+134A;AL # ETHIOPIC SYLLABLE FI
+134B;AL # ETHIOPIC SYLLABLE FAA
+134C;AL # ETHIOPIC SYLLABLE FEE
+134D;AL # ETHIOPIC SYLLABLE FE
+134E;AL # ETHIOPIC SYLLABLE FO
+134F;AL # ETHIOPIC SYLLABLE FWA
+1350;AL # ETHIOPIC SYLLABLE PA
+1351;AL # ETHIOPIC SYLLABLE PU
+1352;AL # ETHIOPIC SYLLABLE PI
+1353;AL # ETHIOPIC SYLLABLE PAA
+1354;AL # ETHIOPIC SYLLABLE PEE
+1355;AL # ETHIOPIC SYLLABLE PE
+1356;AL # ETHIOPIC SYLLABLE PO
+1357;AL # ETHIOPIC SYLLABLE PWA
+1358;AL # ETHIOPIC SYLLABLE RYA
+1359;AL # ETHIOPIC SYLLABLE MYA
+135A;AL # ETHIOPIC SYLLABLE FYA
+1361;BA # ETHIOPIC WORDSPACE
+1362;AL # ETHIOPIC FULL STOP
+1363;AL # ETHIOPIC COMMA
+1364;AL # ETHIOPIC SEMICOLON
+1365;AL # ETHIOPIC COLON
+1366;AL # ETHIOPIC PREFACE COLON
+1367;AL # ETHIOPIC QUESTION MARK
+1368;AL # ETHIOPIC PARAGRAPH SEPARATOR
+1369;NU # ETHIOPIC DIGIT ONE
+136A;NU # ETHIOPIC DIGIT TWO
+136B;NU # ETHIOPIC DIGIT THREE
+136C;NU # ETHIOPIC DIGIT FOUR
+136D;NU # ETHIOPIC DIGIT FIVE
+136E;NU # ETHIOPIC DIGIT SIX
+136F;NU # ETHIOPIC DIGIT SEVEN
+1370;NU # ETHIOPIC DIGIT EIGHT
+1371;NU # ETHIOPIC DIGIT NINE
+1372;AL # ETHIOPIC NUMBER TEN
+1373;AL # ETHIOPIC NUMBER TWENTY
+1374;AL # ETHIOPIC NUMBER THIRTY
+1375;AL # ETHIOPIC NUMBER FORTY
+1376;AL # ETHIOPIC NUMBER FIFTY
+1377;AL # ETHIOPIC NUMBER SIXTY
+1378;AL # ETHIOPIC NUMBER SEVENTY
+1379;AL # ETHIOPIC NUMBER EIGHTY
+137A;AL # ETHIOPIC NUMBER NINETY
+137B;AL # ETHIOPIC NUMBER HUNDRED
+137C;AL # ETHIOPIC NUMBER TEN THOUSAND
+13A0;AL # CHEROKEE LETTER A
+13A1;AL # CHEROKEE LETTER E
+13A2;AL # CHEROKEE LETTER I
+13A3;AL # CHEROKEE LETTER O
+13A4;AL # CHEROKEE LETTER U
+13A5;AL # CHEROKEE LETTER V
+13A6;AL # CHEROKEE LETTER GA
+13A7;AL # CHEROKEE LETTER KA
+13A8;AL # CHEROKEE LETTER GE
+13A9;AL # CHEROKEE LETTER GI
+13AA;AL # CHEROKEE LETTER GO
+13AB;AL # CHEROKEE LETTER GU
+13AC;AL # CHEROKEE LETTER GV
+13AD;AL # CHEROKEE LETTER HA
+13AE;AL # CHEROKEE LETTER HE
+13AF;AL # CHEROKEE LETTER HI
+13B0;AL # CHEROKEE LETTER HO
+13B1;AL # CHEROKEE LETTER HU
+13B2;AL # CHEROKEE LETTER HV
+13B3;AL # CHEROKEE LETTER LA
+13B4;AL # CHEROKEE LETTER LE
+13B5;AL # CHEROKEE LETTER LI
+13B6;AL # CHEROKEE LETTER LO
+13B7;AL # CHEROKEE LETTER LU
+13B8;AL # CHEROKEE LETTER LV
+13B9;AL # CHEROKEE LETTER MA
+13BA;AL # CHEROKEE LETTER ME
+13BB;AL # CHEROKEE LETTER MI
+13BC;AL # CHEROKEE LETTER MO
+13BD;AL # CHEROKEE LETTER MU
+13BE;AL # CHEROKEE LETTER NA
+13BF;AL # CHEROKEE LETTER HNA
+13C0;AL # CHEROKEE LETTER NAH
+13C1;AL # CHEROKEE LETTER NE
+13C2;AL # CHEROKEE LETTER NI
+13C3;AL # CHEROKEE LETTER NO
+13C4;AL # CHEROKEE LETTER NU
+13C5;AL # CHEROKEE LETTER NV
+13C6;AL # CHEROKEE LETTER QUA
+13C7;AL # CHEROKEE LETTER QUE
+13C8;AL # CHEROKEE LETTER QUI
+13C9;AL # CHEROKEE LETTER QUO
+13CA;AL # CHEROKEE LETTER QUU
+13CB;AL # CHEROKEE LETTER QUV
+13CC;AL # CHEROKEE LETTER SA
+13CD;AL # CHEROKEE LETTER S
+13CE;AL # CHEROKEE LETTER SE
+13CF;AL # CHEROKEE LETTER SI
+13D0;AL # CHEROKEE LETTER SO
+13D1;AL # CHEROKEE LETTER SU
+13D2;AL # CHEROKEE LETTER SV
+13D3;AL # CHEROKEE LETTER DA
+13D4;AL # CHEROKEE LETTER TA
+13D5;AL # CHEROKEE LETTER DE
+13D6;AL # CHEROKEE LETTER TE
+13D7;AL # CHEROKEE LETTER DI
+13D8;AL # CHEROKEE LETTER TI
+13D9;AL # CHEROKEE LETTER DO
+13DA;AL # CHEROKEE LETTER DU
+13DB;AL # CHEROKEE LETTER DV
+13DC;AL # CHEROKEE LETTER DLA
+13DD;AL # CHEROKEE LETTER TLA
+13DE;AL # CHEROKEE LETTER TLE
+13DF;AL # CHEROKEE LETTER TLI
+13E0;AL # CHEROKEE LETTER TLO
+13E1;AL # CHEROKEE LETTER TLU
+13E2;AL # CHEROKEE LETTER TLV
+13E3;AL # CHEROKEE LETTER TSA
+13E4;AL # CHEROKEE LETTER TSE
+13E5;AL # CHEROKEE LETTER TSI
+13E6;AL # CHEROKEE LETTER TSO
+13E7;AL # CHEROKEE LETTER TSU
+13E8;AL # CHEROKEE LETTER TSV
+13E9;AL # CHEROKEE LETTER WA
+13EA;AL # CHEROKEE LETTER WE
+13EB;AL # CHEROKEE LETTER WI
+13EC;AL # CHEROKEE LETTER WO
+13ED;AL # CHEROKEE LETTER WU
+13EE;AL # CHEROKEE LETTER WV
+13EF;AL # CHEROKEE LETTER YA
+13F0;AL # CHEROKEE LETTER YE
+13F1;AL # CHEROKEE LETTER YI
+13F2;AL # CHEROKEE LETTER YO
+13F3;AL # CHEROKEE LETTER YU
+13F4;AL # CHEROKEE LETTER YV
+1401;AL # CANADIAN SYLLABICS E
+1402;AL # CANADIAN SYLLABICS AAI
+1403;AL # CANADIAN SYLLABICS I
+1404;AL # CANADIAN SYLLABICS II
+1405;AL # CANADIAN SYLLABICS O
+1406;AL # CANADIAN SYLLABICS OO
+1407;AL # CANADIAN SYLLABICS Y-CREE OO
+1408;AL # CANADIAN SYLLABICS CARRIER EE
+1409;AL # CANADIAN SYLLABICS CARRIER I
+140A;AL # CANADIAN SYLLABICS A
+140B;AL # CANADIAN SYLLABICS AA
+140C;AL # CANADIAN SYLLABICS WE
+140D;AL # CANADIAN SYLLABICS WEST-CREE WE
+140E;AL # CANADIAN SYLLABICS WI
+140F;AL # CANADIAN SYLLABICS WEST-CREE WI
+1410;AL # CANADIAN SYLLABICS WII
+1411;AL # CANADIAN SYLLABICS WEST-CREE WII
+1412;AL # CANADIAN SYLLABICS WO
+1413;AL # CANADIAN SYLLABICS WEST-CREE WO
+1414;AL # CANADIAN SYLLABICS WOO
+1415;AL # CANADIAN SYLLABICS WEST-CREE WOO
+1416;AL # CANADIAN SYLLABICS NASKAPI WOO
+1417;AL # CANADIAN SYLLABICS WA
+1418;AL # CANADIAN SYLLABICS WEST-CREE WA
+1419;AL # CANADIAN SYLLABICS WAA
+141A;AL # CANADIAN SYLLABICS WEST-CREE WAA
+141B;AL # CANADIAN SYLLABICS NASKAPI WAA
+141C;AL # CANADIAN SYLLABICS AI
+141D;AL # CANADIAN SYLLABICS Y-CREE W
+141E;AL # CANADIAN SYLLABICS GLOTTAL STOP
+141F;AL # CANADIAN SYLLABICS FINAL ACUTE
+1420;AL # CANADIAN SYLLABICS FINAL GRAVE
+1421;AL # CANADIAN SYLLABICS FINAL BOTTOM HALF RING
+1422;AL # CANADIAN SYLLABICS FINAL TOP HALF RING
+1423;AL # CANADIAN SYLLABICS FINAL RIGHT HALF RING
+1424;AL # CANADIAN SYLLABICS FINAL RING
+1425;AL # CANADIAN SYLLABICS FINAL DOUBLE ACUTE
+1426;AL # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
+1427;AL # CANADIAN SYLLABICS FINAL MIDDLE DOT
+1428;AL # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
+1429;AL # CANADIAN SYLLABICS FINAL PLUS
+142A;AL # CANADIAN SYLLABICS FINAL DOWN TACK
+142B;AL # CANADIAN SYLLABICS EN
+142C;AL # CANADIAN SYLLABICS IN
+142D;AL # CANADIAN SYLLABICS ON
+142E;AL # CANADIAN SYLLABICS AN
+142F;AL # CANADIAN SYLLABICS PE
+1430;AL # CANADIAN SYLLABICS PAAI
+1431;AL # CANADIAN SYLLABICS PI
+1432;AL # CANADIAN SYLLABICS PII
+1433;AL # CANADIAN SYLLABICS PO
+1434;AL # CANADIAN SYLLABICS POO
+1435;AL # CANADIAN SYLLABICS Y-CREE POO
+1436;AL # CANADIAN SYLLABICS CARRIER HEE
+1437;AL # CANADIAN SYLLABICS CARRIER HI
+1438;AL # CANADIAN SYLLABICS PA
+1439;AL # CANADIAN SYLLABICS PAA
+143A;AL # CANADIAN SYLLABICS PWE
+143B;AL # CANADIAN SYLLABICS WEST-CREE PWE
+143C;AL # CANADIAN SYLLABICS PWI
+143D;AL # CANADIAN SYLLABICS WEST-CREE PWI
+143E;AL # CANADIAN SYLLABICS PWII
+143F;AL # CANADIAN SYLLABICS WEST-CREE PWII
+1440;AL # CANADIAN SYLLABICS PWO
+1441;AL # CANADIAN SYLLABICS WEST-CREE PWO
+1442;AL # CANADIAN SYLLABICS PWOO
+1443;AL # CANADIAN SYLLABICS WEST-CREE PWOO
+1444;AL # CANADIAN SYLLABICS PWA
+1445;AL # CANADIAN SYLLABICS WEST-CREE PWA
+1446;AL # CANADIAN SYLLABICS PWAA
+1447;AL # CANADIAN SYLLABICS WEST-CREE PWAA
+1448;AL # CANADIAN SYLLABICS Y-CREE PWAA
+1449;AL # CANADIAN SYLLABICS P
+144A;AL # CANADIAN SYLLABICS WEST-CREE P
+144B;AL # CANADIAN SYLLABICS CARRIER H
+144C;AL # CANADIAN SYLLABICS TE
+144D;AL # CANADIAN SYLLABICS TAAI
+144E;AL # CANADIAN SYLLABICS TI
+144F;AL # CANADIAN SYLLABICS TII
+1450;AL # CANADIAN SYLLABICS TO
+1451;AL # CANADIAN SYLLABICS TOO
+1452;AL # CANADIAN SYLLABICS Y-CREE TOO
+1453;AL # CANADIAN SYLLABICS CARRIER DEE
+1454;AL # CANADIAN SYLLABICS CARRIER DI
+1455;AL # CANADIAN SYLLABICS TA
+1456;AL # CANADIAN SYLLABICS TAA
+1457;AL # CANADIAN SYLLABICS TWE
+1458;AL # CANADIAN SYLLABICS WEST-CREE TWE
+1459;AL # CANADIAN SYLLABICS TWI
+145A;AL # CANADIAN SYLLABICS WEST-CREE TWI
+145B;AL # CANADIAN SYLLABICS TWII
+145C;AL # CANADIAN SYLLABICS WEST-CREE TWII
+145D;AL # CANADIAN SYLLABICS TWO
+145E;AL # CANADIAN SYLLABICS WEST-CREE TWO
+145F;AL # CANADIAN SYLLABICS TWOO
+1460;AL # CANADIAN SYLLABICS WEST-CREE TWOO
+1461;AL # CANADIAN SYLLABICS TWA
+1462;AL # CANADIAN SYLLABICS WEST-CREE TWA
+1463;AL # CANADIAN SYLLABICS TWAA
+1464;AL # CANADIAN SYLLABICS WEST-CREE TWAA
+1465;AL # CANADIAN SYLLABICS NASKAPI TWAA
+1466;AL # CANADIAN SYLLABICS T
+1467;AL # CANADIAN SYLLABICS TTE
+1468;AL # CANADIAN SYLLABICS TTI
+1469;AL # CANADIAN SYLLABICS TTO
+146A;AL # CANADIAN SYLLABICS TTA
+146B;AL # CANADIAN SYLLABICS KE
+146C;AL # CANADIAN SYLLABICS KAAI
+146D;AL # CANADIAN SYLLABICS KI
+146E;AL # CANADIAN SYLLABICS KII
+146F;AL # CANADIAN SYLLABICS KO
+1470;AL # CANADIAN SYLLABICS KOO
+1471;AL # CANADIAN SYLLABICS Y-CREE KOO
+1472;AL # CANADIAN SYLLABICS KA
+1473;AL # CANADIAN SYLLABICS KAA
+1474;AL # CANADIAN SYLLABICS KWE
+1475;AL # CANADIAN SYLLABICS WEST-CREE KWE
+1476;AL # CANADIAN SYLLABICS KWI
+1477;AL # CANADIAN SYLLABICS WEST-CREE KWI
+1478;AL # CANADIAN SYLLABICS KWII
+1479;AL # CANADIAN SYLLABICS WEST-CREE KWII
+147A;AL # CANADIAN SYLLABICS KWO
+147B;AL # CANADIAN SYLLABICS WEST-CREE KWO
+147C;AL # CANADIAN SYLLABICS KWOO
+147D;AL # CANADIAN SYLLABICS WEST-CREE KWOO
+147E;AL # CANADIAN SYLLABICS KWA
+147F;AL # CANADIAN SYLLABICS WEST-CREE KWA
+1480;AL # CANADIAN SYLLABICS KWAA
+1481;AL # CANADIAN SYLLABICS WEST-CREE KWAA
+1482;AL # CANADIAN SYLLABICS NASKAPI KWAA
+1483;AL # CANADIAN SYLLABICS K
+1484;AL # CANADIAN SYLLABICS KW
+1485;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KEH
+1486;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KIH
+1487;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KOH
+1488;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KAH
+1489;AL # CANADIAN SYLLABICS CE
+148A;AL # CANADIAN SYLLABICS CAAI
+148B;AL # CANADIAN SYLLABICS CI
+148C;AL # CANADIAN SYLLABICS CII
+148D;AL # CANADIAN SYLLABICS CO
+148E;AL # CANADIAN SYLLABICS COO
+148F;AL # CANADIAN SYLLABICS Y-CREE COO
+1490;AL # CANADIAN SYLLABICS CA
+1491;AL # CANADIAN SYLLABICS CAA
+1492;AL # CANADIAN SYLLABICS CWE
+1493;AL # CANADIAN SYLLABICS WEST-CREE CWE
+1494;AL # CANADIAN SYLLABICS CWI
+1495;AL # CANADIAN SYLLABICS WEST-CREE CWI
+1496;AL # CANADIAN SYLLABICS CWII
+1497;AL # CANADIAN SYLLABICS WEST-CREE CWII
+1498;AL # CANADIAN SYLLABICS CWO
+1499;AL # CANADIAN SYLLABICS WEST-CREE CWO
+149A;AL # CANADIAN SYLLABICS CWOO
+149B;AL # CANADIAN SYLLABICS WEST-CREE CWOO
+149C;AL # CANADIAN SYLLABICS CWA
+149D;AL # CANADIAN SYLLABICS WEST-CREE CWA
+149E;AL # CANADIAN SYLLABICS CWAA
+149F;AL # CANADIAN SYLLABICS WEST-CREE CWAA
+14A0;AL # CANADIAN SYLLABICS NASKAPI CWAA
+14A1;AL # CANADIAN SYLLABICS C
+14A2;AL # CANADIAN SYLLABICS SAYISI TH
+14A3;AL # CANADIAN SYLLABICS ME
+14A4;AL # CANADIAN SYLLABICS MAAI
+14A5;AL # CANADIAN SYLLABICS MI
+14A6;AL # CANADIAN SYLLABICS MII
+14A7;AL # CANADIAN SYLLABICS MO
+14A8;AL # CANADIAN SYLLABICS MOO
+14A9;AL # CANADIAN SYLLABICS Y-CREE MOO
+14AA;AL # CANADIAN SYLLABICS MA
+14AB;AL # CANADIAN SYLLABICS MAA
+14AC;AL # CANADIAN SYLLABICS MWE
+14AD;AL # CANADIAN SYLLABICS WEST-CREE MWE
+14AE;AL # CANADIAN SYLLABICS MWI
+14AF;AL # CANADIAN SYLLABICS WEST-CREE MWI
+14B0;AL # CANADIAN SYLLABICS MWII
+14B1;AL # CANADIAN SYLLABICS WEST-CREE MWII
+14B2;AL # CANADIAN SYLLABICS MWO
+14B3;AL # CANADIAN SYLLABICS WEST-CREE MWO
+14B4;AL # CANADIAN SYLLABICS MWOO
+14B5;AL # CANADIAN SYLLABICS WEST-CREE MWOO
+14B6;AL # CANADIAN SYLLABICS MWA
+14B7;AL # CANADIAN SYLLABICS WEST-CREE MWA
+14B8;AL # CANADIAN SYLLABICS MWAA
+14B9;AL # CANADIAN SYLLABICS WEST-CREE MWAA
+14BA;AL # CANADIAN SYLLABICS NASKAPI MWAA
+14BB;AL # CANADIAN SYLLABICS M
+14BC;AL # CANADIAN SYLLABICS WEST-CREE M
+14BD;AL # CANADIAN SYLLABICS MH
+14BE;AL # CANADIAN SYLLABICS ATHAPASCAN M
+14BF;AL # CANADIAN SYLLABICS SAYISI M
+14C0;AL # CANADIAN SYLLABICS NE
+14C1;AL # CANADIAN SYLLABICS NAAI
+14C2;AL # CANADIAN SYLLABICS NI
+14C3;AL # CANADIAN SYLLABICS NII
+14C4;AL # CANADIAN SYLLABICS NO
+14C5;AL # CANADIAN SYLLABICS NOO
+14C6;AL # CANADIAN SYLLABICS Y-CREE NOO
+14C7;AL # CANADIAN SYLLABICS NA
+14C8;AL # CANADIAN SYLLABICS NAA
+14C9;AL # CANADIAN SYLLABICS NWE
+14CA;AL # CANADIAN SYLLABICS WEST-CREE NWE
+14CB;AL # CANADIAN SYLLABICS NWA
+14CC;AL # CANADIAN SYLLABICS WEST-CREE NWA
+14CD;AL # CANADIAN SYLLABICS NWAA
+14CE;AL # CANADIAN SYLLABICS WEST-CREE NWAA
+14CF;AL # CANADIAN SYLLABICS NASKAPI NWAA
+14D0;AL # CANADIAN SYLLABICS N
+14D1;AL # CANADIAN SYLLABICS CARRIER NG
+14D2;AL # CANADIAN SYLLABICS NH
+14D3;AL # CANADIAN SYLLABICS LE
+14D4;AL # CANADIAN SYLLABICS LAAI
+14D5;AL # CANADIAN SYLLABICS LI
+14D6;AL # CANADIAN SYLLABICS LII
+14D7;AL # CANADIAN SYLLABICS LO
+14D8;AL # CANADIAN SYLLABICS LOO
+14D9;AL # CANADIAN SYLLABICS Y-CREE LOO
+14DA;AL # CANADIAN SYLLABICS LA
+14DB;AL # CANADIAN SYLLABICS LAA
+14DC;AL # CANADIAN SYLLABICS LWE
+14DD;AL # CANADIAN SYLLABICS WEST-CREE LWE
+14DE;AL # CANADIAN SYLLABICS LWI
+14DF;AL # CANADIAN SYLLABICS WEST-CREE LWI
+14E0;AL # CANADIAN SYLLABICS LWII
+14E1;AL # CANADIAN SYLLABICS WEST-CREE LWII
+14E2;AL # CANADIAN SYLLABICS LWO
+14E3;AL # CANADIAN SYLLABICS WEST-CREE LWO
+14E4;AL # CANADIAN SYLLABICS LWOO
+14E5;AL # CANADIAN SYLLABICS WEST-CREE LWOO
+14E6;AL # CANADIAN SYLLABICS LWA
+14E7;AL # CANADIAN SYLLABICS WEST-CREE LWA
+14E8;AL # CANADIAN SYLLABICS LWAA
+14E9;AL # CANADIAN SYLLABICS WEST-CREE LWAA
+14EA;AL # CANADIAN SYLLABICS L
+14EB;AL # CANADIAN SYLLABICS WEST-CREE L
+14EC;AL # CANADIAN SYLLABICS MEDIAL L
+14ED;AL # CANADIAN SYLLABICS SE
+14EE;AL # CANADIAN SYLLABICS SAAI
+14EF;AL # CANADIAN SYLLABICS SI
+14F0;AL # CANADIAN SYLLABICS SII
+14F1;AL # CANADIAN SYLLABICS SO
+14F2;AL # CANADIAN SYLLABICS SOO
+14F3;AL # CANADIAN SYLLABICS Y-CREE SOO
+14F4;AL # CANADIAN SYLLABICS SA
+14F5;AL # CANADIAN SYLLABICS SAA
+14F6;AL # CANADIAN SYLLABICS SWE
+14F7;AL # CANADIAN SYLLABICS WEST-CREE SWE
+14F8;AL # CANADIAN SYLLABICS SWI
+14F9;AL # CANADIAN SYLLABICS WEST-CREE SWI
+14FA;AL # CANADIAN SYLLABICS SWII
+14FB;AL # CANADIAN SYLLABICS WEST-CREE SWII
+14FC;AL # CANADIAN SYLLABICS SWO
+14FD;AL # CANADIAN SYLLABICS WEST-CREE SWO
+14FE;AL # CANADIAN SYLLABICS SWOO
+14FF;AL # CANADIAN SYLLABICS WEST-CREE SWOO
+1500;AL # CANADIAN SYLLABICS SWA
+1501;AL # CANADIAN SYLLABICS WEST-CREE SWA
+1502;AL # CANADIAN SYLLABICS SWAA
+1503;AL # CANADIAN SYLLABICS WEST-CREE SWAA
+1504;AL # CANADIAN SYLLABICS NASKAPI SWAA
+1505;AL # CANADIAN SYLLABICS S
+1506;AL # CANADIAN SYLLABICS ATHAPASCAN S
+1507;AL # CANADIAN SYLLABICS SW
+1508;AL # CANADIAN SYLLABICS BLACKFOOT S
+1509;AL # CANADIAN SYLLABICS MOOSE-CREE SK
+150A;AL # CANADIAN SYLLABICS NASKAPI SKW
+150B;AL # CANADIAN SYLLABICS NASKAPI S-W
+150C;AL # CANADIAN SYLLABICS NASKAPI SPWA
+150D;AL # CANADIAN SYLLABICS NASKAPI STWA
+150E;AL # CANADIAN SYLLABICS NASKAPI SKWA
+150F;AL # CANADIAN SYLLABICS NASKAPI SCWA
+1510;AL # CANADIAN SYLLABICS SHE
+1511;AL # CANADIAN SYLLABICS SHI
+1512;AL # CANADIAN SYLLABICS SHII
+1513;AL # CANADIAN SYLLABICS SHO
+1514;AL # CANADIAN SYLLABICS SHOO
+1515;AL # CANADIAN SYLLABICS SHA
+1516;AL # CANADIAN SYLLABICS SHAA
+1517;AL # CANADIAN SYLLABICS SHWE
+1518;AL # CANADIAN SYLLABICS WEST-CREE SHWE
+1519;AL # CANADIAN SYLLABICS SHWI
+151A;AL # CANADIAN SYLLABICS WEST-CREE SHWI
+151B;AL # CANADIAN SYLLABICS SHWII
+151C;AL # CANADIAN SYLLABICS WEST-CREE SHWII
+151D;AL # CANADIAN SYLLABICS SHWO
+151E;AL # CANADIAN SYLLABICS WEST-CREE SHWO
+151F;AL # CANADIAN SYLLABICS SHWOO
+1520;AL # CANADIAN SYLLABICS WEST-CREE SHWOO
+1521;AL # CANADIAN SYLLABICS SHWA
+1522;AL # CANADIAN SYLLABICS WEST-CREE SHWA
+1523;AL # CANADIAN SYLLABICS SHWAA
+1524;AL # CANADIAN SYLLABICS WEST-CREE SHWAA
+1525;AL # CANADIAN SYLLABICS SH
+1526;AL # CANADIAN SYLLABICS YE
+1527;AL # CANADIAN SYLLABICS YAAI
+1528;AL # CANADIAN SYLLABICS YI
+1529;AL # CANADIAN SYLLABICS YII
+152A;AL # CANADIAN SYLLABICS YO
+152B;AL # CANADIAN SYLLABICS YOO
+152C;AL # CANADIAN SYLLABICS Y-CREE YOO
+152D;AL # CANADIAN SYLLABICS YA
+152E;AL # CANADIAN SYLLABICS YAA
+152F;AL # CANADIAN SYLLABICS YWE
+1530;AL # CANADIAN SYLLABICS WEST-CREE YWE
+1531;AL # CANADIAN SYLLABICS YWI
+1532;AL # CANADIAN SYLLABICS WEST-CREE YWI
+1533;AL # CANADIAN SYLLABICS YWII
+1534;AL # CANADIAN SYLLABICS WEST-CREE YWII
+1535;AL # CANADIAN SYLLABICS YWO
+1536;AL # CANADIAN SYLLABICS WEST-CREE YWO
+1537;AL # CANADIAN SYLLABICS YWOO
+1538;AL # CANADIAN SYLLABICS WEST-CREE YWOO
+1539;AL # CANADIAN SYLLABICS YWA
+153A;AL # CANADIAN SYLLABICS WEST-CREE YWA
+153B;AL # CANADIAN SYLLABICS YWAA
+153C;AL # CANADIAN SYLLABICS WEST-CREE YWAA
+153D;AL # CANADIAN SYLLABICS NASKAPI YWAA
+153E;AL # CANADIAN SYLLABICS Y
+153F;AL # CANADIAN SYLLABICS BIBLE-CREE Y
+1540;AL # CANADIAN SYLLABICS WEST-CREE Y
+1541;AL # CANADIAN SYLLABICS SAYISI YI
+1542;AL # CANADIAN SYLLABICS RE
+1543;AL # CANADIAN SYLLABICS R-CREE RE
+1544;AL # CANADIAN SYLLABICS WEST-CREE LE
+1545;AL # CANADIAN SYLLABICS RAAI
+1546;AL # CANADIAN SYLLABICS RI
+1547;AL # CANADIAN SYLLABICS RII
+1548;AL # CANADIAN SYLLABICS RO
+1549;AL # CANADIAN SYLLABICS ROO
+154A;AL # CANADIAN SYLLABICS WEST-CREE LO
+154B;AL # CANADIAN SYLLABICS RA
+154C;AL # CANADIAN SYLLABICS RAA
+154D;AL # CANADIAN SYLLABICS WEST-CREE LA
+154E;AL # CANADIAN SYLLABICS RWAA
+154F;AL # CANADIAN SYLLABICS WEST-CREE RWAA
+1550;AL # CANADIAN SYLLABICS R
+1551;AL # CANADIAN SYLLABICS WEST-CREE R
+1552;AL # CANADIAN SYLLABICS MEDIAL R
+1553;AL # CANADIAN SYLLABICS FE
+1554;AL # CANADIAN SYLLABICS FAAI
+1555;AL # CANADIAN SYLLABICS FI
+1556;AL # CANADIAN SYLLABICS FII
+1557;AL # CANADIAN SYLLABICS FO
+1558;AL # CANADIAN SYLLABICS FOO
+1559;AL # CANADIAN SYLLABICS FA
+155A;AL # CANADIAN SYLLABICS FAA
+155B;AL # CANADIAN SYLLABICS FWAA
+155C;AL # CANADIAN SYLLABICS WEST-CREE FWAA
+155D;AL # CANADIAN SYLLABICS F
+155E;AL # CANADIAN SYLLABICS THE
+155F;AL # CANADIAN SYLLABICS N-CREE THE
+1560;AL # CANADIAN SYLLABICS THI
+1561;AL # CANADIAN SYLLABICS N-CREE THI
+1562;AL # CANADIAN SYLLABICS THII
+1563;AL # CANADIAN SYLLABICS N-CREE THII
+1564;AL # CANADIAN SYLLABICS THO
+1565;AL # CANADIAN SYLLABICS THOO
+1566;AL # CANADIAN SYLLABICS THA
+1567;AL # CANADIAN SYLLABICS THAA
+1568;AL # CANADIAN SYLLABICS THWAA
+1569;AL # CANADIAN SYLLABICS WEST-CREE THWAA
+156A;AL # CANADIAN SYLLABICS TH
+156B;AL # CANADIAN SYLLABICS TTHE
+156C;AL # CANADIAN SYLLABICS TTHI
+156D;AL # CANADIAN SYLLABICS TTHO
+156E;AL # CANADIAN SYLLABICS TTHA
+156F;AL # CANADIAN SYLLABICS TTH
+1570;AL # CANADIAN SYLLABICS TYE
+1571;AL # CANADIAN SYLLABICS TYI
+1572;AL # CANADIAN SYLLABICS TYO
+1573;AL # CANADIAN SYLLABICS TYA
+1574;AL # CANADIAN SYLLABICS NUNAVIK HE
+1575;AL # CANADIAN SYLLABICS NUNAVIK HI
+1576;AL # CANADIAN SYLLABICS NUNAVIK HII
+1577;AL # CANADIAN SYLLABICS NUNAVIK HO
+1578;AL # CANADIAN SYLLABICS NUNAVIK HOO
+1579;AL # CANADIAN SYLLABICS NUNAVIK HA
+157A;AL # CANADIAN SYLLABICS NUNAVIK HAA
+157B;AL # CANADIAN SYLLABICS NUNAVIK H
+157C;AL # CANADIAN SYLLABICS NUNAVUT H
+157D;AL # CANADIAN SYLLABICS HK
+157E;AL # CANADIAN SYLLABICS QAAI
+157F;AL # CANADIAN SYLLABICS QI
+1580;AL # CANADIAN SYLLABICS QII
+1581;AL # CANADIAN SYLLABICS QO
+1582;AL # CANADIAN SYLLABICS QOO
+1583;AL # CANADIAN SYLLABICS QA
+1584;AL # CANADIAN SYLLABICS QAA
+1585;AL # CANADIAN SYLLABICS Q
+1586;AL # CANADIAN SYLLABICS TLHE
+1587;AL # CANADIAN SYLLABICS TLHI
+1588;AL # CANADIAN SYLLABICS TLHO
+1589;AL # CANADIAN SYLLABICS TLHA
+158A;AL # CANADIAN SYLLABICS WEST-CREE RE
+158B;AL # CANADIAN SYLLABICS WEST-CREE RI
+158C;AL # CANADIAN SYLLABICS WEST-CREE RO
+158D;AL # CANADIAN SYLLABICS WEST-CREE RA
+158E;AL # CANADIAN SYLLABICS NGAAI
+158F;AL # CANADIAN SYLLABICS NGI
+1590;AL # CANADIAN SYLLABICS NGII
+1591;AL # CANADIAN SYLLABICS NGO
+1592;AL # CANADIAN SYLLABICS NGOO
+1593;AL # CANADIAN SYLLABICS NGA
+1594;AL # CANADIAN SYLLABICS NGAA
+1595;AL # CANADIAN SYLLABICS NG
+1596;AL # CANADIAN SYLLABICS NNG
+1597;AL # CANADIAN SYLLABICS SAYISI SHE
+1598;AL # CANADIAN SYLLABICS SAYISI SHI
+1599;AL # CANADIAN SYLLABICS SAYISI SHO
+159A;AL # CANADIAN SYLLABICS SAYISI SHA
+159B;AL # CANADIAN SYLLABICS WOODS-CREE THE
+159C;AL # CANADIAN SYLLABICS WOODS-CREE THI
+159D;AL # CANADIAN SYLLABICS WOODS-CREE THO
+159E;AL # CANADIAN SYLLABICS WOODS-CREE THA
+159F;AL # CANADIAN SYLLABICS WOODS-CREE TH
+15A0;AL # CANADIAN SYLLABICS LHI
+15A1;AL # CANADIAN SYLLABICS LHII
+15A2;AL # CANADIAN SYLLABICS LHO
+15A3;AL # CANADIAN SYLLABICS LHOO
+15A4;AL # CANADIAN SYLLABICS LHA
+15A5;AL # CANADIAN SYLLABICS LHAA
+15A6;AL # CANADIAN SYLLABICS LH
+15A7;AL # CANADIAN SYLLABICS TH-CREE THE
+15A8;AL # CANADIAN SYLLABICS TH-CREE THI
+15A9;AL # CANADIAN SYLLABICS TH-CREE THII
+15AA;AL # CANADIAN SYLLABICS TH-CREE THO
+15AB;AL # CANADIAN SYLLABICS TH-CREE THOO
+15AC;AL # CANADIAN SYLLABICS TH-CREE THA
+15AD;AL # CANADIAN SYLLABICS TH-CREE THAA
+15AE;AL # CANADIAN SYLLABICS TH-CREE TH
+15AF;AL # CANADIAN SYLLABICS AIVILIK B
+15B0;AL # CANADIAN SYLLABICS BLACKFOOT E
+15B1;AL # CANADIAN SYLLABICS BLACKFOOT I
+15B2;AL # CANADIAN SYLLABICS BLACKFOOT O
+15B3;AL # CANADIAN SYLLABICS BLACKFOOT A
+15B4;AL # CANADIAN SYLLABICS BLACKFOOT WE
+15B5;AL # CANADIAN SYLLABICS BLACKFOOT WI
+15B6;AL # CANADIAN SYLLABICS BLACKFOOT WO
+15B7;AL # CANADIAN SYLLABICS BLACKFOOT WA
+15B8;AL # CANADIAN SYLLABICS BLACKFOOT NE
+15B9;AL # CANADIAN SYLLABICS BLACKFOOT NI
+15BA;AL # CANADIAN SYLLABICS BLACKFOOT NO
+15BB;AL # CANADIAN SYLLABICS BLACKFOOT NA
+15BC;AL # CANADIAN SYLLABICS BLACKFOOT KE
+15BD;AL # CANADIAN SYLLABICS BLACKFOOT KI
+15BE;AL # CANADIAN SYLLABICS BLACKFOOT KO
+15BF;AL # CANADIAN SYLLABICS BLACKFOOT KA
+15C0;AL # CANADIAN SYLLABICS SAYISI HE
+15C1;AL # CANADIAN SYLLABICS SAYISI HI
+15C2;AL # CANADIAN SYLLABICS SAYISI HO
+15C3;AL # CANADIAN SYLLABICS SAYISI HA
+15C4;AL # CANADIAN SYLLABICS CARRIER GHU
+15C5;AL # CANADIAN SYLLABICS CARRIER GHO
+15C6;AL # CANADIAN SYLLABICS CARRIER GHE
+15C7;AL # CANADIAN SYLLABICS CARRIER GHEE
+15C8;AL # CANADIAN SYLLABICS CARRIER GHI
+15C9;AL # CANADIAN SYLLABICS CARRIER GHA
+15CA;AL # CANADIAN SYLLABICS CARRIER RU
+15CB;AL # CANADIAN SYLLABICS CARRIER RO
+15CC;AL # CANADIAN SYLLABICS CARRIER RE
+15CD;AL # CANADIAN SYLLABICS CARRIER REE
+15CE;AL # CANADIAN SYLLABICS CARRIER RI
+15CF;AL # CANADIAN SYLLABICS CARRIER RA
+15D0;AL # CANADIAN SYLLABICS CARRIER WU
+15D1;AL # CANADIAN SYLLABICS CARRIER WO
+15D2;AL # CANADIAN SYLLABICS CARRIER WE
+15D3;AL # CANADIAN SYLLABICS CARRIER WEE
+15D4;AL # CANADIAN SYLLABICS CARRIER WI
+15D5;AL # CANADIAN SYLLABICS CARRIER WA
+15D6;AL # CANADIAN SYLLABICS CARRIER HWU
+15D7;AL # CANADIAN SYLLABICS CARRIER HWO
+15D8;AL # CANADIAN SYLLABICS CARRIER HWE
+15D9;AL # CANADIAN SYLLABICS CARRIER HWEE
+15DA;AL # CANADIAN SYLLABICS CARRIER HWI
+15DB;AL # CANADIAN SYLLABICS CARRIER HWA
+15DC;AL # CANADIAN SYLLABICS CARRIER THU
+15DD;AL # CANADIAN SYLLABICS CARRIER THO
+15DE;AL # CANADIAN SYLLABICS CARRIER THE
+15DF;AL # CANADIAN SYLLABICS CARRIER THEE
+15E0;AL # CANADIAN SYLLABICS CARRIER THI
+15E1;AL # CANADIAN SYLLABICS CARRIER THA
+15E2;AL # CANADIAN SYLLABICS CARRIER TTU
+15E3;AL # CANADIAN SYLLABICS CARRIER TTO
+15E4;AL # CANADIAN SYLLABICS CARRIER TTE
+15E5;AL # CANADIAN SYLLABICS CARRIER TTEE
+15E6;AL # CANADIAN SYLLABICS CARRIER TTI
+15E7;AL # CANADIAN SYLLABICS CARRIER TTA
+15E8;AL # CANADIAN SYLLABICS CARRIER PU
+15E9;AL # CANADIAN SYLLABICS CARRIER PO
+15EA;AL # CANADIAN SYLLABICS CARRIER PE
+15EB;AL # CANADIAN SYLLABICS CARRIER PEE
+15EC;AL # CANADIAN SYLLABICS CARRIER PI
+15ED;AL # CANADIAN SYLLABICS CARRIER PA
+15EE;AL # CANADIAN SYLLABICS CARRIER P
+15EF;AL # CANADIAN SYLLABICS CARRIER GU
+15F0;AL # CANADIAN SYLLABICS CARRIER GO
+15F1;AL # CANADIAN SYLLABICS CARRIER GE
+15F2;AL # CANADIAN SYLLABICS CARRIER GEE
+15F3;AL # CANADIAN SYLLABICS CARRIER GI
+15F4;AL # CANADIAN SYLLABICS CARRIER GA
+15F5;AL # CANADIAN SYLLABICS CARRIER KHU
+15F6;AL # CANADIAN SYLLABICS CARRIER KHO
+15F7;AL # CANADIAN SYLLABICS CARRIER KHE
+15F8;AL # CANADIAN SYLLABICS CARRIER KHEE
+15F9;AL # CANADIAN SYLLABICS CARRIER KHI
+15FA;AL # CANADIAN SYLLABICS CARRIER KHA
+15FB;AL # CANADIAN SYLLABICS CARRIER KKU
+15FC;AL # CANADIAN SYLLABICS CARRIER KKO
+15FD;AL # CANADIAN SYLLABICS CARRIER KKE
+15FE;AL # CANADIAN SYLLABICS CARRIER KKEE
+15FF;AL # CANADIAN SYLLABICS CARRIER KKI
+1600;AL # CANADIAN SYLLABICS CARRIER KKA
+1601;AL # CANADIAN SYLLABICS CARRIER KK
+1602;AL # CANADIAN SYLLABICS CARRIER NU
+1603;AL # CANADIAN SYLLABICS CARRIER NO
+1604;AL # CANADIAN SYLLABICS CARRIER NE
+1605;AL # CANADIAN SYLLABICS CARRIER NEE
+1606;AL # CANADIAN SYLLABICS CARRIER NI
+1607;AL # CANADIAN SYLLABICS CARRIER NA
+1608;AL # CANADIAN SYLLABICS CARRIER MU
+1609;AL # CANADIAN SYLLABICS CARRIER MO
+160A;AL # CANADIAN SYLLABICS CARRIER ME
+160B;AL # CANADIAN SYLLABICS CARRIER MEE
+160C;AL # CANADIAN SYLLABICS CARRIER MI
+160D;AL # CANADIAN SYLLABICS CARRIER MA
+160E;AL # CANADIAN SYLLABICS CARRIER YU
+160F;AL # CANADIAN SYLLABICS CARRIER YO
+1610;AL # CANADIAN SYLLABICS CARRIER YE
+1611;AL # CANADIAN SYLLABICS CARRIER YEE
+1612;AL # CANADIAN SYLLABICS CARRIER YI
+1613;AL # CANADIAN SYLLABICS CARRIER YA
+1614;AL # CANADIAN SYLLABICS CARRIER JU
+1615;AL # CANADIAN SYLLABICS SAYISI JU
+1616;AL # CANADIAN SYLLABICS CARRIER JO
+1617;AL # CANADIAN SYLLABICS CARRIER JE
+1618;AL # CANADIAN SYLLABICS CARRIER JEE
+1619;AL # CANADIAN SYLLABICS CARRIER JI
+161A;AL # CANADIAN SYLLABICS SAYISI JI
+161B;AL # CANADIAN SYLLABICS CARRIER JA
+161C;AL # CANADIAN SYLLABICS CARRIER JJU
+161D;AL # CANADIAN SYLLABICS CARRIER JJO
+161E;AL # CANADIAN SYLLABICS CARRIER JJE
+161F;AL # CANADIAN SYLLABICS CARRIER JJEE
+1620;AL # CANADIAN SYLLABICS CARRIER JJI
+1621;AL # CANADIAN SYLLABICS CARRIER JJA
+1622;AL # CANADIAN SYLLABICS CARRIER LU
+1623;AL # CANADIAN SYLLABICS CARRIER LO
+1624;AL # CANADIAN SYLLABICS CARRIER LE
+1625;AL # CANADIAN SYLLABICS CARRIER LEE
+1626;AL # CANADIAN SYLLABICS CARRIER LI
+1627;AL # CANADIAN SYLLABICS CARRIER LA
+1628;AL # CANADIAN SYLLABICS CARRIER DLU
+1629;AL # CANADIAN SYLLABICS CARRIER DLO
+162A;AL # CANADIAN SYLLABICS CARRIER DLE
+162B;AL # CANADIAN SYLLABICS CARRIER DLEE
+162C;AL # CANADIAN SYLLABICS CARRIER DLI
+162D;AL # CANADIAN SYLLABICS CARRIER DLA
+162E;AL # CANADIAN SYLLABICS CARRIER LHU
+162F;AL # CANADIAN SYLLABICS CARRIER LHO
+1630;AL # CANADIAN SYLLABICS CARRIER LHE
+1631;AL # CANADIAN SYLLABICS CARRIER LHEE
+1632;AL # CANADIAN SYLLABICS CARRIER LHI
+1633;AL # CANADIAN SYLLABICS CARRIER LHA
+1634;AL # CANADIAN SYLLABICS CARRIER TLHU
+1635;AL # CANADIAN SYLLABICS CARRIER TLHO
+1636;AL # CANADIAN SYLLABICS CARRIER TLHE
+1637;AL # CANADIAN SYLLABICS CARRIER TLHEE
+1638;AL # CANADIAN SYLLABICS CARRIER TLHI
+1639;AL # CANADIAN SYLLABICS CARRIER TLHA
+163A;AL # CANADIAN SYLLABICS CARRIER TLU
+163B;AL # CANADIAN SYLLABICS CARRIER TLO
+163C;AL # CANADIAN SYLLABICS CARRIER TLE
+163D;AL # CANADIAN SYLLABICS CARRIER TLEE
+163E;AL # CANADIAN SYLLABICS CARRIER TLI
+163F;AL # CANADIAN SYLLABICS CARRIER TLA
+1640;AL # CANADIAN SYLLABICS CARRIER ZU
+1641;AL # CANADIAN SYLLABICS CARRIER ZO
+1642;AL # CANADIAN SYLLABICS CARRIER ZE
+1643;AL # CANADIAN SYLLABICS CARRIER ZEE
+1644;AL # CANADIAN SYLLABICS CARRIER ZI
+1645;AL # CANADIAN SYLLABICS CARRIER ZA
+1646;AL # CANADIAN SYLLABICS CARRIER Z
+1647;AL # CANADIAN SYLLABICS CARRIER INITIAL Z
+1648;AL # CANADIAN SYLLABICS CARRIER DZU
+1649;AL # CANADIAN SYLLABICS CARRIER DZO
+164A;AL # CANADIAN SYLLABICS CARRIER DZE
+164B;AL # CANADIAN SYLLABICS CARRIER DZEE
+164C;AL # CANADIAN SYLLABICS CARRIER DZI
+164D;AL # CANADIAN SYLLABICS CARRIER DZA
+164E;AL # CANADIAN SYLLABICS CARRIER SU
+164F;AL # CANADIAN SYLLABICS CARRIER SO
+1650;AL # CANADIAN SYLLABICS CARRIER SE
+1651;AL # CANADIAN SYLLABICS CARRIER SEE
+1652;AL # CANADIAN SYLLABICS CARRIER SI
+1653;AL # CANADIAN SYLLABICS CARRIER SA
+1654;AL # CANADIAN SYLLABICS CARRIER SHU
+1655;AL # CANADIAN SYLLABICS CARRIER SHO
+1656;AL # CANADIAN SYLLABICS CARRIER SHE
+1657;AL # CANADIAN SYLLABICS CARRIER SHEE
+1658;AL # CANADIAN SYLLABICS CARRIER SHI
+1659;AL # CANADIAN SYLLABICS CARRIER SHA
+165A;AL # CANADIAN SYLLABICS CARRIER SH
+165B;AL # CANADIAN SYLLABICS CARRIER TSU
+165C;AL # CANADIAN SYLLABICS CARRIER TSO
+165D;AL # CANADIAN SYLLABICS CARRIER TSE
+165E;AL # CANADIAN SYLLABICS CARRIER TSEE
+165F;AL # CANADIAN SYLLABICS CARRIER TSI
+1660;AL # CANADIAN SYLLABICS CARRIER TSA
+1661;AL # CANADIAN SYLLABICS CARRIER CHU
+1662;AL # CANADIAN SYLLABICS CARRIER CHO
+1663;AL # CANADIAN SYLLABICS CARRIER CHE
+1664;AL # CANADIAN SYLLABICS CARRIER CHEE
+1665;AL # CANADIAN SYLLABICS CARRIER CHI
+1666;AL # CANADIAN SYLLABICS CARRIER CHA
+1667;AL # CANADIAN SYLLABICS CARRIER TTSU
+1668;AL # CANADIAN SYLLABICS CARRIER TTSO
+1669;AL # CANADIAN SYLLABICS CARRIER TTSE
+166A;AL # CANADIAN SYLLABICS CARRIER TTSEE
+166B;AL # CANADIAN SYLLABICS CARRIER TTSI
+166C;AL # CANADIAN SYLLABICS CARRIER TTSA
+166D;AL # CANADIAN SYLLABICS CHI SIGN
+166E;AL # CANADIAN SYLLABICS FULL STOP
+166F;AL # CANADIAN SYLLABICS QAI
+1670;AL # CANADIAN SYLLABICS NGAI
+1671;AL # CANADIAN SYLLABICS NNGI
+1672;AL # CANADIAN SYLLABICS NNGII
+1673;AL # CANADIAN SYLLABICS NNGO
+1674;AL # CANADIAN SYLLABICS NNGOO
+1675;AL # CANADIAN SYLLABICS NNGA
+1676;AL # CANADIAN SYLLABICS NNGAA
+1680;BA # OGHAM SPACE MARK
+1681;AL # OGHAM LETTER BEITH
+1682;AL # OGHAM LETTER LUIS
+1683;AL # OGHAM LETTER FEARN
+1684;AL # OGHAM LETTER SAIL
+1685;AL # OGHAM LETTER NION
+1686;AL # OGHAM LETTER UATH
+1687;AL # OGHAM LETTER DAIR
+1688;AL # OGHAM LETTER TINNE
+1689;AL # OGHAM LETTER COLL
+168A;AL # OGHAM LETTER CEIRT
+168B;AL # OGHAM LETTER MUIN
+168C;AL # OGHAM LETTER GORT
+168D;AL # OGHAM LETTER NGEADAL
+168E;AL # OGHAM LETTER STRAIF
+168F;AL # OGHAM LETTER RUIS
+1690;AL # OGHAM LETTER AILM
+1691;AL # OGHAM LETTER ONN
+1692;AL # OGHAM LETTER UR
+1693;AL # OGHAM LETTER EADHADH
+1694;AL # OGHAM LETTER IODHADH
+1695;AL # OGHAM LETTER EABHADH
+1696;AL # OGHAM LETTER OR
+1697;AL # OGHAM LETTER UILLEANN
+1698;AL # OGHAM LETTER IFIN
+1699;AL # OGHAM LETTER EAMHANCHOLL
+169A;AL # OGHAM LETTER PEITH
+169B;OP # OGHAM FEATHER MARK
+169C;CL # OGHAM REVERSED FEATHER MARK
+16A0;AL # RUNIC LETTER FEHU FEOH FE F
+16A1;AL # RUNIC LETTER V
+16A2;AL # RUNIC LETTER URUZ UR U
+16A3;AL # RUNIC LETTER YR
+16A4;AL # RUNIC LETTER Y
+16A5;AL # RUNIC LETTER W
+16A6;AL # RUNIC LETTER THURISAZ THURS THORN
+16A7;AL # RUNIC LETTER ETH
+16A8;AL # RUNIC LETTER ANSUZ A
+16A9;AL # RUNIC LETTER OS O
+16AA;AL # RUNIC LETTER AC A
+16AB;AL # RUNIC LETTER AESC
+16AC;AL # RUNIC LETTER LONG-BRANCH-OSS O
+16AD;AL # RUNIC LETTER SHORT-TWIG-OSS O
+16AE;AL # RUNIC LETTER O
+16AF;AL # RUNIC LETTER OE
+16B0;AL # RUNIC LETTER ON
+16B1;AL # RUNIC LETTER RAIDO RAD REID R
+16B2;AL # RUNIC LETTER KAUNA
+16B3;AL # RUNIC LETTER CEN
+16B4;AL # RUNIC LETTER KAUN K
+16B5;AL # RUNIC LETTER G
+16B6;AL # RUNIC LETTER ENG
+16B7;AL # RUNIC LETTER GEBO GYFU G
+16B8;AL # RUNIC LETTER GAR
+16B9;AL # RUNIC LETTER WUNJO WYNN W
+16BA;AL # RUNIC LETTER HAGLAZ H
+16BB;AL # RUNIC LETTER HAEGL H
+16BC;AL # RUNIC LETTER LONG-BRANCH-HAGALL H
+16BD;AL # RUNIC LETTER SHORT-TWIG-HAGALL H
+16BE;AL # RUNIC LETTER NAUDIZ NYD NAUD N
+16BF;AL # RUNIC LETTER SHORT-TWIG-NAUD N
+16C0;AL # RUNIC LETTER DOTTED-N
+16C1;AL # RUNIC LETTER ISAZ IS ISS I
+16C2;AL # RUNIC LETTER E
+16C3;AL # RUNIC LETTER JERAN J
+16C4;AL # RUNIC LETTER GER
+16C5;AL # RUNIC LETTER LONG-BRANCH-AR AE
+16C6;AL # RUNIC LETTER SHORT-TWIG-AR A
+16C7;AL # RUNIC LETTER IWAZ EOH
+16C8;AL # RUNIC LETTER PERTHO PEORTH P
+16C9;AL # RUNIC LETTER ALGIZ EOLHX
+16CA;AL # RUNIC LETTER SOWILO S
+16CB;AL # RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+16CC;AL # RUNIC LETTER SHORT-TWIG-SOL S
+16CD;AL # RUNIC LETTER C
+16CE;AL # RUNIC LETTER Z
+16CF;AL # RUNIC LETTER TIWAZ TIR TYR T
+16D0;AL # RUNIC LETTER SHORT-TWIG-TYR T
+16D1;AL # RUNIC LETTER D
+16D2;AL # RUNIC LETTER BERKANAN BEORC BJARKAN B
+16D3;AL # RUNIC LETTER SHORT-TWIG-BJARKAN B
+16D4;AL # RUNIC LETTER DOTTED-P
+16D5;AL # RUNIC LETTER OPEN-P
+16D6;AL # RUNIC LETTER EHWAZ EH E
+16D7;AL # RUNIC LETTER MANNAZ MAN M
+16D8;AL # RUNIC LETTER LONG-BRANCH-MADR M
+16D9;AL # RUNIC LETTER SHORT-TWIG-MADR M
+16DA;AL # RUNIC LETTER LAUKAZ LAGU LOGR L
+16DB;AL # RUNIC LETTER DOTTED-L
+16DC;AL # RUNIC LETTER INGWAZ
+16DD;AL # RUNIC LETTER ING
+16DE;AL # RUNIC LETTER DAGAZ DAEG D
+16DF;AL # RUNIC LETTER OTHALAN ETHEL O
+16E0;AL # RUNIC LETTER EAR
+16E1;AL # RUNIC LETTER IOR
+16E2;AL # RUNIC LETTER CWEORTH
+16E3;AL # RUNIC LETTER CALC
+16E4;AL # RUNIC LETTER CEALC
+16E5;AL # RUNIC LETTER STAN
+16E6;AL # RUNIC LETTER LONG-BRANCH-YR
+16E7;AL # RUNIC LETTER SHORT-TWIG-YR
+16E8;AL # RUNIC LETTER ICELANDIC-YR
+16E9;AL # RUNIC LETTER Q
+16EA;AL # RUNIC LETTER X
+16EB;AL # RUNIC SINGLE PUNCTUATION
+16EC;AL # RUNIC MULTIPLE PUNCTUATION
+16ED;AL # RUNIC CROSS PUNCTUATION
+16EE;AL # RUNIC ARLAUG SYMBOL
+16EF;AL # RUNIC TVIMADUR SYMBOL
+16F0;AL # RUNIC BELGTHOR SYMBOL
+1700;AL # TAGALOG LETTER A
+1701;AL # TAGALOG LETTER I
+1702;AL # TAGALOG LETTER U
+1703;AL # TAGALOG LETTER KA
+1704;AL # TAGALOG LETTER GA
+1705;AL # TAGALOG LETTER NGA
+1706;AL # TAGALOG LETTER TA
+1707;AL # TAGALOG LETTER DA
+1708;AL # TAGALOG LETTER NA
+1709;AL # TAGALOG LETTER PA
+170A;AL # TAGALOG LETTER BA
+170B;AL # TAGALOG LETTER MA
+170C;AL # TAGALOG LETTER YA
+170E;AL # TAGALOG LETTER LA
+170F;AL # TAGALOG LETTER WA
+1710;AL # TAGALOG LETTER SA
+1711;AL # TAGALOG LETTER HA
+1712;CM # TAGALOG VOWEL SIGN I
+1713;CM # TAGALOG VOWEL SIGN U
+1714;CM # TAGALOG SIGN VIRAMA
+1720;AL # HANUNOO LETTER A
+1721;AL # HANUNOO LETTER I
+1722;AL # HANUNOO LETTER U
+1723;AL # HANUNOO LETTER KA
+1724;AL # HANUNOO LETTER GA
+1725;AL # HANUNOO LETTER NGA
+1726;AL # HANUNOO LETTER TA
+1727;AL # HANUNOO LETTER DA
+1728;AL # HANUNOO LETTER NA
+1729;AL # HANUNOO LETTER PA
+172A;AL # HANUNOO LETTER BA
+172B;AL # HANUNOO LETTER MA
+172C;AL # HANUNOO LETTER YA
+172D;AL # HANUNOO LETTER RA
+172E;AL # HANUNOO LETTER LA
+172F;AL # HANUNOO LETTER WA
+1730;AL # HANUNOO LETTER SA
+1731;AL # HANUNOO LETTER HA
+1732;CM # HANUNOO VOWEL SIGN I
+1733;CM # HANUNOO VOWEL SIGN U
+1734;CM # HANUNOO SIGN PAMUDPOD
+1735;AL # PHILIPPINE SINGLE PUNCTUATION
+1736;AL # PHILIPPINE DOUBLE PUNCTUATION
+1740;AL # BUHID LETTER A
+1741;AL # BUHID LETTER I
+1742;AL # BUHID LETTER U
+1743;AL # BUHID LETTER KA
+1744;AL # BUHID LETTER GA
+1745;AL # BUHID LETTER NGA
+1746;AL # BUHID LETTER TA
+1747;AL # BUHID LETTER DA
+1748;AL # BUHID LETTER NA
+1749;AL # BUHID LETTER PA
+174A;AL # BUHID LETTER BA
+174B;AL # BUHID LETTER MA
+174C;AL # BUHID LETTER YA
+174D;AL # BUHID LETTER RA
+174E;AL # BUHID LETTER LA
+174F;AL # BUHID LETTER WA
+1750;AL # BUHID LETTER SA
+1751;AL # BUHID LETTER HA
+1752;CM # BUHID VOWEL SIGN I
+1753;CM # BUHID VOWEL SIGN U
+1760;AL # TAGBANWA LETTER A
+1761;AL # TAGBANWA LETTER I
+1762;AL # TAGBANWA LETTER U
+1763;AL # TAGBANWA LETTER KA
+1764;AL # TAGBANWA LETTER GA
+1765;AL # TAGBANWA LETTER NGA
+1766;AL # TAGBANWA LETTER TA
+1767;AL # TAGBANWA LETTER DA
+1768;AL # TAGBANWA LETTER NA
+1769;AL # TAGBANWA LETTER PA
+176A;AL # TAGBANWA LETTER BA
+176B;AL # TAGBANWA LETTER MA
+176C;AL # TAGBANWA LETTER YA
+176E;AL # TAGBANWA LETTER LA
+176F;AL # TAGBANWA LETTER WA
+1770;AL # TAGBANWA LETTER SA
+1772;CM # TAGBANWA VOWEL SIGN I
+1773;CM # TAGBANWA VOWEL SIGN U
+1780;SA # KHMER LETTER KA
+1781;SA # KHMER LETTER KHA
+1782;SA # KHMER LETTER KO
+1783;SA # KHMER LETTER KHO
+1784;SA # KHMER LETTER NGO
+1785;SA # KHMER LETTER CA
+1786;SA # KHMER LETTER CHA
+1787;SA # KHMER LETTER CO
+1788;SA # KHMER LETTER CHO
+1789;SA # KHMER LETTER NYO
+178A;SA # KHMER LETTER DA
+178B;SA # KHMER LETTER TTHA
+178C;SA # KHMER LETTER DO
+178D;SA # KHMER LETTER TTHO
+178E;SA # KHMER LETTER NNO
+178F;SA # KHMER LETTER TA
+1790;SA # KHMER LETTER THA
+1791;SA # KHMER LETTER TO
+1792;SA # KHMER LETTER THO
+1793;SA # KHMER LETTER NO
+1794;SA # KHMER LETTER BA
+1795;SA # KHMER LETTER PHA
+1796;SA # KHMER LETTER PO
+1797;SA # KHMER LETTER PHO
+1798;SA # KHMER LETTER MO
+1799;SA # KHMER LETTER YO
+179A;SA # KHMER LETTER RO
+179B;SA # KHMER LETTER LO
+179C;SA # KHMER LETTER VO
+179D;SA # KHMER LETTER SHA
+179E;SA # KHMER LETTER SSO
+179F;SA # KHMER LETTER SA
+17A0;SA # KHMER LETTER HA
+17A1;SA # KHMER LETTER LA
+17A2;SA # KHMER LETTER QA
+17A3;SA # KHMER INDEPENDENT VOWEL QAQ
+17A4;SA # KHMER INDEPENDENT VOWEL QAA
+17A5;SA # KHMER INDEPENDENT VOWEL QI
+17A6;SA # KHMER INDEPENDENT VOWEL QII
+17A7;SA # KHMER INDEPENDENT VOWEL QU
+17A8;SA # KHMER INDEPENDENT VOWEL QUK
+17A9;SA # KHMER INDEPENDENT VOWEL QUU
+17AA;SA # KHMER INDEPENDENT VOWEL QUUV
+17AB;SA # KHMER INDEPENDENT VOWEL RY
+17AC;SA # KHMER INDEPENDENT VOWEL RYY
+17AD;SA # KHMER INDEPENDENT VOWEL LY
+17AE;SA # KHMER INDEPENDENT VOWEL LYY
+17AF;SA # KHMER INDEPENDENT VOWEL QE
+17B0;SA # KHMER INDEPENDENT VOWEL QAI
+17B1;SA # KHMER INDEPENDENT VOWEL QOO TYPE ONE
+17B2;SA # KHMER INDEPENDENT VOWEL QOO TYPE TWO
+17B3;SA # KHMER INDEPENDENT VOWEL QAU
+17B4;CM # KHMER VOWEL INHERENT AQ
+17B5;CM # KHMER VOWEL INHERENT AA
+17B6;CM # KHMER VOWEL SIGN AA
+17B7;CM # KHMER VOWEL SIGN I
+17B8;CM # KHMER VOWEL SIGN II
+17B9;CM # KHMER VOWEL SIGN Y
+17BA;CM # KHMER VOWEL SIGN YY
+17BB;CM # KHMER VOWEL SIGN U
+17BC;CM # KHMER VOWEL SIGN UU
+17BD;CM # KHMER VOWEL SIGN UA
+17BE;CM # KHMER VOWEL SIGN OE
+17BF;CM # KHMER VOWEL SIGN YA
+17C0;CM # KHMER VOWEL SIGN IE
+17C1;CM # KHMER VOWEL SIGN E
+17C2;CM # KHMER VOWEL SIGN AE
+17C3;CM # KHMER VOWEL SIGN AI
+17C4;CM # KHMER VOWEL SIGN OO
+17C5;CM # KHMER VOWEL SIGN AU
+17C6;CM # KHMER SIGN NIKAHIT
+17C7;CM # KHMER SIGN REAHMUK
+17C8;CM # KHMER SIGN YUUKALEAPINTU
+17C9;CM # KHMER SIGN MUUSIKATOAN
+17CA;CM # KHMER SIGN TRIISAP
+17CB;CM # KHMER SIGN BANTOC
+17CC;CM # KHMER SIGN ROBAT
+17CD;CM # KHMER SIGN TOANDAKHIAT
+17CE;CM # KHMER SIGN KAKABAT
+17CF;CM # KHMER SIGN AHSDA
+17D0;CM # KHMER SIGN SAMYOK SANNYA
+17D1;CM # KHMER SIGN VIRIAM
+17D2;CM # KHMER SIGN COENG
+17D3;CM # KHMER SIGN BATHAMASAT
+17D4;NS # KHMER SIGN KHAN
+17D5;BA # KHMER SIGN BARIYOOSAN
+17D6;NS # KHMER SIGN CAMNUC PII KUUH
+17D7;NS # KHMER SIGN LEK TOO
+17D8;NS # KHMER SIGN BEYYAL
+17D9;NS # KHMER SIGN PHNAEK MUAN
+17DA;NS # KHMER SIGN KOOMUUT
+17DB;PR # KHMER CURRENCY SYMBOL RIEL
+17DC;AL # KHMER SIGN AVAKRAHASANYA
+17E0;NU # KHMER DIGIT ZERO
+17E1;NU # KHMER DIGIT ONE
+17E2;NU # KHMER DIGIT TWO
+17E3;NU # KHMER DIGIT THREE
+17E4;NU # KHMER DIGIT FOUR
+17E5;NU # KHMER DIGIT FIVE
+17E6;NU # KHMER DIGIT SIX
+17E7;NU # KHMER DIGIT SEVEN
+17E8;NU # KHMER DIGIT EIGHT
+17E9;NU # KHMER DIGIT NINE
+1800;AL # MONGOLIAN BIRGA
+1801;AL # MONGOLIAN ELLIPSIS
+1802;AL # MONGOLIAN COMMA
+1803;AL # MONGOLIAN FULL STOP
+1804;AL # MONGOLIAN COLON
+1805;AL # MONGOLIAN FOUR DOTS
+1806;BB # MONGOLIAN TODO SOFT HYPHEN
+1807;AL # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
+1808;AL # MONGOLIAN MANCHU COMMA
+1809;AL # MONGOLIAN MANCHU FULL STOP
+180A;AL # MONGOLIAN NIRUGU
+180B;CM # MONGOLIAN FREE VARIATION SELECTOR ONE
+180C;CM # MONGOLIAN FREE VARIATION SELECTOR TWO
+180D;CM # MONGOLIAN FREE VARIATION SELECTOR THREE
+180E;CM # MONGOLIAN VOWEL SEPARATOR
+1810;NU # MONGOLIAN DIGIT ZERO
+1811;NU # MONGOLIAN DIGIT ONE
+1812;NU # MONGOLIAN DIGIT TWO
+1813;NU # MONGOLIAN DIGIT THREE
+1814;NU # MONGOLIAN DIGIT FOUR
+1815;NU # MONGOLIAN DIGIT FIVE
+1816;NU # MONGOLIAN DIGIT SIX
+1817;NU # MONGOLIAN DIGIT SEVEN
+1818;NU # MONGOLIAN DIGIT EIGHT
+1819;NU # MONGOLIAN DIGIT NINE
+1820;AL # MONGOLIAN LETTER A
+1821;AL # MONGOLIAN LETTER E
+1822;AL # MONGOLIAN LETTER I
+1823;AL # MONGOLIAN LETTER O
+1824;AL # MONGOLIAN LETTER U
+1825;AL # MONGOLIAN LETTER OE
+1826;AL # MONGOLIAN LETTER UE
+1827;AL # MONGOLIAN LETTER EE
+1828;AL # MONGOLIAN LETTER NA
+1829;AL # MONGOLIAN LETTER ANG
+182A;AL # MONGOLIAN LETTER BA
+182B;AL # MONGOLIAN LETTER PA
+182C;AL # MONGOLIAN LETTER QA
+182D;AL # MONGOLIAN LETTER GA
+182E;AL # MONGOLIAN LETTER MA
+182F;AL # MONGOLIAN LETTER LA
+1830;AL # MONGOLIAN LETTER SA
+1831;AL # MONGOLIAN LETTER SHA
+1832;AL # MONGOLIAN LETTER TA
+1833;AL # MONGOLIAN LETTER DA
+1834;AL # MONGOLIAN LETTER CHA
+1835;AL # MONGOLIAN LETTER JA
+1836;AL # MONGOLIAN LETTER YA
+1837;AL # MONGOLIAN LETTER RA
+1838;AL # MONGOLIAN LETTER WA
+1839;AL # MONGOLIAN LETTER FA
+183A;AL # MONGOLIAN LETTER KA
+183B;AL # MONGOLIAN LETTER KHA
+183C;AL # MONGOLIAN LETTER TSA
+183D;AL # MONGOLIAN LETTER ZA
+183E;AL # MONGOLIAN LETTER HAA
+183F;AL # MONGOLIAN LETTER ZRA
+1840;AL # MONGOLIAN LETTER LHA
+1841;AL # MONGOLIAN LETTER ZHI
+1842;AL # MONGOLIAN LETTER CHI
+1843;AL # MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844;AL # MONGOLIAN LETTER TODO E
+1845;AL # MONGOLIAN LETTER TODO I
+1846;AL # MONGOLIAN LETTER TODO O
+1847;AL # MONGOLIAN LETTER TODO U
+1848;AL # MONGOLIAN LETTER TODO OE
+1849;AL # MONGOLIAN LETTER TODO UE
+184A;AL # MONGOLIAN LETTER TODO ANG
+184B;AL # MONGOLIAN LETTER TODO BA
+184C;AL # MONGOLIAN LETTER TODO PA
+184D;AL # MONGOLIAN LETTER TODO QA
+184E;AL # MONGOLIAN LETTER TODO GA
+184F;AL # MONGOLIAN LETTER TODO MA
+1850;AL # MONGOLIAN LETTER TODO TA
+1851;AL # MONGOLIAN LETTER TODO DA
+1852;AL # MONGOLIAN LETTER TODO CHA
+1853;AL # MONGOLIAN LETTER TODO JA
+1854;AL # MONGOLIAN LETTER TODO TSA
+1855;AL # MONGOLIAN LETTER TODO YA
+1856;AL # MONGOLIAN LETTER TODO WA
+1857;AL # MONGOLIAN LETTER TODO KA
+1858;AL # MONGOLIAN LETTER TODO GAA
+1859;AL # MONGOLIAN LETTER TODO HAA
+185A;AL # MONGOLIAN LETTER TODO JIA
+185B;AL # MONGOLIAN LETTER TODO NIA
+185C;AL # MONGOLIAN LETTER TODO DZA
+185D;AL # MONGOLIAN LETTER SIBE E
+185E;AL # MONGOLIAN LETTER SIBE I
+185F;AL # MONGOLIAN LETTER SIBE IY
+1860;AL # MONGOLIAN LETTER SIBE UE
+1861;AL # MONGOLIAN LETTER SIBE U
+1862;AL # MONGOLIAN LETTER SIBE ANG
+1863;AL # MONGOLIAN LETTER SIBE KA
+1864;AL # MONGOLIAN LETTER SIBE GA
+1865;AL # MONGOLIAN LETTER SIBE HA
+1866;AL # MONGOLIAN LETTER SIBE PA
+1867;AL # MONGOLIAN LETTER SIBE SHA
+1868;AL # MONGOLIAN LETTER SIBE TA
+1869;AL # MONGOLIAN LETTER SIBE DA
+186A;AL # MONGOLIAN LETTER SIBE JA
+186B;AL # MONGOLIAN LETTER SIBE FA
+186C;AL # MONGOLIAN LETTER SIBE GAA
+186D;AL # MONGOLIAN LETTER SIBE HAA
+186E;AL # MONGOLIAN LETTER SIBE TSA
+186F;AL # MONGOLIAN LETTER SIBE ZA
+1870;AL # MONGOLIAN LETTER SIBE RAA
+1871;AL # MONGOLIAN LETTER SIBE CHA
+1872;AL # MONGOLIAN LETTER SIBE ZHA
+1873;AL # MONGOLIAN LETTER MANCHU I
+1874;AL # MONGOLIAN LETTER MANCHU KA
+1875;AL # MONGOLIAN LETTER MANCHU RA
+1876;AL # MONGOLIAN LETTER MANCHU FA
+1877;AL # MONGOLIAN LETTER MANCHU ZHA
+1880;AL # MONGOLIAN LETTER ALI GALI ANUSVARA ONE
+1881;AL # MONGOLIAN LETTER ALI GALI VISARGA ONE
+1882;AL # MONGOLIAN LETTER ALI GALI DAMARU
+1883;AL # MONGOLIAN LETTER ALI GALI UBADAMA
+1884;AL # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885;AL # MONGOLIAN LETTER ALI GALI BALUDA
+1886;AL # MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887;AL # MONGOLIAN LETTER ALI GALI A
+1888;AL # MONGOLIAN LETTER ALI GALI I
+1889;AL # MONGOLIAN LETTER ALI GALI KA
+188A;AL # MONGOLIAN LETTER ALI GALI NGA
+188B;AL # MONGOLIAN LETTER ALI GALI CA
+188C;AL # MONGOLIAN LETTER ALI GALI TTA
+188D;AL # MONGOLIAN LETTER ALI GALI TTHA
+188E;AL # MONGOLIAN LETTER ALI GALI DDA
+188F;AL # MONGOLIAN LETTER ALI GALI NNA
+1890;AL # MONGOLIAN LETTER ALI GALI TA
+1891;AL # MONGOLIAN LETTER ALI GALI DA
+1892;AL # MONGOLIAN LETTER ALI GALI PA
+1893;AL # MONGOLIAN LETTER ALI GALI PHA
+1894;AL # MONGOLIAN LETTER ALI GALI SSA
+1895;AL # MONGOLIAN LETTER ALI GALI ZHA
+1896;AL # MONGOLIAN LETTER ALI GALI ZA
+1897;AL # MONGOLIAN LETTER ALI GALI AH
+1898;AL # MONGOLIAN LETTER TODO ALI GALI TA
+1899;AL # MONGOLIAN LETTER TODO ALI GALI ZHA
+189A;AL # MONGOLIAN LETTER MANCHU ALI GALI GHA
+189B;AL # MONGOLIAN LETTER MANCHU ALI GALI NGA
+189C;AL # MONGOLIAN LETTER MANCHU ALI GALI CA
+189D;AL # MONGOLIAN LETTER MANCHU ALI GALI JHA
+189E;AL # MONGOLIAN LETTER MANCHU ALI GALI TTA
+189F;AL # MONGOLIAN LETTER MANCHU ALI GALI DDHA
+18A0;AL # MONGOLIAN LETTER MANCHU ALI GALI TA
+18A1;AL # MONGOLIAN LETTER MANCHU ALI GALI DHA
+18A2;AL # MONGOLIAN LETTER MANCHU ALI GALI SSA
+18A3;AL # MONGOLIAN LETTER MANCHU ALI GALI CYA
+18A4;AL # MONGOLIAN LETTER MANCHU ALI GALI ZHA
+18A5;AL # MONGOLIAN LETTER MANCHU ALI GALI ZA
+18A6;AL # MONGOLIAN LETTER ALI GALI HALF U
+18A7;AL # MONGOLIAN LETTER ALI GALI HALF YA
+18A8;AL # MONGOLIAN LETTER MANCHU ALI GALI BHA
+18A9;CM # MONGOLIAN LETTER ALI GALI DAGALGA
+1E00;AL # LATIN CAPITAL LETTER A WITH RING BELOW
+1E01;AL # LATIN SMALL LETTER A WITH RING BELOW
+1E02;AL # LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E03;AL # LATIN SMALL LETTER B WITH DOT ABOVE
+1E04;AL # LATIN CAPITAL LETTER B WITH DOT BELOW
+1E05;AL # LATIN SMALL LETTER B WITH DOT BELOW
+1E06;AL # LATIN CAPITAL LETTER B WITH LINE BELOW
+1E07;AL # LATIN SMALL LETTER B WITH LINE BELOW
+1E08;AL # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E09;AL # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0A;AL # LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0B;AL # LATIN SMALL LETTER D WITH DOT ABOVE
+1E0C;AL # LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0D;AL # LATIN SMALL LETTER D WITH DOT BELOW
+1E0E;AL # LATIN CAPITAL LETTER D WITH LINE BELOW
+1E0F;AL # LATIN SMALL LETTER D WITH LINE BELOW
+1E10;AL # LATIN CAPITAL LETTER D WITH CEDILLA
+1E11;AL # LATIN SMALL LETTER D WITH CEDILLA
+1E12;AL # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E13;AL # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E14;AL # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E15;AL # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E16;AL # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E17;AL # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E18;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E19;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1A;AL # LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1B;AL # LATIN SMALL LETTER E WITH TILDE BELOW
+1E1C;AL # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1D;AL # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1E;AL # LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E1F;AL # LATIN SMALL LETTER F WITH DOT ABOVE
+1E20;AL # LATIN CAPITAL LETTER G WITH MACRON
+1E21;AL # LATIN SMALL LETTER G WITH MACRON
+1E22;AL # LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E23;AL # LATIN SMALL LETTER H WITH DOT ABOVE
+1E24;AL # LATIN CAPITAL LETTER H WITH DOT BELOW
+1E25;AL # LATIN SMALL LETTER H WITH DOT BELOW
+1E26;AL # LATIN CAPITAL LETTER H WITH DIAERESIS
+1E27;AL # LATIN SMALL LETTER H WITH DIAERESIS
+1E28;AL # LATIN CAPITAL LETTER H WITH CEDILLA
+1E29;AL # LATIN SMALL LETTER H WITH CEDILLA
+1E2A;AL # LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2B;AL # LATIN SMALL LETTER H WITH BREVE BELOW
+1E2C;AL # LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2D;AL # LATIN SMALL LETTER I WITH TILDE BELOW
+1E2E;AL # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E2F;AL # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E30;AL # LATIN CAPITAL LETTER K WITH ACUTE
+1E31;AL # LATIN SMALL LETTER K WITH ACUTE
+1E32;AL # LATIN CAPITAL LETTER K WITH DOT BELOW
+1E33;AL # LATIN SMALL LETTER K WITH DOT BELOW
+1E34;AL # LATIN CAPITAL LETTER K WITH LINE BELOW
+1E35;AL # LATIN SMALL LETTER K WITH LINE BELOW
+1E36;AL # LATIN CAPITAL LETTER L WITH DOT BELOW
+1E37;AL # LATIN SMALL LETTER L WITH DOT BELOW
+1E38;AL # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E39;AL # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3A;AL # LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3B;AL # LATIN SMALL LETTER L WITH LINE BELOW
+1E3C;AL # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3D;AL # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3E;AL # LATIN CAPITAL LETTER M WITH ACUTE
+1E3F;AL # LATIN SMALL LETTER M WITH ACUTE
+1E40;AL # LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E41;AL # LATIN SMALL LETTER M WITH DOT ABOVE
+1E42;AL # LATIN CAPITAL LETTER M WITH DOT BELOW
+1E43;AL # LATIN SMALL LETTER M WITH DOT BELOW
+1E44;AL # LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E45;AL # LATIN SMALL LETTER N WITH DOT ABOVE
+1E46;AL # LATIN CAPITAL LETTER N WITH DOT BELOW
+1E47;AL # LATIN SMALL LETTER N WITH DOT BELOW
+1E48;AL # LATIN CAPITAL LETTER N WITH LINE BELOW
+1E49;AL # LATIN SMALL LETTER N WITH LINE BELOW
+1E4A;AL # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4B;AL # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4C;AL # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4D;AL # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4E;AL # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E4F;AL # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E50;AL # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E51;AL # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E52;AL # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E53;AL # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E54;AL # LATIN CAPITAL LETTER P WITH ACUTE
+1E55;AL # LATIN SMALL LETTER P WITH ACUTE
+1E56;AL # LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E57;AL # LATIN SMALL LETTER P WITH DOT ABOVE
+1E58;AL # LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E59;AL # LATIN SMALL LETTER R WITH DOT ABOVE
+1E5A;AL # LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5B;AL # LATIN SMALL LETTER R WITH DOT BELOW
+1E5C;AL # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5D;AL # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5E;AL # LATIN CAPITAL LETTER R WITH LINE BELOW
+1E5F;AL # LATIN SMALL LETTER R WITH LINE BELOW
+1E60;AL # LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E61;AL # LATIN SMALL LETTER S WITH DOT ABOVE
+1E62;AL # LATIN CAPITAL LETTER S WITH DOT BELOW
+1E63;AL # LATIN SMALL LETTER S WITH DOT BELOW
+1E64;AL # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E65;AL # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E66;AL # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E67;AL # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E68;AL # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E69;AL # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A;AL # LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6B;AL # LATIN SMALL LETTER T WITH DOT ABOVE
+1E6C;AL # LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6D;AL # LATIN SMALL LETTER T WITH DOT BELOW
+1E6E;AL # LATIN CAPITAL LETTER T WITH LINE BELOW
+1E6F;AL # LATIN SMALL LETTER T WITH LINE BELOW
+1E70;AL # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E71;AL # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E72;AL # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E73;AL # LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E74;AL # LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E75;AL # LATIN SMALL LETTER U WITH TILDE BELOW
+1E76;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E77;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E78;AL # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E79;AL # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7A;AL # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7B;AL # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7C;AL # LATIN CAPITAL LETTER V WITH TILDE
+1E7D;AL # LATIN SMALL LETTER V WITH TILDE
+1E7E;AL # LATIN CAPITAL LETTER V WITH DOT BELOW
+1E7F;AL # LATIN SMALL LETTER V WITH DOT BELOW
+1E80;AL # LATIN CAPITAL LETTER W WITH GRAVE
+1E81;AL # LATIN SMALL LETTER W WITH GRAVE
+1E82;AL # LATIN CAPITAL LETTER W WITH ACUTE
+1E83;AL # LATIN SMALL LETTER W WITH ACUTE
+1E84;AL # LATIN CAPITAL LETTER W WITH DIAERESIS
+1E85;AL # LATIN SMALL LETTER W WITH DIAERESIS
+1E86;AL # LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E87;AL # LATIN SMALL LETTER W WITH DOT ABOVE
+1E88;AL # LATIN CAPITAL LETTER W WITH DOT BELOW
+1E89;AL # LATIN SMALL LETTER W WITH DOT BELOW
+1E8A;AL # LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8B;AL # LATIN SMALL LETTER X WITH DOT ABOVE
+1E8C;AL # LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8D;AL # LATIN SMALL LETTER X WITH DIAERESIS
+1E8E;AL # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E8F;AL # LATIN SMALL LETTER Y WITH DOT ABOVE
+1E90;AL # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E91;AL # LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E92;AL # LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E93;AL # LATIN SMALL LETTER Z WITH DOT BELOW
+1E94;AL # LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E95;AL # LATIN SMALL LETTER Z WITH LINE BELOW
+1E96;AL # LATIN SMALL LETTER H WITH LINE BELOW
+1E97;AL # LATIN SMALL LETTER T WITH DIAERESIS
+1E98;AL # LATIN SMALL LETTER W WITH RING ABOVE
+1E99;AL # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A;AL # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1E9B;AL # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0;AL # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA1;AL # LATIN SMALL LETTER A WITH DOT BELOW
+1EA2;AL # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA3;AL # LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA4;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA5;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA7;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA9;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAB;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAD;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE;AL # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EAF;AL # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB0;AL # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB1;AL # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB2;AL # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB3;AL # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4;AL # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB5;AL # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB6;AL # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB7;AL # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB8;AL # LATIN CAPITAL LETTER E WITH DOT BELOW
+1EB9;AL # LATIN SMALL LETTER E WITH DOT BELOW
+1EBA;AL # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBB;AL # LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBC;AL # LATIN CAPITAL LETTER E WITH TILDE
+1EBD;AL # LATIN SMALL LETTER E WITH TILDE
+1EBE;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBF;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC1;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC3;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC5;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC7;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8;AL # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1EC9;AL # LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECA;AL # LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECB;AL # LATIN SMALL LETTER I WITH DOT BELOW
+1ECC;AL # LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECD;AL # LATIN SMALL LETTER O WITH DOT BELOW
+1ECE;AL # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ECF;AL # LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED0;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED1;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED3;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED5;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED7;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED9;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA;AL # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDB;AL # LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDC;AL # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDD;AL # LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDE;AL # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EDF;AL # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE0;AL # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE1;AL # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE2;AL # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE3;AL # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE4;AL # LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE5;AL # LATIN SMALL LETTER U WITH DOT BELOW
+1EE6;AL # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE7;AL # LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE8;AL # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EE9;AL # LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEA;AL # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEB;AL # LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEC;AL # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EED;AL # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEE;AL # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EEF;AL # LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF0;AL # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF1;AL # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF2;AL # LATIN CAPITAL LETTER Y WITH GRAVE
+1EF3;AL # LATIN SMALL LETTER Y WITH GRAVE
+1EF4;AL # LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF5;AL # LATIN SMALL LETTER Y WITH DOT BELOW
+1EF6;AL # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF7;AL # LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF8;AL # LATIN CAPITAL LETTER Y WITH TILDE
+1EF9;AL # LATIN SMALL LETTER Y WITH TILDE
+1F00;AL # GREEK SMALL LETTER ALPHA WITH PSILI
+1F01;AL # GREEK SMALL LETTER ALPHA WITH DASIA
+1F02;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F03;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F04;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F05;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F06;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F07;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F08;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10;AL # GREEK SMALL LETTER EPSILON WITH PSILI
+1F11;AL # GREEK SMALL LETTER EPSILON WITH DASIA
+1F12;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F13;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F14;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F15;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20;AL # GREEK SMALL LETTER ETA WITH PSILI
+1F21;AL # GREEK SMALL LETTER ETA WITH DASIA
+1F22;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F23;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F24;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F25;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F26;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F27;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F28;AL # GREEK CAPITAL LETTER ETA WITH PSILI
+1F29;AL # GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30;AL # GREEK SMALL LETTER IOTA WITH PSILI
+1F31;AL # GREEK SMALL LETTER IOTA WITH DASIA
+1F32;AL # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F33;AL # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F34;AL # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F35;AL # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F36;AL # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F37;AL # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F38;AL # GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39;AL # GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40;AL # GREEK SMALL LETTER OMICRON WITH PSILI
+1F41;AL # GREEK SMALL LETTER OMICRON WITH DASIA
+1F42;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F43;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F44;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F45;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50;AL # GREEK SMALL LETTER UPSILON WITH PSILI
+1F51;AL # GREEK SMALL LETTER UPSILON WITH DASIA
+1F52;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F53;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F54;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F55;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F56;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F57;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60;AL # GREEK SMALL LETTER OMEGA WITH PSILI
+1F61;AL # GREEK SMALL LETTER OMEGA WITH DASIA
+1F62;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F63;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F64;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F65;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F66;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F67;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F68;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70;AL # GREEK SMALL LETTER ALPHA WITH VARIA
+1F71;AL # GREEK SMALL LETTER ALPHA WITH OXIA
+1F72;AL # GREEK SMALL LETTER EPSILON WITH VARIA
+1F73;AL # GREEK SMALL LETTER EPSILON WITH OXIA
+1F74;AL # GREEK SMALL LETTER ETA WITH VARIA
+1F75;AL # GREEK SMALL LETTER ETA WITH OXIA
+1F76;AL # GREEK SMALL LETTER IOTA WITH VARIA
+1F77;AL # GREEK SMALL LETTER IOTA WITH OXIA
+1F78;AL # GREEK SMALL LETTER OMICRON WITH VARIA
+1F79;AL # GREEK SMALL LETTER OMICRON WITH OXIA
+1F7A;AL # GREEK SMALL LETTER UPSILON WITH VARIA
+1F7B;AL # GREEK SMALL LETTER UPSILON WITH OXIA
+1F7C;AL # GREEK SMALL LETTER OMEGA WITH VARIA
+1F7D;AL # GREEK SMALL LETTER OMEGA WITH OXIA
+1F80;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90;AL # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91;AL # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB0;AL # GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB1;AL # GREEK SMALL LETTER ALPHA WITH MACRON
+1FB2;AL # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3;AL # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4;AL # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8;AL # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9;AL # GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA;AL # GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB;AL # GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC;AL # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD;AL # GREEK KORONIS
+1FBE;AL # GREEK PROSGEGRAMMENI
+1FBF;AL # GREEK PSILI
+1FC0;AL # GREEK PERISPOMENI
+1FC1;AL # GREEK DIALYTIKA AND PERISPOMENI
+1FC2;AL # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3;AL # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4;AL # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8;AL # GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9;AL # GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA;AL # GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB;AL # GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC;AL # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD;AL # GREEK PSILI AND VARIA
+1FCE;AL # GREEK PSILI AND OXIA
+1FCF;AL # GREEK PSILI AND PERISPOMENI
+1FD0;AL # GREEK SMALL LETTER IOTA WITH VRACHY
+1FD1;AL # GREEK SMALL LETTER IOTA WITH MACRON
+1FD2;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6;AL # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8;AL # GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9;AL # GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA;AL # GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB;AL # GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD;AL # GREEK DASIA AND VARIA
+1FDE;AL # GREEK DASIA AND OXIA
+1FDF;AL # GREEK DASIA AND PERISPOMENI
+1FE0;AL # GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE1;AL # GREEK SMALL LETTER UPSILON WITH MACRON
+1FE2;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4;AL # GREEK SMALL LETTER RHO WITH PSILI
+1FE5;AL # GREEK SMALL LETTER RHO WITH DASIA
+1FE6;AL # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8;AL # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9;AL # GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA;AL # GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB;AL # GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC;AL # GREEK CAPITAL LETTER RHO WITH DASIA
+1FED;AL # GREEK DIALYTIKA AND VARIA
+1FEE;AL # GREEK DIALYTIKA AND OXIA
+1FEF;AL # GREEK VARIA
+1FF2;AL # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3;AL # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4;AL # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8;AL # GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9;AL # GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA;AL # GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB;AL # GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC;AL # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD;AL # GREEK OXIA
+1FFE;AL # GREEK DASIA
+2000;BA # EN QUAD
+2001;BA # EM QUAD
+2002;BA # EN SPACE
+2003;BA # EM SPACE
+2004;BA # THREE-PER-EM SPACE
+2005;BA # FOUR-PER-EM SPACE
+2006;BA # SIX-PER-EM SPACE
+2007;GL # FIGURE SPACE
+2008;BA # PUNCTUATION SPACE
+2009;BA # THIN SPACE
+200A;BA # HAIR SPACE
+200B;ZW # ZERO WIDTH SPACE
+200C;CM # ZERO WIDTH NON-JOINER
+200D;CM # ZERO WIDTH JOINER
+200E;CM # LEFT-TO-RIGHT MARK
+200F;CM # RIGHT-TO-LEFT MARK
+2010;BA # HYPHEN
+2011;GL # NON-BREAKING HYPHEN
+2012;BA # FIGURE DASH
+2013;BA # EN DASH
+2014;B2 # EM DASH
+2015;AI # HORIZONTAL BAR
+2016;AI # DOUBLE VERTICAL LINE
+2017;AL # DOUBLE LOW LINE
+2018;QU # LEFT SINGLE QUOTATION MARK
+2019;QU # RIGHT SINGLE QUOTATION MARK
+201A;OP # SINGLE LOW-9 QUOTATION MARK
+201B;QU # SINGLE HIGH-REVERSED-9 QUOTATION MARK
+201C;QU # LEFT DOUBLE QUOTATION MARK
+201D;QU # RIGHT DOUBLE QUOTATION MARK
+201E;OP # DOUBLE LOW-9 QUOTATION MARK
+201F;QU # DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020;AI # DAGGER
+2021;AI # DOUBLE DAGGER
+2022;AL # BULLET
+2023;AL # TRIANGULAR BULLET
+2024;IN # ONE DOT LEADER
+2025;IN # TWO DOT LEADER
+2026;IN # HORIZONTAL ELLIPSIS
+2027;BA # HYPHENATION POINT
+2028;BK # LINE SEPARATOR
+2029;BK # PARAGRAPH SEPARATOR
+202A;CM # LEFT-TO-RIGHT EMBEDDING
+202B;CM # RIGHT-TO-LEFT EMBEDDING
+202C;CM # POP DIRECTIONAL FORMATTING
+202D;CM # LEFT-TO-RIGHT OVERRIDE
+202E;CM # RIGHT-TO-LEFT OVERRIDE
+202F;GL # NARROW NO-BREAK SPACE
+2030;PO # PER MILLE SIGN
+2031;PO # PER TEN THOUSAND SIGN
+2032;PO # PRIME
+2033;PO # DOUBLE PRIME
+2034;PO # TRIPLE PRIME
+2035;PO # REVERSED PRIME
+2036;PO # REVERSED DOUBLE PRIME
+2037;PO # REVERSED TRIPLE PRIME
+2038;AL # CARET
+2039;QU # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A;QU # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203B;AI # REFERENCE MARK
+203C;NS # DOUBLE EXCLAMATION MARK
+203D;AL # INTERROBANG
+203E;AL # OVERLINE
+203F;AL # UNDERTIE
+2040;AL # CHARACTER TIE
+2041;AL # CARET INSERTION POINT
+2042;AL # ASTERISM
+2043;AL # HYPHEN BULLET
+2044;NS # FRACTION SLASH
+2045;OP # LEFT SQUARE BRACKET WITH QUILL
+2046;CL # RIGHT SQUARE BRACKET WITH QUILL
+2047;AL # DOUBLE QUESTION MARK
+2048;AL # QUESTION EXCLAMATION MARK
+2049;AL # EXCLAMATION QUESTION MARK
+204A;AL # TIRONIAN SIGN ET
+204B;AL # REVERSED PILCROW SIGN
+204C;AL # BLACK LEFTWARDS BULLET
+204D;AL # BLACK RIGHTWARDS BULLET
+204E;AL # LOW ASTERISK
+204F;AL # REVERSED SEMICOLON
+2050;AL # CLOSE UP
+2051;AL # TWO ASTERISKS ALIGNED VERTICALLY
+2052;AL # COMMERCIAL MINUS SIGN
+2057;AL # QUADRUPLE PRIME
+205F;BA # MEDIUM MATHEMATICAL SPACE
+2060;GL # WORD JOINER
+2061;AL # FUNCTION APPLICATION
+2062;AL # INVISIBLE TIMES
+2063;AL # INVISIBLE SEPARATOR
+206A;CM # INHIBIT SYMMETRIC SWAPPING
+206B;CM # ACTIVATE SYMMETRIC SWAPPING
+206C;CM # INHIBIT ARABIC FORM SHAPING
+206D;CM # ACTIVATE ARABIC FORM SHAPING
+206E;CM # NATIONAL DIGIT SHAPES
+206F;CM # NOMINAL DIGIT SHAPES
+2070;AL # SUPERSCRIPT ZERO
+2071;AL # SUPERSCRIPT LATIN SMALL LETTER I
+2074;AI # SUPERSCRIPT FOUR
+2075;AL # SUPERSCRIPT FIVE
+2076;AL # SUPERSCRIPT SIX
+2077;AL # SUPERSCRIPT SEVEN
+2078;AL # SUPERSCRIPT EIGHT
+2079;AL # SUPERSCRIPT NINE
+207A;AL # SUPERSCRIPT PLUS SIGN
+207B;AL # SUPERSCRIPT MINUS
+207C;AL # SUPERSCRIPT EQUALS SIGN
+207D;OP # SUPERSCRIPT LEFT PARENTHESIS
+207E;CL # SUPERSCRIPT RIGHT PARENTHESIS
+207F;AI # SUPERSCRIPT LATIN SMALL LETTER N
+2080;AL # SUBSCRIPT ZERO
+2081;AI # SUBSCRIPT ONE
+2082;AI # SUBSCRIPT TWO
+2083;AI # SUBSCRIPT THREE
+2084;AI # SUBSCRIPT FOUR
+2085;AL # SUBSCRIPT FIVE
+2086;AL # SUBSCRIPT SIX
+2087;AL # SUBSCRIPT SEVEN
+2088;AL # SUBSCRIPT EIGHT
+2089;AL # SUBSCRIPT NINE
+208A;AL # SUBSCRIPT PLUS SIGN
+208B;AL # SUBSCRIPT MINUS
+208C;AL # SUBSCRIPT EQUALS SIGN
+208D;OP # SUBSCRIPT LEFT PARENTHESIS
+208E;CL # SUBSCRIPT RIGHT PARENTHESIS
+20A0;PR # EURO-CURRENCY SIGN
+20A1;PR # COLON SIGN
+20A2;PR # CRUZEIRO SIGN
+20A3;PR # FRENCH FRANC SIGN
+20A4;PR # LIRA SIGN
+20A5;PR # MILL SIGN
+20A6;PR # NAIRA SIGN
+20A7;PO # PESETA SIGN
+20A8;PR # RUPEE SIGN
+20A9;PR # WON SIGN
+20AA;PR # NEW SHEQEL SIGN
+20AB;PR # DONG SIGN
+20AC;PR # EURO SIGN
+20AD;PR # KIP SIGN
+20AE;PR # TUGRIK SIGN
+20AF;PR # DRACHMA SIGN
+20B0;PR # GERMAN PENNY SIGN
+20B1;PR # PESO SIGN
+20D0;CM # COMBINING LEFT HARPOON ABOVE
+20D1;CM # COMBINING RIGHT HARPOON ABOVE
+20D2;CM # COMBINING LONG VERTICAL LINE OVERLAY
+20D3;CM # COMBINING SHORT VERTICAL LINE OVERLAY
+20D4;CM # COMBINING ANTICLOCKWISE ARROW ABOVE
+20D5;CM # COMBINING CLOCKWISE ARROW ABOVE
+20D6;CM # COMBINING LEFT ARROW ABOVE
+20D7;CM # COMBINING RIGHT ARROW ABOVE
+20D8;CM # COMBINING RING OVERLAY
+20D9;CM # COMBINING CLOCKWISE RING OVERLAY
+20DA;CM # COMBINING ANTICLOCKWISE RING OVERLAY
+20DB;CM # COMBINING THREE DOTS ABOVE
+20DC;CM # COMBINING FOUR DOTS ABOVE
+20DD;CM # COMBINING ENCLOSING CIRCLE
+20DE;CM # COMBINING ENCLOSING SQUARE
+20DF;CM # COMBINING ENCLOSING DIAMOND
+20E0;CM # COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1;CM # COMBINING LEFT RIGHT ARROW ABOVE
+20E2;CM # COMBINING ENCLOSING SCREEN
+20E3;CM # COMBINING ENCLOSING KEYCAP
+20E4;CM # COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5;CM # COMBINING REVERSE SOLIDUS OVERLAY
+20E6;CM # COMBINING DOUBLE VERTICAL STROKE OVERLAY
+20E7;CM # COMBINING ANNUITY SYMBOL
+20E8;CM # COMBINING TRIPLE UNDERDOT
+20E9;CM # COMBINING WIDE BRIDGE ABOVE
+20EA;CM # COMBINING LEFTWARDS ARROW OVERLAY
+2100;AL # ACCOUNT OF
+2101;AL # ADDRESSED TO THE SUBJECT
+2102;AL # DOUBLE-STRUCK CAPITAL C
+2103;PO # DEGREE CELSIUS
+2104;AL # CENTRE LINE SYMBOL
+2105;AI # CARE OF
+2106;AL # CADA UNA
+2107;AL # EULER CONSTANT
+2108;AL # SCRUPLE
+2109;PO # DEGREE FAHRENHEIT
+210A;AL # SCRIPT SMALL G
+210B;AL # SCRIPT CAPITAL H
+210C;AL # BLACK-LETTER CAPITAL H
+210D;AL # DOUBLE-STRUCK CAPITAL H
+210E;AL # PLANCK CONSTANT
+210F;AL # PLANCK CONSTANT OVER TWO PI
+2110;AL # SCRIPT CAPITAL I
+2111;AL # BLACK-LETTER CAPITAL I
+2112;AL # SCRIPT CAPITAL L
+2113;AI # SCRIPT SMALL L
+2114;AL # L B BAR SYMBOL
+2115;AL # DOUBLE-STRUCK CAPITAL N
+2116;PR # NUMERO SIGN
+2117;AL # SOUND RECORDING COPYRIGHT
+2118;AL # SCRIPT CAPITAL P
+2119;AL # DOUBLE-STRUCK CAPITAL P
+211A;AL # DOUBLE-STRUCK CAPITAL Q
+211B;AL # SCRIPT CAPITAL R
+211C;AL # BLACK-LETTER CAPITAL R
+211D;AL # DOUBLE-STRUCK CAPITAL R
+211E;AL # PRESCRIPTION TAKE
+211F;AL # RESPONSE
+2120;AL # SERVICE MARK
+2121;AI # TELEPHONE SIGN
+2122;AI # TRADE MARK SIGN
+2123;AL # VERSICLE
+2124;AL # DOUBLE-STRUCK CAPITAL Z
+2125;AL # OUNCE SIGN
+2126;PO # OHM SIGN
+2127;AL # INVERTED OHM SIGN
+2128;AL # BLACK-LETTER CAPITAL Z
+2129;AL # TURNED GREEK SMALL LETTER IOTA
+212A;AL # KELVIN SIGN
+212B;AI # ANGSTROM SIGN
+212C;AL # SCRIPT CAPITAL B
+212D;AL # BLACK-LETTER CAPITAL C
+212E;AL # ESTIMATED SYMBOL
+212F;AL # SCRIPT SMALL E
+2130;AL # SCRIPT CAPITAL E
+2131;AL # SCRIPT CAPITAL F
+2132;AL # TURNED CAPITAL F
+2133;AL # SCRIPT CAPITAL M
+2134;AL # SCRIPT SMALL O
+2135;AL # ALEF SYMBOL
+2136;AL # BET SYMBOL
+2137;AL # GIMEL SYMBOL
+2138;AL # DALET SYMBOL
+2139;AL # INFORMATION SOURCE
+213A;AL # ROTATED CAPITAL Q
+213D;AL # DOUBLE-STRUCK SMALL GAMMA
+213E;AL # DOUBLE-STRUCK CAPITAL GAMMA
+213F;AL # DOUBLE-STRUCK CAPITAL PI
+2140;AI # DOUBLE-STRUCK N-ARY SUMMATION
+2141;AL # TURNED SANS-SERIF CAPITAL G
+2142;AL # TURNED SANS-SERIF CAPITAL L
+2143;AL # REVERSED SANS-SERIF CAPITAL L
+2144;AL # TURNED SANS-SERIF CAPITAL Y
+2145;AL # DOUBLE-STRUCK ITALIC CAPITAL D
+2146;AL # DOUBLE-STRUCK ITALIC SMALL D
+2147;AL # DOUBLE-STRUCK ITALIC SMALL E
+2148;AL # DOUBLE-STRUCK ITALIC SMALL I
+2149;AL # DOUBLE-STRUCK ITALIC SMALL J
+214A;AL # PROPERTY LINE
+214B;AL # TURNED AMPERSAND
+2153;AL # VULGAR FRACTION ONE THIRD
+2154;AI # VULGAR FRACTION TWO THIRDS
+2155;AI # VULGAR FRACTION ONE FIFTH
+2156;AL # VULGAR FRACTION TWO FIFTHS
+2157;AL # VULGAR FRACTION THREE FIFTHS
+2158;AL # VULGAR FRACTION FOUR FIFTHS
+2159;AL # VULGAR FRACTION ONE SIXTH
+215A;AL # VULGAR FRACTION FIVE SIXTHS
+215B;AI # VULGAR FRACTION ONE EIGHTH
+215C;AL # VULGAR FRACTION THREE EIGHTHS
+215D;AL # VULGAR FRACTION FIVE EIGHTHS
+215E;AI # VULGAR FRACTION SEVEN EIGHTHS
+215F;AL # FRACTION NUMERATOR ONE
+2160;AI # ROMAN NUMERAL ONE
+2161;AI # ROMAN NUMERAL TWO
+2162;AI # ROMAN NUMERAL THREE
+2163;AI # ROMAN NUMERAL FOUR
+2164;AI # ROMAN NUMERAL FIVE
+2165;AI # ROMAN NUMERAL SIX
+2166;AI # ROMAN NUMERAL SEVEN
+2167;AI # ROMAN NUMERAL EIGHT
+2168;AI # ROMAN NUMERAL NINE
+2169;AI # ROMAN NUMERAL TEN
+216A;AI # ROMAN NUMERAL ELEVEN
+216B;AI # ROMAN NUMERAL TWELVE
+216C;AL # ROMAN NUMERAL FIFTY
+216D;AL # ROMAN NUMERAL ONE HUNDRED
+216E;AL # ROMAN NUMERAL FIVE HUNDRED
+216F;AL # ROMAN NUMERAL ONE THOUSAND
+2170;AI # SMALL ROMAN NUMERAL ONE
+2171;AI # SMALL ROMAN NUMERAL TWO
+2172;AI # SMALL ROMAN NUMERAL THREE
+2173;AI # SMALL ROMAN NUMERAL FOUR
+2174;AI # SMALL ROMAN NUMERAL FIVE
+2175;AI # SMALL ROMAN NUMERAL SIX
+2176;AI # SMALL ROMAN NUMERAL SEVEN
+2177;AI # SMALL ROMAN NUMERAL EIGHT
+2178;AI # SMALL ROMAN NUMERAL NINE
+2179;AI # SMALL ROMAN NUMERAL TEN
+217A;AL # SMALL ROMAN NUMERAL ELEVEN
+217B;AL # SMALL ROMAN NUMERAL TWELVE
+217C;AL # SMALL ROMAN NUMERAL FIFTY
+217D;AL # SMALL ROMAN NUMERAL ONE HUNDRED
+217E;AL # SMALL ROMAN NUMERAL FIVE HUNDRED
+217F;AL # SMALL ROMAN NUMERAL ONE THOUSAND
+2180;AL # ROMAN NUMERAL ONE THOUSAND C D
+2181;AL # ROMAN NUMERAL FIVE THOUSAND
+2182;AL # ROMAN NUMERAL TEN THOUSAND
+2183;AL # ROMAN NUMERAL REVERSED ONE HUNDRED
+2190;AI # LEFTWARDS ARROW
+2191;AI # UPWARDS ARROW
+2192;AI # RIGHTWARDS ARROW
+2193;AI # DOWNWARDS ARROW
+2194;AI # LEFT RIGHT ARROW
+2195;AI # UP DOWN ARROW
+2196;AI # NORTH WEST ARROW
+2197;AI # NORTH EAST ARROW
+2198;AI # SOUTH EAST ARROW
+2199;AI # SOUTH WEST ARROW
+219A;AL # LEFTWARDS ARROW WITH STROKE
+219B;AL # RIGHTWARDS ARROW WITH STROKE
+219C;AL # LEFTWARDS WAVE ARROW
+219D;AL # RIGHTWARDS WAVE ARROW
+219E;AL # LEFTWARDS TWO HEADED ARROW
+219F;AL # UPWARDS TWO HEADED ARROW
+21A0;AL # RIGHTWARDS TWO HEADED ARROW
+21A1;AL # DOWNWARDS TWO HEADED ARROW
+21A2;AL # LEFTWARDS ARROW WITH TAIL
+21A3;AL # RIGHTWARDS ARROW WITH TAIL
+21A4;AL # LEFTWARDS ARROW FROM BAR
+21A5;AL # UPWARDS ARROW FROM BAR
+21A6;AL # RIGHTWARDS ARROW FROM BAR
+21A7;AL # DOWNWARDS ARROW FROM BAR
+21A8;AL # UP DOWN ARROW WITH BASE
+21A9;AL # LEFTWARDS ARROW WITH HOOK
+21AA;AL # RIGHTWARDS ARROW WITH HOOK
+21AB;AL # LEFTWARDS ARROW WITH LOOP
+21AC;AL # RIGHTWARDS ARROW WITH LOOP
+21AD;AL # LEFT RIGHT WAVE ARROW
+21AE;AL # LEFT RIGHT ARROW WITH STROKE
+21AF;AL # DOWNWARDS ZIGZAG ARROW
+21B0;AL # UPWARDS ARROW WITH TIP LEFTWARDS
+21B1;AL # UPWARDS ARROW WITH TIP RIGHTWARDS
+21B2;AL # DOWNWARDS ARROW WITH TIP LEFTWARDS
+21B3;AL # DOWNWARDS ARROW WITH TIP RIGHTWARDS
+21B4;AL # RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+21B5;AL # DOWNWARDS ARROW WITH CORNER LEFTWARDS
+21B6;AL # ANTICLOCKWISE TOP SEMICIRCLE ARROW
+21B7;AL # CLOCKWISE TOP SEMICIRCLE ARROW
+21B8;AL # NORTH WEST ARROW TO LONG BAR
+21B9;AL # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+21BA;AL # ANTICLOCKWISE OPEN CIRCLE ARROW
+21BB;AL # CLOCKWISE OPEN CIRCLE ARROW
+21BC;AL # LEFTWARDS HARPOON WITH BARB UPWARDS
+21BD;AL # LEFTWARDS HARPOON WITH BARB DOWNWARDS
+21BE;AL # UPWARDS HARPOON WITH BARB RIGHTWARDS
+21BF;AL # UPWARDS HARPOON WITH BARB LEFTWARDS
+21C0;AL # RIGHTWARDS HARPOON WITH BARB UPWARDS
+21C1;AL # RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+21C2;AL # DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+21C3;AL # DOWNWARDS HARPOON WITH BARB LEFTWARDS
+21C4;AL # RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+21C5;AL # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+21C6;AL # LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+21C7;AL # LEFTWARDS PAIRED ARROWS
+21C8;AL # UPWARDS PAIRED ARROWS
+21C9;AL # RIGHTWARDS PAIRED ARROWS
+21CA;AL # DOWNWARDS PAIRED ARROWS
+21CB;AL # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+21CC;AL # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+21CD;AL # LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE;AL # LEFT RIGHT DOUBLE ARROW WITH STROKE
+21CF;AL # RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0;AL # LEFTWARDS DOUBLE ARROW
+21D1;AL # UPWARDS DOUBLE ARROW
+21D2;AI # RIGHTWARDS DOUBLE ARROW
+21D3;AL # DOWNWARDS DOUBLE ARROW
+21D4;AI # LEFT RIGHT DOUBLE ARROW
+21D5;AL # UP DOWN DOUBLE ARROW
+21D6;AL # NORTH WEST DOUBLE ARROW
+21D7;AL # NORTH EAST DOUBLE ARROW
+21D8;AL # SOUTH EAST DOUBLE ARROW
+21D9;AL # SOUTH WEST DOUBLE ARROW
+21DA;AL # LEFTWARDS TRIPLE ARROW
+21DB;AL # RIGHTWARDS TRIPLE ARROW
+21DC;AL # LEFTWARDS SQUIGGLE ARROW
+21DD;AL # RIGHTWARDS SQUIGGLE ARROW
+21DE;AL # UPWARDS ARROW WITH DOUBLE STROKE
+21DF;AL # DOWNWARDS ARROW WITH DOUBLE STROKE
+21E0;AL # LEFTWARDS DASHED ARROW
+21E1;AL # UPWARDS DASHED ARROW
+21E2;AL # RIGHTWARDS DASHED ARROW
+21E3;AL # DOWNWARDS DASHED ARROW
+21E4;AL # LEFTWARDS ARROW TO BAR
+21E5;AL # RIGHTWARDS ARROW TO BAR
+21E6;AL # LEFTWARDS WHITE ARROW
+21E7;AL # UPWARDS WHITE ARROW
+21E8;AL # RIGHTWARDS WHITE ARROW
+21E9;AL # DOWNWARDS WHITE ARROW
+21EA;AL # UPWARDS WHITE ARROW FROM BAR
+21EB;AL # UPWARDS WHITE ARROW ON PEDESTAL
+21EC;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+21ED;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+21EE;AL # UPWARDS WHITE DOUBLE ARROW
+21EF;AL # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+21F0;AL # RIGHTWARDS WHITE ARROW FROM WALL
+21F1;AL # NORTH WEST ARROW TO CORNER
+21F2;AL # SOUTH EAST ARROW TO CORNER
+21F3;AL # UP DOWN WHITE ARROW
+21F4;AL # RIGHT ARROW WITH SMALL CIRCLE
+21F5;AL # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
+21F6;AL # THREE RIGHTWARDS ARROWS
+21F7;AL # LEFTWARDS ARROW WITH VERTICAL STROKE
+21F8;AL # RIGHTWARDS ARROW WITH VERTICAL STROKE
+21F9;AL # LEFT RIGHT ARROW WITH VERTICAL STROKE
+21FA;AL # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+21FB;AL # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+21FC;AL # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
+21FD;AL # LEFTWARDS OPEN-HEADED ARROW
+21FE;AL # RIGHTWARDS OPEN-HEADED ARROW
+21FF;AL # LEFT RIGHT OPEN-HEADED ARROW
+2200;AI # FOR ALL
+2201;AL # COMPLEMENT
+2202;AI # PARTIAL DIFFERENTIAL
+2203;AI # THERE EXISTS
+2204;AL # THERE DOES NOT EXIST
+2205;AL # EMPTY SET
+2206;AL # INCREMENT
+2207;AI # NABLA
+2208;AI # ELEMENT OF
+2209;AL # NOT AN ELEMENT OF
+220A;AL # SMALL ELEMENT OF
+220B;AI # CONTAINS AS MEMBER
+220C;AL # DOES NOT CONTAIN AS MEMBER
+220D;AL # SMALL CONTAINS AS MEMBER
+220E;AL # END OF PROOF
+220F;AI # N-ARY PRODUCT
+2210;AL # N-ARY COPRODUCT
+2211;AI # N-ARY SUMMATION
+2212;PR # MINUS SIGN
+2213;PR # MINUS-OR-PLUS SIGN
+2214;AL # DOT PLUS
+2215;AI # DIVISION SLASH
+2216;AL # SET MINUS
+2217;AL # ASTERISK OPERATOR
+2218;AL # RING OPERATOR
+2219;AL # BULLET OPERATOR
+221A;AI # SQUARE ROOT
+221B;AL # CUBE ROOT
+221C;AL # FOURTH ROOT
+221D;AI # PROPORTIONAL TO
+221E;AI # INFINITY
+221F;AI # RIGHT ANGLE
+2220;AI # ANGLE
+2221;AL # MEASURED ANGLE
+2222;AL # SPHERICAL ANGLE
+2223;AI # DIVIDES
+2224;AL # DOES NOT DIVIDE
+2225;AI # PARALLEL TO
+2226;AL # NOT PARALLEL TO
+2227;AI # LOGICAL AND
+2228;AI # LOGICAL OR
+2229;AI # INTERSECTION
+222A;AI # UNION
+222B;AI # INTEGRAL
+222C;AI # DOUBLE INTEGRAL
+222D;AL # TRIPLE INTEGRAL
+222E;AI # CONTOUR INTEGRAL
+222F;AL # SURFACE INTEGRAL
+2230;AL # VOLUME INTEGRAL
+2231;AL # CLOCKWISE INTEGRAL
+2232;AL # CLOCKWISE CONTOUR INTEGRAL
+2233;AL # ANTICLOCKWISE CONTOUR INTEGRAL
+2234;AI # THEREFORE
+2235;AI # BECAUSE
+2236;AI # RATIO
+2237;AI # PROPORTION
+2238;AL # DOT MINUS
+2239;AL # EXCESS
+223A;AL # GEOMETRIC PROPORTION
+223B;AL # HOMOTHETIC
+223C;AI # TILDE OPERATOR
+223D;AI # REVERSED TILDE
+223E;AL # INVERTED LAZY S
+223F;AL # SINE WAVE
+2240;AL # WREATH PRODUCT
+2241;AL # NOT TILDE
+2242;AL # MINUS TILDE
+2243;AL # ASYMPTOTICALLY EQUAL TO
+2244;AL # NOT ASYMPTOTICALLY EQUAL TO
+2245;AL # APPROXIMATELY EQUAL TO
+2246;AL # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+2247;AL # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2248;AI # ALMOST EQUAL TO
+2249;AL # NOT ALMOST EQUAL TO
+224A;AL # ALMOST EQUAL OR EQUAL TO
+224B;AL # TRIPLE TILDE
+224C;AI # ALL EQUAL TO
+224D;AL # EQUIVALENT TO
+224E;AL # GEOMETRICALLY EQUIVALENT TO
+224F;AL # DIFFERENCE BETWEEN
+2250;AL # APPROACHES THE LIMIT
+2251;AL # GEOMETRICALLY EQUAL TO
+2252;AI # APPROXIMATELY EQUAL TO OR THE IMAGE OF
+2253;AL # IMAGE OF OR APPROXIMATELY EQUAL TO
+2254;AL # COLON EQUALS
+2255;AL # EQUALS COLON
+2256;AL # RING IN EQUAL TO
+2257;AL # RING EQUAL TO
+2258;AL # CORRESPONDS TO
+2259;AL # ESTIMATES
+225A;AL # EQUIANGULAR TO
+225B;AL # STAR EQUALS
+225C;AL # DELTA EQUAL TO
+225D;AL # EQUAL TO BY DEFINITION
+225E;AL # MEASURED BY
+225F;AL # QUESTIONED EQUAL TO
+2260;AI # NOT EQUAL TO
+2261;AI # IDENTICAL TO
+2262;AL # NOT IDENTICAL TO
+2263;AL # STRICTLY EQUIVALENT TO
+2264;AI # LESS-THAN OR EQUAL TO
+2265;AI # GREATER-THAN OR EQUAL TO
+2266;AI # LESS-THAN OVER EQUAL TO
+2267;AI # GREATER-THAN OVER EQUAL TO
+2268;AL # LESS-THAN BUT NOT EQUAL TO
+2269;AL # GREATER-THAN BUT NOT EQUAL TO
+226A;AI # MUCH LESS-THAN
+226B;AI # MUCH GREATER-THAN
+226C;AL # BETWEEN
+226D;AL # NOT EQUIVALENT TO
+226E;AI # NOT LESS-THAN
+226F;AI # NOT GREATER-THAN
+2270;AL # NEITHER LESS-THAN NOR EQUAL TO
+2271;AL # NEITHER GREATER-THAN NOR EQUAL TO
+2272;AL # LESS-THAN OR EQUIVALENT TO
+2273;AL # GREATER-THAN OR EQUIVALENT TO
+2274;AL # NEITHER LESS-THAN NOR EQUIVALENT TO
+2275;AL # NEITHER GREATER-THAN NOR EQUIVALENT TO
+2276;AL # LESS-THAN OR GREATER-THAN
+2277;AL # GREATER-THAN OR LESS-THAN
+2278;AL # NEITHER LESS-THAN NOR GREATER-THAN
+2279;AL # NEITHER GREATER-THAN NOR LESS-THAN
+227A;AL # PRECEDES
+227B;AL # SUCCEEDS
+227C;AL # PRECEDES OR EQUAL TO
+227D;AL # SUCCEEDS OR EQUAL TO
+227E;AL # PRECEDES OR EQUIVALENT TO
+227F;AL # SUCCEEDS OR EQUIVALENT TO
+2280;AL # DOES NOT PRECEDE
+2281;AL # DOES NOT SUCCEED
+2282;AI # SUBSET OF
+2283;AI # SUPERSET OF
+2284;AL # NOT A SUBSET OF
+2285;AL # NOT A SUPERSET OF
+2286;AI # SUBSET OF OR EQUAL TO
+2287;AI # SUPERSET OF OR EQUAL TO
+2288;AL # NEITHER A SUBSET OF NOR EQUAL TO
+2289;AL # NEITHER A SUPERSET OF NOR EQUAL TO
+228A;AL # SUBSET OF WITH NOT EQUAL TO
+228B;AL # SUPERSET OF WITH NOT EQUAL TO
+228C;AL # MULTISET
+228D;AL # MULTISET MULTIPLICATION
+228E;AL # MULTISET UNION
+228F;AL # SQUARE IMAGE OF
+2290;AL # SQUARE ORIGINAL OF
+2291;AL # SQUARE IMAGE OF OR EQUAL TO
+2292;AL # SQUARE ORIGINAL OF OR EQUAL TO
+2293;AL # SQUARE CAP
+2294;AL # SQUARE CUP
+2295;AI # CIRCLED PLUS
+2296;AL # CIRCLED MINUS
+2297;AL # CIRCLED TIMES
+2298;AL # CIRCLED DIVISION SLASH
+2299;AI # CIRCLED DOT OPERATOR
+229A;AL # CIRCLED RING OPERATOR
+229B;AL # CIRCLED ASTERISK OPERATOR
+229C;AL # CIRCLED EQUALS
+229D;AL # CIRCLED DASH
+229E;AL # SQUARED PLUS
+229F;AL # SQUARED MINUS
+22A0;AL # SQUARED TIMES
+22A1;AL # SQUARED DOT OPERATOR
+22A2;AL # RIGHT TACK
+22A3;AL # LEFT TACK
+22A4;AL # DOWN TACK
+22A5;AI # UP TACK
+22A6;AL # ASSERTION
+22A7;AL # MODELS
+22A8;AL # TRUE
+22A9;AL # FORCES
+22AA;AL # TRIPLE VERTICAL BAR RIGHT TURNSTILE
+22AB;AL # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22AC;AL # DOES NOT PROVE
+22AD;AL # NOT TRUE
+22AE;AL # DOES NOT FORCE
+22AF;AL # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22B0;AL # PRECEDES UNDER RELATION
+22B1;AL # SUCCEEDS UNDER RELATION
+22B2;AL # NORMAL SUBGROUP OF
+22B3;AL # CONTAINS AS NORMAL SUBGROUP
+22B4;AL # NORMAL SUBGROUP OF OR EQUAL TO
+22B5;AL # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22B6;AL # ORIGINAL OF
+22B7;AL # IMAGE OF
+22B8;AL # MULTIMAP
+22B9;AL # HERMITIAN CONJUGATE MATRIX
+22BA;AL # INTERCALATE
+22BB;AL # XOR
+22BC;AL # NAND
+22BD;AL # NOR
+22BE;AL # RIGHT ANGLE WITH ARC
+22BF;AI # RIGHT TRIANGLE
+22C0;AL # N-ARY LOGICAL AND
+22C1;AL # N-ARY LOGICAL OR
+22C2;AL # N-ARY INTERSECTION
+22C3;AL # N-ARY UNION
+22C4;AL # DIAMOND OPERATOR
+22C5;AL # DOT OPERATOR
+22C6;AL # STAR OPERATOR
+22C7;AL # DIVISION TIMES
+22C8;AL # BOWTIE
+22C9;AL # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CA;AL # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CB;AL # LEFT SEMIDIRECT PRODUCT
+22CC;AL # RIGHT SEMIDIRECT PRODUCT
+22CD;AL # REVERSED TILDE EQUALS
+22CE;AL # CURLY LOGICAL OR
+22CF;AL # CURLY LOGICAL AND
+22D0;AL # DOUBLE SUBSET
+22D1;AL # DOUBLE SUPERSET
+22D2;AL # DOUBLE INTERSECTION
+22D3;AL # DOUBLE UNION
+22D4;AL # PITCHFORK
+22D5;AL # EQUAL AND PARALLEL TO
+22D6;AL # LESS-THAN WITH DOT
+22D7;AL # GREATER-THAN WITH DOT
+22D8;AL # VERY MUCH LESS-THAN
+22D9;AL # VERY MUCH GREATER-THAN
+22DA;AL # LESS-THAN EQUAL TO OR GREATER-THAN
+22DB;AL # GREATER-THAN EQUAL TO OR LESS-THAN
+22DC;AL # EQUAL TO OR LESS-THAN
+22DD;AL # EQUAL TO OR GREATER-THAN
+22DE;AL # EQUAL TO OR PRECEDES
+22DF;AL # EQUAL TO OR SUCCEEDS
+22E0;AL # DOES NOT PRECEDE OR EQUAL
+22E1;AL # DOES NOT SUCCEED OR EQUAL
+22E2;AL # NOT SQUARE IMAGE OF OR EQUAL TO
+22E3;AL # NOT SQUARE ORIGINAL OF OR EQUAL TO
+22E4;AL # SQUARE IMAGE OF OR NOT EQUAL TO
+22E5;AL # SQUARE ORIGINAL OF OR NOT EQUAL TO
+22E6;AL # LESS-THAN BUT NOT EQUIVALENT TO
+22E7;AL # GREATER-THAN BUT NOT EQUIVALENT TO
+22E8;AL # PRECEDES BUT NOT EQUIVALENT TO
+22E9;AL # SUCCEEDS BUT NOT EQUIVALENT TO
+22EA;AL # NOT NORMAL SUBGROUP OF
+22EB;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC;AL # NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+22EE;AL # VERTICAL ELLIPSIS
+22EF;AL # MIDLINE HORIZONTAL ELLIPSIS
+22F0;AL # UP RIGHT DIAGONAL ELLIPSIS
+22F1;AL # DOWN RIGHT DIAGONAL ELLIPSIS
+22F2;AL # ELEMENT OF WITH LONG HORIZONTAL STROKE
+22F3;AL # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F4;AL # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F5;AL # ELEMENT OF WITH DOT ABOVE
+22F6;AL # ELEMENT OF WITH OVERBAR
+22F7;AL # SMALL ELEMENT OF WITH OVERBAR
+22F8;AL # ELEMENT OF WITH UNDERBAR
+22F9;AL # ELEMENT OF WITH TWO HORIZONTAL STROKES
+22FA;AL # CONTAINS WITH LONG HORIZONTAL STROKE
+22FB;AL # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FC;AL # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FD;AL # CONTAINS WITH OVERBAR
+22FE;AL # SMALL CONTAINS WITH OVERBAR
+22FF;AL # Z NOTATION BAG MEMBERSHIP
+2300;AL # DIAMETER SIGN
+2301;AL # ELECTRIC ARROW
+2302;AL # HOUSE
+2303;AL # UP ARROWHEAD
+2304;AL # DOWN ARROWHEAD
+2305;AL # PROJECTIVE
+2306;AL # PERSPECTIVE
+2307;AL # WAVY LINE
+2308;AL # LEFT CEILING
+2309;AL # RIGHT CEILING
+230A;AL # LEFT FLOOR
+230B;AL # RIGHT FLOOR
+230C;AL # BOTTOM RIGHT CROP
+230D;AL # BOTTOM LEFT CROP
+230E;AL # TOP RIGHT CROP
+230F;AL # TOP LEFT CROP
+2310;AL # REVERSED NOT SIGN
+2311;AL # SQUARE LOZENGE
+2312;AI # ARC
+2313;AL # SEGMENT
+2314;AL # SECTOR
+2315;AL # TELEPHONE RECORDER
+2316;AL # POSITION INDICATOR
+2317;AL # VIEWDATA SQUARE
+2318;AL # PLACE OF INTEREST SIGN
+2319;AL # TURNED NOT SIGN
+231A;AL # WATCH
+231B;AL # HOURGLASS
+231C;AL # TOP LEFT CORNER
+231D;AL # TOP RIGHT CORNER
+231E;AL # BOTTOM LEFT CORNER
+231F;AL # BOTTOM RIGHT CORNER
+2320;AL # TOP HALF INTEGRAL
+2321;AL # BOTTOM HALF INTEGRAL
+2322;AL # FROWN
+2323;AL # SMILE
+2324;AL # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
+2325;AL # OPTION KEY
+2326;AL # ERASE TO THE RIGHT
+2327;AL # X IN A RECTANGLE BOX
+2328;AL # KEYBOARD
+2329;OP # LEFT-POINTING ANGLE BRACKET
+232A;CL # RIGHT-POINTING ANGLE BRACKET
+232B;AL # ERASE TO THE LEFT
+232C;AL # BENZENE RING
+232D;AL # CYLINDRICITY
+232E;AL # ALL AROUND-PROFILE
+232F;AL # SYMMETRY
+2330;AL # TOTAL RUNOUT
+2331;AL # DIMENSION ORIGIN
+2332;AL # CONICAL TAPER
+2333;AL # SLOPE
+2334;AL # COUNTERBORE
+2335;AL # COUNTERSINK
+2336;AL # APL FUNCTIONAL SYMBOL I-BEAM
+2337;AL # APL FUNCTIONAL SYMBOL SQUISH QUAD
+2338;AL # APL FUNCTIONAL SYMBOL QUAD EQUAL
+2339;AL # APL FUNCTIONAL SYMBOL QUAD DIVIDE
+233A;AL # APL FUNCTIONAL SYMBOL QUAD DIAMOND
+233B;AL # APL FUNCTIONAL SYMBOL QUAD JOT
+233C;AL # APL FUNCTIONAL SYMBOL QUAD CIRCLE
+233D;AL # APL FUNCTIONAL SYMBOL CIRCLE STILE
+233E;AL # APL FUNCTIONAL SYMBOL CIRCLE JOT
+233F;AL # APL FUNCTIONAL SYMBOL SLASH BAR
+2340;AL # APL FUNCTIONAL SYMBOL BACKSLASH BAR
+2341;AL # APL FUNCTIONAL SYMBOL QUAD SLASH
+2342;AL # APL FUNCTIONAL SYMBOL QUAD BACKSLASH
+2343;AL # APL FUNCTIONAL SYMBOL QUAD LESS-THAN
+2344;AL # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
+2345;AL # APL FUNCTIONAL SYMBOL LEFTWARDS VANE
+2346;AL # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
+2347;AL # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
+2348;AL # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
+2349;AL # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
+234A;AL # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
+234B;AL # APL FUNCTIONAL SYMBOL DELTA STILE
+234C;AL # APL FUNCTIONAL SYMBOL QUAD DOWN CARET
+234D;AL # APL FUNCTIONAL SYMBOL QUAD DELTA
+234E;AL # APL FUNCTIONAL SYMBOL DOWN TACK JOT
+234F;AL # APL FUNCTIONAL SYMBOL UPWARDS VANE
+2350;AL # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
+2351;AL # APL FUNCTIONAL SYMBOL UP TACK OVERBAR
+2352;AL # APL FUNCTIONAL SYMBOL DEL STILE
+2353;AL # APL FUNCTIONAL SYMBOL QUAD UP CARET
+2354;AL # APL FUNCTIONAL SYMBOL QUAD DEL
+2355;AL # APL FUNCTIONAL SYMBOL UP TACK JOT
+2356;AL # APL FUNCTIONAL SYMBOL DOWNWARDS VANE
+2357;AL # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
+2358;AL # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
+2359;AL # APL FUNCTIONAL SYMBOL DELTA UNDERBAR
+235A;AL # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
+235B;AL # APL FUNCTIONAL SYMBOL JOT UNDERBAR
+235C;AL # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
+235D;AL # APL FUNCTIONAL SYMBOL UP SHOE JOT
+235E;AL # APL FUNCTIONAL SYMBOL QUOTE QUAD
+235F;AL # APL FUNCTIONAL SYMBOL CIRCLE STAR
+2360;AL # APL FUNCTIONAL SYMBOL QUAD COLON
+2361;AL # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
+2362;AL # APL FUNCTIONAL SYMBOL DEL DIAERESIS
+2363;AL # APL FUNCTIONAL SYMBOL STAR DIAERESIS
+2364;AL # APL FUNCTIONAL SYMBOL JOT DIAERESIS
+2365;AL # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
+2366;AL # APL FUNCTIONAL SYMBOL DOWN SHOE STILE
+2367;AL # APL FUNCTIONAL SYMBOL LEFT SHOE STILE
+2368;AL # APL FUNCTIONAL SYMBOL TILDE DIAERESIS
+2369;AL # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
+236A;AL # APL FUNCTIONAL SYMBOL COMMA BAR
+236B;AL # APL FUNCTIONAL SYMBOL DEL TILDE
+236C;AL # APL FUNCTIONAL SYMBOL ZILDE
+236D;AL # APL FUNCTIONAL SYMBOL STILE TILDE
+236E;AL # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
+236F;AL # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
+2370;AL # APL FUNCTIONAL SYMBOL QUAD QUESTION
+2371;AL # APL FUNCTIONAL SYMBOL DOWN CARET TILDE
+2372;AL # APL FUNCTIONAL SYMBOL UP CARET TILDE
+2373;AL # APL FUNCTIONAL SYMBOL IOTA
+2374;AL # APL FUNCTIONAL SYMBOL RHO
+2375;AL # APL FUNCTIONAL SYMBOL OMEGA
+2376;AL # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
+2377;AL # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
+2378;AL # APL FUNCTIONAL SYMBOL IOTA UNDERBAR
+2379;AL # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
+237A;AL # APL FUNCTIONAL SYMBOL ALPHA
+237B;AL # NOT CHECK MARK
+237C;AL # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+237D;AL # SHOULDERED OPEN BOX
+237E;AL # BELL SYMBOL
+237F;AL # VERTICAL LINE WITH MIDDLE DOT
+2380;AL # INSERTION SYMBOL
+2381;AL # CONTINUOUS UNDERLINE SYMBOL
+2382;AL # DISCONTINUOUS UNDERLINE SYMBOL
+2383;AL # EMPHASIS SYMBOL
+2384;AL # COMPOSITION SYMBOL
+2385;AL # WHITE SQUARE WITH CENTRE VERTICAL LINE
+2386;AL # ENTER SYMBOL
+2387;AL # ALTERNATIVE KEY SYMBOL
+2388;AL # HELM SYMBOL
+2389;AL # CIRCLED HORIZONTAL BAR WITH NOTCH
+238A;AL # CIRCLED TRIANGLE DOWN
+238B;AL # BROKEN CIRCLE WITH NORTHWEST ARROW
+238C;AL # UNDO SYMBOL
+238D;AL # MONOSTABLE SYMBOL
+238E;AL # HYSTERESIS SYMBOL
+238F;AL # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
+2390;AL # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
+2391;AL # PASSIVE-PULL-DOWN-OUTPUT SYMBOL
+2392;AL # PASSIVE-PULL-UP-OUTPUT SYMBOL
+2393;AL # DIRECT CURRENT SYMBOL FORM TWO
+2394;AL # SOFTWARE-FUNCTION SYMBOL
+2395;AL # APL FUNCTIONAL SYMBOL QUAD
+2396;AL # DECIMAL SEPARATOR KEY SYMBOL
+2397;AL # PREVIOUS PAGE
+2398;AL # NEXT PAGE
+2399;AL # PRINT SCREEN SYMBOL
+239A;AL # CLEAR SCREEN SYMBOL
+239B;AL # LEFT PARENTHESIS UPPER HOOK
+239C;AL # LEFT PARENTHESIS EXTENSION
+239D;AL # LEFT PARENTHESIS LOWER HOOK
+239E;AL # RIGHT PARENTHESIS UPPER HOOK
+239F;AL # RIGHT PARENTHESIS EXTENSION
+23A0;AL # RIGHT PARENTHESIS LOWER HOOK
+23A1;AL # LEFT SQUARE BRACKET UPPER CORNER
+23A2;AL # LEFT SQUARE BRACKET EXTENSION
+23A3;AL # LEFT SQUARE BRACKET LOWER CORNER
+23A4;AL # RIGHT SQUARE BRACKET UPPER CORNER
+23A5;AL # RIGHT SQUARE BRACKET EXTENSION
+23A6;AL # RIGHT SQUARE BRACKET LOWER CORNER
+23A7;AL # LEFT CURLY BRACKET UPPER HOOK
+23A8;AL # LEFT CURLY BRACKET MIDDLE PIECE
+23A9;AL # LEFT CURLY BRACKET LOWER HOOK
+23AA;AL # CURLY BRACKET EXTENSION
+23AB;AL # RIGHT CURLY BRACKET UPPER HOOK
+23AC;AL # RIGHT CURLY BRACKET MIDDLE PIECE
+23AD;AL # RIGHT CURLY BRACKET LOWER HOOK
+23AE;AL # INTEGRAL EXTENSION
+23AF;AL # HORIZONTAL LINE EXTENSION
+23B0;AL # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
+23B1;AL # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
+23B2;AL # SUMMATION TOP
+23B3;AL # SUMMATION BOTTOM
+23B4;OP # TOP SQUARE BRACKET
+23B5;CL # BOTTOM SQUARE BRACKET
+23B6;QU # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
+23B7;AL # RADICAL SYMBOL BOTTOM
+23B8;AL # LEFT VERTICAL BOX LINE
+23B9;AL # RIGHT VERTICAL BOX LINE
+23BA;AL # HORIZONTAL SCAN LINE-1
+23BB;AL # HORIZONTAL SCAN LINE-3
+23BC;AL # HORIZONTAL SCAN LINE-7
+23BD;AL # HORIZONTAL SCAN LINE-9
+23BE;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT
+23BF;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT
+23C0;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE
+23C1;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE
+23C2;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE
+23C3;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE
+23C4;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE
+23C5;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE
+23C6;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE
+23C7;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE
+23C8;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE
+23C9;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL
+23CA;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL
+23CB;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT
+23CC;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT
+23CD;AL # SQUARE FOOT
+23CE;AL # RETURN SYMBOL
+2400;AL # SYMBOL FOR NULL
+2401;AL # SYMBOL FOR START OF HEADING
+2402;AL # SYMBOL FOR START OF TEXT
+2403;AL # SYMBOL FOR END OF TEXT
+2404;AL # SYMBOL FOR END OF TRANSMISSION
+2405;AL # SYMBOL FOR ENQUIRY
+2406;AL # SYMBOL FOR ACKNOWLEDGE
+2407;AL # SYMBOL FOR BELL
+2408;AL # SYMBOL FOR BACKSPACE
+2409;AL # SYMBOL FOR HORIZONTAL TABULATION
+240A;AL # SYMBOL FOR LINE FEED
+240B;AL # SYMBOL FOR VERTICAL TABULATION
+240C;AL # SYMBOL FOR FORM FEED
+240D;AL # SYMBOL FOR CARRIAGE RETURN
+240E;AL # SYMBOL FOR SHIFT OUT
+240F;AL # SYMBOL FOR SHIFT IN
+2410;AL # SYMBOL FOR DATA LINK ESCAPE
+2411;AL # SYMBOL FOR DEVICE CONTROL ONE
+2412;AL # SYMBOL FOR DEVICE CONTROL TWO
+2413;AL # SYMBOL FOR DEVICE CONTROL THREE
+2414;AL # SYMBOL FOR DEVICE CONTROL FOUR
+2415;AL # SYMBOL FOR NEGATIVE ACKNOWLEDGE
+2416;AL # SYMBOL FOR SYNCHRONOUS IDLE
+2417;AL # SYMBOL FOR END OF TRANSMISSION BLOCK
+2418;AL # SYMBOL FOR CANCEL
+2419;AL # SYMBOL FOR END OF MEDIUM
+241A;AL # SYMBOL FOR SUBSTITUTE
+241B;AL # SYMBOL FOR ESCAPE
+241C;AL # SYMBOL FOR FILE SEPARATOR
+241D;AL # SYMBOL FOR GROUP SEPARATOR
+241E;AL # SYMBOL FOR RECORD SEPARATOR
+241F;AL # SYMBOL FOR UNIT SEPARATOR
+2420;AL # SYMBOL FOR SPACE
+2421;AL # SYMBOL FOR DELETE
+2422;AL # BLANK SYMBOL
+2423;AL # OPEN BOX
+2424;AL # SYMBOL FOR NEWLINE
+2425;AL # SYMBOL FOR DELETE FORM TWO
+2426;AL # SYMBOL FOR SUBSTITUTE FORM TWO
+2440;AL # OCR HOOK
+2441;AL # OCR CHAIR
+2442;AL # OCR FORK
+2443;AL # OCR INVERTED FORK
+2444;AL # OCR BELT BUCKLE
+2445;AL # OCR BOW TIE
+2446;AL # OCR BRANCH BANK IDENTIFICATION
+2447;AL # OCR AMOUNT OF CHECK
+2448;AL # OCR DASH
+2449;AL # OCR CUSTOMER ACCOUNT NUMBER
+244A;AL # OCR DOUBLE BACKSLASH
+2460;AI # CIRCLED DIGIT ONE
+2461;AI # CIRCLED DIGIT TWO
+2462;AI # CIRCLED DIGIT THREE
+2463;AI # CIRCLED DIGIT FOUR
+2464;AI # CIRCLED DIGIT FIVE
+2465;AI # CIRCLED DIGIT SIX
+2466;AI # CIRCLED DIGIT SEVEN
+2467;AI # CIRCLED DIGIT EIGHT
+2468;AI # CIRCLED DIGIT NINE
+2469;AI # CIRCLED NUMBER TEN
+246A;AI # CIRCLED NUMBER ELEVEN
+246B;AI # CIRCLED NUMBER TWELVE
+246C;AI # CIRCLED NUMBER THIRTEEN
+246D;AI # CIRCLED NUMBER FOURTEEN
+246E;AI # CIRCLED NUMBER FIFTEEN
+246F;AI # CIRCLED NUMBER SIXTEEN
+2470;AI # CIRCLED NUMBER SEVENTEEN
+2471;AI # CIRCLED NUMBER EIGHTEEN
+2472;AI # CIRCLED NUMBER NINETEEN
+2473;AI # CIRCLED NUMBER TWENTY
+2474;AI # PARENTHESIZED DIGIT ONE
+2475;AI # PARENTHESIZED DIGIT TWO
+2476;AI # PARENTHESIZED DIGIT THREE
+2477;AI # PARENTHESIZED DIGIT FOUR
+2478;AI # PARENTHESIZED DIGIT FIVE
+2479;AI # PARENTHESIZED DIGIT SIX
+247A;AI # PARENTHESIZED DIGIT SEVEN
+247B;AI # PARENTHESIZED DIGIT EIGHT
+247C;AI # PARENTHESIZED DIGIT NINE
+247D;AI # PARENTHESIZED NUMBER TEN
+247E;AI # PARENTHESIZED NUMBER ELEVEN
+247F;AI # PARENTHESIZED NUMBER TWELVE
+2480;AI # PARENTHESIZED NUMBER THIRTEEN
+2481;AI # PARENTHESIZED NUMBER FOURTEEN
+2482;AI # PARENTHESIZED NUMBER FIFTEEN
+2483;AI # PARENTHESIZED NUMBER SIXTEEN
+2484;AI # PARENTHESIZED NUMBER SEVENTEEN
+2485;AI # PARENTHESIZED NUMBER EIGHTEEN
+2486;AI # PARENTHESIZED NUMBER NINETEEN
+2487;AI # PARENTHESIZED NUMBER TWENTY
+2488;AI # DIGIT ONE FULL STOP
+2489;AI # DIGIT TWO FULL STOP
+248A;AI # DIGIT THREE FULL STOP
+248B;AI # DIGIT FOUR FULL STOP
+248C;AI # DIGIT FIVE FULL STOP
+248D;AI # DIGIT SIX FULL STOP
+248E;AI # DIGIT SEVEN FULL STOP
+248F;AI # DIGIT EIGHT FULL STOP
+2490;AI # DIGIT NINE FULL STOP
+2491;AI # NUMBER TEN FULL STOP
+2492;AI # NUMBER ELEVEN FULL STOP
+2493;AI # NUMBER TWELVE FULL STOP
+2494;AI # NUMBER THIRTEEN FULL STOP
+2495;AI # NUMBER FOURTEEN FULL STOP
+2496;AI # NUMBER FIFTEEN FULL STOP
+2497;AI # NUMBER SIXTEEN FULL STOP
+2498;AI # NUMBER SEVENTEEN FULL STOP
+2499;AI # NUMBER EIGHTEEN FULL STOP
+249A;AI # NUMBER NINETEEN FULL STOP
+249B;AI # NUMBER TWENTY FULL STOP
+249C;AI # PARENTHESIZED LATIN SMALL LETTER A
+249D;AI # PARENTHESIZED LATIN SMALL LETTER B
+249E;AI # PARENTHESIZED LATIN SMALL LETTER C
+249F;AI # PARENTHESIZED LATIN SMALL LETTER D
+24A0;AI # PARENTHESIZED LATIN SMALL LETTER E
+24A1;AI # PARENTHESIZED LATIN SMALL LETTER F
+24A2;AI # PARENTHESIZED LATIN SMALL LETTER G
+24A3;AI # PARENTHESIZED LATIN SMALL LETTER H
+24A4;AI # PARENTHESIZED LATIN SMALL LETTER I
+24A5;AI # PARENTHESIZED LATIN SMALL LETTER J
+24A6;AI # PARENTHESIZED LATIN SMALL LETTER K
+24A7;AI # PARENTHESIZED LATIN SMALL LETTER L
+24A8;AI # PARENTHESIZED LATIN SMALL LETTER M
+24A9;AI # PARENTHESIZED LATIN SMALL LETTER N
+24AA;AI # PARENTHESIZED LATIN SMALL LETTER O
+24AB;AI # PARENTHESIZED LATIN SMALL LETTER P
+24AC;AI # PARENTHESIZED LATIN SMALL LETTER Q
+24AD;AI # PARENTHESIZED LATIN SMALL LETTER R
+24AE;AI # PARENTHESIZED LATIN SMALL LETTER S
+24AF;AI # PARENTHESIZED LATIN SMALL LETTER T
+24B0;AI # PARENTHESIZED LATIN SMALL LETTER U
+24B1;AI # PARENTHESIZED LATIN SMALL LETTER V
+24B2;AI # PARENTHESIZED LATIN SMALL LETTER W
+24B3;AI # PARENTHESIZED LATIN SMALL LETTER X
+24B4;AI # PARENTHESIZED LATIN SMALL LETTER Y
+24B5;AI # PARENTHESIZED LATIN SMALL LETTER Z
+24B6;AI # CIRCLED LATIN CAPITAL LETTER A
+24B7;AI # CIRCLED LATIN CAPITAL LETTER B
+24B8;AI # CIRCLED LATIN CAPITAL LETTER C
+24B9;AI # CIRCLED LATIN CAPITAL LETTER D
+24BA;AI # CIRCLED LATIN CAPITAL LETTER E
+24BB;AI # CIRCLED LATIN CAPITAL LETTER F
+24BC;AI # CIRCLED LATIN CAPITAL LETTER G
+24BD;AI # CIRCLED LATIN CAPITAL LETTER H
+24BE;AI # CIRCLED LATIN CAPITAL LETTER I
+24BF;AI # CIRCLED LATIN CAPITAL LETTER J
+24C0;AL # CIRCLED LATIN CAPITAL LETTER K
+24C1;AL # CIRCLED LATIN CAPITAL LETTER L
+24C2;AL # CIRCLED LATIN CAPITAL LETTER M
+24C3;AL # CIRCLED LATIN CAPITAL LETTER N
+24C4;AL # CIRCLED LATIN CAPITAL LETTER O
+24C5;AL # CIRCLED LATIN CAPITAL LETTER P
+24C6;AL # CIRCLED LATIN CAPITAL LETTER Q
+24C7;AL # CIRCLED LATIN CAPITAL LETTER R
+24C8;AL # CIRCLED LATIN CAPITAL LETTER S
+24C9;AL # CIRCLED LATIN CAPITAL LETTER T
+24CA;AL # CIRCLED LATIN CAPITAL LETTER U
+24CB;AL # CIRCLED LATIN CAPITAL LETTER V
+24CC;AL # CIRCLED LATIN CAPITAL LETTER W
+24CD;AL # CIRCLED LATIN CAPITAL LETTER X
+24CE;AL # CIRCLED LATIN CAPITAL LETTER Y
+24CF;AL # CIRCLED LATIN CAPITAL LETTER Z
+24D0;AI # CIRCLED LATIN SMALL LETTER A
+24D1;AI # CIRCLED LATIN SMALL LETTER B
+24D2;AI # CIRCLED LATIN SMALL LETTER C
+24D3;AI # CIRCLED LATIN SMALL LETTER D
+24D4;AI # CIRCLED LATIN SMALL LETTER E
+24D5;AI # CIRCLED LATIN SMALL LETTER F
+24D6;AI # CIRCLED LATIN SMALL LETTER G
+24D7;AI # CIRCLED LATIN SMALL LETTER H
+24D8;AI # CIRCLED LATIN SMALL LETTER I
+24D9;AI # CIRCLED LATIN SMALL LETTER J
+24DA;AI # CIRCLED LATIN SMALL LETTER K
+24DB;AI # CIRCLED LATIN SMALL LETTER L
+24DC;AI # CIRCLED LATIN SMALL LETTER M
+24DD;AI # CIRCLED LATIN SMALL LETTER N
+24DE;AI # CIRCLED LATIN SMALL LETTER O
+24DF;AI # CIRCLED LATIN SMALL LETTER P
+24E0;AI # CIRCLED LATIN SMALL LETTER Q
+24E1;AI # CIRCLED LATIN SMALL LETTER R
+24E2;AI # CIRCLED LATIN SMALL LETTER S
+24E3;AI # CIRCLED LATIN SMALL LETTER T
+24E4;AI # CIRCLED LATIN SMALL LETTER U
+24E5;AI # CIRCLED LATIN SMALL LETTER V
+24E6;AI # CIRCLED LATIN SMALL LETTER W
+24E7;AI # CIRCLED LATIN SMALL LETTER X
+24E8;AI # CIRCLED LATIN SMALL LETTER Y
+24E9;AI # CIRCLED LATIN SMALL LETTER Z
+24EA;AL # CIRCLED DIGIT ZERO
+24EB;AI # NEGATIVE CIRCLED NUMBER ELEVEN
+24EC;AI # NEGATIVE CIRCLED NUMBER TWELVE
+24ED;AI # NEGATIVE CIRCLED NUMBER THIRTEEN
+24EE;AI # NEGATIVE CIRCLED NUMBER FOURTEEN
+24EF;AI # NEGATIVE CIRCLED NUMBER FIFTEEN
+24F0;AI # NEGATIVE CIRCLED NUMBER SIXTEEN
+24F1;AI # NEGATIVE CIRCLED NUMBER SEVENTEEN
+24F2;AI # NEGATIVE CIRCLED NUMBER EIGHTEEN
+24F3;AI # NEGATIVE CIRCLED NUMBER NINETEEN
+24F4;AI # NEGATIVE CIRCLED NUMBER TWENTY
+24F5;AI # DOUBLE CIRCLED DIGIT ONE
+24F6;AI # DOUBLE CIRCLED DIGIT TWO
+24F7;AI # DOUBLE CIRCLED DIGIT THREE
+24F8;AI # DOUBLE CIRCLED DIGIT FOUR
+24F9;AI # DOUBLE CIRCLED DIGIT FIVE
+24FA;AI # DOUBLE CIRCLED DIGIT SIX
+24FB;AI # DOUBLE CIRCLED DIGIT SEVEN
+24FC;AI # DOUBLE CIRCLED DIGIT EIGHT
+24FD;AI # DOUBLE CIRCLED DIGIT NINE
+24FE;AI # DOUBLE CIRCLED NUMBER TEN
+2500;AI # BOX DRAWINGS LIGHT HORIZONTAL
+2501;AI # BOX DRAWINGS HEAVY HORIZONTAL
+2502;AI # BOX DRAWINGS LIGHT VERTICAL
+2503;AI # BOX DRAWINGS HEAVY VERTICAL
+2504;AI # BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+2505;AI # BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+2506;AI # BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+2507;AI # BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+2508;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+2509;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+250A;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+250B;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+250C;AI # BOX DRAWINGS LIGHT DOWN AND RIGHT
+250D;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+250E;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+250F;AI # BOX DRAWINGS HEAVY DOWN AND RIGHT
+2510;AI # BOX DRAWINGS LIGHT DOWN AND LEFT
+2511;AI # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+2512;AI # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+2513;AI # BOX DRAWINGS HEAVY DOWN AND LEFT
+2514;AI # BOX DRAWINGS LIGHT UP AND RIGHT
+2515;AI # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+2516;AI # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+2517;AI # BOX DRAWINGS HEAVY UP AND RIGHT
+2518;AI # BOX DRAWINGS LIGHT UP AND LEFT
+2519;AI # BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+251A;AI # BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+251B;AI # BOX DRAWINGS HEAVY UP AND LEFT
+251C;AI # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+251D;AI # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+251E;AI # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+251F;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+2520;AI # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+2521;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+2522;AI # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+2523;AI # BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+2524;AI # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2525;AI # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+2526;AI # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+2527;AI # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+2528;AI # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+2529;AI # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+252A;AI # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+252B;AI # BOX DRAWINGS HEAVY VERTICAL AND LEFT
+252C;AI # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+252D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+252E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+252F;AI # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+2530;AI # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+2531;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+2532;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+2533;AI # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+2534;AI # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+2535;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+2536;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+2537;AI # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+2538;AI # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+2539;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+253A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+253B;AI # BOX DRAWINGS HEAVY UP AND HORIZONTAL
+253C;AI # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+253D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+253E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+253F;AI # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+2540;AI # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+2541;AI # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+2542;AI # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+2543;AI # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+2544;AI # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+2545;AI # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+2546;AI # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+2547;AI # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+2548;AI # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+2549;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+254A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+254B;AI # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+254C;AL # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+254D;AL # BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+254E;AL # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+254F;AL # BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+2550;AI # BOX DRAWINGS DOUBLE HORIZONTAL
+2551;AI # BOX DRAWINGS DOUBLE VERTICAL
+2552;AI # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553;AI # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554;AI # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555;AI # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556;AI # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557;AI # BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558;AI # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559;AI # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255A;AI # BOX DRAWINGS DOUBLE UP AND RIGHT
+255B;AI # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255C;AI # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255D;AI # BOX DRAWINGS DOUBLE UP AND LEFT
+255E;AI # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F;AI # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560;AI # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561;AI # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562;AI # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563;AI # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564;AI # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565;AI # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566;AI # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567;AI # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568;AI # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569;AI # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256A;AI # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256B;AI # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256C;AI # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+256D;AI # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+256E;AI # BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+256F;AI # BOX DRAWINGS LIGHT ARC UP AND LEFT
+2570;AI # BOX DRAWINGS LIGHT ARC UP AND RIGHT
+2571;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+2572;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+2573;AI # BOX DRAWINGS LIGHT DIAGONAL CROSS
+2574;AI # BOX DRAWINGS LIGHT LEFT
+2575;AL # BOX DRAWINGS LIGHT UP
+2576;AL # BOX DRAWINGS LIGHT RIGHT
+2577;AL # BOX DRAWINGS LIGHT DOWN
+2578;AL # BOX DRAWINGS HEAVY LEFT
+2579;AL # BOX DRAWINGS HEAVY UP
+257A;AL # BOX DRAWINGS HEAVY RIGHT
+257B;AL # BOX DRAWINGS HEAVY DOWN
+257C;AL # BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+257D;AL # BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+257E;AL # BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+257F;AL # BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+2580;AI # UPPER HALF BLOCK
+2581;AI # LOWER ONE EIGHTH BLOCK
+2582;AI # LOWER ONE QUARTER BLOCK
+2583;AI # LOWER THREE EIGHTHS BLOCK
+2584;AI # LOWER HALF BLOCK
+2585;AI # LOWER FIVE EIGHTHS BLOCK
+2586;AI # LOWER THREE QUARTERS BLOCK
+2587;AI # LOWER SEVEN EIGHTHS BLOCK
+2588;AI # FULL BLOCK
+2589;AI # LEFT SEVEN EIGHTHS BLOCK
+258A;AI # LEFT THREE QUARTERS BLOCK
+258B;AI # LEFT FIVE EIGHTHS BLOCK
+258C;AI # LEFT HALF BLOCK
+258D;AI # LEFT THREE EIGHTHS BLOCK
+258E;AI # LEFT ONE QUARTER BLOCK
+258F;AI # LEFT ONE EIGHTH BLOCK
+2590;AL # RIGHT HALF BLOCK
+2591;AL # LIGHT SHADE
+2592;AI # MEDIUM SHADE
+2593;AI # DARK SHADE
+2594;AI # UPPER ONE EIGHTH BLOCK
+2595;AI # RIGHT ONE EIGHTH BLOCK
+2596;AL # QUADRANT LOWER LEFT
+2597;AL # QUADRANT LOWER RIGHT
+2598;AL # QUADRANT UPPER LEFT
+2599;AL # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
+259A;AL # QUADRANT UPPER LEFT AND LOWER RIGHT
+259B;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
+259C;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
+259D;AL # QUADRANT UPPER RIGHT
+259E;AL # QUADRANT UPPER RIGHT AND LOWER LEFT
+259F;AL # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
+25A0;AI # BLACK SQUARE
+25A1;AI # WHITE SQUARE
+25A2;AL # WHITE SQUARE WITH ROUNDED CORNERS
+25A3;AI # WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+25A4;AI # SQUARE WITH HORIZONTAL FILL
+25A5;AI # SQUARE WITH VERTICAL FILL
+25A6;AI # SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+25A7;AI # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+25A8;AI # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+25A9;AI # SQUARE WITH DIAGONAL CROSSHATCH FILL
+25AA;AL # BLACK SMALL SQUARE
+25AB;AL # WHITE SMALL SQUARE
+25AC;AL # BLACK RECTANGLE
+25AD;AL # WHITE RECTANGLE
+25AE;AL # BLACK VERTICAL RECTANGLE
+25AF;AL # WHITE VERTICAL RECTANGLE
+25B0;AL # BLACK PARALLELOGRAM
+25B1;AL # WHITE PARALLELOGRAM
+25B2;AI # BLACK UP-POINTING TRIANGLE
+25B3;AI # WHITE UP-POINTING TRIANGLE
+25B4;AL # BLACK UP-POINTING SMALL TRIANGLE
+25B5;AL # WHITE UP-POINTING SMALL TRIANGLE
+25B6;AI # BLACK RIGHT-POINTING TRIANGLE
+25B7;AI # WHITE RIGHT-POINTING TRIANGLE
+25B8;AL # BLACK RIGHT-POINTING SMALL TRIANGLE
+25B9;AL # WHITE RIGHT-POINTING SMALL TRIANGLE
+25BA;AL # BLACK RIGHT-POINTING POINTER
+25BB;AL # WHITE RIGHT-POINTING POINTER
+25BC;AI # BLACK DOWN-POINTING TRIANGLE
+25BD;AI # WHITE DOWN-POINTING TRIANGLE
+25BE;AL # BLACK DOWN-POINTING SMALL TRIANGLE
+25BF;AL # WHITE DOWN-POINTING SMALL TRIANGLE
+25C0;AI # BLACK LEFT-POINTING TRIANGLE
+25C1;AI # WHITE LEFT-POINTING TRIANGLE
+25C2;AL # BLACK LEFT-POINTING SMALL TRIANGLE
+25C3;AL # WHITE LEFT-POINTING SMALL TRIANGLE
+25C4;AL # BLACK LEFT-POINTING POINTER
+25C5;AL # WHITE LEFT-POINTING POINTER
+25C6;AI # BLACK DIAMOND
+25C7;AI # WHITE DIAMOND
+25C8;AI # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+25C9;AL # FISHEYE
+25CA;AL # LOZENGE
+25CB;AI # WHITE CIRCLE
+25CC;AL # DOTTED CIRCLE
+25CD;AL # CIRCLE WITH VERTICAL FILL
+25CE;AI # BULLSEYE
+25CF;AI # BLACK CIRCLE
+25D0;AI # CIRCLE WITH LEFT HALF BLACK
+25D1;AI # CIRCLE WITH RIGHT HALF BLACK
+25D2;AL # CIRCLE WITH LOWER HALF BLACK
+25D3;AL # CIRCLE WITH UPPER HALF BLACK
+25D4;AL # CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+25D5;AL # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+25D6;AL # LEFT HALF BLACK CIRCLE
+25D7;AL # RIGHT HALF BLACK CIRCLE
+25D8;AL # INVERSE BULLET
+25D9;AL # INVERSE WHITE CIRCLE
+25DA;AL # UPPER HALF INVERSE WHITE CIRCLE
+25DB;AL # LOWER HALF INVERSE WHITE CIRCLE
+25DC;AL # UPPER LEFT QUADRANT CIRCULAR ARC
+25DD;AL # UPPER RIGHT QUADRANT CIRCULAR ARC
+25DE;AL # LOWER RIGHT QUADRANT CIRCULAR ARC
+25DF;AL # LOWER LEFT QUADRANT CIRCULAR ARC
+25E0;AL # UPPER HALF CIRCLE
+25E1;AL # LOWER HALF CIRCLE
+25E2;AI # BLACK LOWER RIGHT TRIANGLE
+25E3;AI # BLACK LOWER LEFT TRIANGLE
+25E4;AI # BLACK UPPER LEFT TRIANGLE
+25E5;AI # BLACK UPPER RIGHT TRIANGLE
+25E6;AL # WHITE BULLET
+25E7;AL # SQUARE WITH LEFT HALF BLACK
+25E8;AL # SQUARE WITH RIGHT HALF BLACK
+25E9;AL # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+25EA;AL # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+25EB;AL # WHITE SQUARE WITH VERTICAL BISECTING LINE
+25EC;AL # WHITE UP-POINTING TRIANGLE WITH DOT
+25ED;AL # UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+25EE;AL # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+25EF;AI # LARGE CIRCLE
+25F0;AL # WHITE SQUARE WITH UPPER LEFT QUADRANT
+25F1;AL # WHITE SQUARE WITH LOWER LEFT QUADRANT
+25F2;AL # WHITE SQUARE WITH LOWER RIGHT QUADRANT
+25F3;AL # WHITE SQUARE WITH UPPER RIGHT QUADRANT
+25F4;AL # WHITE CIRCLE WITH UPPER LEFT QUADRANT
+25F5;AL # WHITE CIRCLE WITH LOWER LEFT QUADRANT
+25F6;AL # WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+25F7;AL # WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+25F8;AL # UPPER LEFT TRIANGLE
+25F9;AL # UPPER RIGHT TRIANGLE
+25FA;AL # LOWER LEFT TRIANGLE
+25FB;AL # WHITE MEDIUM SQUARE
+25FC;AL # BLACK MEDIUM SQUARE
+25FD;AL # WHITE MEDIUM SMALL SQUARE
+25FE;AL # BLACK MEDIUM SMALL SQUARE
+25FF;AL # LOWER RIGHT TRIANGLE
+2600;AL # BLACK SUN WITH RAYS
+2601;AL # CLOUD
+2602;AL # UMBRELLA
+2603;AL # SNOWMAN
+2604;AL # COMET
+2605;AI # BLACK STAR
+2606;AI # WHITE STAR
+2607;AL # LIGHTNING
+2608;AL # THUNDERSTORM
+2609;AI # SUN
+260A;AL # ASCENDING NODE
+260B;AL # DESCENDING NODE
+260C;AL # CONJUNCTION
+260D;AL # OPPOSITION
+260E;AI # BLACK TELEPHONE
+260F;AI # WHITE TELEPHONE
+2610;AL # BALLOT BOX
+2611;AL # BALLOT BOX WITH CHECK
+2612;AL # BALLOT BOX WITH X
+2613;AL # SALTIRE
+2616;AI # WHITE SHOGI PIECE
+2617;AI # BLACK SHOGI PIECE
+2619;AL # REVERSED ROTATED FLORAL HEART BULLET
+261A;AL # BLACK LEFT POINTING INDEX
+261B;AL # BLACK RIGHT POINTING INDEX
+261C;AI # WHITE LEFT POINTING INDEX
+261D;AL # WHITE UP POINTING INDEX
+261E;AI # WHITE RIGHT POINTING INDEX
+261F;AL # WHITE DOWN POINTING INDEX
+2620;AL # SKULL AND CROSSBONES
+2621;AL # CAUTION SIGN
+2622;AL # RADIOACTIVE SIGN
+2623;AL # BIOHAZARD SIGN
+2624;AL # CADUCEUS
+2625;AL # ANKH
+2626;AL # ORTHODOX CROSS
+2627;AL # CHI RHO
+2628;AL # CROSS OF LORRAINE
+2629;AL # CROSS OF JERUSALEM
+262A;AL # STAR AND CRESCENT
+262B;AL # FARSI SYMBOL
+262C;AL # ADI SHAKTI
+262D;AL # HAMMER AND SICKLE
+262E;AL # PEACE SYMBOL
+262F;AL # YIN YANG
+2630;AL # TRIGRAM FOR HEAVEN
+2631;AL # TRIGRAM FOR LAKE
+2632;AL # TRIGRAM FOR FIRE
+2633;AL # TRIGRAM FOR THUNDER
+2634;AL # TRIGRAM FOR WIND
+2635;AL # TRIGRAM FOR WATER
+2636;AL # TRIGRAM FOR MOUNTAIN
+2637;AL # TRIGRAM FOR EARTH
+2638;AL # WHEEL OF DHARMA
+2639;AL # WHITE FROWNING FACE
+263A;AL # WHITE SMILING FACE
+263B;AL # BLACK SMILING FACE
+263C;AL # WHITE SUN WITH RAYS
+263D;AL # FIRST QUARTER MOON
+263E;AL # LAST QUARTER MOON
+263F;AL # MERCURY
+2640;AI # FEMALE SIGN
+2641;AL # EARTH
+2642;AI # MALE SIGN
+2643;AL # JUPITER
+2644;AL # SATURN
+2645;AL # URANUS
+2646;AL # NEPTUNE
+2647;AL # PLUTO
+2648;AL # ARIES
+2649;AL # TAURUS
+264A;AL # GEMINI
+264B;AL # CANCER
+264C;AL # LEO
+264D;AL # VIRGO
+264E;AL # LIBRA
+264F;AL # SCORPIUS
+2650;AL # SAGITTARIUS
+2651;AL # CAPRICORN
+2652;AL # AQUARIUS
+2653;AL # PISCES
+2654;AL # WHITE CHESS KING
+2655;AL # WHITE CHESS QUEEN
+2656;AL # WHITE CHESS ROOK
+2657;AL # WHITE CHESS BISHOP
+2658;AL # WHITE CHESS KNIGHT
+2659;AL # WHITE CHESS PAWN
+265A;AL # BLACK CHESS KING
+265B;AL # BLACK CHESS QUEEN
+265C;AL # BLACK CHESS ROOK
+265D;AL # BLACK CHESS BISHOP
+265E;AL # BLACK CHESS KNIGHT
+265F;AL # BLACK CHESS PAWN
+2660;AI # BLACK SPADE SUIT
+2661;AI # WHITE HEART SUIT
+2662;AL # WHITE DIAMOND SUIT
+2663;AI # BLACK CLUB SUIT
+2664;AI # WHITE SPADE SUIT
+2665;AI # BLACK HEART SUIT
+2666;AL # BLACK DIAMOND SUIT
+2667;AI # WHITE CLUB SUIT
+2668;AI # HOT SPRINGS
+2669;AI # QUARTER NOTE
+266A;AI # EIGHTH NOTE
+266B;AL # BEAMED EIGHTH NOTES
+266C;AI # BEAMED SIXTEENTH NOTES
+266D;AI # MUSIC FLAT SIGN
+266E;AL # MUSIC NATURAL SIGN
+266F;AI # MUSIC SHARP SIGN
+2670;AL # WEST SYRIAC CROSS
+2671;AL # EAST SYRIAC CROSS
+2672;AL # UNIVERSAL RECYCLING SYMBOL
+2673;AL # RECYCLING SYMBOL FOR TYPE-1 PLASTICS
+2674;AL # RECYCLING SYMBOL FOR TYPE-2 PLASTICS
+2675;AL # RECYCLING SYMBOL FOR TYPE-3 PLASTICS
+2676;AL # RECYCLING SYMBOL FOR TYPE-4 PLASTICS
+2677;AL # RECYCLING SYMBOL FOR TYPE-5 PLASTICS
+2678;AL # RECYCLING SYMBOL FOR TYPE-6 PLASTICS
+2679;AL # RECYCLING SYMBOL FOR TYPE-7 PLASTICS
+267A;AL # RECYCLING SYMBOL FOR GENERIC MATERIALS
+267B;AL # BLACK UNIVERSAL RECYCLING SYMBOL
+267C;AL # RECYCLED PAPER SYMBOL
+267D;AL # PARTIALLY-RECYCLED PAPER SYMBOL
+2680;AL # DIE FACE-1
+2681;AL # DIE FACE-2
+2682;AL # DIE FACE-3
+2683;AL # DIE FACE-4
+2684;AL # DIE FACE-5
+2685;AL # DIE FACE-6
+2686;AL # WHITE CIRCLE WITH DOT RIGHT
+2687;AL # WHITE CIRCLE WITH TWO DOTS
+2688;AL # BLACK CIRCLE WITH WHITE DOT RIGHT
+2689;AL # BLACK CIRCLE WITH TWO WHITE DOTS
+2701;AL # UPPER BLADE SCISSORS
+2702;AL # BLACK SCISSORS
+2703;AL # LOWER BLADE SCISSORS
+2704;AL # WHITE SCISSORS
+2706;AL # TELEPHONE LOCATION SIGN
+2707;AL # TAPE DRIVE
+2708;AL # AIRPLANE
+2709;AL # ENVELOPE
+270C;AL # VICTORY HAND
+270D;AL # WRITING HAND
+270E;AL # LOWER RIGHT PENCIL
+270F;AL # PENCIL
+2710;AL # UPPER RIGHT PENCIL
+2711;AL # WHITE NIB
+2712;AL # BLACK NIB
+2713;AL # CHECK MARK
+2714;AL # HEAVY CHECK MARK
+2715;AL # MULTIPLICATION X
+2716;AL # HEAVY MULTIPLICATION X
+2717;AL # BALLOT X
+2718;AL # HEAVY BALLOT X
+2719;AL # OUTLINED GREEK CROSS
+271A;AL # HEAVY GREEK CROSS
+271B;AL # OPEN CENTRE CROSS
+271C;AL # HEAVY OPEN CENTRE CROSS
+271D;AL # LATIN CROSS
+271E;AL # SHADOWED WHITE LATIN CROSS
+271F;AL # OUTLINED LATIN CROSS
+2720;AL # MALTESE CROSS
+2721;AL # STAR OF DAVID
+2722;AL # FOUR TEARDROP-SPOKED ASTERISK
+2723;AL # FOUR BALLOON-SPOKED ASTERISK
+2724;AL # HEAVY FOUR BALLOON-SPOKED ASTERISK
+2725;AL # FOUR CLUB-SPOKED ASTERISK
+2726;AL # BLACK FOUR POINTED STAR
+2727;AL # WHITE FOUR POINTED STAR
+2729;AL # STRESS OUTLINED WHITE STAR
+272A;AL # CIRCLED WHITE STAR
+272B;AL # OPEN CENTRE BLACK STAR
+272C;AL # BLACK CENTRE WHITE STAR
+272D;AL # OUTLINED BLACK STAR
+272E;AL # HEAVY OUTLINED BLACK STAR
+272F;AL # PINWHEEL STAR
+2730;AL # SHADOWED WHITE STAR
+2731;AL # HEAVY ASTERISK
+2732;AL # OPEN CENTRE ASTERISK
+2733;AL # EIGHT SPOKED ASTERISK
+2734;AL # EIGHT POINTED BLACK STAR
+2735;AL # EIGHT POINTED PINWHEEL STAR
+2736;AL # SIX POINTED BLACK STAR
+2737;AL # EIGHT POINTED RECTILINEAR BLACK STAR
+2738;AL # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+2739;AL # TWELVE POINTED BLACK STAR
+273A;AL # SIXTEEN POINTED ASTERISK
+273B;AL # TEARDROP-SPOKED ASTERISK
+273C;AL # OPEN CENTRE TEARDROP-SPOKED ASTERISK
+273D;AL # HEAVY TEARDROP-SPOKED ASTERISK
+273E;AL # SIX PETALLED BLACK AND WHITE FLORETTE
+273F;AL # BLACK FLORETTE
+2740;AL # WHITE FLORETTE
+2741;AL # EIGHT PETALLED OUTLINED BLACK FLORETTE
+2742;AL # CIRCLED OPEN CENTRE EIGHT POINTED STAR
+2743;AL # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+2744;AL # SNOWFLAKE
+2745;AL # TIGHT TRIFOLIATE SNOWFLAKE
+2746;AL # HEAVY CHEVRON SNOWFLAKE
+2747;AL # SPARKLE
+2748;AL # HEAVY SPARKLE
+2749;AL # BALLOON-SPOKED ASTERISK
+274A;AL # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274B;AL # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D;AL # SHADOWED WHITE CIRCLE
+274F;AL # LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+2750;AL # UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+2751;AL # LOWER RIGHT SHADOWED WHITE SQUARE
+2752;AL # UPPER RIGHT SHADOWED WHITE SQUARE
+2756;AL # BLACK DIAMOND MINUS WHITE X
+2758;AL # LIGHT VERTICAL BAR
+2759;AL # MEDIUM VERTICAL BAR
+275A;AL # HEAVY VERTICAL BAR
+275B;QU # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+275C;QU # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+275D;QU # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+275E;QU # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761;AL # CURVED STEM PARAGRAPH SIGN ORNAMENT
+2762;EX # HEAVY EXCLAMATION MARK ORNAMENT
+2763;EX # HEAVY HEART EXCLAMATION MARK ORNAMENT
+2764;AL # HEAVY BLACK HEART
+2765;AL # ROTATED HEAVY BLACK HEART BULLET
+2766;AL # FLORAL HEART
+2767;AL # ROTATED FLORAL HEART BULLET
+2768;OP # MEDIUM LEFT PARENTHESIS ORNAMENT
+2769;CL # MEDIUM RIGHT PARENTHESIS ORNAMENT
+276A;OP # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276B;CL # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276C;OP # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276D;CL # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276E;OP # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+276F;CL # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770;OP # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2771;CL # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2772;OP # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+2773;CL # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+2774;OP # MEDIUM LEFT CURLY BRACKET ORNAMENT
+2775;CL # MEDIUM RIGHT CURLY BRACKET ORNAMENT
+2776;AL # DINGBAT NEGATIVE CIRCLED DIGIT ONE
+2777;AL # DINGBAT NEGATIVE CIRCLED DIGIT TWO
+2778;AL # DINGBAT NEGATIVE CIRCLED DIGIT THREE
+2779;AL # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+277A;AL # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+277B;AL # DINGBAT NEGATIVE CIRCLED DIGIT SIX
+277C;AL # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+277D;AL # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+277E;AL # DINGBAT NEGATIVE CIRCLED DIGIT NINE
+277F;AL # DINGBAT NEGATIVE CIRCLED NUMBER TEN
+2780;AL # DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+2781;AL # DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+2782;AL # DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+2783;AL # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+2784;AL # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+2785;AL # DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+2786;AL # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+2787;AL # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+2788;AL # DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+2789;AL # DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+278A;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+278B;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+278C;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+278D;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+278E;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+278F;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+2790;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+2791;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+2792;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+2793;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2794;AL # HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798;AL # HEAVY SOUTH EAST ARROW
+2799;AL # HEAVY RIGHTWARDS ARROW
+279A;AL # HEAVY NORTH EAST ARROW
+279B;AL # DRAFTING POINT RIGHTWARDS ARROW
+279C;AL # HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+279D;AL # TRIANGLE-HEADED RIGHTWARDS ARROW
+279E;AL # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+279F;AL # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A0;AL # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A1;AL # BLACK RIGHTWARDS ARROW
+27A2;AL # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+27A3;AL # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+27A4;AL # BLACK RIGHTWARDS ARROWHEAD
+27A5;AL # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+27A6;AL # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+27A7;AL # SQUAT BLACK RIGHTWARDS ARROW
+27A8;AL # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+27A9;AL # RIGHT-SHADED WHITE RIGHTWARDS ARROW
+27AA;AL # LEFT-SHADED WHITE RIGHTWARDS ARROW
+27AB;AL # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AC;AL # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AD;AL # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AE;AL # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AF;AL # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1;AL # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B2;AL # CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+27B3;AL # WHITE-FEATHERED RIGHTWARDS ARROW
+27B4;AL # BLACK-FEATHERED SOUTH EAST ARROW
+27B5;AL # BLACK-FEATHERED RIGHTWARDS ARROW
+27B6;AL # BLACK-FEATHERED NORTH EAST ARROW
+27B7;AL # HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+27B8;AL # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+27B9;AL # HEAVY BLACK-FEATHERED NORTH EAST ARROW
+27BA;AL # TEARDROP-BARBED RIGHTWARDS ARROW
+27BB;AL # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+27BC;AL # WEDGE-TAILED RIGHTWARDS ARROW
+27BD;AL # HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+27BE;AL # OPEN-OUTLINED RIGHTWARDS ARROW
+27D0;AL # WHITE DIAMOND WITH CENTRED DOT
+27D1;AL # AND WITH DOT
+27D2;AL # ELEMENT OF OPENING UPWARDS
+27D3;AL # LOWER RIGHT CORNER WITH DOT
+27D4;AL # UPPER LEFT CORNER WITH DOT
+27D5;AL # LEFT OUTER JOIN
+27D6;AL # RIGHT OUTER JOIN
+27D7;AL # FULL OUTER JOIN
+27D8;AL # LARGE UP TACK
+27D9;AL # LARGE DOWN TACK
+27DA;AL # LEFT AND RIGHT DOUBLE TURNSTILE
+27DB;AL # LEFT AND RIGHT TACK
+27DC;AL # LEFT MULTIMAP
+27DD;AL # LONG RIGHT TACK
+27DE;AL # LONG LEFT TACK
+27DF;AL # UP TACK WITH CIRCLE ABOVE
+27E0;AL # LOZENGE DIVIDED BY HORIZONTAL RULE
+27E1;AL # WHITE CONCAVE-SIDED DIAMOND
+27E2;AL # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
+27E3;AL # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
+27E4;AL # WHITE SQUARE WITH LEFTWARDS TICK
+27E5;AL # WHITE SQUARE WITH RIGHTWARDS TICK
+27E6;OP # MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7;CL # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8;OP # MATHEMATICAL LEFT ANGLE BRACKET
+27E9;CL # MATHEMATICAL RIGHT ANGLE BRACKET
+27EA;OP # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB;CL # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+27F0;AL # UPWARDS QUADRUPLE ARROW
+27F1;AL # DOWNWARDS QUADRUPLE ARROW
+27F2;AL # ANTICLOCKWISE GAPPED CIRCLE ARROW
+27F3;AL # CLOCKWISE GAPPED CIRCLE ARROW
+27F4;AL # RIGHT ARROW WITH CIRCLED PLUS
+27F5;AL # LONG LEFTWARDS ARROW
+27F6;AL # LONG RIGHTWARDS ARROW
+27F7;AL # LONG LEFT RIGHT ARROW
+27F8;AL # LONG LEFTWARDS DOUBLE ARROW
+27F9;AL # LONG RIGHTWARDS DOUBLE ARROW
+27FA;AL # LONG LEFT RIGHT DOUBLE ARROW
+27FB;AL # LONG LEFTWARDS ARROW FROM BAR
+27FC;AL # LONG RIGHTWARDS ARROW FROM BAR
+27FD;AL # LONG LEFTWARDS DOUBLE ARROW FROM BAR
+27FE;AL # LONG RIGHTWARDS DOUBLE ARROW FROM BAR
+27FF;AL # LONG RIGHTWARDS SQUIGGLE ARROW
+2800;AL # BRAILLE PATTERN BLANK
+2801;AL # BRAILLE PATTERN DOTS-1
+2802;AL # BRAILLE PATTERN DOTS-2
+2803;AL # BRAILLE PATTERN DOTS-12
+2804;AL # BRAILLE PATTERN DOTS-3
+2805;AL # BRAILLE PATTERN DOTS-13
+2806;AL # BRAILLE PATTERN DOTS-23
+2807;AL # BRAILLE PATTERN DOTS-123
+2808;AL # BRAILLE PATTERN DOTS-4
+2809;AL # BRAILLE PATTERN DOTS-14
+280A;AL # BRAILLE PATTERN DOTS-24
+280B;AL # BRAILLE PATTERN DOTS-124
+280C;AL # BRAILLE PATTERN DOTS-34
+280D;AL # BRAILLE PATTERN DOTS-134
+280E;AL # BRAILLE PATTERN DOTS-234
+280F;AL # BRAILLE PATTERN DOTS-1234
+2810;AL # BRAILLE PATTERN DOTS-5
+2811;AL # BRAILLE PATTERN DOTS-15
+2812;AL # BRAILLE PATTERN DOTS-25
+2813;AL # BRAILLE PATTERN DOTS-125
+2814;AL # BRAILLE PATTERN DOTS-35
+2815;AL # BRAILLE PATTERN DOTS-135
+2816;AL # BRAILLE PATTERN DOTS-235
+2817;AL # BRAILLE PATTERN DOTS-1235
+2818;AL # BRAILLE PATTERN DOTS-45
+2819;AL # BRAILLE PATTERN DOTS-145
+281A;AL # BRAILLE PATTERN DOTS-245
+281B;AL # BRAILLE PATTERN DOTS-1245
+281C;AL # BRAILLE PATTERN DOTS-345
+281D;AL # BRAILLE PATTERN DOTS-1345
+281E;AL # BRAILLE PATTERN DOTS-2345
+281F;AL # BRAILLE PATTERN DOTS-12345
+2820;AL # BRAILLE PATTERN DOTS-6
+2821;AL # BRAILLE PATTERN DOTS-16
+2822;AL # BRAILLE PATTERN DOTS-26
+2823;AL # BRAILLE PATTERN DOTS-126
+2824;AL # BRAILLE PATTERN DOTS-36
+2825;AL # BRAILLE PATTERN DOTS-136
+2826;AL # BRAILLE PATTERN DOTS-236
+2827;AL # BRAILLE PATTERN DOTS-1236
+2828;AL # BRAILLE PATTERN DOTS-46
+2829;AL # BRAILLE PATTERN DOTS-146
+282A;AL # BRAILLE PATTERN DOTS-246
+282B;AL # BRAILLE PATTERN DOTS-1246
+282C;AL # BRAILLE PATTERN DOTS-346
+282D;AL # BRAILLE PATTERN DOTS-1346
+282E;AL # BRAILLE PATTERN DOTS-2346
+282F;AL # BRAILLE PATTERN DOTS-12346
+2830;AL # BRAILLE PATTERN DOTS-56
+2831;AL # BRAILLE PATTERN DOTS-156
+2832;AL # BRAILLE PATTERN DOTS-256
+2833;AL # BRAILLE PATTERN DOTS-1256
+2834;AL # BRAILLE PATTERN DOTS-356
+2835;AL # BRAILLE PATTERN DOTS-1356
+2836;AL # BRAILLE PATTERN DOTS-2356
+2837;AL # BRAILLE PATTERN DOTS-12356
+2838;AL # BRAILLE PATTERN DOTS-456
+2839;AL # BRAILLE PATTERN DOTS-1456
+283A;AL # BRAILLE PATTERN DOTS-2456
+283B;AL # BRAILLE PATTERN DOTS-12456
+283C;AL # BRAILLE PATTERN DOTS-3456
+283D;AL # BRAILLE PATTERN DOTS-13456
+283E;AL # BRAILLE PATTERN DOTS-23456
+283F;AL # BRAILLE PATTERN DOTS-123456
+2840;AL # BRAILLE PATTERN DOTS-7
+2841;AL # BRAILLE PATTERN DOTS-17
+2842;AL # BRAILLE PATTERN DOTS-27
+2843;AL # BRAILLE PATTERN DOTS-127
+2844;AL # BRAILLE PATTERN DOTS-37
+2845;AL # BRAILLE PATTERN DOTS-137
+2846;AL # BRAILLE PATTERN DOTS-237
+2847;AL # BRAILLE PATTERN DOTS-1237
+2848;AL # BRAILLE PATTERN DOTS-47
+2849;AL # BRAILLE PATTERN DOTS-147
+284A;AL # BRAILLE PATTERN DOTS-247
+284B;AL # BRAILLE PATTERN DOTS-1247
+284C;AL # BRAILLE PATTERN DOTS-347
+284D;AL # BRAILLE PATTERN DOTS-1347
+284E;AL # BRAILLE PATTERN DOTS-2347
+284F;AL # BRAILLE PATTERN DOTS-12347
+2850;AL # BRAILLE PATTERN DOTS-57
+2851;AL # BRAILLE PATTERN DOTS-157
+2852;AL # BRAILLE PATTERN DOTS-257
+2853;AL # BRAILLE PATTERN DOTS-1257
+2854;AL # BRAILLE PATTERN DOTS-357
+2855;AL # BRAILLE PATTERN DOTS-1357
+2856;AL # BRAILLE PATTERN DOTS-2357
+2857;AL # BRAILLE PATTERN DOTS-12357
+2858;AL # BRAILLE PATTERN DOTS-457
+2859;AL # BRAILLE PATTERN DOTS-1457
+285A;AL # BRAILLE PATTERN DOTS-2457
+285B;AL # BRAILLE PATTERN DOTS-12457
+285C;AL # BRAILLE PATTERN DOTS-3457
+285D;AL # BRAILLE PATTERN DOTS-13457
+285E;AL # BRAILLE PATTERN DOTS-23457
+285F;AL # BRAILLE PATTERN DOTS-123457
+2860;AL # BRAILLE PATTERN DOTS-67
+2861;AL # BRAILLE PATTERN DOTS-167
+2862;AL # BRAILLE PATTERN DOTS-267
+2863;AL # BRAILLE PATTERN DOTS-1267
+2864;AL # BRAILLE PATTERN DOTS-367
+2865;AL # BRAILLE PATTERN DOTS-1367
+2866;AL # BRAILLE PATTERN DOTS-2367
+2867;AL # BRAILLE PATTERN DOTS-12367
+2868;AL # BRAILLE PATTERN DOTS-467
+2869;AL # BRAILLE PATTERN DOTS-1467
+286A;AL # BRAILLE PATTERN DOTS-2467
+286B;AL # BRAILLE PATTERN DOTS-12467
+286C;AL # BRAILLE PATTERN DOTS-3467
+286D;AL # BRAILLE PATTERN DOTS-13467
+286E;AL # BRAILLE PATTERN DOTS-23467
+286F;AL # BRAILLE PATTERN DOTS-123467
+2870;AL # BRAILLE PATTERN DOTS-567
+2871;AL # BRAILLE PATTERN DOTS-1567
+2872;AL # BRAILLE PATTERN DOTS-2567
+2873;AL # BRAILLE PATTERN DOTS-12567
+2874;AL # BRAILLE PATTERN DOTS-3567
+2875;AL # BRAILLE PATTERN DOTS-13567
+2876;AL # BRAILLE PATTERN DOTS-23567
+2877;AL # BRAILLE PATTERN DOTS-123567
+2878;AL # BRAILLE PATTERN DOTS-4567
+2879;AL # BRAILLE PATTERN DOTS-14567
+287A;AL # BRAILLE PATTERN DOTS-24567
+287B;AL # BRAILLE PATTERN DOTS-124567
+287C;AL # BRAILLE PATTERN DOTS-34567
+287D;AL # BRAILLE PATTERN DOTS-134567
+287E;AL # BRAILLE PATTERN DOTS-234567
+287F;AL # BRAILLE PATTERN DOTS-1234567
+2880;AL # BRAILLE PATTERN DOTS-8
+2881;AL # BRAILLE PATTERN DOTS-18
+2882;AL # BRAILLE PATTERN DOTS-28
+2883;AL # BRAILLE PATTERN DOTS-128
+2884;AL # BRAILLE PATTERN DOTS-38
+2885;AL # BRAILLE PATTERN DOTS-138
+2886;AL # BRAILLE PATTERN DOTS-238
+2887;AL # BRAILLE PATTERN DOTS-1238
+2888;AL # BRAILLE PATTERN DOTS-48
+2889;AL # BRAILLE PATTERN DOTS-148
+288A;AL # BRAILLE PATTERN DOTS-248
+288B;AL # BRAILLE PATTERN DOTS-1248
+288C;AL # BRAILLE PATTERN DOTS-348
+288D;AL # BRAILLE PATTERN DOTS-1348
+288E;AL # BRAILLE PATTERN DOTS-2348
+288F;AL # BRAILLE PATTERN DOTS-12348
+2890;AL # BRAILLE PATTERN DOTS-58
+2891;AL # BRAILLE PATTERN DOTS-158
+2892;AL # BRAILLE PATTERN DOTS-258
+2893;AL # BRAILLE PATTERN DOTS-1258
+2894;AL # BRAILLE PATTERN DOTS-358
+2895;AL # BRAILLE PATTERN DOTS-1358
+2896;AL # BRAILLE PATTERN DOTS-2358
+2897;AL # BRAILLE PATTERN DOTS-12358
+2898;AL # BRAILLE PATTERN DOTS-458
+2899;AL # BRAILLE PATTERN DOTS-1458
+289A;AL # BRAILLE PATTERN DOTS-2458
+289B;AL # BRAILLE PATTERN DOTS-12458
+289C;AL # BRAILLE PATTERN DOTS-3458
+289D;AL # BRAILLE PATTERN DOTS-13458
+289E;AL # BRAILLE PATTERN DOTS-23458
+289F;AL # BRAILLE PATTERN DOTS-123458
+28A0;AL # BRAILLE PATTERN DOTS-68
+28A1;AL # BRAILLE PATTERN DOTS-168
+28A2;AL # BRAILLE PATTERN DOTS-268
+28A3;AL # BRAILLE PATTERN DOTS-1268
+28A4;AL # BRAILLE PATTERN DOTS-368
+28A5;AL # BRAILLE PATTERN DOTS-1368
+28A6;AL # BRAILLE PATTERN DOTS-2368
+28A7;AL # BRAILLE PATTERN DOTS-12368
+28A8;AL # BRAILLE PATTERN DOTS-468
+28A9;AL # BRAILLE PATTERN DOTS-1468
+28AA;AL # BRAILLE PATTERN DOTS-2468
+28AB;AL # BRAILLE PATTERN DOTS-12468
+28AC;AL # BRAILLE PATTERN DOTS-3468
+28AD;AL # BRAILLE PATTERN DOTS-13468
+28AE;AL # BRAILLE PATTERN DOTS-23468
+28AF;AL # BRAILLE PATTERN DOTS-123468
+28B0;AL # BRAILLE PATTERN DOTS-568
+28B1;AL # BRAILLE PATTERN DOTS-1568
+28B2;AL # BRAILLE PATTERN DOTS-2568
+28B3;AL # BRAILLE PATTERN DOTS-12568
+28B4;AL # BRAILLE PATTERN DOTS-3568
+28B5;AL # BRAILLE PATTERN DOTS-13568
+28B6;AL # BRAILLE PATTERN DOTS-23568
+28B7;AL # BRAILLE PATTERN DOTS-123568
+28B8;AL # BRAILLE PATTERN DOTS-4568
+28B9;AL # BRAILLE PATTERN DOTS-14568
+28BA;AL # BRAILLE PATTERN DOTS-24568
+28BB;AL # BRAILLE PATTERN DOTS-124568
+28BC;AL # BRAILLE PATTERN DOTS-34568
+28BD;AL # BRAILLE PATTERN DOTS-134568
+28BE;AL # BRAILLE PATTERN DOTS-234568
+28BF;AL # BRAILLE PATTERN DOTS-1234568
+28C0;AL # BRAILLE PATTERN DOTS-78
+28C1;AL # BRAILLE PATTERN DOTS-178
+28C2;AL # BRAILLE PATTERN DOTS-278
+28C3;AL # BRAILLE PATTERN DOTS-1278
+28C4;AL # BRAILLE PATTERN DOTS-378
+28C5;AL # BRAILLE PATTERN DOTS-1378
+28C6;AL # BRAILLE PATTERN DOTS-2378
+28C7;AL # BRAILLE PATTERN DOTS-12378
+28C8;AL # BRAILLE PATTERN DOTS-478
+28C9;AL # BRAILLE PATTERN DOTS-1478
+28CA;AL # BRAILLE PATTERN DOTS-2478
+28CB;AL # BRAILLE PATTERN DOTS-12478
+28CC;AL # BRAILLE PATTERN DOTS-3478
+28CD;AL # BRAILLE PATTERN DOTS-13478
+28CE;AL # BRAILLE PATTERN DOTS-23478
+28CF;AL # BRAILLE PATTERN DOTS-123478
+28D0;AL # BRAILLE PATTERN DOTS-578
+28D1;AL # BRAILLE PATTERN DOTS-1578
+28D2;AL # BRAILLE PATTERN DOTS-2578
+28D3;AL # BRAILLE PATTERN DOTS-12578
+28D4;AL # BRAILLE PATTERN DOTS-3578
+28D5;AL # BRAILLE PATTERN DOTS-13578
+28D6;AL # BRAILLE PATTERN DOTS-23578
+28D7;AL # BRAILLE PATTERN DOTS-123578
+28D8;AL # BRAILLE PATTERN DOTS-4578
+28D9;AL # BRAILLE PATTERN DOTS-14578
+28DA;AL # BRAILLE PATTERN DOTS-24578
+28DB;AL # BRAILLE PATTERN DOTS-124578
+28DC;AL # BRAILLE PATTERN DOTS-34578
+28DD;AL # BRAILLE PATTERN DOTS-134578
+28DE;AL # BRAILLE PATTERN DOTS-234578
+28DF;AL # BRAILLE PATTERN DOTS-1234578
+28E0;AL # BRAILLE PATTERN DOTS-678
+28E1;AL # BRAILLE PATTERN DOTS-1678
+28E2;AL # BRAILLE PATTERN DOTS-2678
+28E3;AL # BRAILLE PATTERN DOTS-12678
+28E4;AL # BRAILLE PATTERN DOTS-3678
+28E5;AL # BRAILLE PATTERN DOTS-13678
+28E6;AL # BRAILLE PATTERN DOTS-23678
+28E7;AL # BRAILLE PATTERN DOTS-123678
+28E8;AL # BRAILLE PATTERN DOTS-4678
+28E9;AL # BRAILLE PATTERN DOTS-14678
+28EA;AL # BRAILLE PATTERN DOTS-24678
+28EB;AL # BRAILLE PATTERN DOTS-124678
+28EC;AL # BRAILLE PATTERN DOTS-34678
+28ED;AL # BRAILLE PATTERN DOTS-134678
+28EE;AL # BRAILLE PATTERN DOTS-234678
+28EF;AL # BRAILLE PATTERN DOTS-1234678
+28F0;AL # BRAILLE PATTERN DOTS-5678
+28F1;AL # BRAILLE PATTERN DOTS-15678
+28F2;AL # BRAILLE PATTERN DOTS-25678
+28F3;AL # BRAILLE PATTERN DOTS-125678
+28F4;AL # BRAILLE PATTERN DOTS-35678
+28F5;AL # BRAILLE PATTERN DOTS-135678
+28F6;AL # BRAILLE PATTERN DOTS-235678
+28F7;AL # BRAILLE PATTERN DOTS-1235678
+28F8;AL # BRAILLE PATTERN DOTS-45678
+28F9;AL # BRAILLE PATTERN DOTS-145678
+28FA;AL # BRAILLE PATTERN DOTS-245678
+28FB;AL # BRAILLE PATTERN DOTS-1245678
+28FC;AL # BRAILLE PATTERN DOTS-345678
+28FD;AL # BRAILLE PATTERN DOTS-1345678
+28FE;AL # BRAILLE PATTERN DOTS-2345678
+28FF;AL # BRAILLE PATTERN DOTS-12345678
+2900;AL # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+2901;AL # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+2902;AL # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+2903;AL # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+2904;AL # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
+2905;AL # RIGHTWARDS TWO-HEADED ARROW FROM BAR
+2906;AL # LEFTWARDS DOUBLE ARROW FROM BAR
+2907;AL # RIGHTWARDS DOUBLE ARROW FROM BAR
+2908;AL # DOWNWARDS ARROW WITH HORIZONTAL STROKE
+2909;AL # UPWARDS ARROW WITH HORIZONTAL STROKE
+290A;AL # UPWARDS TRIPLE ARROW
+290B;AL # DOWNWARDS TRIPLE ARROW
+290C;AL # LEFTWARDS DOUBLE DASH ARROW
+290D;AL # RIGHTWARDS DOUBLE DASH ARROW
+290E;AL # LEFTWARDS TRIPLE DASH ARROW
+290F;AL # RIGHTWARDS TRIPLE DASH ARROW
+2910;AL # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
+2911;AL # RIGHTWARDS ARROW WITH DOTTED STEM
+2912;AL # UPWARDS ARROW TO BAR
+2913;AL # DOWNWARDS ARROW TO BAR
+2914;AL # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+2915;AL # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2916;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL
+2917;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+2918;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2919;AL # LEFTWARDS ARROW-TAIL
+291A;AL # RIGHTWARDS ARROW-TAIL
+291B;AL # LEFTWARDS DOUBLE ARROW-TAIL
+291C;AL # RIGHTWARDS DOUBLE ARROW-TAIL
+291D;AL # LEFTWARDS ARROW TO BLACK DIAMOND
+291E;AL # RIGHTWARDS ARROW TO BLACK DIAMOND
+291F;AL # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
+2920;AL # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
+2921;AL # NORTH WEST AND SOUTH EAST ARROW
+2922;AL # NORTH EAST AND SOUTH WEST ARROW
+2923;AL # NORTH WEST ARROW WITH HOOK
+2924;AL # NORTH EAST ARROW WITH HOOK
+2925;AL # SOUTH EAST ARROW WITH HOOK
+2926;AL # SOUTH WEST ARROW WITH HOOK
+2927;AL # NORTH WEST ARROW AND NORTH EAST ARROW
+2928;AL # NORTH EAST ARROW AND SOUTH EAST ARROW
+2929;AL # SOUTH EAST ARROW AND SOUTH WEST ARROW
+292A;AL # SOUTH WEST ARROW AND NORTH WEST ARROW
+292B;AL # RISING DIAGONAL CROSSING FALLING DIAGONAL
+292C;AL # FALLING DIAGONAL CROSSING RISING DIAGONAL
+292D;AL # SOUTH EAST ARROW CROSSING NORTH EAST ARROW
+292E;AL # NORTH EAST ARROW CROSSING SOUTH EAST ARROW
+292F;AL # FALLING DIAGONAL CROSSING NORTH EAST ARROW
+2930;AL # RISING DIAGONAL CROSSING SOUTH EAST ARROW
+2931;AL # NORTH EAST ARROW CROSSING NORTH WEST ARROW
+2932;AL # NORTH WEST ARROW CROSSING NORTH EAST ARROW
+2933;AL # WAVE ARROW POINTING DIRECTLY RIGHT
+2934;AL # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
+2935;AL # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
+2936;AL # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
+2937;AL # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
+2938;AL # RIGHT-SIDE ARC CLOCKWISE ARROW
+2939;AL # LEFT-SIDE ARC ANTICLOCKWISE ARROW
+293A;AL # TOP ARC ANTICLOCKWISE ARROW
+293B;AL # BOTTOM ARC ANTICLOCKWISE ARROW
+293C;AL # TOP ARC CLOCKWISE ARROW WITH MINUS
+293D;AL # TOP ARC ANTICLOCKWISE ARROW WITH PLUS
+293E;AL # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
+293F;AL # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
+2940;AL # ANTICLOCKWISE CLOSED CIRCLE ARROW
+2941;AL # CLOCKWISE CLOSED CIRCLE ARROW
+2942;AL # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
+2943;AL # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
+2944;AL # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
+2945;AL # RIGHTWARDS ARROW WITH PLUS BELOW
+2946;AL # LEFTWARDS ARROW WITH PLUS BELOW
+2947;AL # RIGHTWARDS ARROW THROUGH X
+2948;AL # LEFT RIGHT ARROW THROUGH SMALL CIRCLE
+2949;AL # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
+294A;AL # LEFT BARB UP RIGHT BARB DOWN HARPOON
+294B;AL # LEFT BARB DOWN RIGHT BARB UP HARPOON
+294C;AL # UP BARB RIGHT DOWN BARB LEFT HARPOON
+294D;AL # UP BARB LEFT DOWN BARB RIGHT HARPOON
+294E;AL # LEFT BARB UP RIGHT BARB UP HARPOON
+294F;AL # UP BARB RIGHT DOWN BARB RIGHT HARPOON
+2950;AL # LEFT BARB DOWN RIGHT BARB DOWN HARPOON
+2951;AL # UP BARB LEFT DOWN BARB LEFT HARPOON
+2952;AL # LEFTWARDS HARPOON WITH BARB UP TO BAR
+2953;AL # RIGHTWARDS HARPOON WITH BARB UP TO BAR
+2954;AL # UPWARDS HARPOON WITH BARB RIGHT TO BAR
+2955;AL # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
+2956;AL # LEFTWARDS HARPOON WITH BARB DOWN TO BAR
+2957;AL # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
+2958;AL # UPWARDS HARPOON WITH BARB LEFT TO BAR
+2959;AL # DOWNWARDS HARPOON WITH BARB LEFT TO BAR
+295A;AL # LEFTWARDS HARPOON WITH BARB UP FROM BAR
+295B;AL # RIGHTWARDS HARPOON WITH BARB UP FROM BAR
+295C;AL # UPWARDS HARPOON WITH BARB RIGHT FROM BAR
+295D;AL # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
+295E;AL # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
+295F;AL # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
+2960;AL # UPWARDS HARPOON WITH BARB LEFT FROM BAR
+2961;AL # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
+2962;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+2963;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+2964;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+2965;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+2966;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
+2967;AL # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+2968;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
+2969;AL # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+296A;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+296B;AL # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+296C;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+296D;AL # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+296E;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+296F;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+2970;AL # RIGHT DOUBLE ARROW WITH ROUNDED HEAD
+2971;AL # EQUALS SIGN ABOVE RIGHTWARDS ARROW
+2972;AL # TILDE OPERATOR ABOVE RIGHTWARDS ARROW
+2973;AL # LEFTWARDS ARROW ABOVE TILDE OPERATOR
+2974;AL # RIGHTWARDS ARROW ABOVE TILDE OPERATOR
+2975;AL # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
+2976;AL # LESS-THAN ABOVE LEFTWARDS ARROW
+2977;AL # LEFTWARDS ARROW THROUGH LESS-THAN
+2978;AL # GREATER-THAN ABOVE RIGHTWARDS ARROW
+2979;AL # SUBSET ABOVE RIGHTWARDS ARROW
+297A;AL # LEFTWARDS ARROW THROUGH SUBSET
+297B;AL # SUPERSET ABOVE LEFTWARDS ARROW
+297C;AL # LEFT FISH TAIL
+297D;AL # RIGHT FISH TAIL
+297E;AL # UP FISH TAIL
+297F;AL # DOWN FISH TAIL
+2980;AL # TRIPLE VERTICAL BAR DELIMITER
+2981;AL # Z NOTATION SPOT
+2982;AL # Z NOTATION TYPE COLON
+2983;OP # LEFT WHITE CURLY BRACKET
+2984;CL # RIGHT WHITE CURLY BRACKET
+2985;OP # LEFT WHITE PARENTHESIS
+2986;CL # RIGHT WHITE PARENTHESIS
+2987;OP # Z NOTATION LEFT IMAGE BRACKET
+2988;CL # Z NOTATION RIGHT IMAGE BRACKET
+2989;OP # Z NOTATION LEFT BINDING BRACKET
+298A;CL # Z NOTATION RIGHT BINDING BRACKET
+298B;OP # LEFT SQUARE BRACKET WITH UNDERBAR
+298C;CL # RIGHT SQUARE BRACKET WITH UNDERBAR
+298D;OP # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E;CL # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F;OP # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990;CL # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991;OP # LEFT ANGLE BRACKET WITH DOT
+2992;CL # RIGHT ANGLE BRACKET WITH DOT
+2993;OP # LEFT ARC LESS-THAN BRACKET
+2994;CL # RIGHT ARC GREATER-THAN BRACKET
+2995;OP # DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996;CL # DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997;OP # LEFT BLACK TORTOISE SHELL BRACKET
+2998;CL # RIGHT BLACK TORTOISE SHELL BRACKET
+2999;AL # DOTTED FENCE
+299A;AL # VERTICAL ZIGZAG LINE
+299B;AL # MEASURED ANGLE OPENING LEFT
+299C;AL # RIGHT ANGLE VARIANT WITH SQUARE
+299D;AL # MEASURED RIGHT ANGLE WITH DOT
+299E;AL # ANGLE WITH S INSIDE
+299F;AL # ACUTE ANGLE
+29A0;AL # SPHERICAL ANGLE OPENING LEFT
+29A1;AL # SPHERICAL ANGLE OPENING UP
+29A2;AL # TURNED ANGLE
+29A3;AL # REVERSED ANGLE
+29A4;AL # ANGLE WITH UNDERBAR
+29A5;AL # REVERSED ANGLE WITH UNDERBAR
+29A6;AL # OBLIQUE ANGLE OPENING UP
+29A7;AL # OBLIQUE ANGLE OPENING DOWN
+29A8;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
+29A9;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
+29AA;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
+29AB;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
+29AC;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
+29AD;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
+29AE;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
+29AF;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
+29B0;AL # REVERSED EMPTY SET
+29B1;AL # EMPTY SET WITH OVERBAR
+29B2;AL # EMPTY SET WITH SMALL CIRCLE ABOVE
+29B3;AL # EMPTY SET WITH RIGHT ARROW ABOVE
+29B4;AL # EMPTY SET WITH LEFT ARROW ABOVE
+29B5;AL # CIRCLE WITH HORIZONTAL BAR
+29B6;AL # CIRCLED VERTICAL BAR
+29B7;AL # CIRCLED PARALLEL
+29B8;AL # CIRCLED REVERSE SOLIDUS
+29B9;AL # CIRCLED PERPENDICULAR
+29BA;AL # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
+29BB;AL # CIRCLE WITH SUPERIMPOSED X
+29BC;AL # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
+29BD;AL # UP ARROW THROUGH CIRCLE
+29BE;AL # CIRCLED WHITE BULLET
+29BF;AL # CIRCLED BULLET
+29C0;AL # CIRCLED LESS-THAN
+29C1;AL # CIRCLED GREATER-THAN
+29C2;AL # CIRCLE WITH SMALL CIRCLE TO THE RIGHT
+29C3;AL # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
+29C4;AL # SQUARED RISING DIAGONAL SLASH
+29C5;AL # SQUARED FALLING DIAGONAL SLASH
+29C6;AL # SQUARED ASTERISK
+29C7;AL # SQUARED SMALL CIRCLE
+29C8;AL # SQUARED SQUARE
+29C9;AL # TWO JOINED SQUARES
+29CA;AL # TRIANGLE WITH DOT ABOVE
+29CB;AL # TRIANGLE WITH UNDERBAR
+29CC;AL # S IN TRIANGLE
+29CD;AL # TRIANGLE WITH SERIFS AT BOTTOM
+29CE;AL # RIGHT TRIANGLE ABOVE LEFT TRIANGLE
+29CF;AL # LEFT TRIANGLE BESIDE VERTICAL BAR
+29D0;AL # VERTICAL BAR BESIDE RIGHT TRIANGLE
+29D1;AL # BOWTIE WITH LEFT HALF BLACK
+29D2;AL # BOWTIE WITH RIGHT HALF BLACK
+29D3;AL # BLACK BOWTIE
+29D4;AL # TIMES WITH LEFT HALF BLACK
+29D5;AL # TIMES WITH RIGHT HALF BLACK
+29D6;AL # WHITE HOURGLASS
+29D7;AL # BLACK HOURGLASS
+29D8;OP # LEFT WIGGLY FENCE
+29D9;CL # RIGHT WIGGLY FENCE
+29DA;OP # LEFT DOUBLE WIGGLY FENCE
+29DB;CL # RIGHT DOUBLE WIGGLY FENCE
+29DC;AL # INCOMPLETE INFINITY
+29DD;AL # TIE OVER INFINITY
+29DE;AL # INFINITY NEGATED WITH VERTICAL BAR
+29DF;AL # DOUBLE-ENDED MULTIMAP
+29E0;AL # SQUARE WITH CONTOURED OUTLINE
+29E1;AL # INCREASES AS
+29E2;AL # SHUFFLE PRODUCT
+29E3;AL # EQUALS SIGN AND SLANTED PARALLEL
+29E4;AL # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
+29E5;AL # IDENTICAL TO AND SLANTED PARALLEL
+29E6;AL # GLEICH STARK
+29E7;AL # THERMODYNAMIC
+29E8;AL # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
+29E9;AL # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
+29EA;AL # BLACK DIAMOND WITH DOWN ARROW
+29EB;AL # BLACK LOZENGE
+29EC;AL # WHITE CIRCLE WITH DOWN ARROW
+29ED;AL # BLACK CIRCLE WITH DOWN ARROW
+29EE;AL # ERROR-BARRED WHITE SQUARE
+29EF;AL # ERROR-BARRED BLACK SQUARE
+29F0;AL # ERROR-BARRED WHITE DIAMOND
+29F1;AL # ERROR-BARRED BLACK DIAMOND
+29F2;AL # ERROR-BARRED WHITE CIRCLE
+29F3;AL # ERROR-BARRED BLACK CIRCLE
+29F4;AL # RULE-DELAYED
+29F5;AL # REVERSE SOLIDUS OPERATOR
+29F6;AL # SOLIDUS WITH OVERBAR
+29F7;AL # REVERSE SOLIDUS WITH HORIZONTAL STROKE
+29F8;AL # BIG SOLIDUS
+29F9;AL # BIG REVERSE SOLIDUS
+29FA;AL # DOUBLE PLUS
+29FB;AL # TRIPLE PLUS
+29FC;OP # LEFT-POINTING CURVED ANGLE BRACKET
+29FD;CL # RIGHT-POINTING CURVED ANGLE BRACKET
+29FE;AL # TINY
+29FF;AL # MINY
+2A00;AL # N-ARY CIRCLED DOT OPERATOR
+2A01;AL # N-ARY CIRCLED PLUS OPERATOR
+2A02;AL # N-ARY CIRCLED TIMES OPERATOR
+2A03;AL # N-ARY UNION OPERATOR WITH DOT
+2A04;AL # N-ARY UNION OPERATOR WITH PLUS
+2A05;AL # N-ARY SQUARE INTERSECTION OPERATOR
+2A06;AL # N-ARY SQUARE UNION OPERATOR
+2A07;AL # TWO LOGICAL AND OPERATOR
+2A08;AL # TWO LOGICAL OR OPERATOR
+2A09;AL # N-ARY TIMES OPERATOR
+2A0A;AL # MODULO TWO SUM
+2A0B;AL # SUMMATION WITH INTEGRAL
+2A0C;AL # QUADRUPLE INTEGRAL OPERATOR
+2A0D;AL # FINITE PART INTEGRAL
+2A0E;AL # INTEGRAL WITH DOUBLE STROKE
+2A0F;AL # INTEGRAL AVERAGE WITH SLASH
+2A10;AL # CIRCULATION FUNCTION
+2A11;AL # ANTICLOCKWISE INTEGRATION
+2A12;AL # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
+2A13;AL # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
+2A14;AL # LINE INTEGRATION NOT INCLUDING THE POLE
+2A15;AL # INTEGRAL AROUND A POINT OPERATOR
+2A16;AL # QUATERNION INTEGRAL OPERATOR
+2A17;AL # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
+2A18;AL # INTEGRAL WITH TIMES SIGN
+2A19;AL # INTEGRAL WITH INTERSECTION
+2A1A;AL # INTEGRAL WITH UNION
+2A1B;AL # INTEGRAL WITH OVERBAR
+2A1C;AL # INTEGRAL WITH UNDERBAR
+2A1D;AL # JOIN
+2A1E;AL # LARGE LEFT TRIANGLE OPERATOR
+2A1F;AL # Z NOTATION SCHEMA COMPOSITION
+2A20;AL # Z NOTATION SCHEMA PIPING
+2A21;AL # Z NOTATION SCHEMA PROJECTION
+2A22;AL # PLUS SIGN WITH SMALL CIRCLE ABOVE
+2A23;AL # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
+2A24;AL # PLUS SIGN WITH TILDE ABOVE
+2A25;AL # PLUS SIGN WITH DOT BELOW
+2A26;AL # PLUS SIGN WITH TILDE BELOW
+2A27;AL # PLUS SIGN WITH SUBSCRIPT TWO
+2A28;AL # PLUS SIGN WITH BLACK TRIANGLE
+2A29;AL # MINUS SIGN WITH COMMA ABOVE
+2A2A;AL # MINUS SIGN WITH DOT BELOW
+2A2B;AL # MINUS SIGN WITH FALLING DOTS
+2A2C;AL # MINUS SIGN WITH RISING DOTS
+2A2D;AL # PLUS SIGN IN LEFT HALF CIRCLE
+2A2E;AL # PLUS SIGN IN RIGHT HALF CIRCLE
+2A2F;AL # VECTOR OR CROSS PRODUCT
+2A30;AL # MULTIPLICATION SIGN WITH DOT ABOVE
+2A31;AL # MULTIPLICATION SIGN WITH UNDERBAR
+2A32;AL # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
+2A33;AL # SMASH PRODUCT
+2A34;AL # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
+2A35;AL # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
+2A36;AL # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
+2A37;AL # MULTIPLICATION SIGN IN DOUBLE CIRCLE
+2A38;AL # CIRCLED DIVISION SIGN
+2A39;AL # PLUS SIGN IN TRIANGLE
+2A3A;AL # MINUS SIGN IN TRIANGLE
+2A3B;AL # MULTIPLICATION SIGN IN TRIANGLE
+2A3C;AL # INTERIOR PRODUCT
+2A3D;AL # RIGHTHAND INTERIOR PRODUCT
+2A3E;AL # Z NOTATION RELATIONAL COMPOSITION
+2A3F;AL # AMALGAMATION OR COPRODUCT
+2A40;AL # INTERSECTION WITH DOT
+2A41;AL # UNION WITH MINUS SIGN
+2A42;AL # UNION WITH OVERBAR
+2A43;AL # INTERSECTION WITH OVERBAR
+2A44;AL # INTERSECTION WITH LOGICAL AND
+2A45;AL # UNION WITH LOGICAL OR
+2A46;AL # UNION ABOVE INTERSECTION
+2A47;AL # INTERSECTION ABOVE UNION
+2A48;AL # UNION ABOVE BAR ABOVE INTERSECTION
+2A49;AL # INTERSECTION ABOVE BAR ABOVE UNION
+2A4A;AL # UNION BESIDE AND JOINED WITH UNION
+2A4B;AL # INTERSECTION BESIDE AND JOINED WITH INTERSECTION
+2A4C;AL # CLOSED UNION WITH SERIFS
+2A4D;AL # CLOSED INTERSECTION WITH SERIFS
+2A4E;AL # DOUBLE SQUARE INTERSECTION
+2A4F;AL # DOUBLE SQUARE UNION
+2A50;AL # CLOSED UNION WITH SERIFS AND SMASH PRODUCT
+2A51;AL # LOGICAL AND WITH DOT ABOVE
+2A52;AL # LOGICAL OR WITH DOT ABOVE
+2A53;AL # DOUBLE LOGICAL AND
+2A54;AL # DOUBLE LOGICAL OR
+2A55;AL # TWO INTERSECTING LOGICAL AND
+2A56;AL # TWO INTERSECTING LOGICAL OR
+2A57;AL # SLOPING LARGE OR
+2A58;AL # SLOPING LARGE AND
+2A59;AL # LOGICAL OR OVERLAPPING LOGICAL AND
+2A5A;AL # LOGICAL AND WITH MIDDLE STEM
+2A5B;AL # LOGICAL OR WITH MIDDLE STEM
+2A5C;AL # LOGICAL AND WITH HORIZONTAL DASH
+2A5D;AL # LOGICAL OR WITH HORIZONTAL DASH
+2A5E;AL # LOGICAL AND WITH DOUBLE OVERBAR
+2A5F;AL # LOGICAL AND WITH UNDERBAR
+2A60;AL # LOGICAL AND WITH DOUBLE UNDERBAR
+2A61;AL # SMALL VEE WITH UNDERBAR
+2A62;AL # LOGICAL OR WITH DOUBLE OVERBAR
+2A63;AL # LOGICAL OR WITH DOUBLE UNDERBAR
+2A64;AL # Z NOTATION DOMAIN ANTIRESTRICTION
+2A65;AL # Z NOTATION RANGE ANTIRESTRICTION
+2A66;AL # EQUALS SIGN WITH DOT BELOW
+2A67;AL # IDENTICAL WITH DOT ABOVE
+2A68;AL # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
+2A69;AL # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
+2A6A;AL # TILDE OPERATOR WITH DOT ABOVE
+2A6B;AL # TILDE OPERATOR WITH RISING DOTS
+2A6C;AL # SIMILAR MINUS SIMILAR
+2A6D;AL # CONGRUENT WITH DOT ABOVE
+2A6E;AL # EQUALS WITH ASTERISK
+2A6F;AL # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
+2A70;AL # APPROXIMATELY EQUAL OR EQUAL TO
+2A71;AL # EQUALS SIGN ABOVE PLUS SIGN
+2A72;AL # PLUS SIGN ABOVE EQUALS SIGN
+2A73;AL # EQUALS SIGN ABOVE TILDE OPERATOR
+2A74;AL # DOUBLE COLON EQUAL
+2A75;AL # TWO CONSECUTIVE EQUALS SIGNS
+2A76;AL # THREE CONSECUTIVE EQUALS SIGNS
+2A77;AL # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
+2A78;AL # EQUIVALENT WITH FOUR DOTS ABOVE
+2A79;AL # LESS-THAN WITH CIRCLE INSIDE
+2A7A;AL # GREATER-THAN WITH CIRCLE INSIDE
+2A7B;AL # LESS-THAN WITH QUESTION MARK ABOVE
+2A7C;AL # GREATER-THAN WITH QUESTION MARK ABOVE
+2A7D;AL # LESS-THAN OR SLANTED EQUAL TO
+2A7E;AL # GREATER-THAN OR SLANTED EQUAL TO
+2A7F;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A80;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A81;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A82;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A83;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
+2A84;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
+2A85;AL # LESS-THAN OR APPROXIMATE
+2A86;AL # GREATER-THAN OR APPROXIMATE
+2A87;AL # LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+2A88;AL # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+2A89;AL # LESS-THAN AND NOT APPROXIMATE
+2A8A;AL # GREATER-THAN AND NOT APPROXIMATE
+2A8B;AL # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+2A8C;AL # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+2A8D;AL # LESS-THAN ABOVE SIMILAR OR EQUAL
+2A8E;AL # GREATER-THAN ABOVE SIMILAR OR EQUAL
+2A8F;AL # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
+2A90;AL # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
+2A91;AL # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
+2A92;AL # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
+2A93;AL # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
+2A94;AL # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
+2A95;AL # SLANTED EQUAL TO OR LESS-THAN
+2A96;AL # SLANTED EQUAL TO OR GREATER-THAN
+2A97;AL # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
+2A98;AL # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
+2A99;AL # DOUBLE-LINE EQUAL TO OR LESS-THAN
+2A9A;AL # DOUBLE-LINE EQUAL TO OR GREATER-THAN
+2A9B;AL # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
+2A9C;AL # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
+2A9D;AL # SIMILAR OR LESS-THAN
+2A9E;AL # SIMILAR OR GREATER-THAN
+2A9F;AL # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
+2AA0;AL # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
+2AA1;AL # DOUBLE NESTED LESS-THAN
+2AA2;AL # DOUBLE NESTED GREATER-THAN
+2AA3;AL # DOUBLE NESTED LESS-THAN WITH UNDERBAR
+2AA4;AL # GREATER-THAN OVERLAPPING LESS-THAN
+2AA5;AL # GREATER-THAN BESIDE LESS-THAN
+2AA6;AL # LESS-THAN CLOSED BY CURVE
+2AA7;AL # GREATER-THAN CLOSED BY CURVE
+2AA8;AL # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AA9;AL # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AAA;AL # SMALLER THAN
+2AAB;AL # LARGER THAN
+2AAC;AL # SMALLER THAN OR EQUAL TO
+2AAD;AL # LARGER THAN OR EQUAL TO
+2AAE;AL # EQUALS SIGN WITH BUMPY ABOVE
+2AAF;AL # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+2AB0;AL # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+2AB1;AL # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
+2AB2;AL # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+2AB3;AL # PRECEDES ABOVE EQUALS SIGN
+2AB4;AL # SUCCEEDS ABOVE EQUALS SIGN
+2AB5;AL # PRECEDES ABOVE NOT EQUAL TO
+2AB6;AL # SUCCEEDS ABOVE NOT EQUAL TO
+2AB7;AL # PRECEDES ABOVE ALMOST EQUAL TO
+2AB8;AL # SUCCEEDS ABOVE ALMOST EQUAL TO
+2AB9;AL # PRECEDES ABOVE NOT ALMOST EQUAL TO
+2ABA;AL # SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+2ABB;AL # DOUBLE PRECEDES
+2ABC;AL # DOUBLE SUCCEEDS
+2ABD;AL # SUBSET WITH DOT
+2ABE;AL # SUPERSET WITH DOT
+2ABF;AL # SUBSET WITH PLUS SIGN BELOW
+2AC0;AL # SUPERSET WITH PLUS SIGN BELOW
+2AC1;AL # SUBSET WITH MULTIPLICATION SIGN BELOW
+2AC2;AL # SUPERSET WITH MULTIPLICATION SIGN BELOW
+2AC3;AL # SUBSET OF OR EQUAL TO WITH DOT ABOVE
+2AC4;AL # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+2AC5;AL # SUBSET OF ABOVE EQUALS SIGN
+2AC6;AL # SUPERSET OF ABOVE EQUALS SIGN
+2AC7;AL # SUBSET OF ABOVE TILDE OPERATOR
+2AC8;AL # SUPERSET OF ABOVE TILDE OPERATOR
+2AC9;AL # SUBSET OF ABOVE ALMOST EQUAL TO
+2ACA;AL # SUPERSET OF ABOVE ALMOST EQUAL TO
+2ACB;AL # SUBSET OF ABOVE NOT EQUAL TO
+2ACC;AL # SUPERSET OF ABOVE NOT EQUAL TO
+2ACD;AL # SQUARE LEFT OPEN BOX OPERATOR
+2ACE;AL # SQUARE RIGHT OPEN BOX OPERATOR
+2ACF;AL # CLOSED SUBSET
+2AD0;AL # CLOSED SUPERSET
+2AD1;AL # CLOSED SUBSET OR EQUAL TO
+2AD2;AL # CLOSED SUPERSET OR EQUAL TO
+2AD3;AL # SUBSET ABOVE SUPERSET
+2AD4;AL # SUPERSET ABOVE SUBSET
+2AD5;AL # SUBSET ABOVE SUBSET
+2AD6;AL # SUPERSET ABOVE SUPERSET
+2AD7;AL # SUPERSET BESIDE SUBSET
+2AD8;AL # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
+2AD9;AL # ELEMENT OF OPENING DOWNWARDS
+2ADA;AL # PITCHFORK WITH TEE TOP
+2ADB;AL # TRANSVERSAL INTERSECTION
+2ADC;AL # FORKING
+2ADD;AL # NONFORKING
+2ADE;AL # SHORT LEFT TACK
+2ADF;AL # SHORT DOWN TACK
+2AE0;AL # SHORT UP TACK
+2AE1;AL # PERPENDICULAR WITH S
+2AE2;AL # VERTICAL BAR TRIPLE RIGHT TURNSTILE
+2AE3;AL # DOUBLE VERTICAL BAR LEFT TURNSTILE
+2AE4;AL # VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE5;AL # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE6;AL # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
+2AE7;AL # SHORT DOWN TACK WITH OVERBAR
+2AE8;AL # SHORT UP TACK WITH UNDERBAR
+2AE9;AL # SHORT UP TACK ABOVE SHORT DOWN TACK
+2AEA;AL # DOUBLE DOWN TACK
+2AEB;AL # DOUBLE UP TACK
+2AEC;AL # DOUBLE STROKE NOT SIGN
+2AED;AL # REVERSED DOUBLE STROKE NOT SIGN
+2AEE;AL # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
+2AEF;AL # VERTICAL LINE WITH CIRCLE ABOVE
+2AF0;AL # VERTICAL LINE WITH CIRCLE BELOW
+2AF1;AL # DOWN TACK WITH CIRCLE BELOW
+2AF2;AL # PARALLEL WITH HORIZONTAL STROKE
+2AF3;AL # PARALLEL WITH TILDE OPERATOR
+2AF4;AL # TRIPLE VERTICAL BAR BINARY RELATION
+2AF5;AL # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
+2AF6;AL # TRIPLE COLON OPERATOR
+2AF7;AL # TRIPLE NESTED LESS-THAN
+2AF8;AL # TRIPLE NESTED GREATER-THAN
+2AF9;AL # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
+2AFA;AL # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
+2AFB;AL # TRIPLE SOLIDUS BINARY RELATION
+2AFC;AL # LARGE TRIPLE VERTICAL BAR OPERATOR
+2AFD;AL # DOUBLE SOLIDUS OPERATOR
+2AFE;AL # WHITE VERTICAL BAR
+2AFF;AL # N-ARY WHITE VERTICAL BAR
+2E80;ID # CJK RADICAL REPEAT
+2E81;ID # CJK RADICAL CLIFF
+2E82;ID # CJK RADICAL SECOND ONE
+2E83;ID # CJK RADICAL SECOND TWO
+2E84;ID # CJK RADICAL SECOND THREE
+2E85;ID # CJK RADICAL PERSON
+2E86;ID # CJK RADICAL BOX
+2E87;ID # CJK RADICAL TABLE
+2E88;ID # CJK RADICAL KNIFE ONE
+2E89;ID # CJK RADICAL KNIFE TWO
+2E8A;ID # CJK RADICAL DIVINATION
+2E8B;ID # CJK RADICAL SEAL
+2E8C;ID # CJK RADICAL SMALL ONE
+2E8D;ID # CJK RADICAL SMALL TWO
+2E8E;ID # CJK RADICAL LAME ONE
+2E8F;ID # CJK RADICAL LAME TWO
+2E90;ID # CJK RADICAL LAME THREE
+2E91;ID # CJK RADICAL LAME FOUR
+2E92;ID # CJK RADICAL SNAKE
+2E93;ID # CJK RADICAL THREAD
+2E94;ID # CJK RADICAL SNOUT ONE
+2E95;ID # CJK RADICAL SNOUT TWO
+2E96;ID # CJK RADICAL HEART ONE
+2E97;ID # CJK RADICAL HEART TWO
+2E98;ID # CJK RADICAL HAND
+2E99;ID # CJK RADICAL RAP
+2E9B;ID # CJK RADICAL CHOKE
+2E9C;ID # CJK RADICAL SUN
+2E9D;ID # CJK RADICAL MOON
+2E9E;ID # CJK RADICAL DEATH
+2E9F;ID # CJK RADICAL MOTHER
+2EA0;ID # CJK RADICAL CIVILIAN
+2EA1;ID # CJK RADICAL WATER ONE
+2EA2;ID # CJK RADICAL WATER TWO
+2EA3;ID # CJK RADICAL FIRE
+2EA4;ID # CJK RADICAL PAW ONE
+2EA5;ID # CJK RADICAL PAW TWO
+2EA6;ID # CJK RADICAL SIMPLIFIED HALF TREE TRUNK
+2EA7;ID # CJK RADICAL COW
+2EA8;ID # CJK RADICAL DOG
+2EA9;ID # CJK RADICAL JADE
+2EAA;ID # CJK RADICAL BOLT OF CLOTH
+2EAB;ID # CJK RADICAL EYE
+2EAC;ID # CJK RADICAL SPIRIT ONE
+2EAD;ID # CJK RADICAL SPIRIT TWO
+2EAE;ID # CJK RADICAL BAMBOO
+2EAF;ID # CJK RADICAL SILK
+2EB0;ID # CJK RADICAL C-SIMPLIFIED SILK
+2EB1;ID # CJK RADICAL NET ONE
+2EB2;ID # CJK RADICAL NET TWO
+2EB3;ID # CJK RADICAL NET THREE
+2EB4;ID # CJK RADICAL NET FOUR
+2EB5;ID # CJK RADICAL MESH
+2EB6;ID # CJK RADICAL SHEEP
+2EB7;ID # CJK RADICAL RAM
+2EB8;ID # CJK RADICAL EWE
+2EB9;ID # CJK RADICAL OLD
+2EBA;ID # CJK RADICAL BRUSH ONE
+2EBB;ID # CJK RADICAL BRUSH TWO
+2EBC;ID # CJK RADICAL MEAT
+2EBD;ID # CJK RADICAL MORTAR
+2EBE;ID # CJK RADICAL GRASS ONE
+2EBF;ID # CJK RADICAL GRASS TWO
+2EC0;ID # CJK RADICAL GRASS THREE
+2EC1;ID # CJK RADICAL TIGER
+2EC2;ID # CJK RADICAL CLOTHES
+2EC3;ID # CJK RADICAL WEST ONE
+2EC4;ID # CJK RADICAL WEST TWO
+2EC5;ID # CJK RADICAL C-SIMPLIFIED SEE
+2EC6;ID # CJK RADICAL SIMPLIFIED HORN
+2EC7;ID # CJK RADICAL HORN
+2EC8;ID # CJK RADICAL C-SIMPLIFIED SPEECH
+2EC9;ID # CJK RADICAL C-SIMPLIFIED SHELL
+2ECA;ID # CJK RADICAL FOOT
+2ECB;ID # CJK RADICAL C-SIMPLIFIED CART
+2ECC;ID # CJK RADICAL SIMPLIFIED WALK
+2ECD;ID # CJK RADICAL WALK ONE
+2ECE;ID # CJK RADICAL WALK TWO
+2ECF;ID # CJK RADICAL CITY
+2ED0;ID # CJK RADICAL C-SIMPLIFIED GOLD
+2ED1;ID # CJK RADICAL LONG ONE
+2ED2;ID # CJK RADICAL LONG TWO
+2ED3;ID # CJK RADICAL C-SIMPLIFIED LONG
+2ED4;ID # CJK RADICAL C-SIMPLIFIED GATE
+2ED5;ID # CJK RADICAL MOUND ONE
+2ED6;ID # CJK RADICAL MOUND TWO
+2ED7;ID # CJK RADICAL RAIN
+2ED8;ID # CJK RADICAL BLUE
+2ED9;ID # CJK RADICAL C-SIMPLIFIED TANNED LEATHER
+2EDA;ID # CJK RADICAL C-SIMPLIFIED LEAF
+2EDB;ID # CJK RADICAL C-SIMPLIFIED WIND
+2EDC;ID # CJK RADICAL C-SIMPLIFIED FLY
+2EDD;ID # CJK RADICAL EAT ONE
+2EDE;ID # CJK RADICAL EAT TWO
+2EDF;ID # CJK RADICAL EAT THREE
+2EE0;ID # CJK RADICAL C-SIMPLIFIED EAT
+2EE1;ID # CJK RADICAL HEAD
+2EE2;ID # CJK RADICAL C-SIMPLIFIED HORSE
+2EE3;ID # CJK RADICAL BONE
+2EE4;ID # CJK RADICAL GHOST
+2EE5;ID # CJK RADICAL C-SIMPLIFIED FISH
+2EE6;ID # CJK RADICAL C-SIMPLIFIED BIRD
+2EE7;ID # CJK RADICAL C-SIMPLIFIED SALT
+2EE8;ID # CJK RADICAL SIMPLIFIED WHEAT
+2EE9;ID # CJK RADICAL SIMPLIFIED YELLOW
+2EEA;ID # CJK RADICAL C-SIMPLIFIED FROG
+2EEB;ID # CJK RADICAL J-SIMPLIFIED EVEN
+2EEC;ID # CJK RADICAL C-SIMPLIFIED EVEN
+2EED;ID # CJK RADICAL J-SIMPLIFIED TOOTH
+2EEE;ID # CJK RADICAL C-SIMPLIFIED TOOTH
+2EEF;ID # CJK RADICAL J-SIMPLIFIED DRAGON
+2EF0;ID # CJK RADICAL C-SIMPLIFIED DRAGON
+2EF1;ID # CJK RADICAL TURTLE
+2EF2;ID # CJK RADICAL J-SIMPLIFIED TURTLE
+2EF3;ID # CJK RADICAL C-SIMPLIFIED TURTLE
+2F00;ID # KANGXI RADICAL ONE
+2F01;ID # KANGXI RADICAL LINE
+2F02;ID # KANGXI RADICAL DOT
+2F03;ID # KANGXI RADICAL SLASH
+2F04;ID # KANGXI RADICAL SECOND
+2F05;ID # KANGXI RADICAL HOOK
+2F06;ID # KANGXI RADICAL TWO
+2F07;ID # KANGXI RADICAL LID
+2F08;ID # KANGXI RADICAL MAN
+2F09;ID # KANGXI RADICAL LEGS
+2F0A;ID # KANGXI RADICAL ENTER
+2F0B;ID # KANGXI RADICAL EIGHT
+2F0C;ID # KANGXI RADICAL DOWN BOX
+2F0D;ID # KANGXI RADICAL COVER
+2F0E;ID # KANGXI RADICAL ICE
+2F0F;ID # KANGXI RADICAL TABLE
+2F10;ID # KANGXI RADICAL OPEN BOX
+2F11;ID # KANGXI RADICAL KNIFE
+2F12;ID # KANGXI RADICAL POWER
+2F13;ID # KANGXI RADICAL WRAP
+2F14;ID # KANGXI RADICAL SPOON
+2F15;ID # KANGXI RADICAL RIGHT OPEN BOX
+2F16;ID # KANGXI RADICAL HIDING ENCLOSURE
+2F17;ID # KANGXI RADICAL TEN
+2F18;ID # KANGXI RADICAL DIVINATION
+2F19;ID # KANGXI RADICAL SEAL
+2F1A;ID # KANGXI RADICAL CLIFF
+2F1B;ID # KANGXI RADICAL PRIVATE
+2F1C;ID # KANGXI RADICAL AGAIN
+2F1D;ID # KANGXI RADICAL MOUTH
+2F1E;ID # KANGXI RADICAL ENCLOSURE
+2F1F;ID # KANGXI RADICAL EARTH
+2F20;ID # KANGXI RADICAL SCHOLAR
+2F21;ID # KANGXI RADICAL GO
+2F22;ID # KANGXI RADICAL GO SLOWLY
+2F23;ID # KANGXI RADICAL EVENING
+2F24;ID # KANGXI RADICAL BIG
+2F25;ID # KANGXI RADICAL WOMAN
+2F26;ID # KANGXI RADICAL CHILD
+2F27;ID # KANGXI RADICAL ROOF
+2F28;ID # KANGXI RADICAL INCH
+2F29;ID # KANGXI RADICAL SMALL
+2F2A;ID # KANGXI RADICAL LAME
+2F2B;ID # KANGXI RADICAL CORPSE
+2F2C;ID # KANGXI RADICAL SPROUT
+2F2D;ID # KANGXI RADICAL MOUNTAIN
+2F2E;ID # KANGXI RADICAL RIVER
+2F2F;ID # KANGXI RADICAL WORK
+2F30;ID # KANGXI RADICAL ONESELF
+2F31;ID # KANGXI RADICAL TURBAN
+2F32;ID # KANGXI RADICAL DRY
+2F33;ID # KANGXI RADICAL SHORT THREAD
+2F34;ID # KANGXI RADICAL DOTTED CLIFF
+2F35;ID # KANGXI RADICAL LONG STRIDE
+2F36;ID # KANGXI RADICAL TWO HANDS
+2F37;ID # KANGXI RADICAL SHOOT
+2F38;ID # KANGXI RADICAL BOW
+2F39;ID # KANGXI RADICAL SNOUT
+2F3A;ID # KANGXI RADICAL BRISTLE
+2F3B;ID # KANGXI RADICAL STEP
+2F3C;ID # KANGXI RADICAL HEART
+2F3D;ID # KANGXI RADICAL HALBERD
+2F3E;ID # KANGXI RADICAL DOOR
+2F3F;ID # KANGXI RADICAL HAND
+2F40;ID # KANGXI RADICAL BRANCH
+2F41;ID # KANGXI RADICAL RAP
+2F42;ID # KANGXI RADICAL SCRIPT
+2F43;ID # KANGXI RADICAL DIPPER
+2F44;ID # KANGXI RADICAL AXE
+2F45;ID # KANGXI RADICAL SQUARE
+2F46;ID # KANGXI RADICAL NOT
+2F47;ID # KANGXI RADICAL SUN
+2F48;ID # KANGXI RADICAL SAY
+2F49;ID # KANGXI RADICAL MOON
+2F4A;ID # KANGXI RADICAL TREE
+2F4B;ID # KANGXI RADICAL LACK
+2F4C;ID # KANGXI RADICAL STOP
+2F4D;ID # KANGXI RADICAL DEATH
+2F4E;ID # KANGXI RADICAL WEAPON
+2F4F;ID # KANGXI RADICAL DO NOT
+2F50;ID # KANGXI RADICAL COMPARE
+2F51;ID # KANGXI RADICAL FUR
+2F52;ID # KANGXI RADICAL CLAN
+2F53;ID # KANGXI RADICAL STEAM
+2F54;ID # KANGXI RADICAL WATER
+2F55;ID # KANGXI RADICAL FIRE
+2F56;ID # KANGXI RADICAL CLAW
+2F57;ID # KANGXI RADICAL FATHER
+2F58;ID # KANGXI RADICAL DOUBLE X
+2F59;ID # KANGXI RADICAL HALF TREE TRUNK
+2F5A;ID # KANGXI RADICAL SLICE
+2F5B;ID # KANGXI RADICAL FANG
+2F5C;ID # KANGXI RADICAL COW
+2F5D;ID # KANGXI RADICAL DOG
+2F5E;ID # KANGXI RADICAL PROFOUND
+2F5F;ID # KANGXI RADICAL JADE
+2F60;ID # KANGXI RADICAL MELON
+2F61;ID # KANGXI RADICAL TILE
+2F62;ID # KANGXI RADICAL SWEET
+2F63;ID # KANGXI RADICAL LIFE
+2F64;ID # KANGXI RADICAL USE
+2F65;ID # KANGXI RADICAL FIELD
+2F66;ID # KANGXI RADICAL BOLT OF CLOTH
+2F67;ID # KANGXI RADICAL SICKNESS
+2F68;ID # KANGXI RADICAL DOTTED TENT
+2F69;ID # KANGXI RADICAL WHITE
+2F6A;ID # KANGXI RADICAL SKIN
+2F6B;ID # KANGXI RADICAL DISH
+2F6C;ID # KANGXI RADICAL EYE
+2F6D;ID # KANGXI RADICAL SPEAR
+2F6E;ID # KANGXI RADICAL ARROW
+2F6F;ID # KANGXI RADICAL STONE
+2F70;ID # KANGXI RADICAL SPIRIT
+2F71;ID # KANGXI RADICAL TRACK
+2F72;ID # KANGXI RADICAL GRAIN
+2F73;ID # KANGXI RADICAL CAVE
+2F74;ID # KANGXI RADICAL STAND
+2F75;ID # KANGXI RADICAL BAMBOO
+2F76;ID # KANGXI RADICAL RICE
+2F77;ID # KANGXI RADICAL SILK
+2F78;ID # KANGXI RADICAL JAR
+2F79;ID # KANGXI RADICAL NET
+2F7A;ID # KANGXI RADICAL SHEEP
+2F7B;ID # KANGXI RADICAL FEATHER
+2F7C;ID # KANGXI RADICAL OLD
+2F7D;ID # KANGXI RADICAL AND
+2F7E;ID # KANGXI RADICAL PLOW
+2F7F;ID # KANGXI RADICAL EAR
+2F80;ID # KANGXI RADICAL BRUSH
+2F81;ID # KANGXI RADICAL MEAT
+2F82;ID # KANGXI RADICAL MINISTER
+2F83;ID # KANGXI RADICAL SELF
+2F84;ID # KANGXI RADICAL ARRIVE
+2F85;ID # KANGXI RADICAL MORTAR
+2F86;ID # KANGXI RADICAL TONGUE
+2F87;ID # KANGXI RADICAL OPPOSE
+2F88;ID # KANGXI RADICAL BOAT
+2F89;ID # KANGXI RADICAL STOPPING
+2F8A;ID # KANGXI RADICAL COLOR
+2F8B;ID # KANGXI RADICAL GRASS
+2F8C;ID # KANGXI RADICAL TIGER
+2F8D;ID # KANGXI RADICAL INSECT
+2F8E;ID # KANGXI RADICAL BLOOD
+2F8F;ID # KANGXI RADICAL WALK ENCLOSURE
+2F90;ID # KANGXI RADICAL CLOTHES
+2F91;ID # KANGXI RADICAL WEST
+2F92;ID # KANGXI RADICAL SEE
+2F93;ID # KANGXI RADICAL HORN
+2F94;ID # KANGXI RADICAL SPEECH
+2F95;ID # KANGXI RADICAL VALLEY
+2F96;ID # KANGXI RADICAL BEAN
+2F97;ID # KANGXI RADICAL PIG
+2F98;ID # KANGXI RADICAL BADGER
+2F99;ID # KANGXI RADICAL SHELL
+2F9A;ID # KANGXI RADICAL RED
+2F9B;ID # KANGXI RADICAL RUN
+2F9C;ID # KANGXI RADICAL FOOT
+2F9D;ID # KANGXI RADICAL BODY
+2F9E;ID # KANGXI RADICAL CART
+2F9F;ID # KANGXI RADICAL BITTER
+2FA0;ID # KANGXI RADICAL MORNING
+2FA1;ID # KANGXI RADICAL WALK
+2FA2;ID # KANGXI RADICAL CITY
+2FA3;ID # KANGXI RADICAL WINE
+2FA4;ID # KANGXI RADICAL DISTINGUISH
+2FA5;ID # KANGXI RADICAL VILLAGE
+2FA6;ID # KANGXI RADICAL GOLD
+2FA7;ID # KANGXI RADICAL LONG
+2FA8;ID # KANGXI RADICAL GATE
+2FA9;ID # KANGXI RADICAL MOUND
+2FAA;ID # KANGXI RADICAL SLAVE
+2FAB;ID # KANGXI RADICAL SHORT TAILED BIRD
+2FAC;ID # KANGXI RADICAL RAIN
+2FAD;ID # KANGXI RADICAL BLUE
+2FAE;ID # KANGXI RADICAL WRONG
+2FAF;ID # KANGXI RADICAL FACE
+2FB0;ID # KANGXI RADICAL LEATHER
+2FB1;ID # KANGXI RADICAL TANNED LEATHER
+2FB2;ID # KANGXI RADICAL LEEK
+2FB3;ID # KANGXI RADICAL SOUND
+2FB4;ID # KANGXI RADICAL LEAF
+2FB5;ID # KANGXI RADICAL WIND
+2FB6;ID # KANGXI RADICAL FLY
+2FB7;ID # KANGXI RADICAL EAT
+2FB8;ID # KANGXI RADICAL HEAD
+2FB9;ID # KANGXI RADICAL FRAGRANT
+2FBA;ID # KANGXI RADICAL HORSE
+2FBB;ID # KANGXI RADICAL BONE
+2FBC;ID # KANGXI RADICAL TALL
+2FBD;ID # KANGXI RADICAL HAIR
+2FBE;ID # KANGXI RADICAL FIGHT
+2FBF;ID # KANGXI RADICAL SACRIFICIAL WINE
+2FC0;ID # KANGXI RADICAL CAULDRON
+2FC1;ID # KANGXI RADICAL GHOST
+2FC2;ID # KANGXI RADICAL FISH
+2FC3;ID # KANGXI RADICAL BIRD
+2FC4;ID # KANGXI RADICAL SALT
+2FC5;ID # KANGXI RADICAL DEER
+2FC6;ID # KANGXI RADICAL WHEAT
+2FC7;ID # KANGXI RADICAL HEMP
+2FC8;ID # KANGXI RADICAL YELLOW
+2FC9;ID # KANGXI RADICAL MILLET
+2FCA;ID # KANGXI RADICAL BLACK
+2FCB;ID # KANGXI RADICAL EMBROIDERY
+2FCC;ID # KANGXI RADICAL FROG
+2FCD;ID # KANGXI RADICAL TRIPOD
+2FCE;ID # KANGXI RADICAL DRUM
+2FCF;ID # KANGXI RADICAL RAT
+2FD0;ID # KANGXI RADICAL NOSE
+2FD1;ID # KANGXI RADICAL EVEN
+2FD2;ID # KANGXI RADICAL TOOTH
+2FD3;ID # KANGXI RADICAL DRAGON
+2FD4;ID # KANGXI RADICAL TURTLE
+2FD5;ID # KANGXI RADICAL FLUTE
+2FF0;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
+2FF1;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
+2FF2;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
+2FF3;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
+2FF4;ID # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
+2FF5;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+2FF6;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
+2FF7;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
+2FF8;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
+2FF9;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
+2FFA;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
+2FFB;ID # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3000;ID # IDEOGRAPHIC SPACE
+3001;CL # IDEOGRAPHIC COMMA
+3002;CL # IDEOGRAPHIC FULL STOP
+3003;ID # DITTO MARK
+3004;ID # JAPANESE INDUSTRIAL STANDARD SYMBOL
+3005;NS # IDEOGRAPHIC ITERATION MARK
+3006;ID # IDEOGRAPHIC CLOSING MARK
+3007;ID # IDEOGRAPHIC NUMBER ZERO
+3008;OP # LEFT ANGLE BRACKET
+3009;CL # RIGHT ANGLE BRACKET
+300A;OP # LEFT DOUBLE ANGLE BRACKET
+300B;CL # RIGHT DOUBLE ANGLE BRACKET
+300C;OP # LEFT CORNER BRACKET
+300D;CL # RIGHT CORNER BRACKET
+300E;OP # LEFT WHITE CORNER BRACKET
+300F;CL # RIGHT WHITE CORNER BRACKET
+3010;OP # LEFT BLACK LENTICULAR BRACKET
+3011;CL # RIGHT BLACK LENTICULAR BRACKET
+3012;ID # POSTAL MARK
+3013;ID # GETA MARK
+3014;OP # LEFT TORTOISE SHELL BRACKET
+3015;CL # RIGHT TORTOISE SHELL BRACKET
+3016;OP # LEFT WHITE LENTICULAR BRACKET
+3017;CL # RIGHT WHITE LENTICULAR BRACKET
+3018;OP # LEFT WHITE TORTOISE SHELL BRACKET
+3019;CL # RIGHT WHITE TORTOISE SHELL BRACKET
+301A;OP # LEFT WHITE SQUARE BRACKET
+301B;CL # RIGHT WHITE SQUARE BRACKET
+301C;NS # WAVE DASH
+301D;OP # REVERSED DOUBLE PRIME QUOTATION MARK
+301E;CL # DOUBLE PRIME QUOTATION MARK
+301F;CL # LOW DOUBLE PRIME QUOTATION MARK
+3020;ID # POSTAL MARK FACE
+3021;ID # HANGZHOU NUMERAL ONE
+3022;ID # HANGZHOU NUMERAL TWO
+3023;ID # HANGZHOU NUMERAL THREE
+3024;ID # HANGZHOU NUMERAL FOUR
+3025;ID # HANGZHOU NUMERAL FIVE
+3026;ID # HANGZHOU NUMERAL SIX
+3027;ID # HANGZHOU NUMERAL SEVEN
+3028;ID # HANGZHOU NUMERAL EIGHT
+3029;ID # HANGZHOU NUMERAL NINE
+302A;CM # IDEOGRAPHIC LEVEL TONE MARK
+302B;CM # IDEOGRAPHIC RISING TONE MARK
+302C;CM # IDEOGRAPHIC DEPARTING TONE MARK
+302D;CM # IDEOGRAPHIC ENTERING TONE MARK
+302E;CM # HANGUL SINGLE DOT TONE MARK
+302F;CM # HANGUL DOUBLE DOT TONE MARK
+3030;ID # WAVY DASH
+3031;ID # VERTICAL KANA REPEAT MARK
+3032;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK
+3033;ID # VERTICAL KANA REPEAT MARK UPPER HALF
+3034;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
+3035;ID # VERTICAL KANA REPEAT MARK LOWER HALF
+3036;ID # CIRCLED POSTAL MARK
+3037;ID # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+3038;ID # HANGZHOU NUMERAL TEN
+3039;ID # HANGZHOU NUMERAL TWENTY
+303A;ID # HANGZHOU NUMERAL THIRTY
+303B;NS # VERTICAL IDEOGRAPHIC ITERATION MARK
+303C;NS # MASU MARK
+303D;ID # PART ALTERNATION MARK
+303E;ID # IDEOGRAPHIC VARIATION INDICATOR
+303F;ID # IDEOGRAPHIC HALF FILL SPACE
+3041;NS # HIRAGANA LETTER SMALL A
+3042;ID # HIRAGANA LETTER A
+3043;NS # HIRAGANA LETTER SMALL I
+3044;ID # HIRAGANA LETTER I
+3045;NS # HIRAGANA LETTER SMALL U
+3046;ID # HIRAGANA LETTER U
+3047;NS # HIRAGANA LETTER SMALL E
+3048;ID # HIRAGANA LETTER E
+3049;NS # HIRAGANA LETTER SMALL O
+304A;ID # HIRAGANA LETTER O
+304B;ID # HIRAGANA LETTER KA
+304C;ID # HIRAGANA LETTER GA
+304D;ID # HIRAGANA LETTER KI
+304E;ID # HIRAGANA LETTER GI
+304F;ID # HIRAGANA LETTER KU
+3050;ID # HIRAGANA LETTER GU
+3051;ID # HIRAGANA LETTER KE
+3052;ID # HIRAGANA LETTER GE
+3053;ID # HIRAGANA LETTER KO
+3054;ID # HIRAGANA LETTER GO
+3055;ID # HIRAGANA LETTER SA
+3056;ID # HIRAGANA LETTER ZA
+3057;ID # HIRAGANA LETTER SI
+3058;ID # HIRAGANA LETTER ZI
+3059;ID # HIRAGANA LETTER SU
+305A;ID # HIRAGANA LETTER ZU
+305B;ID # HIRAGANA LETTER SE
+305C;ID # HIRAGANA LETTER ZE
+305D;ID # HIRAGANA LETTER SO
+305E;ID # HIRAGANA LETTER ZO
+305F;ID # HIRAGANA LETTER TA
+3060;ID # HIRAGANA LETTER DA
+3061;ID # HIRAGANA LETTER TI
+3062;ID # HIRAGANA LETTER DI
+3063;NS # HIRAGANA LETTER SMALL TU
+3064;ID # HIRAGANA LETTER TU
+3065;ID # HIRAGANA LETTER DU
+3066;ID # HIRAGANA LETTER TE
+3067;ID # HIRAGANA LETTER DE
+3068;ID # HIRAGANA LETTER TO
+3069;ID # HIRAGANA LETTER DO
+306A;ID # HIRAGANA LETTER NA
+306B;ID # HIRAGANA LETTER NI
+306C;ID # HIRAGANA LETTER NU
+306D;ID # HIRAGANA LETTER NE
+306E;ID # HIRAGANA LETTER NO
+306F;ID # HIRAGANA LETTER HA
+3070;ID # HIRAGANA LETTER BA
+3071;ID # HIRAGANA LETTER PA
+3072;ID # HIRAGANA LETTER HI
+3073;ID # HIRAGANA LETTER BI
+3074;ID # HIRAGANA LETTER PI
+3075;ID # HIRAGANA LETTER HU
+3076;ID # HIRAGANA LETTER BU
+3077;ID # HIRAGANA LETTER PU
+3078;ID # HIRAGANA LETTER HE
+3079;ID # HIRAGANA LETTER BE
+307A;ID # HIRAGANA LETTER PE
+307B;ID # HIRAGANA LETTER HO
+307C;ID # HIRAGANA LETTER BO
+307D;ID # HIRAGANA LETTER PO
+307E;ID # HIRAGANA LETTER MA
+307F;ID # HIRAGANA LETTER MI
+3080;ID # HIRAGANA LETTER MU
+3081;ID # HIRAGANA LETTER ME
+3082;ID # HIRAGANA LETTER MO
+3083;NS # HIRAGANA LETTER SMALL YA
+3084;ID # HIRAGANA LETTER YA
+3085;NS # HIRAGANA LETTER SMALL YU
+3086;ID # HIRAGANA LETTER YU
+3087;NS # HIRAGANA LETTER SMALL YO
+3088;ID # HIRAGANA LETTER YO
+3089;ID # HIRAGANA LETTER RA
+308A;ID # HIRAGANA LETTER RI
+308B;ID # HIRAGANA LETTER RU
+308C;ID # HIRAGANA LETTER RE
+308D;ID # HIRAGANA LETTER RO
+308E;NS # HIRAGANA LETTER SMALL WA
+308F;ID # HIRAGANA LETTER WA
+3090;ID # HIRAGANA LETTER WI
+3091;ID # HIRAGANA LETTER WE
+3092;ID # HIRAGANA LETTER WO
+3093;ID # HIRAGANA LETTER N
+3094;ID # HIRAGANA LETTER VU
+3095;NS # HIRAGANA LETTER SMALL KA
+3096;NS # HIRAGANA LETTER SMALL KE
+3099;CM # COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+309A;CM # COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309B;NS # KATAKANA-HIRAGANA VOICED SOUND MARK
+309C;NS # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309D;NS # HIRAGANA ITERATION MARK
+309E;NS # HIRAGANA VOICED ITERATION MARK
+309F;ID # HIRAGANA DIGRAPH YORI
+30A0;NS # KATAKANA-HIRAGANA DOUBLE HYPHEN
+30A1;NS # KATAKANA LETTER SMALL A
+30A2;ID # KATAKANA LETTER A
+30A3;NS # KATAKANA LETTER SMALL I
+30A4;ID # KATAKANA LETTER I
+30A5;NS # KATAKANA LETTER SMALL U
+30A6;ID # KATAKANA LETTER U
+30A7;NS # KATAKANA LETTER SMALL E
+30A8;ID # KATAKANA LETTER E
+30A9;NS # KATAKANA LETTER SMALL O
+30AA;ID # KATAKANA LETTER O
+30AB;ID # KATAKANA LETTER KA
+30AC;ID # KATAKANA LETTER GA
+30AD;ID # KATAKANA LETTER KI
+30AE;ID # KATAKANA LETTER GI
+30AF;ID # KATAKANA LETTER KU
+30B0;ID # KATAKANA LETTER GU
+30B1;ID # KATAKANA LETTER KE
+30B2;ID # KATAKANA LETTER GE
+30B3;ID # KATAKANA LETTER KO
+30B4;ID # KATAKANA LETTER GO
+30B5;ID # KATAKANA LETTER SA
+30B6;ID # KATAKANA LETTER ZA
+30B7;ID # KATAKANA LETTER SI
+30B8;ID # KATAKANA LETTER ZI
+30B9;ID # KATAKANA LETTER SU
+30BA;ID # KATAKANA LETTER ZU
+30BB;ID # KATAKANA LETTER SE
+30BC;ID # KATAKANA LETTER ZE
+30BD;ID # KATAKANA LETTER SO
+30BE;ID # KATAKANA LETTER ZO
+30BF;ID # KATAKANA LETTER TA
+30C0;ID # KATAKANA LETTER DA
+30C1;ID # KATAKANA LETTER TI
+30C2;ID # KATAKANA LETTER DI
+30C3;NS # KATAKANA LETTER SMALL TU
+30C4;ID # KATAKANA LETTER TU
+30C5;ID # KATAKANA LETTER DU
+30C6;ID # KATAKANA LETTER TE
+30C7;ID # KATAKANA LETTER DE
+30C8;ID # KATAKANA LETTER TO
+30C9;ID # KATAKANA LETTER DO
+30CA;ID # KATAKANA LETTER NA
+30CB;ID # KATAKANA LETTER NI
+30CC;ID # KATAKANA LETTER NU
+30CD;ID # KATAKANA LETTER NE
+30CE;ID # KATAKANA LETTER NO
+30CF;ID # KATAKANA LETTER HA
+30D0;ID # KATAKANA LETTER BA
+30D1;ID # KATAKANA LETTER PA
+30D2;ID # KATAKANA LETTER HI
+30D3;ID # KATAKANA LETTER BI
+30D4;ID # KATAKANA LETTER PI
+30D5;ID # KATAKANA LETTER HU
+30D6;ID # KATAKANA LETTER BU
+30D7;ID # KATAKANA LETTER PU
+30D8;ID # KATAKANA LETTER HE
+30D9;ID # KATAKANA LETTER BE
+30DA;ID # KATAKANA LETTER PE
+30DB;ID # KATAKANA LETTER HO
+30DC;ID # KATAKANA LETTER BO
+30DD;ID # KATAKANA LETTER PO
+30DE;ID # KATAKANA LETTER MA
+30DF;ID # KATAKANA LETTER MI
+30E0;ID # KATAKANA LETTER MU
+30E1;ID # KATAKANA LETTER ME
+30E2;ID # KATAKANA LETTER MO
+30E3;NS # KATAKANA LETTER SMALL YA
+30E4;ID # KATAKANA LETTER YA
+30E5;NS # KATAKANA LETTER SMALL YU
+30E6;ID # KATAKANA LETTER YU
+30E7;NS # KATAKANA LETTER SMALL YO
+30E8;ID # KATAKANA LETTER YO
+30E9;ID # KATAKANA LETTER RA
+30EA;ID # KATAKANA LETTER RI
+30EB;ID # KATAKANA LETTER RU
+30EC;ID # KATAKANA LETTER RE
+30ED;ID # KATAKANA LETTER RO
+30EE;NS # KATAKANA LETTER SMALL WA
+30EF;ID # KATAKANA LETTER WA
+30F0;ID # KATAKANA LETTER WI
+30F1;ID # KATAKANA LETTER WE
+30F2;ID # KATAKANA LETTER WO
+30F3;ID # KATAKANA LETTER N
+30F4;ID # KATAKANA LETTER VU
+30F5;NS # KATAKANA LETTER SMALL KA
+30F6;NS # KATAKANA LETTER SMALL KE
+30F7;ID # KATAKANA LETTER VA
+30F8;ID # KATAKANA LETTER VI
+30F9;ID # KATAKANA LETTER VE
+30FA;ID # KATAKANA LETTER VO
+30FB;NS # KATAKANA MIDDLE DOT
+30FC;ID # KATAKANA-HIRAGANA PROLONGED SOUND MARK
+30FD;NS # KATAKANA ITERATION MARK
+30FE;ID # KATAKANA VOICED ITERATION MARK
+30FF;ID # KATAKANA DIGRAPH KOTO
+3105;ID # BOPOMOFO LETTER B
+3106;ID # BOPOMOFO LETTER P
+3107;ID # BOPOMOFO LETTER M
+3108;ID # BOPOMOFO LETTER F
+3109;ID # BOPOMOFO LETTER D
+310A;ID # BOPOMOFO LETTER T
+310B;ID # BOPOMOFO LETTER N
+310C;ID # BOPOMOFO LETTER L
+310D;ID # BOPOMOFO LETTER G
+310E;ID # BOPOMOFO LETTER K
+310F;ID # BOPOMOFO LETTER H
+3110;ID # BOPOMOFO LETTER J
+3111;ID # BOPOMOFO LETTER Q
+3112;ID # BOPOMOFO LETTER X
+3113;ID # BOPOMOFO LETTER ZH
+3114;ID # BOPOMOFO LETTER CH
+3115;ID # BOPOMOFO LETTER SH
+3116;ID # BOPOMOFO LETTER R
+3117;ID # BOPOMOFO LETTER Z
+3118;ID # BOPOMOFO LETTER C
+3119;ID # BOPOMOFO LETTER S
+311A;ID # BOPOMOFO LETTER A
+311B;ID # BOPOMOFO LETTER O
+311C;ID # BOPOMOFO LETTER E
+311D;ID # BOPOMOFO LETTER EH
+311E;ID # BOPOMOFO LETTER AI
+311F;ID # BOPOMOFO LETTER EI
+3120;ID # BOPOMOFO LETTER AU
+3121;ID # BOPOMOFO LETTER OU
+3122;ID # BOPOMOFO LETTER AN
+3123;ID # BOPOMOFO LETTER EN
+3124;ID # BOPOMOFO LETTER ANG
+3125;ID # BOPOMOFO LETTER ENG
+3126;ID # BOPOMOFO LETTER ER
+3127;ID # BOPOMOFO LETTER I
+3128;ID # BOPOMOFO LETTER U
+3129;ID # BOPOMOFO LETTER IU
+312A;ID # BOPOMOFO LETTER V
+312B;ID # BOPOMOFO LETTER NG
+312C;ID # BOPOMOFO LETTER GN
+3131;ID # HANGUL LETTER KIYEOK
+3132;ID # HANGUL LETTER SSANGKIYEOK
+3133;ID # HANGUL LETTER KIYEOK-SIOS
+3134;ID # HANGUL LETTER NIEUN
+3135;ID # HANGUL LETTER NIEUN-CIEUC
+3136;ID # HANGUL LETTER NIEUN-HIEUH
+3137;ID # HANGUL LETTER TIKEUT
+3138;ID # HANGUL LETTER SSANGTIKEUT
+3139;ID # HANGUL LETTER RIEUL
+313A;ID # HANGUL LETTER RIEUL-KIYEOK
+313B;ID # HANGUL LETTER RIEUL-MIEUM
+313C;ID # HANGUL LETTER RIEUL-PIEUP
+313D;ID # HANGUL LETTER RIEUL-SIOS
+313E;ID # HANGUL LETTER RIEUL-THIEUTH
+313F;ID # HANGUL LETTER RIEUL-PHIEUPH
+3140;ID # HANGUL LETTER RIEUL-HIEUH
+3141;ID # HANGUL LETTER MIEUM
+3142;ID # HANGUL LETTER PIEUP
+3143;ID # HANGUL LETTER SSANGPIEUP
+3144;ID # HANGUL LETTER PIEUP-SIOS
+3145;ID # HANGUL LETTER SIOS
+3146;ID # HANGUL LETTER SSANGSIOS
+3147;ID # HANGUL LETTER IEUNG
+3148;ID # HANGUL LETTER CIEUC
+3149;ID # HANGUL LETTER SSANGCIEUC
+314A;ID # HANGUL LETTER CHIEUCH
+314B;ID # HANGUL LETTER KHIEUKH
+314C;ID # HANGUL LETTER THIEUTH
+314D;ID # HANGUL LETTER PHIEUPH
+314E;ID # HANGUL LETTER HIEUH
+314F;ID # HANGUL LETTER A
+3150;ID # HANGUL LETTER AE
+3151;ID # HANGUL LETTER YA
+3152;ID # HANGUL LETTER YAE
+3153;ID # HANGUL LETTER EO
+3154;ID # HANGUL LETTER E
+3155;ID # HANGUL LETTER YEO
+3156;ID # HANGUL LETTER YE
+3157;ID # HANGUL LETTER O
+3158;ID # HANGUL LETTER WA
+3159;ID # HANGUL LETTER WAE
+315A;ID # HANGUL LETTER OE
+315B;ID # HANGUL LETTER YO
+315C;ID # HANGUL LETTER U
+315D;ID # HANGUL LETTER WEO
+315E;ID # HANGUL LETTER WE
+315F;ID # HANGUL LETTER WI
+3160;ID # HANGUL LETTER YU
+3161;ID # HANGUL LETTER EU
+3162;ID # HANGUL LETTER YI
+3163;ID # HANGUL LETTER I
+3164;ID # HANGUL FILLER
+3165;ID # HANGUL LETTER SSANGNIEUN
+3166;ID # HANGUL LETTER NIEUN-TIKEUT
+3167;ID # HANGUL LETTER NIEUN-SIOS
+3168;ID # HANGUL LETTER NIEUN-PANSIOS
+3169;ID # HANGUL LETTER RIEUL-KIYEOK-SIOS
+316A;ID # HANGUL LETTER RIEUL-TIKEUT
+316B;ID # HANGUL LETTER RIEUL-PIEUP-SIOS
+316C;ID # HANGUL LETTER RIEUL-PANSIOS
+316D;ID # HANGUL LETTER RIEUL-YEORINHIEUH
+316E;ID # HANGUL LETTER MIEUM-PIEUP
+316F;ID # HANGUL LETTER MIEUM-SIOS
+3170;ID # HANGUL LETTER MIEUM-PANSIOS
+3171;ID # HANGUL LETTER KAPYEOUNMIEUM
+3172;ID # HANGUL LETTER PIEUP-KIYEOK
+3173;ID # HANGUL LETTER PIEUP-TIKEUT
+3174;ID # HANGUL LETTER PIEUP-SIOS-KIYEOK
+3175;ID # HANGUL LETTER PIEUP-SIOS-TIKEUT
+3176;ID # HANGUL LETTER PIEUP-CIEUC
+3177;ID # HANGUL LETTER PIEUP-THIEUTH
+3178;ID # HANGUL LETTER KAPYEOUNPIEUP
+3179;ID # HANGUL LETTER KAPYEOUNSSANGPIEUP
+317A;ID # HANGUL LETTER SIOS-KIYEOK
+317B;ID # HANGUL LETTER SIOS-NIEUN
+317C;ID # HANGUL LETTER SIOS-TIKEUT
+317D;ID # HANGUL LETTER SIOS-PIEUP
+317E;ID # HANGUL LETTER SIOS-CIEUC
+317F;ID # HANGUL LETTER PANSIOS
+3180;ID # HANGUL LETTER SSANGIEUNG
+3181;ID # HANGUL LETTER YESIEUNG
+3182;ID # HANGUL LETTER YESIEUNG-SIOS
+3183;ID # HANGUL LETTER YESIEUNG-PANSIOS
+3184;ID # HANGUL LETTER KAPYEOUNPHIEUPH
+3185;ID # HANGUL LETTER SSANGHIEUH
+3186;ID # HANGUL LETTER YEORINHIEUH
+3187;ID # HANGUL LETTER YO-YA
+3188;ID # HANGUL LETTER YO-YAE
+3189;ID # HANGUL LETTER YO-I
+318A;ID # HANGUL LETTER YU-YEO
+318B;ID # HANGUL LETTER YU-YE
+318C;ID # HANGUL LETTER YU-I
+318D;ID # HANGUL LETTER ARAEA
+318E;ID # HANGUL LETTER ARAEAE
+3190;ID # IDEOGRAPHIC ANNOTATION LINKING MARK
+3191;ID # IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192;ID # IDEOGRAPHIC ANNOTATION ONE MARK
+3193;ID # IDEOGRAPHIC ANNOTATION TWO MARK
+3194;ID # IDEOGRAPHIC ANNOTATION THREE MARK
+3195;ID # IDEOGRAPHIC ANNOTATION FOUR MARK
+3196;ID # IDEOGRAPHIC ANNOTATION TOP MARK
+3197;ID # IDEOGRAPHIC ANNOTATION MIDDLE MARK
+3198;ID # IDEOGRAPHIC ANNOTATION BOTTOM MARK
+3199;ID # IDEOGRAPHIC ANNOTATION FIRST MARK
+319A;ID # IDEOGRAPHIC ANNOTATION SECOND MARK
+319B;ID # IDEOGRAPHIC ANNOTATION THIRD MARK
+319C;ID # IDEOGRAPHIC ANNOTATION FOURTH MARK
+319D;ID # IDEOGRAPHIC ANNOTATION HEAVEN MARK
+319E;ID # IDEOGRAPHIC ANNOTATION EARTH MARK
+319F;ID # IDEOGRAPHIC ANNOTATION MAN MARK
+31A0;ID # BOPOMOFO LETTER BU
+31A1;ID # BOPOMOFO LETTER ZI
+31A2;ID # BOPOMOFO LETTER JI
+31A3;ID # BOPOMOFO LETTER GU
+31A4;ID # BOPOMOFO LETTER EE
+31A5;ID # BOPOMOFO LETTER ENN
+31A6;ID # BOPOMOFO LETTER OO
+31A7;ID # BOPOMOFO LETTER ONN
+31A8;ID # BOPOMOFO LETTER IR
+31A9;ID # BOPOMOFO LETTER ANN
+31AA;ID # BOPOMOFO LETTER INN
+31AB;ID # BOPOMOFO LETTER UNN
+31AC;ID # BOPOMOFO LETTER IM
+31AD;ID # BOPOMOFO LETTER NGG
+31AE;ID # BOPOMOFO LETTER AINN
+31AF;ID # BOPOMOFO LETTER AUNN
+31B0;ID # BOPOMOFO LETTER AM
+31B1;ID # BOPOMOFO LETTER OM
+31B2;ID # BOPOMOFO LETTER ONG
+31B3;ID # BOPOMOFO LETTER INNN
+31B4;ID # BOPOMOFO FINAL LETTER P
+31B5;ID # BOPOMOFO FINAL LETTER T
+31B6;ID # BOPOMOFO FINAL LETTER K
+31B7;ID # BOPOMOFO FINAL LETTER H
+31F0;NS # KATAKANA LETTER SMALL KU
+31F1;NS # KATAKANA LETTER SMALL SI
+31F2;NS # KATAKANA LETTER SMALL SU
+31F3;NS # KATAKANA LETTER SMALL TO
+31F4;NS # KATAKANA LETTER SMALL NU
+31F5;NS # KATAKANA LETTER SMALL HA
+31F6;NS # KATAKANA LETTER SMALL HI
+31F7;NS # KATAKANA LETTER SMALL HU
+31F8;NS # KATAKANA LETTER SMALL HE
+31F9;NS # KATAKANA LETTER SMALL HO
+31FA;NS # KATAKANA LETTER SMALL MU
+31FB;NS # KATAKANA LETTER SMALL RA
+31FC;NS # KATAKANA LETTER SMALL RI
+31FD;NS # KATAKANA LETTER SMALL RU
+31FE;NS # KATAKANA LETTER SMALL RE
+31FF;NS # KATAKANA LETTER SMALL RO
+3200;ID # PARENTHESIZED HANGUL KIYEOK
+3201;ID # PARENTHESIZED HANGUL NIEUN
+3202;ID # PARENTHESIZED HANGUL TIKEUT
+3203;ID # PARENTHESIZED HANGUL RIEUL
+3204;ID # PARENTHESIZED HANGUL MIEUM
+3205;ID # PARENTHESIZED HANGUL PIEUP
+3206;ID # PARENTHESIZED HANGUL SIOS
+3207;ID # PARENTHESIZED HANGUL IEUNG
+3208;ID # PARENTHESIZED HANGUL CIEUC
+3209;ID # PARENTHESIZED HANGUL CHIEUCH
+320A;ID # PARENTHESIZED HANGUL KHIEUKH
+320B;ID # PARENTHESIZED HANGUL THIEUTH
+320C;ID # PARENTHESIZED HANGUL PHIEUPH
+320D;ID # PARENTHESIZED HANGUL HIEUH
+320E;ID # PARENTHESIZED HANGUL KIYEOK A
+320F;ID # PARENTHESIZED HANGUL NIEUN A
+3210;ID # PARENTHESIZED HANGUL TIKEUT A
+3211;ID # PARENTHESIZED HANGUL RIEUL A
+3212;ID # PARENTHESIZED HANGUL MIEUM A
+3213;ID # PARENTHESIZED HANGUL PIEUP A
+3214;ID # PARENTHESIZED HANGUL SIOS A
+3215;ID # PARENTHESIZED HANGUL IEUNG A
+3216;ID # PARENTHESIZED HANGUL CIEUC A
+3217;ID # PARENTHESIZED HANGUL CHIEUCH A
+3218;ID # PARENTHESIZED HANGUL KHIEUKH A
+3219;ID # PARENTHESIZED HANGUL THIEUTH A
+321A;ID # PARENTHESIZED HANGUL PHIEUPH A
+321B;ID # PARENTHESIZED HANGUL HIEUH A
+321C;ID # PARENTHESIZED HANGUL CIEUC U
+3220;ID # PARENTHESIZED IDEOGRAPH ONE
+3221;ID # PARENTHESIZED IDEOGRAPH TWO
+3222;ID # PARENTHESIZED IDEOGRAPH THREE
+3223;ID # PARENTHESIZED IDEOGRAPH FOUR
+3224;ID # PARENTHESIZED IDEOGRAPH FIVE
+3225;ID # PARENTHESIZED IDEOGRAPH SIX
+3226;ID # PARENTHESIZED IDEOGRAPH SEVEN
+3227;ID # PARENTHESIZED IDEOGRAPH EIGHT
+3228;ID # PARENTHESIZED IDEOGRAPH NINE
+3229;ID # PARENTHESIZED IDEOGRAPH TEN
+322A;ID # PARENTHESIZED IDEOGRAPH MOON
+322B;ID # PARENTHESIZED IDEOGRAPH FIRE
+322C;ID # PARENTHESIZED IDEOGRAPH WATER
+322D;ID # PARENTHESIZED IDEOGRAPH WOOD
+322E;ID # PARENTHESIZED IDEOGRAPH METAL
+322F;ID # PARENTHESIZED IDEOGRAPH EARTH
+3230;ID # PARENTHESIZED IDEOGRAPH SUN
+3231;ID # PARENTHESIZED IDEOGRAPH STOCK
+3232;ID # PARENTHESIZED IDEOGRAPH HAVE
+3233;ID # PARENTHESIZED IDEOGRAPH SOCIETY
+3234;ID # PARENTHESIZED IDEOGRAPH NAME
+3235;ID # PARENTHESIZED IDEOGRAPH SPECIAL
+3236;ID # PARENTHESIZED IDEOGRAPH FINANCIAL
+3237;ID # PARENTHESIZED IDEOGRAPH CONGRATULATION
+3238;ID # PARENTHESIZED IDEOGRAPH LABOR
+3239;ID # PARENTHESIZED IDEOGRAPH REPRESENT
+323A;ID # PARENTHESIZED IDEOGRAPH CALL
+323B;ID # PARENTHESIZED IDEOGRAPH STUDY
+323C;ID # PARENTHESIZED IDEOGRAPH SUPERVISE
+323D;ID # PARENTHESIZED IDEOGRAPH ENTERPRISE
+323E;ID # PARENTHESIZED IDEOGRAPH RESOURCE
+323F;ID # PARENTHESIZED IDEOGRAPH ALLIANCE
+3240;ID # PARENTHESIZED IDEOGRAPH FESTIVAL
+3241;ID # PARENTHESIZED IDEOGRAPH REST
+3242;ID # PARENTHESIZED IDEOGRAPH SELF
+3243;ID # PARENTHESIZED IDEOGRAPH REACH
+3251;ID # CIRCLED NUMBER TWENTY ONE
+3252;ID # CIRCLED NUMBER TWENTY TWO
+3253;ID # CIRCLED NUMBER TWENTY THREE
+3254;ID # CIRCLED NUMBER TWENTY FOUR
+3255;ID # CIRCLED NUMBER TWENTY FIVE
+3256;ID # CIRCLED NUMBER TWENTY SIX
+3257;ID # CIRCLED NUMBER TWENTY SEVEN
+3258;ID # CIRCLED NUMBER TWENTY EIGHT
+3259;ID # CIRCLED NUMBER TWENTY NINE
+325A;ID # CIRCLED NUMBER THIRTY
+325B;ID # CIRCLED NUMBER THIRTY ONE
+325C;ID # CIRCLED NUMBER THIRTY TWO
+325D;ID # CIRCLED NUMBER THIRTY THREE
+325E;ID # CIRCLED NUMBER THIRTY FOUR
+325F;ID # CIRCLED NUMBER THIRTY FIVE
+3260;ID # CIRCLED HANGUL KIYEOK
+3261;ID # CIRCLED HANGUL NIEUN
+3262;ID # CIRCLED HANGUL TIKEUT
+3263;ID # CIRCLED HANGUL RIEUL
+3264;ID # CIRCLED HANGUL MIEUM
+3265;ID # CIRCLED HANGUL PIEUP
+3266;ID # CIRCLED HANGUL SIOS
+3267;ID # CIRCLED HANGUL IEUNG
+3268;ID # CIRCLED HANGUL CIEUC
+3269;ID # CIRCLED HANGUL CHIEUCH
+326A;ID # CIRCLED HANGUL KHIEUKH
+326B;ID # CIRCLED HANGUL THIEUTH
+326C;ID # CIRCLED HANGUL PHIEUPH
+326D;ID # CIRCLED HANGUL HIEUH
+326E;ID # CIRCLED HANGUL KIYEOK A
+326F;ID # CIRCLED HANGUL NIEUN A
+3270;ID # CIRCLED HANGUL TIKEUT A
+3271;ID # CIRCLED HANGUL RIEUL A
+3272;ID # CIRCLED HANGUL MIEUM A
+3273;ID # CIRCLED HANGUL PIEUP A
+3274;ID # CIRCLED HANGUL SIOS A
+3275;ID # CIRCLED HANGUL IEUNG A
+3276;ID # CIRCLED HANGUL CIEUC A
+3277;ID # CIRCLED HANGUL CHIEUCH A
+3278;ID # CIRCLED HANGUL KHIEUKH A
+3279;ID # CIRCLED HANGUL THIEUTH A
+327A;ID # CIRCLED HANGUL PHIEUPH A
+327B;ID # CIRCLED HANGUL HIEUH A
+327F;ID # KOREAN STANDARD SYMBOL
+3280;ID # CIRCLED IDEOGRAPH ONE
+3281;ID # CIRCLED IDEOGRAPH TWO
+3282;ID # CIRCLED IDEOGRAPH THREE
+3283;ID # CIRCLED IDEOGRAPH FOUR
+3284;ID # CIRCLED IDEOGRAPH FIVE
+3285;ID # CIRCLED IDEOGRAPH SIX
+3286;ID # CIRCLED IDEOGRAPH SEVEN
+3287;ID # CIRCLED IDEOGRAPH EIGHT
+3288;ID # CIRCLED IDEOGRAPH NINE
+3289;ID # CIRCLED IDEOGRAPH TEN
+328A;ID # CIRCLED IDEOGRAPH MOON
+328B;ID # CIRCLED IDEOGRAPH FIRE
+328C;ID # CIRCLED IDEOGRAPH WATER
+328D;ID # CIRCLED IDEOGRAPH WOOD
+328E;ID # CIRCLED IDEOGRAPH METAL
+328F;ID # CIRCLED IDEOGRAPH EARTH
+3290;ID # CIRCLED IDEOGRAPH SUN
+3291;ID # CIRCLED IDEOGRAPH STOCK
+3292;ID # CIRCLED IDEOGRAPH HAVE
+3293;ID # CIRCLED IDEOGRAPH SOCIETY
+3294;ID # CIRCLED IDEOGRAPH NAME
+3295;ID # CIRCLED IDEOGRAPH SPECIAL
+3296;ID # CIRCLED IDEOGRAPH FINANCIAL
+3297;ID # CIRCLED IDEOGRAPH CONGRATULATION
+3298;ID # CIRCLED IDEOGRAPH LABOR
+3299;ID # CIRCLED IDEOGRAPH SECRET
+329A;ID # CIRCLED IDEOGRAPH MALE
+329B;ID # CIRCLED IDEOGRAPH FEMALE
+329C;ID # CIRCLED IDEOGRAPH SUITABLE
+329D;ID # CIRCLED IDEOGRAPH EXCELLENT
+329E;ID # CIRCLED IDEOGRAPH PRINT
+329F;ID # CIRCLED IDEOGRAPH ATTENTION
+32A0;ID # CIRCLED IDEOGRAPH ITEM
+32A1;ID # CIRCLED IDEOGRAPH REST
+32A2;ID # CIRCLED IDEOGRAPH COPY
+32A3;ID # CIRCLED IDEOGRAPH CORRECT
+32A4;ID # CIRCLED IDEOGRAPH HIGH
+32A5;ID # CIRCLED IDEOGRAPH CENTRE
+32A6;ID # CIRCLED IDEOGRAPH LOW
+32A7;ID # CIRCLED IDEOGRAPH LEFT
+32A8;ID # CIRCLED IDEOGRAPH RIGHT
+32A9;ID # CIRCLED IDEOGRAPH MEDICINE
+32AA;ID # CIRCLED IDEOGRAPH RELIGION
+32AB;ID # CIRCLED IDEOGRAPH STUDY
+32AC;ID # CIRCLED IDEOGRAPH SUPERVISE
+32AD;ID # CIRCLED IDEOGRAPH ENTERPRISE
+32AE;ID # CIRCLED IDEOGRAPH RESOURCE
+32AF;ID # CIRCLED IDEOGRAPH ALLIANCE
+32B0;ID # CIRCLED IDEOGRAPH NIGHT
+32B1;ID # CIRCLED NUMBER THIRTY SIX
+32B2;ID # CIRCLED NUMBER THIRTY SEVEN
+32B3;ID # CIRCLED NUMBER THIRTY EIGHT
+32B4;ID # CIRCLED NUMBER THIRTY NINE
+32B5;ID # CIRCLED NUMBER FORTY
+32B6;ID # CIRCLED NUMBER FORTY ONE
+32B7;ID # CIRCLED NUMBER FORTY TWO
+32B8;ID # CIRCLED NUMBER FORTY THREE
+32B9;ID # CIRCLED NUMBER FORTY FOUR
+32BA;ID # CIRCLED NUMBER FORTY FIVE
+32BB;ID # CIRCLED NUMBER FORTY SIX
+32BC;ID # CIRCLED NUMBER FORTY SEVEN
+32BD;ID # CIRCLED NUMBER FORTY EIGHT
+32BE;ID # CIRCLED NUMBER FORTY NINE
+32BF;ID # CIRCLED NUMBER FIFTY
+32C0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+32C1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+32C2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+32C3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+32C4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+32C5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+32C6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+32C7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+32C8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+32C9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+32CA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+32CB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+32D0;ID # CIRCLED KATAKANA A
+32D1;ID # CIRCLED KATAKANA I
+32D2;ID # CIRCLED KATAKANA U
+32D3;ID # CIRCLED KATAKANA E
+32D4;ID # CIRCLED KATAKANA O
+32D5;ID # CIRCLED KATAKANA KA
+32D6;ID # CIRCLED KATAKANA KI
+32D7;ID # CIRCLED KATAKANA KU
+32D8;ID # CIRCLED KATAKANA KE
+32D9;ID # CIRCLED KATAKANA KO
+32DA;ID # CIRCLED KATAKANA SA
+32DB;ID # CIRCLED KATAKANA SI
+32DC;ID # CIRCLED KATAKANA SU
+32DD;ID # CIRCLED KATAKANA SE
+32DE;ID # CIRCLED KATAKANA SO
+32DF;ID # CIRCLED KATAKANA TA
+32E0;ID # CIRCLED KATAKANA TI
+32E1;ID # CIRCLED KATAKANA TU
+32E2;ID # CIRCLED KATAKANA TE
+32E3;ID # CIRCLED KATAKANA TO
+32E4;ID # CIRCLED KATAKANA NA
+32E5;ID # CIRCLED KATAKANA NI
+32E6;ID # CIRCLED KATAKANA NU
+32E7;ID # CIRCLED KATAKANA NE
+32E8;ID # CIRCLED KATAKANA NO
+32E9;ID # CIRCLED KATAKANA HA
+32EA;ID # CIRCLED KATAKANA HI
+32EB;ID # CIRCLED KATAKANA HU
+32EC;ID # CIRCLED KATAKANA HE
+32ED;ID # CIRCLED KATAKANA HO
+32EE;ID # CIRCLED KATAKANA MA
+32EF;ID # CIRCLED KATAKANA MI
+32F0;ID # CIRCLED KATAKANA MU
+32F1;ID # CIRCLED KATAKANA ME
+32F2;ID # CIRCLED KATAKANA MO
+32F3;ID # CIRCLED KATAKANA YA
+32F4;ID # CIRCLED KATAKANA YU
+32F5;ID # CIRCLED KATAKANA YO
+32F6;ID # CIRCLED KATAKANA RA
+32F7;ID # CIRCLED KATAKANA RI
+32F8;ID # CIRCLED KATAKANA RU
+32F9;ID # CIRCLED KATAKANA RE
+32FA;ID # CIRCLED KATAKANA RO
+32FB;ID # CIRCLED KATAKANA WA
+32FC;ID # CIRCLED KATAKANA WI
+32FD;ID # CIRCLED KATAKANA WE
+32FE;ID # CIRCLED KATAKANA WO
+3300;ID # SQUARE APAATO
+3301;ID # SQUARE ARUHUA
+3302;ID # SQUARE ANPEA
+3303;ID # SQUARE AARU
+3304;ID # SQUARE ININGU
+3305;ID # SQUARE INTI
+3306;ID # SQUARE UON
+3307;ID # SQUARE ESUKUUDO
+3308;ID # SQUARE EEKAA
+3309;ID # SQUARE ONSU
+330A;ID # SQUARE OOMU
+330B;ID # SQUARE KAIRI
+330C;ID # SQUARE KARATTO
+330D;ID # SQUARE KARORII
+330E;ID # SQUARE GARON
+330F;ID # SQUARE GANMA
+3310;ID # SQUARE GIGA
+3311;ID # SQUARE GINII
+3312;ID # SQUARE KYURII
+3313;ID # SQUARE GIRUDAA
+3314;ID # SQUARE KIRO
+3315;ID # SQUARE KIROGURAMU
+3316;ID # SQUARE KIROMEETORU
+3317;ID # SQUARE KIROWATTO
+3318;ID # SQUARE GURAMU
+3319;ID # SQUARE GURAMUTON
+331A;ID # SQUARE KURUZEIRO
+331B;ID # SQUARE KUROONE
+331C;ID # SQUARE KEESU
+331D;ID # SQUARE KORUNA
+331E;ID # SQUARE KOOPO
+331F;ID # SQUARE SAIKURU
+3320;ID # SQUARE SANTIIMU
+3321;ID # SQUARE SIRINGU
+3322;ID # SQUARE SENTI
+3323;ID # SQUARE SENTO
+3324;ID # SQUARE DAASU
+3325;ID # SQUARE DESI
+3326;ID # SQUARE DORU
+3327;ID # SQUARE TON
+3328;ID # SQUARE NANO
+3329;ID # SQUARE NOTTO
+332A;ID # SQUARE HAITU
+332B;ID # SQUARE PAASENTO
+332C;ID # SQUARE PAATU
+332D;ID # SQUARE BAARERU
+332E;ID # SQUARE PIASUTORU
+332F;ID # SQUARE PIKURU
+3330;ID # SQUARE PIKO
+3331;ID # SQUARE BIRU
+3332;ID # SQUARE HUARADDO
+3333;ID # SQUARE HUIITO
+3334;ID # SQUARE BUSSYERU
+3335;ID # SQUARE HURAN
+3336;ID # SQUARE HEKUTAARU
+3337;ID # SQUARE PESO
+3338;ID # SQUARE PENIHI
+3339;ID # SQUARE HERUTU
+333A;ID # SQUARE PENSU
+333B;ID # SQUARE PEEZI
+333C;ID # SQUARE BEETA
+333D;ID # SQUARE POINTO
+333E;ID # SQUARE BORUTO
+333F;ID # SQUARE HON
+3340;ID # SQUARE PONDO
+3341;ID # SQUARE HOORU
+3342;ID # SQUARE HOON
+3343;ID # SQUARE MAIKURO
+3344;ID # SQUARE MAIRU
+3345;ID # SQUARE MAHHA
+3346;ID # SQUARE MARUKU
+3347;ID # SQUARE MANSYON
+3348;ID # SQUARE MIKURON
+3349;ID # SQUARE MIRI
+334A;ID # SQUARE MIRIBAARU
+334B;ID # SQUARE MEGA
+334C;ID # SQUARE MEGATON
+334D;ID # SQUARE MEETORU
+334E;ID # SQUARE YAADO
+334F;ID # SQUARE YAARU
+3350;ID # SQUARE YUAN
+3351;ID # SQUARE RITTORU
+3352;ID # SQUARE RIRA
+3353;ID # SQUARE RUPII
+3354;ID # SQUARE RUUBURU
+3355;ID # SQUARE REMU
+3356;ID # SQUARE RENTOGEN
+3357;ID # SQUARE WATTO
+3358;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+3359;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+335A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+335B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+335C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+335D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+335E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+335F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+3360;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+3361;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+3362;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+3363;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+3364;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+3365;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+3366;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+3367;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+3368;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+3369;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+336A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+336B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+336C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+336D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+336E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+336F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+3370;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+3371;ID # SQUARE HPA
+3372;ID # SQUARE DA
+3373;ID # SQUARE AU
+3374;ID # SQUARE BAR
+3375;ID # SQUARE OV
+3376;ID # SQUARE PC
+337B;ID # SQUARE ERA NAME HEISEI
+337C;ID # SQUARE ERA NAME SYOUWA
+337D;ID # SQUARE ERA NAME TAISYOU
+337E;ID # SQUARE ERA NAME MEIZI
+337F;ID # SQUARE CORPORATION
+3380;ID # SQUARE PA AMPS
+3381;ID # SQUARE NA
+3382;ID # SQUARE MU A
+3383;ID # SQUARE MA
+3384;ID # SQUARE KA
+3385;ID # SQUARE KB
+3386;ID # SQUARE MB
+3387;ID # SQUARE GB
+3388;ID # SQUARE CAL
+3389;ID # SQUARE KCAL
+338A;ID # SQUARE PF
+338B;ID # SQUARE NF
+338C;ID # SQUARE MU F
+338D;ID # SQUARE MU G
+338E;ID # SQUARE MG
+338F;ID # SQUARE KG
+3390;ID # SQUARE HZ
+3391;ID # SQUARE KHZ
+3392;ID # SQUARE MHZ
+3393;ID # SQUARE GHZ
+3394;ID # SQUARE THZ
+3395;ID # SQUARE MU L
+3396;ID # SQUARE ML
+3397;ID # SQUARE DL
+3398;ID # SQUARE KL
+3399;ID # SQUARE FM
+339A;ID # SQUARE NM
+339B;ID # SQUARE MU M
+339C;ID # SQUARE MM
+339D;ID # SQUARE CM
+339E;ID # SQUARE KM
+339F;ID # SQUARE MM SQUARED
+33A0;ID # SQUARE CM SQUARED
+33A1;ID # SQUARE M SQUARED
+33A2;ID # SQUARE KM SQUARED
+33A3;ID # SQUARE MM CUBED
+33A4;ID # SQUARE CM CUBED
+33A5;ID # SQUARE M CUBED
+33A6;ID # SQUARE KM CUBED
+33A7;ID # SQUARE M OVER S
+33A8;ID # SQUARE M OVER S SQUARED
+33A9;ID # SQUARE PA
+33AA;ID # SQUARE KPA
+33AB;ID # SQUARE MPA
+33AC;ID # SQUARE GPA
+33AD;ID # SQUARE RAD
+33AE;ID # SQUARE RAD OVER S
+33AF;ID # SQUARE RAD OVER S SQUARED
+33B0;ID # SQUARE PS
+33B1;ID # SQUARE NS
+33B2;ID # SQUARE MU S
+33B3;ID # SQUARE MS
+33B4;ID # SQUARE PV
+33B5;ID # SQUARE NV
+33B6;ID # SQUARE MU V
+33B7;ID # SQUARE MV
+33B8;ID # SQUARE KV
+33B9;ID # SQUARE MV MEGA
+33BA;ID # SQUARE PW
+33BB;ID # SQUARE NW
+33BC;ID # SQUARE MU W
+33BD;ID # SQUARE MW
+33BE;ID # SQUARE KW
+33BF;ID # SQUARE MW MEGA
+33C0;ID # SQUARE K OHM
+33C1;ID # SQUARE M OHM
+33C2;ID # SQUARE AM
+33C3;ID # SQUARE BQ
+33C4;ID # SQUARE CC
+33C5;ID # SQUARE CD
+33C6;ID # SQUARE C OVER KG
+33C7;ID # SQUARE CO
+33C8;ID # SQUARE DB
+33C9;ID # SQUARE GY
+33CA;ID # SQUARE HA
+33CB;ID # SQUARE HP
+33CC;ID # SQUARE IN
+33CD;ID # SQUARE KK
+33CE;ID # SQUARE KM CAPITAL
+33CF;ID # SQUARE KT
+33D0;ID # SQUARE LM
+33D1;ID # SQUARE LN
+33D2;ID # SQUARE LOG
+33D3;ID # SQUARE LX
+33D4;ID # SQUARE MB SMALL
+33D5;ID # SQUARE MIL
+33D6;ID # SQUARE MOL
+33D7;ID # SQUARE PH
+33D8;ID # SQUARE PM
+33D9;ID # SQUARE PPM
+33DA;ID # SQUARE PR
+33DB;ID # SQUARE SR
+33DC;ID # SQUARE SV
+33DD;ID # SQUARE WB
+33E0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+33E1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+33E2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+33E3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+33E4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+33E5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+33E6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+33E7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+33E8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+33E9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+33EA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+33EB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+33EC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+33ED;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+33EE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+33EF;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+33F0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+33F1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+33F2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+33F3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+33F4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+33F5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+33F6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+33F7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+33F8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33FD;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+3400..4DB5;ID # <CJK Ideograph Extension A, First>..<CJK Ideograph Extension A, Last>
+4E00..9FA5;ID # <CJK Ideograph, First>..<CJK Ideograph, Last>
+A000;ID # YI SYLLABLE IT
+A001;ID # YI SYLLABLE IX
+A002;ID # YI SYLLABLE I
+A003;ID # YI SYLLABLE IP
+A004;ID # YI SYLLABLE IET
+A005;ID # YI SYLLABLE IEX
+A006;ID # YI SYLLABLE IE
+A007;ID # YI SYLLABLE IEP
+A008;ID # YI SYLLABLE AT
+A009;ID # YI SYLLABLE AX
+A00A;ID # YI SYLLABLE A
+A00B;ID # YI SYLLABLE AP
+A00C;ID # YI SYLLABLE UOX
+A00D;ID # YI SYLLABLE UO
+A00E;ID # YI SYLLABLE UOP
+A00F;ID # YI SYLLABLE OT
+A010;ID # YI SYLLABLE OX
+A011;ID # YI SYLLABLE O
+A012;ID # YI SYLLABLE OP
+A013;ID # YI SYLLABLE EX
+A014;ID # YI SYLLABLE E
+A015;ID # YI SYLLABLE WU
+A016;ID # YI SYLLABLE BIT
+A017;ID # YI SYLLABLE BIX
+A018;ID # YI SYLLABLE BI
+A019;ID # YI SYLLABLE BIP
+A01A;ID # YI SYLLABLE BIET
+A01B;ID # YI SYLLABLE BIEX
+A01C;ID # YI SYLLABLE BIE
+A01D;ID # YI SYLLABLE BIEP
+A01E;ID # YI SYLLABLE BAT
+A01F;ID # YI SYLLABLE BAX
+A020;ID # YI SYLLABLE BA
+A021;ID # YI SYLLABLE BAP
+A022;ID # YI SYLLABLE BUOX
+A023;ID # YI SYLLABLE BUO
+A024;ID # YI SYLLABLE BUOP
+A025;ID # YI SYLLABLE BOT
+A026;ID # YI SYLLABLE BOX
+A027;ID # YI SYLLABLE BO
+A028;ID # YI SYLLABLE BOP
+A029;ID # YI SYLLABLE BEX
+A02A;ID # YI SYLLABLE BE
+A02B;ID # YI SYLLABLE BEP
+A02C;ID # YI SYLLABLE BUT
+A02D;ID # YI SYLLABLE BUX
+A02E;ID # YI SYLLABLE BU
+A02F;ID # YI SYLLABLE BUP
+A030;ID # YI SYLLABLE BURX
+A031;ID # YI SYLLABLE BUR
+A032;ID # YI SYLLABLE BYT
+A033;ID # YI SYLLABLE BYX
+A034;ID # YI SYLLABLE BY
+A035;ID # YI SYLLABLE BYP
+A036;ID # YI SYLLABLE BYRX
+A037;ID # YI SYLLABLE BYR
+A038;ID # YI SYLLABLE PIT
+A039;ID # YI SYLLABLE PIX
+A03A;ID # YI SYLLABLE PI
+A03B;ID # YI SYLLABLE PIP
+A03C;ID # YI SYLLABLE PIEX
+A03D;ID # YI SYLLABLE PIE
+A03E;ID # YI SYLLABLE PIEP
+A03F;ID # YI SYLLABLE PAT
+A040;ID # YI SYLLABLE PAX
+A041;ID # YI SYLLABLE PA
+A042;ID # YI SYLLABLE PAP
+A043;ID # YI SYLLABLE PUOX
+A044;ID # YI SYLLABLE PUO
+A045;ID # YI SYLLABLE PUOP
+A046;ID # YI SYLLABLE POT
+A047;ID # YI SYLLABLE POX
+A048;ID # YI SYLLABLE PO
+A049;ID # YI SYLLABLE POP
+A04A;ID # YI SYLLABLE PUT
+A04B;ID # YI SYLLABLE PUX
+A04C;ID # YI SYLLABLE PU
+A04D;ID # YI SYLLABLE PUP
+A04E;ID # YI SYLLABLE PURX
+A04F;ID # YI SYLLABLE PUR
+A050;ID # YI SYLLABLE PYT
+A051;ID # YI SYLLABLE PYX
+A052;ID # YI SYLLABLE PY
+A053;ID # YI SYLLABLE PYP
+A054;ID # YI SYLLABLE PYRX
+A055;ID # YI SYLLABLE PYR
+A056;ID # YI SYLLABLE BBIT
+A057;ID # YI SYLLABLE BBIX
+A058;ID # YI SYLLABLE BBI
+A059;ID # YI SYLLABLE BBIP
+A05A;ID # YI SYLLABLE BBIET
+A05B;ID # YI SYLLABLE BBIEX
+A05C;ID # YI SYLLABLE BBIE
+A05D;ID # YI SYLLABLE BBIEP
+A05E;ID # YI SYLLABLE BBAT
+A05F;ID # YI SYLLABLE BBAX
+A060;ID # YI SYLLABLE BBA
+A061;ID # YI SYLLABLE BBAP
+A062;ID # YI SYLLABLE BBUOX
+A063;ID # YI SYLLABLE BBUO
+A064;ID # YI SYLLABLE BBUOP
+A065;ID # YI SYLLABLE BBOT
+A066;ID # YI SYLLABLE BBOX
+A067;ID # YI SYLLABLE BBO
+A068;ID # YI SYLLABLE BBOP
+A069;ID # YI SYLLABLE BBEX
+A06A;ID # YI SYLLABLE BBE
+A06B;ID # YI SYLLABLE BBEP
+A06C;ID # YI SYLLABLE BBUT
+A06D;ID # YI SYLLABLE BBUX
+A06E;ID # YI SYLLABLE BBU
+A06F;ID # YI SYLLABLE BBUP
+A070;ID # YI SYLLABLE BBURX
+A071;ID # YI SYLLABLE BBUR
+A072;ID # YI SYLLABLE BBYT
+A073;ID # YI SYLLABLE BBYX
+A074;ID # YI SYLLABLE BBY
+A075;ID # YI SYLLABLE BBYP
+A076;ID # YI SYLLABLE NBIT
+A077;ID # YI SYLLABLE NBIX
+A078;ID # YI SYLLABLE NBI
+A079;ID # YI SYLLABLE NBIP
+A07A;ID # YI SYLLABLE NBIEX
+A07B;ID # YI SYLLABLE NBIE
+A07C;ID # YI SYLLABLE NBIEP
+A07D;ID # YI SYLLABLE NBAT
+A07E;ID # YI SYLLABLE NBAX
+A07F;ID # YI SYLLABLE NBA
+A080;ID # YI SYLLABLE NBAP
+A081;ID # YI SYLLABLE NBOT
+A082;ID # YI SYLLABLE NBOX
+A083;ID # YI SYLLABLE NBO
+A084;ID # YI SYLLABLE NBOP
+A085;ID # YI SYLLABLE NBUT
+A086;ID # YI SYLLABLE NBUX
+A087;ID # YI SYLLABLE NBU
+A088;ID # YI SYLLABLE NBUP
+A089;ID # YI SYLLABLE NBURX
+A08A;ID # YI SYLLABLE NBUR
+A08B;ID # YI SYLLABLE NBYT
+A08C;ID # YI SYLLABLE NBYX
+A08D;ID # YI SYLLABLE NBY
+A08E;ID # YI SYLLABLE NBYP
+A08F;ID # YI SYLLABLE NBYRX
+A090;ID # YI SYLLABLE NBYR
+A091;ID # YI SYLLABLE HMIT
+A092;ID # YI SYLLABLE HMIX
+A093;ID # YI SYLLABLE HMI
+A094;ID # YI SYLLABLE HMIP
+A095;ID # YI SYLLABLE HMIEX
+A096;ID # YI SYLLABLE HMIE
+A097;ID # YI SYLLABLE HMIEP
+A098;ID # YI SYLLABLE HMAT
+A099;ID # YI SYLLABLE HMAX
+A09A;ID # YI SYLLABLE HMA
+A09B;ID # YI SYLLABLE HMAP
+A09C;ID # YI SYLLABLE HMUOX
+A09D;ID # YI SYLLABLE HMUO
+A09E;ID # YI SYLLABLE HMUOP
+A09F;ID # YI SYLLABLE HMOT
+A0A0;ID # YI SYLLABLE HMOX
+A0A1;ID # YI SYLLABLE HMO
+A0A2;ID # YI SYLLABLE HMOP
+A0A3;ID # YI SYLLABLE HMUT
+A0A4;ID # YI SYLLABLE HMUX
+A0A5;ID # YI SYLLABLE HMU
+A0A6;ID # YI SYLLABLE HMUP
+A0A7;ID # YI SYLLABLE HMURX
+A0A8;ID # YI SYLLABLE HMUR
+A0A9;ID # YI SYLLABLE HMYX
+A0AA;ID # YI SYLLABLE HMY
+A0AB;ID # YI SYLLABLE HMYP
+A0AC;ID # YI SYLLABLE HMYRX
+A0AD;ID # YI SYLLABLE HMYR
+A0AE;ID # YI SYLLABLE MIT
+A0AF;ID # YI SYLLABLE MIX
+A0B0;ID # YI SYLLABLE MI
+A0B1;ID # YI SYLLABLE MIP
+A0B2;ID # YI SYLLABLE MIEX
+A0B3;ID # YI SYLLABLE MIE
+A0B4;ID # YI SYLLABLE MIEP
+A0B5;ID # YI SYLLABLE MAT
+A0B6;ID # YI SYLLABLE MAX
+A0B7;ID # YI SYLLABLE MA
+A0B8;ID # YI SYLLABLE MAP
+A0B9;ID # YI SYLLABLE MUOT
+A0BA;ID # YI SYLLABLE MUOX
+A0BB;ID # YI SYLLABLE MUO
+A0BC;ID # YI SYLLABLE MUOP
+A0BD;ID # YI SYLLABLE MOT
+A0BE;ID # YI SYLLABLE MOX
+A0BF;ID # YI SYLLABLE MO
+A0C0;ID # YI SYLLABLE MOP
+A0C1;ID # YI SYLLABLE MEX
+A0C2;ID # YI SYLLABLE ME
+A0C3;ID # YI SYLLABLE MUT
+A0C4;ID # YI SYLLABLE MUX
+A0C5;ID # YI SYLLABLE MU
+A0C6;ID # YI SYLLABLE MUP
+A0C7;ID # YI SYLLABLE MURX
+A0C8;ID # YI SYLLABLE MUR
+A0C9;ID # YI SYLLABLE MYT
+A0CA;ID # YI SYLLABLE MYX
+A0CB;ID # YI SYLLABLE MY
+A0CC;ID # YI SYLLABLE MYP
+A0CD;ID # YI SYLLABLE FIT
+A0CE;ID # YI SYLLABLE FIX
+A0CF;ID # YI SYLLABLE FI
+A0D0;ID # YI SYLLABLE FIP
+A0D1;ID # YI SYLLABLE FAT
+A0D2;ID # YI SYLLABLE FAX
+A0D3;ID # YI SYLLABLE FA
+A0D4;ID # YI SYLLABLE FAP
+A0D5;ID # YI SYLLABLE FOX
+A0D6;ID # YI SYLLABLE FO
+A0D7;ID # YI SYLLABLE FOP
+A0D8;ID # YI SYLLABLE FUT
+A0D9;ID # YI SYLLABLE FUX
+A0DA;ID # YI SYLLABLE FU
+A0DB;ID # YI SYLLABLE FUP
+A0DC;ID # YI SYLLABLE FURX
+A0DD;ID # YI SYLLABLE FUR
+A0DE;ID # YI SYLLABLE FYT
+A0DF;ID # YI SYLLABLE FYX
+A0E0;ID # YI SYLLABLE FY
+A0E1;ID # YI SYLLABLE FYP
+A0E2;ID # YI SYLLABLE VIT
+A0E3;ID # YI SYLLABLE VIX
+A0E4;ID # YI SYLLABLE VI
+A0E5;ID # YI SYLLABLE VIP
+A0E6;ID # YI SYLLABLE VIET
+A0E7;ID # YI SYLLABLE VIEX
+A0E8;ID # YI SYLLABLE VIE
+A0E9;ID # YI SYLLABLE VIEP
+A0EA;ID # YI SYLLABLE VAT
+A0EB;ID # YI SYLLABLE VAX
+A0EC;ID # YI SYLLABLE VA
+A0ED;ID # YI SYLLABLE VAP
+A0EE;ID # YI SYLLABLE VOT
+A0EF;ID # YI SYLLABLE VOX
+A0F0;ID # YI SYLLABLE VO
+A0F1;ID # YI SYLLABLE VOP
+A0F2;ID # YI SYLLABLE VEX
+A0F3;ID # YI SYLLABLE VEP
+A0F4;ID # YI SYLLABLE VUT
+A0F5;ID # YI SYLLABLE VUX
+A0F6;ID # YI SYLLABLE VU
+A0F7;ID # YI SYLLABLE VUP
+A0F8;ID # YI SYLLABLE VURX
+A0F9;ID # YI SYLLABLE VUR
+A0FA;ID # YI SYLLABLE VYT
+A0FB;ID # YI SYLLABLE VYX
+A0FC;ID # YI SYLLABLE VY
+A0FD;ID # YI SYLLABLE VYP
+A0FE;ID # YI SYLLABLE VYRX
+A0FF;ID # YI SYLLABLE VYR
+A100;ID # YI SYLLABLE DIT
+A101;ID # YI SYLLABLE DIX
+A102;ID # YI SYLLABLE DI
+A103;ID # YI SYLLABLE DIP
+A104;ID # YI SYLLABLE DIEX
+A105;ID # YI SYLLABLE DIE
+A106;ID # YI SYLLABLE DIEP
+A107;ID # YI SYLLABLE DAT
+A108;ID # YI SYLLABLE DAX
+A109;ID # YI SYLLABLE DA
+A10A;ID # YI SYLLABLE DAP
+A10B;ID # YI SYLLABLE DUOX
+A10C;ID # YI SYLLABLE DUO
+A10D;ID # YI SYLLABLE DOT
+A10E;ID # YI SYLLABLE DOX
+A10F;ID # YI SYLLABLE DO
+A110;ID # YI SYLLABLE DOP
+A111;ID # YI SYLLABLE DEX
+A112;ID # YI SYLLABLE DE
+A113;ID # YI SYLLABLE DEP
+A114;ID # YI SYLLABLE DUT
+A115;ID # YI SYLLABLE DUX
+A116;ID # YI SYLLABLE DU
+A117;ID # YI SYLLABLE DUP
+A118;ID # YI SYLLABLE DURX
+A119;ID # YI SYLLABLE DUR
+A11A;ID # YI SYLLABLE TIT
+A11B;ID # YI SYLLABLE TIX
+A11C;ID # YI SYLLABLE TI
+A11D;ID # YI SYLLABLE TIP
+A11E;ID # YI SYLLABLE TIEX
+A11F;ID # YI SYLLABLE TIE
+A120;ID # YI SYLLABLE TIEP
+A121;ID # YI SYLLABLE TAT
+A122;ID # YI SYLLABLE TAX
+A123;ID # YI SYLLABLE TA
+A124;ID # YI SYLLABLE TAP
+A125;ID # YI SYLLABLE TUOT
+A126;ID # YI SYLLABLE TUOX
+A127;ID # YI SYLLABLE TUO
+A128;ID # YI SYLLABLE TUOP
+A129;ID # YI SYLLABLE TOT
+A12A;ID # YI SYLLABLE TOX
+A12B;ID # YI SYLLABLE TO
+A12C;ID # YI SYLLABLE TOP
+A12D;ID # YI SYLLABLE TEX
+A12E;ID # YI SYLLABLE TE
+A12F;ID # YI SYLLABLE TEP
+A130;ID # YI SYLLABLE TUT
+A131;ID # YI SYLLABLE TUX
+A132;ID # YI SYLLABLE TU
+A133;ID # YI SYLLABLE TUP
+A134;ID # YI SYLLABLE TURX
+A135;ID # YI SYLLABLE TUR
+A136;ID # YI SYLLABLE DDIT
+A137;ID # YI SYLLABLE DDIX
+A138;ID # YI SYLLABLE DDI
+A139;ID # YI SYLLABLE DDIP
+A13A;ID # YI SYLLABLE DDIEX
+A13B;ID # YI SYLLABLE DDIE
+A13C;ID # YI SYLLABLE DDIEP
+A13D;ID # YI SYLLABLE DDAT
+A13E;ID # YI SYLLABLE DDAX
+A13F;ID # YI SYLLABLE DDA
+A140;ID # YI SYLLABLE DDAP
+A141;ID # YI SYLLABLE DDUOX
+A142;ID # YI SYLLABLE DDUO
+A143;ID # YI SYLLABLE DDUOP
+A144;ID # YI SYLLABLE DDOT
+A145;ID # YI SYLLABLE DDOX
+A146;ID # YI SYLLABLE DDO
+A147;ID # YI SYLLABLE DDOP
+A148;ID # YI SYLLABLE DDEX
+A149;ID # YI SYLLABLE DDE
+A14A;ID # YI SYLLABLE DDEP
+A14B;ID # YI SYLLABLE DDUT
+A14C;ID # YI SYLLABLE DDUX
+A14D;ID # YI SYLLABLE DDU
+A14E;ID # YI SYLLABLE DDUP
+A14F;ID # YI SYLLABLE DDURX
+A150;ID # YI SYLLABLE DDUR
+A151;ID # YI SYLLABLE NDIT
+A152;ID # YI SYLLABLE NDIX
+A153;ID # YI SYLLABLE NDI
+A154;ID # YI SYLLABLE NDIP
+A155;ID # YI SYLLABLE NDIEX
+A156;ID # YI SYLLABLE NDIE
+A157;ID # YI SYLLABLE NDAT
+A158;ID # YI SYLLABLE NDAX
+A159;ID # YI SYLLABLE NDA
+A15A;ID # YI SYLLABLE NDAP
+A15B;ID # YI SYLLABLE NDOT
+A15C;ID # YI SYLLABLE NDOX
+A15D;ID # YI SYLLABLE NDO
+A15E;ID # YI SYLLABLE NDOP
+A15F;ID # YI SYLLABLE NDEX
+A160;ID # YI SYLLABLE NDE
+A161;ID # YI SYLLABLE NDEP
+A162;ID # YI SYLLABLE NDUT
+A163;ID # YI SYLLABLE NDUX
+A164;ID # YI SYLLABLE NDU
+A165;ID # YI SYLLABLE NDUP
+A166;ID # YI SYLLABLE NDURX
+A167;ID # YI SYLLABLE NDUR
+A168;ID # YI SYLLABLE HNIT
+A169;ID # YI SYLLABLE HNIX
+A16A;ID # YI SYLLABLE HNI
+A16B;ID # YI SYLLABLE HNIP
+A16C;ID # YI SYLLABLE HNIET
+A16D;ID # YI SYLLABLE HNIEX
+A16E;ID # YI SYLLABLE HNIE
+A16F;ID # YI SYLLABLE HNIEP
+A170;ID # YI SYLLABLE HNAT
+A171;ID # YI SYLLABLE HNAX
+A172;ID # YI SYLLABLE HNA
+A173;ID # YI SYLLABLE HNAP
+A174;ID # YI SYLLABLE HNUOX
+A175;ID # YI SYLLABLE HNUO
+A176;ID # YI SYLLABLE HNOT
+A177;ID # YI SYLLABLE HNOX
+A178;ID # YI SYLLABLE HNOP
+A179;ID # YI SYLLABLE HNEX
+A17A;ID # YI SYLLABLE HNE
+A17B;ID # YI SYLLABLE HNEP
+A17C;ID # YI SYLLABLE HNUT
+A17D;ID # YI SYLLABLE NIT
+A17E;ID # YI SYLLABLE NIX
+A17F;ID # YI SYLLABLE NI
+A180;ID # YI SYLLABLE NIP
+A181;ID # YI SYLLABLE NIEX
+A182;ID # YI SYLLABLE NIE
+A183;ID # YI SYLLABLE NIEP
+A184;ID # YI SYLLABLE NAX
+A185;ID # YI SYLLABLE NA
+A186;ID # YI SYLLABLE NAP
+A187;ID # YI SYLLABLE NUOX
+A188;ID # YI SYLLABLE NUO
+A189;ID # YI SYLLABLE NUOP
+A18A;ID # YI SYLLABLE NOT
+A18B;ID # YI SYLLABLE NOX
+A18C;ID # YI SYLLABLE NO
+A18D;ID # YI SYLLABLE NOP
+A18E;ID # YI SYLLABLE NEX
+A18F;ID # YI SYLLABLE NE
+A190;ID # YI SYLLABLE NEP
+A191;ID # YI SYLLABLE NUT
+A192;ID # YI SYLLABLE NUX
+A193;ID # YI SYLLABLE NU
+A194;ID # YI SYLLABLE NUP
+A195;ID # YI SYLLABLE NURX
+A196;ID # YI SYLLABLE NUR
+A197;ID # YI SYLLABLE HLIT
+A198;ID # YI SYLLABLE HLIX
+A199;ID # YI SYLLABLE HLI
+A19A;ID # YI SYLLABLE HLIP
+A19B;ID # YI SYLLABLE HLIEX
+A19C;ID # YI SYLLABLE HLIE
+A19D;ID # YI SYLLABLE HLIEP
+A19E;ID # YI SYLLABLE HLAT
+A19F;ID # YI SYLLABLE HLAX
+A1A0;ID # YI SYLLABLE HLA
+A1A1;ID # YI SYLLABLE HLAP
+A1A2;ID # YI SYLLABLE HLUOX
+A1A3;ID # YI SYLLABLE HLUO
+A1A4;ID # YI SYLLABLE HLUOP
+A1A5;ID # YI SYLLABLE HLOX
+A1A6;ID # YI SYLLABLE HLO
+A1A7;ID # YI SYLLABLE HLOP
+A1A8;ID # YI SYLLABLE HLEX
+A1A9;ID # YI SYLLABLE HLE
+A1AA;ID # YI SYLLABLE HLEP
+A1AB;ID # YI SYLLABLE HLUT
+A1AC;ID # YI SYLLABLE HLUX
+A1AD;ID # YI SYLLABLE HLU
+A1AE;ID # YI SYLLABLE HLUP
+A1AF;ID # YI SYLLABLE HLURX
+A1B0;ID # YI SYLLABLE HLUR
+A1B1;ID # YI SYLLABLE HLYT
+A1B2;ID # YI SYLLABLE HLYX
+A1B3;ID # YI SYLLABLE HLY
+A1B4;ID # YI SYLLABLE HLYP
+A1B5;ID # YI SYLLABLE HLYRX
+A1B6;ID # YI SYLLABLE HLYR
+A1B7;ID # YI SYLLABLE LIT
+A1B8;ID # YI SYLLABLE LIX
+A1B9;ID # YI SYLLABLE LI
+A1BA;ID # YI SYLLABLE LIP
+A1BB;ID # YI SYLLABLE LIET
+A1BC;ID # YI SYLLABLE LIEX
+A1BD;ID # YI SYLLABLE LIE
+A1BE;ID # YI SYLLABLE LIEP
+A1BF;ID # YI SYLLABLE LAT
+A1C0;ID # YI SYLLABLE LAX
+A1C1;ID # YI SYLLABLE LA
+A1C2;ID # YI SYLLABLE LAP
+A1C3;ID # YI SYLLABLE LUOT
+A1C4;ID # YI SYLLABLE LUOX
+A1C5;ID # YI SYLLABLE LUO
+A1C6;ID # YI SYLLABLE LUOP
+A1C7;ID # YI SYLLABLE LOT
+A1C8;ID # YI SYLLABLE LOX
+A1C9;ID # YI SYLLABLE LO
+A1CA;ID # YI SYLLABLE LOP
+A1CB;ID # YI SYLLABLE LEX
+A1CC;ID # YI SYLLABLE LE
+A1CD;ID # YI SYLLABLE LEP
+A1CE;ID # YI SYLLABLE LUT
+A1CF;ID # YI SYLLABLE LUX
+A1D0;ID # YI SYLLABLE LU
+A1D1;ID # YI SYLLABLE LUP
+A1D2;ID # YI SYLLABLE LURX
+A1D3;ID # YI SYLLABLE LUR
+A1D4;ID # YI SYLLABLE LYT
+A1D5;ID # YI SYLLABLE LYX
+A1D6;ID # YI SYLLABLE LY
+A1D7;ID # YI SYLLABLE LYP
+A1D8;ID # YI SYLLABLE LYRX
+A1D9;ID # YI SYLLABLE LYR
+A1DA;ID # YI SYLLABLE GIT
+A1DB;ID # YI SYLLABLE GIX
+A1DC;ID # YI SYLLABLE GI
+A1DD;ID # YI SYLLABLE GIP
+A1DE;ID # YI SYLLABLE GIET
+A1DF;ID # YI SYLLABLE GIEX
+A1E0;ID # YI SYLLABLE GIE
+A1E1;ID # YI SYLLABLE GIEP
+A1E2;ID # YI SYLLABLE GAT
+A1E3;ID # YI SYLLABLE GAX
+A1E4;ID # YI SYLLABLE GA
+A1E5;ID # YI SYLLABLE GAP
+A1E6;ID # YI SYLLABLE GUOT
+A1E7;ID # YI SYLLABLE GUOX
+A1E8;ID # YI SYLLABLE GUO
+A1E9;ID # YI SYLLABLE GUOP
+A1EA;ID # YI SYLLABLE GOT
+A1EB;ID # YI SYLLABLE GOX
+A1EC;ID # YI SYLLABLE GO
+A1ED;ID # YI SYLLABLE GOP
+A1EE;ID # YI SYLLABLE GET
+A1EF;ID # YI SYLLABLE GEX
+A1F0;ID # YI SYLLABLE GE
+A1F1;ID # YI SYLLABLE GEP
+A1F2;ID # YI SYLLABLE GUT
+A1F3;ID # YI SYLLABLE GUX
+A1F4;ID # YI SYLLABLE GU
+A1F5;ID # YI SYLLABLE GUP
+A1F6;ID # YI SYLLABLE GURX
+A1F7;ID # YI SYLLABLE GUR
+A1F8;ID # YI SYLLABLE KIT
+A1F9;ID # YI SYLLABLE KIX
+A1FA;ID # YI SYLLABLE KI
+A1FB;ID # YI SYLLABLE KIP
+A1FC;ID # YI SYLLABLE KIEX
+A1FD;ID # YI SYLLABLE KIE
+A1FE;ID # YI SYLLABLE KIEP
+A1FF;ID # YI SYLLABLE KAT
+A200;ID # YI SYLLABLE KAX
+A201;ID # YI SYLLABLE KA
+A202;ID # YI SYLLABLE KAP
+A203;ID # YI SYLLABLE KUOX
+A204;ID # YI SYLLABLE KUO
+A205;ID # YI SYLLABLE KUOP
+A206;ID # YI SYLLABLE KOT
+A207;ID # YI SYLLABLE KOX
+A208;ID # YI SYLLABLE KO
+A209;ID # YI SYLLABLE KOP
+A20A;ID # YI SYLLABLE KET
+A20B;ID # YI SYLLABLE KEX
+A20C;ID # YI SYLLABLE KE
+A20D;ID # YI SYLLABLE KEP
+A20E;ID # YI SYLLABLE KUT
+A20F;ID # YI SYLLABLE KUX
+A210;ID # YI SYLLABLE KU
+A211;ID # YI SYLLABLE KUP
+A212;ID # YI SYLLABLE KURX
+A213;ID # YI SYLLABLE KUR
+A214;ID # YI SYLLABLE GGIT
+A215;ID # YI SYLLABLE GGIX
+A216;ID # YI SYLLABLE GGI
+A217;ID # YI SYLLABLE GGIEX
+A218;ID # YI SYLLABLE GGIE
+A219;ID # YI SYLLABLE GGIEP
+A21A;ID # YI SYLLABLE GGAT
+A21B;ID # YI SYLLABLE GGAX
+A21C;ID # YI SYLLABLE GGA
+A21D;ID # YI SYLLABLE GGAP
+A21E;ID # YI SYLLABLE GGUOT
+A21F;ID # YI SYLLABLE GGUOX
+A220;ID # YI SYLLABLE GGUO
+A221;ID # YI SYLLABLE GGUOP
+A222;ID # YI SYLLABLE GGOT
+A223;ID # YI SYLLABLE GGOX
+A224;ID # YI SYLLABLE GGO
+A225;ID # YI SYLLABLE GGOP
+A226;ID # YI SYLLABLE GGET
+A227;ID # YI SYLLABLE GGEX
+A228;ID # YI SYLLABLE GGE
+A229;ID # YI SYLLABLE GGEP
+A22A;ID # YI SYLLABLE GGUT
+A22B;ID # YI SYLLABLE GGUX
+A22C;ID # YI SYLLABLE GGU
+A22D;ID # YI SYLLABLE GGUP
+A22E;ID # YI SYLLABLE GGURX
+A22F;ID # YI SYLLABLE GGUR
+A230;ID # YI SYLLABLE MGIEX
+A231;ID # YI SYLLABLE MGIE
+A232;ID # YI SYLLABLE MGAT
+A233;ID # YI SYLLABLE MGAX
+A234;ID # YI SYLLABLE MGA
+A235;ID # YI SYLLABLE MGAP
+A236;ID # YI SYLLABLE MGUOX
+A237;ID # YI SYLLABLE MGUO
+A238;ID # YI SYLLABLE MGUOP
+A239;ID # YI SYLLABLE MGOT
+A23A;ID # YI SYLLABLE MGOX
+A23B;ID # YI SYLLABLE MGO
+A23C;ID # YI SYLLABLE MGOP
+A23D;ID # YI SYLLABLE MGEX
+A23E;ID # YI SYLLABLE MGE
+A23F;ID # YI SYLLABLE MGEP
+A240;ID # YI SYLLABLE MGUT
+A241;ID # YI SYLLABLE MGUX
+A242;ID # YI SYLLABLE MGU
+A243;ID # YI SYLLABLE MGUP
+A244;ID # YI SYLLABLE MGURX
+A245;ID # YI SYLLABLE MGUR
+A246;ID # YI SYLLABLE HXIT
+A247;ID # YI SYLLABLE HXIX
+A248;ID # YI SYLLABLE HXI
+A249;ID # YI SYLLABLE HXIP
+A24A;ID # YI SYLLABLE HXIET
+A24B;ID # YI SYLLABLE HXIEX
+A24C;ID # YI SYLLABLE HXIE
+A24D;ID # YI SYLLABLE HXIEP
+A24E;ID # YI SYLLABLE HXAT
+A24F;ID # YI SYLLABLE HXAX
+A250;ID # YI SYLLABLE HXA
+A251;ID # YI SYLLABLE HXAP
+A252;ID # YI SYLLABLE HXUOT
+A253;ID # YI SYLLABLE HXUOX
+A254;ID # YI SYLLABLE HXUO
+A255;ID # YI SYLLABLE HXUOP
+A256;ID # YI SYLLABLE HXOT
+A257;ID # YI SYLLABLE HXOX
+A258;ID # YI SYLLABLE HXO
+A259;ID # YI SYLLABLE HXOP
+A25A;ID # YI SYLLABLE HXEX
+A25B;ID # YI SYLLABLE HXE
+A25C;ID # YI SYLLABLE HXEP
+A25D;ID # YI SYLLABLE NGIEX
+A25E;ID # YI SYLLABLE NGIE
+A25F;ID # YI SYLLABLE NGIEP
+A260;ID # YI SYLLABLE NGAT
+A261;ID # YI SYLLABLE NGAX
+A262;ID # YI SYLLABLE NGA
+A263;ID # YI SYLLABLE NGAP
+A264;ID # YI SYLLABLE NGUOT
+A265;ID # YI SYLLABLE NGUOX
+A266;ID # YI SYLLABLE NGUO
+A267;ID # YI SYLLABLE NGOT
+A268;ID # YI SYLLABLE NGOX
+A269;ID # YI SYLLABLE NGO
+A26A;ID # YI SYLLABLE NGOP
+A26B;ID # YI SYLLABLE NGEX
+A26C;ID # YI SYLLABLE NGE
+A26D;ID # YI SYLLABLE NGEP
+A26E;ID # YI SYLLABLE HIT
+A26F;ID # YI SYLLABLE HIEX
+A270;ID # YI SYLLABLE HIE
+A271;ID # YI SYLLABLE HAT
+A272;ID # YI SYLLABLE HAX
+A273;ID # YI SYLLABLE HA
+A274;ID # YI SYLLABLE HAP
+A275;ID # YI SYLLABLE HUOT
+A276;ID # YI SYLLABLE HUOX
+A277;ID # YI SYLLABLE HUO
+A278;ID # YI SYLLABLE HUOP
+A279;ID # YI SYLLABLE HOT
+A27A;ID # YI SYLLABLE HOX
+A27B;ID # YI SYLLABLE HO
+A27C;ID # YI SYLLABLE HOP
+A27D;ID # YI SYLLABLE HEX
+A27E;ID # YI SYLLABLE HE
+A27F;ID # YI SYLLABLE HEP
+A280;ID # YI SYLLABLE WAT
+A281;ID # YI SYLLABLE WAX
+A282;ID # YI SYLLABLE WA
+A283;ID # YI SYLLABLE WAP
+A284;ID # YI SYLLABLE WUOX
+A285;ID # YI SYLLABLE WUO
+A286;ID # YI SYLLABLE WUOP
+A287;ID # YI SYLLABLE WOX
+A288;ID # YI SYLLABLE WO
+A289;ID # YI SYLLABLE WOP
+A28A;ID # YI SYLLABLE WEX
+A28B;ID # YI SYLLABLE WE
+A28C;ID # YI SYLLABLE WEP
+A28D;ID # YI SYLLABLE ZIT
+A28E;ID # YI SYLLABLE ZIX
+A28F;ID # YI SYLLABLE ZI
+A290;ID # YI SYLLABLE ZIP
+A291;ID # YI SYLLABLE ZIEX
+A292;ID # YI SYLLABLE ZIE
+A293;ID # YI SYLLABLE ZIEP
+A294;ID # YI SYLLABLE ZAT
+A295;ID # YI SYLLABLE ZAX
+A296;ID # YI SYLLABLE ZA
+A297;ID # YI SYLLABLE ZAP
+A298;ID # YI SYLLABLE ZUOX
+A299;ID # YI SYLLABLE ZUO
+A29A;ID # YI SYLLABLE ZUOP
+A29B;ID # YI SYLLABLE ZOT
+A29C;ID # YI SYLLABLE ZOX
+A29D;ID # YI SYLLABLE ZO
+A29E;ID # YI SYLLABLE ZOP
+A29F;ID # YI SYLLABLE ZEX
+A2A0;ID # YI SYLLABLE ZE
+A2A1;ID # YI SYLLABLE ZEP
+A2A2;ID # YI SYLLABLE ZUT
+A2A3;ID # YI SYLLABLE ZUX
+A2A4;ID # YI SYLLABLE ZU
+A2A5;ID # YI SYLLABLE ZUP
+A2A6;ID # YI SYLLABLE ZURX
+A2A7;ID # YI SYLLABLE ZUR
+A2A8;ID # YI SYLLABLE ZYT
+A2A9;ID # YI SYLLABLE ZYX
+A2AA;ID # YI SYLLABLE ZY
+A2AB;ID # YI SYLLABLE ZYP
+A2AC;ID # YI SYLLABLE ZYRX
+A2AD;ID # YI SYLLABLE ZYR
+A2AE;ID # YI SYLLABLE CIT
+A2AF;ID # YI SYLLABLE CIX
+A2B0;ID # YI SYLLABLE CI
+A2B1;ID # YI SYLLABLE CIP
+A2B2;ID # YI SYLLABLE CIET
+A2B3;ID # YI SYLLABLE CIEX
+A2B4;ID # YI SYLLABLE CIE
+A2B5;ID # YI SYLLABLE CIEP
+A2B6;ID # YI SYLLABLE CAT
+A2B7;ID # YI SYLLABLE CAX
+A2B8;ID # YI SYLLABLE CA
+A2B9;ID # YI SYLLABLE CAP
+A2BA;ID # YI SYLLABLE CUOX
+A2BB;ID # YI SYLLABLE CUO
+A2BC;ID # YI SYLLABLE CUOP
+A2BD;ID # YI SYLLABLE COT
+A2BE;ID # YI SYLLABLE COX
+A2BF;ID # YI SYLLABLE CO
+A2C0;ID # YI SYLLABLE COP
+A2C1;ID # YI SYLLABLE CEX
+A2C2;ID # YI SYLLABLE CE
+A2C3;ID # YI SYLLABLE CEP
+A2C4;ID # YI SYLLABLE CUT
+A2C5;ID # YI SYLLABLE CUX
+A2C6;ID # YI SYLLABLE CU
+A2C7;ID # YI SYLLABLE CUP
+A2C8;ID # YI SYLLABLE CURX
+A2C9;ID # YI SYLLABLE CUR
+A2CA;ID # YI SYLLABLE CYT
+A2CB;ID # YI SYLLABLE CYX
+A2CC;ID # YI SYLLABLE CY
+A2CD;ID # YI SYLLABLE CYP
+A2CE;ID # YI SYLLABLE CYRX
+A2CF;ID # YI SYLLABLE CYR
+A2D0;ID # YI SYLLABLE ZZIT
+A2D1;ID # YI SYLLABLE ZZIX
+A2D2;ID # YI SYLLABLE ZZI
+A2D3;ID # YI SYLLABLE ZZIP
+A2D4;ID # YI SYLLABLE ZZIET
+A2D5;ID # YI SYLLABLE ZZIEX
+A2D6;ID # YI SYLLABLE ZZIE
+A2D7;ID # YI SYLLABLE ZZIEP
+A2D8;ID # YI SYLLABLE ZZAT
+A2D9;ID # YI SYLLABLE ZZAX
+A2DA;ID # YI SYLLABLE ZZA
+A2DB;ID # YI SYLLABLE ZZAP
+A2DC;ID # YI SYLLABLE ZZOX
+A2DD;ID # YI SYLLABLE ZZO
+A2DE;ID # YI SYLLABLE ZZOP
+A2DF;ID # YI SYLLABLE ZZEX
+A2E0;ID # YI SYLLABLE ZZE
+A2E1;ID # YI SYLLABLE ZZEP
+A2E2;ID # YI SYLLABLE ZZUX
+A2E3;ID # YI SYLLABLE ZZU
+A2E4;ID # YI SYLLABLE ZZUP
+A2E5;ID # YI SYLLABLE ZZURX
+A2E6;ID # YI SYLLABLE ZZUR
+A2E7;ID # YI SYLLABLE ZZYT
+A2E8;ID # YI SYLLABLE ZZYX
+A2E9;ID # YI SYLLABLE ZZY
+A2EA;ID # YI SYLLABLE ZZYP
+A2EB;ID # YI SYLLABLE ZZYRX
+A2EC;ID # YI SYLLABLE ZZYR
+A2ED;ID # YI SYLLABLE NZIT
+A2EE;ID # YI SYLLABLE NZIX
+A2EF;ID # YI SYLLABLE NZI
+A2F0;ID # YI SYLLABLE NZIP
+A2F1;ID # YI SYLLABLE NZIEX
+A2F2;ID # YI SYLLABLE NZIE
+A2F3;ID # YI SYLLABLE NZIEP
+A2F4;ID # YI SYLLABLE NZAT
+A2F5;ID # YI SYLLABLE NZAX
+A2F6;ID # YI SYLLABLE NZA
+A2F7;ID # YI SYLLABLE NZAP
+A2F8;ID # YI SYLLABLE NZUOX
+A2F9;ID # YI SYLLABLE NZUO
+A2FA;ID # YI SYLLABLE NZOX
+A2FB;ID # YI SYLLABLE NZOP
+A2FC;ID # YI SYLLABLE NZEX
+A2FD;ID # YI SYLLABLE NZE
+A2FE;ID # YI SYLLABLE NZUX
+A2FF;ID # YI SYLLABLE NZU
+A300;ID # YI SYLLABLE NZUP
+A301;ID # YI SYLLABLE NZURX
+A302;ID # YI SYLLABLE NZUR
+A303;ID # YI SYLLABLE NZYT
+A304;ID # YI SYLLABLE NZYX
+A305;ID # YI SYLLABLE NZY
+A306;ID # YI SYLLABLE NZYP
+A307;ID # YI SYLLABLE NZYRX
+A308;ID # YI SYLLABLE NZYR
+A309;ID # YI SYLLABLE SIT
+A30A;ID # YI SYLLABLE SIX
+A30B;ID # YI SYLLABLE SI
+A30C;ID # YI SYLLABLE SIP
+A30D;ID # YI SYLLABLE SIEX
+A30E;ID # YI SYLLABLE SIE
+A30F;ID # YI SYLLABLE SIEP
+A310;ID # YI SYLLABLE SAT
+A311;ID # YI SYLLABLE SAX
+A312;ID # YI SYLLABLE SA
+A313;ID # YI SYLLABLE SAP
+A314;ID # YI SYLLABLE SUOX
+A315;ID # YI SYLLABLE SUO
+A316;ID # YI SYLLABLE SUOP
+A317;ID # YI SYLLABLE SOT
+A318;ID # YI SYLLABLE SOX
+A319;ID # YI SYLLABLE SO
+A31A;ID # YI SYLLABLE SOP
+A31B;ID # YI SYLLABLE SEX
+A31C;ID # YI SYLLABLE SE
+A31D;ID # YI SYLLABLE SEP
+A31E;ID # YI SYLLABLE SUT
+A31F;ID # YI SYLLABLE SUX
+A320;ID # YI SYLLABLE SU
+A321;ID # YI SYLLABLE SUP
+A322;ID # YI SYLLABLE SURX
+A323;ID # YI SYLLABLE SUR
+A324;ID # YI SYLLABLE SYT
+A325;ID # YI SYLLABLE SYX
+A326;ID # YI SYLLABLE SY
+A327;ID # YI SYLLABLE SYP
+A328;ID # YI SYLLABLE SYRX
+A329;ID # YI SYLLABLE SYR
+A32A;ID # YI SYLLABLE SSIT
+A32B;ID # YI SYLLABLE SSIX
+A32C;ID # YI SYLLABLE SSI
+A32D;ID # YI SYLLABLE SSIP
+A32E;ID # YI SYLLABLE SSIEX
+A32F;ID # YI SYLLABLE SSIE
+A330;ID # YI SYLLABLE SSIEP
+A331;ID # YI SYLLABLE SSAT
+A332;ID # YI SYLLABLE SSAX
+A333;ID # YI SYLLABLE SSA
+A334;ID # YI SYLLABLE SSAP
+A335;ID # YI SYLLABLE SSOT
+A336;ID # YI SYLLABLE SSOX
+A337;ID # YI SYLLABLE SSO
+A338;ID # YI SYLLABLE SSOP
+A339;ID # YI SYLLABLE SSEX
+A33A;ID # YI SYLLABLE SSE
+A33B;ID # YI SYLLABLE SSEP
+A33C;ID # YI SYLLABLE SSUT
+A33D;ID # YI SYLLABLE SSUX
+A33E;ID # YI SYLLABLE SSU
+A33F;ID # YI SYLLABLE SSUP
+A340;ID # YI SYLLABLE SSYT
+A341;ID # YI SYLLABLE SSYX
+A342;ID # YI SYLLABLE SSY
+A343;ID # YI SYLLABLE SSYP
+A344;ID # YI SYLLABLE SSYRX
+A345;ID # YI SYLLABLE SSYR
+A346;ID # YI SYLLABLE ZHAT
+A347;ID # YI SYLLABLE ZHAX
+A348;ID # YI SYLLABLE ZHA
+A349;ID # YI SYLLABLE ZHAP
+A34A;ID # YI SYLLABLE ZHUOX
+A34B;ID # YI SYLLABLE ZHUO
+A34C;ID # YI SYLLABLE ZHUOP
+A34D;ID # YI SYLLABLE ZHOT
+A34E;ID # YI SYLLABLE ZHOX
+A34F;ID # YI SYLLABLE ZHO
+A350;ID # YI SYLLABLE ZHOP
+A351;ID # YI SYLLABLE ZHET
+A352;ID # YI SYLLABLE ZHEX
+A353;ID # YI SYLLABLE ZHE
+A354;ID # YI SYLLABLE ZHEP
+A355;ID # YI SYLLABLE ZHUT
+A356;ID # YI SYLLABLE ZHUX
+A357;ID # YI SYLLABLE ZHU
+A358;ID # YI SYLLABLE ZHUP
+A359;ID # YI SYLLABLE ZHURX
+A35A;ID # YI SYLLABLE ZHUR
+A35B;ID # YI SYLLABLE ZHYT
+A35C;ID # YI SYLLABLE ZHYX
+A35D;ID # YI SYLLABLE ZHY
+A35E;ID # YI SYLLABLE ZHYP
+A35F;ID # YI SYLLABLE ZHYRX
+A360;ID # YI SYLLABLE ZHYR
+A361;ID # YI SYLLABLE CHAT
+A362;ID # YI SYLLABLE CHAX
+A363;ID # YI SYLLABLE CHA
+A364;ID # YI SYLLABLE CHAP
+A365;ID # YI SYLLABLE CHUOT
+A366;ID # YI SYLLABLE CHUOX
+A367;ID # YI SYLLABLE CHUO
+A368;ID # YI SYLLABLE CHUOP
+A369;ID # YI SYLLABLE CHOT
+A36A;ID # YI SYLLABLE CHOX
+A36B;ID # YI SYLLABLE CHO
+A36C;ID # YI SYLLABLE CHOP
+A36D;ID # YI SYLLABLE CHET
+A36E;ID # YI SYLLABLE CHEX
+A36F;ID # YI SYLLABLE CHE
+A370;ID # YI SYLLABLE CHEP
+A371;ID # YI SYLLABLE CHUX
+A372;ID # YI SYLLABLE CHU
+A373;ID # YI SYLLABLE CHUP
+A374;ID # YI SYLLABLE CHURX
+A375;ID # YI SYLLABLE CHUR
+A376;ID # YI SYLLABLE CHYT
+A377;ID # YI SYLLABLE CHYX
+A378;ID # YI SYLLABLE CHY
+A379;ID # YI SYLLABLE CHYP
+A37A;ID # YI SYLLABLE CHYRX
+A37B;ID # YI SYLLABLE CHYR
+A37C;ID # YI SYLLABLE RRAX
+A37D;ID # YI SYLLABLE RRA
+A37E;ID # YI SYLLABLE RRUOX
+A37F;ID # YI SYLLABLE RRUO
+A380;ID # YI SYLLABLE RROT
+A381;ID # YI SYLLABLE RROX
+A382;ID # YI SYLLABLE RRO
+A383;ID # YI SYLLABLE RROP
+A384;ID # YI SYLLABLE RRET
+A385;ID # YI SYLLABLE RREX
+A386;ID # YI SYLLABLE RRE
+A387;ID # YI SYLLABLE RREP
+A388;ID # YI SYLLABLE RRUT
+A389;ID # YI SYLLABLE RRUX
+A38A;ID # YI SYLLABLE RRU
+A38B;ID # YI SYLLABLE RRUP
+A38C;ID # YI SYLLABLE RRURX
+A38D;ID # YI SYLLABLE RRUR
+A38E;ID # YI SYLLABLE RRYT
+A38F;ID # YI SYLLABLE RRYX
+A390;ID # YI SYLLABLE RRY
+A391;ID # YI SYLLABLE RRYP
+A392;ID # YI SYLLABLE RRYRX
+A393;ID # YI SYLLABLE RRYR
+A394;ID # YI SYLLABLE NRAT
+A395;ID # YI SYLLABLE NRAX
+A396;ID # YI SYLLABLE NRA
+A397;ID # YI SYLLABLE NRAP
+A398;ID # YI SYLLABLE NROX
+A399;ID # YI SYLLABLE NRO
+A39A;ID # YI SYLLABLE NROP
+A39B;ID # YI SYLLABLE NRET
+A39C;ID # YI SYLLABLE NREX
+A39D;ID # YI SYLLABLE NRE
+A39E;ID # YI SYLLABLE NREP
+A39F;ID # YI SYLLABLE NRUT
+A3A0;ID # YI SYLLABLE NRUX
+A3A1;ID # YI SYLLABLE NRU
+A3A2;ID # YI SYLLABLE NRUP
+A3A3;ID # YI SYLLABLE NRURX
+A3A4;ID # YI SYLLABLE NRUR
+A3A5;ID # YI SYLLABLE NRYT
+A3A6;ID # YI SYLLABLE NRYX
+A3A7;ID # YI SYLLABLE NRY
+A3A8;ID # YI SYLLABLE NRYP
+A3A9;ID # YI SYLLABLE NRYRX
+A3AA;ID # YI SYLLABLE NRYR
+A3AB;ID # YI SYLLABLE SHAT
+A3AC;ID # YI SYLLABLE SHAX
+A3AD;ID # YI SYLLABLE SHA
+A3AE;ID # YI SYLLABLE SHAP
+A3AF;ID # YI SYLLABLE SHUOX
+A3B0;ID # YI SYLLABLE SHUO
+A3B1;ID # YI SYLLABLE SHUOP
+A3B2;ID # YI SYLLABLE SHOT
+A3B3;ID # YI SYLLABLE SHOX
+A3B4;ID # YI SYLLABLE SHO
+A3B5;ID # YI SYLLABLE SHOP
+A3B6;ID # YI SYLLABLE SHET
+A3B7;ID # YI SYLLABLE SHEX
+A3B8;ID # YI SYLLABLE SHE
+A3B9;ID # YI SYLLABLE SHEP
+A3BA;ID # YI SYLLABLE SHUT
+A3BB;ID # YI SYLLABLE SHUX
+A3BC;ID # YI SYLLABLE SHU
+A3BD;ID # YI SYLLABLE SHUP
+A3BE;ID # YI SYLLABLE SHURX
+A3BF;ID # YI SYLLABLE SHUR
+A3C0;ID # YI SYLLABLE SHYT
+A3C1;ID # YI SYLLABLE SHYX
+A3C2;ID # YI SYLLABLE SHY
+A3C3;ID # YI SYLLABLE SHYP
+A3C4;ID # YI SYLLABLE SHYRX
+A3C5;ID # YI SYLLABLE SHYR
+A3C6;ID # YI SYLLABLE RAT
+A3C7;ID # YI SYLLABLE RAX
+A3C8;ID # YI SYLLABLE RA
+A3C9;ID # YI SYLLABLE RAP
+A3CA;ID # YI SYLLABLE RUOX
+A3CB;ID # YI SYLLABLE RUO
+A3CC;ID # YI SYLLABLE RUOP
+A3CD;ID # YI SYLLABLE ROT
+A3CE;ID # YI SYLLABLE ROX
+A3CF;ID # YI SYLLABLE RO
+A3D0;ID # YI SYLLABLE ROP
+A3D1;ID # YI SYLLABLE REX
+A3D2;ID # YI SYLLABLE RE
+A3D3;ID # YI SYLLABLE REP
+A3D4;ID # YI SYLLABLE RUT
+A3D5;ID # YI SYLLABLE RUX
+A3D6;ID # YI SYLLABLE RU
+A3D7;ID # YI SYLLABLE RUP
+A3D8;ID # YI SYLLABLE RURX
+A3D9;ID # YI SYLLABLE RUR
+A3DA;ID # YI SYLLABLE RYT
+A3DB;ID # YI SYLLABLE RYX
+A3DC;ID # YI SYLLABLE RY
+A3DD;ID # YI SYLLABLE RYP
+A3DE;ID # YI SYLLABLE RYRX
+A3DF;ID # YI SYLLABLE RYR
+A3E0;ID # YI SYLLABLE JIT
+A3E1;ID # YI SYLLABLE JIX
+A3E2;ID # YI SYLLABLE JI
+A3E3;ID # YI SYLLABLE JIP
+A3E4;ID # YI SYLLABLE JIET
+A3E5;ID # YI SYLLABLE JIEX
+A3E6;ID # YI SYLLABLE JIE
+A3E7;ID # YI SYLLABLE JIEP
+A3E8;ID # YI SYLLABLE JUOT
+A3E9;ID # YI SYLLABLE JUOX
+A3EA;ID # YI SYLLABLE JUO
+A3EB;ID # YI SYLLABLE JUOP
+A3EC;ID # YI SYLLABLE JOT
+A3ED;ID # YI SYLLABLE JOX
+A3EE;ID # YI SYLLABLE JO
+A3EF;ID # YI SYLLABLE JOP
+A3F0;ID # YI SYLLABLE JUT
+A3F1;ID # YI SYLLABLE JUX
+A3F2;ID # YI SYLLABLE JU
+A3F3;ID # YI SYLLABLE JUP
+A3F4;ID # YI SYLLABLE JURX
+A3F5;ID # YI SYLLABLE JUR
+A3F6;ID # YI SYLLABLE JYT
+A3F7;ID # YI SYLLABLE JYX
+A3F8;ID # YI SYLLABLE JY
+A3F9;ID # YI SYLLABLE JYP
+A3FA;ID # YI SYLLABLE JYRX
+A3FB;ID # YI SYLLABLE JYR
+A3FC;ID # YI SYLLABLE QIT
+A3FD;ID # YI SYLLABLE QIX
+A3FE;ID # YI SYLLABLE QI
+A3FF;ID # YI SYLLABLE QIP
+A400;ID # YI SYLLABLE QIET
+A401;ID # YI SYLLABLE QIEX
+A402;ID # YI SYLLABLE QIE
+A403;ID # YI SYLLABLE QIEP
+A404;ID # YI SYLLABLE QUOT
+A405;ID # YI SYLLABLE QUOX
+A406;ID # YI SYLLABLE QUO
+A407;ID # YI SYLLABLE QUOP
+A408;ID # YI SYLLABLE QOT
+A409;ID # YI SYLLABLE QOX
+A40A;ID # YI SYLLABLE QO
+A40B;ID # YI SYLLABLE QOP
+A40C;ID # YI SYLLABLE QUT
+A40D;ID # YI SYLLABLE QUX
+A40E;ID # YI SYLLABLE QU
+A40F;ID # YI SYLLABLE QUP
+A410;ID # YI SYLLABLE QURX
+A411;ID # YI SYLLABLE QUR
+A412;ID # YI SYLLABLE QYT
+A413;ID # YI SYLLABLE QYX
+A414;ID # YI SYLLABLE QY
+A415;ID # YI SYLLABLE QYP
+A416;ID # YI SYLLABLE QYRX
+A417;ID # YI SYLLABLE QYR
+A418;ID # YI SYLLABLE JJIT
+A419;ID # YI SYLLABLE JJIX
+A41A;ID # YI SYLLABLE JJI
+A41B;ID # YI SYLLABLE JJIP
+A41C;ID # YI SYLLABLE JJIET
+A41D;ID # YI SYLLABLE JJIEX
+A41E;ID # YI SYLLABLE JJIE
+A41F;ID # YI SYLLABLE JJIEP
+A420;ID # YI SYLLABLE JJUOX
+A421;ID # YI SYLLABLE JJUO
+A422;ID # YI SYLLABLE JJUOP
+A423;ID # YI SYLLABLE JJOT
+A424;ID # YI SYLLABLE JJOX
+A425;ID # YI SYLLABLE JJO
+A426;ID # YI SYLLABLE JJOP
+A427;ID # YI SYLLABLE JJUT
+A428;ID # YI SYLLABLE JJUX
+A429;ID # YI SYLLABLE JJU
+A42A;ID # YI SYLLABLE JJUP
+A42B;ID # YI SYLLABLE JJURX
+A42C;ID # YI SYLLABLE JJUR
+A42D;ID # YI SYLLABLE JJYT
+A42E;ID # YI SYLLABLE JJYX
+A42F;ID # YI SYLLABLE JJY
+A430;ID # YI SYLLABLE JJYP
+A431;ID # YI SYLLABLE NJIT
+A432;ID # YI SYLLABLE NJIX
+A433;ID # YI SYLLABLE NJI
+A434;ID # YI SYLLABLE NJIP
+A435;ID # YI SYLLABLE NJIET
+A436;ID # YI SYLLABLE NJIEX
+A437;ID # YI SYLLABLE NJIE
+A438;ID # YI SYLLABLE NJIEP
+A439;ID # YI SYLLABLE NJUOX
+A43A;ID # YI SYLLABLE NJUO
+A43B;ID # YI SYLLABLE NJOT
+A43C;ID # YI SYLLABLE NJOX
+A43D;ID # YI SYLLABLE NJO
+A43E;ID # YI SYLLABLE NJOP
+A43F;ID # YI SYLLABLE NJUX
+A440;ID # YI SYLLABLE NJU
+A441;ID # YI SYLLABLE NJUP
+A442;ID # YI SYLLABLE NJURX
+A443;ID # YI SYLLABLE NJUR
+A444;ID # YI SYLLABLE NJYT
+A445;ID # YI SYLLABLE NJYX
+A446;ID # YI SYLLABLE NJY
+A447;ID # YI SYLLABLE NJYP
+A448;ID # YI SYLLABLE NJYRX
+A449;ID # YI SYLLABLE NJYR
+A44A;ID # YI SYLLABLE NYIT
+A44B;ID # YI SYLLABLE NYIX
+A44C;ID # YI SYLLABLE NYI
+A44D;ID # YI SYLLABLE NYIP
+A44E;ID # YI SYLLABLE NYIET
+A44F;ID # YI SYLLABLE NYIEX
+A450;ID # YI SYLLABLE NYIE
+A451;ID # YI SYLLABLE NYIEP
+A452;ID # YI SYLLABLE NYUOX
+A453;ID # YI SYLLABLE NYUO
+A454;ID # YI SYLLABLE NYUOP
+A455;ID # YI SYLLABLE NYOT
+A456;ID # YI SYLLABLE NYOX
+A457;ID # YI SYLLABLE NYO
+A458;ID # YI SYLLABLE NYOP
+A459;ID # YI SYLLABLE NYUT
+A45A;ID # YI SYLLABLE NYUX
+A45B;ID # YI SYLLABLE NYU
+A45C;ID # YI SYLLABLE NYUP
+A45D;ID # YI SYLLABLE XIT
+A45E;ID # YI SYLLABLE XIX
+A45F;ID # YI SYLLABLE XI
+A460;ID # YI SYLLABLE XIP
+A461;ID # YI SYLLABLE XIET
+A462;ID # YI SYLLABLE XIEX
+A463;ID # YI SYLLABLE XIE
+A464;ID # YI SYLLABLE XIEP
+A465;ID # YI SYLLABLE XUOX
+A466;ID # YI SYLLABLE XUO
+A467;ID # YI SYLLABLE XOT
+A468;ID # YI SYLLABLE XOX
+A469;ID # YI SYLLABLE XO
+A46A;ID # YI SYLLABLE XOP
+A46B;ID # YI SYLLABLE XYT
+A46C;ID # YI SYLLABLE XYX
+A46D;ID # YI SYLLABLE XY
+A46E;ID # YI SYLLABLE XYP
+A46F;ID # YI SYLLABLE XYRX
+A470;ID # YI SYLLABLE XYR
+A471;ID # YI SYLLABLE YIT
+A472;ID # YI SYLLABLE YIX
+A473;ID # YI SYLLABLE YI
+A474;ID # YI SYLLABLE YIP
+A475;ID # YI SYLLABLE YIET
+A476;ID # YI SYLLABLE YIEX
+A477;ID # YI SYLLABLE YIE
+A478;ID # YI SYLLABLE YIEP
+A479;ID # YI SYLLABLE YUOT
+A47A;ID # YI SYLLABLE YUOX
+A47B;ID # YI SYLLABLE YUO
+A47C;ID # YI SYLLABLE YUOP
+A47D;ID # YI SYLLABLE YOT
+A47E;ID # YI SYLLABLE YOX
+A47F;ID # YI SYLLABLE YO
+A480;ID # YI SYLLABLE YOP
+A481;ID # YI SYLLABLE YUT
+A482;ID # YI SYLLABLE YUX
+A483;ID # YI SYLLABLE YU
+A484;ID # YI SYLLABLE YUP
+A485;ID # YI SYLLABLE YURX
+A486;ID # YI SYLLABLE YUR
+A487;ID # YI SYLLABLE YYT
+A488;ID # YI SYLLABLE YYX
+A489;ID # YI SYLLABLE YY
+A48A;ID # YI SYLLABLE YYP
+A48B;ID # YI SYLLABLE YYRX
+A48C;ID # YI SYLLABLE YYR
+A490;ID # YI RADICAL QOT
+A491;ID # YI RADICAL LI
+A492;ID # YI RADICAL KIT
+A493;ID # YI RADICAL NYIP
+A494;ID # YI RADICAL CYP
+A495;ID # YI RADICAL SSI
+A496;ID # YI RADICAL GGOP
+A497;ID # YI RADICAL GEP
+A498;ID # YI RADICAL MI
+A499;ID # YI RADICAL HXIT
+A49A;ID # YI RADICAL LYR
+A49B;ID # YI RADICAL BBUT
+A49C;ID # YI RADICAL MOP
+A49D;ID # YI RADICAL YO
+A49E;ID # YI RADICAL PUT
+A49F;ID # YI RADICAL HXUO
+A4A0;ID # YI RADICAL TAT
+A4A1;ID # YI RADICAL GA
+A4A2;ID # YI RADICAL ZUP
+A4A3;ID # YI RADICAL CYT
+A4A4;ID # YI RADICAL DDUR
+A4A5;ID # YI RADICAL BUR
+A4A6;ID # YI RADICAL GGUO
+A4A7;ID # YI RADICAL NYOP
+A4A8;ID # YI RADICAL TU
+A4A9;ID # YI RADICAL OP
+A4AA;ID # YI RADICAL JJUT
+A4AB;ID # YI RADICAL ZOT
+A4AC;ID # YI RADICAL PYT
+A4AD;ID # YI RADICAL HMO
+A4AE;ID # YI RADICAL YIT
+A4AF;ID # YI RADICAL VUR
+A4B0;ID # YI RADICAL SHY
+A4B1;ID # YI RADICAL VEP
+A4B2;ID # YI RADICAL ZA
+A4B3;ID # YI RADICAL JO
+A4B4;ID # YI RADICAL NZUP
+A4B5;ID # YI RADICAL JJY
+A4B6;ID # YI RADICAL GOT
+A4B7;ID # YI RADICAL JJIE
+A4B8;ID # YI RADICAL WO
+A4B9;ID # YI RADICAL DU
+A4BA;ID # YI RADICAL SHUR
+A4BB;ID # YI RADICAL LIE
+A4BC;ID # YI RADICAL CY
+A4BD;ID # YI RADICAL CUOP
+A4BE;ID # YI RADICAL CIP
+A4BF;ID # YI RADICAL HXOP
+A4C0;ID # YI RADICAL SHAT
+A4C1;ID # YI RADICAL ZUR
+A4C2;ID # YI RADICAL SHOP
+A4C3;ID # YI RADICAL CHE
+A4C4;ID # YI RADICAL ZZIET
+A4C5;ID # YI RADICAL NBIE
+A4C6;ID # YI RADICAL KE
+AC00..D7A3;ID # <Hangul Syllable, First>..<Hangul Syllable, Last>
+D800..DB7F;SG # <Non Private Use High Surrogate, First>..<Non Private Use High Surrogate, Last>
+DB80..DBFF;SG # <Private Use High Surrogate, First>..<Private Use High Surrogate, Last>
+DC00..DFFF;SG # <Low Surrogate, First>..<Low Surrogate, Last>
+E000..F8FF;XX # <Private Use, First>..<Private Use, Last>
+F900;ID # CJK COMPATIBILITY IDEOGRAPH-F900
+F901;ID # CJK COMPATIBILITY IDEOGRAPH-F901
+F902;ID # CJK COMPATIBILITY IDEOGRAPH-F902
+F903;ID # CJK COMPATIBILITY IDEOGRAPH-F903
+F904;ID # CJK COMPATIBILITY IDEOGRAPH-F904
+F905;ID # CJK COMPATIBILITY IDEOGRAPH-F905
+F906;ID # CJK COMPATIBILITY IDEOGRAPH-F906
+F907;ID # CJK COMPATIBILITY IDEOGRAPH-F907
+F908;ID # CJK COMPATIBILITY IDEOGRAPH-F908
+F909;ID # CJK COMPATIBILITY IDEOGRAPH-F909
+F90A;ID # CJK COMPATIBILITY IDEOGRAPH-F90A
+F90B;ID # CJK COMPATIBILITY IDEOGRAPH-F90B
+F90C;ID # CJK COMPATIBILITY IDEOGRAPH-F90C
+F90D;ID # CJK COMPATIBILITY IDEOGRAPH-F90D
+F90E;ID # CJK COMPATIBILITY IDEOGRAPH-F90E
+F90F;ID # CJK COMPATIBILITY IDEOGRAPH-F90F
+F910;ID # CJK COMPATIBILITY IDEOGRAPH-F910
+F911;ID # CJK COMPATIBILITY IDEOGRAPH-F911
+F912;ID # CJK COMPATIBILITY IDEOGRAPH-F912
+F913;ID # CJK COMPATIBILITY IDEOGRAPH-F913
+F914;ID # CJK COMPATIBILITY IDEOGRAPH-F914
+F915;ID # CJK COMPATIBILITY IDEOGRAPH-F915
+F916;ID # CJK COMPATIBILITY IDEOGRAPH-F916
+F917;ID # CJK COMPATIBILITY IDEOGRAPH-F917
+F918;ID # CJK COMPATIBILITY IDEOGRAPH-F918
+F919;ID # CJK COMPATIBILITY IDEOGRAPH-F919
+F91A;ID # CJK COMPATIBILITY IDEOGRAPH-F91A
+F91B;ID # CJK COMPATIBILITY IDEOGRAPH-F91B
+F91C;ID # CJK COMPATIBILITY IDEOGRAPH-F91C
+F91D;ID # CJK COMPATIBILITY IDEOGRAPH-F91D
+F91E;ID # CJK COMPATIBILITY IDEOGRAPH-F91E
+F91F;ID # CJK COMPATIBILITY IDEOGRAPH-F91F
+F920;ID # CJK COMPATIBILITY IDEOGRAPH-F920
+F921;ID # CJK COMPATIBILITY IDEOGRAPH-F921
+F922;ID # CJK COMPATIBILITY IDEOGRAPH-F922
+F923;ID # CJK COMPATIBILITY IDEOGRAPH-F923
+F924;ID # CJK COMPATIBILITY IDEOGRAPH-F924
+F925;ID # CJK COMPATIBILITY IDEOGRAPH-F925
+F926;ID # CJK COMPATIBILITY IDEOGRAPH-F926
+F927;ID # CJK COMPATIBILITY IDEOGRAPH-F927
+F928;ID # CJK COMPATIBILITY IDEOGRAPH-F928
+F929;ID # CJK COMPATIBILITY IDEOGRAPH-F929
+F92A;ID # CJK COMPATIBILITY IDEOGRAPH-F92A
+F92B;ID # CJK COMPATIBILITY IDEOGRAPH-F92B
+F92C;ID # CJK COMPATIBILITY IDEOGRAPH-F92C
+F92D;ID # CJK COMPATIBILITY IDEOGRAPH-F92D
+F92E;ID # CJK COMPATIBILITY IDEOGRAPH-F92E
+F92F;ID # CJK COMPATIBILITY IDEOGRAPH-F92F
+F930;ID # CJK COMPATIBILITY IDEOGRAPH-F930
+F931;ID # CJK COMPATIBILITY IDEOGRAPH-F931
+F932;ID # CJK COMPATIBILITY IDEOGRAPH-F932
+F933;ID # CJK COMPATIBILITY IDEOGRAPH-F933
+F934;ID # CJK COMPATIBILITY IDEOGRAPH-F934
+F935;ID # CJK COMPATIBILITY IDEOGRAPH-F935
+F936;ID # CJK COMPATIBILITY IDEOGRAPH-F936
+F937;ID # CJK COMPATIBILITY IDEOGRAPH-F937
+F938;ID # CJK COMPATIBILITY IDEOGRAPH-F938
+F939;ID # CJK COMPATIBILITY IDEOGRAPH-F939
+F93A;ID # CJK COMPATIBILITY IDEOGRAPH-F93A
+F93B;ID # CJK COMPATIBILITY IDEOGRAPH-F93B
+F93C;ID # CJK COMPATIBILITY IDEOGRAPH-F93C
+F93D;ID # CJK COMPATIBILITY IDEOGRAPH-F93D
+F93E;ID # CJK COMPATIBILITY IDEOGRAPH-F93E
+F93F;ID # CJK COMPATIBILITY IDEOGRAPH-F93F
+F940;ID # CJK COMPATIBILITY IDEOGRAPH-F940
+F941;ID # CJK COMPATIBILITY IDEOGRAPH-F941
+F942;ID # CJK COMPATIBILITY IDEOGRAPH-F942
+F943;ID # CJK COMPATIBILITY IDEOGRAPH-F943
+F944;ID # CJK COMPATIBILITY IDEOGRAPH-F944
+F945;ID # CJK COMPATIBILITY IDEOGRAPH-F945
+F946;ID # CJK COMPATIBILITY IDEOGRAPH-F946
+F947;ID # CJK COMPATIBILITY IDEOGRAPH-F947
+F948;ID # CJK COMPATIBILITY IDEOGRAPH-F948
+F949;ID # CJK COMPATIBILITY IDEOGRAPH-F949
+F94A;ID # CJK COMPATIBILITY IDEOGRAPH-F94A
+F94B;ID # CJK COMPATIBILITY IDEOGRAPH-F94B
+F94C;ID # CJK COMPATIBILITY IDEOGRAPH-F94C
+F94D;ID # CJK COMPATIBILITY IDEOGRAPH-F94D
+F94E;ID # CJK COMPATIBILITY IDEOGRAPH-F94E
+F94F;ID # CJK COMPATIBILITY IDEOGRAPH-F94F
+F950;ID # CJK COMPATIBILITY IDEOGRAPH-F950
+F951;ID # CJK COMPATIBILITY IDEOGRAPH-F951
+F952;ID # CJK COMPATIBILITY IDEOGRAPH-F952
+F953;ID # CJK COMPATIBILITY IDEOGRAPH-F953
+F954;ID # CJK COMPATIBILITY IDEOGRAPH-F954
+F955;ID # CJK COMPATIBILITY IDEOGRAPH-F955
+F956;ID # CJK COMPATIBILITY IDEOGRAPH-F956
+F957;ID # CJK COMPATIBILITY IDEOGRAPH-F957
+F958;ID # CJK COMPATIBILITY IDEOGRAPH-F958
+F959;ID # CJK COMPATIBILITY IDEOGRAPH-F959
+F95A;ID # CJK COMPATIBILITY IDEOGRAPH-F95A
+F95B;ID # CJK COMPATIBILITY IDEOGRAPH-F95B
+F95C;ID # CJK COMPATIBILITY IDEOGRAPH-F95C
+F95D;ID # CJK COMPATIBILITY IDEOGRAPH-F95D
+F95E;ID # CJK COMPATIBILITY IDEOGRAPH-F95E
+F95F;ID # CJK COMPATIBILITY IDEOGRAPH-F95F
+F960;ID # CJK COMPATIBILITY IDEOGRAPH-F960
+F961;ID # CJK COMPATIBILITY IDEOGRAPH-F961
+F962;ID # CJK COMPATIBILITY IDEOGRAPH-F962
+F963;ID # CJK COMPATIBILITY IDEOGRAPH-F963
+F964;ID # CJK COMPATIBILITY IDEOGRAPH-F964
+F965;ID # CJK COMPATIBILITY IDEOGRAPH-F965
+F966;ID # CJK COMPATIBILITY IDEOGRAPH-F966
+F967;ID # CJK COMPATIBILITY IDEOGRAPH-F967
+F968;ID # CJK COMPATIBILITY IDEOGRAPH-F968
+F969;ID # CJK COMPATIBILITY IDEOGRAPH-F969
+F96A;ID # CJK COMPATIBILITY IDEOGRAPH-F96A
+F96B;ID # CJK COMPATIBILITY IDEOGRAPH-F96B
+F96C;ID # CJK COMPATIBILITY IDEOGRAPH-F96C
+F96D;ID # CJK COMPATIBILITY IDEOGRAPH-F96D
+F96E;ID # CJK COMPATIBILITY IDEOGRAPH-F96E
+F96F;ID # CJK COMPATIBILITY IDEOGRAPH-F96F
+F970;ID # CJK COMPATIBILITY IDEOGRAPH-F970
+F971;ID # CJK COMPATIBILITY IDEOGRAPH-F971
+F972;ID # CJK COMPATIBILITY IDEOGRAPH-F972
+F973;ID # CJK COMPATIBILITY IDEOGRAPH-F973
+F974;ID # CJK COMPATIBILITY IDEOGRAPH-F974
+F975;ID # CJK COMPATIBILITY IDEOGRAPH-F975
+F976;ID # CJK COMPATIBILITY IDEOGRAPH-F976
+F977;ID # CJK COMPATIBILITY IDEOGRAPH-F977
+F978;ID # CJK COMPATIBILITY IDEOGRAPH-F978
+F979;ID # CJK COMPATIBILITY IDEOGRAPH-F979
+F97A;ID # CJK COMPATIBILITY IDEOGRAPH-F97A
+F97B;ID # CJK COMPATIBILITY IDEOGRAPH-F97B
+F97C;ID # CJK COMPATIBILITY IDEOGRAPH-F97C
+F97D;ID # CJK COMPATIBILITY IDEOGRAPH-F97D
+F97E;ID # CJK COMPATIBILITY IDEOGRAPH-F97E
+F97F;ID # CJK COMPATIBILITY IDEOGRAPH-F97F
+F980;ID # CJK COMPATIBILITY IDEOGRAPH-F980
+F981;ID # CJK COMPATIBILITY IDEOGRAPH-F981
+F982;ID # CJK COMPATIBILITY IDEOGRAPH-F982
+F983;ID # CJK COMPATIBILITY IDEOGRAPH-F983
+F984;ID # CJK COMPATIBILITY IDEOGRAPH-F984
+F985;ID # CJK COMPATIBILITY IDEOGRAPH-F985
+F986;ID # CJK COMPATIBILITY IDEOGRAPH-F986
+F987;ID # CJK COMPATIBILITY IDEOGRAPH-F987
+F988;ID # CJK COMPATIBILITY IDEOGRAPH-F988
+F989;ID # CJK COMPATIBILITY IDEOGRAPH-F989
+F98A;ID # CJK COMPATIBILITY IDEOGRAPH-F98A
+F98B;ID # CJK COMPATIBILITY IDEOGRAPH-F98B
+F98C;ID # CJK COMPATIBILITY IDEOGRAPH-F98C
+F98D;ID # CJK COMPATIBILITY IDEOGRAPH-F98D
+F98E;ID # CJK COMPATIBILITY IDEOGRAPH-F98E
+F98F;ID # CJK COMPATIBILITY IDEOGRAPH-F98F
+F990;ID # CJK COMPATIBILITY IDEOGRAPH-F990
+F991;ID # CJK COMPATIBILITY IDEOGRAPH-F991
+F992;ID # CJK COMPATIBILITY IDEOGRAPH-F992
+F993;ID # CJK COMPATIBILITY IDEOGRAPH-F993
+F994;ID # CJK COMPATIBILITY IDEOGRAPH-F994
+F995;ID # CJK COMPATIBILITY IDEOGRAPH-F995
+F996;ID # CJK COMPATIBILITY IDEOGRAPH-F996
+F997;ID # CJK COMPATIBILITY IDEOGRAPH-F997
+F998;ID # CJK COMPATIBILITY IDEOGRAPH-F998
+F999;ID # CJK COMPATIBILITY IDEOGRAPH-F999
+F99A;ID # CJK COMPATIBILITY IDEOGRAPH-F99A
+F99B;ID # CJK COMPATIBILITY IDEOGRAPH-F99B
+F99C;ID # CJK COMPATIBILITY IDEOGRAPH-F99C
+F99D;ID # CJK COMPATIBILITY IDEOGRAPH-F99D
+F99E;ID # CJK COMPATIBILITY IDEOGRAPH-F99E
+F99F;ID # CJK COMPATIBILITY IDEOGRAPH-F99F
+F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-F9A1
+F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-F9A2
+F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-F9A3
+F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-F9A4
+F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-F9A5
+F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-F9A6
+F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-F9A7
+F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-F9A8
+F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-F9A9
+F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-F9AA
+F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-F9AB
+F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-F9AC
+F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-F9AD
+F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-F9AE
+F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-F9AF
+F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-F9B0
+F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-F9B1
+F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-F9B2
+F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-F9B3
+F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-F9B4
+F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-F9B5
+F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-F9B6
+F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-F9B7
+F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-F9B8
+F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-F9B9
+F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-F9BA
+F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-F9BB
+F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-F9BC
+F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-F9BD
+F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-F9BE
+F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-F9BF
+F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-F9C1
+F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-F9C2
+F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-F9C3
+F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-F9C4
+F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-F9C5
+F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-F9C6
+F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-F9C7
+F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-F9C8
+F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-F9C9
+F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-F9CA
+F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-F9CC
+F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-F9CD
+F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-F9CE
+F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-F9CF
+F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-F9D0
+F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-F9D1
+F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-F9D2
+F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-F9D3
+F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-F9D4
+F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-F9D5
+F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-F9D6
+F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-F9D7
+F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-F9D8
+F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-F9D9
+F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-F9DA
+F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-F9DB
+F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-F9DF
+F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-F9E0
+F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-F9E1
+F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-F9E2
+F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-F9E3
+F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-F9E5
+F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-F9E6
+F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-F9E7
+F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-F9E8
+F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-F9E9
+F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-F9EA
+F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-F9EB
+F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-F9EC
+F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-F9ED
+F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-F9EE
+F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-F9EF
+F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-F9F0
+F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-F9F1
+F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-F9F2
+F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-F9F3
+F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-F9F5
+F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-F9F6
+F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-F9F7
+F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-F9F8
+F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-F9F9
+F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-F9FA
+F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-F9FB
+F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-F9FC
+F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-F9FD
+F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-F9FE
+F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-F9FF
+FA00;ID # CJK COMPATIBILITY IDEOGRAPH-FA00
+FA01;ID # CJK COMPATIBILITY IDEOGRAPH-FA01
+FA02;ID # CJK COMPATIBILITY IDEOGRAPH-FA02
+FA03;ID # CJK COMPATIBILITY IDEOGRAPH-FA03
+FA04;ID # CJK COMPATIBILITY IDEOGRAPH-FA04
+FA05;ID # CJK COMPATIBILITY IDEOGRAPH-FA05
+FA06;ID # CJK COMPATIBILITY IDEOGRAPH-FA06
+FA07;ID # CJK COMPATIBILITY IDEOGRAPH-FA07
+FA08;ID # CJK COMPATIBILITY IDEOGRAPH-FA08
+FA09;ID # CJK COMPATIBILITY IDEOGRAPH-FA09
+FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-FA0A
+FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-FA0B
+FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-FA0E
+FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-FA0F
+FA10;ID # CJK COMPATIBILITY IDEOGRAPH-FA10
+FA11;ID # CJK COMPATIBILITY IDEOGRAPH-FA11
+FA12;ID # CJK COMPATIBILITY IDEOGRAPH-FA12
+FA13;ID # CJK COMPATIBILITY IDEOGRAPH-FA13
+FA14;ID # CJK COMPATIBILITY IDEOGRAPH-FA14
+FA15;ID # CJK COMPATIBILITY IDEOGRAPH-FA15
+FA16;ID # CJK COMPATIBILITY IDEOGRAPH-FA16
+FA17;ID # CJK COMPATIBILITY IDEOGRAPH-FA17
+FA18;ID # CJK COMPATIBILITY IDEOGRAPH-FA18
+FA19;ID # CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-FA1A
+FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-FA1B
+FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-FA1C
+FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-FA1D
+FA1E;ID # CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA1F;ID # CJK COMPATIBILITY IDEOGRAPH-FA1F
+FA20;ID # CJK COMPATIBILITY IDEOGRAPH-FA20
+FA21;ID # CJK COMPATIBILITY IDEOGRAPH-FA21
+FA22;ID # CJK COMPATIBILITY IDEOGRAPH-FA22
+FA23;ID # CJK COMPATIBILITY IDEOGRAPH-FA23
+FA24;ID # CJK COMPATIBILITY IDEOGRAPH-FA24
+FA25;ID # CJK COMPATIBILITY IDEOGRAPH-FA25
+FA26;ID # CJK COMPATIBILITY IDEOGRAPH-FA26
+FA27;ID # CJK COMPATIBILITY IDEOGRAPH-FA27
+FA28;ID # CJK COMPATIBILITY IDEOGRAPH-FA28
+FA29;ID # CJK COMPATIBILITY IDEOGRAPH-FA29
+FA2A;ID # CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B;ID # CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C;ID # CJK COMPATIBILITY IDEOGRAPH-FA2C
+FA2D;ID # CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30;ID # CJK COMPATIBILITY IDEOGRAPH-FA30
+FA31;ID # CJK COMPATIBILITY IDEOGRAPH-FA31
+FA32;ID # CJK COMPATIBILITY IDEOGRAPH-FA32
+FA33;ID # CJK COMPATIBILITY IDEOGRAPH-FA33
+FA34;ID # CJK COMPATIBILITY IDEOGRAPH-FA34
+FA35;ID # CJK COMPATIBILITY IDEOGRAPH-FA35
+FA36;ID # CJK COMPATIBILITY IDEOGRAPH-FA36
+FA37;ID # CJK COMPATIBILITY IDEOGRAPH-FA37
+FA38;ID # CJK COMPATIBILITY IDEOGRAPH-FA38
+FA39;ID # CJK COMPATIBILITY IDEOGRAPH-FA39
+FA3A;ID # CJK COMPATIBILITY IDEOGRAPH-FA3A
+FA3B;ID # CJK COMPATIBILITY IDEOGRAPH-FA3B
+FA3C;ID # CJK COMPATIBILITY IDEOGRAPH-FA3C
+FA3D;ID # CJK COMPATIBILITY IDEOGRAPH-FA3D
+FA3E;ID # CJK COMPATIBILITY IDEOGRAPH-FA3E
+FA3F;ID # CJK COMPATIBILITY IDEOGRAPH-FA3F
+FA40;ID # CJK COMPATIBILITY IDEOGRAPH-FA40
+FA41;ID # CJK COMPATIBILITY IDEOGRAPH-FA41
+FA42;ID # CJK COMPATIBILITY IDEOGRAPH-FA42
+FA43;ID # CJK COMPATIBILITY IDEOGRAPH-FA43
+FA44;ID # CJK COMPATIBILITY IDEOGRAPH-FA44
+FA45;ID # CJK COMPATIBILITY IDEOGRAPH-FA45
+FA46;ID # CJK COMPATIBILITY IDEOGRAPH-FA46
+FA47;ID # CJK COMPATIBILITY IDEOGRAPH-FA47
+FA48;ID # CJK COMPATIBILITY IDEOGRAPH-FA48
+FA49;ID # CJK COMPATIBILITY IDEOGRAPH-FA49
+FA4A;ID # CJK COMPATIBILITY IDEOGRAPH-FA4A
+FA4B;ID # CJK COMPATIBILITY IDEOGRAPH-FA4B
+FA4C;ID # CJK COMPATIBILITY IDEOGRAPH-FA4C
+FA4D;ID # CJK COMPATIBILITY IDEOGRAPH-FA4D
+FA4E;ID # CJK COMPATIBILITY IDEOGRAPH-FA4E
+FA4F;ID # CJK COMPATIBILITY IDEOGRAPH-FA4F
+FA50;ID # CJK COMPATIBILITY IDEOGRAPH-FA50
+FA51;ID # CJK COMPATIBILITY IDEOGRAPH-FA51
+FA52;ID # CJK COMPATIBILITY IDEOGRAPH-FA52
+FA53;ID # CJK COMPATIBILITY IDEOGRAPH-FA53
+FA54;ID # CJK COMPATIBILITY IDEOGRAPH-FA54
+FA55;ID # CJK COMPATIBILITY IDEOGRAPH-FA55
+FA56;ID # CJK COMPATIBILITY IDEOGRAPH-FA56
+FA57;ID # CJK COMPATIBILITY IDEOGRAPH-FA57
+FA58;ID # CJK COMPATIBILITY IDEOGRAPH-FA58
+FA59;ID # CJK COMPATIBILITY IDEOGRAPH-FA59
+FA5A;ID # CJK COMPATIBILITY IDEOGRAPH-FA5A
+FA5B;ID # CJK COMPATIBILITY IDEOGRAPH-FA5B
+FA5C;ID # CJK COMPATIBILITY IDEOGRAPH-FA5C
+FA5D;ID # CJK COMPATIBILITY IDEOGRAPH-FA5D
+FA5E;ID # CJK COMPATIBILITY IDEOGRAPH-FA5E
+FA5F;ID # CJK COMPATIBILITY IDEOGRAPH-FA5F
+FA60;ID # CJK COMPATIBILITY IDEOGRAPH-FA60
+FA61;ID # CJK COMPATIBILITY IDEOGRAPH-FA61
+FA62;ID # CJK COMPATIBILITY IDEOGRAPH-FA62
+FA63;ID # CJK COMPATIBILITY IDEOGRAPH-FA63
+FA64;ID # CJK COMPATIBILITY IDEOGRAPH-FA64
+FA65;ID # CJK COMPATIBILITY IDEOGRAPH-FA65
+FA66;ID # CJK COMPATIBILITY IDEOGRAPH-FA66
+FA67;ID # CJK COMPATIBILITY IDEOGRAPH-FA67
+FA68;ID # CJK COMPATIBILITY IDEOGRAPH-FA68
+FA69;ID # CJK COMPATIBILITY IDEOGRAPH-FA69
+FA6A;ID # CJK COMPATIBILITY IDEOGRAPH-FA6A
+FB00;AL # LATIN SMALL LIGATURE FF
+FB01;AL # LATIN SMALL LIGATURE FI
+FB02;AL # LATIN SMALL LIGATURE FL
+FB03;AL # LATIN SMALL LIGATURE FFI
+FB04;AL # LATIN SMALL LIGATURE FFL
+FB05;AL # LATIN SMALL LIGATURE LONG S T
+FB06;AL # LATIN SMALL LIGATURE ST
+FB13;AL # ARMENIAN SMALL LIGATURE MEN NOW
+FB14;AL # ARMENIAN SMALL LIGATURE MEN ECH
+FB15;AL # ARMENIAN SMALL LIGATURE MEN INI
+FB16;AL # ARMENIAN SMALL LIGATURE VEW NOW
+FB17;AL # ARMENIAN SMALL LIGATURE MEN XEH
+FB1D;AL # HEBREW LETTER YOD WITH HIRIQ
+FB1E;CM # HEBREW POINT JUDEO-SPANISH VARIKA
+FB1F;AL # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB20;AL # HEBREW LETTER ALTERNATIVE AYIN
+FB21;AL # HEBREW LETTER WIDE ALEF
+FB22;AL # HEBREW LETTER WIDE DALET
+FB23;AL # HEBREW LETTER WIDE HE
+FB24;AL # HEBREW LETTER WIDE KAF
+FB25;AL # HEBREW LETTER WIDE LAMED
+FB26;AL # HEBREW LETTER WIDE FINAL MEM
+FB27;AL # HEBREW LETTER WIDE RESH
+FB28;AL # HEBREW LETTER WIDE TAV
+FB29;AL # HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A;AL # HEBREW LETTER SHIN WITH SHIN DOT
+FB2B;AL # HEBREW LETTER SHIN WITH SIN DOT
+FB2C;AL # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D;AL # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E;AL # HEBREW LETTER ALEF WITH PATAH
+FB2F;AL # HEBREW LETTER ALEF WITH QAMATS
+FB30;AL # HEBREW LETTER ALEF WITH MAPIQ
+FB31;AL # HEBREW LETTER BET WITH DAGESH
+FB32;AL # HEBREW LETTER GIMEL WITH DAGESH
+FB33;AL # HEBREW LETTER DALET WITH DAGESH
+FB34;AL # HEBREW LETTER HE WITH MAPIQ
+FB35;AL # HEBREW LETTER VAV WITH DAGESH
+FB36;AL # HEBREW LETTER ZAYIN WITH DAGESH
+FB38;AL # HEBREW LETTER TET WITH DAGESH
+FB39;AL # HEBREW LETTER YOD WITH DAGESH
+FB3A;AL # HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B;AL # HEBREW LETTER KAF WITH DAGESH
+FB3C;AL # HEBREW LETTER LAMED WITH DAGESH
+FB3E;AL # HEBREW LETTER MEM WITH DAGESH
+FB40;AL # HEBREW LETTER NUN WITH DAGESH
+FB41;AL # HEBREW LETTER SAMEKH WITH DAGESH
+FB43;AL # HEBREW LETTER FINAL PE WITH DAGESH
+FB44;AL # HEBREW LETTER PE WITH DAGESH
+FB46;AL # HEBREW LETTER TSADI WITH DAGESH
+FB47;AL # HEBREW LETTER QOF WITH DAGESH
+FB48;AL # HEBREW LETTER RESH WITH DAGESH
+FB49;AL # HEBREW LETTER SHIN WITH DAGESH
+FB4A;AL # HEBREW LETTER TAV WITH DAGESH
+FB4B;AL # HEBREW LETTER VAV WITH HOLAM
+FB4C;AL # HEBREW LETTER BET WITH RAFE
+FB4D;AL # HEBREW LETTER KAF WITH RAFE
+FB4E;AL # HEBREW LETTER PE WITH RAFE
+FB4F;AL # HEBREW LIGATURE ALEF LAMED
+FB50;AL # ARABIC LETTER ALEF WASLA ISOLATED FORM
+FB51;AL # ARABIC LETTER ALEF WASLA FINAL FORM
+FB52;AL # ARABIC LETTER BEEH ISOLATED FORM
+FB53;AL # ARABIC LETTER BEEH FINAL FORM
+FB54;AL # ARABIC LETTER BEEH INITIAL FORM
+FB55;AL # ARABIC LETTER BEEH MEDIAL FORM
+FB56;AL # ARABIC LETTER PEH ISOLATED FORM
+FB57;AL # ARABIC LETTER PEH FINAL FORM
+FB58;AL # ARABIC LETTER PEH INITIAL FORM
+FB59;AL # ARABIC LETTER PEH MEDIAL FORM
+FB5A;AL # ARABIC LETTER BEHEH ISOLATED FORM
+FB5B;AL # ARABIC LETTER BEHEH FINAL FORM
+FB5C;AL # ARABIC LETTER BEHEH INITIAL FORM
+FB5D;AL # ARABIC LETTER BEHEH MEDIAL FORM
+FB5E;AL # ARABIC LETTER TTEHEH ISOLATED FORM
+FB5F;AL # ARABIC LETTER TTEHEH FINAL FORM
+FB60;AL # ARABIC LETTER TTEHEH INITIAL FORM
+FB61;AL # ARABIC LETTER TTEHEH MEDIAL FORM
+FB62;AL # ARABIC LETTER TEHEH ISOLATED FORM
+FB63;AL # ARABIC LETTER TEHEH FINAL FORM
+FB64;AL # ARABIC LETTER TEHEH INITIAL FORM
+FB65;AL # ARABIC LETTER TEHEH MEDIAL FORM
+FB66;AL # ARABIC LETTER TTEH ISOLATED FORM
+FB67;AL # ARABIC LETTER TTEH FINAL FORM
+FB68;AL # ARABIC LETTER TTEH INITIAL FORM
+FB69;AL # ARABIC LETTER TTEH MEDIAL FORM
+FB6A;AL # ARABIC LETTER VEH ISOLATED FORM
+FB6B;AL # ARABIC LETTER VEH FINAL FORM
+FB6C;AL # ARABIC LETTER VEH INITIAL FORM
+FB6D;AL # ARABIC LETTER VEH MEDIAL FORM
+FB6E;AL # ARABIC LETTER PEHEH ISOLATED FORM
+FB6F;AL # ARABIC LETTER PEHEH FINAL FORM
+FB70;AL # ARABIC LETTER PEHEH INITIAL FORM
+FB71;AL # ARABIC LETTER PEHEH MEDIAL FORM
+FB72;AL # ARABIC LETTER DYEH ISOLATED FORM
+FB73;AL # ARABIC LETTER DYEH FINAL FORM
+FB74;AL # ARABIC LETTER DYEH INITIAL FORM
+FB75;AL # ARABIC LETTER DYEH MEDIAL FORM
+FB76;AL # ARABIC LETTER NYEH ISOLATED FORM
+FB77;AL # ARABIC LETTER NYEH FINAL FORM
+FB78;AL # ARABIC LETTER NYEH INITIAL FORM
+FB79;AL # ARABIC LETTER NYEH MEDIAL FORM
+FB7A;AL # ARABIC LETTER TCHEH ISOLATED FORM
+FB7B;AL # ARABIC LETTER TCHEH FINAL FORM
+FB7C;AL # ARABIC LETTER TCHEH INITIAL FORM
+FB7D;AL # ARABIC LETTER TCHEH MEDIAL FORM
+FB7E;AL # ARABIC LETTER TCHEHEH ISOLATED FORM
+FB7F;AL # ARABIC LETTER TCHEHEH FINAL FORM
+FB80;AL # ARABIC LETTER TCHEHEH INITIAL FORM
+FB81;AL # ARABIC LETTER TCHEHEH MEDIAL FORM
+FB82;AL # ARABIC LETTER DDAHAL ISOLATED FORM
+FB83;AL # ARABIC LETTER DDAHAL FINAL FORM
+FB84;AL # ARABIC LETTER DAHAL ISOLATED FORM
+FB85;AL # ARABIC LETTER DAHAL FINAL FORM
+FB86;AL # ARABIC LETTER DUL ISOLATED FORM
+FB87;AL # ARABIC LETTER DUL FINAL FORM
+FB88;AL # ARABIC LETTER DDAL ISOLATED FORM
+FB89;AL # ARABIC LETTER DDAL FINAL FORM
+FB8A;AL # ARABIC LETTER JEH ISOLATED FORM
+FB8B;AL # ARABIC LETTER JEH FINAL FORM
+FB8C;AL # ARABIC LETTER RREH ISOLATED FORM
+FB8D;AL # ARABIC LETTER RREH FINAL FORM
+FB8E;AL # ARABIC LETTER KEHEH ISOLATED FORM
+FB8F;AL # ARABIC LETTER KEHEH FINAL FORM
+FB90;AL # ARABIC LETTER KEHEH INITIAL FORM
+FB91;AL # ARABIC LETTER KEHEH MEDIAL FORM
+FB92;AL # ARABIC LETTER GAF ISOLATED FORM
+FB93;AL # ARABIC LETTER GAF FINAL FORM
+FB94;AL # ARABIC LETTER GAF INITIAL FORM
+FB95;AL # ARABIC LETTER GAF MEDIAL FORM
+FB96;AL # ARABIC LETTER GUEH ISOLATED FORM
+FB97;AL # ARABIC LETTER GUEH FINAL FORM
+FB98;AL # ARABIC LETTER GUEH INITIAL FORM
+FB99;AL # ARABIC LETTER GUEH MEDIAL FORM
+FB9A;AL # ARABIC LETTER NGOEH ISOLATED FORM
+FB9B;AL # ARABIC LETTER NGOEH FINAL FORM
+FB9C;AL # ARABIC LETTER NGOEH INITIAL FORM
+FB9D;AL # ARABIC LETTER NGOEH MEDIAL FORM
+FB9E;AL # ARABIC LETTER NOON GHUNNA ISOLATED FORM
+FB9F;AL # ARABIC LETTER NOON GHUNNA FINAL FORM
+FBA0;AL # ARABIC LETTER RNOON ISOLATED FORM
+FBA1;AL # ARABIC LETTER RNOON FINAL FORM
+FBA2;AL # ARABIC LETTER RNOON INITIAL FORM
+FBA3;AL # ARABIC LETTER RNOON MEDIAL FORM
+FBA4;AL # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+FBA5;AL # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBA6;AL # ARABIC LETTER HEH GOAL ISOLATED FORM
+FBA7;AL # ARABIC LETTER HEH GOAL FINAL FORM
+FBA8;AL # ARABIC LETTER HEH GOAL INITIAL FORM
+FBA9;AL # ARABIC LETTER HEH GOAL MEDIAL FORM
+FBAA;AL # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+FBAB;AL # ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+FBAC;AL # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+FBAD;AL # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+FBAE;AL # ARABIC LETTER YEH BARREE ISOLATED FORM
+FBAF;AL # ARABIC LETTER YEH BARREE FINAL FORM
+FBB0;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+FBB1;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3;AL # ARABIC LETTER NG ISOLATED FORM
+FBD4;AL # ARABIC LETTER NG FINAL FORM
+FBD5;AL # ARABIC LETTER NG INITIAL FORM
+FBD6;AL # ARABIC LETTER NG MEDIAL FORM
+FBD7;AL # ARABIC LETTER U ISOLATED FORM
+FBD8;AL # ARABIC LETTER U FINAL FORM
+FBD9;AL # ARABIC LETTER OE ISOLATED FORM
+FBDA;AL # ARABIC LETTER OE FINAL FORM
+FBDB;AL # ARABIC LETTER YU ISOLATED FORM
+FBDC;AL # ARABIC LETTER YU FINAL FORM
+FBDD;AL # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBDE;AL # ARABIC LETTER VE ISOLATED FORM
+FBDF;AL # ARABIC LETTER VE FINAL FORM
+FBE0;AL # ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+FBE1;AL # ARABIC LETTER KIRGHIZ OE FINAL FORM
+FBE2;AL # ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+FBE3;AL # ARABIC LETTER KIRGHIZ YU FINAL FORM
+FBE4;AL # ARABIC LETTER E ISOLATED FORM
+FBE5;AL # ARABIC LETTER E FINAL FORM
+FBE6;AL # ARABIC LETTER E INITIAL FORM
+FBE7;AL # ARABIC LETTER E MEDIAL FORM
+FBE8;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FBEA;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+FBEB;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+FBEC;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+FBED;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+FBEE;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+FBEF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+FBF0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+FBF1;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+FBF2;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+FBF3;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+FBF4;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+FBF5;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+FBF6;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+FBF7;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+FBF8;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+FBF9;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FBFA;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FBFB;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FBFC;AL # ARABIC LETTER FARSI YEH ISOLATED FORM
+FBFD;AL # ARABIC LETTER FARSI YEH FINAL FORM
+FBFE;AL # ARABIC LETTER FARSI YEH INITIAL FORM
+FBFF;AL # ARABIC LETTER FARSI YEH MEDIAL FORM
+FC00;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+FC01;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+FC02;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+FC03;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC04;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+FC05;AL # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+FC06;AL # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+FC07;AL # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+FC08;AL # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+FC09;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+FC0A;AL # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+FC0B;AL # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+FC0C;AL # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+FC0D;AL # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+FC0E;AL # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+FC0F;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+FC10;AL # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+FC11;AL # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+FC12;AL # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+FC13;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+FC14;AL # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+FC15;AL # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+FC16;AL # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+FC17;AL # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+FC18;AL # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+FC19;AL # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+FC1A;AL # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+FC1B;AL # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+FC1C;AL # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+FC1D;AL # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+FC1E;AL # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+FC1F;AL # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+FC20;AL # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+FC21;AL # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+FC22;AL # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+FC23;AL # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+FC24;AL # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+FC25;AL # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+FC26;AL # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+FC27;AL # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+FC28;AL # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+FC29;AL # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+FC2A;AL # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+FC2B;AL # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+FC2C;AL # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+FC2D;AL # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+FC2E;AL # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+FC2F;AL # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+FC30;AL # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+FC31;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+FC32;AL # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+FC33;AL # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+FC34;AL # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+FC35;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+FC36;AL # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+FC37;AL # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+FC38;AL # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+FC39;AL # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+FC3A;AL # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+FC3B;AL # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+FC3C;AL # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+FC3D;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+FC3E;AL # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+FC3F;AL # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+FC40;AL # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+FC41;AL # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+FC42;AL # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+FC43;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+FC44;AL # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+FC45;AL # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+FC46;AL # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+FC47;AL # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+FC48;AL # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+FC49;AL # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+FC4A;AL # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+FC4B;AL # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+FC4C;AL # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+FC4D;AL # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+FC4E;AL # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+FC4F;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+FC50;AL # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+FC51;AL # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+FC52;AL # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+FC53;AL # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+FC54;AL # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+FC55;AL # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+FC56;AL # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+FC57;AL # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+FC58;AL # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+FC59;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+FC5A;AL # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+FC5B;AL # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5C;AL # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5D;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5E;AL # ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+FC5F;AL # ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+FC60;AL # ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+FC61;AL # ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+FC62;AL # ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+FC63;AL # ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC64;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+FC65;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+FC66;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+FC67;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+FC68;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FC69;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+FC6A;AL # ARABIC LIGATURE BEH WITH REH FINAL FORM
+FC6B;AL # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+FC6C;AL # ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+FC6D;AL # ARABIC LIGATURE BEH WITH NOON FINAL FORM
+FC6E;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+FC6F;AL # ARABIC LIGATURE BEH WITH YEH FINAL FORM
+FC70;AL # ARABIC LIGATURE TEH WITH REH FINAL FORM
+FC71;AL # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+FC72;AL # ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+FC73;AL # ARABIC LIGATURE TEH WITH NOON FINAL FORM
+FC74;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+FC75;AL # ARABIC LIGATURE TEH WITH YEH FINAL FORM
+FC76;AL # ARABIC LIGATURE THEH WITH REH FINAL FORM
+FC77;AL # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+FC78;AL # ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+FC79;AL # ARABIC LIGATURE THEH WITH NOON FINAL FORM
+FC7A;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+FC7B;AL # ARABIC LIGATURE THEH WITH YEH FINAL FORM
+FC7C;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+FC7D;AL # ARABIC LIGATURE FEH WITH YEH FINAL FORM
+FC7E;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+FC7F;AL # ARABIC LIGATURE QAF WITH YEH FINAL FORM
+FC80;AL # ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+FC81;AL # ARABIC LIGATURE KAF WITH LAM FINAL FORM
+FC82;AL # ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+FC83;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+FC84;AL # ARABIC LIGATURE KAF WITH YEH FINAL FORM
+FC85;AL # ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+FC86;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+FC87;AL # ARABIC LIGATURE LAM WITH YEH FINAL FORM
+FC88;AL # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+FC89;AL # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+FC8A;AL # ARABIC LIGATURE NOON WITH REH FINAL FORM
+FC8B;AL # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+FC8C;AL # ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+FC8D;AL # ARABIC LIGATURE NOON WITH NOON FINAL FORM
+FC8E;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+FC8F;AL # ARABIC LIGATURE NOON WITH YEH FINAL FORM
+FC90;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC91;AL # ARABIC LIGATURE YEH WITH REH FINAL FORM
+FC92;AL # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+FC93;AL # ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+FC94;AL # ARABIC LIGATURE YEH WITH NOON FINAL FORM
+FC95;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+FC96;AL # ARABIC LIGATURE YEH WITH YEH FINAL FORM
+FC97;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+FC98;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+FC99;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+FC9A;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+FC9B;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+FC9C;AL # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+FC9D;AL # ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+FC9E;AL # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+FC9F;AL # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+FCA0;AL # ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+FCA1;AL # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+FCA2;AL # ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+FCA3;AL # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+FCA4;AL # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+FCA5;AL # ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+FCA6;AL # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+FCA7;AL # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+FCA8;AL # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+FCA9;AL # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+FCAA;AL # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+FCAB;AL # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+FCAC;AL # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+FCAD;AL # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+FCAE;AL # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+FCAF;AL # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+FCB0;AL # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+FCB1;AL # ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+FCB2;AL # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+FCB3;AL # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+FCB4;AL # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+FCB5;AL # ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+FCB6;AL # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+FCB7;AL # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+FCB8;AL # ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+FCB9;AL # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+FCBA;AL # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+FCBB;AL # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+FCBC;AL # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+FCBD;AL # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+FCBE;AL # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+FCBF;AL # ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+FCC0;AL # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+FCC1;AL # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+FCC2;AL # ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+FCC3;AL # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+FCC4;AL # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+FCC5;AL # ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+FCC6;AL # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+FCC7;AL # ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+FCC8;AL # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+FCC9;AL # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+FCCA;AL # ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+FCCB;AL # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+FCCC;AL # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+FCCD;AL # ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+FCCE;AL # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+FCCF;AL # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+FCD0;AL # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+FCD1;AL # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+FCD2;AL # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+FCD3;AL # ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+FCD4;AL # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+FCD5;AL # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+FCD6;AL # ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+FCD7;AL # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+FCD8;AL # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+FCD9;AL # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+FCDA;AL # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+FCDB;AL # ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+FCDC;AL # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+FCDD;AL # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+FCDE;AL # ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+FCDF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+FCE0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+FCE1;AL # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+FCE2;AL # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+FCE3;AL # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+FCE4;AL # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+FCE5;AL # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+FCE6;AL # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+FCE7;AL # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+FCE8;AL # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+FCE9;AL # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+FCEA;AL # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+FCEB;AL # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+FCEC;AL # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+FCED;AL # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+FCEE;AL # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+FCEF;AL # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+FCF0;AL # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+FCF1;AL # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+FCF2;AL # ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+FCF3;AL # ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+FCF4;AL # ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+FCF5;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+FCF6;AL # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+FCF7;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+FCF8;AL # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+FCF9;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+FCFA;AL # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+FCFB;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFC;AL # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+FCFD;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFE;AL # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+FCFF;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+FD00;AL # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+FD01;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+FD02;AL # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+FD03;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+FD04;AL # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+FD05;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+FD06;AL # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+FD07;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+FD08;AL # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+FD09;AL # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+FD0A;AL # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+FD0B;AL # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+FD0C;AL # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+FD0D;AL # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+FD0E;AL # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+FD0F;AL # ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+FD10;AL # ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+FD11;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+FD12;AL # ARABIC LIGATURE TAH WITH YEH FINAL FORM
+FD13;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+FD14;AL # ARABIC LIGATURE AIN WITH YEH FINAL FORM
+FD15;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+FD16;AL # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+FD17;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+FD18;AL # ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+FD19;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+FD1A;AL # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+FD1B;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+FD1C;AL # ARABIC LIGATURE HAH WITH YEH FINAL FORM
+FD1D;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+FD1E;AL # ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+FD1F;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+FD20;AL # ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+FD21;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+FD22;AL # ARABIC LIGATURE SAD WITH YEH FINAL FORM
+FD23;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+FD24;AL # ARABIC LIGATURE DAD WITH YEH FINAL FORM
+FD25;AL # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+FD26;AL # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+FD27;AL # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+FD28;AL # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+FD29;AL # ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+FD2A;AL # ARABIC LIGATURE SEEN WITH REH FINAL FORM
+FD2B;AL # ARABIC LIGATURE SAD WITH REH FINAL FORM
+FD2C;AL # ARABIC LIGATURE DAD WITH REH FINAL FORM
+FD2D;AL # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+FD2E;AL # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+FD2F;AL # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+FD30;AL # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+FD31;AL # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+FD32;AL # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+FD33;AL # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+FD34;AL # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+FD35;AL # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+FD36;AL # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+FD37;AL # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+FD38;AL # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+FD39;AL # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+FD3A;AL # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+FD3B;AL # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+FD3C;AL # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+FD3D;AL # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD3E;OP # ORNATE LEFT PARENTHESIS
+FD3F;CL # ORNATE RIGHT PARENTHESIS
+FD50;AL # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+FD51;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+FD52;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+FD53;AL # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+FD54;AL # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+FD55;AL # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+FD56;AL # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+FD57;AL # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+FD58;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+FD59;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+FD5A;AL # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+FD5B;AL # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD5C;AL # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+FD5D;AL # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+FD5E;AL # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD5F;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+FD60;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+FD61;AL # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+FD62;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+FD63;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+FD64;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+FD65;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+FD66;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+FD67;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+FD68;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+FD69;AL # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+FD6A;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+FD6B;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+FD6C;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+FD6D;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+FD6E;AL # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD6F;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+FD70;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+FD71;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+FD72;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+FD73;AL # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+FD74;AL # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+FD75;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+FD76;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+FD77;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+FD78;AL # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD79;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+FD7A;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+FD7B;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD7C;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+FD7D;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+FD7E;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+FD7F;AL # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+FD80;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+FD81;AL # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+FD82;AL # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD83;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+FD84;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+FD85;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+FD86;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+FD87;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+FD88;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+FD89;AL # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+FD8A;AL # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+FD8B;AL # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+FD8C;AL # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+FD8D;AL # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+FD8E;AL # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+FD8F;AL # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92;AL # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+FD93;AL # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+FD94;AL # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+FD95;AL # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+FD96;AL # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD97;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+FD98;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+FD99;AL # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD9A;AL # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+FD9B;AL # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD9C;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+FD9D;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+FD9E;AL # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+FD9F;AL # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+FDA0;AL # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FDA1;AL # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+FDA2;AL # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA3;AL # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+FDA4;AL # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA5;AL # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+FDA6;AL # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDA7;AL # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA8;AL # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA9;AL # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+FDAA;AL # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+FDAB;AL # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+FDAC;AL # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+FDAD;AL # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+FDAE;AL # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+FDAF;AL # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+FDB0;AL # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+FDB1;AL # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+FDB2;AL # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+FDB3;AL # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+FDB4;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+FDB5;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+FDB6;AL # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+FDB7;AL # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+FDB8;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+FDB9;AL # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+FDBA;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+FDBB;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+FDBC;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+FDBD;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+FDBE;AL # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+FDBF;AL # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+FDC0;AL # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+FDC1;AL # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+FDC2;AL # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+FDC3;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+FDC4;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+FDC5;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+FDC6;AL # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+FDC7;AL # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0;AL # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF1;AL # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF2;AL # ARABIC LIGATURE ALLAH ISOLATED FORM
+FDF3;AL # ARABIC LIGATURE AKBAR ISOLATED FORM
+FDF4;AL # ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+FDF5;AL # ARABIC LIGATURE SALAM ISOLATED FORM
+FDF6;AL # ARABIC LIGATURE RASOUL ISOLATED FORM
+FDF7;AL # ARABIC LIGATURE ALAYHE ISOLATED FORM
+FDF8;AL # ARABIC LIGATURE WASALLAM ISOLATED FORM
+FDF9;AL # ARABIC LIGATURE SALLA ISOLATED FORM
+FDFA;AL # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+FDFB;AL # ARABIC LIGATURE JALLAJALALOUHOU
+FDFC;PO # RIAL SIGN
+FE00;CM # VARIATION SELECTOR-1
+FE01;CM # VARIATION SELECTOR-2
+FE02;CM # VARIATION SELECTOR-3
+FE03;CM # VARIATION SELECTOR-4
+FE04;CM # VARIATION SELECTOR-5
+FE05;CM # VARIATION SELECTOR-6
+FE06;CM # VARIATION SELECTOR-7
+FE07;CM # VARIATION SELECTOR-8
+FE08;CM # VARIATION SELECTOR-9
+FE09;CM # VARIATION SELECTOR-10
+FE0A;CM # VARIATION SELECTOR-11
+FE0B;CM # VARIATION SELECTOR-12
+FE0C;CM # VARIATION SELECTOR-13
+FE0D;CM # VARIATION SELECTOR-14
+FE0E;CM # VARIATION SELECTOR-15
+FE0F;CM # VARIATION SELECTOR-16
+FE20;CM # COMBINING LIGATURE LEFT HALF
+FE21;CM # COMBINING LIGATURE RIGHT HALF
+FE22;CM # COMBINING DOUBLE TILDE LEFT HALF
+FE23;CM # COMBINING DOUBLE TILDE RIGHT HALF
+FE30;ID # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31;ID # PRESENTATION FORM FOR VERTICAL EM DASH
+FE32;ID # PRESENTATION FORM FOR VERTICAL EN DASH
+FE33;ID # PRESENTATION FORM FOR VERTICAL LOW LINE
+FE34;ID # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35;OP # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36;CL # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37;OP # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38;CL # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39;OP # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A;CL # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B;OP # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C;CL # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D;OP # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E;CL # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F;OP # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40;CL # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41;OP # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42;CL # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE45;ID # SESAME DOT
+FE46;ID # WHITE SESAME DOT
+FE49;ID # DASHED OVERLINE
+FE4A;ID # CENTRELINE OVERLINE
+FE4B;ID # WAVY OVERLINE
+FE4C;ID # DOUBLE WAVY OVERLINE
+FE4D;ID # DASHED LOW LINE
+FE4E;ID # CENTRELINE LOW LINE
+FE4F;ID # WAVY LOW LINE
+FE50;CL # SMALL COMMA
+FE51;ID # SMALL IDEOGRAPHIC COMMA
+FE52;CL # SMALL FULL STOP
+FE54;NS # SMALL SEMICOLON
+FE55;NS # SMALL COLON
+FE56;EX # SMALL QUESTION MARK
+FE57;EX # SMALL EXCLAMATION MARK
+FE58;ID # SMALL EM DASH
+FE59;OP # SMALL LEFT PARENTHESIS
+FE5A;CL # SMALL RIGHT PARENTHESIS
+FE5B;OP # SMALL LEFT CURLY BRACKET
+FE5C;CL # SMALL RIGHT CURLY BRACKET
+FE5D;OP # SMALL LEFT TORTOISE SHELL BRACKET
+FE5E;CL # SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F;ID # SMALL NUMBER SIGN
+FE60;ID # SMALL AMPERSAND
+FE61;ID # SMALL ASTERISK
+FE62;ID # SMALL PLUS SIGN
+FE63;ID # SMALL HYPHEN-MINUS
+FE64;ID # SMALL LESS-THAN SIGN
+FE65;ID # SMALL GREATER-THAN SIGN
+FE66;ID # SMALL EQUALS SIGN
+FE68;ID # SMALL REVERSE SOLIDUS
+FE69;PR # SMALL DOLLAR SIGN
+FE6A;PO # SMALL PERCENT SIGN
+FE6B;ID # SMALL COMMERCIAL AT
+FE70;AL # ARABIC FATHATAN ISOLATED FORM
+FE71;AL # ARABIC TATWEEL WITH FATHATAN ABOVE
+FE72;AL # ARABIC DAMMATAN ISOLATED FORM
+FE73;AL # ARABIC TAIL FRAGMENT
+FE74;AL # ARABIC KASRATAN ISOLATED FORM
+FE76;AL # ARABIC FATHA ISOLATED FORM
+FE77;AL # ARABIC FATHA MEDIAL FORM
+FE78;AL # ARABIC DAMMA ISOLATED FORM
+FE79;AL # ARABIC DAMMA MEDIAL FORM
+FE7A;AL # ARABIC KASRA ISOLATED FORM
+FE7B;AL # ARABIC KASRA MEDIAL FORM
+FE7C;AL # ARABIC SHADDA ISOLATED FORM
+FE7D;AL # ARABIC SHADDA MEDIAL FORM
+FE7E;AL # ARABIC SUKUN ISOLATED FORM
+FE7F;AL # ARABIC SUKUN MEDIAL FORM
+FE80;AL # ARABIC LETTER HAMZA ISOLATED FORM
+FE81;AL # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+FE82;AL # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+FE83;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+FE84;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+FE85;AL # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+FE86;AL # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+FE87;AL # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+FE88;AL # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+FE89;AL # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+FE8A;AL # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+FE8B;AL # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+FE8C;AL # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FE8D;AL # ARABIC LETTER ALEF ISOLATED FORM
+FE8E;AL # ARABIC LETTER ALEF FINAL FORM
+FE8F;AL # ARABIC LETTER BEH ISOLATED FORM
+FE90;AL # ARABIC LETTER BEH FINAL FORM
+FE91;AL # ARABIC LETTER BEH INITIAL FORM
+FE92;AL # ARABIC LETTER BEH MEDIAL FORM
+FE93;AL # ARABIC LETTER TEH MARBUTA ISOLATED FORM
+FE94;AL # ARABIC LETTER TEH MARBUTA FINAL FORM
+FE95;AL # ARABIC LETTER TEH ISOLATED FORM
+FE96;AL # ARABIC LETTER TEH FINAL FORM
+FE97;AL # ARABIC LETTER TEH INITIAL FORM
+FE98;AL # ARABIC LETTER TEH MEDIAL FORM
+FE99;AL # ARABIC LETTER THEH ISOLATED FORM
+FE9A;AL # ARABIC LETTER THEH FINAL FORM
+FE9B;AL # ARABIC LETTER THEH INITIAL FORM
+FE9C;AL # ARABIC LETTER THEH MEDIAL FORM
+FE9D;AL # ARABIC LETTER JEEM ISOLATED FORM
+FE9E;AL # ARABIC LETTER JEEM FINAL FORM
+FE9F;AL # ARABIC LETTER JEEM INITIAL FORM
+FEA0;AL # ARABIC LETTER JEEM MEDIAL FORM
+FEA1;AL # ARABIC LETTER HAH ISOLATED FORM
+FEA2;AL # ARABIC LETTER HAH FINAL FORM
+FEA3;AL # ARABIC LETTER HAH INITIAL FORM
+FEA4;AL # ARABIC LETTER HAH MEDIAL FORM
+FEA5;AL # ARABIC LETTER KHAH ISOLATED FORM
+FEA6;AL # ARABIC LETTER KHAH FINAL FORM
+FEA7;AL # ARABIC LETTER KHAH INITIAL FORM
+FEA8;AL # ARABIC LETTER KHAH MEDIAL FORM
+FEA9;AL # ARABIC LETTER DAL ISOLATED FORM
+FEAA;AL # ARABIC LETTER DAL FINAL FORM
+FEAB;AL # ARABIC LETTER THAL ISOLATED FORM
+FEAC;AL # ARABIC LETTER THAL FINAL FORM
+FEAD;AL # ARABIC LETTER REH ISOLATED FORM
+FEAE;AL # ARABIC LETTER REH FINAL FORM
+FEAF;AL # ARABIC LETTER ZAIN ISOLATED FORM
+FEB0;AL # ARABIC LETTER ZAIN FINAL FORM
+FEB1;AL # ARABIC LETTER SEEN ISOLATED FORM
+FEB2;AL # ARABIC LETTER SEEN FINAL FORM
+FEB3;AL # ARABIC LETTER SEEN INITIAL FORM
+FEB4;AL # ARABIC LETTER SEEN MEDIAL FORM
+FEB5;AL # ARABIC LETTER SHEEN ISOLATED FORM
+FEB6;AL # ARABIC LETTER SHEEN FINAL FORM
+FEB7;AL # ARABIC LETTER SHEEN INITIAL FORM
+FEB8;AL # ARABIC LETTER SHEEN MEDIAL FORM
+FEB9;AL # ARABIC LETTER SAD ISOLATED FORM
+FEBA;AL # ARABIC LETTER SAD FINAL FORM
+FEBB;AL # ARABIC LETTER SAD INITIAL FORM
+FEBC;AL # ARABIC LETTER SAD MEDIAL FORM
+FEBD;AL # ARABIC LETTER DAD ISOLATED FORM
+FEBE;AL # ARABIC LETTER DAD FINAL FORM
+FEBF;AL # ARABIC LETTER DAD INITIAL FORM
+FEC0;AL # ARABIC LETTER DAD MEDIAL FORM
+FEC1;AL # ARABIC LETTER TAH ISOLATED FORM
+FEC2;AL # ARABIC LETTER TAH FINAL FORM
+FEC3;AL # ARABIC LETTER TAH INITIAL FORM
+FEC4;AL # ARABIC LETTER TAH MEDIAL FORM
+FEC5;AL # ARABIC LETTER ZAH ISOLATED FORM
+FEC6;AL # ARABIC LETTER ZAH FINAL FORM
+FEC7;AL # ARABIC LETTER ZAH INITIAL FORM
+FEC8;AL # ARABIC LETTER ZAH MEDIAL FORM
+FEC9;AL # ARABIC LETTER AIN ISOLATED FORM
+FECA;AL # ARABIC LETTER AIN FINAL FORM
+FECB;AL # ARABIC LETTER AIN INITIAL FORM
+FECC;AL # ARABIC LETTER AIN MEDIAL FORM
+FECD;AL # ARABIC LETTER GHAIN ISOLATED FORM
+FECE;AL # ARABIC LETTER GHAIN FINAL FORM
+FECF;AL # ARABIC LETTER GHAIN INITIAL FORM
+FED0;AL # ARABIC LETTER GHAIN MEDIAL FORM
+FED1;AL # ARABIC LETTER FEH ISOLATED FORM
+FED2;AL # ARABIC LETTER FEH FINAL FORM
+FED3;AL # ARABIC LETTER FEH INITIAL FORM
+FED4;AL # ARABIC LETTER FEH MEDIAL FORM
+FED5;AL # ARABIC LETTER QAF ISOLATED FORM
+FED6;AL # ARABIC LETTER QAF FINAL FORM
+FED7;AL # ARABIC LETTER QAF INITIAL FORM
+FED8;AL # ARABIC LETTER QAF MEDIAL FORM
+FED9;AL # ARABIC LETTER KAF ISOLATED FORM
+FEDA;AL # ARABIC LETTER KAF FINAL FORM
+FEDB;AL # ARABIC LETTER KAF INITIAL FORM
+FEDC;AL # ARABIC LETTER KAF MEDIAL FORM
+FEDD;AL # ARABIC LETTER LAM ISOLATED FORM
+FEDE;AL # ARABIC LETTER LAM FINAL FORM
+FEDF;AL # ARABIC LETTER LAM INITIAL FORM
+FEE0;AL # ARABIC LETTER LAM MEDIAL FORM
+FEE1;AL # ARABIC LETTER MEEM ISOLATED FORM
+FEE2;AL # ARABIC LETTER MEEM FINAL FORM
+FEE3;AL # ARABIC LETTER MEEM INITIAL FORM
+FEE4;AL # ARABIC LETTER MEEM MEDIAL FORM
+FEE5;AL # ARABIC LETTER NOON ISOLATED FORM
+FEE6;AL # ARABIC LETTER NOON FINAL FORM
+FEE7;AL # ARABIC LETTER NOON INITIAL FORM
+FEE8;AL # ARABIC LETTER NOON MEDIAL FORM
+FEE9;AL # ARABIC LETTER HEH ISOLATED FORM
+FEEA;AL # ARABIC LETTER HEH FINAL FORM
+FEEB;AL # ARABIC LETTER HEH INITIAL FORM
+FEEC;AL # ARABIC LETTER HEH MEDIAL FORM
+FEED;AL # ARABIC LETTER WAW ISOLATED FORM
+FEEE;AL # ARABIC LETTER WAW FINAL FORM
+FEEF;AL # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FEF0;AL # ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEF1;AL # ARABIC LETTER YEH ISOLATED FORM
+FEF2;AL # ARABIC LETTER YEH FINAL FORM
+FEF3;AL # ARABIC LETTER YEH INITIAL FORM
+FEF4;AL # ARABIC LETTER YEH MEDIAL FORM
+FEF5;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+FEF6;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+FEF7;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+FEF8;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+FEF9;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+FEFA;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+FEFB;AL # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+FEFC;AL # ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FEFF;GL # ZERO WIDTH NO-BREAK SPACE
+FF01;EX # FULLWIDTH EXCLAMATION MARK
+FF02;ID # FULLWIDTH QUOTATION MARK
+FF03;ID # FULLWIDTH NUMBER SIGN
+FF04;PR # FULLWIDTH DOLLAR SIGN
+FF05;PO # FULLWIDTH PERCENT SIGN
+FF06;ID # FULLWIDTH AMPERSAND
+FF07;ID # FULLWIDTH APOSTROPHE
+FF08;OP # FULLWIDTH LEFT PARENTHESIS
+FF09;CL # FULLWIDTH RIGHT PARENTHESIS
+FF0A;ID # FULLWIDTH ASTERISK
+FF0B;ID # FULLWIDTH PLUS SIGN
+FF0C;CL # FULLWIDTH COMMA
+FF0D;ID # FULLWIDTH HYPHEN-MINUS
+FF0E;CL # FULLWIDTH FULL STOP
+FF0F;ID # FULLWIDTH SOLIDUS
+FF10;ID # FULLWIDTH DIGIT ZERO
+FF11;ID # FULLWIDTH DIGIT ONE
+FF12;ID # FULLWIDTH DIGIT TWO
+FF13;ID # FULLWIDTH DIGIT THREE
+FF14;ID # FULLWIDTH DIGIT FOUR
+FF15;ID # FULLWIDTH DIGIT FIVE
+FF16;ID # FULLWIDTH DIGIT SIX
+FF17;ID # FULLWIDTH DIGIT SEVEN
+FF18;ID # FULLWIDTH DIGIT EIGHT
+FF19;ID # FULLWIDTH DIGIT NINE
+FF1A;NS # FULLWIDTH COLON
+FF1B;NS # FULLWIDTH SEMICOLON
+FF1C;ID # FULLWIDTH LESS-THAN SIGN
+FF1D;ID # FULLWIDTH EQUALS SIGN
+FF1E;ID # FULLWIDTH GREATER-THAN SIGN
+FF1F;EX # FULLWIDTH QUESTION MARK
+FF20;ID # FULLWIDTH COMMERCIAL AT
+FF21;ID # FULLWIDTH LATIN CAPITAL LETTER A
+FF22;ID # FULLWIDTH LATIN CAPITAL LETTER B
+FF23;ID # FULLWIDTH LATIN CAPITAL LETTER C
+FF24;ID # FULLWIDTH LATIN CAPITAL LETTER D
+FF25;ID # FULLWIDTH LATIN CAPITAL LETTER E
+FF26;ID # FULLWIDTH LATIN CAPITAL LETTER F
+FF27;ID # FULLWIDTH LATIN CAPITAL LETTER G
+FF28;ID # FULLWIDTH LATIN CAPITAL LETTER H
+FF29;ID # FULLWIDTH LATIN CAPITAL LETTER I
+FF2A;ID # FULLWIDTH LATIN CAPITAL LETTER J
+FF2B;ID # FULLWIDTH LATIN CAPITAL LETTER K
+FF2C;ID # FULLWIDTH LATIN CAPITAL LETTER L
+FF2D;ID # FULLWIDTH LATIN CAPITAL LETTER M
+FF2E;ID # FULLWIDTH LATIN CAPITAL LETTER N
+FF2F;ID # FULLWIDTH LATIN CAPITAL LETTER O
+FF30;ID # FULLWIDTH LATIN CAPITAL LETTER P
+FF31;ID # FULLWIDTH LATIN CAPITAL LETTER Q
+FF32;ID # FULLWIDTH LATIN CAPITAL LETTER R
+FF33;ID # FULLWIDTH LATIN CAPITAL LETTER S
+FF34;ID # FULLWIDTH LATIN CAPITAL LETTER T
+FF35;ID # FULLWIDTH LATIN CAPITAL LETTER U
+FF36;ID # FULLWIDTH LATIN CAPITAL LETTER V
+FF37;ID # FULLWIDTH LATIN CAPITAL LETTER W
+FF38;ID # FULLWIDTH LATIN CAPITAL LETTER X
+FF39;ID # FULLWIDTH LATIN CAPITAL LETTER Y
+FF3A;ID # FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B;OP # FULLWIDTH LEFT SQUARE BRACKET
+FF3C;ID # FULLWIDTH REVERSE SOLIDUS
+FF3D;CL # FULLWIDTH RIGHT SQUARE BRACKET
+FF3E;ID # FULLWIDTH CIRCUMFLEX ACCENT
+FF3F;ID # FULLWIDTH LOW LINE
+FF40;ID # FULLWIDTH GRAVE ACCENT
+FF41;ID # FULLWIDTH LATIN SMALL LETTER A
+FF42;ID # FULLWIDTH LATIN SMALL LETTER B
+FF43;ID # FULLWIDTH LATIN SMALL LETTER C
+FF44;ID # FULLWIDTH LATIN SMALL LETTER D
+FF45;ID # FULLWIDTH LATIN SMALL LETTER E
+FF46;ID # FULLWIDTH LATIN SMALL LETTER F
+FF47;ID # FULLWIDTH LATIN SMALL LETTER G
+FF48;ID # FULLWIDTH LATIN SMALL LETTER H
+FF49;ID # FULLWIDTH LATIN SMALL LETTER I
+FF4A;ID # FULLWIDTH LATIN SMALL LETTER J
+FF4B;ID # FULLWIDTH LATIN SMALL LETTER K
+FF4C;ID # FULLWIDTH LATIN SMALL LETTER L
+FF4D;ID # FULLWIDTH LATIN SMALL LETTER M
+FF4E;ID # FULLWIDTH LATIN SMALL LETTER N
+FF4F;ID # FULLWIDTH LATIN SMALL LETTER O
+FF50;ID # FULLWIDTH LATIN SMALL LETTER P
+FF51;ID # FULLWIDTH LATIN SMALL LETTER Q
+FF52;ID # FULLWIDTH LATIN SMALL LETTER R
+FF53;ID # FULLWIDTH LATIN SMALL LETTER S
+FF54;ID # FULLWIDTH LATIN SMALL LETTER T
+FF55;ID # FULLWIDTH LATIN SMALL LETTER U
+FF56;ID # FULLWIDTH LATIN SMALL LETTER V
+FF57;ID # FULLWIDTH LATIN SMALL LETTER W
+FF58;ID # FULLWIDTH LATIN SMALL LETTER X
+FF59;ID # FULLWIDTH LATIN SMALL LETTER Y
+FF5A;ID # FULLWIDTH LATIN SMALL LETTER Z
+FF5B;OP # FULLWIDTH LEFT CURLY BRACKET
+FF5C;ID # FULLWIDTH VERTICAL LINE
+FF5D;CL # FULLWIDTH RIGHT CURLY BRACKET
+FF5E;ID # FULLWIDTH TILDE
+FF5F;OP # FULLWIDTH LEFT WHITE PARENTHESIS
+FF60;CL # FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61;CL # HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62;OP # HALFWIDTH LEFT CORNER BRACKET
+FF63;CL # HALFWIDTH RIGHT CORNER BRACKET
+FF64;CL # HALFWIDTH IDEOGRAPHIC COMMA
+FF65;NS # HALFWIDTH KATAKANA MIDDLE DOT
+FF66;AL # HALFWIDTH KATAKANA LETTER WO
+FF67;NS # HALFWIDTH KATAKANA LETTER SMALL A
+FF68;NS # HALFWIDTH KATAKANA LETTER SMALL I
+FF69;NS # HALFWIDTH KATAKANA LETTER SMALL U
+FF6A;NS # HALFWIDTH KATAKANA LETTER SMALL E
+FF6B;NS # HALFWIDTH KATAKANA LETTER SMALL O
+FF6C;NS # HALFWIDTH KATAKANA LETTER SMALL YA
+FF6D;NS # HALFWIDTH KATAKANA LETTER SMALL YU
+FF6E;NS # HALFWIDTH KATAKANA LETTER SMALL YO
+FF6F;NS # HALFWIDTH KATAKANA LETTER SMALL TU
+FF70;NS # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71;AL # HALFWIDTH KATAKANA LETTER A
+FF72;AL # HALFWIDTH KATAKANA LETTER I
+FF73;AL # HALFWIDTH KATAKANA LETTER U
+FF74;AL # HALFWIDTH KATAKANA LETTER E
+FF75;AL # HALFWIDTH KATAKANA LETTER O
+FF76;AL # HALFWIDTH KATAKANA LETTER KA
+FF77;AL # HALFWIDTH KATAKANA LETTER KI
+FF78;AL # HALFWIDTH KATAKANA LETTER KU
+FF79;AL # HALFWIDTH KATAKANA LETTER KE
+FF7A;AL # HALFWIDTH KATAKANA LETTER KO
+FF7B;AL # HALFWIDTH KATAKANA LETTER SA
+FF7C;AL # HALFWIDTH KATAKANA LETTER SI
+FF7D;AL # HALFWIDTH KATAKANA LETTER SU
+FF7E;AL # HALFWIDTH KATAKANA LETTER SE
+FF7F;AL # HALFWIDTH KATAKANA LETTER SO
+FF80;AL # HALFWIDTH KATAKANA LETTER TA
+FF81;AL # HALFWIDTH KATAKANA LETTER TI
+FF82;AL # HALFWIDTH KATAKANA LETTER TU
+FF83;AL # HALFWIDTH KATAKANA LETTER TE
+FF84;AL # HALFWIDTH KATAKANA LETTER TO
+FF85;AL # HALFWIDTH KATAKANA LETTER NA
+FF86;AL # HALFWIDTH KATAKANA LETTER NI
+FF87;AL # HALFWIDTH KATAKANA LETTER NU
+FF88;AL # HALFWIDTH KATAKANA LETTER NE
+FF89;AL # HALFWIDTH KATAKANA LETTER NO
+FF8A;AL # HALFWIDTH KATAKANA LETTER HA
+FF8B;AL # HALFWIDTH KATAKANA LETTER HI
+FF8C;AL # HALFWIDTH KATAKANA LETTER HU
+FF8D;AL # HALFWIDTH KATAKANA LETTER HE
+FF8E;AL # HALFWIDTH KATAKANA LETTER HO
+FF8F;AL # HALFWIDTH KATAKANA LETTER MA
+FF90;AL # HALFWIDTH KATAKANA LETTER MI
+FF91;AL # HALFWIDTH KATAKANA LETTER MU
+FF92;AL # HALFWIDTH KATAKANA LETTER ME
+FF93;AL # HALFWIDTH KATAKANA LETTER MO
+FF94;AL # HALFWIDTH KATAKANA LETTER YA
+FF95;AL # HALFWIDTH KATAKANA LETTER YU
+FF96;AL # HALFWIDTH KATAKANA LETTER YO
+FF97;AL # HALFWIDTH KATAKANA LETTER RA
+FF98;AL # HALFWIDTH KATAKANA LETTER RI
+FF99;AL # HALFWIDTH KATAKANA LETTER RU
+FF9A;AL # HALFWIDTH KATAKANA LETTER RE
+FF9B;AL # HALFWIDTH KATAKANA LETTER RO
+FF9C;AL # HALFWIDTH KATAKANA LETTER WA
+FF9D;AL # HALFWIDTH KATAKANA LETTER N
+FF9E;NS # HALFWIDTH KATAKANA VOICED SOUND MARK
+FF9F;NS # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0;AL # HALFWIDTH HANGUL FILLER
+FFA1;AL # HALFWIDTH HANGUL LETTER KIYEOK
+FFA2;AL # HALFWIDTH HANGUL LETTER SSANGKIYEOK
+FFA3;AL # HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+FFA4;AL # HALFWIDTH HANGUL LETTER NIEUN
+FFA5;AL # HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+FFA6;AL # HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+FFA7;AL # HALFWIDTH HANGUL LETTER TIKEUT
+FFA8;AL # HALFWIDTH HANGUL LETTER SSANGTIKEUT
+FFA9;AL # HALFWIDTH HANGUL LETTER RIEUL
+FFAA;AL # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+FFAB;AL # HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+FFAC;AL # HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+FFAD;AL # HALFWIDTH HANGUL LETTER RIEUL-SIOS
+FFAE;AL # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+FFAF;AL # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+FFB0;AL # HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+FFB1;AL # HALFWIDTH HANGUL LETTER MIEUM
+FFB2;AL # HALFWIDTH HANGUL LETTER PIEUP
+FFB3;AL # HALFWIDTH HANGUL LETTER SSANGPIEUP
+FFB4;AL # HALFWIDTH HANGUL LETTER PIEUP-SIOS
+FFB5;AL # HALFWIDTH HANGUL LETTER SIOS
+FFB6;AL # HALFWIDTH HANGUL LETTER SSANGSIOS
+FFB7;AL # HALFWIDTH HANGUL LETTER IEUNG
+FFB8;AL # HALFWIDTH HANGUL LETTER CIEUC
+FFB9;AL # HALFWIDTH HANGUL LETTER SSANGCIEUC
+FFBA;AL # HALFWIDTH HANGUL LETTER CHIEUCH
+FFBB;AL # HALFWIDTH HANGUL LETTER KHIEUKH
+FFBC;AL # HALFWIDTH HANGUL LETTER THIEUTH
+FFBD;AL # HALFWIDTH HANGUL LETTER PHIEUPH
+FFBE;AL # HALFWIDTH HANGUL LETTER HIEUH
+FFC2;AL # HALFWIDTH HANGUL LETTER A
+FFC3;AL # HALFWIDTH HANGUL LETTER AE
+FFC4;AL # HALFWIDTH HANGUL LETTER YA
+FFC5;AL # HALFWIDTH HANGUL LETTER YAE
+FFC6;AL # HALFWIDTH HANGUL LETTER EO
+FFC7;AL # HALFWIDTH HANGUL LETTER E
+FFCA;AL # HALFWIDTH HANGUL LETTER YEO
+FFCB;AL # HALFWIDTH HANGUL LETTER YE
+FFCC;AL # HALFWIDTH HANGUL LETTER O
+FFCD;AL # HALFWIDTH HANGUL LETTER WA
+FFCE;AL # HALFWIDTH HANGUL LETTER WAE
+FFCF;AL # HALFWIDTH HANGUL LETTER OE
+FFD2;AL # HALFWIDTH HANGUL LETTER YO
+FFD3;AL # HALFWIDTH HANGUL LETTER U
+FFD4;AL # HALFWIDTH HANGUL LETTER WEO
+FFD5;AL # HALFWIDTH HANGUL LETTER WE
+FFD6;AL # HALFWIDTH HANGUL LETTER WI
+FFD7;AL # HALFWIDTH HANGUL LETTER YU
+FFDA;AL # HALFWIDTH HANGUL LETTER EU
+FFDB;AL # HALFWIDTH HANGUL LETTER YI
+FFDC;AL # HALFWIDTH HANGUL LETTER I
+FFE0;PO # FULLWIDTH CENT SIGN
+FFE1;PR # FULLWIDTH POUND SIGN
+FFE2;ID # FULLWIDTH NOT SIGN
+FFE3;ID # FULLWIDTH MACRON
+FFE4;ID # FULLWIDTH BROKEN BAR
+FFE5;PR # FULLWIDTH YEN SIGN
+FFE6;PR # FULLWIDTH WON SIGN
+FFE8;AL # HALFWIDTH FORMS LIGHT VERTICAL
+FFE9;AL # HALFWIDTH LEFTWARDS ARROW
+FFEA;AL # HALFWIDTH UPWARDS ARROW
+FFEB;AL # HALFWIDTH RIGHTWARDS ARROW
+FFEC;AL # HALFWIDTH DOWNWARDS ARROW
+FFED;AL # HALFWIDTH BLACK SQUARE
+FFEE;AL # HALFWIDTH WHITE CIRCLE
+FFF9;CM # INTERLINEAR ANNOTATION ANCHOR
+FFFA;CM # INTERLINEAR ANNOTATION SEPARATOR
+FFFB;CM # INTERLINEAR ANNOTATION TERMINATOR
+FFFC;CB # OBJECT REPLACEMENT CHARACTER
+FFFD;AI # REPLACEMENT CHARACTER
+10300;AL # OLD ITALIC LETTER A
+10301;AL # OLD ITALIC LETTER BE
+10302;AL # OLD ITALIC LETTER KE
+10303;AL # OLD ITALIC LETTER DE
+10304;AL # OLD ITALIC LETTER E
+10305;AL # OLD ITALIC LETTER VE
+10306;AL # OLD ITALIC LETTER ZE
+10307;AL # OLD ITALIC LETTER HE
+10308;AL # OLD ITALIC LETTER THE
+10309;AL # OLD ITALIC LETTER I
+1030A;AL # OLD ITALIC LETTER KA
+1030B;AL # OLD ITALIC LETTER EL
+1030C;AL # OLD ITALIC LETTER EM
+1030D;AL # OLD ITALIC LETTER EN
+1030E;AL # OLD ITALIC LETTER ESH
+1030F;AL # OLD ITALIC LETTER O
+10310;AL # OLD ITALIC LETTER PE
+10311;AL # OLD ITALIC LETTER SHE
+10312;AL # OLD ITALIC LETTER KU
+10313;AL # OLD ITALIC LETTER ER
+10314;AL # OLD ITALIC LETTER ES
+10315;AL # OLD ITALIC LETTER TE
+10316;AL # OLD ITALIC LETTER U
+10317;AL # OLD ITALIC LETTER EKS
+10318;AL # OLD ITALIC LETTER PHE
+10319;AL # OLD ITALIC LETTER KHE
+1031A;AL # OLD ITALIC LETTER EF
+1031B;AL # OLD ITALIC LETTER ERS
+1031C;AL # OLD ITALIC LETTER CHE
+1031D;AL # OLD ITALIC LETTER II
+1031E;AL # OLD ITALIC LETTER UU
+10320;AL # OLD ITALIC NUMERAL ONE
+10321;AL # OLD ITALIC NUMERAL FIVE
+10322;AL # OLD ITALIC NUMERAL TEN
+10323;AL # OLD ITALIC NUMERAL FIFTY
+10330;AL # GOTHIC LETTER AHSA
+10331;AL # GOTHIC LETTER BAIRKAN
+10332;AL # GOTHIC LETTER GIBA
+10333;AL # GOTHIC LETTER DAGS
+10334;AL # GOTHIC LETTER AIHVUS
+10335;AL # GOTHIC LETTER QAIRTHRA
+10336;AL # GOTHIC LETTER IUJA
+10337;AL # GOTHIC LETTER HAGL
+10338;AL # GOTHIC LETTER THIUTH
+10339;AL # GOTHIC LETTER EIS
+1033A;AL # GOTHIC LETTER KUSMA
+1033B;AL # GOTHIC LETTER LAGUS
+1033C;AL # GOTHIC LETTER MANNA
+1033D;AL # GOTHIC LETTER NAUTHS
+1033E;AL # GOTHIC LETTER JER
+1033F;AL # GOTHIC LETTER URUS
+10340;AL # GOTHIC LETTER PAIRTHRA
+10341;AL # GOTHIC LETTER NINETY
+10342;AL # GOTHIC LETTER RAIDA
+10343;AL # GOTHIC LETTER SAUIL
+10344;AL # GOTHIC LETTER TEIWS
+10345;AL # GOTHIC LETTER WINJA
+10346;AL # GOTHIC LETTER FAIHU
+10347;AL # GOTHIC LETTER IGGWS
+10348;AL # GOTHIC LETTER HWAIR
+10349;AL # GOTHIC LETTER OTHAL
+1034A;AL # GOTHIC LETTER NINE HUNDRED
+10400;AL # DESERET CAPITAL LETTER LONG I
+10401;AL # DESERET CAPITAL LETTER LONG E
+10402;AL # DESERET CAPITAL LETTER LONG A
+10403;AL # DESERET CAPITAL LETTER LONG AH
+10404;AL # DESERET CAPITAL LETTER LONG O
+10405;AL # DESERET CAPITAL LETTER LONG OO
+10406;AL # DESERET CAPITAL LETTER SHORT I
+10407;AL # DESERET CAPITAL LETTER SHORT E
+10408;AL # DESERET CAPITAL LETTER SHORT A
+10409;AL # DESERET CAPITAL LETTER SHORT AH
+1040A;AL # DESERET CAPITAL LETTER SHORT O
+1040B;AL # DESERET CAPITAL LETTER SHORT OO
+1040C;AL # DESERET CAPITAL LETTER AY
+1040D;AL # DESERET CAPITAL LETTER OW
+1040E;AL # DESERET CAPITAL LETTER WU
+1040F;AL # DESERET CAPITAL LETTER YEE
+10410;AL # DESERET CAPITAL LETTER H
+10411;AL # DESERET CAPITAL LETTER PEE
+10412;AL # DESERET CAPITAL LETTER BEE
+10413;AL # DESERET CAPITAL LETTER TEE
+10414;AL # DESERET CAPITAL LETTER DEE
+10415;AL # DESERET CAPITAL LETTER CHEE
+10416;AL # DESERET CAPITAL LETTER JEE
+10417;AL # DESERET CAPITAL LETTER KAY
+10418;AL # DESERET CAPITAL LETTER GAY
+10419;AL # DESERET CAPITAL LETTER EF
+1041A;AL # DESERET CAPITAL LETTER VEE
+1041B;AL # DESERET CAPITAL LETTER ETH
+1041C;AL # DESERET CAPITAL LETTER THEE
+1041D;AL # DESERET CAPITAL LETTER ES
+1041E;AL # DESERET CAPITAL LETTER ZEE
+1041F;AL # DESERET CAPITAL LETTER ESH
+10420;AL # DESERET CAPITAL LETTER ZHEE
+10421;AL # DESERET CAPITAL LETTER ER
+10422;AL # DESERET CAPITAL LETTER EL
+10423;AL # DESERET CAPITAL LETTER EM
+10424;AL # DESERET CAPITAL LETTER EN
+10425;AL # DESERET CAPITAL LETTER ENG
+10428;AL # DESERET SMALL LETTER LONG I
+10429;AL # DESERET SMALL LETTER LONG E
+1042A;AL # DESERET SMALL LETTER LONG A
+1042B;AL # DESERET SMALL LETTER LONG AH
+1042C;AL # DESERET SMALL LETTER LONG O
+1042D;AL # DESERET SMALL LETTER LONG OO
+1042E;AL # DESERET SMALL LETTER SHORT I
+1042F;AL # DESERET SMALL LETTER SHORT E
+10430;AL # DESERET SMALL LETTER SHORT A
+10431;AL # DESERET SMALL LETTER SHORT AH
+10432;AL # DESERET SMALL LETTER SHORT O
+10433;AL # DESERET SMALL LETTER SHORT OO
+10434;AL # DESERET SMALL LETTER AY
+10435;AL # DESERET SMALL LETTER OW
+10436;AL # DESERET SMALL LETTER WU
+10437;AL # DESERET SMALL LETTER YEE
+10438;AL # DESERET SMALL LETTER H
+10439;AL # DESERET SMALL LETTER PEE
+1043A;AL # DESERET SMALL LETTER BEE
+1043B;AL # DESERET SMALL LETTER TEE
+1043C;AL # DESERET SMALL LETTER DEE
+1043D;AL # DESERET SMALL LETTER CHEE
+1043E;AL # DESERET SMALL LETTER JEE
+1043F;AL # DESERET SMALL LETTER KAY
+10440;AL # DESERET SMALL LETTER GAY
+10441;AL # DESERET SMALL LETTER EF
+10442;AL # DESERET SMALL LETTER VEE
+10443;AL # DESERET SMALL LETTER ETH
+10444;AL # DESERET SMALL LETTER THEE
+10445;AL # DESERET SMALL LETTER ES
+10446;AL # DESERET SMALL LETTER ZEE
+10447;AL # DESERET SMALL LETTER ESH
+10448;AL # DESERET SMALL LETTER ZHEE
+10449;AL # DESERET SMALL LETTER ER
+1044A;AL # DESERET SMALL LETTER EL
+1044B;AL # DESERET SMALL LETTER EM
+1044C;AL # DESERET SMALL LETTER EN
+1044D;AL # DESERET SMALL LETTER ENG
+1D000;AL # BYZANTINE MUSICAL SYMBOL PSILI
+1D001;AL # BYZANTINE MUSICAL SYMBOL DASEIA
+1D002;AL # BYZANTINE MUSICAL SYMBOL PERISPOMENI
+1D003;AL # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
+1D004;AL # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
+1D005;AL # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
+1D006;AL # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
+1D007;AL # BYZANTINE MUSICAL SYMBOL KATHISTI
+1D008;AL # BYZANTINE MUSICAL SYMBOL SYRMATIKI
+1D009;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI
+1D00A;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS
+1D00B;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
+1D00C;AL # BYZANTINE MUSICAL SYMBOL KREMASTI
+1D00D;AL # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
+1D00E;AL # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
+1D00F;AL # BYZANTINE MUSICAL SYMBOL TELEIA
+1D010;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA
+1D011;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS
+1D012;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
+1D013;AL # BYZANTINE MUSICAL SYMBOL SYNEVMA
+1D014;AL # BYZANTINE MUSICAL SYMBOL THITA
+1D015;AL # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
+1D016;AL # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
+1D017;AL # BYZANTINE MUSICAL SYMBOL PSILON
+1D018;AL # BYZANTINE MUSICAL SYMBOL CHAMILON
+1D019;AL # BYZANTINE MUSICAL SYMBOL VATHY
+1D01A;AL # BYZANTINE MUSICAL SYMBOL ISON ARCHAION
+1D01B;AL # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
+1D01C;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
+1D01D;AL # BYZANTINE MUSICAL SYMBOL SAXIMATA
+1D01E;AL # BYZANTINE MUSICAL SYMBOL PARICHON
+1D01F;AL # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
+1D020;AL # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
+1D021;AL # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
+1D022;AL # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
+1D023;AL # BYZANTINE MUSICAL SYMBOL APOTHEMA
+1D024;AL # BYZANTINE MUSICAL SYMBOL KLASMA
+1D025;AL # BYZANTINE MUSICAL SYMBOL REVMA
+1D026;AL # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
+1D027;AL # BYZANTINE MUSICAL SYMBOL TINAGMA
+1D028;AL # BYZANTINE MUSICAL SYMBOL ANATRICHISMA
+1D029;AL # BYZANTINE MUSICAL SYMBOL SEISMA
+1D02A;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
+1D02B;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
+1D02C;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
+1D02D;AL # BYZANTINE MUSICAL SYMBOL THEMA
+1D02E;AL # BYZANTINE MUSICAL SYMBOL LEMOI
+1D02F;AL # BYZANTINE MUSICAL SYMBOL DYO
+1D030;AL # BYZANTINE MUSICAL SYMBOL TRIA
+1D031;AL # BYZANTINE MUSICAL SYMBOL TESSERA
+1D032;AL # BYZANTINE MUSICAL SYMBOL KRATIMATA
+1D033;AL # BYZANTINE MUSICAL SYMBOL APESO EXO NEO
+1D034;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
+1D035;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORA
+1D036;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
+1D037;AL # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
+1D038;AL # BYZANTINE MUSICAL SYMBOL PELASTON
+1D039;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON
+1D03A;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA
+1D03B;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
+1D03C;AL # BYZANTINE MUSICAL SYMBOL RAPISMA
+1D03D;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
+1D03E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
+1D03F;AL # BYZANTINE MUSICAL SYMBOL ICHADIN
+1D040;AL # BYZANTINE MUSICAL SYMBOL NANA
+1D041;AL # BYZANTINE MUSICAL SYMBOL PETASMA
+1D042;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
+1D043;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
+1D044;AL # BYZANTINE MUSICAL SYMBOL STRAGGISMATA
+1D045;AL # BYZANTINE MUSICAL SYMBOL GRONTHISMATA
+1D046;AL # BYZANTINE MUSICAL SYMBOL ISON NEO
+1D047;AL # BYZANTINE MUSICAL SYMBOL OLIGON NEO
+1D048;AL # BYZANTINE MUSICAL SYMBOL OXEIA NEO
+1D049;AL # BYZANTINE MUSICAL SYMBOL PETASTI
+1D04A;AL # BYZANTINE MUSICAL SYMBOL KOUFISMA
+1D04B;AL # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
+1D04C;AL # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
+1D04D;AL # BYZANTINE MUSICAL SYMBOL PELASTON NEO
+1D04E;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
+1D04F;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
+1D050;AL # BYZANTINE MUSICAL SYMBOL YPSILI
+1D051;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
+1D052;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
+1D053;AL # BYZANTINE MUSICAL SYMBOL YPORROI
+1D054;AL # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
+1D055;AL # BYZANTINE MUSICAL SYMBOL ELAFRON
+1D056;AL # BYZANTINE MUSICAL SYMBOL CHAMILI
+1D057;AL # BYZANTINE MUSICAL SYMBOL MIKRON ISON
+1D058;AL # BYZANTINE MUSICAL SYMBOL VAREIA NEO
+1D059;AL # BYZANTINE MUSICAL SYMBOL PIASMA NEO
+1D05A;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
+1D05B;AL # BYZANTINE MUSICAL SYMBOL OMALON
+1D05C;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOMA
+1D05D;AL # BYZANTINE MUSICAL SYMBOL LYGISMA
+1D05E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
+1D05F;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
+1D060;AL # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
+1D061;AL # BYZANTINE MUSICAL SYMBOL KYLISMA
+1D062;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
+1D063;AL # BYZANTINE MUSICAL SYMBOL TROMIKON NEO
+1D064;AL # BYZANTINE MUSICAL SYMBOL EKSTREPTON
+1D065;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
+1D066;AL # BYZANTINE MUSICAL SYMBOL SYRMA
+1D067;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
+1D068;AL # BYZANTINE MUSICAL SYMBOL EPEGERMA
+1D069;AL # BYZANTINE MUSICAL SYMBOL SEISMA NEO
+1D06A;AL # BYZANTINE MUSICAL SYMBOL XIRON KLASMA
+1D06B;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
+1D06C;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
+1D06D;AL # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
+1D06E;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
+1D06F;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
+1D070;AL # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
+1D071;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
+1D072;AL # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
+1D073;AL # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
+1D074;AL # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
+1D075;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
+1D076;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
+1D077;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
+1D078;AL # BYZANTINE MUSICAL SYMBOL THEMA APLOUN
+1D079;AL # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
+1D07A;AL # BYZANTINE MUSICAL SYMBOL KATAVASMA
+1D07B;AL # BYZANTINE MUSICAL SYMBOL ENDOFONON
+1D07C;AL # BYZANTINE MUSICAL SYMBOL YFEN KATO
+1D07D;AL # BYZANTINE MUSICAL SYMBOL YFEN ANO
+1D07E;AL # BYZANTINE MUSICAL SYMBOL STAVROS
+1D07F;AL # BYZANTINE MUSICAL SYMBOL KLASMA ANO
+1D080;AL # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
+1D081;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
+1D082;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
+1D083;AL # BYZANTINE MUSICAL SYMBOL KRATIMA NEO
+1D084;AL # BYZANTINE MUSICAL SYMBOL APODERMA NEO
+1D085;AL # BYZANTINE MUSICAL SYMBOL APLI
+1D086;AL # BYZANTINE MUSICAL SYMBOL DIPLI
+1D087;AL # BYZANTINE MUSICAL SYMBOL TRIPLI
+1D088;AL # BYZANTINE MUSICAL SYMBOL TETRAPLI
+1D089;AL # BYZANTINE MUSICAL SYMBOL KORONIS
+1D08A;AL # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
+1D08B;AL # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
+1D08C;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
+1D08D;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
+1D08E;AL # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
+1D08F;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
+1D090;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
+1D091;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
+1D092;AL # BYZANTINE MUSICAL SYMBOL DIGORGON
+1D093;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
+1D094;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
+1D095;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
+1D096;AL # BYZANTINE MUSICAL SYMBOL TRIGORGON
+1D097;AL # BYZANTINE MUSICAL SYMBOL ARGON
+1D098;AL # BYZANTINE MUSICAL SYMBOL IMIDIARGON
+1D099;AL # BYZANTINE MUSICAL SYMBOL DIARGON
+1D09A;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
+1D09B;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
+1D09C;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGI
+1D09D;AL # BYZANTINE MUSICAL SYMBOL AGOGI METRIA
+1D09E;AL # BYZANTINE MUSICAL SYMBOL AGOGI MESI
+1D09F;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGI
+1D0A0;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
+1D0A1;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
+1D0A2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
+1D0A3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
+1D0A4;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
+1D0A5;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
+1D0A6;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
+1D0A7;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
+1D0A8;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
+1D0A9;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
+1D0AA;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
+1D0AB;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
+1D0AC;AL # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
+1D0AD;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
+1D0AE;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
+1D0AF;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
+1D0B0;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
+1D0B1;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
+1D0B2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
+1D0B3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
+1D0B4;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
+1D0B5;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
+1D0B6;AL # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
+1D0B7;AL # BYZANTINE MUSICAL SYMBOL IMIFONON
+1D0B8;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORON
+1D0B9;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
+1D0BA;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
+1D0BB;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
+1D0BC;AL # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
+1D0BD;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
+1D0BE;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
+1D0BF;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
+1D0C0;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
+1D0C1;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
+1D0C2;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
+1D0C3;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
+1D0C4;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
+1D0C5;AL # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
+1D0C6;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
+1D0C7;AL # BYZANTINE MUSICAL SYMBOL FTHORA NENANO
+1D0C8;AL # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
+1D0C9;AL # BYZANTINE MUSICAL SYMBOL CHROA KLITON
+1D0CA;AL # BYZANTINE MUSICAL SYMBOL CHROA SPATHI
+1D0CB;AL # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
+1D0CC;AL # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
+1D0CD;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
+1D0CE;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
+1D0CF;AL # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
+1D0D0;AL # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
+1D0D1;AL # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
+1D0D2;AL # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
+1D0D3;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
+1D0D4;AL # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
+1D0D5;AL # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
+1D0D6;AL # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
+1D0D7;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
+1D0D8;AL # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
+1D0D9;AL # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
+1D0DA;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
+1D0DB;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
+1D0DC;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
+1D0DD;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
+1D0DE;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
+1D0DF;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
+1D0E0;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
+1D0E1;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
+1D0E2;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
+1D0E3;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
+1D0E4;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
+1D0E5;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
+1D0E6;AL # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
+1D0E7;AL # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
+1D0E8;AL # BYZANTINE MUSICAL SYMBOL STIGMA
+1D0E9;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO PA
+1D0EA;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
+1D0EB;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO GA
+1D0EC;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO DI
+1D0ED;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO KE
+1D0EE;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
+1D0EF;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO NI
+1D0F0;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
+1D0F1;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
+1D0F2;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
+1D0F3;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
+1D0F4;AL # BYZANTINE MUSICAL SYMBOL KLASMA KATO
+1D0F5;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100;AL # MUSICAL SYMBOL SINGLE BARLINE
+1D101;AL # MUSICAL SYMBOL DOUBLE BARLINE
+1D102;AL # MUSICAL SYMBOL FINAL BARLINE
+1D103;AL # MUSICAL SYMBOL REVERSE FINAL BARLINE
+1D104;AL # MUSICAL SYMBOL DASHED BARLINE
+1D105;AL # MUSICAL SYMBOL SHORT BARLINE
+1D106;AL # MUSICAL SYMBOL LEFT REPEAT SIGN
+1D107;AL # MUSICAL SYMBOL RIGHT REPEAT SIGN
+1D108;AL # MUSICAL SYMBOL REPEAT DOTS
+1D109;AL # MUSICAL SYMBOL DAL SEGNO
+1D10A;AL # MUSICAL SYMBOL DA CAPO
+1D10B;AL # MUSICAL SYMBOL SEGNO
+1D10C;AL # MUSICAL SYMBOL CODA
+1D10D;AL # MUSICAL SYMBOL REPEATED FIGURE-1
+1D10E;AL # MUSICAL SYMBOL REPEATED FIGURE-2
+1D10F;AL # MUSICAL SYMBOL REPEATED FIGURE-3
+1D110;AL # MUSICAL SYMBOL FERMATA
+1D111;AL # MUSICAL SYMBOL FERMATA BELOW
+1D112;AL # MUSICAL SYMBOL BREATH MARK
+1D113;AL # MUSICAL SYMBOL CAESURA
+1D114;AL # MUSICAL SYMBOL BRACE
+1D115;AL # MUSICAL SYMBOL BRACKET
+1D116;AL # MUSICAL SYMBOL ONE-LINE STAFF
+1D117;AL # MUSICAL SYMBOL TWO-LINE STAFF
+1D118;AL # MUSICAL SYMBOL THREE-LINE STAFF
+1D119;AL # MUSICAL SYMBOL FOUR-LINE STAFF
+1D11A;AL # MUSICAL SYMBOL FIVE-LINE STAFF
+1D11B;AL # MUSICAL SYMBOL SIX-LINE STAFF
+1D11C;AL # MUSICAL SYMBOL SIX-STRING FRETBOARD
+1D11D;AL # MUSICAL SYMBOL FOUR-STRING FRETBOARD
+1D11E;AL # MUSICAL SYMBOL G CLEF
+1D11F;AL # MUSICAL SYMBOL G CLEF OTTAVA ALTA
+1D120;AL # MUSICAL SYMBOL G CLEF OTTAVA BASSA
+1D121;AL # MUSICAL SYMBOL C CLEF
+1D122;AL # MUSICAL SYMBOL F CLEF
+1D123;AL # MUSICAL SYMBOL F CLEF OTTAVA ALTA
+1D124;AL # MUSICAL SYMBOL F CLEF OTTAVA BASSA
+1D125;AL # MUSICAL SYMBOL DRUM CLEF-1
+1D126;AL # MUSICAL SYMBOL DRUM CLEF-2
+1D12A;AL # MUSICAL SYMBOL DOUBLE SHARP
+1D12B;AL # MUSICAL SYMBOL DOUBLE FLAT
+1D12C;AL # MUSICAL SYMBOL FLAT UP
+1D12D;AL # MUSICAL SYMBOL FLAT DOWN
+1D12E;AL # MUSICAL SYMBOL NATURAL UP
+1D12F;AL # MUSICAL SYMBOL NATURAL DOWN
+1D130;AL # MUSICAL SYMBOL SHARP UP
+1D131;AL # MUSICAL SYMBOL SHARP DOWN
+1D132;AL # MUSICAL SYMBOL QUARTER TONE SHARP
+1D133;AL # MUSICAL SYMBOL QUARTER TONE FLAT
+1D134;AL # MUSICAL SYMBOL COMMON TIME
+1D135;AL # MUSICAL SYMBOL CUT TIME
+1D136;AL # MUSICAL SYMBOL OTTAVA ALTA
+1D137;AL # MUSICAL SYMBOL OTTAVA BASSA
+1D138;AL # MUSICAL SYMBOL QUINDICESIMA ALTA
+1D139;AL # MUSICAL SYMBOL QUINDICESIMA BASSA
+1D13A;AL # MUSICAL SYMBOL MULTI REST
+1D13B;AL # MUSICAL SYMBOL WHOLE REST
+1D13C;AL # MUSICAL SYMBOL HALF REST
+1D13D;AL # MUSICAL SYMBOL QUARTER REST
+1D13E;AL # MUSICAL SYMBOL EIGHTH REST
+1D13F;AL # MUSICAL SYMBOL SIXTEENTH REST
+1D140;AL # MUSICAL SYMBOL THIRTY-SECOND REST
+1D141;AL # MUSICAL SYMBOL SIXTY-FOURTH REST
+1D142;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
+1D143;AL # MUSICAL SYMBOL X NOTEHEAD
+1D144;AL # MUSICAL SYMBOL PLUS NOTEHEAD
+1D145;AL # MUSICAL SYMBOL CIRCLE X NOTEHEAD
+1D146;AL # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
+1D147;AL # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
+1D148;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
+1D149;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
+1D14A;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
+1D14B;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
+1D14C;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
+1D14D;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
+1D14E;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
+1D14F;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
+1D150;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
+1D151;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
+1D152;AL # MUSICAL SYMBOL MOON NOTEHEAD WHITE
+1D153;AL # MUSICAL SYMBOL MOON NOTEHEAD BLACK
+1D154;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
+1D155;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
+1D156;AL # MUSICAL SYMBOL PARENTHESIS NOTEHEAD
+1D157;AL # MUSICAL SYMBOL VOID NOTEHEAD
+1D158;AL # MUSICAL SYMBOL NOTEHEAD BLACK
+1D159;AL # MUSICAL SYMBOL NULL NOTEHEAD
+1D15A;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
+1D15B;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
+1D15C;AL # MUSICAL SYMBOL BREVE
+1D15D;AL # MUSICAL SYMBOL WHOLE NOTE
+1D15E;AL # MUSICAL SYMBOL HALF NOTE
+1D15F;AL # MUSICAL SYMBOL QUARTER NOTE
+1D160;AL # MUSICAL SYMBOL EIGHTH NOTE
+1D161;AL # MUSICAL SYMBOL SIXTEENTH NOTE
+1D162;AL # MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163;AL # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D165;CM # MUSICAL SYMBOL COMBINING STEM
+1D166;CM # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D167;CM # MUSICAL SYMBOL COMBINING TREMOLO-1
+1D168;CM # MUSICAL SYMBOL COMBINING TREMOLO-2
+1D169;CM # MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16A;AL # MUSICAL SYMBOL FINGERED TREMOLO-1
+1D16B;AL # MUSICAL SYMBOL FINGERED TREMOLO-2
+1D16C;AL # MUSICAL SYMBOL FINGERED TREMOLO-3
+1D16D;CM # MUSICAL SYMBOL COMBINING AUGMENTATION DOT
+1D16E;CM # MUSICAL SYMBOL COMBINING FLAG-1
+1D16F;CM # MUSICAL SYMBOL COMBINING FLAG-2
+1D170;CM # MUSICAL SYMBOL COMBINING FLAG-3
+1D171;CM # MUSICAL SYMBOL COMBINING FLAG-4
+1D172;CM # MUSICAL SYMBOL COMBINING FLAG-5
+1D173;CM # MUSICAL SYMBOL BEGIN BEAM
+1D174;CM # MUSICAL SYMBOL END BEAM
+1D175;CM # MUSICAL SYMBOL BEGIN TIE
+1D176;CM # MUSICAL SYMBOL END TIE
+1D177;CM # MUSICAL SYMBOL BEGIN SLUR
+1D178;CM # MUSICAL SYMBOL END SLUR
+1D179;CM # MUSICAL SYMBOL BEGIN PHRASE
+1D17A;CM # MUSICAL SYMBOL END PHRASE
+1D17B;CM # MUSICAL SYMBOL COMBINING ACCENT
+1D17C;CM # MUSICAL SYMBOL COMBINING STACCATO
+1D17D;CM # MUSICAL SYMBOL COMBINING TENUTO
+1D17E;CM # MUSICAL SYMBOL COMBINING STACCATISSIMO
+1D17F;CM # MUSICAL SYMBOL COMBINING MARCATO
+1D180;CM # MUSICAL SYMBOL COMBINING MARCATO-STACCATO
+1D181;CM # MUSICAL SYMBOL COMBINING ACCENT-STACCATO
+1D182;CM # MUSICAL SYMBOL COMBINING LOURE
+1D183;AL # MUSICAL SYMBOL ARPEGGIATO UP
+1D184;AL # MUSICAL SYMBOL ARPEGGIATO DOWN
+1D185;CM # MUSICAL SYMBOL COMBINING DOIT
+1D186;CM # MUSICAL SYMBOL COMBINING RIP
+1D187;CM # MUSICAL SYMBOL COMBINING FLIP
+1D188;CM # MUSICAL SYMBOL COMBINING SMEAR
+1D189;CM # MUSICAL SYMBOL COMBINING BEND
+1D18A;CM # MUSICAL SYMBOL COMBINING DOUBLE TONGUE
+1D18B;CM # MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D18C;AL # MUSICAL SYMBOL RINFORZANDO
+1D18D;AL # MUSICAL SYMBOL SUBITO
+1D18E;AL # MUSICAL SYMBOL Z
+1D18F;AL # MUSICAL SYMBOL PIANO
+1D190;AL # MUSICAL SYMBOL MEZZO
+1D191;AL # MUSICAL SYMBOL FORTE
+1D192;AL # MUSICAL SYMBOL CRESCENDO
+1D193;AL # MUSICAL SYMBOL DECRESCENDO
+1D194;AL # MUSICAL SYMBOL GRACE NOTE SLASH
+1D195;AL # MUSICAL SYMBOL GRACE NOTE NO SLASH
+1D196;AL # MUSICAL SYMBOL TR
+1D197;AL # MUSICAL SYMBOL TURN
+1D198;AL # MUSICAL SYMBOL INVERTED TURN
+1D199;AL # MUSICAL SYMBOL TURN SLASH
+1D19A;AL # MUSICAL SYMBOL TURN UP
+1D19B;AL # MUSICAL SYMBOL ORNAMENT STROKE-1
+1D19C;AL # MUSICAL SYMBOL ORNAMENT STROKE-2
+1D19D;AL # MUSICAL SYMBOL ORNAMENT STROKE-3
+1D19E;AL # MUSICAL SYMBOL ORNAMENT STROKE-4
+1D19F;AL # MUSICAL SYMBOL ORNAMENT STROKE-5
+1D1A0;AL # MUSICAL SYMBOL ORNAMENT STROKE-6
+1D1A1;AL # MUSICAL SYMBOL ORNAMENT STROKE-7
+1D1A2;AL # MUSICAL SYMBOL ORNAMENT STROKE-8
+1D1A3;AL # MUSICAL SYMBOL ORNAMENT STROKE-9
+1D1A4;AL # MUSICAL SYMBOL ORNAMENT STROKE-10
+1D1A5;AL # MUSICAL SYMBOL ORNAMENT STROKE-11
+1D1A6;AL # MUSICAL SYMBOL HAUPTSTIMME
+1D1A7;AL # MUSICAL SYMBOL NEBENSTIMME
+1D1A8;AL # MUSICAL SYMBOL END OF STIMME
+1D1A9;AL # MUSICAL SYMBOL DEGREE SLASH
+1D1AA;CM # MUSICAL SYMBOL COMBINING DOWN BOW
+1D1AB;CM # MUSICAL SYMBOL COMBINING UP BOW
+1D1AC;CM # MUSICAL SYMBOL COMBINING HARMONIC
+1D1AD;CM # MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D1AE;AL # MUSICAL SYMBOL PEDAL MARK
+1D1AF;AL # MUSICAL SYMBOL PEDAL UP MARK
+1D1B0;AL # MUSICAL SYMBOL HALF PEDAL MARK
+1D1B1;AL # MUSICAL SYMBOL GLISSANDO UP
+1D1B2;AL # MUSICAL SYMBOL GLISSANDO DOWN
+1D1B3;AL # MUSICAL SYMBOL WITH FINGERNAILS
+1D1B4;AL # MUSICAL SYMBOL DAMP
+1D1B5;AL # MUSICAL SYMBOL DAMP ALL
+1D1B6;AL # MUSICAL SYMBOL MAXIMA
+1D1B7;AL # MUSICAL SYMBOL LONGA
+1D1B8;AL # MUSICAL SYMBOL BREVIS
+1D1B9;AL # MUSICAL SYMBOL SEMIBREVIS WHITE
+1D1BA;AL # MUSICAL SYMBOL SEMIBREVIS BLACK
+1D1BB;AL # MUSICAL SYMBOL MINIMA
+1D1BC;AL # MUSICAL SYMBOL MINIMA BLACK
+1D1BD;AL # MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE;AL # MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF;AL # MUSICAL SYMBOL FUSA WHITE
+1D1C0;AL # MUSICAL SYMBOL FUSA BLACK
+1D1C1;AL # MUSICAL SYMBOL LONGA PERFECTA REST
+1D1C2;AL # MUSICAL SYMBOL LONGA IMPERFECTA REST
+1D1C3;AL # MUSICAL SYMBOL BREVIS REST
+1D1C4;AL # MUSICAL SYMBOL SEMIBREVIS REST
+1D1C5;AL # MUSICAL SYMBOL MINIMA REST
+1D1C6;AL # MUSICAL SYMBOL SEMIMINIMA REST
+1D1C7;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
+1D1C8;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
+1D1C9;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
+1D1CA;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
+1D1CB;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
+1D1CC;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
+1D1CD;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
+1D1CE;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
+1D1CF;AL # MUSICAL SYMBOL CROIX
+1D1D0;AL # MUSICAL SYMBOL GREGORIAN C CLEF
+1D1D1;AL # MUSICAL SYMBOL GREGORIAN F CLEF
+1D1D2;AL # MUSICAL SYMBOL SQUARE B
+1D1D3;AL # MUSICAL SYMBOL VIRGA
+1D1D4;AL # MUSICAL SYMBOL PODATUS
+1D1D5;AL # MUSICAL SYMBOL CLIVIS
+1D1D6;AL # MUSICAL SYMBOL SCANDICUS
+1D1D7;AL # MUSICAL SYMBOL CLIMACUS
+1D1D8;AL # MUSICAL SYMBOL TORCULUS
+1D1D9;AL # MUSICAL SYMBOL PORRECTUS
+1D1DA;AL # MUSICAL SYMBOL PORRECTUS FLEXUS
+1D1DB;AL # MUSICAL SYMBOL SCANDICUS FLEXUS
+1D1DC;AL # MUSICAL SYMBOL TORCULUS RESUPINUS
+1D1DD;AL # MUSICAL SYMBOL PES SUBPUNCTIS
+1D400;AL # MATHEMATICAL BOLD CAPITAL A
+1D401;AL # MATHEMATICAL BOLD CAPITAL B
+1D402;AL # MATHEMATICAL BOLD CAPITAL C
+1D403;AL # MATHEMATICAL BOLD CAPITAL D
+1D404;AL # MATHEMATICAL BOLD CAPITAL E
+1D405;AL # MATHEMATICAL BOLD CAPITAL F
+1D406;AL # MATHEMATICAL BOLD CAPITAL G
+1D407;AL # MATHEMATICAL BOLD CAPITAL H
+1D408;AL # MATHEMATICAL BOLD CAPITAL I
+1D409;AL # MATHEMATICAL BOLD CAPITAL J
+1D40A;AL # MATHEMATICAL BOLD CAPITAL K
+1D40B;AL # MATHEMATICAL BOLD CAPITAL L
+1D40C;AL # MATHEMATICAL BOLD CAPITAL M
+1D40D;AL # MATHEMATICAL BOLD CAPITAL N
+1D40E;AL # MATHEMATICAL BOLD CAPITAL O
+1D40F;AL # MATHEMATICAL BOLD CAPITAL P
+1D410;AL # MATHEMATICAL BOLD CAPITAL Q
+1D411;AL # MATHEMATICAL BOLD CAPITAL R
+1D412;AL # MATHEMATICAL BOLD CAPITAL S
+1D413;AL # MATHEMATICAL BOLD CAPITAL T
+1D414;AL # MATHEMATICAL BOLD CAPITAL U
+1D415;AL # MATHEMATICAL BOLD CAPITAL V
+1D416;AL # MATHEMATICAL BOLD CAPITAL W
+1D417;AL # MATHEMATICAL BOLD CAPITAL X
+1D418;AL # MATHEMATICAL BOLD CAPITAL Y
+1D419;AL # MATHEMATICAL BOLD CAPITAL Z
+1D41A;AL # MATHEMATICAL BOLD SMALL A
+1D41B;AL # MATHEMATICAL BOLD SMALL B
+1D41C;AL # MATHEMATICAL BOLD SMALL C
+1D41D;AL # MATHEMATICAL BOLD SMALL D
+1D41E;AL # MATHEMATICAL BOLD SMALL E
+1D41F;AL # MATHEMATICAL BOLD SMALL F
+1D420;AL # MATHEMATICAL BOLD SMALL G
+1D421;AL # MATHEMATICAL BOLD SMALL H
+1D422;AL # MATHEMATICAL BOLD SMALL I
+1D423;AL # MATHEMATICAL BOLD SMALL J
+1D424;AL # MATHEMATICAL BOLD SMALL K
+1D425;AL # MATHEMATICAL BOLD SMALL L
+1D426;AL # MATHEMATICAL BOLD SMALL M
+1D427;AL # MATHEMATICAL BOLD SMALL N
+1D428;AL # MATHEMATICAL BOLD SMALL O
+1D429;AL # MATHEMATICAL BOLD SMALL P
+1D42A;AL # MATHEMATICAL BOLD SMALL Q
+1D42B;AL # MATHEMATICAL BOLD SMALL R
+1D42C;AL # MATHEMATICAL BOLD SMALL S
+1D42D;AL # MATHEMATICAL BOLD SMALL T
+1D42E;AL # MATHEMATICAL BOLD SMALL U
+1D42F;AL # MATHEMATICAL BOLD SMALL V
+1D430;AL # MATHEMATICAL BOLD SMALL W
+1D431;AL # MATHEMATICAL BOLD SMALL X
+1D432;AL # MATHEMATICAL BOLD SMALL Y
+1D433;AL # MATHEMATICAL BOLD SMALL Z
+1D434;AL # MATHEMATICAL ITALIC CAPITAL A
+1D435;AL # MATHEMATICAL ITALIC CAPITAL B
+1D436;AL # MATHEMATICAL ITALIC CAPITAL C
+1D437;AL # MATHEMATICAL ITALIC CAPITAL D
+1D438;AL # MATHEMATICAL ITALIC CAPITAL E
+1D439;AL # MATHEMATICAL ITALIC CAPITAL F
+1D43A;AL # MATHEMATICAL ITALIC CAPITAL G
+1D43B;AL # MATHEMATICAL ITALIC CAPITAL H
+1D43C;AL # MATHEMATICAL ITALIC CAPITAL I
+1D43D;AL # MATHEMATICAL ITALIC CAPITAL J
+1D43E;AL # MATHEMATICAL ITALIC CAPITAL K
+1D43F;AL # MATHEMATICAL ITALIC CAPITAL L
+1D440;AL # MATHEMATICAL ITALIC CAPITAL M
+1D441;AL # MATHEMATICAL ITALIC CAPITAL N
+1D442;AL # MATHEMATICAL ITALIC CAPITAL O
+1D443;AL # MATHEMATICAL ITALIC CAPITAL P
+1D444;AL # MATHEMATICAL ITALIC CAPITAL Q
+1D445;AL # MATHEMATICAL ITALIC CAPITAL R
+1D446;AL # MATHEMATICAL ITALIC CAPITAL S
+1D447;AL # MATHEMATICAL ITALIC CAPITAL T
+1D448;AL # MATHEMATICAL ITALIC CAPITAL U
+1D449;AL # MATHEMATICAL ITALIC CAPITAL V
+1D44A;AL # MATHEMATICAL ITALIC CAPITAL W
+1D44B;AL # MATHEMATICAL ITALIC CAPITAL X
+1D44C;AL # MATHEMATICAL ITALIC CAPITAL Y
+1D44D;AL # MATHEMATICAL ITALIC CAPITAL Z
+1D44E;AL # MATHEMATICAL ITALIC SMALL A
+1D44F;AL # MATHEMATICAL ITALIC SMALL B
+1D450;AL # MATHEMATICAL ITALIC SMALL C
+1D451;AL # MATHEMATICAL ITALIC SMALL D
+1D452;AL # MATHEMATICAL ITALIC SMALL E
+1D453;AL # MATHEMATICAL ITALIC SMALL F
+1D454;AL # MATHEMATICAL ITALIC SMALL G
+1D456;AL # MATHEMATICAL ITALIC SMALL I
+1D457;AL # MATHEMATICAL ITALIC SMALL J
+1D458;AL # MATHEMATICAL ITALIC SMALL K
+1D459;AL # MATHEMATICAL ITALIC SMALL L
+1D45A;AL # MATHEMATICAL ITALIC SMALL M
+1D45B;AL # MATHEMATICAL ITALIC SMALL N
+1D45C;AL # MATHEMATICAL ITALIC SMALL O
+1D45D;AL # MATHEMATICAL ITALIC SMALL P
+1D45E;AL # MATHEMATICAL ITALIC SMALL Q
+1D45F;AL # MATHEMATICAL ITALIC SMALL R
+1D460;AL # MATHEMATICAL ITALIC SMALL S
+1D461;AL # MATHEMATICAL ITALIC SMALL T
+1D462;AL # MATHEMATICAL ITALIC SMALL U
+1D463;AL # MATHEMATICAL ITALIC SMALL V
+1D464;AL # MATHEMATICAL ITALIC SMALL W
+1D465;AL # MATHEMATICAL ITALIC SMALL X
+1D466;AL # MATHEMATICAL ITALIC SMALL Y
+1D467;AL # MATHEMATICAL ITALIC SMALL Z
+1D468;AL # MATHEMATICAL BOLD ITALIC CAPITAL A
+1D469;AL # MATHEMATICAL BOLD ITALIC CAPITAL B
+1D46A;AL # MATHEMATICAL BOLD ITALIC CAPITAL C
+1D46B;AL # MATHEMATICAL BOLD ITALIC CAPITAL D
+1D46C;AL # MATHEMATICAL BOLD ITALIC CAPITAL E
+1D46D;AL # MATHEMATICAL BOLD ITALIC CAPITAL F
+1D46E;AL # MATHEMATICAL BOLD ITALIC CAPITAL G
+1D46F;AL # MATHEMATICAL BOLD ITALIC CAPITAL H
+1D470;AL # MATHEMATICAL BOLD ITALIC CAPITAL I
+1D471;AL # MATHEMATICAL BOLD ITALIC CAPITAL J
+1D472;AL # MATHEMATICAL BOLD ITALIC CAPITAL K
+1D473;AL # MATHEMATICAL BOLD ITALIC CAPITAL L
+1D474;AL # MATHEMATICAL BOLD ITALIC CAPITAL M
+1D475;AL # MATHEMATICAL BOLD ITALIC CAPITAL N
+1D476;AL # MATHEMATICAL BOLD ITALIC CAPITAL O
+1D477;AL # MATHEMATICAL BOLD ITALIC CAPITAL P
+1D478;AL # MATHEMATICAL BOLD ITALIC CAPITAL Q
+1D479;AL # MATHEMATICAL BOLD ITALIC CAPITAL R
+1D47A;AL # MATHEMATICAL BOLD ITALIC CAPITAL S
+1D47B;AL # MATHEMATICAL BOLD ITALIC CAPITAL T
+1D47C;AL # MATHEMATICAL BOLD ITALIC CAPITAL U
+1D47D;AL # MATHEMATICAL BOLD ITALIC CAPITAL V
+1D47E;AL # MATHEMATICAL BOLD ITALIC CAPITAL W
+1D47F;AL # MATHEMATICAL BOLD ITALIC CAPITAL X
+1D480;AL # MATHEMATICAL BOLD ITALIC CAPITAL Y
+1D481;AL # MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D482;AL # MATHEMATICAL BOLD ITALIC SMALL A
+1D483;AL # MATHEMATICAL BOLD ITALIC SMALL B
+1D484;AL # MATHEMATICAL BOLD ITALIC SMALL C
+1D485;AL # MATHEMATICAL BOLD ITALIC SMALL D
+1D486;AL # MATHEMATICAL BOLD ITALIC SMALL E
+1D487;AL # MATHEMATICAL BOLD ITALIC SMALL F
+1D488;AL # MATHEMATICAL BOLD ITALIC SMALL G
+1D489;AL # MATHEMATICAL BOLD ITALIC SMALL H
+1D48A;AL # MATHEMATICAL BOLD ITALIC SMALL I
+1D48B;AL # MATHEMATICAL BOLD ITALIC SMALL J
+1D48C;AL # MATHEMATICAL BOLD ITALIC SMALL K
+1D48D;AL # MATHEMATICAL BOLD ITALIC SMALL L
+1D48E;AL # MATHEMATICAL BOLD ITALIC SMALL M
+1D48F;AL # MATHEMATICAL BOLD ITALIC SMALL N
+1D490;AL # MATHEMATICAL BOLD ITALIC SMALL O
+1D491;AL # MATHEMATICAL BOLD ITALIC SMALL P
+1D492;AL # MATHEMATICAL BOLD ITALIC SMALL Q
+1D493;AL # MATHEMATICAL BOLD ITALIC SMALL R
+1D494;AL # MATHEMATICAL BOLD ITALIC SMALL S
+1D495;AL # MATHEMATICAL BOLD ITALIC SMALL T
+1D496;AL # MATHEMATICAL BOLD ITALIC SMALL U
+1D497;AL # MATHEMATICAL BOLD ITALIC SMALL V
+1D498;AL # MATHEMATICAL BOLD ITALIC SMALL W
+1D499;AL # MATHEMATICAL BOLD ITALIC SMALL X
+1D49A;AL # MATHEMATICAL BOLD ITALIC SMALL Y
+1D49B;AL # MATHEMATICAL BOLD ITALIC SMALL Z
+1D49C;AL # MATHEMATICAL SCRIPT CAPITAL A
+1D49E;AL # MATHEMATICAL SCRIPT CAPITAL C
+1D49F;AL # MATHEMATICAL SCRIPT CAPITAL D
+1D4A2;AL # MATHEMATICAL SCRIPT CAPITAL G
+1D4A5;AL # MATHEMATICAL SCRIPT CAPITAL J
+1D4A6;AL # MATHEMATICAL SCRIPT CAPITAL K
+1D4A9;AL # MATHEMATICAL SCRIPT CAPITAL N
+1D4AA;AL # MATHEMATICAL SCRIPT CAPITAL O
+1D4AB;AL # MATHEMATICAL SCRIPT CAPITAL P
+1D4AC;AL # MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE;AL # MATHEMATICAL SCRIPT CAPITAL S
+1D4AF;AL # MATHEMATICAL SCRIPT CAPITAL T
+1D4B0;AL # MATHEMATICAL SCRIPT CAPITAL U
+1D4B1;AL # MATHEMATICAL SCRIPT CAPITAL V
+1D4B2;AL # MATHEMATICAL SCRIPT CAPITAL W
+1D4B3;AL # MATHEMATICAL SCRIPT CAPITAL X
+1D4B4;AL # MATHEMATICAL SCRIPT CAPITAL Y
+1D4B5;AL # MATHEMATICAL SCRIPT CAPITAL Z
+1D4B6;AL # MATHEMATICAL SCRIPT SMALL A
+1D4B7;AL # MATHEMATICAL SCRIPT SMALL B
+1D4B8;AL # MATHEMATICAL SCRIPT SMALL C
+1D4B9;AL # MATHEMATICAL SCRIPT SMALL D
+1D4BB;AL # MATHEMATICAL SCRIPT SMALL F
+1D4BD;AL # MATHEMATICAL SCRIPT SMALL H
+1D4BE;AL # MATHEMATICAL SCRIPT SMALL I
+1D4BF;AL # MATHEMATICAL SCRIPT SMALL J
+1D4C0;AL # MATHEMATICAL SCRIPT SMALL K
+1D4C2;AL # MATHEMATICAL SCRIPT SMALL M
+1D4C3;AL # MATHEMATICAL SCRIPT SMALL N
+1D4C5;AL # MATHEMATICAL SCRIPT SMALL P
+1D4C6;AL # MATHEMATICAL SCRIPT SMALL Q
+1D4C7;AL # MATHEMATICAL SCRIPT SMALL R
+1D4C8;AL # MATHEMATICAL SCRIPT SMALL S
+1D4C9;AL # MATHEMATICAL SCRIPT SMALL T
+1D4CA;AL # MATHEMATICAL SCRIPT SMALL U
+1D4CB;AL # MATHEMATICAL SCRIPT SMALL V
+1D4CC;AL # MATHEMATICAL SCRIPT SMALL W
+1D4CD;AL # MATHEMATICAL SCRIPT SMALL X
+1D4CE;AL # MATHEMATICAL SCRIPT SMALL Y
+1D4CF;AL # MATHEMATICAL SCRIPT SMALL Z
+1D4D0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL A
+1D4D1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL B
+1D4D2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL C
+1D4D3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL D
+1D4D4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL E
+1D4D5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL F
+1D4D6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL G
+1D4D7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL H
+1D4D8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL I
+1D4D9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL J
+1D4DA;AL # MATHEMATICAL BOLD SCRIPT CAPITAL K
+1D4DB;AL # MATHEMATICAL BOLD SCRIPT CAPITAL L
+1D4DC;AL # MATHEMATICAL BOLD SCRIPT CAPITAL M
+1D4DD;AL # MATHEMATICAL BOLD SCRIPT CAPITAL N
+1D4DE;AL # MATHEMATICAL BOLD SCRIPT CAPITAL O
+1D4DF;AL # MATHEMATICAL BOLD SCRIPT CAPITAL P
+1D4E0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Q
+1D4E1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL R
+1D4E2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL S
+1D4E3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL T
+1D4E4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL U
+1D4E5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL V
+1D4E6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL W
+1D4E7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL X
+1D4E8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Y
+1D4E9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D4EA;AL # MATHEMATICAL BOLD SCRIPT SMALL A
+1D4EB;AL # MATHEMATICAL BOLD SCRIPT SMALL B
+1D4EC;AL # MATHEMATICAL BOLD SCRIPT SMALL C
+1D4ED;AL # MATHEMATICAL BOLD SCRIPT SMALL D
+1D4EE;AL # MATHEMATICAL BOLD SCRIPT SMALL E
+1D4EF;AL # MATHEMATICAL BOLD SCRIPT SMALL F
+1D4F0;AL # MATHEMATICAL BOLD SCRIPT SMALL G
+1D4F1;AL # MATHEMATICAL BOLD SCRIPT SMALL H
+1D4F2;AL # MATHEMATICAL BOLD SCRIPT SMALL I
+1D4F3;AL # MATHEMATICAL BOLD SCRIPT SMALL J
+1D4F4;AL # MATHEMATICAL BOLD SCRIPT SMALL K
+1D4F5;AL # MATHEMATICAL BOLD SCRIPT SMALL L
+1D4F6;AL # MATHEMATICAL BOLD SCRIPT SMALL M
+1D4F7;AL # MATHEMATICAL BOLD SCRIPT SMALL N
+1D4F8;AL # MATHEMATICAL BOLD SCRIPT SMALL O
+1D4F9;AL # MATHEMATICAL BOLD SCRIPT SMALL P
+1D4FA;AL # MATHEMATICAL BOLD SCRIPT SMALL Q
+1D4FB;AL # MATHEMATICAL BOLD SCRIPT SMALL R
+1D4FC;AL # MATHEMATICAL BOLD SCRIPT SMALL S
+1D4FD;AL # MATHEMATICAL BOLD SCRIPT SMALL T
+1D4FE;AL # MATHEMATICAL BOLD SCRIPT SMALL U
+1D4FF;AL # MATHEMATICAL BOLD SCRIPT SMALL V
+1D500;AL # MATHEMATICAL BOLD SCRIPT SMALL W
+1D501;AL # MATHEMATICAL BOLD SCRIPT SMALL X
+1D502;AL # MATHEMATICAL BOLD SCRIPT SMALL Y
+1D503;AL # MATHEMATICAL BOLD SCRIPT SMALL Z
+1D504;AL # MATHEMATICAL FRAKTUR CAPITAL A
+1D505;AL # MATHEMATICAL FRAKTUR CAPITAL B
+1D507;AL # MATHEMATICAL FRAKTUR CAPITAL D
+1D508;AL # MATHEMATICAL FRAKTUR CAPITAL E
+1D509;AL # MATHEMATICAL FRAKTUR CAPITAL F
+1D50A;AL # MATHEMATICAL FRAKTUR CAPITAL G
+1D50D;AL # MATHEMATICAL FRAKTUR CAPITAL J
+1D50E;AL # MATHEMATICAL FRAKTUR CAPITAL K
+1D50F;AL # MATHEMATICAL FRAKTUR CAPITAL L
+1D510;AL # MATHEMATICAL FRAKTUR CAPITAL M
+1D511;AL # MATHEMATICAL FRAKTUR CAPITAL N
+1D512;AL # MATHEMATICAL FRAKTUR CAPITAL O
+1D513;AL # MATHEMATICAL FRAKTUR CAPITAL P
+1D514;AL # MATHEMATICAL FRAKTUR CAPITAL Q
+1D516;AL # MATHEMATICAL FRAKTUR CAPITAL S
+1D517;AL # MATHEMATICAL FRAKTUR CAPITAL T
+1D518;AL # MATHEMATICAL FRAKTUR CAPITAL U
+1D519;AL # MATHEMATICAL FRAKTUR CAPITAL V
+1D51A;AL # MATHEMATICAL FRAKTUR CAPITAL W
+1D51B;AL # MATHEMATICAL FRAKTUR CAPITAL X
+1D51C;AL # MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E;AL # MATHEMATICAL FRAKTUR SMALL A
+1D51F;AL # MATHEMATICAL FRAKTUR SMALL B
+1D520;AL # MATHEMATICAL FRAKTUR SMALL C
+1D521;AL # MATHEMATICAL FRAKTUR SMALL D
+1D522;AL # MATHEMATICAL FRAKTUR SMALL E
+1D523;AL # MATHEMATICAL FRAKTUR SMALL F
+1D524;AL # MATHEMATICAL FRAKTUR SMALL G
+1D525;AL # MATHEMATICAL FRAKTUR SMALL H
+1D526;AL # MATHEMATICAL FRAKTUR SMALL I
+1D527;AL # MATHEMATICAL FRAKTUR SMALL J
+1D528;AL # MATHEMATICAL FRAKTUR SMALL K
+1D529;AL # MATHEMATICAL FRAKTUR SMALL L
+1D52A;AL # MATHEMATICAL FRAKTUR SMALL M
+1D52B;AL # MATHEMATICAL FRAKTUR SMALL N
+1D52C;AL # MATHEMATICAL FRAKTUR SMALL O
+1D52D;AL # MATHEMATICAL FRAKTUR SMALL P
+1D52E;AL # MATHEMATICAL FRAKTUR SMALL Q
+1D52F;AL # MATHEMATICAL FRAKTUR SMALL R
+1D530;AL # MATHEMATICAL FRAKTUR SMALL S
+1D531;AL # MATHEMATICAL FRAKTUR SMALL T
+1D532;AL # MATHEMATICAL FRAKTUR SMALL U
+1D533;AL # MATHEMATICAL FRAKTUR SMALL V
+1D534;AL # MATHEMATICAL FRAKTUR SMALL W
+1D535;AL # MATHEMATICAL FRAKTUR SMALL X
+1D536;AL # MATHEMATICAL FRAKTUR SMALL Y
+1D537;AL # MATHEMATICAL FRAKTUR SMALL Z
+1D538;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+1D539;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+1D53C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+1D53D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+1D53E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+1D541;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+1D542;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+1D543;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+1D544;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+1D54B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+1D54C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+1D54D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+1D54E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+1D54F;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+1D550;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552;AL # MATHEMATICAL DOUBLE-STRUCK SMALL A
+1D553;AL # MATHEMATICAL DOUBLE-STRUCK SMALL B
+1D554;AL # MATHEMATICAL DOUBLE-STRUCK SMALL C
+1D555;AL # MATHEMATICAL DOUBLE-STRUCK SMALL D
+1D556;AL # MATHEMATICAL DOUBLE-STRUCK SMALL E
+1D557;AL # MATHEMATICAL DOUBLE-STRUCK SMALL F
+1D558;AL # MATHEMATICAL DOUBLE-STRUCK SMALL G
+1D559;AL # MATHEMATICAL DOUBLE-STRUCK SMALL H
+1D55A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL I
+1D55B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL J
+1D55C;AL # MATHEMATICAL DOUBLE-STRUCK SMALL K
+1D55D;AL # MATHEMATICAL DOUBLE-STRUCK SMALL L
+1D55E;AL # MATHEMATICAL DOUBLE-STRUCK SMALL M
+1D55F;AL # MATHEMATICAL DOUBLE-STRUCK SMALL N
+1D560;AL # MATHEMATICAL DOUBLE-STRUCK SMALL O
+1D561;AL # MATHEMATICAL DOUBLE-STRUCK SMALL P
+1D562;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Q
+1D563;AL # MATHEMATICAL DOUBLE-STRUCK SMALL R
+1D564;AL # MATHEMATICAL DOUBLE-STRUCK SMALL S
+1D565;AL # MATHEMATICAL DOUBLE-STRUCK SMALL T
+1D566;AL # MATHEMATICAL DOUBLE-STRUCK SMALL U
+1D567;AL # MATHEMATICAL DOUBLE-STRUCK SMALL V
+1D568;AL # MATHEMATICAL DOUBLE-STRUCK SMALL W
+1D569;AL # MATHEMATICAL DOUBLE-STRUCK SMALL X
+1D56A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Y
+1D56B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Z
+1D56C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL A
+1D56D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL B
+1D56E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL C
+1D56F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL D
+1D570;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL E
+1D571;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL F
+1D572;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL G
+1D573;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL H
+1D574;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL I
+1D575;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL J
+1D576;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL K
+1D577;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL L
+1D578;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL M
+1D579;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL N
+1D57A;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL O
+1D57B;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL P
+1D57C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+1D57D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL R
+1D57E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL S
+1D57F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL T
+1D580;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL U
+1D581;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL V
+1D582;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL W
+1D583;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL X
+1D584;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+1D585;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D586;AL # MATHEMATICAL BOLD FRAKTUR SMALL A
+1D587;AL # MATHEMATICAL BOLD FRAKTUR SMALL B
+1D588;AL # MATHEMATICAL BOLD FRAKTUR SMALL C
+1D589;AL # MATHEMATICAL BOLD FRAKTUR SMALL D
+1D58A;AL # MATHEMATICAL BOLD FRAKTUR SMALL E
+1D58B;AL # MATHEMATICAL BOLD FRAKTUR SMALL F
+1D58C;AL # MATHEMATICAL BOLD FRAKTUR SMALL G
+1D58D;AL # MATHEMATICAL BOLD FRAKTUR SMALL H
+1D58E;AL # MATHEMATICAL BOLD FRAKTUR SMALL I
+1D58F;AL # MATHEMATICAL BOLD FRAKTUR SMALL J
+1D590;AL # MATHEMATICAL BOLD FRAKTUR SMALL K
+1D591;AL # MATHEMATICAL BOLD FRAKTUR SMALL L
+1D592;AL # MATHEMATICAL BOLD FRAKTUR SMALL M
+1D593;AL # MATHEMATICAL BOLD FRAKTUR SMALL N
+1D594;AL # MATHEMATICAL BOLD FRAKTUR SMALL O
+1D595;AL # MATHEMATICAL BOLD FRAKTUR SMALL P
+1D596;AL # MATHEMATICAL BOLD FRAKTUR SMALL Q
+1D597;AL # MATHEMATICAL BOLD FRAKTUR SMALL R
+1D598;AL # MATHEMATICAL BOLD FRAKTUR SMALL S
+1D599;AL # MATHEMATICAL BOLD FRAKTUR SMALL T
+1D59A;AL # MATHEMATICAL BOLD FRAKTUR SMALL U
+1D59B;AL # MATHEMATICAL BOLD FRAKTUR SMALL V
+1D59C;AL # MATHEMATICAL BOLD FRAKTUR SMALL W
+1D59D;AL # MATHEMATICAL BOLD FRAKTUR SMALL X
+1D59E;AL # MATHEMATICAL BOLD FRAKTUR SMALL Y
+1D59F;AL # MATHEMATICAL BOLD FRAKTUR SMALL Z
+1D5A0;AL # MATHEMATICAL SANS-SERIF CAPITAL A
+1D5A1;AL # MATHEMATICAL SANS-SERIF CAPITAL B
+1D5A2;AL # MATHEMATICAL SANS-SERIF CAPITAL C
+1D5A3;AL # MATHEMATICAL SANS-SERIF CAPITAL D
+1D5A4;AL # MATHEMATICAL SANS-SERIF CAPITAL E
+1D5A5;AL # MATHEMATICAL SANS-SERIF CAPITAL F
+1D5A6;AL # MATHEMATICAL SANS-SERIF CAPITAL G
+1D5A7;AL # MATHEMATICAL SANS-SERIF CAPITAL H
+1D5A8;AL # MATHEMATICAL SANS-SERIF CAPITAL I
+1D5A9;AL # MATHEMATICAL SANS-SERIF CAPITAL J
+1D5AA;AL # MATHEMATICAL SANS-SERIF CAPITAL K
+1D5AB;AL # MATHEMATICAL SANS-SERIF CAPITAL L
+1D5AC;AL # MATHEMATICAL SANS-SERIF CAPITAL M
+1D5AD;AL # MATHEMATICAL SANS-SERIF CAPITAL N
+1D5AE;AL # MATHEMATICAL SANS-SERIF CAPITAL O
+1D5AF;AL # MATHEMATICAL SANS-SERIF CAPITAL P
+1D5B0;AL # MATHEMATICAL SANS-SERIF CAPITAL Q
+1D5B1;AL # MATHEMATICAL SANS-SERIF CAPITAL R
+1D5B2;AL # MATHEMATICAL SANS-SERIF CAPITAL S
+1D5B3;AL # MATHEMATICAL SANS-SERIF CAPITAL T
+1D5B4;AL # MATHEMATICAL SANS-SERIF CAPITAL U
+1D5B5;AL # MATHEMATICAL SANS-SERIF CAPITAL V
+1D5B6;AL # MATHEMATICAL SANS-SERIF CAPITAL W
+1D5B7;AL # MATHEMATICAL SANS-SERIF CAPITAL X
+1D5B8;AL # MATHEMATICAL SANS-SERIF CAPITAL Y
+1D5B9;AL # MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5BA;AL # MATHEMATICAL SANS-SERIF SMALL A
+1D5BB;AL # MATHEMATICAL SANS-SERIF SMALL B
+1D5BC;AL # MATHEMATICAL SANS-SERIF SMALL C
+1D5BD;AL # MATHEMATICAL SANS-SERIF SMALL D
+1D5BE;AL # MATHEMATICAL SANS-SERIF SMALL E
+1D5BF;AL # MATHEMATICAL SANS-SERIF SMALL F
+1D5C0;AL # MATHEMATICAL SANS-SERIF SMALL G
+1D5C1;AL # MATHEMATICAL SANS-SERIF SMALL H
+1D5C2;AL # MATHEMATICAL SANS-SERIF SMALL I
+1D5C3;AL # MATHEMATICAL SANS-SERIF SMALL J
+1D5C4;AL # MATHEMATICAL SANS-SERIF SMALL K
+1D5C5;AL # MATHEMATICAL SANS-SERIF SMALL L
+1D5C6;AL # MATHEMATICAL SANS-SERIF SMALL M
+1D5C7;AL # MATHEMATICAL SANS-SERIF SMALL N
+1D5C8;AL # MATHEMATICAL SANS-SERIF SMALL O
+1D5C9;AL # MATHEMATICAL SANS-SERIF SMALL P
+1D5CA;AL # MATHEMATICAL SANS-SERIF SMALL Q
+1D5CB;AL # MATHEMATICAL SANS-SERIF SMALL R
+1D5CC;AL # MATHEMATICAL SANS-SERIF SMALL S
+1D5CD;AL # MATHEMATICAL SANS-SERIF SMALL T
+1D5CE;AL # MATHEMATICAL SANS-SERIF SMALL U
+1D5CF;AL # MATHEMATICAL SANS-SERIF SMALL V
+1D5D0;AL # MATHEMATICAL SANS-SERIF SMALL W
+1D5D1;AL # MATHEMATICAL SANS-SERIF SMALL X
+1D5D2;AL # MATHEMATICAL SANS-SERIF SMALL Y
+1D5D3;AL # MATHEMATICAL SANS-SERIF SMALL Z
+1D5D4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+1D5D5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+1D5D6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+1D5D7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+1D5D8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+1D5D9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+1D5DA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+1D5DB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+1D5DC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+1D5DD;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+1D5DE;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+1D5DF;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+1D5E0;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+1D5E1;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+1D5E2;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+1D5E3;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+1D5E4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+1D5E5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+1D5E6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+1D5E7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+1D5E8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+1D5E9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+1D5EA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+1D5EB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+1D5EC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+1D5ED;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D5EE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL A
+1D5EF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL B
+1D5F0;AL # MATHEMATICAL SANS-SERIF BOLD SMALL C
+1D5F1;AL # MATHEMATICAL SANS-SERIF BOLD SMALL D
+1D5F2;AL # MATHEMATICAL SANS-SERIF BOLD SMALL E
+1D5F3;AL # MATHEMATICAL SANS-SERIF BOLD SMALL F
+1D5F4;AL # MATHEMATICAL SANS-SERIF BOLD SMALL G
+1D5F5;AL # MATHEMATICAL SANS-SERIF BOLD SMALL H
+1D5F6;AL # MATHEMATICAL SANS-SERIF BOLD SMALL I
+1D5F7;AL # MATHEMATICAL SANS-SERIF BOLD SMALL J
+1D5F8;AL # MATHEMATICAL SANS-SERIF BOLD SMALL K
+1D5F9;AL # MATHEMATICAL SANS-SERIF BOLD SMALL L
+1D5FA;AL # MATHEMATICAL SANS-SERIF BOLD SMALL M
+1D5FB;AL # MATHEMATICAL SANS-SERIF BOLD SMALL N
+1D5FC;AL # MATHEMATICAL SANS-SERIF BOLD SMALL O
+1D5FD;AL # MATHEMATICAL SANS-SERIF BOLD SMALL P
+1D5FE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Q
+1D5FF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL R
+1D600;AL # MATHEMATICAL SANS-SERIF BOLD SMALL S
+1D601;AL # MATHEMATICAL SANS-SERIF BOLD SMALL T
+1D602;AL # MATHEMATICAL SANS-SERIF BOLD SMALL U
+1D603;AL # MATHEMATICAL SANS-SERIF BOLD SMALL V
+1D604;AL # MATHEMATICAL SANS-SERIF BOLD SMALL W
+1D605;AL # MATHEMATICAL SANS-SERIF BOLD SMALL X
+1D606;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Y
+1D607;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Z
+1D608;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+1D609;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+1D60A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+1D60B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+1D60C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+1D60D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+1D60E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+1D60F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+1D610;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+1D611;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+1D612;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+1D613;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+1D614;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+1D615;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+1D616;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+1D617;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+1D618;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+1D619;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+1D61A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+1D61B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+1D61C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+1D61D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+1D61E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+1D61F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+1D620;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+1D621;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D622;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL A
+1D623;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL B
+1D624;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL C
+1D625;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL D
+1D626;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL E
+1D627;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL F
+1D628;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL G
+1D629;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL H
+1D62A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL I
+1D62B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL J
+1D62C;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL K
+1D62D;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL L
+1D62E;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL M
+1D62F;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL N
+1D630;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL O
+1D631;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL P
+1D632;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Q
+1D633;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL R
+1D634;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL S
+1D635;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL T
+1D636;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL U
+1D637;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL V
+1D638;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL W
+1D639;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL X
+1D63A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Y
+1D63B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+1D63C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+1D63D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+1D63E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+1D63F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+1D640;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+1D641;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+1D642;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+1D643;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+1D644;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+1D645;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+1D646;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+1D647;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+1D648;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+1D649;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+1D64A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+1D64B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+1D64C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+1D64D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+1D64E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+1D64F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+1D650;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+1D651;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+1D652;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+1D653;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+1D654;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+1D655;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D656;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+1D657;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+1D658;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+1D659;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+1D65A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+1D65B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
+1D65C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+1D65D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
+1D65E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+1D65F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+1D660;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+1D661;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+1D662;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+1D663;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+1D664;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+1D665;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+1D666;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
+1D667;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+1D668;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+1D669;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+1D66A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+1D66B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+1D66C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
+1D66D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+1D66E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
+1D66F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+1D670;AL # MATHEMATICAL MONOSPACE CAPITAL A
+1D671;AL # MATHEMATICAL MONOSPACE CAPITAL B
+1D672;AL # MATHEMATICAL MONOSPACE CAPITAL C
+1D673;AL # MATHEMATICAL MONOSPACE CAPITAL D
+1D674;AL # MATHEMATICAL MONOSPACE CAPITAL E
+1D675;AL # MATHEMATICAL MONOSPACE CAPITAL F
+1D676;AL # MATHEMATICAL MONOSPACE CAPITAL G
+1D677;AL # MATHEMATICAL MONOSPACE CAPITAL H
+1D678;AL # MATHEMATICAL MONOSPACE CAPITAL I
+1D679;AL # MATHEMATICAL MONOSPACE CAPITAL J
+1D67A;AL # MATHEMATICAL MONOSPACE CAPITAL K
+1D67B;AL # MATHEMATICAL MONOSPACE CAPITAL L
+1D67C;AL # MATHEMATICAL MONOSPACE CAPITAL M
+1D67D;AL # MATHEMATICAL MONOSPACE CAPITAL N
+1D67E;AL # MATHEMATICAL MONOSPACE CAPITAL O
+1D67F;AL # MATHEMATICAL MONOSPACE CAPITAL P
+1D680;AL # MATHEMATICAL MONOSPACE CAPITAL Q
+1D681;AL # MATHEMATICAL MONOSPACE CAPITAL R
+1D682;AL # MATHEMATICAL MONOSPACE CAPITAL S
+1D683;AL # MATHEMATICAL MONOSPACE CAPITAL T
+1D684;AL # MATHEMATICAL MONOSPACE CAPITAL U
+1D685;AL # MATHEMATICAL MONOSPACE CAPITAL V
+1D686;AL # MATHEMATICAL MONOSPACE CAPITAL W
+1D687;AL # MATHEMATICAL MONOSPACE CAPITAL X
+1D688;AL # MATHEMATICAL MONOSPACE CAPITAL Y
+1D689;AL # MATHEMATICAL MONOSPACE CAPITAL Z
+1D68A;AL # MATHEMATICAL MONOSPACE SMALL A
+1D68B;AL # MATHEMATICAL MONOSPACE SMALL B
+1D68C;AL # MATHEMATICAL MONOSPACE SMALL C
+1D68D;AL # MATHEMATICAL MONOSPACE SMALL D
+1D68E;AL # MATHEMATICAL MONOSPACE SMALL E
+1D68F;AL # MATHEMATICAL MONOSPACE SMALL F
+1D690;AL # MATHEMATICAL MONOSPACE SMALL G
+1D691;AL # MATHEMATICAL MONOSPACE SMALL H
+1D692;AL # MATHEMATICAL MONOSPACE SMALL I
+1D693;AL # MATHEMATICAL MONOSPACE SMALL J
+1D694;AL # MATHEMATICAL MONOSPACE SMALL K
+1D695;AL # MATHEMATICAL MONOSPACE SMALL L
+1D696;AL # MATHEMATICAL MONOSPACE SMALL M
+1D697;AL # MATHEMATICAL MONOSPACE SMALL N
+1D698;AL # MATHEMATICAL MONOSPACE SMALL O
+1D699;AL # MATHEMATICAL MONOSPACE SMALL P
+1D69A;AL # MATHEMATICAL MONOSPACE SMALL Q
+1D69B;AL # MATHEMATICAL MONOSPACE SMALL R
+1D69C;AL # MATHEMATICAL MONOSPACE SMALL S
+1D69D;AL # MATHEMATICAL MONOSPACE SMALL T
+1D69E;AL # MATHEMATICAL MONOSPACE SMALL U
+1D69F;AL # MATHEMATICAL MONOSPACE SMALL V
+1D6A0;AL # MATHEMATICAL MONOSPACE SMALL W
+1D6A1;AL # MATHEMATICAL MONOSPACE SMALL X
+1D6A2;AL # MATHEMATICAL MONOSPACE SMALL Y
+1D6A3;AL # MATHEMATICAL MONOSPACE SMALL Z
+1D6A8;AL # MATHEMATICAL BOLD CAPITAL ALPHA
+1D6A9;AL # MATHEMATICAL BOLD CAPITAL BETA
+1D6AA;AL # MATHEMATICAL BOLD CAPITAL GAMMA
+1D6AB;AL # MATHEMATICAL BOLD CAPITAL DELTA
+1D6AC;AL # MATHEMATICAL BOLD CAPITAL EPSILON
+1D6AD;AL # MATHEMATICAL BOLD CAPITAL ZETA
+1D6AE;AL # MATHEMATICAL BOLD CAPITAL ETA
+1D6AF;AL # MATHEMATICAL BOLD CAPITAL THETA
+1D6B0;AL # MATHEMATICAL BOLD CAPITAL IOTA
+1D6B1;AL # MATHEMATICAL BOLD CAPITAL KAPPA
+1D6B2;AL # MATHEMATICAL BOLD CAPITAL LAMDA
+1D6B3;AL # MATHEMATICAL BOLD CAPITAL MU
+1D6B4;AL # MATHEMATICAL BOLD CAPITAL NU
+1D6B5;AL # MATHEMATICAL BOLD CAPITAL XI
+1D6B6;AL # MATHEMATICAL BOLD CAPITAL OMICRON
+1D6B7;AL # MATHEMATICAL BOLD CAPITAL PI
+1D6B8;AL # MATHEMATICAL BOLD CAPITAL RHO
+1D6B9;AL # MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+1D6BA;AL # MATHEMATICAL BOLD CAPITAL SIGMA
+1D6BB;AL # MATHEMATICAL BOLD CAPITAL TAU
+1D6BC;AL # MATHEMATICAL BOLD CAPITAL UPSILON
+1D6BD;AL # MATHEMATICAL BOLD CAPITAL PHI
+1D6BE;AL # MATHEMATICAL BOLD CAPITAL CHI
+1D6BF;AL # MATHEMATICAL BOLD CAPITAL PSI
+1D6C0;AL # MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1;AL # MATHEMATICAL BOLD NABLA
+1D6C2;AL # MATHEMATICAL BOLD SMALL ALPHA
+1D6C3;AL # MATHEMATICAL BOLD SMALL BETA
+1D6C4;AL # MATHEMATICAL BOLD SMALL GAMMA
+1D6C5;AL # MATHEMATICAL BOLD SMALL DELTA
+1D6C6;AL # MATHEMATICAL BOLD SMALL EPSILON
+1D6C7;AL # MATHEMATICAL BOLD SMALL ZETA
+1D6C8;AL # MATHEMATICAL BOLD SMALL ETA
+1D6C9;AL # MATHEMATICAL BOLD SMALL THETA
+1D6CA;AL # MATHEMATICAL BOLD SMALL IOTA
+1D6CB;AL # MATHEMATICAL BOLD SMALL KAPPA
+1D6CC;AL # MATHEMATICAL BOLD SMALL LAMDA
+1D6CD;AL # MATHEMATICAL BOLD SMALL MU
+1D6CE;AL # MATHEMATICAL BOLD SMALL NU
+1D6CF;AL # MATHEMATICAL BOLD SMALL XI
+1D6D0;AL # MATHEMATICAL BOLD SMALL OMICRON
+1D6D1;AL # MATHEMATICAL BOLD SMALL PI
+1D6D2;AL # MATHEMATICAL BOLD SMALL RHO
+1D6D3;AL # MATHEMATICAL BOLD SMALL FINAL SIGMA
+1D6D4;AL # MATHEMATICAL BOLD SMALL SIGMA
+1D6D5;AL # MATHEMATICAL BOLD SMALL TAU
+1D6D6;AL # MATHEMATICAL BOLD SMALL UPSILON
+1D6D7;AL # MATHEMATICAL BOLD SMALL PHI
+1D6D8;AL # MATHEMATICAL BOLD SMALL CHI
+1D6D9;AL # MATHEMATICAL BOLD SMALL PSI
+1D6DA;AL # MATHEMATICAL BOLD SMALL OMEGA
+1D6DB;AL # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC;AL # MATHEMATICAL BOLD EPSILON SYMBOL
+1D6DD;AL # MATHEMATICAL BOLD THETA SYMBOL
+1D6DE;AL # MATHEMATICAL BOLD KAPPA SYMBOL
+1D6DF;AL # MATHEMATICAL BOLD PHI SYMBOL
+1D6E0;AL # MATHEMATICAL BOLD RHO SYMBOL
+1D6E1;AL # MATHEMATICAL BOLD PI SYMBOL
+1D6E2;AL # MATHEMATICAL ITALIC CAPITAL ALPHA
+1D6E3;AL # MATHEMATICAL ITALIC CAPITAL BETA
+1D6E4;AL # MATHEMATICAL ITALIC CAPITAL GAMMA
+1D6E5;AL # MATHEMATICAL ITALIC CAPITAL DELTA
+1D6E6;AL # MATHEMATICAL ITALIC CAPITAL EPSILON
+1D6E7;AL # MATHEMATICAL ITALIC CAPITAL ZETA
+1D6E8;AL # MATHEMATICAL ITALIC CAPITAL ETA
+1D6E9;AL # MATHEMATICAL ITALIC CAPITAL THETA
+1D6EA;AL # MATHEMATICAL ITALIC CAPITAL IOTA
+1D6EB;AL # MATHEMATICAL ITALIC CAPITAL KAPPA
+1D6EC;AL # MATHEMATICAL ITALIC CAPITAL LAMDA
+1D6ED;AL # MATHEMATICAL ITALIC CAPITAL MU
+1D6EE;AL # MATHEMATICAL ITALIC CAPITAL NU
+1D6EF;AL # MATHEMATICAL ITALIC CAPITAL XI
+1D6F0;AL # MATHEMATICAL ITALIC CAPITAL OMICRON
+1D6F1;AL # MATHEMATICAL ITALIC CAPITAL PI
+1D6F2;AL # MATHEMATICAL ITALIC CAPITAL RHO
+1D6F3;AL # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+1D6F4;AL # MATHEMATICAL ITALIC CAPITAL SIGMA
+1D6F5;AL # MATHEMATICAL ITALIC CAPITAL TAU
+1D6F6;AL # MATHEMATICAL ITALIC CAPITAL UPSILON
+1D6F7;AL # MATHEMATICAL ITALIC CAPITAL PHI
+1D6F8;AL # MATHEMATICAL ITALIC CAPITAL CHI
+1D6F9;AL # MATHEMATICAL ITALIC CAPITAL PSI
+1D6FA;AL # MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB;AL # MATHEMATICAL ITALIC NABLA
+1D6FC;AL # MATHEMATICAL ITALIC SMALL ALPHA
+1D6FD;AL # MATHEMATICAL ITALIC SMALL BETA
+1D6FE;AL # MATHEMATICAL ITALIC SMALL GAMMA
+1D6FF;AL # MATHEMATICAL ITALIC SMALL DELTA
+1D700;AL # MATHEMATICAL ITALIC SMALL EPSILON
+1D701;AL # MATHEMATICAL ITALIC SMALL ZETA
+1D702;AL # MATHEMATICAL ITALIC SMALL ETA
+1D703;AL # MATHEMATICAL ITALIC SMALL THETA
+1D704;AL # MATHEMATICAL ITALIC SMALL IOTA
+1D705;AL # MATHEMATICAL ITALIC SMALL KAPPA
+1D706;AL # MATHEMATICAL ITALIC SMALL LAMDA
+1D707;AL # MATHEMATICAL ITALIC SMALL MU
+1D708;AL # MATHEMATICAL ITALIC SMALL NU
+1D709;AL # MATHEMATICAL ITALIC SMALL XI
+1D70A;AL # MATHEMATICAL ITALIC SMALL OMICRON
+1D70B;AL # MATHEMATICAL ITALIC SMALL PI
+1D70C;AL # MATHEMATICAL ITALIC SMALL RHO
+1D70D;AL # MATHEMATICAL ITALIC SMALL FINAL SIGMA
+1D70E;AL # MATHEMATICAL ITALIC SMALL SIGMA
+1D70F;AL # MATHEMATICAL ITALIC SMALL TAU
+1D710;AL # MATHEMATICAL ITALIC SMALL UPSILON
+1D711;AL # MATHEMATICAL ITALIC SMALL PHI
+1D712;AL # MATHEMATICAL ITALIC SMALL CHI
+1D713;AL # MATHEMATICAL ITALIC SMALL PSI
+1D714;AL # MATHEMATICAL ITALIC SMALL OMEGA
+1D715;AL # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716;AL # MATHEMATICAL ITALIC EPSILON SYMBOL
+1D717;AL # MATHEMATICAL ITALIC THETA SYMBOL
+1D718;AL # MATHEMATICAL ITALIC KAPPA SYMBOL
+1D719;AL # MATHEMATICAL ITALIC PHI SYMBOL
+1D71A;AL # MATHEMATICAL ITALIC RHO SYMBOL
+1D71B;AL # MATHEMATICAL ITALIC PI SYMBOL
+1D71C;AL # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+1D71D;AL # MATHEMATICAL BOLD ITALIC CAPITAL BETA
+1D71E;AL # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+1D71F;AL # MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+1D720;AL # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+1D721;AL # MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+1D722;AL # MATHEMATICAL BOLD ITALIC CAPITAL ETA
+1D723;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA
+1D724;AL # MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+1D725;AL # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+1D726;AL # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+1D727;AL # MATHEMATICAL BOLD ITALIC CAPITAL MU
+1D728;AL # MATHEMATICAL BOLD ITALIC CAPITAL NU
+1D729;AL # MATHEMATICAL BOLD ITALIC CAPITAL XI
+1D72A;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+1D72B;AL # MATHEMATICAL BOLD ITALIC CAPITAL PI
+1D72C;AL # MATHEMATICAL BOLD ITALIC CAPITAL RHO
+1D72D;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+1D72E;AL # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+1D72F;AL # MATHEMATICAL BOLD ITALIC CAPITAL TAU
+1D730;AL # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+1D731;AL # MATHEMATICAL BOLD ITALIC CAPITAL PHI
+1D732;AL # MATHEMATICAL BOLD ITALIC CAPITAL CHI
+1D733;AL # MATHEMATICAL BOLD ITALIC CAPITAL PSI
+1D734;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735;AL # MATHEMATICAL BOLD ITALIC NABLA
+1D736;AL # MATHEMATICAL BOLD ITALIC SMALL ALPHA
+1D737;AL # MATHEMATICAL BOLD ITALIC SMALL BETA
+1D738;AL # MATHEMATICAL BOLD ITALIC SMALL GAMMA
+1D739;AL # MATHEMATICAL BOLD ITALIC SMALL DELTA
+1D73A;AL # MATHEMATICAL BOLD ITALIC SMALL EPSILON
+1D73B;AL # MATHEMATICAL BOLD ITALIC SMALL ZETA
+1D73C;AL # MATHEMATICAL BOLD ITALIC SMALL ETA
+1D73D;AL # MATHEMATICAL BOLD ITALIC SMALL THETA
+1D73E;AL # MATHEMATICAL BOLD ITALIC SMALL IOTA
+1D73F;AL # MATHEMATICAL BOLD ITALIC SMALL KAPPA
+1D740;AL # MATHEMATICAL BOLD ITALIC SMALL LAMDA
+1D741;AL # MATHEMATICAL BOLD ITALIC SMALL MU
+1D742;AL # MATHEMATICAL BOLD ITALIC SMALL NU
+1D743;AL # MATHEMATICAL BOLD ITALIC SMALL XI
+1D744;AL # MATHEMATICAL BOLD ITALIC SMALL OMICRON
+1D745;AL # MATHEMATICAL BOLD ITALIC SMALL PI
+1D746;AL # MATHEMATICAL BOLD ITALIC SMALL RHO
+1D747;AL # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+1D748;AL # MATHEMATICAL BOLD ITALIC SMALL SIGMA
+1D749;AL # MATHEMATICAL BOLD ITALIC SMALL TAU
+1D74A;AL # MATHEMATICAL BOLD ITALIC SMALL UPSILON
+1D74B;AL # MATHEMATICAL BOLD ITALIC SMALL PHI
+1D74C;AL # MATHEMATICAL BOLD ITALIC SMALL CHI
+1D74D;AL # MATHEMATICAL BOLD ITALIC SMALL PSI
+1D74E;AL # MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F;AL # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750;AL # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
+1D751;AL # MATHEMATICAL BOLD ITALIC THETA SYMBOL
+1D752;AL # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
+1D753;AL # MATHEMATICAL BOLD ITALIC PHI SYMBOL
+1D754;AL # MATHEMATICAL BOLD ITALIC RHO SYMBOL
+1D755;AL # MATHEMATICAL BOLD ITALIC PI SYMBOL
+1D756;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+1D757;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+1D758;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+1D759;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+1D75A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+1D75B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+1D75C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+1D75D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+1D75E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+1D75F;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+1D760;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+1D761;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+1D762;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+1D763;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+1D764;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+1D765;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+1D766;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+1D767;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+1D768;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+1D769;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+1D76A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+1D76B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+1D76C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+1D76D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+1D76E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F;AL # MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
+1D771;AL # MATHEMATICAL SANS-SERIF BOLD SMALL BETA
+1D772;AL # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
+1D773;AL # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
+1D774;AL # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
+1D775;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
+1D776;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ETA
+1D777;AL # MATHEMATICAL SANS-SERIF BOLD SMALL THETA
+1D778;AL # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
+1D779;AL # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
+1D77A;AL # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
+1D77B;AL # MATHEMATICAL SANS-SERIF BOLD SMALL MU
+1D77C;AL # MATHEMATICAL SANS-SERIF BOLD SMALL NU
+1D77D;AL # MATHEMATICAL SANS-SERIF BOLD SMALL XI
+1D77E;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
+1D77F;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PI
+1D780;AL # MATHEMATICAL SANS-SERIF BOLD SMALL RHO
+1D781;AL # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+1D782;AL # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
+1D783;AL # MATHEMATICAL SANS-SERIF BOLD SMALL TAU
+1D784;AL # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
+1D785;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PHI
+1D786;AL # MATHEMATICAL SANS-SERIF BOLD SMALL CHI
+1D787;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PSI
+1D788;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789;AL # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A;AL # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
+1D78B;AL # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
+1D78C;AL # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
+1D78D;AL # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
+1D78E;AL # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
+1D78F;AL # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+1D790;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+1D791;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+1D792;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+1D793;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+1D794;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+1D795;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+1D796;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+1D797;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+1D798;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+1D799;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+1D79A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+1D79B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+1D79C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+1D79D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+1D79E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+1D79F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+1D7A0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+1D7A1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+1D7A2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+1D7A3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+1D7A4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+1D7A5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+1D7A6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+1D7A7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+1D7A8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
+1D7AB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
+1D7AC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
+1D7AD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
+1D7AE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
+1D7AF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
+1D7B0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
+1D7B1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
+1D7B2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
+1D7B3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
+1D7B4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
+1D7B5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
+1D7B6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
+1D7B7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
+1D7B8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
+1D7B9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
+1D7BA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
+1D7BB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+1D7BC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
+1D7BD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
+1D7BE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
+1D7BF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
+1D7C0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
+1D7C1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
+1D7C2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
+1D7C5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
+1D7C6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
+1D7C7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
+1D7C8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
+1D7C9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+1D7CE;NU # MATHEMATICAL BOLD DIGIT ZERO
+1D7CF;NU # MATHEMATICAL BOLD DIGIT ONE
+1D7D0;NU # MATHEMATICAL BOLD DIGIT TWO
+1D7D1;NU # MATHEMATICAL BOLD DIGIT THREE
+1D7D2;NU # MATHEMATICAL BOLD DIGIT FOUR
+1D7D3;NU # MATHEMATICAL BOLD DIGIT FIVE
+1D7D4;NU # MATHEMATICAL BOLD DIGIT SIX
+1D7D5;NU # MATHEMATICAL BOLD DIGIT SEVEN
+1D7D6;NU # MATHEMATICAL BOLD DIGIT EIGHT
+1D7D7;NU # MATHEMATICAL BOLD DIGIT NINE
+1D7D8;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
+1D7D9;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
+1D7DA;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
+1D7DB;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
+1D7DC;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
+1D7DD;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
+1D7DE;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
+1D7DF;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
+1D7E0;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
+1D7E1;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
+1D7E2;NU # MATHEMATICAL SANS-SERIF DIGIT ZERO
+1D7E3;NU # MATHEMATICAL SANS-SERIF DIGIT ONE
+1D7E4;NU # MATHEMATICAL SANS-SERIF DIGIT TWO
+1D7E5;NU # MATHEMATICAL SANS-SERIF DIGIT THREE
+1D7E6;NU # MATHEMATICAL SANS-SERIF DIGIT FOUR
+1D7E7;NU # MATHEMATICAL SANS-SERIF DIGIT FIVE
+1D7E8;NU # MATHEMATICAL SANS-SERIF DIGIT SIX
+1D7E9;NU # MATHEMATICAL SANS-SERIF DIGIT SEVEN
+1D7EA;NU # MATHEMATICAL SANS-SERIF DIGIT EIGHT
+1D7EB;NU # MATHEMATICAL SANS-SERIF DIGIT NINE
+1D7EC;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
+1D7ED;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
+1D7EE;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
+1D7EF;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
+1D7F0;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
+1D7F1;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
+1D7F2;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
+1D7F3;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
+1D7F4;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
+1D7F5;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
+1D7F6;NU # MATHEMATICAL MONOSPACE DIGIT ZERO
+1D7F7;NU # MATHEMATICAL MONOSPACE DIGIT ONE
+1D7F8;NU # MATHEMATICAL MONOSPACE DIGIT TWO
+1D7F9;NU # MATHEMATICAL MONOSPACE DIGIT THREE
+1D7FA;NU # MATHEMATICAL MONOSPACE DIGIT FOUR
+1D7FB;NU # MATHEMATICAL MONOSPACE DIGIT FIVE
+1D7FC;NU # MATHEMATICAL MONOSPACE DIGIT SIX
+1D7FD;NU # MATHEMATICAL MONOSPACE DIGIT SEVEN
+1D7FE;NU # MATHEMATICAL MONOSPACE DIGIT EIGHT
+1D7FF;NU # MATHEMATICAL MONOSPACE DIGIT NINE
+20000..2A6D6;ID # <CJK Ideograph Extension B, First>..<CJK Ideograph Extension B, Last>
+2F800;ID # CJK COMPATIBILITY IDEOGRAPH-2F800
+2F801;ID # CJK COMPATIBILITY IDEOGRAPH-2F801
+2F802;ID # CJK COMPATIBILITY IDEOGRAPH-2F802
+2F803;ID # CJK COMPATIBILITY IDEOGRAPH-2F803
+2F804;ID # CJK COMPATIBILITY IDEOGRAPH-2F804
+2F805;ID # CJK COMPATIBILITY IDEOGRAPH-2F805
+2F806;ID # CJK COMPATIBILITY IDEOGRAPH-2F806
+2F807;ID # CJK COMPATIBILITY IDEOGRAPH-2F807
+2F808;ID # CJK COMPATIBILITY IDEOGRAPH-2F808
+2F809;ID # CJK COMPATIBILITY IDEOGRAPH-2F809
+2F80A;ID # CJK COMPATIBILITY IDEOGRAPH-2F80A
+2F80B;ID # CJK COMPATIBILITY IDEOGRAPH-2F80B
+2F80C;ID # CJK COMPATIBILITY IDEOGRAPH-2F80C
+2F80D;ID # CJK COMPATIBILITY IDEOGRAPH-2F80D
+2F80E;ID # CJK COMPATIBILITY IDEOGRAPH-2F80E
+2F80F;ID # CJK COMPATIBILITY IDEOGRAPH-2F80F
+2F810;ID # CJK COMPATIBILITY IDEOGRAPH-2F810
+2F811;ID # CJK COMPATIBILITY IDEOGRAPH-2F811
+2F812;ID # CJK COMPATIBILITY IDEOGRAPH-2F812
+2F813;ID # CJK COMPATIBILITY IDEOGRAPH-2F813
+2F814;ID # CJK COMPATIBILITY IDEOGRAPH-2F814
+2F815;ID # CJK COMPATIBILITY IDEOGRAPH-2F815
+2F816;ID # CJK COMPATIBILITY IDEOGRAPH-2F816
+2F817;ID # CJK COMPATIBILITY IDEOGRAPH-2F817
+2F818;ID # CJK COMPATIBILITY IDEOGRAPH-2F818
+2F819;ID # CJK COMPATIBILITY IDEOGRAPH-2F819
+2F81A;ID # CJK COMPATIBILITY IDEOGRAPH-2F81A
+2F81B;ID # CJK COMPATIBILITY IDEOGRAPH-2F81B
+2F81C;ID # CJK COMPATIBILITY IDEOGRAPH-2F81C
+2F81D;ID # CJK COMPATIBILITY IDEOGRAPH-2F81D
+2F81E;ID # CJK COMPATIBILITY IDEOGRAPH-2F81E
+2F81F;ID # CJK COMPATIBILITY IDEOGRAPH-2F81F
+2F820;ID # CJK COMPATIBILITY IDEOGRAPH-2F820
+2F821;ID # CJK COMPATIBILITY IDEOGRAPH-2F821
+2F822;ID # CJK COMPATIBILITY IDEOGRAPH-2F822
+2F823;ID # CJK COMPATIBILITY IDEOGRAPH-2F823
+2F824;ID # CJK COMPATIBILITY IDEOGRAPH-2F824
+2F825;ID # CJK COMPATIBILITY IDEOGRAPH-2F825
+2F826;ID # CJK COMPATIBILITY IDEOGRAPH-2F826
+2F827;ID # CJK COMPATIBILITY IDEOGRAPH-2F827
+2F828;ID # CJK COMPATIBILITY IDEOGRAPH-2F828
+2F829;ID # CJK COMPATIBILITY IDEOGRAPH-2F829
+2F82A;ID # CJK COMPATIBILITY IDEOGRAPH-2F82A
+2F82B;ID # CJK COMPATIBILITY IDEOGRAPH-2F82B
+2F82C;ID # CJK COMPATIBILITY IDEOGRAPH-2F82C
+2F82D;ID # CJK COMPATIBILITY IDEOGRAPH-2F82D
+2F82E;ID # CJK COMPATIBILITY IDEOGRAPH-2F82E
+2F82F;ID # CJK COMPATIBILITY IDEOGRAPH-2F82F
+2F830;ID # CJK COMPATIBILITY IDEOGRAPH-2F830
+2F831;ID # CJK COMPATIBILITY IDEOGRAPH-2F831
+2F832;ID # CJK COMPATIBILITY IDEOGRAPH-2F832
+2F833;ID # CJK COMPATIBILITY IDEOGRAPH-2F833
+2F834;ID # CJK COMPATIBILITY IDEOGRAPH-2F834
+2F835;ID # CJK COMPATIBILITY IDEOGRAPH-2F835
+2F836;ID # CJK COMPATIBILITY IDEOGRAPH-2F836
+2F837;ID # CJK COMPATIBILITY IDEOGRAPH-2F837
+2F838;ID # CJK COMPATIBILITY IDEOGRAPH-2F838
+2F839;ID # CJK COMPATIBILITY IDEOGRAPH-2F839
+2F83A;ID # CJK COMPATIBILITY IDEOGRAPH-2F83A
+2F83B;ID # CJK COMPATIBILITY IDEOGRAPH-2F83B
+2F83C;ID # CJK COMPATIBILITY IDEOGRAPH-2F83C
+2F83D;ID # CJK COMPATIBILITY IDEOGRAPH-2F83D
+2F83E;ID # CJK COMPATIBILITY IDEOGRAPH-2F83E
+2F83F;ID # CJK COMPATIBILITY IDEOGRAPH-2F83F
+2F840;ID # CJK COMPATIBILITY IDEOGRAPH-2F840
+2F841;ID # CJK COMPATIBILITY IDEOGRAPH-2F841
+2F842;ID # CJK COMPATIBILITY IDEOGRAPH-2F842
+2F843;ID # CJK COMPATIBILITY IDEOGRAPH-2F843
+2F844;ID # CJK COMPATIBILITY IDEOGRAPH-2F844
+2F845;ID # CJK COMPATIBILITY IDEOGRAPH-2F845
+2F846;ID # CJK COMPATIBILITY IDEOGRAPH-2F846
+2F847;ID # CJK COMPATIBILITY IDEOGRAPH-2F847
+2F848;ID # CJK COMPATIBILITY IDEOGRAPH-2F848
+2F849;ID # CJK COMPATIBILITY IDEOGRAPH-2F849
+2F84A;ID # CJK COMPATIBILITY IDEOGRAPH-2F84A
+2F84B;ID # CJK COMPATIBILITY IDEOGRAPH-2F84B
+2F84C;ID # CJK COMPATIBILITY IDEOGRAPH-2F84C
+2F84D;ID # CJK COMPATIBILITY IDEOGRAPH-2F84D
+2F84E;ID # CJK COMPATIBILITY IDEOGRAPH-2F84E
+2F84F;ID # CJK COMPATIBILITY IDEOGRAPH-2F84F
+2F850;ID # CJK COMPATIBILITY IDEOGRAPH-2F850
+2F851;ID # CJK COMPATIBILITY IDEOGRAPH-2F851
+2F852;ID # CJK COMPATIBILITY IDEOGRAPH-2F852
+2F853;ID # CJK COMPATIBILITY IDEOGRAPH-2F853
+2F854;ID # CJK COMPATIBILITY IDEOGRAPH-2F854
+2F855;ID # CJK COMPATIBILITY IDEOGRAPH-2F855
+2F856;ID # CJK COMPATIBILITY IDEOGRAPH-2F856
+2F857;ID # CJK COMPATIBILITY IDEOGRAPH-2F857
+2F858;ID # CJK COMPATIBILITY IDEOGRAPH-2F858
+2F859;ID # CJK COMPATIBILITY IDEOGRAPH-2F859
+2F85A;ID # CJK COMPATIBILITY IDEOGRAPH-2F85A
+2F85B;ID # CJK COMPATIBILITY IDEOGRAPH-2F85B
+2F85C;ID # CJK COMPATIBILITY IDEOGRAPH-2F85C
+2F85D;ID # CJK COMPATIBILITY IDEOGRAPH-2F85D
+2F85E;ID # CJK COMPATIBILITY IDEOGRAPH-2F85E
+2F85F;ID # CJK COMPATIBILITY IDEOGRAPH-2F85F
+2F860;ID # CJK COMPATIBILITY IDEOGRAPH-2F860
+2F861;ID # CJK COMPATIBILITY IDEOGRAPH-2F861
+2F862;ID # CJK COMPATIBILITY IDEOGRAPH-2F862
+2F863;ID # CJK COMPATIBILITY IDEOGRAPH-2F863
+2F864;ID # CJK COMPATIBILITY IDEOGRAPH-2F864
+2F865;ID # CJK COMPATIBILITY IDEOGRAPH-2F865
+2F866;ID # CJK COMPATIBILITY IDEOGRAPH-2F866
+2F867;ID # CJK COMPATIBILITY IDEOGRAPH-2F867
+2F868;ID # CJK COMPATIBILITY IDEOGRAPH-2F868
+2F869;ID # CJK COMPATIBILITY IDEOGRAPH-2F869
+2F86A;ID # CJK COMPATIBILITY IDEOGRAPH-2F86A
+2F86B;ID # CJK COMPATIBILITY IDEOGRAPH-2F86B
+2F86C;ID # CJK COMPATIBILITY IDEOGRAPH-2F86C
+2F86D;ID # CJK COMPATIBILITY IDEOGRAPH-2F86D
+2F86E;ID # CJK COMPATIBILITY IDEOGRAPH-2F86E
+2F86F;ID # CJK COMPATIBILITY IDEOGRAPH-2F86F
+2F870;ID # CJK COMPATIBILITY IDEOGRAPH-2F870
+2F871;ID # CJK COMPATIBILITY IDEOGRAPH-2F871
+2F872;ID # CJK COMPATIBILITY IDEOGRAPH-2F872
+2F873;ID # CJK COMPATIBILITY IDEOGRAPH-2F873
+2F874;ID # CJK COMPATIBILITY IDEOGRAPH-2F874
+2F875;ID # CJK COMPATIBILITY IDEOGRAPH-2F875
+2F876;ID # CJK COMPATIBILITY IDEOGRAPH-2F876
+2F877;ID # CJK COMPATIBILITY IDEOGRAPH-2F877
+2F878;ID # CJK COMPATIBILITY IDEOGRAPH-2F878
+2F879;ID # CJK COMPATIBILITY IDEOGRAPH-2F879
+2F87A;ID # CJK COMPATIBILITY IDEOGRAPH-2F87A
+2F87B;ID # CJK COMPATIBILITY IDEOGRAPH-2F87B
+2F87C;ID # CJK COMPATIBILITY IDEOGRAPH-2F87C
+2F87D;ID # CJK COMPATIBILITY IDEOGRAPH-2F87D
+2F87E;ID # CJK COMPATIBILITY IDEOGRAPH-2F87E
+2F87F;ID # CJK COMPATIBILITY IDEOGRAPH-2F87F
+2F880;ID # CJK COMPATIBILITY IDEOGRAPH-2F880
+2F881;ID # CJK COMPATIBILITY IDEOGRAPH-2F881
+2F882;ID # CJK COMPATIBILITY IDEOGRAPH-2F882
+2F883;ID # CJK COMPATIBILITY IDEOGRAPH-2F883
+2F884;ID # CJK COMPATIBILITY IDEOGRAPH-2F884
+2F885;ID # CJK COMPATIBILITY IDEOGRAPH-2F885
+2F886;ID # CJK COMPATIBILITY IDEOGRAPH-2F886
+2F887;ID # CJK COMPATIBILITY IDEOGRAPH-2F887
+2F888;ID # CJK COMPATIBILITY IDEOGRAPH-2F888
+2F889;ID # CJK COMPATIBILITY IDEOGRAPH-2F889
+2F88A;ID # CJK COMPATIBILITY IDEOGRAPH-2F88A
+2F88B;ID # CJK COMPATIBILITY IDEOGRAPH-2F88B
+2F88C;ID # CJK COMPATIBILITY IDEOGRAPH-2F88C
+2F88D;ID # CJK COMPATIBILITY IDEOGRAPH-2F88D
+2F88E;ID # CJK COMPATIBILITY IDEOGRAPH-2F88E
+2F88F;ID # CJK COMPATIBILITY IDEOGRAPH-2F88F
+2F890;ID # CJK COMPATIBILITY IDEOGRAPH-2F890
+2F891;ID # CJK COMPATIBILITY IDEOGRAPH-2F891
+2F892;ID # CJK COMPATIBILITY IDEOGRAPH-2F892
+2F893;ID # CJK COMPATIBILITY IDEOGRAPH-2F893
+2F894;ID # CJK COMPATIBILITY IDEOGRAPH-2F894
+2F895;ID # CJK COMPATIBILITY IDEOGRAPH-2F895
+2F896;ID # CJK COMPATIBILITY IDEOGRAPH-2F896
+2F897;ID # CJK COMPATIBILITY IDEOGRAPH-2F897
+2F898;ID # CJK COMPATIBILITY IDEOGRAPH-2F898
+2F899;ID # CJK COMPATIBILITY IDEOGRAPH-2F899
+2F89A;ID # CJK COMPATIBILITY IDEOGRAPH-2F89A
+2F89B;ID # CJK COMPATIBILITY IDEOGRAPH-2F89B
+2F89C;ID # CJK COMPATIBILITY IDEOGRAPH-2F89C
+2F89D;ID # CJK COMPATIBILITY IDEOGRAPH-2F89D
+2F89E;ID # CJK COMPATIBILITY IDEOGRAPH-2F89E
+2F89F;ID # CJK COMPATIBILITY IDEOGRAPH-2F89F
+2F8A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A0
+2F8A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A1
+2F8A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A2
+2F8A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A3
+2F8A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A4
+2F8A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A5
+2F8A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A6
+2F8A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A7
+2F8A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A8
+2F8A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A9
+2F8AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AA
+2F8AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AB
+2F8AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AC
+2F8AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AD
+2F8AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AE
+2F8AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AF
+2F8B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B0
+2F8B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B1
+2F8B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B2
+2F8B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B3
+2F8B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B4
+2F8B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B5
+2F8B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B6
+2F8B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B7
+2F8B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B8
+2F8B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B9
+2F8BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BA
+2F8BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BB
+2F8BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BC
+2F8BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BD
+2F8BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BE
+2F8BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BF
+2F8C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C0
+2F8C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C1
+2F8C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C2
+2F8C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C3
+2F8C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C4
+2F8C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C5
+2F8C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C6
+2F8C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C7
+2F8C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C8
+2F8C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C9
+2F8CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CA
+2F8CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CB
+2F8CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CC
+2F8CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CD
+2F8CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CE
+2F8CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CF
+2F8D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D0
+2F8D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D1
+2F8D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D2
+2F8D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D3
+2F8D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D4
+2F8D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D5
+2F8D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D6
+2F8D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D7
+2F8D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D8
+2F8D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D9
+2F8DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DA
+2F8DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DB
+2F8DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DC
+2F8DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DD
+2F8DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DE
+2F8DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DF
+2F8E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E0
+2F8E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E1
+2F8E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E2
+2F8E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E3
+2F8E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E4
+2F8E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E5
+2F8E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E6
+2F8E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E7
+2F8E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E8
+2F8E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E9
+2F8EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EA
+2F8EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EB
+2F8EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EC
+2F8ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F8ED
+2F8EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EE
+2F8EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EF
+2F8F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F0
+2F8F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F1
+2F8F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F2
+2F8F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F3
+2F8F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F4
+2F8F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F5
+2F8F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F6
+2F8F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F7
+2F8F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F8
+2F8F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F9
+2F8FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FA
+2F8FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FB
+2F8FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FC
+2F8FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FD
+2F8FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FE
+2F8FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FF
+2F900;ID # CJK COMPATIBILITY IDEOGRAPH-2F900
+2F901;ID # CJK COMPATIBILITY IDEOGRAPH-2F901
+2F902;ID # CJK COMPATIBILITY IDEOGRAPH-2F902
+2F903;ID # CJK COMPATIBILITY IDEOGRAPH-2F903
+2F904;ID # CJK COMPATIBILITY IDEOGRAPH-2F904
+2F905;ID # CJK COMPATIBILITY IDEOGRAPH-2F905
+2F906;ID # CJK COMPATIBILITY IDEOGRAPH-2F906
+2F907;ID # CJK COMPATIBILITY IDEOGRAPH-2F907
+2F908;ID # CJK COMPATIBILITY IDEOGRAPH-2F908
+2F909;ID # CJK COMPATIBILITY IDEOGRAPH-2F909
+2F90A;ID # CJK COMPATIBILITY IDEOGRAPH-2F90A
+2F90B;ID # CJK COMPATIBILITY IDEOGRAPH-2F90B
+2F90C;ID # CJK COMPATIBILITY IDEOGRAPH-2F90C
+2F90D;ID # CJK COMPATIBILITY IDEOGRAPH-2F90D
+2F90E;ID # CJK COMPATIBILITY IDEOGRAPH-2F90E
+2F90F;ID # CJK COMPATIBILITY IDEOGRAPH-2F90F
+2F910;ID # CJK COMPATIBILITY IDEOGRAPH-2F910
+2F911;ID # CJK COMPATIBILITY IDEOGRAPH-2F911
+2F912;ID # CJK COMPATIBILITY IDEOGRAPH-2F912
+2F913;ID # CJK COMPATIBILITY IDEOGRAPH-2F913
+2F914;ID # CJK COMPATIBILITY IDEOGRAPH-2F914
+2F915;ID # CJK COMPATIBILITY IDEOGRAPH-2F915
+2F916;ID # CJK COMPATIBILITY IDEOGRAPH-2F916
+2F917;ID # CJK COMPATIBILITY IDEOGRAPH-2F917
+2F918;ID # CJK COMPATIBILITY IDEOGRAPH-2F918
+2F919;ID # CJK COMPATIBILITY IDEOGRAPH-2F919
+2F91A;ID # CJK COMPATIBILITY IDEOGRAPH-2F91A
+2F91B;ID # CJK COMPATIBILITY IDEOGRAPH-2F91B
+2F91C;ID # CJK COMPATIBILITY IDEOGRAPH-2F91C
+2F91D;ID # CJK COMPATIBILITY IDEOGRAPH-2F91D
+2F91E;ID # CJK COMPATIBILITY IDEOGRAPH-2F91E
+2F91F;ID # CJK COMPATIBILITY IDEOGRAPH-2F91F
+2F920;ID # CJK COMPATIBILITY IDEOGRAPH-2F920
+2F921;ID # CJK COMPATIBILITY IDEOGRAPH-2F921
+2F922;ID # CJK COMPATIBILITY IDEOGRAPH-2F922
+2F923;ID # CJK COMPATIBILITY IDEOGRAPH-2F923
+2F924;ID # CJK COMPATIBILITY IDEOGRAPH-2F924
+2F925;ID # CJK COMPATIBILITY IDEOGRAPH-2F925
+2F926;ID # CJK COMPATIBILITY IDEOGRAPH-2F926
+2F927;ID # CJK COMPATIBILITY IDEOGRAPH-2F927
+2F928;ID # CJK COMPATIBILITY IDEOGRAPH-2F928
+2F929;ID # CJK COMPATIBILITY IDEOGRAPH-2F929
+2F92A;ID # CJK COMPATIBILITY IDEOGRAPH-2F92A
+2F92B;ID # CJK COMPATIBILITY IDEOGRAPH-2F92B
+2F92C;ID # CJK COMPATIBILITY IDEOGRAPH-2F92C
+2F92D;ID # CJK COMPATIBILITY IDEOGRAPH-2F92D
+2F92E;ID # CJK COMPATIBILITY IDEOGRAPH-2F92E
+2F92F;ID # CJK COMPATIBILITY IDEOGRAPH-2F92F
+2F930;ID # CJK COMPATIBILITY IDEOGRAPH-2F930
+2F931;ID # CJK COMPATIBILITY IDEOGRAPH-2F931
+2F932;ID # CJK COMPATIBILITY IDEOGRAPH-2F932
+2F933;ID # CJK COMPATIBILITY IDEOGRAPH-2F933
+2F934;ID # CJK COMPATIBILITY IDEOGRAPH-2F934
+2F935;ID # CJK COMPATIBILITY IDEOGRAPH-2F935
+2F936;ID # CJK COMPATIBILITY IDEOGRAPH-2F936
+2F937;ID # CJK COMPATIBILITY IDEOGRAPH-2F937
+2F938;ID # CJK COMPATIBILITY IDEOGRAPH-2F938
+2F939;ID # CJK COMPATIBILITY IDEOGRAPH-2F939
+2F93A;ID # CJK COMPATIBILITY IDEOGRAPH-2F93A
+2F93B;ID # CJK COMPATIBILITY IDEOGRAPH-2F93B
+2F93C;ID # CJK COMPATIBILITY IDEOGRAPH-2F93C
+2F93D;ID # CJK COMPATIBILITY IDEOGRAPH-2F93D
+2F93E;ID # CJK COMPATIBILITY IDEOGRAPH-2F93E
+2F93F;ID # CJK COMPATIBILITY IDEOGRAPH-2F93F
+2F940;ID # CJK COMPATIBILITY IDEOGRAPH-2F940
+2F941;ID # CJK COMPATIBILITY IDEOGRAPH-2F941
+2F942;ID # CJK COMPATIBILITY IDEOGRAPH-2F942
+2F943;ID # CJK COMPATIBILITY IDEOGRAPH-2F943
+2F944;ID # CJK COMPATIBILITY IDEOGRAPH-2F944
+2F945;ID # CJK COMPATIBILITY IDEOGRAPH-2F945
+2F946;ID # CJK COMPATIBILITY IDEOGRAPH-2F946
+2F947;ID # CJK COMPATIBILITY IDEOGRAPH-2F947
+2F948;ID # CJK COMPATIBILITY IDEOGRAPH-2F948
+2F949;ID # CJK COMPATIBILITY IDEOGRAPH-2F949
+2F94A;ID # CJK COMPATIBILITY IDEOGRAPH-2F94A
+2F94B;ID # CJK COMPATIBILITY IDEOGRAPH-2F94B
+2F94C;ID # CJK COMPATIBILITY IDEOGRAPH-2F94C
+2F94D;ID # CJK COMPATIBILITY IDEOGRAPH-2F94D
+2F94E;ID # CJK COMPATIBILITY IDEOGRAPH-2F94E
+2F94F;ID # CJK COMPATIBILITY IDEOGRAPH-2F94F
+2F950;ID # CJK COMPATIBILITY IDEOGRAPH-2F950
+2F951;ID # CJK COMPATIBILITY IDEOGRAPH-2F951
+2F952;ID # CJK COMPATIBILITY IDEOGRAPH-2F952
+2F953;ID # CJK COMPATIBILITY IDEOGRAPH-2F953
+2F954;ID # CJK COMPATIBILITY IDEOGRAPH-2F954
+2F955;ID # CJK COMPATIBILITY IDEOGRAPH-2F955
+2F956;ID # CJK COMPATIBILITY IDEOGRAPH-2F956
+2F957;ID # CJK COMPATIBILITY IDEOGRAPH-2F957
+2F958;ID # CJK COMPATIBILITY IDEOGRAPH-2F958
+2F959;ID # CJK COMPATIBILITY IDEOGRAPH-2F959
+2F95A;ID # CJK COMPATIBILITY IDEOGRAPH-2F95A
+2F95B;ID # CJK COMPATIBILITY IDEOGRAPH-2F95B
+2F95C;ID # CJK COMPATIBILITY IDEOGRAPH-2F95C
+2F95D;ID # CJK COMPATIBILITY IDEOGRAPH-2F95D
+2F95E;ID # CJK COMPATIBILITY IDEOGRAPH-2F95E
+2F95F;ID # CJK COMPATIBILITY IDEOGRAPH-2F95F
+2F960;ID # CJK COMPATIBILITY IDEOGRAPH-2F960
+2F961;ID # CJK COMPATIBILITY IDEOGRAPH-2F961
+2F962;ID # CJK COMPATIBILITY IDEOGRAPH-2F962
+2F963;ID # CJK COMPATIBILITY IDEOGRAPH-2F963
+2F964;ID # CJK COMPATIBILITY IDEOGRAPH-2F964
+2F965;ID # CJK COMPATIBILITY IDEOGRAPH-2F965
+2F966;ID # CJK COMPATIBILITY IDEOGRAPH-2F966
+2F967;ID # CJK COMPATIBILITY IDEOGRAPH-2F967
+2F968;ID # CJK COMPATIBILITY IDEOGRAPH-2F968
+2F969;ID # CJK COMPATIBILITY IDEOGRAPH-2F969
+2F96A;ID # CJK COMPATIBILITY IDEOGRAPH-2F96A
+2F96B;ID # CJK COMPATIBILITY IDEOGRAPH-2F96B
+2F96C;ID # CJK COMPATIBILITY IDEOGRAPH-2F96C
+2F96D;ID # CJK COMPATIBILITY IDEOGRAPH-2F96D
+2F96E;ID # CJK COMPATIBILITY IDEOGRAPH-2F96E
+2F96F;ID # CJK COMPATIBILITY IDEOGRAPH-2F96F
+2F970;ID # CJK COMPATIBILITY IDEOGRAPH-2F970
+2F971;ID # CJK COMPATIBILITY IDEOGRAPH-2F971
+2F972;ID # CJK COMPATIBILITY IDEOGRAPH-2F972
+2F973;ID # CJK COMPATIBILITY IDEOGRAPH-2F973
+2F974;ID # CJK COMPATIBILITY IDEOGRAPH-2F974
+2F975;ID # CJK COMPATIBILITY IDEOGRAPH-2F975
+2F976;ID # CJK COMPATIBILITY IDEOGRAPH-2F976
+2F977;ID # CJK COMPATIBILITY IDEOGRAPH-2F977
+2F978;ID # CJK COMPATIBILITY IDEOGRAPH-2F978
+2F979;ID # CJK COMPATIBILITY IDEOGRAPH-2F979
+2F97A;ID # CJK COMPATIBILITY IDEOGRAPH-2F97A
+2F97B;ID # CJK COMPATIBILITY IDEOGRAPH-2F97B
+2F97C;ID # CJK COMPATIBILITY IDEOGRAPH-2F97C
+2F97D;ID # CJK COMPATIBILITY IDEOGRAPH-2F97D
+2F97E;ID # CJK COMPATIBILITY IDEOGRAPH-2F97E
+2F97F;ID # CJK COMPATIBILITY IDEOGRAPH-2F97F
+2F980;ID # CJK COMPATIBILITY IDEOGRAPH-2F980
+2F981;ID # CJK COMPATIBILITY IDEOGRAPH-2F981
+2F982;ID # CJK COMPATIBILITY IDEOGRAPH-2F982
+2F983;ID # CJK COMPATIBILITY IDEOGRAPH-2F983
+2F984;ID # CJK COMPATIBILITY IDEOGRAPH-2F984
+2F985;ID # CJK COMPATIBILITY IDEOGRAPH-2F985
+2F986;ID # CJK COMPATIBILITY IDEOGRAPH-2F986
+2F987;ID # CJK COMPATIBILITY IDEOGRAPH-2F987
+2F988;ID # CJK COMPATIBILITY IDEOGRAPH-2F988
+2F989;ID # CJK COMPATIBILITY IDEOGRAPH-2F989
+2F98A;ID # CJK COMPATIBILITY IDEOGRAPH-2F98A
+2F98B;ID # CJK COMPATIBILITY IDEOGRAPH-2F98B
+2F98C;ID # CJK COMPATIBILITY IDEOGRAPH-2F98C
+2F98D;ID # CJK COMPATIBILITY IDEOGRAPH-2F98D
+2F98E;ID # CJK COMPATIBILITY IDEOGRAPH-2F98E
+2F98F;ID # CJK COMPATIBILITY IDEOGRAPH-2F98F
+2F990;ID # CJK COMPATIBILITY IDEOGRAPH-2F990
+2F991;ID # CJK COMPATIBILITY IDEOGRAPH-2F991
+2F992;ID # CJK COMPATIBILITY IDEOGRAPH-2F992
+2F993;ID # CJK COMPATIBILITY IDEOGRAPH-2F993
+2F994;ID # CJK COMPATIBILITY IDEOGRAPH-2F994
+2F995;ID # CJK COMPATIBILITY IDEOGRAPH-2F995
+2F996;ID # CJK COMPATIBILITY IDEOGRAPH-2F996
+2F997;ID # CJK COMPATIBILITY IDEOGRAPH-2F997
+2F998;ID # CJK COMPATIBILITY IDEOGRAPH-2F998
+2F999;ID # CJK COMPATIBILITY IDEOGRAPH-2F999
+2F99A;ID # CJK COMPATIBILITY IDEOGRAPH-2F99A
+2F99B;ID # CJK COMPATIBILITY IDEOGRAPH-2F99B
+2F99C;ID # CJK COMPATIBILITY IDEOGRAPH-2F99C
+2F99D;ID # CJK COMPATIBILITY IDEOGRAPH-2F99D
+2F99E;ID # CJK COMPATIBILITY IDEOGRAPH-2F99E
+2F99F;ID # CJK COMPATIBILITY IDEOGRAPH-2F99F
+2F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A0
+2F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A1
+2F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A2
+2F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A3
+2F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A4
+2F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A5
+2F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A6
+2F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A7
+2F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A8
+2F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A9
+2F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AA
+2F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AB
+2F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AC
+2F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AD
+2F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AE
+2F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AF
+2F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B0
+2F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B1
+2F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B2
+2F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B3
+2F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B4
+2F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B5
+2F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B6
+2F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B7
+2F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B8
+2F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B9
+2F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BA
+2F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BB
+2F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BC
+2F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BD
+2F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BE
+2F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BF
+2F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C0
+2F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C1
+2F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C2
+2F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C3
+2F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C4
+2F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C5
+2F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C6
+2F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C7
+2F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C8
+2F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C9
+2F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CA
+2F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CB
+2F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CC
+2F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CD
+2F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CE
+2F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CF
+2F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D0
+2F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D1
+2F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D2
+2F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D3
+2F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D4
+2F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D5
+2F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D6
+2F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D7
+2F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D8
+2F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D9
+2F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DA
+2F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DB
+2F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DC
+2F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DD
+2F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DE
+2F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DF
+2F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E0
+2F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E1
+2F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E2
+2F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E3
+2F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E4
+2F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E5
+2F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E6
+2F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E7
+2F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E8
+2F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E9
+2F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EA
+2F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EB
+2F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EC
+2F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F9ED
+2F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EE
+2F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EF
+2F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F0
+2F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F1
+2F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F2
+2F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F3
+2F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F4
+2F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F5
+2F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F6
+2F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F7
+2F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F8
+2F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F9
+2F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FA
+2F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FB
+2F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FC
+2F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FD
+2F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FE
+2F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FF
+2FA00;ID # CJK COMPATIBILITY IDEOGRAPH-2FA00
+2FA01;ID # CJK COMPATIBILITY IDEOGRAPH-2FA01
+2FA02;ID # CJK COMPATIBILITY IDEOGRAPH-2FA02
+2FA03;ID # CJK COMPATIBILITY IDEOGRAPH-2FA03
+2FA04;ID # CJK COMPATIBILITY IDEOGRAPH-2FA04
+2FA05;ID # CJK COMPATIBILITY IDEOGRAPH-2FA05
+2FA06;ID # CJK COMPATIBILITY IDEOGRAPH-2FA06
+2FA07;ID # CJK COMPATIBILITY IDEOGRAPH-2FA07
+2FA08;ID # CJK COMPATIBILITY IDEOGRAPH-2FA08
+2FA09;ID # CJK COMPATIBILITY IDEOGRAPH-2FA09
+2FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0A
+2FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0B
+2FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0C
+2FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0D
+2FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0E
+2FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0F
+2FA10;ID # CJK COMPATIBILITY IDEOGRAPH-2FA10
+2FA11;ID # CJK COMPATIBILITY IDEOGRAPH-2FA11
+2FA12;ID # CJK COMPATIBILITY IDEOGRAPH-2FA12
+2FA13;ID # CJK COMPATIBILITY IDEOGRAPH-2FA13
+2FA14;ID # CJK COMPATIBILITY IDEOGRAPH-2FA14
+2FA15;ID # CJK COMPATIBILITY IDEOGRAPH-2FA15
+2FA16;ID # CJK COMPATIBILITY IDEOGRAPH-2FA16
+2FA17;ID # CJK COMPATIBILITY IDEOGRAPH-2FA17
+2FA18;ID # CJK COMPATIBILITY IDEOGRAPH-2FA18
+2FA19;ID # CJK COMPATIBILITY IDEOGRAPH-2FA19
+2FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1A
+2FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1B
+2FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1C
+2FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1D
+E0001;CM # LANGUAGE TAG
+E0020;CM # TAG SPACE
+E0021;CM # TAG EXCLAMATION MARK
+E0022;CM # TAG QUOTATION MARK
+E0023;CM # TAG NUMBER SIGN
+E0024;CM # TAG DOLLAR SIGN
+E0025;CM # TAG PERCENT SIGN
+E0026;CM # TAG AMPERSAND
+E0027;CM # TAG APOSTROPHE
+E0028;CM # TAG LEFT PARENTHESIS
+E0029;CM # TAG RIGHT PARENTHESIS
+E002A;CM # TAG ASTERISK
+E002B;CM # TAG PLUS SIGN
+E002C;CM # TAG COMMA
+E002D;CM # TAG HYPHEN-MINUS
+E002E;CM # TAG FULL STOP
+E002F;CM # TAG SOLIDUS
+E0030;CM # TAG DIGIT ZERO
+E0031;CM # TAG DIGIT ONE
+E0032;CM # TAG DIGIT TWO
+E0033;CM # TAG DIGIT THREE
+E0034;CM # TAG DIGIT FOUR
+E0035;CM # TAG DIGIT FIVE
+E0036;CM # TAG DIGIT SIX
+E0037;CM # TAG DIGIT SEVEN
+E0038;CM # TAG DIGIT EIGHT
+E0039;CM # TAG DIGIT NINE
+E003A;CM # TAG COLON
+E003B;CM # TAG SEMICOLON
+E003C;CM # TAG LESS-THAN SIGN
+E003D;CM # TAG EQUALS SIGN
+E003E;CM # TAG GREATER-THAN SIGN
+E003F;CM # TAG QUESTION MARK
+E0040;CM # TAG COMMERCIAL AT
+E0041;CM # TAG LATIN CAPITAL LETTER A
+E0042;CM # TAG LATIN CAPITAL LETTER B
+E0043;CM # TAG LATIN CAPITAL LETTER C
+E0044;CM # TAG LATIN CAPITAL LETTER D
+E0045;CM # TAG LATIN CAPITAL LETTER E
+E0046;CM # TAG LATIN CAPITAL LETTER F
+E0047;CM # TAG LATIN CAPITAL LETTER G
+E0048;CM # TAG LATIN CAPITAL LETTER H
+E0049;CM # TAG LATIN CAPITAL LETTER I
+E004A;CM # TAG LATIN CAPITAL LETTER J
+E004B;CM # TAG LATIN CAPITAL LETTER K
+E004C;CM # TAG LATIN CAPITAL LETTER L
+E004D;CM # TAG LATIN CAPITAL LETTER M
+E004E;CM # TAG LATIN CAPITAL LETTER N
+E004F;CM # TAG LATIN CAPITAL LETTER O
+E0050;CM # TAG LATIN CAPITAL LETTER P
+E0051;CM # TAG LATIN CAPITAL LETTER Q
+E0052;CM # TAG LATIN CAPITAL LETTER R
+E0053;CM # TAG LATIN CAPITAL LETTER S
+E0054;CM # TAG LATIN CAPITAL LETTER T
+E0055;CM # TAG LATIN CAPITAL LETTER U
+E0056;CM # TAG LATIN CAPITAL LETTER V
+E0057;CM # TAG LATIN CAPITAL LETTER W
+E0058;CM # TAG LATIN CAPITAL LETTER X
+E0059;CM # TAG LATIN CAPITAL LETTER Y
+E005A;CM # TAG LATIN CAPITAL LETTER Z
+E005B;CM # TAG LEFT SQUARE BRACKET
+E005C;CM # TAG REVERSE SOLIDUS
+E005D;CM # TAG RIGHT SQUARE BRACKET
+E005E;CM # TAG CIRCUMFLEX ACCENT
+E005F;CM # TAG LOW LINE
+E0060;CM # TAG GRAVE ACCENT
+E0061;CM # TAG LATIN SMALL LETTER A
+E0062;CM # TAG LATIN SMALL LETTER B
+E0063;CM # TAG LATIN SMALL LETTER C
+E0064;CM # TAG LATIN SMALL LETTER D
+E0065;CM # TAG LATIN SMALL LETTER E
+E0066;CM # TAG LATIN SMALL LETTER F
+E0067;CM # TAG LATIN SMALL LETTER G
+E0068;CM # TAG LATIN SMALL LETTER H
+E0069;CM # TAG LATIN SMALL LETTER I
+E006A;CM # TAG LATIN SMALL LETTER J
+E006B;CM # TAG LATIN SMALL LETTER K
+E006C;CM # TAG LATIN SMALL LETTER L
+E006D;CM # TAG LATIN SMALL LETTER M
+E006E;CM # TAG LATIN SMALL LETTER N
+E006F;CM # TAG LATIN SMALL LETTER O
+E0070;CM # TAG LATIN SMALL LETTER P
+E0071;CM # TAG LATIN SMALL LETTER Q
+E0072;CM # TAG LATIN SMALL LETTER R
+E0073;CM # TAG LATIN SMALL LETTER S
+E0074;CM # TAG LATIN SMALL LETTER T
+E0075;CM # TAG LATIN SMALL LETTER U
+E0076;CM # TAG LATIN SMALL LETTER V
+E0077;CM # TAG LATIN SMALL LETTER W
+E0078;CM # TAG LATIN SMALL LETTER X
+E0079;CM # TAG LATIN SMALL LETTER Y
+E007A;CM # TAG LATIN SMALL LETTER Z
+E007B;CM # TAG LEFT CURLY BRACKET
+E007C;CM # TAG VERTICAL LINE
+E007D;CM # TAG RIGHT CURLY BRACKET
+E007E;CM # TAG TILDE
+E007F;CM # CANCEL TAG
+F0000..FFFFD;XX # <Plane 15 Private Use, First>..<Plane 15 Private Use, Last>
+100000..10FFFD;XX # <Plane 16 Private Use, First>..<Plane 16 Private Use, Last>
diff --git a/doc/specifications/Makefile.am b/doc/specifications/Makefile.am
new file mode 100644 (file)
index 0000000..b28dae7
--- /dev/null
@@ -0,0 +1,23 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+EXTRA_DIST = rfc3454.txt \
+       UnicodeData-3.2.0.txt LineBreak-3.2.0.txt \
+       SpecialCasing-3.2.0.txt CaseFolding-3.2.0.txt \
+       CompositionExclusions-3.2.0.txt BidiMirroring-3.2.0.txt \
+       COPYING.UCD
diff --git a/doc/specifications/Makefile.in b/doc/specifications/Makefile.in
new file mode 100644 (file)
index 0000000..6d9ec1b
--- /dev/null
@@ -0,0 +1,671 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc/specifications
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = rfc3454.txt \
+       UnicodeData-3.2.0.txt LineBreak-3.2.0.txt \
+       SpecialCasing-3.2.0.txt CaseFolding-3.2.0.txt \
+       CompositionExclusions-3.2.0.txt BidiMirroring-3.2.0.txt \
+       COPYING.UCD
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/specifications/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/specifications/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/specifications/SpecialCasing-3.2.0.txt b/doc/specifications/SpecialCasing-3.2.0.txt
new file mode 100644 (file)
index 0000000..f25ac9b
--- /dev/null
@@ -0,0 +1,255 @@
+# SpecialCasing-3.2.0.txt
+# Date: 2002-03-19,23:31:42 GMT [MD]
+#
+# Special Casing Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains additional information about the casing of Unicode characters.
+# (For compatibility, the UnicodeData.txt file only contains case mappings for
+# characters where they are 1-1, and does not have locale-specific mappings.)
+# For more information, see
+# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/
+#
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? # <comment>
+#
+# <code>, <lower>, <title>, and <upper> provide character values in hex. If there is more than
+# one character, they are separated by spaces. Other than as used to separate elements,
+# spaces are to be ignored.
+#
+# The <condition_list> is optional. Where present, it consists of one or more locales or contexts,
+# separated by spaces. In these conditions:
+# - A condition list overrides the normal behavior if all of the listed conditions are true.
+# - The context is always the context of the characters in the original string,
+#   NOT in the resulting string.
+# - Case distinctions in the condition list are not significant.
+# - Conditions preceded by "Not_" represent the negation of the condition.
+#
+# A locale is defined as:
+# <locale> := <ISO_639_code> ( "_" <ISO_3166_code> ( "_" <variant> )? )?
+# <ISO_3166_code> := 2-letter ISO country code,
+# <ISO_639_code> :=  2-letter ISO language code
+#
+# A context is one of the following, as defined in UAX #21: Case Mappings:
+#   Final_Sigma, After_Soft_Dotted, More_Above, Before_Dot
+#
+# Parsers of this file must be prepared to deal future additions to this format:
+#  * Additional contexts
+#  * Additional fields
+# ================================================================================
+
+# ================================================================================
+# Unconditional mappings
+# ================================================================================
+
+# The German es-zed is special--the normal mapping is to SS.
+# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
+
+00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
+
+# Preserve canonical equivalence for I with dot. Turkic is handled below.
+
+0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# Ligatures
+
+FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
+FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
+FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
+FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
+FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
+FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
+FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
+
+0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
+FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
+
+# No corresponding uppercase precomposed character
+
+0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
+1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+
+# IMPORTANT-when capitalizing iota-subscript (0345)
+#  It MUST be in normalized form--moved to the end of any sequence of combining marks.
+#  This is because logically it represents a following base character!
+#  E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
+# It should never be the first character in a word, so in titlecasing it can be left as is.
+
+# The following cases are already in the UnicodeData file, so are only commented here.
+
+# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+
+# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
+# have special uppercases.
+# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
+
+1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Some characters with YPOGEGRAMMENI are also have no corresponding titlecases
+
+1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+
+1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+
+# ================================================================================
+# Conditional mappings
+# ================================================================================
+
+# Special case for final form of sigma
+
+03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
+
+# Note: the following cases for non-final are already in the UnicodeData file.
+
+# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
+# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
+
+# Note: the following cases are not included, since they would case-fold in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Lithuanian
+
+# Lithuanian retains the dot in a lowercase i when followed by accents.
+
+# Remove DOT ABOVE after "i" with upper or titlecase
+
+0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
+
+# Introduce an explicit dot above when lowercasing capital I's and J's
+# whenever there are more accents above.
+# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
+
+0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
+004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
+012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
+00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
+00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
+0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
+
+# ================================================================================
+
+# Turkish and Azeri
+
+# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+# The following rules handle those cases.
+
+0130; 0069; 0130; 0130; tr # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0130; 0069; 0130; 0130; az # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
+# This matches the behavior of the canonically equivalent I-dot_above
+
+0307; ; 0307; 0307; tr After_Soft_Dotted; # COMBINING DOT ABOVE
+0307; ; 0307; 0307; az After_Soft_Dotted; # COMBINING DOT ABOVE
+
+# When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
+
+0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
+0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I
+
+# When uppercasing, i turns into a dotted capital I
+
+0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
+0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
+
+# Note: the following case is already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
diff --git a/doc/specifications/UnicodeData-3.2.0.txt b/doc/specifications/UnicodeData-3.2.0.txt
new file mode 100644 (file)
index 0000000..125a692
--- /dev/null
@@ -0,0 +1,13874 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
+000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
+001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
+001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
+001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
+0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
+0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
+0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
+0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
+0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
+0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
+036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
+036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
+036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
+036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
+036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
+036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
+03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9;
+03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
+03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
+048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
+04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
+04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
+04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
+0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
+0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
+0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
+0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
+0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
+0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
+0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
+0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
+0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
+050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
+050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
+050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
+050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
+050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
+050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
+066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
+10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;;
+1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
+1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
+1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
+1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
+1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
+1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
+1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
+1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
+1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
+1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
+170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
+170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
+170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
+170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
+170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
+1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
+1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
+1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
+1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
+1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
+1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
+1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
+1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
+1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
+1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
+1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
+1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
+172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
+172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
+172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
+172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
+172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
+172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
+1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
+1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
+1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
+1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
+1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
+1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
+1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
+1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
+1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
+1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
+1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
+1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
+1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
+174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
+174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
+174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
+174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
+174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
+174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
+1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
+1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
+1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
+1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
+1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
+1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
+1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
+1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
+1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
+1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
+1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
+176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
+176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
+176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
+176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
+176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
+1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
+1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;;
+17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
+204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
+2050;CLOSE UP;Po;0;ON;;;;;N;;;;;
+2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
+2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
+205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
+2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
+2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
+2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
+20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
+20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
+20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
+20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
+2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
+2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
+2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
+214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
+22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
+23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
+23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
+23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;;
+23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;;
+23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;;
+23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
+23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
+23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
+23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
+23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
+23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
+23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
+23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
+24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
+24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
+24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
+24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
+24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
+24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
+24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
+24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
+24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
+24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
+24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
+24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
+24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
+24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
+24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
+24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
+24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
+24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
+24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
+2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
+2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
+2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
+259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;;
+2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;;
+2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;;
+2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;;
+2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;;
+2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;;
+2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;;
+267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
+267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+2680;DIE FACE-1;So;0;ON;;;;;N;;;;;
+2681;DIE FACE-2;So;0;ON;;;;;N;;;;;
+2682;DIE FACE-3;So;0;ON;;;;;N;;;;;
+2683;DIE FACE-4;So;0;ON;;;;;N;;;;;
+2684;DIE FACE-5;So;0;ON;;;;;N;;;;;
+2685;DIE FACE-6;So;0;ON;;;;;N;;;;;
+2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
+2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
+2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
+2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
+27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
+27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
+27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
+27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
+27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
+27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
+27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
+27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
+27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
+2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
+2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
+2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
+2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
+293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
+293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
+2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
+297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
+2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
+2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
+2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
+2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
+2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
+2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
+2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
+2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
+298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
+298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
+298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
+298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
+298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
+298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
+2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
+2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
+2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
+2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
+299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
+299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
+299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
+299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
+299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
+29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
+29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
+29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
+29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
+29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
+29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
+29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
+29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
+29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
+29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
+29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
+29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
+29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
+29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
+29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
+29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
+29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
+29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
+29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
+29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
+29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
+29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
+29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
+29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
+29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
+29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+29FE;TINY;Sm;0;ON;;;;;N;;;;;
+29FF;MINY;Sm;0;ON;;;;;N;;;;;
+2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
+2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
+2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
+2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
+2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
+2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
+2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
+2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
+2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
+2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
+2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
+2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
+2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1D;JOIN;Sm;0;ON;;;;;N;;;;;
+2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
+2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
+2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
+2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
+2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
+2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
+2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
+2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
+2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
+2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
+2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
+2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
+2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
+2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
+2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
+2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
+2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
+2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
+2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
+2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
+2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
+2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
+2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
+2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
+2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;;
+2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;;
+2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
+2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
+2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
+2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
+2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
+2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
+2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
+2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+303C;MASU MARK;Lo;0;L;;;;;N;;;;;
+303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
+30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
+31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
+31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
+31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
+31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
+31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
+31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
+31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
+31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
+31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
+31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
+31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
+31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
+31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
+31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
+31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
+3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
+3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
+3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
+3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
+3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
+3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
+3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
+3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
+325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
+325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
+325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
+325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
+325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
+325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
+32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
+32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
+32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
+32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
+32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
+32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
+32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
+32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
+32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
+32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
+32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
+32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
+32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
+32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
+A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
+FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
+FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
+FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
+FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
+FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
+FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
+FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
+FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
+FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
+FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
+FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
+FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
+FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
+FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
+FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
+FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
+FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
+FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
+FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
+FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
+FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
+FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
+FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
+FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
+FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
+FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
+FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
+FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
+FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
+FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
+FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
+FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
+FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
+FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
+FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
+FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
+FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
+FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
+FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
+FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
+FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
+FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
+FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
+FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
+FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
+FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
+FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
+FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
+FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
+FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
+FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
+FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
+FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
+FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
+FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
+FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
+FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
+FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
+FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
+FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
+FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
+FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
+FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
+FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
+FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
+FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
+FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
+FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
+FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
+FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
+FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
+FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
+FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
+FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;;
+FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
+10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
+10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
+10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
+10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
+10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
+10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
+10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
+10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
+10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
+1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
+1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
+1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
+1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
+1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
+1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;;
+10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
+10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
+10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
+10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
+10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
+10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
+10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
+10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;;
+10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
+10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
+1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
+1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;;
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;;
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;;
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;;
+10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
+10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
+10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
+10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
+10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
+10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
+10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
+10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
+10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
+10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
+10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
+10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
+10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
+1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
+1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
+1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
+1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
+1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
+1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
+10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
+10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;;
+10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
+10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
+10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
+10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
+10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
+10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
+10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
+10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
+1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;;N;;;;;
+10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
+10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
+10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
+10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
+10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
+10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
+10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
+10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
+10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
+10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
+1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
+1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
+1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
+1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
+1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
+1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
+10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
+10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
+10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
+10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
+10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
+10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
+10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
+10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
+10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
+10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
+1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
+1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
+1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
+1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
+1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
+1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
+10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
+10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
+10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
+10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
+10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
+10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
+10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
+10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
+1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
+1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
+1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
+1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
+1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
+1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
+10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
+10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
+10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
+10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
+10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
+10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
+10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
+10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
+10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
+10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
+1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
+1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
+1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
+1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
+1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
+1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
+10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
+10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
+10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
+10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
+10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
+10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
+10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
+10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
+10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
+10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
+1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
+1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
+1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
+1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
+1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
+1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
+1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
+1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
+1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
+1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
+1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
+1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
+1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
+1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
+1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
+1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
+1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
+1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
+1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
+1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
+1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
+1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
+1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
+1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
+1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
+1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
+1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
+1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
+1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
+1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
+1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
+1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
+1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
+1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
+1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
+1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
+1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
+1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
+1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
+1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
+1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
+1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
+1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
+1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
+1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
+1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
+1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
+1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
+1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
+1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
+1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
+1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
+1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
+1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
+1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
+1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
+1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
+1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
+1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
+1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
+1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
+1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
+1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
+1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
+1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
+1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
+1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
+1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
+1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
+1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
+1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
+1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
+1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
+1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
+1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
+1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
+1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
+1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
+1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
+1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
+1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
+1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
+1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
+1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
+1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
+1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
+1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
+1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
+1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
+1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
+1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
+1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
+1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
+1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
+1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
+1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
+1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
+1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
+1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
+1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
+1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
+1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
+1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
+1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
+1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
+1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
+1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
+1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
+1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
+1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
+1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
+1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
+1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
+1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
+1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
+1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
+1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
+1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
+1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
+1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
+1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
+1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
+1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
+1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
+1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
+1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
+1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
+1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
+1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
+1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
+1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
+1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
+1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
+1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
+1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
+1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
+1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
+1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
+1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
+1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
+1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
+1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
+1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
+1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
+1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
+1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
+1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
+1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
+1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
+1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
+1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
+1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
+1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
+1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
+1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
+1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
+1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
+1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
+1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
+1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
+1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
+1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
+1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
+1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
+1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
+1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
+1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
+1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
+1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
+1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
+1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
+1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
+1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
+1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
+1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
+1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
+1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
+1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
+1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
+1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
+1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
+1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
+1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
+1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
+1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
+1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
+1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
+1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
+1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
+1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
+1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
+1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
+1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
+1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
+1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
+1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
+1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
+1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
+1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
+1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
+1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
+1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
+1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
+1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
+1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
+1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
+1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
+1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
+1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
+1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
+1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
+1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
+1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
+1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
+1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
+1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
+1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
+1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
+1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
+1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
+1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
+1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
+1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
+1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
+1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
+1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
+1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
+1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
+1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
+1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
+1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
+1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
+1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
+1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
+1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
+1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
+1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
+1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
+1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
+1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
+1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
+1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
+1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
+1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
+1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
+1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
+1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
+1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
+1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
+1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
+1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
+1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
+1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
+1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
+1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
+1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
+1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
+1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
+1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
+1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
+1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
+1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
+1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
+1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
+1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
+1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
+1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
+1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
+1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
+1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
+1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
+1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
+1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
+1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
+1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
+1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
+1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
+1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
+1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
+1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
+1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
+1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
+1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
+1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
+1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
+1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
+1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
+1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
+1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
+1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
+1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
+1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
+1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
+1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
+1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
+1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
+1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
+1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
+1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
+1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
+1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
+1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
+1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
+1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
+1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
+1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
+1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
+1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
+1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
+1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
+1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
+1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
+1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
+1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
+1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
+1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
+1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
+1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
+1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
+1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
+1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
+1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
+1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
+1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
+1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
+1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
+1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
+1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
+1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
+1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
+1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
+1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
+1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
+1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
+1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
+1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
+1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
+1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
+1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
+1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
+1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
+1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
+1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
+1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
+1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
+1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
+1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
+1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
+1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
+1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
+1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
+1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
+2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
+2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
+2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
+2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
+2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
+2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
+2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
+2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
+2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
+2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
+2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
+2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
+2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
+2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
+2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
+2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
+2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
+2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
+2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
+2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
+2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
+2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
+2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
+2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
+2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
+2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
+2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
+2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
+2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
+2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
+2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
+2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
+2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
+2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
+2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
+2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
+2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
+2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
+2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
+2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
+2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
+2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
+2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
+2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
+2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
+2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
+2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
+2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
+2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
+2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
+2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
+2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
+2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
+2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
+2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
+2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
+2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
+2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
+2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
+2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
+2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
+2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
+2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
+2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
+2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
+2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
+2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
+2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
+2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
+2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
+2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
+2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
+2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
+2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
+2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
+2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
+2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
+2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
+2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
+2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
+2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
+2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
+2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
+2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
+2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
+2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
+2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
+2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
+2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
+2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
+2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
+2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
+2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
+2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
+2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
+2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
+2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
+2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
+2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
+2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
+2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
+2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
+2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
+2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
+2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;2136A;;;;N;;;;;
+2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
+2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
+2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
+2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
+2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
+2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
+2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
+2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
+2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
+2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
+2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
+2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F33;;;;N;;;;;
+2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
+2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
+2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
+2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
+2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
+2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
+2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
+2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
+2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
+2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
+2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
+2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
+2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
+2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
+2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
+2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
+2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
+2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
+2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
+2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
+2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
+2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
+2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
+2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
+2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
+2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
+2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
+2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;;
+2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
+2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
+2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
+2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
+2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
+2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
+2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
+2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
+2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
+2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
+2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
+2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
+2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
+2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
+2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
+2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
+2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
+2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
+2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
+2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
+2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
+2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
+2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
+2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
+2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
+2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
+2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
+2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
+2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
+2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
+2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
+2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
+2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
+2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
+2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
+2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
+2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
+2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
+2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
+2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
+2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
+2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
+2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
+2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
+2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
+2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
+2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
+2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
+2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
+2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
+2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
+2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
+2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
+2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
+2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
+2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
+2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
+2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
+2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
+2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
+2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
+2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
+2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
+2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
+2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
+2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
+2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
+2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
+2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
+2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
+2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
+2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
+2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
+2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
+2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
+2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
+2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
+2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
+2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
+2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
+2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
+2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
+2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
+2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
+2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
+2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
+2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
+2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
+2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
+2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
+2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
+2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
+2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
+2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
+2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
+2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
+2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
+2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
+2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
+2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
+2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
+2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
+2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
+2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
+2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
+2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
+2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
+2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
+2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
+2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
+2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
+2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
+2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
+2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
+2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
+2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
+2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
+2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
+2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
+2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
+2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
+2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
+2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
+2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
+2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
+2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
+2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
+2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
+2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
+2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
+2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
+2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
+2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
+2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
+2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
+2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
+2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
+2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
+2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
+2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
+2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
+2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
+2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;43AB;;;;N;;;;;
+2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
+2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
+2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
+2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
+2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
+2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
+2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
+2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
+2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
+2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
+2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
+2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
+2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
+2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
+2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
+2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
+2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
+2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
+2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
+2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
+2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
+2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
+2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
+2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
+2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
+2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
+2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
+2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
+2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
+2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
+2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
+2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
+2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
+2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
+2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
+2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
+2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
+2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
+2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
+2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
+2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
+2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
+2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
+2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
+2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
+2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
+2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
+2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
+2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
+2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
+2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
+2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
+2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
+2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
+2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
+2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
+2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
+2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
+2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
+2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
+2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
+2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
+2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
+2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AAE;;;;N;;;;;
+2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
+2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
+2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
+2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
+2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
+2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
+2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
+2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
+2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
+2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
+2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
+2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
+2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
+2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
+2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
+2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
+2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
+2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
+2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
+2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
+2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
+2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
+2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
+2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
+2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
+2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
+2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
+2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
+2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
+2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
+2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
+2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
+2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
+2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
+2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
+2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
+2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
+2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
+2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
+2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
+2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
+2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
+2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
+2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
+2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
+2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
+2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
+2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
+2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
+2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
+2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
+2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
+2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
+2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
+2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
+2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
+2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
+2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
+2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
+2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
+2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
+2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
+2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
+2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
+2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
+2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
+2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
+2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
+2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
+2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
+2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
+2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
+2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
+2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
+2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
+2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
+2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
+2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
+2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
+2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
+2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
+2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
+2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
+2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
+2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
+2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
+2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
+2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
+2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
+2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
+2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
+2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
+2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
+2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
+2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
+2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;4D57;;;;N;;;;;
+2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
+2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
+2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
+2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
+2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
+2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
+2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
+2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
+2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
+2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
+2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
+2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
+2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
+2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
+2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
+2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
+2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
+2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
+2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
+2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
+2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
+2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
+2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
+2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
+2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
+2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
+2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
+2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
+2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
+2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
+2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
+2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
+2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
+2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
+2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
+2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
+2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
+2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
+2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
+2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
+2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
+2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
+2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
+2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
+2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
+2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
+2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
+2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
+2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
+2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
+2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
+2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
+2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
+2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
+2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
+2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
+2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
+2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
+2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
+2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
+2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
+2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
+2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
+2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
+2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
+2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
+2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
+2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
+2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
+2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
+2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
+2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
+2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
+2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
+2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
+2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
+2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
+2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
+2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
+2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
+2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
+2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
+2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
+2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
+2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
+2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
+2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
+2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
+2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
+2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
+2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
+2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
+2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
+2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
+E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
+E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
+E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
+E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;
+E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;
+E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;
+E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;
+E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;
+E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;
+E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;
+E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;
+E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;
+E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;
+E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;
+E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;
+E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;
+E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;
+E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;
+E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;
+E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;
+E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;
+E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;
+E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;
+E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;
+E003A;TAG COLON;Cf;0;BN;;;;;N;;;;;
+E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;
+E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;
+E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;
+E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;
+E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;
+E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;
+E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;
+E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;
+E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;
+E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;
+E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;
+E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;
+E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;
+E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;
+E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;
+E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;
+E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;
+E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;
+E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;
+E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;
+E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;
+E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;
+F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
+FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
+100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
+10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
diff --git a/doc/specifications/rfc3454.txt b/doc/specifications/rfc3454.txt
new file mode 100644 (file)
index 0000000..bdf8edb
--- /dev/null
@@ -0,0 +1,3246 @@
+Below there are data tables extracted from RFC 3454.  The license for
+RFC 3454 is:
+
+   Copyright (C) The Internet Society (2002).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Unfortunately, that license is non-free according to
+licensing@fsf.org:
+
+ From: "Dave Turner via RT" <licensing@fsf.org>
+ Date: Thu, 08 Dec 2005 16:33:57 -0500
+ Subject: [gnu.org #211910] Are RFC specifications freely licensed? 
+
+ > Hi Dave!  I know this is an old issue (last post in this thread was
+ > about a year ago), but have you heard back from the licensing
+ > committee on the RFC 2026 and RFC 3978 licenses?
+
+ Sorry for the delay.  The old terms are officially non-free.
+
+However, to be copyrightable there needs to be some originality, which
+isn't present here, see:
+
+ From: "novalis@fsf.org via RT" <licensing@fsf.org>
+ Subject: Re: [gnu.org #211910] Are RFC specifications freely licensed?
+ Date: Thu, 06 Jan 2005 18:32:02 -0500
+
+ >> >> > If not, it's entirely possible that they're not copyrightable, or that
+ >> >> > they have very thin protection.  I would need to see them specifically
+ >> >> > to be able to determine this.
+ >> >> 
+ >> >> The table fall under the old license.  The ASN.1 schema fall under the
+ >> >> new license.  I'm attaching the tables, and the ASN.1 schema below.
+ >> >> If it matters: Some tables are derived from Unicode tables, and some
+ >> >> were probably created by hand.
+ >> >
+ >> > It looks to me like these tables do not have enough originality to be
+ >> > copyrightable.  The text surrounding them ("The following is the mapping
+ >> > table from section 3....") is probably minimally original and should be
+ >> > removed.
+ >> 
+ >> Are you sure about this?  I'm looking for something strong than "It
+ >> looks".  The tables were not trivial to create, it took the IETF some
+ >> time (years) to arrive with the final tables.  Perhaps the tables
+ >> could be argued to contain some artistic value.  But I'm not an expert
+ >> on this, so these are just my thoughts.
+ >
+ > I'm not a lawyer.  This isn't legal advice.  If you need legal advice,
+ > talk to a lawyer.  I can get a second opinion on this from our lawyers,
+ > if you think it's important, but it still won't be legal advice.
+ > 
+ > From a copyright perspective, the time and effort ("sweat of the brow")
+ > that a given thing takes don't matter (Fiest v. Rural Telephone
+ > Service).  What matters is the originality.  
+ >
+ > I don't see a lot here that's original.  The names are probably
+ > original, but names are generally unprotected.  And if the names are
+ > needed for compatibility, the scenes a faire doctrine comes into play.  
+
+ Right, the names are not required, only the actual numbers are.
+
+ Thanks, this information seem to solve my problem for the source code
+ in libidn.
+
+So we can use this material.  There may be other legal analysis that
+also reach the same conclusion.
+
+   ----- Start Table A.1 -----
+   0221
+   0234-024F
+   02AE-02AF
+   02EF-02FF
+   0350-035F
+   0370-0373
+   0376-0379
+   037B-037D
+   037F-0383
+   038B
+   038D
+   03A2
+   03CF
+   03F7-03FF
+   0487
+   04CF
+   04F6-04F7
+   04FA-04FF
+   0510-0530
+   0557-0558
+   0560
+   0588
+   058B-0590
+   05A2
+   05BA
+   05C5-05CF
+   05EB-05EF
+   05F5-060B
+   060D-061A
+   061C-061E
+   0620
+   063B-063F
+   0656-065F
+   06EE-06EF
+   06FF
+   070E
+   072D-072F
+   074B-077F
+   07B2-0900
+   0904
+   093A-093B
+   094E-094F
+   0955-0957
+   0971-0980
+   0984
+   098D-098E
+   0991-0992
+   09A9
+   09B1
+   09B3-09B5
+   09BA-09BB
+   09BD
+   09C5-09C6
+   09C9-09CA
+   09CE-09D6
+   09D8-09DB
+   09DE
+   09E4-09E5
+   09FB-0A01
+   0A03-0A04
+   0A0B-0A0E
+   0A11-0A12
+   0A29
+   0A31
+   0A34
+   0A37
+   0A3A-0A3B
+   0A3D
+   0A43-0A46
+   0A49-0A4A
+   0A4E-0A58
+   0A5D
+   0A5F-0A65
+   0A75-0A80
+   0A84
+   0A8C
+   0A8E
+   0A92
+   0AA9
+   0AB1
+   0AB4
+   0ABA-0ABB
+   0AC6
+   0ACA
+   0ACE-0ACF
+   0AD1-0ADF
+   0AE1-0AE5
+   0AF0-0B00
+   0B04
+   0B0D-0B0E
+   0B11-0B12
+   0B29
+   0B31
+   0B34-0B35
+   0B3A-0B3B
+   0B44-0B46
+   0B49-0B4A
+   0B4E-0B55
+   0B58-0B5B
+   0B5E
+   0B62-0B65
+   0B71-0B81
+   0B84
+   0B8B-0B8D
+   0B91
+   0B96-0B98
+   0B9B
+   0B9D
+   0BA0-0BA2
+   0BA5-0BA7
+   0BAB-0BAD
+   0BB6
+   0BBA-0BBD
+   0BC3-0BC5
+   0BC9
+   0BCE-0BD6
+   0BD8-0BE6
+   0BF3-0C00
+   0C04
+   0C0D
+   0C11
+   0C29
+   0C34
+   0C3A-0C3D
+   0C45
+   0C49
+   0C4E-0C54
+   0C57-0C5F
+   0C62-0C65
+   0C70-0C81
+   0C84
+   0C8D
+   0C91
+   0CA9
+   0CB4
+   0CBA-0CBD
+   0CC5
+   0CC9
+   0CCE-0CD4
+   0CD7-0CDD
+   0CDF
+   0CE2-0CE5
+   0CF0-0D01
+   0D04
+   0D0D
+   0D11
+   0D29
+   0D3A-0D3D
+   0D44-0D45
+   0D49
+   0D4E-0D56
+   0D58-0D5F
+   0D62-0D65
+   0D70-0D81
+   0D84
+   0D97-0D99
+   0DB2
+   0DBC
+   0DBE-0DBF
+   0DC7-0DC9
+   0DCB-0DCE
+   0DD5
+   0DD7
+   0DE0-0DF1
+   0DF5-0E00
+   0E3B-0E3E
+   0E5C-0E80
+   0E83
+   0E85-0E86
+   0E89
+   0E8B-0E8C
+   0E8E-0E93
+   0E98
+   0EA0
+   0EA4
+   0EA6
+   0EA8-0EA9
+   0EAC
+   0EBA
+   0EBE-0EBF
+   0EC5
+   0EC7
+   0ECE-0ECF
+   0EDA-0EDB
+   0EDE-0EFF
+   0F48
+   0F6B-0F70
+   0F8C-0F8F
+   0F98
+   0FBD
+   0FCD-0FCE
+   0FD0-0FFF
+   1022
+   1028
+   102B
+   1033-1035
+   103A-103F
+   105A-109F
+   10C6-10CF
+   10F9-10FA
+   10FC-10FF
+   115A-115E
+   11A3-11A7
+   11FA-11FF
+   1207
+   1247
+   1249
+   124E-124F
+   1257
+   1259
+   125E-125F
+   1287
+   1289
+   128E-128F
+   12AF
+   12B1
+   12B6-12B7
+   12BF
+   12C1
+   12C6-12C7
+   12CF
+   12D7
+   12EF
+   130F
+   1311
+   1316-1317
+   131F
+   1347
+   135B-1360
+   137D-139F
+   13F5-1400
+   1677-167F
+   169D-169F
+   16F1-16FF
+   170D
+   1715-171F
+   1737-173F
+   1754-175F
+   176D
+   1771
+   1774-177F
+   17DD-17DF
+   17EA-17FF
+   180F
+   181A-181F
+   1878-187F
+   18AA-1DFF
+   1E9C-1E9F
+   1EFA-1EFF
+   1F16-1F17
+   1F1E-1F1F
+   1F46-1F47
+   1F4E-1F4F
+   1F58
+   1F5A
+   1F5C
+   1F5E
+   1F7E-1F7F
+   1FB5
+   1FC5
+   1FD4-1FD5
+   1FDC
+   1FF0-1FF1
+   1FF5
+   1FFF
+   2053-2056
+   2058-205E
+   2064-2069
+   2072-2073
+   208F-209F
+   20B2-20CF
+   20EB-20FF
+   213B-213C
+   214C-2152
+   2184-218F
+   23CF-23FF
+   2427-243F
+   244B-245F
+   24FF
+   2614-2615
+   2618
+   267E-267F
+   268A-2700
+   2705
+   270A-270B
+   2728
+   274C
+   274E
+   2753-2755
+   2757
+   275F-2760
+   2795-2797
+   27B0
+   27BF-27CF
+   27EC-27EF
+   2B00-2E7F
+   2E9A
+   2EF4-2EFF
+   2FD6-2FEF
+   2FFC-2FFF
+   3040
+   3097-3098
+   3100-3104
+   312D-3130
+   318F
+   31B8-31EF
+   321D-321F
+   3244-3250
+   327C-327E
+   32CC-32CF
+   32FF
+   3377-337A
+   33DE-33DF
+   33FF
+   4DB6-4DFF
+   9FA6-9FFF
+   A48D-A48F
+   A4C7-ABFF
+   D7A4-D7FF
+   FA2E-FA2F
+   FA6B-FAFF
+   FB07-FB12
+   FB18-FB1C
+   FB37
+   FB3D
+   FB3F
+   FB42
+   FB45
+   FBB2-FBD2
+   FD40-FD4F
+   FD90-FD91
+   FDC8-FDCF
+   FDFD-FDFF
+   FE10-FE1F
+   FE24-FE2F
+   FE47-FE48
+   FE53
+   FE67
+   FE6C-FE6F
+   FE75
+   FEFD-FEFE
+   FF00
+   FFBF-FFC1
+   FFC8-FFC9
+   FFD0-FFD1
+   FFD8-FFD9
+   FFDD-FFDF
+   FFE7
+   FFEF-FFF8
+   10000-102FF
+   1031F
+   10324-1032F
+   1034B-103FF
+   10426-10427
+   1044E-1CFFF
+   1D0F6-1D0FF
+   1D127-1D129
+   1D1DE-1D3FF
+   1D455
+   1D49D
+   1D4A0-1D4A1
+   1D4A3-1D4A4
+   1D4A7-1D4A8
+   1D4AD
+   1D4BA
+   1D4BC
+   1D4C1
+   1D4C4
+   1D506
+   1D50B-1D50C
+   1D515
+   1D51D
+   1D53A
+   1D53F
+   1D545
+   1D547-1D549
+   1D551
+   1D6A4-1D6A7
+   1D7CA-1D7CD
+   1D800-1FFFD
+   2A6D7-2F7FF
+   2FA1E-2FFFD
+   30000-3FFFD
+   40000-4FFFD
+   50000-5FFFD
+   60000-6FFFD
+   70000-7FFFD
+   80000-8FFFD
+   90000-9FFFD
+   A0000-AFFFD
+   B0000-BFFFD
+   C0000-CFFFD
+   D0000-DFFFD
+   E0000
+   E0002-E001F
+   E0080-EFFFD
+   ----- End Table A.1 -----
+
+   ----- Start Table B.1 -----
+   00AD; ; Map to nothing
+   034F; ; Map to nothing
+   1806; ; Map to nothing
+   180B; ; Map to nothing
+   180C; ; Map to nothing
+   180D; ; Map to nothing
+   200B; ; Map to nothing
+   200C; ; Map to nothing
+   200D; ; Map to nothing
+   2060; ; Map to nothing
+   FE00; ; Map to nothing
+   FE01; ; Map to nothing
+   FE02; ; Map to nothing
+   FE03; ; Map to nothing
+   FE04; ; Map to nothing
+   FE05; ; Map to nothing
+   FE06; ; Map to nothing
+   FE07; ; Map to nothing
+   FE08; ; Map to nothing
+   FE09; ; Map to nothing
+   FE0A; ; Map to nothing
+   FE0B; ; Map to nothing
+   FE0C; ; Map to nothing
+   FE0D; ; Map to nothing
+   FE0E; ; Map to nothing
+   FE0F; ; Map to nothing
+   FEFF; ; Map to nothing
+   ----- End Table B.1 -----
+
+   ----- Start Table B.2 -----
+   0041; 0061; Case map
+   0042; 0062; Case map
+   0043; 0063; Case map
+   0044; 0064; Case map
+   0045; 0065; Case map
+   0046; 0066; Case map
+   0047; 0067; Case map
+   0048; 0068; Case map
+   0049; 0069; Case map
+   004A; 006A; Case map
+   004B; 006B; Case map
+   004C; 006C; Case map
+   004D; 006D; Case map
+   004E; 006E; Case map
+   004F; 006F; Case map
+   0050; 0070; Case map
+   0051; 0071; Case map
+   0052; 0072; Case map
+   0053; 0073; Case map
+   0054; 0074; Case map
+   0055; 0075; Case map
+   0056; 0076; Case map
+   0057; 0077; Case map
+   0058; 0078; Case map
+   0059; 0079; Case map
+   005A; 007A; Case map
+   00B5; 03BC; Case map
+   00C0; 00E0; Case map
+   00C1; 00E1; Case map
+   00C2; 00E2; Case map
+   00C3; 00E3; Case map
+   00C4; 00E4; Case map
+   00C5; 00E5; Case map
+   00C6; 00E6; Case map
+   00C7; 00E7; Case map
+   00C8; 00E8; Case map
+   00C9; 00E9; Case map
+   00CA; 00EA; Case map
+   00CB; 00EB; Case map
+   00CC; 00EC; Case map
+   00CD; 00ED; Case map
+   00CE; 00EE; Case map
+   00CF; 00EF; Case map
+   00D0; 00F0; Case map
+   00D1; 00F1; Case map
+   00D2; 00F2; Case map
+   00D3; 00F3; Case map
+   00D4; 00F4; Case map
+   00D5; 00F5; Case map
+   00D6; 00F6; Case map
+   00D8; 00F8; Case map
+   00D9; 00F9; Case map
+   00DA; 00FA; Case map
+   00DB; 00FB; Case map
+   00DC; 00FC; Case map
+   00DD; 00FD; Case map
+   00DE; 00FE; Case map
+   00DF; 0073 0073; Case map
+   0100; 0101; Case map
+   0102; 0103; Case map
+   0104; 0105; Case map
+   0106; 0107; Case map
+   0108; 0109; Case map
+   010A; 010B; Case map
+   010C; 010D; Case map
+   010E; 010F; Case map
+   0110; 0111; Case map
+   0112; 0113; Case map
+   0114; 0115; Case map
+   0116; 0117; Case map
+   0118; 0119; Case map
+   011A; 011B; Case map
+   011C; 011D; Case map
+   011E; 011F; Case map
+   0120; 0121; Case map
+   0122; 0123; Case map
+   0124; 0125; Case map
+   0126; 0127; Case map
+   0128; 0129; Case map
+   012A; 012B; Case map
+   012C; 012D; Case map
+   012E; 012F; Case map
+   0130; 0069 0307; Case map
+   0132; 0133; Case map
+   0134; 0135; Case map
+   0136; 0137; Case map
+   0139; 013A; Case map
+   013B; 013C; Case map
+   013D; 013E; Case map
+   013F; 0140; Case map
+   0141; 0142; Case map
+   0143; 0144; Case map
+   0145; 0146; Case map
+   0147; 0148; Case map
+   0149; 02BC 006E; Case map
+   014A; 014B; Case map
+   014C; 014D; Case map
+   014E; 014F; Case map
+   0150; 0151; Case map
+   0152; 0153; Case map
+   0154; 0155; Case map
+   0156; 0157; Case map
+   0158; 0159; Case map
+   015A; 015B; Case map
+   015C; 015D; Case map
+   015E; 015F; Case map
+   0160; 0161; Case map
+   0162; 0163; Case map
+   0164; 0165; Case map
+   0166; 0167; Case map
+   0168; 0169; Case map
+   016A; 016B; Case map
+   016C; 016D; Case map
+   016E; 016F; Case map
+   0170; 0171; Case map
+   0172; 0173; Case map
+   0174; 0175; Case map
+   0176; 0177; Case map
+   0178; 00FF; Case map
+   0179; 017A; Case map
+   017B; 017C; Case map
+   017D; 017E; Case map
+   017F; 0073; Case map
+   0181; 0253; Case map
+   0182; 0183; Case map
+   0184; 0185; Case map
+   0186; 0254; Case map
+   0187; 0188; Case map
+   0189; 0256; Case map
+   018A; 0257; Case map
+   018B; 018C; Case map
+   018E; 01DD; Case map
+   018F; 0259; Case map
+   0190; 025B; Case map
+   0191; 0192; Case map
+   0193; 0260; Case map
+   0194; 0263; Case map
+   0196; 0269; Case map
+   0197; 0268; Case map
+   0198; 0199; Case map
+   019C; 026F; Case map
+   019D; 0272; Case map
+   019F; 0275; Case map
+   01A0; 01A1; Case map
+   01A2; 01A3; Case map
+   01A4; 01A5; Case map
+   01A6; 0280; Case map
+   01A7; 01A8; Case map
+   01A9; 0283; Case map
+   01AC; 01AD; Case map
+   01AE; 0288; Case map
+   01AF; 01B0; Case map
+   01B1; 028A; Case map
+   01B2; 028B; Case map
+   01B3; 01B4; Case map
+   01B5; 01B6; Case map
+   01B7; 0292; Case map
+   01B8; 01B9; Case map
+   01BC; 01BD; Case map
+   01C4; 01C6; Case map
+   01C5; 01C6; Case map
+   01C7; 01C9; Case map
+   01C8; 01C9; Case map
+   01CA; 01CC; Case map
+   01CB; 01CC; Case map
+   01CD; 01CE; Case map
+   01CF; 01D0; Case map
+   01D1; 01D2; Case map
+   01D3; 01D4; Case map
+   01D5; 01D6; Case map
+   01D7; 01D8; Case map
+   01D9; 01DA; Case map
+   01DB; 01DC; Case map
+   01DE; 01DF; Case map
+   01E0; 01E1; Case map
+   01E2; 01E3; Case map
+   01E4; 01E5; Case map
+   01E6; 01E7; Case map
+   01E8; 01E9; Case map
+   01EA; 01EB; Case map
+   01EC; 01ED; Case map
+   01EE; 01EF; Case map
+   01F0; 006A 030C; Case map
+   01F1; 01F3; Case map
+   01F2; 01F3; Case map
+   01F4; 01F5; Case map
+   01F6; 0195; Case map
+   01F7; 01BF; Case map
+   01F8; 01F9; Case map
+   01FA; 01FB; Case map
+   01FC; 01FD; Case map
+   01FE; 01FF; Case map
+   0200; 0201; Case map
+   0202; 0203; Case map
+   0204; 0205; Case map
+   0206; 0207; Case map
+   0208; 0209; Case map
+   020A; 020B; Case map
+   020C; 020D; Case map
+   020E; 020F; Case map
+   0210; 0211; Case map
+   0212; 0213; Case map
+   0214; 0215; Case map
+   0216; 0217; Case map
+   0218; 0219; Case map
+   021A; 021B; Case map
+   021C; 021D; Case map
+   021E; 021F; Case map
+   0220; 019E; Case map
+   0222; 0223; Case map
+   0224; 0225; Case map
+   0226; 0227; Case map
+   0228; 0229; Case map
+   022A; 022B; Case map
+   022C; 022D; Case map
+   022E; 022F; Case map
+   0230; 0231; Case map
+   0232; 0233; Case map
+   0345; 03B9; Case map
+   037A; 0020 03B9; Additional folding
+   0386; 03AC; Case map
+   0388; 03AD; Case map
+   0389; 03AE; Case map
+   038A; 03AF; Case map
+   038C; 03CC; Case map
+   038E; 03CD; Case map
+   038F; 03CE; Case map
+   0390; 03B9 0308 0301; Case map
+   0391; 03B1; Case map
+   0392; 03B2; Case map
+   0393; 03B3; Case map
+   0394; 03B4; Case map
+   0395; 03B5; Case map
+   0396; 03B6; Case map
+   0397; 03B7; Case map
+   0398; 03B8; Case map
+   0399; 03B9; Case map
+   039A; 03BA; Case map
+   039B; 03BB; Case map
+   039C; 03BC; Case map
+   039D; 03BD; Case map
+   039E; 03BE; Case map
+   039F; 03BF; Case map
+   03A0; 03C0; Case map
+   03A1; 03C1; Case map
+   03A3; 03C3; Case map
+   03A4; 03C4; Case map
+   03A5; 03C5; Case map
+   03A6; 03C6; Case map
+   03A7; 03C7; Case map
+   03A8; 03C8; Case map
+   03A9; 03C9; Case map
+   03AA; 03CA; Case map
+   03AB; 03CB; Case map
+   03B0; 03C5 0308 0301; Case map
+   03C2; 03C3; Case map
+   03D0; 03B2; Case map
+   03D1; 03B8; Case map
+   03D2; 03C5; Additional folding
+   03D3; 03CD; Additional folding
+   03D4; 03CB; Additional folding
+   03D5; 03C6; Case map
+   03D6; 03C0; Case map
+   03D8; 03D9; Case map
+   03DA; 03DB; Case map
+   03DC; 03DD; Case map
+   03DE; 03DF; Case map
+   03E0; 03E1; Case map
+   03E2; 03E3; Case map
+   03E4; 03E5; Case map
+   03E6; 03E7; Case map
+   03E8; 03E9; Case map
+   03EA; 03EB; Case map
+   03EC; 03ED; Case map
+   03EE; 03EF; Case map
+   03F0; 03BA; Case map
+   03F1; 03C1; Case map
+   03F2; 03C3; Case map
+   03F4; 03B8; Case map
+   03F5; 03B5; Case map
+   0400; 0450; Case map
+   0401; 0451; Case map
+   0402; 0452; Case map
+   0403; 0453; Case map
+   0404; 0454; Case map
+   0405; 0455; Case map
+   0406; 0456; Case map
+   0407; 0457; Case map
+   0408; 0458; Case map
+   0409; 0459; Case map
+   040A; 045A; Case map
+   040B; 045B; Case map
+   040C; 045C; Case map
+   040D; 045D; Case map
+   040E; 045E; Case map
+   040F; 045F; Case map
+   0410; 0430; Case map
+   0411; 0431; Case map
+   0412; 0432; Case map
+   0413; 0433; Case map
+   0414; 0434; Case map
+   0415; 0435; Case map
+   0416; 0436; Case map
+   0417; 0437; Case map
+   0418; 0438; Case map
+   0419; 0439; Case map
+   041A; 043A; Case map
+   041B; 043B; Case map
+   041C; 043C; Case map
+   041D; 043D; Case map
+   041E; 043E; Case map
+   041F; 043F; Case map
+   0420; 0440; Case map
+   0421; 0441; Case map
+   0422; 0442; Case map
+   0423; 0443; Case map
+   0424; 0444; Case map
+   0425; 0445; Case map
+   0426; 0446; Case map
+   0427; 0447; Case map
+   0428; 0448; Case map
+   0429; 0449; Case map
+   042A; 044A; Case map
+   042B; 044B; Case map
+   042C; 044C; Case map
+   042D; 044D; Case map
+   042E; 044E; Case map
+   042F; 044F; Case map
+   0460; 0461; Case map
+   0462; 0463; Case map
+   0464; 0465; Case map
+   0466; 0467; Case map
+   0468; 0469; Case map
+   046A; 046B; Case map
+   046C; 046D; Case map
+   046E; 046F; Case map
+   0470; 0471; Case map
+   0472; 0473; Case map
+   0474; 0475; Case map
+   0476; 0477; Case map
+   0478; 0479; Case map
+   047A; 047B; Case map
+   047C; 047D; Case map
+   047E; 047F; Case map
+   0480; 0481; Case map
+   048A; 048B; Case map
+   048C; 048D; Case map
+   048E; 048F; Case map
+   0490; 0491; Case map
+   0492; 0493; Case map
+   0494; 0495; Case map
+   0496; 0497; Case map
+   0498; 0499; Case map
+   049A; 049B; Case map
+   049C; 049D; Case map
+   049E; 049F; Case map
+   04A0; 04A1; Case map
+   04A2; 04A3; Case map
+   04A4; 04A5; Case map
+   04A6; 04A7; Case map
+   04A8; 04A9; Case map
+   04AA; 04AB; Case map
+   04AC; 04AD; Case map
+   04AE; 04AF; Case map
+   04B0; 04B1; Case map
+   04B2; 04B3; Case map
+   04B4; 04B5; Case map
+   04B6; 04B7; Case map
+   04B8; 04B9; Case map
+   04BA; 04BB; Case map
+   04BC; 04BD; Case map
+   04BE; 04BF; Case map
+   04C1; 04C2; Case map
+   04C3; 04C4; Case map
+   04C5; 04C6; Case map
+   04C7; 04C8; Case map
+   04C9; 04CA; Case map
+   04CB; 04CC; Case map
+   04CD; 04CE; Case map
+   04D0; 04D1; Case map
+   04D2; 04D3; Case map
+   04D4; 04D5; Case map
+   04D6; 04D7; Case map
+   04D8; 04D9; Case map
+   04DA; 04DB; Case map
+   04DC; 04DD; Case map
+   04DE; 04DF; Case map
+   04E0; 04E1; Case map
+   04E2; 04E3; Case map
+   04E4; 04E5; Case map
+   04E6; 04E7; Case map
+   04E8; 04E9; Case map
+   04EA; 04EB; Case map
+   04EC; 04ED; Case map
+   04EE; 04EF; Case map
+   04F0; 04F1; Case map
+   04F2; 04F3; Case map
+   04F4; 04F5; Case map
+   04F8; 04F9; Case map
+   0500; 0501; Case map
+   0502; 0503; Case map
+   0504; 0505; Case map
+   0506; 0507; Case map
+   0508; 0509; Case map
+   050A; 050B; Case map
+   050C; 050D; Case map
+   050E; 050F; Case map
+   0531; 0561; Case map
+   0532; 0562; Case map
+   0533; 0563; Case map
+   0534; 0564; Case map
+   0535; 0565; Case map
+   0536; 0566; Case map
+   0537; 0567; Case map
+   0538; 0568; Case map
+   0539; 0569; Case map
+   053A; 056A; Case map
+   053B; 056B; Case map
+   053C; 056C; Case map
+   053D; 056D; Case map
+   053E; 056E; Case map
+   053F; 056F; Case map
+   0540; 0570; Case map
+   0541; 0571; Case map
+   0542; 0572; Case map
+   0543; 0573; Case map
+   0544; 0574; Case map
+   0545; 0575; Case map
+   0546; 0576; Case map
+   0547; 0577; Case map
+   0548; 0578; Case map
+   0549; 0579; Case map
+   054A; 057A; Case map
+   054B; 057B; Case map
+   054C; 057C; Case map
+   054D; 057D; Case map
+   054E; 057E; Case map
+   054F; 057F; Case map
+   0550; 0580; Case map
+   0551; 0581; Case map
+   0552; 0582; Case map
+   0553; 0583; Case map
+   0554; 0584; Case map
+   0555; 0585; Case map
+   0556; 0586; Case map
+   0587; 0565 0582; Case map
+   1E00; 1E01; Case map
+   1E02; 1E03; Case map
+   1E04; 1E05; Case map
+   1E06; 1E07; Case map
+   1E08; 1E09; Case map
+   1E0A; 1E0B; Case map
+   1E0C; 1E0D; Case map
+   1E0E; 1E0F; Case map
+   1E10; 1E11; Case map
+   1E12; 1E13; Case map
+   1E14; 1E15; Case map
+   1E16; 1E17; Case map
+   1E18; 1E19; Case map
+   1E1A; 1E1B; Case map
+   1E1C; 1E1D; Case map
+   1E1E; 1E1F; Case map
+   1E20; 1E21; Case map
+   1E22; 1E23; Case map
+   1E24; 1E25; Case map
+   1E26; 1E27; Case map
+   1E28; 1E29; Case map
+   1E2A; 1E2B; Case map
+   1E2C; 1E2D; Case map
+   1E2E; 1E2F; Case map
+   1E30; 1E31; Case map
+   1E32; 1E33; Case map
+   1E34; 1E35; Case map
+   1E36; 1E37; Case map
+   1E38; 1E39; Case map
+   1E3A; 1E3B; Case map
+   1E3C; 1E3D; Case map
+   1E3E; 1E3F; Case map
+   1E40; 1E41; Case map
+   1E42; 1E43; Case map
+   1E44; 1E45; Case map
+   1E46; 1E47; Case map
+   1E48; 1E49; Case map
+   1E4A; 1E4B; Case map
+   1E4C; 1E4D; Case map
+   1E4E; 1E4F; Case map
+   1E50; 1E51; Case map
+   1E52; 1E53; Case map
+   1E54; 1E55; Case map
+   1E56; 1E57; Case map
+   1E58; 1E59; Case map
+   1E5A; 1E5B; Case map
+   1E5C; 1E5D; Case map
+   1E5E; 1E5F; Case map
+   1E60; 1E61; Case map
+   1E62; 1E63; Case map
+   1E64; 1E65; Case map
+   1E66; 1E67; Case map
+   1E68; 1E69; Case map
+   1E6A; 1E6B; Case map
+   1E6C; 1E6D; Case map
+   1E6E; 1E6F; Case map
+   1E70; 1E71; Case map
+   1E72; 1E73; Case map
+   1E74; 1E75; Case map
+   1E76; 1E77; Case map
+   1E78; 1E79; Case map
+   1E7A; 1E7B; Case map
+   1E7C; 1E7D; Case map
+   1E7E; 1E7F; Case map
+   1E80; 1E81; Case map
+   1E82; 1E83; Case map
+   1E84; 1E85; Case map
+   1E86; 1E87; Case map
+   1E88; 1E89; Case map
+   1E8A; 1E8B; Case map
+   1E8C; 1E8D; Case map
+   1E8E; 1E8F; Case map
+   1E90; 1E91; Case map
+   1E92; 1E93; Case map
+   1E94; 1E95; Case map
+   1E96; 0068 0331; Case map
+   1E97; 0074 0308; Case map
+   1E98; 0077 030A; Case map
+   1E99; 0079 030A; Case map
+   1E9A; 0061 02BE; Case map
+   1E9B; 1E61; Case map
+   1EA0; 1EA1; Case map
+   1EA2; 1EA3; Case map
+   1EA4; 1EA5; Case map
+   1EA6; 1EA7; Case map
+   1EA8; 1EA9; Case map
+   1EAA; 1EAB; Case map
+   1EAC; 1EAD; Case map
+   1EAE; 1EAF; Case map
+   1EB0; 1EB1; Case map
+   1EB2; 1EB3; Case map
+   1EB4; 1EB5; Case map
+   1EB6; 1EB7; Case map
+   1EB8; 1EB9; Case map
+   1EBA; 1EBB; Case map
+   1EBC; 1EBD; Case map
+   1EBE; 1EBF; Case map
+   1EC0; 1EC1; Case map
+   1EC2; 1EC3; Case map
+   1EC4; 1EC5; Case map
+   1EC6; 1EC7; Case map
+   1EC8; 1EC9; Case map
+   1ECA; 1ECB; Case map
+   1ECC; 1ECD; Case map
+   1ECE; 1ECF; Case map
+   1ED0; 1ED1; Case map
+   1ED2; 1ED3; Case map
+   1ED4; 1ED5; Case map
+   1ED6; 1ED7; Case map
+   1ED8; 1ED9; Case map
+   1EDA; 1EDB; Case map
+   1EDC; 1EDD; Case map
+   1EDE; 1EDF; Case map
+   1EE0; 1EE1; Case map
+   1EE2; 1EE3; Case map
+   1EE4; 1EE5; Case map
+   1EE6; 1EE7; Case map
+   1EE8; 1EE9; Case map
+   1EEA; 1EEB; Case map
+   1EEC; 1EED; Case map
+   1EEE; 1EEF; Case map
+   1EF0; 1EF1; Case map
+   1EF2; 1EF3; Case map
+   1EF4; 1EF5; Case map
+   1EF6; 1EF7; Case map
+   1EF8; 1EF9; Case map
+   1F08; 1F00; Case map
+   1F09; 1F01; Case map
+   1F0A; 1F02; Case map
+   1F0B; 1F03; Case map
+   1F0C; 1F04; Case map
+   1F0D; 1F05; Case map
+   1F0E; 1F06; Case map
+   1F0F; 1F07; Case map
+   1F18; 1F10; Case map
+   1F19; 1F11; Case map
+   1F1A; 1F12; Case map
+   1F1B; 1F13; Case map
+   1F1C; 1F14; Case map
+   1F1D; 1F15; Case map
+   1F28; 1F20; Case map
+   1F29; 1F21; Case map
+   1F2A; 1F22; Case map
+   1F2B; 1F23; Case map
+   1F2C; 1F24; Case map
+   1F2D; 1F25; Case map
+   1F2E; 1F26; Case map
+   1F2F; 1F27; Case map
+   1F38; 1F30; Case map
+   1F39; 1F31; Case map
+   1F3A; 1F32; Case map
+   1F3B; 1F33; Case map
+   1F3C; 1F34; Case map
+   1F3D; 1F35; Case map
+   1F3E; 1F36; Case map
+   1F3F; 1F37; Case map
+   1F48; 1F40; Case map
+   1F49; 1F41; Case map
+   1F4A; 1F42; Case map
+   1F4B; 1F43; Case map
+   1F4C; 1F44; Case map
+   1F4D; 1F45; Case map
+   1F50; 03C5 0313; Case map
+   1F52; 03C5 0313 0300; Case map
+   1F54; 03C5 0313 0301; Case map
+   1F56; 03C5 0313 0342; Case map
+   1F59; 1F51; Case map
+   1F5B; 1F53; Case map
+   1F5D; 1F55; Case map
+   1F5F; 1F57; Case map
+   1F68; 1F60; Case map
+   1F69; 1F61; Case map
+   1F6A; 1F62; Case map
+   1F6B; 1F63; Case map
+   1F6C; 1F64; Case map
+   1F6D; 1F65; Case map
+   1F6E; 1F66; Case map
+   1F6F; 1F67; Case map
+   1F80; 1F00 03B9; Case map
+   1F81; 1F01 03B9; Case map
+   1F82; 1F02 03B9; Case map
+   1F83; 1F03 03B9; Case map
+   1F84; 1F04 03B9; Case map
+   1F85; 1F05 03B9; Case map
+   1F86; 1F06 03B9; Case map
+   1F87; 1F07 03B9; Case map
+   1F88; 1F00 03B9; Case map
+   1F89; 1F01 03B9; Case map
+   1F8A; 1F02 03B9; Case map
+   1F8B; 1F03 03B9; Case map
+   1F8C; 1F04 03B9; Case map
+   1F8D; 1F05 03B9; Case map
+   1F8E; 1F06 03B9; Case map
+   1F8F; 1F07 03B9; Case map
+   1F90; 1F20 03B9; Case map
+   1F91; 1F21 03B9; Case map
+   1F92; 1F22 03B9; Case map
+   1F93; 1F23 03B9; Case map
+   1F94; 1F24 03B9; Case map
+   1F95; 1F25 03B9; Case map
+   1F96; 1F26 03B9; Case map
+   1F97; 1F27 03B9; Case map
+   1F98; 1F20 03B9; Case map
+   1F99; 1F21 03B9; Case map
+   1F9A; 1F22 03B9; Case map
+   1F9B; 1F23 03B9; Case map
+   1F9C; 1F24 03B9; Case map
+   1F9D; 1F25 03B9; Case map
+   1F9E; 1F26 03B9; Case map
+   1F9F; 1F27 03B9; Case map
+   1FA0; 1F60 03B9; Case map
+   1FA1; 1F61 03B9; Case map
+   1FA2; 1F62 03B9; Case map
+   1FA3; 1F63 03B9; Case map
+   1FA4; 1F64 03B9; Case map
+   1FA5; 1F65 03B9; Case map
+   1FA6; 1F66 03B9; Case map
+   1FA7; 1F67 03B9; Case map
+   1FA8; 1F60 03B9; Case map
+   1FA9; 1F61 03B9; Case map
+   1FAA; 1F62 03B9; Case map
+   1FAB; 1F63 03B9; Case map
+   1FAC; 1F64 03B9; Case map
+   1FAD; 1F65 03B9; Case map
+   1FAE; 1F66 03B9; Case map
+   1FAF; 1F67 03B9; Case map
+   1FB2; 1F70 03B9; Case map
+   1FB3; 03B1 03B9; Case map
+   1FB4; 03AC 03B9; Case map
+   1FB6; 03B1 0342; Case map
+   1FB7; 03B1 0342 03B9; Case map
+   1FB8; 1FB0; Case map
+   1FB9; 1FB1; Case map
+   1FBA; 1F70; Case map
+   1FBB; 1F71; Case map
+   1FBC; 03B1 03B9; Case map
+   1FBE; 03B9; Case map
+   1FC2; 1F74 03B9; Case map
+   1FC3; 03B7 03B9; Case map
+   1FC4; 03AE 03B9; Case map
+   1FC6; 03B7 0342; Case map
+   1FC7; 03B7 0342 03B9; Case map
+   1FC8; 1F72; Case map
+   1FC9; 1F73; Case map
+   1FCA; 1F74; Case map
+   1FCB; 1F75; Case map
+   1FCC; 03B7 03B9; Case map
+   1FD2; 03B9 0308 0300; Case map
+   1FD3; 03B9 0308 0301; Case map
+   1FD6; 03B9 0342; Case map
+   1FD7; 03B9 0308 0342; Case map
+   1FD8; 1FD0; Case map
+   1FD9; 1FD1; Case map
+   1FDA; 1F76; Case map
+   1FDB; 1F77; Case map
+   1FE2; 03C5 0308 0300; Case map
+   1FE3; 03C5 0308 0301; Case map
+   1FE4; 03C1 0313; Case map
+   1FE6; 03C5 0342; Case map
+   1FE7; 03C5 0308 0342; Case map
+   1FE8; 1FE0; Case map
+   1FE9; 1FE1; Case map
+   1FEA; 1F7A; Case map
+   1FEB; 1F7B; Case map
+   1FEC; 1FE5; Case map
+   1FF2; 1F7C 03B9; Case map
+   1FF3; 03C9 03B9; Case map
+   1FF4; 03CE 03B9; Case map
+   1FF6; 03C9 0342; Case map
+   1FF7; 03C9 0342 03B9; Case map
+   1FF8; 1F78; Case map
+   1FF9; 1F79; Case map
+   1FFA; 1F7C; Case map
+   1FFB; 1F7D; Case map
+   1FFC; 03C9 03B9; Case map
+   20A8; 0072 0073; Additional folding
+   2102; 0063; Additional folding
+   2103; 00B0 0063; Additional folding
+   2107; 025B; Additional folding
+   2109; 00B0 0066; Additional folding
+   210B; 0068; Additional folding
+   210C; 0068; Additional folding
+   210D; 0068; Additional folding
+   2110; 0069; Additional folding
+   2111; 0069; Additional folding
+   2112; 006C; Additional folding
+   2115; 006E; Additional folding
+   2116; 006E 006F; Additional folding
+   2119; 0070; Additional folding
+   211A; 0071; Additional folding
+   211B; 0072; Additional folding
+   211C; 0072; Additional folding
+   211D; 0072; Additional folding
+   2120; 0073 006D; Additional folding
+   2121; 0074 0065 006C; Additional folding
+   2122; 0074 006D; Additional folding
+   2124; 007A; Additional folding
+   2126; 03C9; Case map
+   2128; 007A; Additional folding
+   212A; 006B; Case map
+   212B; 00E5; Case map
+   212C; 0062; Additional folding
+   212D; 0063; Additional folding
+   2130; 0065; Additional folding
+   2131; 0066; Additional folding
+   2133; 006D; Additional folding
+   213E; 03B3; Additional folding
+   213F; 03C0; Additional folding
+   2145; 0064; Additional folding
+   2160; 2170; Case map
+   2161; 2171; Case map
+   2162; 2172; Case map
+   2163; 2173; Case map
+   2164; 2174; Case map
+   2165; 2175; Case map
+   2166; 2176; Case map
+   2167; 2177; Case map
+   2168; 2178; Case map
+   2169; 2179; Case map
+   216A; 217A; Case map
+   216B; 217B; Case map
+   216C; 217C; Case map
+   216D; 217D; Case map
+   216E; 217E; Case map
+   216F; 217F; Case map
+   24B6; 24D0; Case map
+   24B7; 24D1; Case map
+   24B8; 24D2; Case map
+   24B9; 24D3; Case map
+   24BA; 24D4; Case map
+   24BB; 24D5; Case map
+   24BC; 24D6; Case map
+   24BD; 24D7; Case map
+   24BE; 24D8; Case map
+   24BF; 24D9; Case map
+   24C0; 24DA; Case map
+   24C1; 24DB; Case map
+   24C2; 24DC; Case map
+   24C3; 24DD; Case map
+   24C4; 24DE; Case map
+   24C5; 24DF; Case map
+   24C6; 24E0; Case map
+   24C7; 24E1; Case map
+   24C8; 24E2; Case map
+   24C9; 24E3; Case map
+   24CA; 24E4; Case map
+   24CB; 24E5; Case map
+   24CC; 24E6; Case map
+   24CD; 24E7; Case map
+   24CE; 24E8; Case map
+   24CF; 24E9; Case map
+   3371; 0068 0070 0061; Additional folding
+   3373; 0061 0075; Additional folding
+   3375; 006F 0076; Additional folding
+   3380; 0070 0061; Additional folding
+   3381; 006E 0061; Additional folding
+   3382; 03BC 0061; Additional folding
+   3383; 006D 0061; Additional folding
+   3384; 006B 0061; Additional folding
+   3385; 006B 0062; Additional folding
+   3386; 006D 0062; Additional folding
+   3387; 0067 0062; Additional folding
+   338A; 0070 0066; Additional folding
+   338B; 006E 0066; Additional folding
+   338C; 03BC 0066; Additional folding
+   3390; 0068 007A; Additional folding
+   3391; 006B 0068 007A; Additional folding
+   3392; 006D 0068 007A; Additional folding
+   3393; 0067 0068 007A; Additional folding
+   3394; 0074 0068 007A; Additional folding
+   33A9; 0070 0061; Additional folding
+   33AA; 006B 0070 0061; Additional folding
+   33AB; 006D 0070 0061; Additional folding
+   33AC; 0067 0070 0061; Additional folding
+   33B4; 0070 0076; Additional folding
+   33B5; 006E 0076; Additional folding
+   33B6; 03BC 0076; Additional folding
+   33B7; 006D 0076; Additional folding
+   33B8; 006B 0076; Additional folding
+   33B9; 006D 0076; Additional folding
+   33BA; 0070 0077; Additional folding
+   33BB; 006E 0077; Additional folding
+   33BC; 03BC 0077; Additional folding
+   33BD; 006D 0077; Additional folding
+   33BE; 006B 0077; Additional folding
+   33BF; 006D 0077; Additional folding
+   33C0; 006B 03C9; Additional folding
+   33C1; 006D 03C9; Additional folding
+   33C3; 0062 0071; Additional folding
+   33C6; 0063 2215 006B 0067; Additional folding
+   33C7; 0063 006F 002E; Additional folding
+   33C8; 0064 0062; Additional folding
+   33C9; 0067 0079; Additional folding
+   33CB; 0068 0070; Additional folding
+   33CD; 006B 006B; Additional folding
+   33CE; 006B 006D; Additional folding
+   33D7; 0070 0068; Additional folding
+   33D9; 0070 0070 006D; Additional folding
+   33DA; 0070 0072; Additional folding
+   33DC; 0073 0076; Additional folding
+   33DD; 0077 0062; Additional folding
+   FB00; 0066 0066; Case map
+   FB01; 0066 0069; Case map
+   FB02; 0066 006C; Case map
+   FB03; 0066 0066 0069; Case map
+   FB04; 0066 0066 006C; Case map
+   FB05; 0073 0074; Case map
+   FB06; 0073 0074; Case map
+   FB13; 0574 0576; Case map
+   FB14; 0574 0565; Case map
+   FB15; 0574 056B; Case map
+   FB16; 057E 0576; Case map
+   FB17; 0574 056D; Case map
+   FF21; FF41; Case map
+   FF22; FF42; Case map
+   FF23; FF43; Case map
+   FF24; FF44; Case map
+   FF25; FF45; Case map
+   FF26; FF46; Case map
+   FF27; FF47; Case map
+   FF28; FF48; Case map
+   FF29; FF49; Case map
+   FF2A; FF4A; Case map
+   FF2B; FF4B; Case map
+   FF2C; FF4C; Case map
+   FF2D; FF4D; Case map
+   FF2E; FF4E; Case map
+   FF2F; FF4F; Case map
+   FF30; FF50; Case map
+   FF31; FF51; Case map
+   FF32; FF52; Case map
+   FF33; FF53; Case map
+   FF34; FF54; Case map
+   FF35; FF55; Case map
+   FF36; FF56; Case map
+   FF37; FF57; Case map
+   FF38; FF58; Case map
+   FF39; FF59; Case map
+   FF3A; FF5A; Case map
+   10400; 10428; Case map
+   10401; 10429; Case map
+   10402; 1042A; Case map
+   10403; 1042B; Case map
+   10404; 1042C; Case map
+   10405; 1042D; Case map
+   10406; 1042E; Case map
+   10407; 1042F; Case map
+   10408; 10430; Case map
+   10409; 10431; Case map
+   1040A; 10432; Case map
+   1040B; 10433; Case map
+   1040C; 10434; Case map
+   1040D; 10435; Case map
+   1040E; 10436; Case map
+   1040F; 10437; Case map
+   10410; 10438; Case map
+   10411; 10439; Case map
+   10412; 1043A; Case map
+   10413; 1043B; Case map
+   10414; 1043C; Case map
+   10415; 1043D; Case map
+   10416; 1043E; Case map
+   10417; 1043F; Case map
+   10418; 10440; Case map
+   10419; 10441; Case map
+   1041A; 10442; Case map
+   1041B; 10443; Case map
+   1041C; 10444; Case map
+   1041D; 10445; Case map
+   1041E; 10446; Case map
+   1041F; 10447; Case map
+   10420; 10448; Case map
+   10421; 10449; Case map
+   10422; 1044A; Case map
+   10423; 1044B; Case map
+   10424; 1044C; Case map
+   10425; 1044D; Case map
+   1D400; 0061; Additional folding
+   1D401; 0062; Additional folding
+   1D402; 0063; Additional folding
+   1D403; 0064; Additional folding
+   1D404; 0065; Additional folding
+   1D405; 0066; Additional folding
+   1D406; 0067; Additional folding
+   1D407; 0068; Additional folding
+   1D408; 0069; Additional folding
+   1D409; 006A; Additional folding
+   1D40A; 006B; Additional folding
+   1D40B; 006C; Additional folding
+   1D40C; 006D; Additional folding
+   1D40D; 006E; Additional folding
+   1D40E; 006F; Additional folding
+   1D40F; 0070; Additional folding
+   1D410; 0071; Additional folding
+   1D411; 0072; Additional folding
+   1D412; 0073; Additional folding
+   1D413; 0074; Additional folding
+   1D414; 0075; Additional folding
+   1D415; 0076; Additional folding
+   1D416; 0077; Additional folding
+   1D417; 0078; Additional folding
+   1D418; 0079; Additional folding
+   1D419; 007A; Additional folding
+   1D434; 0061; Additional folding
+   1D435; 0062; Additional folding
+   1D436; 0063; Additional folding
+   1D437; 0064; Additional folding
+   1D438; 0065; Additional folding
+   1D439; 0066; Additional folding
+   1D43A; 0067; Additional folding
+   1D43B; 0068; Additional folding
+   1D43C; 0069; Additional folding
+   1D43D; 006A; Additional folding
+   1D43E; 006B; Additional folding
+   1D43F; 006C; Additional folding
+   1D440; 006D; Additional folding
+   1D441; 006E; Additional folding
+   1D442; 006F; Additional folding
+   1D443; 0070; Additional folding
+   1D444; 0071; Additional folding
+   1D445; 0072; Additional folding
+   1D446; 0073; Additional folding
+   1D447; 0074; Additional folding
+   1D448; 0075; Additional folding
+   1D449; 0076; Additional folding
+   1D44A; 0077; Additional folding
+   1D44B; 0078; Additional folding
+   1D44C; 0079; Additional folding
+   1D44D; 007A; Additional folding
+   1D468; 0061; Additional folding
+   1D469; 0062; Additional folding
+   1D46A; 0063; Additional folding
+   1D46B; 0064; Additional folding
+   1D46C; 0065; Additional folding
+   1D46D; 0066; Additional folding
+   1D46E; 0067; Additional folding
+   1D46F; 0068; Additional folding
+   1D470; 0069; Additional folding
+   1D471; 006A; Additional folding
+   1D472; 006B; Additional folding
+   1D473; 006C; Additional folding
+   1D474; 006D; Additional folding
+   1D475; 006E; Additional folding
+   1D476; 006F; Additional folding
+   1D477; 0070; Additional folding
+   1D478; 0071; Additional folding
+   1D479; 0072; Additional folding
+   1D47A; 0073; Additional folding
+   1D47B; 0074; Additional folding
+   1D47C; 0075; Additional folding
+   1D47D; 0076; Additional folding
+   1D47E; 0077; Additional folding
+   1D47F; 0078; Additional folding
+   1D480; 0079; Additional folding
+   1D481; 007A; Additional folding
+   1D49C; 0061; Additional folding
+   1D49E; 0063; Additional folding
+   1D49F; 0064; Additional folding
+   1D4A2; 0067; Additional folding
+   1D4A5; 006A; Additional folding
+   1D4A6; 006B; Additional folding
+   1D4A9; 006E; Additional folding
+   1D4AA; 006F; Additional folding
+   1D4AB; 0070; Additional folding
+   1D4AC; 0071; Additional folding
+   1D4AE; 0073; Additional folding
+   1D4AF; 0074; Additional folding
+   1D4B0; 0075; Additional folding
+   1D4B1; 0076; Additional folding
+   1D4B2; 0077; Additional folding
+   1D4B3; 0078; Additional folding
+   1D4B4; 0079; Additional folding
+   1D4B5; 007A; Additional folding
+   1D4D0; 0061; Additional folding
+   1D4D1; 0062; Additional folding
+   1D4D2; 0063; Additional folding
+   1D4D3; 0064; Additional folding
+   1D4D4; 0065; Additional folding
+   1D4D5; 0066; Additional folding
+   1D4D6; 0067; Additional folding
+   1D4D7; 0068; Additional folding
+   1D4D8; 0069; Additional folding
+   1D4D9; 006A; Additional folding
+   1D4DA; 006B; Additional folding
+   1D4DB; 006C; Additional folding
+   1D4DC; 006D; Additional folding
+   1D4DD; 006E; Additional folding
+   1D4DE; 006F; Additional folding
+   1D4DF; 0070; Additional folding
+   1D4E0; 0071; Additional folding
+   1D4E1; 0072; Additional folding
+   1D4E2; 0073; Additional folding
+   1D4E3; 0074; Additional folding
+   1D4E4; 0075; Additional folding
+   1D4E5; 0076; Additional folding
+   1D4E6; 0077; Additional folding
+   1D4E7; 0078; Additional folding
+   1D4E8; 0079; Additional folding
+   1D4E9; 007A; Additional folding
+   1D504; 0061; Additional folding
+   1D505; 0062; Additional folding
+   1D507; 0064; Additional folding
+   1D508; 0065; Additional folding
+   1D509; 0066; Additional folding
+   1D50A; 0067; Additional folding
+   1D50D; 006A; Additional folding
+   1D50E; 006B; Additional folding
+   1D50F; 006C; Additional folding
+   1D510; 006D; Additional folding
+   1D511; 006E; Additional folding
+   1D512; 006F; Additional folding
+   1D513; 0070; Additional folding
+   1D514; 0071; Additional folding
+   1D516; 0073; Additional folding
+   1D517; 0074; Additional folding
+   1D518; 0075; Additional folding
+   1D519; 0076; Additional folding
+   1D51A; 0077; Additional folding
+   1D51B; 0078; Additional folding
+   1D51C; 0079; Additional folding
+   1D538; 0061; Additional folding
+   1D539; 0062; Additional folding
+   1D53B; 0064; Additional folding
+   1D53C; 0065; Additional folding
+   1D53D; 0066; Additional folding
+   1D53E; 0067; Additional folding
+   1D540; 0069; Additional folding
+   1D541; 006A; Additional folding
+   1D542; 006B; Additional folding
+   1D543; 006C; Additional folding
+   1D544; 006D; Additional folding
+   1D546; 006F; Additional folding
+   1D54A; 0073; Additional folding
+   1D54B; 0074; Additional folding
+   1D54C; 0075; Additional folding
+   1D54D; 0076; Additional folding
+   1D54E; 0077; Additional folding
+   1D54F; 0078; Additional folding
+   1D550; 0079; Additional folding
+   1D56C; 0061; Additional folding
+   1D56D; 0062; Additional folding
+   1D56E; 0063; Additional folding
+   1D56F; 0064; Additional folding
+   1D570; 0065; Additional folding
+   1D571; 0066; Additional folding
+   1D572; 0067; Additional folding
+   1D573; 0068; Additional folding
+   1D574; 0069; Additional folding
+   1D575; 006A; Additional folding
+   1D576; 006B; Additional folding
+   1D577; 006C; Additional folding
+   1D578; 006D; Additional folding
+   1D579; 006E; Additional folding
+   1D57A; 006F; Additional folding
+   1D57B; 0070; Additional folding
+   1D57C; 0071; Additional folding
+   1D57D; 0072; Additional folding
+   1D57E; 0073; Additional folding
+   1D57F; 0074; Additional folding
+   1D580; 0075; Additional folding
+   1D581; 0076; Additional folding
+   1D582; 0077; Additional folding
+   1D583; 0078; Additional folding
+   1D584; 0079; Additional folding
+   1D585; 007A; Additional folding
+   1D5A0; 0061; Additional folding
+   1D5A1; 0062; Additional folding
+   1D5A2; 0063; Additional folding
+   1D5A3; 0064; Additional folding
+   1D5A4; 0065; Additional folding
+   1D5A5; 0066; Additional folding
+   1D5A6; 0067; Additional folding
+   1D5A7; 0068; Additional folding
+   1D5A8; 0069; Additional folding
+   1D5A9; 006A; Additional folding
+   1D5AA; 006B; Additional folding
+   1D5AB; 006C; Additional folding
+   1D5AC; 006D; Additional folding
+   1D5AD; 006E; Additional folding
+   1D5AE; 006F; Additional folding
+   1D5AF; 0070; Additional folding
+   1D5B0; 0071; Additional folding
+   1D5B1; 0072; Additional folding
+   1D5B2; 0073; Additional folding
+   1D5B3; 0074; Additional folding
+   1D5B4; 0075; Additional folding
+   1D5B5; 0076; Additional folding
+   1D5B6; 0077; Additional folding
+   1D5B7; 0078; Additional folding
+   1D5B8; 0079; Additional folding
+   1D5B9; 007A; Additional folding
+   1D5D4; 0061; Additional folding
+   1D5D5; 0062; Additional folding
+   1D5D6; 0063; Additional folding
+   1D5D7; 0064; Additional folding
+   1D5D8; 0065; Additional folding
+   1D5D9; 0066; Additional folding
+   1D5DA; 0067; Additional folding
+   1D5DB; 0068; Additional folding
+   1D5DC; 0069; Additional folding
+   1D5DD; 006A; Additional folding
+   1D5DE; 006B; Additional folding
+   1D5DF; 006C; Additional folding
+   1D5E0; 006D; Additional folding
+   1D5E1; 006E; Additional folding
+   1D5E2; 006F; Additional folding
+   1D5E3; 0070; Additional folding
+   1D5E4; 0071; Additional folding
+   1D5E5; 0072; Additional folding
+   1D5E6; 0073; Additional folding
+   1D5E7; 0074; Additional folding
+   1D5E8; 0075; Additional folding
+   1D5E9; 0076; Additional folding
+   1D5EA; 0077; Additional folding
+   1D5EB; 0078; Additional folding
+   1D5EC; 0079; Additional folding
+   1D5ED; 007A; Additional folding
+   1D608; 0061; Additional folding
+   1D609; 0062; Additional folding
+   1D60A; 0063; Additional folding
+   1D60B; 0064; Additional folding
+   1D60C; 0065; Additional folding
+   1D60D; 0066; Additional folding
+   1D60E; 0067; Additional folding
+   1D60F; 0068; Additional folding
+   1D610; 0069; Additional folding
+   1D611; 006A; Additional folding
+   1D612; 006B; Additional folding
+   1D613; 006C; Additional folding
+   1D614; 006D; Additional folding
+   1D615; 006E; Additional folding
+   1D616; 006F; Additional folding
+   1D617; 0070; Additional folding
+   1D618; 0071; Additional folding
+   1D619; 0072; Additional folding
+   1D61A; 0073; Additional folding
+   1D61B; 0074; Additional folding
+   1D61C; 0075; Additional folding
+   1D61D; 0076; Additional folding
+   1D61E; 0077; Additional folding
+   1D61F; 0078; Additional folding
+   1D620; 0079; Additional folding
+   1D621; 007A; Additional folding
+   1D63C; 0061; Additional folding
+   1D63D; 0062; Additional folding
+   1D63E; 0063; Additional folding
+   1D63F; 0064; Additional folding
+   1D640; 0065; Additional folding
+   1D641; 0066; Additional folding
+   1D642; 0067; Additional folding
+   1D643; 0068; Additional folding
+   1D644; 0069; Additional folding
+   1D645; 006A; Additional folding
+   1D646; 006B; Additional folding
+   1D647; 006C; Additional folding
+   1D648; 006D; Additional folding
+   1D649; 006E; Additional folding
+   1D64A; 006F; Additional folding
+   1D64B; 0070; Additional folding
+   1D64C; 0071; Additional folding
+   1D64D; 0072; Additional folding
+   1D64E; 0073; Additional folding
+   1D64F; 0074; Additional folding
+   1D650; 0075; Additional folding
+   1D651; 0076; Additional folding
+   1D652; 0077; Additional folding
+   1D653; 0078; Additional folding
+   1D654; 0079; Additional folding
+   1D655; 007A; Additional folding
+   1D670; 0061; Additional folding
+   1D671; 0062; Additional folding
+   1D672; 0063; Additional folding
+   1D673; 0064; Additional folding
+   1D674; 0065; Additional folding
+   1D675; 0066; Additional folding
+   1D676; 0067; Additional folding
+   1D677; 0068; Additional folding
+   1D678; 0069; Additional folding
+   1D679; 006A; Additional folding
+   1D67A; 006B; Additional folding
+   1D67B; 006C; Additional folding
+   1D67C; 006D; Additional folding
+   1D67D; 006E; Additional folding
+   1D67E; 006F; Additional folding
+   1D67F; 0070; Additional folding
+   1D680; 0071; Additional folding
+   1D681; 0072; Additional folding
+   1D682; 0073; Additional folding
+   1D683; 0074; Additional folding
+   1D684; 0075; Additional folding
+   1D685; 0076; Additional folding
+   1D686; 0077; Additional folding
+   1D687; 0078; Additional folding
+   1D688; 0079; Additional folding
+   1D689; 007A; Additional folding
+   1D6A8; 03B1; Additional folding
+   1D6A9; 03B2; Additional folding
+   1D6AA; 03B3; Additional folding
+   1D6AB; 03B4; Additional folding
+   1D6AC; 03B5; Additional folding
+   1D6AD; 03B6; Additional folding
+   1D6AE; 03B7; Additional folding
+   1D6AF; 03B8; Additional folding
+   1D6B0; 03B9; Additional folding
+   1D6B1; 03BA; Additional folding
+   1D6B2; 03BB; Additional folding
+   1D6B3; 03BC; Additional folding
+   1D6B4; 03BD; Additional folding
+   1D6B5; 03BE; Additional folding
+   1D6B6; 03BF; Additional folding
+   1D6B7; 03C0; Additional folding
+   1D6B8; 03C1; Additional folding
+   1D6B9; 03B8; Additional folding
+   1D6BA; 03C3; Additional folding
+   1D6BB; 03C4; Additional folding
+   1D6BC; 03C5; Additional folding
+   1D6BD; 03C6; Additional folding
+   1D6BE; 03C7; Additional folding
+   1D6BF; 03C8; Additional folding
+   1D6C0; 03C9; Additional folding
+   1D6D3; 03C3; Additional folding
+   1D6E2; 03B1; Additional folding
+   1D6E3; 03B2; Additional folding
+   1D6E4; 03B3; Additional folding
+   1D6E5; 03B4; Additional folding
+   1D6E6; 03B5; Additional folding
+   1D6E7; 03B6; Additional folding
+   1D6E8; 03B7; Additional folding
+   1D6E9; 03B8; Additional folding
+   1D6EA; 03B9; Additional folding
+   1D6EB; 03BA; Additional folding
+   1D6EC; 03BB; Additional folding
+   1D6ED; 03BC; Additional folding
+   1D6EE; 03BD; Additional folding
+   1D6EF; 03BE; Additional folding
+   1D6F0; 03BF; Additional folding
+   1D6F1; 03C0; Additional folding
+   1D6F2; 03C1; Additional folding
+   1D6F3; 03B8; Additional folding
+   1D6F4; 03C3; Additional folding
+   1D6F5; 03C4; Additional folding
+   1D6F6; 03C5; Additional folding
+   1D6F7; 03C6; Additional folding
+   1D6F8; 03C7; Additional folding
+   1D6F9; 03C8; Additional folding
+   1D6FA; 03C9; Additional folding
+   1D70D; 03C3; Additional folding
+   1D71C; 03B1; Additional folding
+   1D71D; 03B2; Additional folding
+   1D71E; 03B3; Additional folding
+   1D71F; 03B4; Additional folding
+   1D720; 03B5; Additional folding
+   1D721; 03B6; Additional folding
+   1D722; 03B7; Additional folding
+   1D723; 03B8; Additional folding
+   1D724; 03B9; Additional folding
+   1D725; 03BA; Additional folding
+   1D726; 03BB; Additional folding
+   1D727; 03BC; Additional folding
+   1D728; 03BD; Additional folding
+   1D729; 03BE; Additional folding
+   1D72A; 03BF; Additional folding
+   1D72B; 03C0; Additional folding
+   1D72C; 03C1; Additional folding
+   1D72D; 03B8; Additional folding
+   1D72E; 03C3; Additional folding
+   1D72F; 03C4; Additional folding
+   1D730; 03C5; Additional folding
+   1D731; 03C6; Additional folding
+   1D732; 03C7; Additional folding
+   1D733; 03C8; Additional folding
+   1D734; 03C9; Additional folding
+   1D747; 03C3; Additional folding
+   1D756; 03B1; Additional folding
+   1D757; 03B2; Additional folding
+   1D758; 03B3; Additional folding
+   1D759; 03B4; Additional folding
+   1D75A; 03B5; Additional folding
+   1D75B; 03B6; Additional folding
+   1D75C; 03B7; Additional folding
+   1D75D; 03B8; Additional folding
+   1D75E; 03B9; Additional folding
+   1D75F; 03BA; Additional folding
+   1D760; 03BB; Additional folding
+   1D761; 03BC; Additional folding
+   1D762; 03BD; Additional folding
+   1D763; 03BE; Additional folding
+   1D764; 03BF; Additional folding
+   1D765; 03C0; Additional folding
+   1D766; 03C1; Additional folding
+   1D767; 03B8; Additional folding
+   1D768; 03C3; Additional folding
+   1D769; 03C4; Additional folding
+   1D76A; 03C5; Additional folding
+   1D76B; 03C6; Additional folding
+   1D76C; 03C7; Additional folding
+   1D76D; 03C8; Additional folding
+   1D76E; 03C9; Additional folding
+   1D781; 03C3; Additional folding
+   1D790; 03B1; Additional folding
+   1D791; 03B2; Additional folding
+   1D792; 03B3; Additional folding
+   1D793; 03B4; Additional folding
+   1D794; 03B5; Additional folding
+   1D795; 03B6; Additional folding
+   1D796; 03B7; Additional folding
+   1D797; 03B8; Additional folding
+   1D798; 03B9; Additional folding
+   1D799; 03BA; Additional folding
+   1D79A; 03BB; Additional folding
+   1D79B; 03BC; Additional folding
+   1D79C; 03BD; Additional folding
+   1D79D; 03BE; Additional folding
+   1D79E; 03BF; Additional folding
+   1D79F; 03C0; Additional folding
+   1D7A0; 03C1; Additional folding
+   1D7A1; 03B8; Additional folding
+   1D7A2; 03C3; Additional folding
+   1D7A3; 03C4; Additional folding
+   1D7A4; 03C5; Additional folding
+   1D7A5; 03C6; Additional folding
+   1D7A6; 03C7; Additional folding
+   1D7A7; 03C8; Additional folding
+   1D7A8; 03C9; Additional folding
+   1D7BB; 03C3; Additional folding
+   ----- End Table B.2 -----
+
+   ----- Start Table B.3 -----
+   0041; 0061; Case map
+   0042; 0062; Case map
+   0043; 0063; Case map
+   0044; 0064; Case map
+   0045; 0065; Case map
+   0046; 0066; Case map
+   0047; 0067; Case map
+   0048; 0068; Case map
+   0049; 0069; Case map
+   004A; 006A; Case map
+   004B; 006B; Case map
+   004C; 006C; Case map
+   004D; 006D; Case map
+   004E; 006E; Case map
+   004F; 006F; Case map
+   0050; 0070; Case map
+   0051; 0071; Case map
+   0052; 0072; Case map
+   0053; 0073; Case map
+   0054; 0074; Case map
+   0055; 0075; Case map
+   0056; 0076; Case map
+   0057; 0077; Case map
+   0058; 0078; Case map
+   0059; 0079; Case map
+   005A; 007A; Case map
+   00B5; 03BC; Case map
+   00C0; 00E0; Case map
+   00C1; 00E1; Case map
+   00C2; 00E2; Case map
+   00C3; 00E3; Case map
+   00C4; 00E4; Case map
+   00C5; 00E5; Case map
+   00C6; 00E6; Case map
+   00C7; 00E7; Case map
+   00C8; 00E8; Case map
+   00C9; 00E9; Case map
+   00CA; 00EA; Case map
+   00CB; 00EB; Case map
+   00CC; 00EC; Case map
+   00CD; 00ED; Case map
+   00CE; 00EE; Case map
+   00CF; 00EF; Case map
+   00D0; 00F0; Case map
+   00D1; 00F1; Case map
+   00D2; 00F2; Case map
+   00D3; 00F3; Case map
+   00D4; 00F4; Case map
+   00D5; 00F5; Case map
+   00D6; 00F6; Case map
+   00D8; 00F8; Case map
+   00D9; 00F9; Case map
+   00DA; 00FA; Case map
+   00DB; 00FB; Case map
+   00DC; 00FC; Case map
+   00DD; 00FD; Case map
+   00DE; 00FE; Case map
+   00DF; 0073 0073; Case map
+   0100; 0101; Case map
+   0102; 0103; Case map
+   0104; 0105; Case map
+   0106; 0107; Case map
+   0108; 0109; Case map
+   010A; 010B; Case map
+   010C; 010D; Case map
+   010E; 010F; Case map
+   0110; 0111; Case map
+   0112; 0113; Case map
+   0114; 0115; Case map
+   0116; 0117; Case map
+   0118; 0119; Case map
+   011A; 011B; Case map
+   011C; 011D; Case map
+   011E; 011F; Case map
+   0120; 0121; Case map
+   0122; 0123; Case map
+   0124; 0125; Case map
+   0126; 0127; Case map
+   0128; 0129; Case map
+   012A; 012B; Case map
+   012C; 012D; Case map
+   012E; 012F; Case map
+   0130; 0069 0307; Case map
+   0132; 0133; Case map
+   0134; 0135; Case map
+   0136; 0137; Case map
+   0139; 013A; Case map
+   013B; 013C; Case map
+   013D; 013E; Case map
+   013F; 0140; Case map
+   0141; 0142; Case map
+   0143; 0144; Case map
+   0145; 0146; Case map
+   0147; 0148; Case map
+   0149; 02BC 006E; Case map
+   014A; 014B; Case map
+   014C; 014D; Case map
+   014E; 014F; Case map
+   0150; 0151; Case map
+   0152; 0153; Case map
+   0154; 0155; Case map
+   0156; 0157; Case map
+   0158; 0159; Case map
+   015A; 015B; Case map
+   015C; 015D; Case map
+   015E; 015F; Case map
+   0160; 0161; Case map
+   0162; 0163; Case map
+   0164; 0165; Case map
+   0166; 0167; Case map
+   0168; 0169; Case map
+   016A; 016B; Case map
+   016C; 016D; Case map
+   016E; 016F; Case map
+   0170; 0171; Case map
+   0172; 0173; Case map
+   0174; 0175; Case map
+   0176; 0177; Case map
+   0178; 00FF; Case map
+   0179; 017A; Case map
+   017B; 017C; Case map
+   017D; 017E; Case map
+   017F; 0073; Case map
+   0181; 0253; Case map
+   0182; 0183; Case map
+   0184; 0185; Case map
+   0186; 0254; Case map
+   0187; 0188; Case map
+   0189; 0256; Case map
+   018A; 0257; Case map
+   018B; 018C; Case map
+   018E; 01DD; Case map
+   018F; 0259; Case map
+   0190; 025B; Case map
+   0191; 0192; Case map
+   0193; 0260; Case map
+   0194; 0263; Case map
+   0196; 0269; Case map
+   0197; 0268; Case map
+   0198; 0199; Case map
+   019C; 026F; Case map
+   019D; 0272; Case map
+   019F; 0275; Case map
+   01A0; 01A1; Case map
+   01A2; 01A3; Case map
+   01A4; 01A5; Case map
+   01A6; 0280; Case map
+   01A7; 01A8; Case map
+   01A9; 0283; Case map
+   01AC; 01AD; Case map
+   01AE; 0288; Case map
+   01AF; 01B0; Case map
+   01B1; 028A; Case map
+   01B2; 028B; Case map
+   01B3; 01B4; Case map
+   01B5; 01B6; Case map
+   01B7; 0292; Case map
+   01B8; 01B9; Case map
+   01BC; 01BD; Case map
+   01C4; 01C6; Case map
+   01C5; 01C6; Case map
+   01C7; 01C9; Case map
+   01C8; 01C9; Case map
+   01CA; 01CC; Case map
+   01CB; 01CC; Case map
+   01CD; 01CE; Case map
+   01CF; 01D0; Case map
+   01D1; 01D2; Case map
+   01D3; 01D4; Case map
+   01D5; 01D6; Case map
+   01D7; 01D8; Case map
+   01D9; 01DA; Case map
+   01DB; 01DC; Case map
+   01DE; 01DF; Case map
+   01E0; 01E1; Case map
+   01E2; 01E3; Case map
+   01E4; 01E5; Case map
+   01E6; 01E7; Case map
+   01E8; 01E9; Case map
+   01EA; 01EB; Case map
+   01EC; 01ED; Case map
+   01EE; 01EF; Case map
+   01F0; 006A 030C; Case map
+   01F1; 01F3; Case map
+   01F2; 01F3; Case map
+   01F4; 01F5; Case map
+   01F6; 0195; Case map
+   01F7; 01BF; Case map
+   01F8; 01F9; Case map
+   01FA; 01FB; Case map
+   01FC; 01FD; Case map
+   01FE; 01FF; Case map
+   0200; 0201; Case map
+   0202; 0203; Case map
+   0204; 0205; Case map
+   0206; 0207; Case map
+   0208; 0209; Case map
+   020A; 020B; Case map
+   020C; 020D; Case map
+   020E; 020F; Case map
+   0210; 0211; Case map
+   0212; 0213; Case map
+   0214; 0215; Case map
+   0216; 0217; Case map
+   0218; 0219; Case map
+   021A; 021B; Case map
+   021C; 021D; Case map
+   021E; 021F; Case map
+   0220; 019E; Case map
+   0222; 0223; Case map
+   0224; 0225; Case map
+   0226; 0227; Case map
+   0228; 0229; Case map
+   022A; 022B; Case map
+   022C; 022D; Case map
+   022E; 022F; Case map
+   0230; 0231; Case map
+   0232; 0233; Case map
+   0345; 03B9; Case map
+   0386; 03AC; Case map
+   0388; 03AD; Case map
+   0389; 03AE; Case map
+   038A; 03AF; Case map
+   038C; 03CC; Case map
+   038E; 03CD; Case map
+   038F; 03CE; Case map
+   0390; 03B9 0308 0301; Case map
+   0391; 03B1; Case map
+   0392; 03B2; Case map
+   0393; 03B3; Case map
+   0394; 03B4; Case map
+   0395; 03B5; Case map
+   0396; 03B6; Case map
+   0397; 03B7; Case map
+   0398; 03B8; Case map
+   0399; 03B9; Case map
+   039A; 03BA; Case map
+   039B; 03BB; Case map
+   039C; 03BC; Case map
+   039D; 03BD; Case map
+   039E; 03BE; Case map
+   039F; 03BF; Case map
+   03A0; 03C0; Case map
+   03A1; 03C1; Case map
+   03A3; 03C3; Case map
+   03A4; 03C4; Case map
+   03A5; 03C5; Case map
+   03A6; 03C6; Case map
+   03A7; 03C7; Case map
+   03A8; 03C8; Case map
+   03A9; 03C9; Case map
+   03AA; 03CA; Case map
+   03AB; 03CB; Case map
+   03B0; 03C5 0308 0301; Case map
+   03C2; 03C3; Case map
+   03D0; 03B2; Case map
+   03D1; 03B8; Case map
+   03D5; 03C6; Case map
+   03D6; 03C0; Case map
+   03D8; 03D9; Case map
+   03DA; 03DB; Case map
+   03DC; 03DD; Case map
+   03DE; 03DF; Case map
+   03E0; 03E1; Case map
+   03E2; 03E3; Case map
+   03E4; 03E5; Case map
+   03E6; 03E7; Case map
+   03E8; 03E9; Case map
+   03EA; 03EB; Case map
+   03EC; 03ED; Case map
+   03EE; 03EF; Case map
+   03F0; 03BA; Case map
+   03F1; 03C1; Case map
+   03F2; 03C3; Case map
+   03F4; 03B8; Case map
+   03F5; 03B5; Case map
+   0400; 0450; Case map
+   0401; 0451; Case map
+   0402; 0452; Case map
+   0403; 0453; Case map
+   0404; 0454; Case map
+   0405; 0455; Case map
+   0406; 0456; Case map
+   0407; 0457; Case map
+   0408; 0458; Case map
+   0409; 0459; Case map
+   040A; 045A; Case map
+   040B; 045B; Case map
+   040C; 045C; Case map
+   040D; 045D; Case map
+   040E; 045E; Case map
+   040F; 045F; Case map
+   0410; 0430; Case map
+   0411; 0431; Case map
+   0412; 0432; Case map
+   0413; 0433; Case map
+   0414; 0434; Case map
+   0415; 0435; Case map
+   0416; 0436; Case map
+   0417; 0437; Case map
+   0418; 0438; Case map
+   0419; 0439; Case map
+   041A; 043A; Case map
+   041B; 043B; Case map
+   041C; 043C; Case map
+   041D; 043D; Case map
+   041E; 043E; Case map
+   041F; 043F; Case map
+   0420; 0440; Case map
+   0421; 0441; Case map
+   0422; 0442; Case map
+   0423; 0443; Case map
+   0424; 0444; Case map
+   0425; 0445; Case map
+   0426; 0446; Case map
+   0427; 0447; Case map
+   0428; 0448; Case map
+   0429; 0449; Case map
+   042A; 044A; Case map
+   042B; 044B; Case map
+   042C; 044C; Case map
+   042D; 044D; Case map
+   042E; 044E; Case map
+   042F; 044F; Case map
+   0460; 0461; Case map
+   0462; 0463; Case map
+   0464; 0465; Case map
+   0466; 0467; Case map
+   0468; 0469; Case map
+   046A; 046B; Case map
+   046C; 046D; Case map
+   046E; 046F; Case map
+   0470; 0471; Case map
+   0472; 0473; Case map
+   0474; 0475; Case map
+   0476; 0477; Case map
+   0478; 0479; Case map
+   047A; 047B; Case map
+   047C; 047D; Case map
+   047E; 047F; Case map
+   0480; 0481; Case map
+   048A; 048B; Case map
+   048C; 048D; Case map
+   048E; 048F; Case map
+   0490; 0491; Case map
+   0492; 0493; Case map
+   0494; 0495; Case map
+   0496; 0497; Case map
+   0498; 0499; Case map
+   049A; 049B; Case map
+   049C; 049D; Case map
+   049E; 049F; Case map
+   04A0; 04A1; Case map
+   04A2; 04A3; Case map
+   04A4; 04A5; Case map
+   04A6; 04A7; Case map
+   04A8; 04A9; Case map
+   04AA; 04AB; Case map
+   04AC; 04AD; Case map
+   04AE; 04AF; Case map
+   04B0; 04B1; Case map
+   04B2; 04B3; Case map
+   04B4; 04B5; Case map
+   04B6; 04B7; Case map
+   04B8; 04B9; Case map
+   04BA; 04BB; Case map
+   04BC; 04BD; Case map
+   04BE; 04BF; Case map
+   04C1; 04C2; Case map
+   04C3; 04C4; Case map
+   04C5; 04C6; Case map
+   04C7; 04C8; Case map
+   04C9; 04CA; Case map
+   04CB; 04CC; Case map
+   04CD; 04CE; Case map
+   04D0; 04D1; Case map
+   04D2; 04D3; Case map
+   04D4; 04D5; Case map
+   04D6; 04D7; Case map
+   04D8; 04D9; Case map
+   04DA; 04DB; Case map
+   04DC; 04DD; Case map
+   04DE; 04DF; Case map
+   04E0; 04E1; Case map
+   04E2; 04E3; Case map
+   04E4; 04E5; Case map
+   04E6; 04E7; Case map
+   04E8; 04E9; Case map
+   04EA; 04EB; Case map
+   04EC; 04ED; Case map
+   04EE; 04EF; Case map
+   04F0; 04F1; Case map
+   04F2; 04F3; Case map
+   04F4; 04F5; Case map
+   04F8; 04F9; Case map
+   0500; 0501; Case map
+   0502; 0503; Case map
+   0504; 0505; Case map
+   0506; 0507; Case map
+   0508; 0509; Case map
+   050A; 050B; Case map
+   050C; 050D; Case map
+   050E; 050F; Case map
+   0531; 0561; Case map
+   0532; 0562; Case map
+   0533; 0563; Case map
+   0534; 0564; Case map
+   0535; 0565; Case map
+   0536; 0566; Case map
+   0537; 0567; Case map
+   0538; 0568; Case map
+   0539; 0569; Case map
+   053A; 056A; Case map
+   053B; 056B; Case map
+   053C; 056C; Case map
+   053D; 056D; Case map
+   053E; 056E; Case map
+   053F; 056F; Case map
+   0540; 0570; Case map
+   0541; 0571; Case map
+   0542; 0572; Case map
+   0543; 0573; Case map
+   0544; 0574; Case map
+   0545; 0575; Case map
+   0546; 0576; Case map
+   0547; 0577; Case map
+   0548; 0578; Case map
+   0549; 0579; Case map
+   054A; 057A; Case map
+   054B; 057B; Case map
+   054C; 057C; Case map
+   054D; 057D; Case map
+   054E; 057E; Case map
+   054F; 057F; Case map
+   0550; 0580; Case map
+   0551; 0581; Case map
+   0552; 0582; Case map
+   0553; 0583; Case map
+   0554; 0584; Case map
+   0555; 0585; Case map
+   0556; 0586; Case map
+   0587; 0565 0582; Case map
+   1E00; 1E01; Case map
+   1E02; 1E03; Case map
+   1E04; 1E05; Case map
+   1E06; 1E07; Case map
+   1E08; 1E09; Case map
+   1E0A; 1E0B; Case map
+   1E0C; 1E0D; Case map
+   1E0E; 1E0F; Case map
+   1E10; 1E11; Case map
+   1E12; 1E13; Case map
+   1E14; 1E15; Case map
+   1E16; 1E17; Case map
+   1E18; 1E19; Case map
+   1E1A; 1E1B; Case map
+   1E1C; 1E1D; Case map
+   1E1E; 1E1F; Case map
+   1E20; 1E21; Case map
+   1E22; 1E23; Case map
+   1E24; 1E25; Case map
+   1E26; 1E27; Case map
+   1E28; 1E29; Case map
+   1E2A; 1E2B; Case map
+   1E2C; 1E2D; Case map
+   1E2E; 1E2F; Case map
+   1E30; 1E31; Case map
+   1E32; 1E33; Case map
+   1E34; 1E35; Case map
+   1E36; 1E37; Case map
+   1E38; 1E39; Case map
+   1E3A; 1E3B; Case map
+   1E3C; 1E3D; Case map
+   1E3E; 1E3F; Case map
+   1E40; 1E41; Case map
+   1E42; 1E43; Case map
+   1E44; 1E45; Case map
+   1E46; 1E47; Case map
+   1E48; 1E49; Case map
+   1E4A; 1E4B; Case map
+   1E4C; 1E4D; Case map
+   1E4E; 1E4F; Case map
+   1E50; 1E51; Case map
+   1E52; 1E53; Case map
+   1E54; 1E55; Case map
+   1E56; 1E57; Case map
+   1E58; 1E59; Case map
+   1E5A; 1E5B; Case map
+   1E5C; 1E5D; Case map
+   1E5E; 1E5F; Case map
+   1E60; 1E61; Case map
+   1E62; 1E63; Case map
+   1E64; 1E65; Case map
+   1E66; 1E67; Case map
+   1E68; 1E69; Case map
+   1E6A; 1E6B; Case map
+   1E6C; 1E6D; Case map
+   1E6E; 1E6F; Case map
+   1E70; 1E71; Case map
+   1E72; 1E73; Case map
+   1E74; 1E75; Case map
+   1E76; 1E77; Case map
+   1E78; 1E79; Case map
+   1E7A; 1E7B; Case map
+   1E7C; 1E7D; Case map
+   1E7E; 1E7F; Case map
+   1E80; 1E81; Case map
+   1E82; 1E83; Case map
+   1E84; 1E85; Case map
+   1E86; 1E87; Case map
+   1E88; 1E89; Case map
+   1E8A; 1E8B; Case map
+   1E8C; 1E8D; Case map
+   1E8E; 1E8F; Case map
+   1E90; 1E91; Case map
+   1E92; 1E93; Case map
+   1E94; 1E95; Case map
+   1E96; 0068 0331; Case map
+   1E97; 0074 0308; Case map
+   1E98; 0077 030A; Case map
+   1E99; 0079 030A; Case map
+   1E9A; 0061 02BE; Case map
+   1E9B; 1E61; Case map
+   1EA0; 1EA1; Case map
+   1EA2; 1EA3; Case map
+   1EA4; 1EA5; Case map
+   1EA6; 1EA7; Case map
+   1EA8; 1EA9; Case map
+   1EAA; 1EAB; Case map
+   1EAC; 1EAD; Case map
+   1EAE; 1EAF; Case map
+   1EB0; 1EB1; Case map
+   1EB2; 1EB3; Case map
+   1EB4; 1EB5; Case map
+   1EB6; 1EB7; Case map
+   1EB8; 1EB9; Case map
+   1EBA; 1EBB; Case map
+   1EBC; 1EBD; Case map
+   1EBE; 1EBF; Case map
+   1EC0; 1EC1; Case map
+   1EC2; 1EC3; Case map
+   1EC4; 1EC5; Case map
+   1EC6; 1EC7; Case map
+   1EC8; 1EC9; Case map
+   1ECA; 1ECB; Case map
+   1ECC; 1ECD; Case map
+   1ECE; 1ECF; Case map
+   1ED0; 1ED1; Case map
+   1ED2; 1ED3; Case map
+   1ED4; 1ED5; Case map
+   1ED6; 1ED7; Case map
+   1ED8; 1ED9; Case map
+   1EDA; 1EDB; Case map
+   1EDC; 1EDD; Case map
+   1EDE; 1EDF; Case map
+   1EE0; 1EE1; Case map
+   1EE2; 1EE3; Case map
+   1EE4; 1EE5; Case map
+   1EE6; 1EE7; Case map
+   1EE8; 1EE9; Case map
+   1EEA; 1EEB; Case map
+   1EEC; 1EED; Case map
+   1EEE; 1EEF; Case map
+   1EF0; 1EF1; Case map
+   1EF2; 1EF3; Case map
+   1EF4; 1EF5; Case map
+   1EF6; 1EF7; Case map
+   1EF8; 1EF9; Case map
+   1F08; 1F00; Case map
+   1F09; 1F01; Case map
+   1F0A; 1F02; Case map
+   1F0B; 1F03; Case map
+   1F0C; 1F04; Case map
+   1F0D; 1F05; Case map
+   1F0E; 1F06; Case map
+   1F0F; 1F07; Case map
+   1F18; 1F10; Case map
+   1F19; 1F11; Case map
+   1F1A; 1F12; Case map
+   1F1B; 1F13; Case map
+   1F1C; 1F14; Case map
+   1F1D; 1F15; Case map
+   1F28; 1F20; Case map
+   1F29; 1F21; Case map
+   1F2A; 1F22; Case map
+   1F2B; 1F23; Case map
+   1F2C; 1F24; Case map
+   1F2D; 1F25; Case map
+   1F2E; 1F26; Case map
+   1F2F; 1F27; Case map
+   1F38; 1F30; Case map
+   1F39; 1F31; Case map
+   1F3A; 1F32; Case map
+   1F3B; 1F33; Case map
+   1F3C; 1F34; Case map
+   1F3D; 1F35; Case map
+   1F3E; 1F36; Case map
+   1F3F; 1F37; Case map
+   1F48; 1F40; Case map
+   1F49; 1F41; Case map
+   1F4A; 1F42; Case map
+   1F4B; 1F43; Case map
+   1F4C; 1F44; Case map
+   1F4D; 1F45; Case map
+   1F50; 03C5 0313; Case map
+   1F52; 03C5 0313 0300; Case map
+   1F54; 03C5 0313 0301; Case map
+   1F56; 03C5 0313 0342; Case map
+   1F59; 1F51; Case map
+   1F5B; 1F53; Case map
+   1F5D; 1F55; Case map
+   1F5F; 1F57; Case map
+   1F68; 1F60; Case map
+   1F69; 1F61; Case map
+   1F6A; 1F62; Case map
+   1F6B; 1F63; Case map
+   1F6C; 1F64; Case map
+   1F6D; 1F65; Case map
+   1F6E; 1F66; Case map
+   1F6F; 1F67; Case map
+   1F80; 1F00 03B9; Case map
+   1F81; 1F01 03B9; Case map
+   1F82; 1F02 03B9; Case map
+   1F83; 1F03 03B9; Case map
+   1F84; 1F04 03B9; Case map
+   1F85; 1F05 03B9; Case map
+   1F86; 1F06 03B9; Case map
+   1F87; 1F07 03B9; Case map
+   1F88; 1F00 03B9; Case map
+   1F89; 1F01 03B9; Case map
+   1F8A; 1F02 03B9; Case map
+   1F8B; 1F03 03B9; Case map
+   1F8C; 1F04 03B9; Case map
+   1F8D; 1F05 03B9; Case map
+   1F8E; 1F06 03B9; Case map
+   1F8F; 1F07 03B9; Case map
+   1F90; 1F20 03B9; Case map
+   1F91; 1F21 03B9; Case map
+   1F92; 1F22 03B9; Case map
+   1F93; 1F23 03B9; Case map
+   1F94; 1F24 03B9; Case map
+   1F95; 1F25 03B9; Case map
+   1F96; 1F26 03B9; Case map
+   1F97; 1F27 03B9; Case map
+   1F98; 1F20 03B9; Case map
+   1F99; 1F21 03B9; Case map
+   1F9A; 1F22 03B9; Case map
+   1F9B; 1F23 03B9; Case map
+   1F9C; 1F24 03B9; Case map
+   1F9D; 1F25 03B9; Case map
+   1F9E; 1F26 03B9; Case map
+   1F9F; 1F27 03B9; Case map
+   1FA0; 1F60 03B9; Case map
+   1FA1; 1F61 03B9; Case map
+   1FA2; 1F62 03B9; Case map
+   1FA3; 1F63 03B9; Case map
+   1FA4; 1F64 03B9; Case map
+   1FA5; 1F65 03B9; Case map
+   1FA6; 1F66 03B9; Case map
+   1FA7; 1F67 03B9; Case map
+   1FA8; 1F60 03B9; Case map
+   1FA9; 1F61 03B9; Case map
+   1FAA; 1F62 03B9; Case map
+   1FAB; 1F63 03B9; Case map
+   1FAC; 1F64 03B9; Case map
+   1FAD; 1F65 03B9; Case map
+   1FAE; 1F66 03B9; Case map
+   1FAF; 1F67 03B9; Case map
+   1FB2; 1F70 03B9; Case map
+   1FB3; 03B1 03B9; Case map
+   1FB4; 03AC 03B9; Case map
+   1FB6; 03B1 0342; Case map
+   1FB7; 03B1 0342 03B9; Case map
+   1FB8; 1FB0; Case map
+   1FB9; 1FB1; Case map
+   1FBA; 1F70; Case map
+   1FBB; 1F71; Case map
+   1FBC; 03B1 03B9; Case map
+   1FBE; 03B9; Case map
+   1FC2; 1F74 03B9; Case map
+   1FC3; 03B7 03B9; Case map
+   1FC4; 03AE 03B9; Case map
+   1FC6; 03B7 0342; Case map
+   1FC7; 03B7 0342 03B9; Case map
+   1FC8; 1F72; Case map
+   1FC9; 1F73; Case map
+   1FCA; 1F74; Case map
+   1FCB; 1F75; Case map
+   1FCC; 03B7 03B9; Case map
+   1FD2; 03B9 0308 0300; Case map
+   1FD3; 03B9 0308 0301; Case map
+   1FD6; 03B9 0342; Case map
+   1FD7; 03B9 0308 0342; Case map
+   1FD8; 1FD0; Case map
+   1FD9; 1FD1; Case map
+   1FDA; 1F76; Case map
+   1FDB; 1F77; Case map
+   1FE2; 03C5 0308 0300; Case map
+   1FE3; 03C5 0308 0301; Case map
+   1FE4; 03C1 0313; Case map
+   1FE6; 03C5 0342; Case map
+   1FE7; 03C5 0308 0342; Case map
+   1FE8; 1FE0; Case map
+   1FE9; 1FE1; Case map
+   1FEA; 1F7A; Case map
+   1FEB; 1F7B; Case map
+   1FEC; 1FE5; Case map
+   1FF2; 1F7C 03B9; Case map
+   1FF3; 03C9 03B9; Case map
+   1FF4; 03CE 03B9; Case map
+   1FF6; 03C9 0342; Case map
+   1FF7; 03C9 0342 03B9; Case map
+   1FF8; 1F78; Case map
+   1FF9; 1F79; Case map
+   1FFA; 1F7C; Case map
+   1FFB; 1F7D; Case map
+   1FFC; 03C9 03B9; Case map
+   2126; 03C9; Case map
+   212A; 006B; Case map
+   212B; 00E5; Case map
+   2160; 2170; Case map
+   2161; 2171; Case map
+   2162; 2172; Case map
+   2163; 2173; Case map
+   2164; 2174; Case map
+   2165; 2175; Case map
+   2166; 2176; Case map
+   2167; 2177; Case map
+   2168; 2178; Case map
+   2169; 2179; Case map
+   216A; 217A; Case map
+   216B; 217B; Case map
+   216C; 217C; Case map
+   216D; 217D; Case map
+   216E; 217E; Case map
+   216F; 217F; Case map
+   24B6; 24D0; Case map
+   24B7; 24D1; Case map
+   24B8; 24D2; Case map
+   24B9; 24D3; Case map
+   24BA; 24D4; Case map
+   24BB; 24D5; Case map
+   24BC; 24D6; Case map
+   24BD; 24D7; Case map
+   24BE; 24D8; Case map
+   24BF; 24D9; Case map
+   24C0; 24DA; Case map
+   24C1; 24DB; Case map
+   24C2; 24DC; Case map
+   24C3; 24DD; Case map
+   24C4; 24DE; Case map
+   24C5; 24DF; Case map
+   24C6; 24E0; Case map
+   24C7; 24E1; Case map
+   24C8; 24E2; Case map
+   24C9; 24E3; Case map
+   24CA; 24E4; Case map
+   24CB; 24E5; Case map
+   24CC; 24E6; Case map
+   24CD; 24E7; Case map
+   24CE; 24E8; Case map
+   24CF; 24E9; Case map
+   FB00; 0066 0066; Case map
+   FB01; 0066 0069; Case map
+   FB02; 0066 006C; Case map
+   FB03; 0066 0066 0069; Case map
+   FB04; 0066 0066 006C; Case map
+   FB05; 0073 0074; Case map
+   FB06; 0073 0074; Case map
+   FB13; 0574 0576; Case map
+   FB14; 0574 0565; Case map
+   FB15; 0574 056B; Case map
+   FB16; 057E 0576; Case map
+   FB17; 0574 056D; Case map
+   FF21; FF41; Case map
+   FF22; FF42; Case map
+   FF23; FF43; Case map
+   FF24; FF44; Case map
+   FF25; FF45; Case map
+   FF26; FF46; Case map
+   FF27; FF47; Case map
+   FF28; FF48; Case map
+   FF29; FF49; Case map
+   FF2A; FF4A; Case map
+   FF2B; FF4B; Case map
+   FF2C; FF4C; Case map
+   FF2D; FF4D; Case map
+   FF2E; FF4E; Case map
+   FF2F; FF4F; Case map
+   FF30; FF50; Case map
+   FF31; FF51; Case map
+   FF32; FF52; Case map
+   FF33; FF53; Case map
+   FF34; FF54; Case map
+   FF35; FF55; Case map
+   FF36; FF56; Case map
+   FF37; FF57; Case map
+   FF38; FF58; Case map
+   FF39; FF59; Case map
+   FF3A; FF5A; Case map
+   10400; 10428; Case map
+   10401; 10429; Case map
+   10402; 1042A; Case map
+   10403; 1042B; Case map
+   10404; 1042C; Case map
+   10405; 1042D; Case map
+   10406; 1042E; Case map
+   10407; 1042F; Case map
+   10408; 10430; Case map
+   10409; 10431; Case map
+   1040A; 10432; Case map
+   1040B; 10433; Case map
+   1040C; 10434; Case map
+   1040D; 10435; Case map
+   1040E; 10436; Case map
+   1040F; 10437; Case map
+   10410; 10438; Case map
+   10411; 10439; Case map
+   10412; 1043A; Case map
+   10413; 1043B; Case map
+   10414; 1043C; Case map
+   10415; 1043D; Case map
+   10416; 1043E; Case map
+   10417; 1043F; Case map
+   10418; 10440; Case map
+   10419; 10441; Case map
+   1041A; 10442; Case map
+   1041B; 10443; Case map
+   1041C; 10444; Case map
+   1041D; 10445; Case map
+   1041E; 10446; Case map
+   1041F; 10447; Case map
+   10420; 10448; Case map
+   10421; 10449; Case map
+   10422; 1044A; Case map
+   10423; 1044B; Case map
+   10424; 1044C; Case map
+   10425; 1044D; Case map
+   ----- End Table B.3 -----
+
+   ----- Start Table C.1.1 -----
+   0020; SPACE
+   ----- End Table C.1.1 -----
+
+   ----- Start Table C.1.2 -----
+   00A0; NO-BREAK SPACE
+   1680; OGHAM SPACE MARK
+   2000; EN QUAD
+   2001; EM QUAD
+   2002; EN SPACE
+   2003; EM SPACE
+   2004; THREE-PER-EM SPACE
+   2005; FOUR-PER-EM SPACE
+   2006; SIX-PER-EM SPACE
+   2007; FIGURE SPACE
+   2008; PUNCTUATION SPACE
+   2009; THIN SPACE
+   200A; HAIR SPACE
+   200B; ZERO WIDTH SPACE
+   202F; NARROW NO-BREAK SPACE
+   205F; MEDIUM MATHEMATICAL SPACE
+   3000; IDEOGRAPHIC SPACE
+   ----- End Table C.1.2 -----
+
+   ----- Start Table C.2.1 -----
+   0000-001F; [CONTROL CHARACTERS]
+   007F; DELETE
+   ----- End Table C.2.1 -----
+
+   ----- Start Table C.2.2 -----
+   0080-009F; [CONTROL CHARACTERS]
+   06DD; ARABIC END OF AYAH
+   070F; SYRIAC ABBREVIATION MARK
+   180E; MONGOLIAN VOWEL SEPARATOR
+   200C; ZERO WIDTH NON-JOINER
+   200D; ZERO WIDTH JOINER
+   2028; LINE SEPARATOR
+   2029; PARAGRAPH SEPARATOR
+   2060; WORD JOINER
+   2061; FUNCTION APPLICATION
+   2062; INVISIBLE TIMES
+   2063; INVISIBLE SEPARATOR
+   206A-206F; [CONTROL CHARACTERS]
+   FEFF; ZERO WIDTH NO-BREAK SPACE
+   FFF9-FFFC; [CONTROL CHARACTERS]
+   1D173-1D17A; [MUSICAL CONTROL CHARACTERS]
+   ----- End Table C.2.2 -----
+
+   ----- Start Table C.3 -----
+   E000-F8FF; [PRIVATE USE, PLANE 0]
+   F0000-FFFFD; [PRIVATE USE, PLANE 15]
+   100000-10FFFD; [PRIVATE USE, PLANE 16]
+   ----- End Table C.3 -----
+
+   ----- Start Table C.4 -----
+   FDD0-FDEF; [NONCHARACTER CODE POINTS]
+   FFFE-FFFF; [NONCHARACTER CODE POINTS]
+   1FFFE-1FFFF; [NONCHARACTER CODE POINTS]
+   2FFFE-2FFFF; [NONCHARACTER CODE POINTS]
+   3FFFE-3FFFF; [NONCHARACTER CODE POINTS]
+   4FFFE-4FFFF; [NONCHARACTER CODE POINTS]
+   5FFFE-5FFFF; [NONCHARACTER CODE POINTS]
+   6FFFE-6FFFF; [NONCHARACTER CODE POINTS]
+   7FFFE-7FFFF; [NONCHARACTER CODE POINTS]
+   8FFFE-8FFFF; [NONCHARACTER CODE POINTS]
+   9FFFE-9FFFF; [NONCHARACTER CODE POINTS]
+   AFFFE-AFFFF; [NONCHARACTER CODE POINTS]
+   BFFFE-BFFFF; [NONCHARACTER CODE POINTS]
+   CFFFE-CFFFF; [NONCHARACTER CODE POINTS]
+   DFFFE-DFFFF; [NONCHARACTER CODE POINTS]
+   EFFFE-EFFFF; [NONCHARACTER CODE POINTS]
+   FFFFE-FFFFF; [NONCHARACTER CODE POINTS]
+   10FFFE-10FFFF; [NONCHARACTER CODE POINTS]
+   ----- End Table C.4 -----
+
+   ----- Start Table C.5 -----
+   D800-DFFF; [SURROGATE CODES]
+   ----- End Table C.5 -----
+
+   ----- Start Table C.6 -----
+   FFF9; INTERLINEAR ANNOTATION ANCHOR
+   FFFA; INTERLINEAR ANNOTATION SEPARATOR
+   FFFB; INTERLINEAR ANNOTATION TERMINATOR
+   FFFC; OBJECT REPLACEMENT CHARACTER
+   FFFD; REPLACEMENT CHARACTER
+   ----- End Table C.6 -----
+
+   ----- Start Table C.7 -----
+   2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS]
+   ----- End Table C.7 -----
+
+   ----- Start Table C.8 -----
+   0340; COMBINING GRAVE TONE MARK
+   0341; COMBINING ACUTE TONE MARK
+   200E; LEFT-TO-RIGHT MARK
+   200F; RIGHT-TO-LEFT MARK
+   202A; LEFT-TO-RIGHT EMBEDDING
+   202B; RIGHT-TO-LEFT EMBEDDING
+   202C; POP DIRECTIONAL FORMATTING
+   202D; LEFT-TO-RIGHT OVERRIDE
+   202E; RIGHT-TO-LEFT OVERRIDE
+   206A; INHIBIT SYMMETRIC SWAPPING
+   206B; ACTIVATE SYMMETRIC SWAPPING
+   206C; INHIBIT ARABIC FORM SHAPING
+   206D; ACTIVATE ARABIC FORM SHAPING
+   206E; NATIONAL DIGIT SHAPES
+   206F; NOMINAL DIGIT SHAPES
+   ----- End Table C.8 -----
+
+   ----- Start Table C.9 -----
+   E0001; LANGUAGE TAG
+   E0020-E007F; [TAGGING CHARACTERS]
+   ----- End Table C.9 -----
+
+   ----- Start Table D.1 -----
+   05BE
+   05C0
+   05C3
+   05D0-05EA
+   05F0-05F4
+   061B
+   061F
+   0621-063A
+   0640-064A
+   066D-066F
+   0671-06D5
+   06DD
+   06E5-06E6
+   06FA-06FE
+   0700-070D
+   0710
+   0712-072C
+   0780-07A5
+   07B1
+   200F
+   FB1D
+   FB1F-FB28
+   FB2A-FB36
+   FB38-FB3C
+   FB3E
+   FB40-FB41
+   FB43-FB44
+   FB46-FBB1
+   FBD3-FD3D
+   FD50-FD8F
+   FD92-FDC7
+   FDF0-FDFC
+   FE70-FE74
+   FE76-FEFC
+   ----- End Table D.1 -----
+
+   ----- Start Table D.2 -----
+   0041-005A
+   0061-007A
+   00AA
+   00B5
+   00BA
+   00C0-00D6
+   00D8-00F6
+   00F8-0220
+   0222-0233
+   0250-02AD
+   02B0-02B8
+   02BB-02C1
+   02D0-02D1
+   02E0-02E4
+   02EE
+   037A
+   0386
+   0388-038A
+   038C
+   038E-03A1
+   03A3-03CE
+   03D0-03F5
+   0400-0482
+   048A-04CE
+   04D0-04F5
+   04F8-04F9
+   0500-050F
+   0531-0556
+   0559-055F
+   0561-0587
+   0589
+   0903
+   0905-0939
+   093D-0940
+   0949-094C
+   0950
+   0958-0961
+   0964-0970
+   0982-0983
+   0985-098C
+   098F-0990
+   0993-09A8
+   09AA-09B0
+   09B2
+   09B6-09B9
+   09BE-09C0
+   09C7-09C8
+   09CB-09CC
+   09D7
+   09DC-09DD
+   09DF-09E1
+   09E6-09F1
+   09F4-09FA
+   0A05-0A0A
+   0A0F-0A10
+   0A13-0A28
+   0A2A-0A30
+   0A32-0A33
+   0A35-0A36
+   0A38-0A39
+   0A3E-0A40
+   0A59-0A5C
+   0A5E
+   0A66-0A6F
+   0A72-0A74
+   0A83
+   0A85-0A8B
+   0A8D
+   0A8F-0A91
+   0A93-0AA8
+   0AAA-0AB0
+   0AB2-0AB3
+   0AB5-0AB9
+   0ABD-0AC0
+   0AC9
+   0ACB-0ACC
+   0AD0
+   0AE0
+   0AE6-0AEF
+   0B02-0B03
+   0B05-0B0C
+   0B0F-0B10
+   0B13-0B28
+   0B2A-0B30
+   0B32-0B33
+   0B36-0B39
+   0B3D-0B3E
+   0B40
+   0B47-0B48
+   0B4B-0B4C
+   0B57
+   0B5C-0B5D
+   0B5F-0B61
+   0B66-0B70
+   0B83
+   0B85-0B8A
+   0B8E-0B90
+   0B92-0B95
+   0B99-0B9A
+   0B9C
+   0B9E-0B9F
+   0BA3-0BA4
+   0BA8-0BAA
+   0BAE-0BB5
+   0BB7-0BB9
+   0BBE-0BBF
+   0BC1-0BC2
+   0BC6-0BC8
+   0BCA-0BCC
+   0BD7
+   0BE7-0BF2
+   0C01-0C03
+   0C05-0C0C
+   0C0E-0C10
+   0C12-0C28
+   0C2A-0C33
+   0C35-0C39
+   0C41-0C44
+   0C60-0C61
+   0C66-0C6F
+   0C82-0C83
+   0C85-0C8C
+   0C8E-0C90
+   0C92-0CA8
+   0CAA-0CB3
+   0CB5-0CB9
+   0CBE
+   0CC0-0CC4
+   0CC7-0CC8
+   0CCA-0CCB
+   0CD5-0CD6
+   0CDE
+   0CE0-0CE1
+   0CE6-0CEF
+   0D02-0D03
+   0D05-0D0C
+   0D0E-0D10
+   0D12-0D28
+   0D2A-0D39
+   0D3E-0D40
+   0D46-0D48
+   0D4A-0D4C
+   0D57
+   0D60-0D61
+   0D66-0D6F
+   0D82-0D83
+   0D85-0D96
+   0D9A-0DB1
+   0DB3-0DBB
+   0DBD
+   0DC0-0DC6
+   0DCF-0DD1
+   0DD8-0DDF
+   0DF2-0DF4
+   0E01-0E30
+   0E32-0E33
+   0E40-0E46
+   0E4F-0E5B
+   0E81-0E82
+   0E84
+   0E87-0E88
+   0E8A
+   0E8D
+   0E94-0E97
+   0E99-0E9F
+   0EA1-0EA3
+   0EA5
+   0EA7
+   0EAA-0EAB
+   0EAD-0EB0
+   0EB2-0EB3
+   0EBD
+   0EC0-0EC4
+   0EC6
+   0ED0-0ED9
+   0EDC-0EDD
+   0F00-0F17
+   0F1A-0F34
+   0F36
+   0F38
+   0F3E-0F47
+   0F49-0F6A
+   0F7F
+   0F85
+   0F88-0F8B
+   0FBE-0FC5
+   0FC7-0FCC
+   0FCF
+   1000-1021
+   1023-1027
+   1029-102A
+   102C
+   1031
+   1038
+   1040-1057
+   10A0-10C5
+   10D0-10F8
+   10FB
+   1100-1159
+   115F-11A2
+   11A8-11F9
+   1200-1206
+   1208-1246
+   1248
+   124A-124D
+   1250-1256
+   1258
+   125A-125D
+   1260-1286
+   1288
+   128A-128D
+   1290-12AE
+   12B0
+   12B2-12B5
+   12B8-12BE
+   12C0
+   12C2-12C5
+   12C8-12CE
+   12D0-12D6
+   12D8-12EE
+   12F0-130E
+   1310
+   1312-1315
+   1318-131E
+   1320-1346
+   1348-135A
+   1361-137C
+   13A0-13F4
+   1401-1676
+   1681-169A
+   16A0-16F0
+   1700-170C
+   170E-1711
+   1720-1731
+   1735-1736
+   1740-1751
+   1760-176C
+   176E-1770
+   1780-17B6
+   17BE-17C5
+   17C7-17C8
+   17D4-17DA
+   17DC
+   17E0-17E9
+   1810-1819
+   1820-1877
+   1880-18A8
+   1E00-1E9B
+   1EA0-1EF9
+   1F00-1F15
+   1F18-1F1D
+   1F20-1F45
+   1F48-1F4D
+   1F50-1F57
+   1F59
+   1F5B
+   1F5D
+   1F5F-1F7D
+   1F80-1FB4
+   1FB6-1FBC
+   1FBE
+   1FC2-1FC4
+   1FC6-1FCC
+   1FD0-1FD3
+   1FD6-1FDB
+   1FE0-1FEC
+   1FF2-1FF4
+   1FF6-1FFC
+   200E
+   2071
+   207F
+   2102
+   2107
+   210A-2113
+   2115
+   2119-211D
+   2124
+   2126
+   2128
+   212A-212D
+   212F-2131
+   2133-2139
+   213D-213F
+   2145-2149
+   2160-2183
+   2336-237A
+   2395
+   249C-24E9
+   3005-3007
+   3021-3029
+   3031-3035
+   3038-303C
+   3041-3096
+   309D-309F
+   30A1-30FA
+   30FC-30FF
+   3105-312C
+   3131-318E
+   3190-31B7
+   31F0-321C
+   3220-3243
+   3260-327B
+   327F-32B0
+   32C0-32CB
+   32D0-32FE
+   3300-3376
+   337B-33DD
+   33E0-33FE
+   3400-4DB5
+   4E00-9FA5
+   A000-A48C
+   AC00-D7A3
+   D800-FA2D
+   FA30-FA6A
+   FB00-FB06
+   FB13-FB17
+   FF21-FF3A
+   FF41-FF5A
+   FF66-FFBE
+   FFC2-FFC7
+   FFCA-FFCF
+   FFD2-FFD7
+   FFDA-FFDC
+   10300-1031E
+   10320-10323
+   10330-1034A
+   10400-10425
+   10428-1044D
+   1D000-1D0F5
+   1D100-1D126
+   1D12A-1D166
+   1D16A-1D172
+   1D183-1D184
+   1D18C-1D1A9
+   1D1AE-1D1DD
+   1D400-1D454
+   1D456-1D49C
+   1D49E-1D49F
+   1D4A2
+   1D4A5-1D4A6
+   1D4A9-1D4AC
+   1D4AE-1D4B9
+   1D4BB
+   1D4BD-1D4C0
+   1D4C2-1D4C3
+   1D4C5-1D505
+   1D507-1D50A
+   1D50D-1D514
+   1D516-1D51C
+   1D51E-1D539
+   1D53B-1D53E
+   1D540-1D544
+   1D546
+   1D54A-1D550
+   1D552-1D6A3
+   1D6A8-1D7C9
+   20000-2A6D6
+   2F800-2FA1D
+   F0000-FFFFD
+   100000-10FFFD
+   ----- End Table D.2 -----
diff --git a/doc/stamp-vti b/doc/stamp-vti
new file mode 100644 (file)
index 0000000..1001413
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 28 May 2009
+@set UPDATED-MONTH May 2009
+@set EDITION 1.15
+@set VERSION 1.15
diff --git a/doc/texi/idn-free.c.texi b/doc/texi/idn-free.c.texi
new file mode 100644 (file)
index 0000000..7da46c1
--- /dev/null
@@ -0,0 +1,15 @@
+@subheading idn_free
+@anchor{idn_free}
+@deftypefun {void} {idn_free} (void * @var{ptr})
+@var{ptr}: memory region to deallocate, or @code{NULL}.
+
+Deallocates memory region by calling @code{free()}.  If @code{ptr} is @code{NULL} no
+operation is performed.
+
+Normally applications de-allocate strings allocated by libidn by
+calling @code{free()} directly.  Under Windows, different parts of the
+same application may use different heap memory, and then it is
+important to deallocate memory allocated within the same module
+that allocated it.  This function makes that possible.
+@end deftypefun
+
diff --git a/doc/texi/idn_free.texi b/doc/texi/idn_free.texi
new file mode 100644 (file)
index 0000000..7da46c1
--- /dev/null
@@ -0,0 +1,15 @@
+@subheading idn_free
+@anchor{idn_free}
+@deftypefun {void} {idn_free} (void * @var{ptr})
+@var{ptr}: memory region to deallocate, or @code{NULL}.
+
+Deallocates memory region by calling @code{free()}.  If @code{ptr} is @code{NULL} no
+operation is performed.
+
+Normally applications de-allocate strings allocated by libidn by
+calling @code{free()} directly.  Under Windows, different parts of the
+same application may use different heap memory, and then it is
+important to deallocate memory allocated within the same module
+that allocated it.  This function makes that possible.
+@end deftypefun
+
diff --git a/doc/texi/idna.c.texi b/doc/texi/idna.c.texi
new file mode 100644 (file)
index 0000000..8b36c26
--- /dev/null
@@ -0,0 +1,222 @@
+@subheading idna_to_ascii_4i
+@anchor{idna_to_ascii_4i}
+@deftypefun {int} {idna_to_ascii_4i} (const uint32_t * @var{in}, size_t @var{inlen}, char * @var{out}, int @var{flags})
+@var{in}: input array with unicode code points.
+
+@var{inlen}: length of input array with unicode code points.
+
+@var{out}: output zero terminated string that must have room for at
+least 63 characters plus the terminating zero.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+The ToASCII operation takes a sequence of Unicode code points that
+make up one domain label and transforms it into a sequence of code
+points in the ASCII range (0..7F). If ToASCII succeeds, the
+original sequence and the resulting sequence are equivalent labels.
+
+It is important to note that the ToASCII operation can fail. ToASCII
+fails if any step of it fails. If any step of the ToASCII operation
+fails on any label in a domain name, that domain name MUST NOT be used
+as an internationalized domain name. The method for deadling with this
+failure is application-specific.
+
+The inputs to ToASCII are a sequence of code points, the AllowUnassigned
+flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a
+sequence of ASCII code points or a failure condition.
+
+ToASCII never alters a sequence of code points that are all in the ASCII
+range to begin with (although it could fail). Applying the ToASCII
+operation multiple times has exactly the same effect as applying it just
+once.
+
+@strong{Return value:} Returns 0 on success, or an @code{Idna_rc} error code.
+@end deftypefun
+
+@subheading idna_to_unicode_44i
+@anchor{idna_to_unicode_44i}
+@deftypefun {int} {idna_to_unicode_44i} (const uint32_t * @var{in}, size_t @var{inlen}, uint32_t * @var{out}, size_t * @var{outlen}, int @var{flags})
+@var{in}: input array with unicode code points.
+
+@var{inlen}: length of input array with unicode code points.
+
+@var{out}: output array with unicode code points.
+
+@var{outlen}: on input, maximum size of output array with unicode code points,
+on exit, actual size of output array with unicode code points.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+The ToUnicode operation takes a sequence of Unicode code points
+that make up one domain label and returns a sequence of Unicode
+code points. If the input sequence is a label in ACE form, then the
+result is an equivalent internationalized label that is not in ACE
+form, otherwise the original sequence is returned unaltered.
+
+ToUnicode never fails. If any step fails, then the original input
+sequence is returned immediately in that step.
+
+The Punycode decoder can never output more code points than it
+inputs, but Nameprep can, and therefore ToUnicode can.  Note that
+the number of octets needed to represent a sequence of code points
+depends on the particular character encoding used.
+
+The inputs to ToUnicode are a sequence of code points, the
+AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of
+ToUnicode is always a sequence of Unicode code points.
+
+@strong{Return value:} Returns @code{Idna_rc} error condition, but it must only be
+used for debugging purposes.  The output buffer is always
+guaranteed to contain the correct data according to the
+specification (sans malloc induced errors).  NB!  This means that
+you normally ignore the return code from this function, as
+checking it means breaking the standard.
+@end deftypefun
+
+@subheading idna_to_ascii_4z
+@anchor{idna_to_ascii_4z}
+@deftypefun {int} {idna_to_ascii_4z} (const uint32_t * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero terminated input Unicode string.
+
+@var{output}: pointer to newly allocated output string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert UCS-4 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
+@subheading idna_to_ascii_8z
+@anchor{idna_to_ascii_8z}
+@deftypefun {int} {idna_to_ascii_8z} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero terminated input UTF-8 string.
+
+@var{output}: pointer to newly allocated output string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert UTF-8 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
+@subheading idna_to_ascii_lz
+@anchor{idna_to_ascii_lz}
+@deftypefun {int} {idna_to_ascii_lz} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero terminated input string encoded in the current locale's
+character set.
+
+@var{output}: pointer to newly allocated output string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert domain name in the locale's encoding to ASCII string.  The
+domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
+@subheading idna_to_unicode_4z4z
+@anchor{idna_to_unicode_4z4z}
+@deftypefun {int} {idna_to_unicode_4z4z} (const uint32_t * @var{input}, uint32_t ** @var{output}, int @var{flags})
+@var{input}: zero-terminated Unicode string.
+
+@var{output}: pointer to newly allocated output Unicode string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in UCS-4 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
+@subheading idna_to_unicode_8z4z
+@anchor{idna_to_unicode_8z4z}
+@deftypefun {int} {idna_to_unicode_8z4z} (const char * @var{input}, uint32_t ** @var{output}, int @var{flags})
+@var{input}: zero-terminated UTF-8 string.
+
+@var{output}: pointer to newly allocated output Unicode string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in UTF-8 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
+@subheading idna_to_unicode_8z8z
+@anchor{idna_to_unicode_8z8z}
+@deftypefun {int} {idna_to_unicode_8z8z} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero-terminated UTF-8 string.
+
+@var{output}: pointer to newly allocated output UTF-8 string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in UTF-8 format into a
+UTF-8 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
+@subheading idna_to_unicode_8zlz
+@anchor{idna_to_unicode_8zlz}
+@deftypefun {int} {idna_to_unicode_8zlz} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero-terminated UTF-8 string.
+
+@var{output}: pointer to newly allocated output string encoded in the
+current locale's character set.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in UTF-8 format into a
+string encoded in the current locale's character set.  The domain
+name may contain several labels, separated by dots.  The output
+buffer must be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
+@subheading idna_to_unicode_lzlz
+@anchor{idna_to_unicode_lzlz}
+@deftypefun {int} {idna_to_unicode_lzlz} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero-terminated string encoded in the current locale's
+character set.
+
+@var{output}: pointer to newly allocated output string encoded in the
+current locale's character set.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in the locale's character
+set into a string encoded in the current locale's character set.
+The domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
diff --git a/doc/texi/idna_strerror.texi b/doc/texi/idna_strerror.texi
new file mode 100644 (file)
index 0000000..7674516
--- /dev/null
@@ -0,0 +1,46 @@
+@subheading idna_strerror
+@anchor{idna_strerror}
+@deftypefun {const char *} {idna_strerror} (Idna_rc @var{rc})
+@var{rc}: an @code{Idna_rc} return code.
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{IDNA_SUCCESS:} Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{IDNA_STRINGPREP_ERROR:} Error during string preparation.
+
+@strong{IDNA_PUNYCODE_ERROR:} Error during punycode operation.
+
+@strong{IDNA_CONTAINS_NON_LDH:} For IDNA_USE_STD3_ASCII_RULES, indicate that
+the string contains non-LDH ASCII characters.
+
+@strong{IDNA_CONTAINS_MINUS:} For IDNA_USE_STD3_ASCII_RULES, indicate that
+the string contains a leading or trailing hyphen-minus (U+002D).
+
+@strong{IDNA_INVALID_LENGTH:} The final output string is not within the
+(inclusive) range 1 to 63 characters.
+
+@strong{IDNA_NO_ACE_PREFIX:} The string does not contain the ACE prefix
+(for ToUnicode).
+
+@strong{IDNA_ROUNDTRIP_VERIFY_ERROR:} The ToASCII operation on output
+string does not equal the input.
+
+@strong{IDNA_CONTAINS_ACE_PREFIX:} The input contains the ACE prefix (for
+ToASCII).
+
+@strong{IDNA_ICONV_ERROR:} Could not convert string in locale encoding.
+
+@strong{IDNA_MALLOC_ERROR:} Could not allocate buffer (this is typically a
+fatal error).
+
+@strong{IDNA_DLOPEN_ERROR:} Could not dlopen the libcidn DSO (only used
+internally in libc).
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_ascii_4i.texi b/doc/texi/idna_to_ascii_4i.texi
new file mode 100644 (file)
index 0000000..6633090
--- /dev/null
@@ -0,0 +1,36 @@
+@subheading idna_to_ascii_4i
+@anchor{idna_to_ascii_4i}
+@deftypefun {int} {idna_to_ascii_4i} (const uint32_t * @var{in}, size_t @var{inlen}, char * @var{out}, int @var{flags})
+@var{in}: input array with unicode code points.
+
+@var{inlen}: length of input array with unicode code points.
+
+@var{out}: output zero terminated string that must have room for at
+least 63 characters plus the terminating zero.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+The ToASCII operation takes a sequence of Unicode code points that
+make up one domain label and transforms it into a sequence of code
+points in the ASCII range (0..7F). If ToASCII succeeds, the
+original sequence and the resulting sequence are equivalent labels.
+
+It is important to note that the ToASCII operation can fail. ToASCII
+fails if any step of it fails. If any step of the ToASCII operation
+fails on any label in a domain name, that domain name MUST NOT be used
+as an internationalized domain name. The method for deadling with this
+failure is application-specific.
+
+The inputs to ToASCII are a sequence of code points, the AllowUnassigned
+flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a
+sequence of ASCII code points or a failure condition.
+
+ToASCII never alters a sequence of code points that are all in the ASCII
+range to begin with (although it could fail). Applying the ToASCII
+operation multiple times has exactly the same effect as applying it just
+once.
+
+@strong{Return value:} Returns 0 on success, or an @code{Idna_rc} error code.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_ascii_4z.texi b/doc/texi/idna_to_ascii_4z.texi
new file mode 100644 (file)
index 0000000..6882e73
--- /dev/null
@@ -0,0 +1,17 @@
+@subheading idna_to_ascii_4z
+@anchor{idna_to_ascii_4z}
+@deftypefun {int} {idna_to_ascii_4z} (const uint32_t * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero terminated input Unicode string.
+
+@var{output}: pointer to newly allocated output string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert UCS-4 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_ascii_8z.texi b/doc/texi/idna_to_ascii_8z.texi
new file mode 100644 (file)
index 0000000..bd279c4
--- /dev/null
@@ -0,0 +1,17 @@
+@subheading idna_to_ascii_8z
+@anchor{idna_to_ascii_8z}
+@deftypefun {int} {idna_to_ascii_8z} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero terminated input UTF-8 string.
+
+@var{output}: pointer to newly allocated output string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert UTF-8 domain name to ASCII string.  The domain name may
+contain several labels, separated by dots.  The output buffer must
+be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_ascii_lz.texi b/doc/texi/idna_to_ascii_lz.texi
new file mode 100644 (file)
index 0000000..be5465d
--- /dev/null
@@ -0,0 +1,18 @@
+@subheading idna_to_ascii_lz
+@anchor{idna_to_ascii_lz}
+@deftypefun {int} {idna_to_ascii_lz} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero terminated input string encoded in the current locale's
+character set.
+
+@var{output}: pointer to newly allocated output string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert domain name in the locale's encoding to ASCII string.  The
+domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_unicode_44i.texi b/doc/texi/idna_to_unicode_44i.texi
new file mode 100644 (file)
index 0000000..a1d7d4e
--- /dev/null
@@ -0,0 +1,41 @@
+@subheading idna_to_unicode_44i
+@anchor{idna_to_unicode_44i}
+@deftypefun {int} {idna_to_unicode_44i} (const uint32_t * @var{in}, size_t @var{inlen}, uint32_t * @var{out}, size_t * @var{outlen}, int @var{flags})
+@var{in}: input array with unicode code points.
+
+@var{inlen}: length of input array with unicode code points.
+
+@var{out}: output array with unicode code points.
+
+@var{outlen}: on input, maximum size of output array with unicode code points,
+on exit, actual size of output array with unicode code points.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+The ToUnicode operation takes a sequence of Unicode code points
+that make up one domain label and returns a sequence of Unicode
+code points. If the input sequence is a label in ACE form, then the
+result is an equivalent internationalized label that is not in ACE
+form, otherwise the original sequence is returned unaltered.
+
+ToUnicode never fails. If any step fails, then the original input
+sequence is returned immediately in that step.
+
+The Punycode decoder can never output more code points than it
+inputs, but Nameprep can, and therefore ToUnicode can.  Note that
+the number of octets needed to represent a sequence of code points
+depends on the particular character encoding used.
+
+The inputs to ToUnicode are a sequence of code points, the
+AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of
+ToUnicode is always a sequence of Unicode code points.
+
+@strong{Return value:} Returns @code{Idna_rc} error condition, but it must only be
+used for debugging purposes.  The output buffer is always
+guaranteed to contain the correct data according to the
+specification (sans malloc induced errors).  NB!  This means that
+you normally ignore the return code from this function, as
+checking it means breaking the standard.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_unicode_4z4z.texi b/doc/texi/idna_to_unicode_4z4z.texi
new file mode 100644 (file)
index 0000000..5c45829
--- /dev/null
@@ -0,0 +1,18 @@
+@subheading idna_to_unicode_4z4z
+@anchor{idna_to_unicode_4z4z}
+@deftypefun {int} {idna_to_unicode_4z4z} (const uint32_t * @var{input}, uint32_t ** @var{output}, int @var{flags})
+@var{input}: zero-terminated Unicode string.
+
+@var{output}: pointer to newly allocated output Unicode string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in UCS-4 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_unicode_8z4z.texi b/doc/texi/idna_to_unicode_8z4z.texi
new file mode 100644 (file)
index 0000000..ef32d1a
--- /dev/null
@@ -0,0 +1,18 @@
+@subheading idna_to_unicode_8z4z
+@anchor{idna_to_unicode_8z4z}
+@deftypefun {int} {idna_to_unicode_8z4z} (const char * @var{input}, uint32_t ** @var{output}, int @var{flags})
+@var{input}: zero-terminated UTF-8 string.
+
+@var{output}: pointer to newly allocated output Unicode string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in UTF-8 format into a
+UCS-4 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_unicode_8z8z.texi b/doc/texi/idna_to_unicode_8z8z.texi
new file mode 100644 (file)
index 0000000..49d1c04
--- /dev/null
@@ -0,0 +1,18 @@
+@subheading idna_to_unicode_8z8z
+@anchor{idna_to_unicode_8z8z}
+@deftypefun {int} {idna_to_unicode_8z8z} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero-terminated UTF-8 string.
+
+@var{output}: pointer to newly allocated output UTF-8 string.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in UTF-8 format into a
+UTF-8 string.  The domain name may contain several labels,
+separated by dots.  The output buffer must be deallocated by the
+caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_unicode_8zlz.texi b/doc/texi/idna_to_unicode_8zlz.texi
new file mode 100644 (file)
index 0000000..7ca0e7c
--- /dev/null
@@ -0,0 +1,19 @@
+@subheading idna_to_unicode_8zlz
+@anchor{idna_to_unicode_8zlz}
+@deftypefun {int} {idna_to_unicode_8zlz} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero-terminated UTF-8 string.
+
+@var{output}: pointer to newly allocated output string encoded in the
+current locale's character set.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in UTF-8 format into a
+string encoded in the current locale's character set.  The domain
+name may contain several labels, separated by dots.  The output
+buffer must be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
diff --git a/doc/texi/idna_to_unicode_lzlz.texi b/doc/texi/idna_to_unicode_lzlz.texi
new file mode 100644 (file)
index 0000000..30b43f3
--- /dev/null
@@ -0,0 +1,20 @@
+@subheading idna_to_unicode_lzlz
+@anchor{idna_to_unicode_lzlz}
+@deftypefun {int} {idna_to_unicode_lzlz} (const char * @var{input}, char ** @var{output}, int @var{flags})
+@var{input}: zero-terminated string encoded in the current locale's
+character set.
+
+@var{output}: pointer to newly allocated output string encoded in the
+current locale's character set.
+
+@var{flags}: an @code{Idna_flags} value, e.g., @code{IDNA_ALLOW_UNASSIGNED} or
+@code{IDNA_USE_STD3_ASCII_RULES}.
+
+Convert possibly ACE encoded domain name in the locale's character
+set into a string encoded in the current locale's character set.
+The domain name may contain several labels, separated by dots.  The
+output buffer must be deallocated by the caller.
+
+@strong{Return value:} Returns @code{IDNA_SUCCESS} on success, or error code.
+@end deftypefun
+
diff --git a/doc/texi/nfkc.c.texi b/doc/texi/nfkc.c.texi
new file mode 100644 (file)
index 0000000..d5be453
--- /dev/null
@@ -0,0 +1,107 @@
+@subheading stringprep_utf8_to_unichar
+@anchor{stringprep_utf8_to_unichar}
+@deftypefun {uint32_t} {stringprep_utf8_to_unichar} (const char * @var{p})
+@var{p}: a pointer to Unicode character encoded as UTF-8
+
+Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
+If @code{p} does not point to a valid UTF-8 encoded character, results are
+undefined.
+
+@strong{Return value:} the resulting character.
+@end deftypefun
+
+@subheading stringprep_unichar_to_utf8
+@anchor{stringprep_unichar_to_utf8}
+@deftypefun {int} {stringprep_unichar_to_utf8} (uint32_t @var{c}, char * @var{outbuf})
+@var{c}: a ISO10646 character code
+
+@var{outbuf}: output buffer, must have at least 6 bytes of space.
+If @code{NULL}, the length will be computed and returned
+and nothing will be written to @code{outbuf}.
+
+Converts a single character to UTF-8.
+
+@strong{Return value:} number of bytes written.
+@end deftypefun
+
+@subheading stringprep_utf8_to_ucs4
+@anchor{stringprep_utf8_to_ucs4}
+@deftypefun {uint32_t *} {stringprep_utf8_to_ucs4} (const char * @var{str}, ssize_t @var{len}, size_t * @var{items_written})
+@var{str}: a UTF-8 encoded string
+
+@var{len}: the maximum length of @code{str} to use. If @code{len} < 0, then
+the string is nul-terminated.
+
+@var{items_written}: location to store the number of characters in the
+result, or @code{NULL}.
+
+Convert a string from UTF-8 to a 32-bit fixed width
+representation as UCS-4, assuming valid UTF-8 input.
+This function does no error checking on the input.
+
+@strong{Return value:} a pointer to a newly allocated UCS-4 string.
+This value must be deallocated by the caller.
+@end deftypefun
+
+@subheading stringprep_ucs4_to_utf8
+@anchor{stringprep_ucs4_to_utf8}
+@deftypefun {char *} {stringprep_ucs4_to_utf8} (const uint32_t * @var{str}, ssize_t @var{len}, size_t * @var{items_read}, size_t * @var{items_written})
+@var{str}: a UCS-4 encoded string
+
+@var{len}: the maximum length of @code{str} to use. If @code{len} < 0, then
+the string is terminated with a 0 character.
+
+@var{items_read}: location to store number of characters read read, or @code{NULL}.
+
+@var{items_written}: location to store number of bytes written or @code{NULL}.
+The value here stored does not include the trailing 0
+byte.
+
+Convert a string from a 32-bit fixed width representation as UCS-4.
+to UTF-8. The result will be terminated with a 0 byte.
+
+@strong{Return value:} a pointer to a newly allocated UTF-8 string.
+This value must be deallocated by the caller.
+If an error occurs, @code{NULL} will be returned and @code{error}
+set.
+@end deftypefun
+
+@subheading stringprep_utf8_nfkc_normalize
+@anchor{stringprep_utf8_nfkc_normalize}
+@deftypefun {char *} {stringprep_utf8_nfkc_normalize} (const char * @var{str}, ssize_t @var{len})
+@var{str}: a UTF-8 encoded string.
+
+@var{len}: length of @code{str}, in bytes, or -1 if @code{str} is nul-terminated.
+
+Converts a string into canonical form, standardizing
+such issues as whether a character with an accent
+is represented as a base character and combining
+accent or as a single precomposed character.
+
+The normalization mode is NFKC (ALL COMPOSE).  It standardizes
+differences that do not affect the text content, such as the
+above-mentioned accent representation. It standardizes the
+"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
+the standard forms (in this case DIGIT THREE). Formatting
+information may be lost but for most text operations such
+characters should be considered the same. It returns a result with
+composed forms rather than a maximally decomposed form.
+
+@strong{Return value:} a newly allocated string, that is the
+NFKC normalized form of @code{str}.
+@end deftypefun
+
+@subheading stringprep_ucs4_nfkc_normalize
+@anchor{stringprep_ucs4_nfkc_normalize}
+@deftypefun {uint32_t *} {stringprep_ucs4_nfkc_normalize} (uint32_t * @var{str}, ssize_t @var{len})
+@var{str}: a Unicode string.
+
+@var{len}: length of @code{str} array, or -1 if @code{str} is nul-terminated.
+
+Converts UCS4 string into UTF-8 and runs
+@code{stringprep_utf8_nfkc_normalize()}.
+
+@strong{Return value:} a newly allocated Unicode string, that is the NFKC
+normalized form of @code{str}.
+@end deftypefun
+
diff --git a/doc/texi/pr29.c.texi b/doc/texi/pr29.c.texi
new file mode 100644 (file)
index 0000000..4f5e489
--- /dev/null
@@ -0,0 +1,48 @@
+@subheading pr29_4
+@anchor{pr29_4}
+@deftypefun {int} {pr29_4} (const uint32_t * @var{in}, size_t @var{len})
+@var{in}: input array with unicode code points.
+
+@var{len}: length of input array with unicode code points.
+
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+
+@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success,
+and @code{PR29_PROBLEM} if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations).
+@end deftypefun
+
+@subheading pr29_4z
+@anchor{pr29_4z}
+@deftypefun {int} {pr29_4z} (const uint32_t * @var{in})
+@var{in}: zero terminated array of Unicode code points.
+
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+
+@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success,
+and @code{PR29_PROBLEM} if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations).
+@end deftypefun
+
+@subheading pr29_8z
+@anchor{pr29_8z}
+@deftypefun {int} {pr29_8z} (const char * @var{in})
+@var{in}: zero terminated input UTF-8 string.
+
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+
+@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success,
+and @code{PR29_PROBLEM} if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations), or @code{PR29_STRINGPREP_ERROR} if there was a
+problem converting the string from UTF-8 to UCS-4.
+@end deftypefun
+
diff --git a/doc/texi/pr29_4.texi b/doc/texi/pr29_4.texi
new file mode 100644 (file)
index 0000000..51649fe
--- /dev/null
@@ -0,0 +1,17 @@
+@subheading pr29_4
+@anchor{pr29_4}
+@deftypefun {int} {pr29_4} (const uint32_t * @var{in}, size_t @var{len})
+@var{in}: input array with unicode code points.
+
+@var{len}: length of input array with unicode code points.
+
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+
+@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success,
+and @code{PR29_PROBLEM} if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations).
+@end deftypefun
+
diff --git a/doc/texi/pr29_4z.texi b/doc/texi/pr29_4z.texi
new file mode 100644 (file)
index 0000000..2a79bfe
--- /dev/null
@@ -0,0 +1,15 @@
+@subheading pr29_4z
+@anchor{pr29_4z}
+@deftypefun {int} {pr29_4z} (const uint32_t * @var{in})
+@var{in}: zero terminated array of Unicode code points.
+
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+
+@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success,
+and @code{PR29_PROBLEM} if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations).
+@end deftypefun
+
diff --git a/doc/texi/pr29_8z.texi b/doc/texi/pr29_8z.texi
new file mode 100644 (file)
index 0000000..8516b2f
--- /dev/null
@@ -0,0 +1,16 @@
+@subheading pr29_8z
+@anchor{pr29_8z}
+@deftypefun {int} {pr29_8z} (const char * @var{in})
+@var{in}: zero terminated input UTF-8 string.
+
+Check the input to see if it may be normalized into different
+strings by different NFKC implementations, due to an anomaly in the
+NFKC specifications.
+
+@strong{Return value:} Returns the @code{Pr29_rc} value @code{PR29_SUCCESS} on success,
+and @code{PR29_PROBLEM} if the input sequence is a "problem sequence"
+(i.e., may be normalized into different strings by different
+implementations), or @code{PR29_STRINGPREP_ERROR} if there was a
+problem converting the string from UTF-8 to UCS-4.
+@end deftypefun
+
diff --git a/doc/texi/pr29_strerror.texi b/doc/texi/pr29_strerror.texi
new file mode 100644 (file)
index 0000000..fd6b822
--- /dev/null
@@ -0,0 +1,21 @@
+@subheading pr29_strerror
+@anchor{pr29_strerror}
+@deftypefun {const char *} {pr29_strerror} (Pr29_rc @var{rc})
+@var{rc}: an @code{Pr29_rc} return code.
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{PR29_SUCCESS:} Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{PR29_PROBLEM:} A problem sequence was encountered.
+
+@strong{PR29_STRINGPREP_ERROR:} The character set conversion failed (only
+for @code{pr29_8()} and @code{pr29_8z()}).
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/punycode.c.texi b/doc/texi/punycode.c.texi
new file mode 100644 (file)
index 0000000..8c7887c
--- /dev/null
@@ -0,0 +1,83 @@
+@subheading punycode_encode
+@anchor{punycode_encode}
+@deftypefun {int} {punycode_encode} (size_t @var{input_length}, const punycode_uint [] @var{input}, const unsigned char [] @var{case_flags}, size_t * @var{output_length}, char [] @var{output})
+@var{input_length}: The number of code points in the @code{input} array and
+the number of flags in the @code{case_flags} array.
+
+@var{input}: An array of code points.  They are presumed to be Unicode
+code points, but that is not strictly REQUIRED.  The array
+contains code points, not code units.  UTF-16 uses code units
+D800 through DFFF to refer to code points 10000..10FFFF.  The
+code points D800..DFFF do not occur in any valid Unicode string.
+The code points that can occur in Unicode strings (0..D7FF and
+E000..10FFFF) are also called Unicode scalar values.
+
+@var{case_flags}: A @code{NULL} pointer or an array of boolean values parallel
+to the @code{input} array.  Nonzero (true, flagged) suggests that the
+corresponding Unicode character be forced to uppercase after
+being decoded (if possible), and zero (false, unflagged) suggests
+that it be forced to lowercase (if possible).  ASCII code points
+(0..7F) are encoded literally, except that ASCII letters are
+forced to uppercase or lowercase according to the corresponding
+case flags.  If @code{case_flags} is a @code{NULL} pointer then ASCII letters
+are left as they are, and other code points are treated as
+unflagged.
+
+@var{output_length}: The caller passes in the maximum number of ASCII
+code points that it can receive.  On successful return it will
+contain the number of ASCII code points actually output.
+
+@var{output}: An array of ASCII code points.  It is *not*
+null-terminated; it will contain zeros if and only if the @code{input}
+contains zeros.  (Of course the caller can leave room for a
+terminator and add one if needed.)
+
+Converts a sequence of code points (presumed to be Unicode code
+points) to Punycode.
+
+@strong{Return value:} The return value can be any of the @code{Punycode_status}
+values defined above except @code{PUNYCODE_BAD_INPUT}.  If not
+@code{PUNYCODE_SUCCESS}, then @code{output_size} and @code{output} might contain
+garbage.
+@end deftypefun
+
+@subheading punycode_decode
+@anchor{punycode_decode}
+@deftypefun {int} {punycode_decode} (size_t @var{input_length}, const char [] @var{input}, size_t * @var{output_length}, punycode_uint [] @var{output}, unsigned char [] @var{case_flags})
+@var{input_length}: The number of ASCII code points in the @code{input} array.
+
+@var{input}: An array of ASCII code points (0..7F).
+
+@var{output_length}: The caller passes in the maximum number of code
+points that it can receive into the @code{output} array (which is also
+the maximum number of flags that it can receive into the
+@code{case_flags} array, if @code{case_flags} is not a @code{NULL} pointer).  On
+successful return it will contain the number of code points
+actually output (which is also the number of flags actually
+output, if case_flags is not a null pointer).  The decoder will
+never need to output more code points than the number of ASCII
+code points in the input, because of the way the encoding is
+defined.  The number of code points output cannot exceed the
+maximum possible value of a punycode_uint, even if the supplied
+@code{output_length} is greater than that.
+
+@var{output}: An array of code points like the input argument of
+@code{punycode_encode()} (see above).
+
+@var{case_flags}: A @code{NULL} pointer (if the flags are not needed by the
+caller) or an array of boolean values parallel to the @code{output}
+array.  Nonzero (true, flagged) suggests that the corresponding
+Unicode character be forced to uppercase by the caller (if
+possible), and zero (false, unflagged) suggests that it be forced
+to lowercase (if possible).  ASCII code points (0..7F) are output
+already in the proper case, but their flags will be set
+appropriately so that applying the flags would be harmless.
+
+Converts Punycode to a sequence of code points (presumed to be
+Unicode code points).
+
+@strong{Return value:} The return value can be any of the @code{Punycode_status}
+values defined above.  If not @code{PUNYCODE_SUCCESS}, then
+@code{output_length}, @code{output}, and @code{case_flags} might contain garbage.
+@end deftypefun
+
diff --git a/doc/texi/punycode_decode.texi b/doc/texi/punycode_decode.texi
new file mode 100644 (file)
index 0000000..323daa1
--- /dev/null
@@ -0,0 +1,40 @@
+@subheading punycode_decode
+@anchor{punycode_decode}
+@deftypefun {int} {punycode_decode} (size_t @var{input_length}, const char [] @var{input}, size_t * @var{output_length}, punycode_uint [] @var{output}, unsigned char [] @var{case_flags})
+@var{input_length}: The number of ASCII code points in the @code{input} array.
+
+@var{input}: An array of ASCII code points (0..7F).
+
+@var{output_length}: The caller passes in the maximum number of code
+points that it can receive into the @code{output} array (which is also
+the maximum number of flags that it can receive into the
+@code{case_flags} array, if @code{case_flags} is not a @code{NULL} pointer).  On
+successful return it will contain the number of code points
+actually output (which is also the number of flags actually
+output, if case_flags is not a null pointer).  The decoder will
+never need to output more code points than the number of ASCII
+code points in the input, because of the way the encoding is
+defined.  The number of code points output cannot exceed the
+maximum possible value of a punycode_uint, even if the supplied
+@code{output_length} is greater than that.
+
+@var{output}: An array of code points like the input argument of
+@code{punycode_encode()} (see above).
+
+@var{case_flags}: A @code{NULL} pointer (if the flags are not needed by the
+caller) or an array of boolean values parallel to the @code{output}
+array.  Nonzero (true, flagged) suggests that the corresponding
+Unicode character be forced to uppercase by the caller (if
+possible), and zero (false, unflagged) suggests that it be forced
+to lowercase (if possible).  ASCII code points (0..7F) are output
+already in the proper case, but their flags will be set
+appropriately so that applying the flags would be harmless.
+
+Converts Punycode to a sequence of code points (presumed to be
+Unicode code points).
+
+@strong{Return value:} The return value can be any of the @code{Punycode_status}
+values defined above.  If not @code{PUNYCODE_SUCCESS}, then
+@code{output_length}, @code{output}, and @code{case_flags} might contain garbage.
+@end deftypefun
+
diff --git a/doc/texi/punycode_encode.texi b/doc/texi/punycode_encode.texi
new file mode 100644 (file)
index 0000000..3f7d57b
--- /dev/null
@@ -0,0 +1,43 @@
+@subheading punycode_encode
+@anchor{punycode_encode}
+@deftypefun {int} {punycode_encode} (size_t @var{input_length}, const punycode_uint [] @var{input}, const unsigned char [] @var{case_flags}, size_t * @var{output_length}, char [] @var{output})
+@var{input_length}: The number of code points in the @code{input} array and
+the number of flags in the @code{case_flags} array.
+
+@var{input}: An array of code points.  They are presumed to be Unicode
+code points, but that is not strictly REQUIRED.  The array
+contains code points, not code units.  UTF-16 uses code units
+D800 through DFFF to refer to code points 10000..10FFFF.  The
+code points D800..DFFF do not occur in any valid Unicode string.
+The code points that can occur in Unicode strings (0..D7FF and
+E000..10FFFF) are also called Unicode scalar values.
+
+@var{case_flags}: A @code{NULL} pointer or an array of boolean values parallel
+to the @code{input} array.  Nonzero (true, flagged) suggests that the
+corresponding Unicode character be forced to uppercase after
+being decoded (if possible), and zero (false, unflagged) suggests
+that it be forced to lowercase (if possible).  ASCII code points
+(0..7F) are encoded literally, except that ASCII letters are
+forced to uppercase or lowercase according to the corresponding
+case flags.  If @code{case_flags} is a @code{NULL} pointer then ASCII letters
+are left as they are, and other code points are treated as
+unflagged.
+
+@var{output_length}: The caller passes in the maximum number of ASCII
+code points that it can receive.  On successful return it will
+contain the number of ASCII code points actually output.
+
+@var{output}: An array of ASCII code points.  It is *not*
+null-terminated; it will contain zeros if and only if the @code{input}
+contains zeros.  (Of course the caller can leave room for a
+terminator and add one if needed.)
+
+Converts a sequence of code points (presumed to be Unicode code
+points) to Punycode.
+
+@strong{Return value:} The return value can be any of the @code{Punycode_status}
+values defined above except @code{PUNYCODE_BAD_INPUT}.  If not
+@code{PUNYCODE_SUCCESS}, then @code{output_size} and @code{output} might contain
+garbage.
+@end deftypefun
+
diff --git a/doc/texi/punycode_strerror.texi b/doc/texi/punycode_strerror.texi
new file mode 100644 (file)
index 0000000..9e29628
--- /dev/null
@@ -0,0 +1,22 @@
+@subheading punycode_strerror
+@anchor{punycode_strerror}
+@deftypefun {const char *} {punycode_strerror} (Punycode_status @var{rc})
+@var{rc}: an @code{Punycode_status} return code.
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{PUNYCODE_SUCCESS:} Successful operation.  This value is guaranteed
+to always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{PUNYCODE_BAD_INPUT:} Input is invalid.
+
+@strong{PUNYCODE_BIG_OUTPUT:} Output would exceed the space provided.
+
+@strong{PUNYCODE_OVERFLOW:} Input needs wider integers to process.
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/strerror-idna.c.texi b/doc/texi/strerror-idna.c.texi
new file mode 100644 (file)
index 0000000..7674516
--- /dev/null
@@ -0,0 +1,46 @@
+@subheading idna_strerror
+@anchor{idna_strerror}
+@deftypefun {const char *} {idna_strerror} (Idna_rc @var{rc})
+@var{rc}: an @code{Idna_rc} return code.
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{IDNA_SUCCESS:} Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{IDNA_STRINGPREP_ERROR:} Error during string preparation.
+
+@strong{IDNA_PUNYCODE_ERROR:} Error during punycode operation.
+
+@strong{IDNA_CONTAINS_NON_LDH:} For IDNA_USE_STD3_ASCII_RULES, indicate that
+the string contains non-LDH ASCII characters.
+
+@strong{IDNA_CONTAINS_MINUS:} For IDNA_USE_STD3_ASCII_RULES, indicate that
+the string contains a leading or trailing hyphen-minus (U+002D).
+
+@strong{IDNA_INVALID_LENGTH:} The final output string is not within the
+(inclusive) range 1 to 63 characters.
+
+@strong{IDNA_NO_ACE_PREFIX:} The string does not contain the ACE prefix
+(for ToUnicode).
+
+@strong{IDNA_ROUNDTRIP_VERIFY_ERROR:} The ToASCII operation on output
+string does not equal the input.
+
+@strong{IDNA_CONTAINS_ACE_PREFIX:} The input contains the ACE prefix (for
+ToASCII).
+
+@strong{IDNA_ICONV_ERROR:} Could not convert string in locale encoding.
+
+@strong{IDNA_MALLOC_ERROR:} Could not allocate buffer (this is typically a
+fatal error).
+
+@strong{IDNA_DLOPEN_ERROR:} Could not dlopen the libcidn DSO (only used
+internally in libc).
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/strerror-pr29.c.texi b/doc/texi/strerror-pr29.c.texi
new file mode 100644 (file)
index 0000000..fd6b822
--- /dev/null
@@ -0,0 +1,21 @@
+@subheading pr29_strerror
+@anchor{pr29_strerror}
+@deftypefun {const char *} {pr29_strerror} (Pr29_rc @var{rc})
+@var{rc}: an @code{Pr29_rc} return code.
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{PR29_SUCCESS:} Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{PR29_PROBLEM:} A problem sequence was encountered.
+
+@strong{PR29_STRINGPREP_ERROR:} The character set conversion failed (only
+for @code{pr29_8()} and @code{pr29_8z()}).
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/strerror-punycode.c.texi b/doc/texi/strerror-punycode.c.texi
new file mode 100644 (file)
index 0000000..9e29628
--- /dev/null
@@ -0,0 +1,22 @@
+@subheading punycode_strerror
+@anchor{punycode_strerror}
+@deftypefun {const char *} {punycode_strerror} (Punycode_status @var{rc})
+@var{rc}: an @code{Punycode_status} return code.
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{PUNYCODE_SUCCESS:} Successful operation.  This value is guaranteed
+to always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{PUNYCODE_BAD_INPUT:} Input is invalid.
+
+@strong{PUNYCODE_BIG_OUTPUT:} Output would exceed the space provided.
+
+@strong{PUNYCODE_OVERFLOW:} Input needs wider integers to process.
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/strerror-stringprep.c.texi b/doc/texi/strerror-stringprep.c.texi
new file mode 100644 (file)
index 0000000..ee1b067
--- /dev/null
@@ -0,0 +1,50 @@
+@subheading stringprep_strerror
+@anchor{stringprep_strerror}
+@deftypefun {const char *} {stringprep_strerror} (Stringprep_rc @var{rc})
+@var{rc}: a @code{Stringprep_rc} return code.
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{STRINGPREP_OK:} Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{STRINGPREP_CONTAINS_UNASSIGNED:} String contain unassigned Unicode
+code points, which is forbidden by the profile.
+
+@strong{STRINGPREP_CONTAINS_PROHIBITED:} String contain code points
+prohibited by the profile.
+
+@strong{STRINGPREP_BIDI_BOTH_L_AND_RAL:} String contain code points with
+conflicting bidirection category.
+
+@strong{STRINGPREP_BIDI_LEADTRAIL_NOT_RAL:} Leading and trailing character
+in string not of proper bidirectional category.
+
+@strong{STRINGPREP_BIDI_CONTAINS_PROHIBITED:} Contains prohibited code
+points detected by bidirectional code.
+
+@strong{STRINGPREP_TOO_SMALL_BUFFER:} Buffer handed to function was too
+small.  This usually indicate a problem in the calling
+application.
+
+@strong{STRINGPREP_PROFILE_ERROR:} The stringprep profile was inconsistent.
+This usually indicate an internal error in the library.
+
+@strong{STRINGPREP_FLAG_ERROR:} The supplied flag conflicted with profile.
+This usually indicate a problem in the calling application.
+
+@strong{STRINGPREP_UNKNOWN_PROFILE:} The supplied profile name was not
+known to the library.
+
+@strong{STRINGPREP_NFKC_FAILED:} The Unicode NFKC operation failed.  This
+usually indicate an internal error in the library.
+
+@strong{STRINGPREP_MALLOC_ERROR:} The @code{malloc()} was out of memory.  This is
+usually a fatal error.
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/strerror-tld.c.texi b/doc/texi/strerror-tld.c.texi
new file mode 100644 (file)
index 0000000..3eeb9c2
--- /dev/null
@@ -0,0 +1,26 @@
+@subheading tld_strerror
+@anchor{tld_strerror}
+@deftypefun {const char *} {tld_strerror} (Tld_rc @var{rc})
+@var{rc}: tld return code
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{TLD_SUCCESS:} Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{TLD_INVALID:} Invalid character found.
+
+@strong{TLD_NODATA:} No input data was provided.
+
+@strong{TLD_MALLOC_ERROR:} Error during memory allocation.
+
+@strong{TLD_ICONV_ERROR:} Error during iconv string conversion.
+
+@strong{TLD_NO_TLD:} No top-level domain found in domain string.
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/stringprep.c.texi b/doc/texi/stringprep.c.texi
new file mode 100644 (file)
index 0000000..0529788
--- /dev/null
@@ -0,0 +1,127 @@
+@subheading stringprep_4i
+@anchor{stringprep_4i}
+@deftypefun {int} {stringprep_4i} (uint32_t * @var{ucs4}, size_t * @var{len}, size_t @var{maxucs4len}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile})
+@var{ucs4}: input/output array with string to prepare.
+
+@var{len}: on input, length of input array with Unicode code points,
+on exit, length of output array with Unicode code points.
+
+@var{maxucs4len}: maximum length of input/output array.
+
+@var{flags}: a @code{Stringprep_profile_flags} value, or 0.
+
+@var{profile}: pointer to @code{Stringprep_profile} to use.
+
+Prepare the input UCS-4 string according to the stringprep profile,
+and write back the result to the input string.
+
+The input is not required to be zero terminated (@code{ucs4}[@code{len}] = 0).
+The output will not be zero terminated unless @code{ucs4}[@code{len}] = 0.
+Instead, see @code{stringprep_4zi()} if your input is zero terminated or
+if you want the output to be.
+
+Since the stringprep operation can expand the string, @code{maxucs4len}
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+
+The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0.
+
+The @code{profile} contain the @code{Stringprep_profile} instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+
+@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an
+@code{Stringprep_rc} error code.
+@end deftypefun
+
+@subheading stringprep_4zi
+@anchor{stringprep_4zi}
+@deftypefun {int} {stringprep_4zi} (uint32_t * @var{ucs4}, size_t @var{maxucs4len}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile})
+@var{ucs4}: input/output array with zero terminated string to prepare.
+
+@var{maxucs4len}: maximum length of input/output array.
+
+@var{flags}: a @code{Stringprep_profile_flags} value, or 0.
+
+@var{profile}: pointer to @code{Stringprep_profile} to use.
+
+Prepare the input zero terminated UCS-4 string according to the
+stringprep profile, and write back the result to the input string.
+
+Since the stringprep operation can expand the string, @code{maxucs4len}
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+
+The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0.
+
+The @code{profile} contain the @code{Stringprep_profile} instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+
+@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an
+@code{Stringprep_rc} error code.
+@end deftypefun
+
+@subheading stringprep
+@anchor{stringprep}
+@deftypefun {int} {stringprep} (char * @var{in}, size_t @var{maxlen}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile})
+@var{in}: input/ouput array with string to prepare.
+
+@var{maxlen}: maximum length of input/output array.
+
+@var{flags}: a @code{Stringprep_profile_flags} value, or 0.
+
+@var{profile}: pointer to @code{Stringprep_profile} to use.
+
+Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and write back the result to the input string.
+
+Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+@code{stringprep_locale_to_utf8()}.
+
+Since the stringprep operation can expand the string, @code{maxlen}
+indicate how large the buffer holding the string is.  This function
+will not read or write to characters outside that size.
+
+The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0.
+
+The @code{profile} contain the @code{Stringprep_profile} instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+
+@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an error code.
+@end deftypefun
+
+@subheading stringprep_profile
+@anchor{stringprep_profile}
+@deftypefun {int} {stringprep_profile} (const char * @var{in}, char ** @var{out}, const char * @var{profile}, Stringprep_profile_flags @var{flags})
+@var{in}: input array with UTF-8 string to prepare.
+
+@var{out}: output variable with pointer to newly allocate string.
+
+@var{profile}: name of stringprep profile to use.
+
+@var{flags}: a @code{Stringprep_profile_flags} value, or 0.
+
+Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and return the result in a newly allocated
+variable.
+
+Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+@code{stringprep_locale_to_utf8()}.
+
+The output @code{out} variable must be deallocated by the caller.
+
+The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0.
+
+The @code{profile} specifies the name of the stringprep profile to use.
+It must be one of the internally supported stringprep profiles.
+
+@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an error code.
+@end deftypefun
+
diff --git a/doc/texi/stringprep.texi b/doc/texi/stringprep.texi
new file mode 100644 (file)
index 0000000..5d082a3
--- /dev/null
@@ -0,0 +1,32 @@
+@subheading stringprep
+@anchor{stringprep}
+@deftypefun {int} {stringprep} (char * @var{in}, size_t @var{maxlen}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile})
+@var{in}: input/ouput array with string to prepare.
+
+@var{maxlen}: maximum length of input/output array.
+
+@var{flags}: a @code{Stringprep_profile_flags} value, or 0.
+
+@var{profile}: pointer to @code{Stringprep_profile} to use.
+
+Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and write back the result to the input string.
+
+Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+@code{stringprep_locale_to_utf8()}.
+
+Since the stringprep operation can expand the string, @code{maxlen}
+indicate how large the buffer holding the string is.  This function
+will not read or write to characters outside that size.
+
+The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0.
+
+The @code{profile} contain the @code{Stringprep_profile} instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+
+@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an error code.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_4i.texi b/doc/texi/stringprep_4i.texi
new file mode 100644 (file)
index 0000000..7eac683
--- /dev/null
@@ -0,0 +1,37 @@
+@subheading stringprep_4i
+@anchor{stringprep_4i}
+@deftypefun {int} {stringprep_4i} (uint32_t * @var{ucs4}, size_t * @var{len}, size_t @var{maxucs4len}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile})
+@var{ucs4}: input/output array with string to prepare.
+
+@var{len}: on input, length of input array with Unicode code points,
+on exit, length of output array with Unicode code points.
+
+@var{maxucs4len}: maximum length of input/output array.
+
+@var{flags}: a @code{Stringprep_profile_flags} value, or 0.
+
+@var{profile}: pointer to @code{Stringprep_profile} to use.
+
+Prepare the input UCS-4 string according to the stringprep profile,
+and write back the result to the input string.
+
+The input is not required to be zero terminated (@code{ucs4}[@code{len}] = 0).
+The output will not be zero terminated unless @code{ucs4}[@code{len}] = 0.
+Instead, see @code{stringprep_4zi()} if your input is zero terminated or
+if you want the output to be.
+
+Since the stringprep operation can expand the string, @code{maxucs4len}
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+
+The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0.
+
+The @code{profile} contain the @code{Stringprep_profile} instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+
+@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an
+@code{Stringprep_rc} error code.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_4zi.texi b/doc/texi/stringprep_4zi.texi
new file mode 100644 (file)
index 0000000..7b27522
--- /dev/null
@@ -0,0 +1,29 @@
+@subheading stringprep_4zi
+@anchor{stringprep_4zi}
+@deftypefun {int} {stringprep_4zi} (uint32_t * @var{ucs4}, size_t @var{maxucs4len}, Stringprep_profile_flags @var{flags}, const Stringprep_profile * @var{profile})
+@var{ucs4}: input/output array with zero terminated string to prepare.
+
+@var{maxucs4len}: maximum length of input/output array.
+
+@var{flags}: a @code{Stringprep_profile_flags} value, or 0.
+
+@var{profile}: pointer to @code{Stringprep_profile} to use.
+
+Prepare the input zero terminated UCS-4 string according to the
+stringprep profile, and write back the result to the input string.
+
+Since the stringprep operation can expand the string, @code{maxucs4len}
+indicate how large the buffer holding the string is.  This function
+will not read or write to code points outside that size.
+
+The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0.
+
+The @code{profile} contain the @code{Stringprep_profile} instructions to
+perform.  Your application can define new profiles, possibly
+re-using the generic stringprep tables that always will be part of
+the library, or use one of the currently supported profiles.
+
+@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an
+@code{Stringprep_rc} error code.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_check_version.texi b/doc/texi/stringprep_check_version.texi
new file mode 100644 (file)
index 0000000..2ba59d2
--- /dev/null
@@ -0,0 +1,16 @@
+@subheading stringprep_check_version
+@anchor{stringprep_check_version}
+@deftypefun {const char *} {stringprep_check_version} (const char * @var{req_version})
+@var{req_version}: Required version number, or NULL.
+
+Check that the version of the library is at minimum the requested one
+and return the version string; return NULL if the condition is not
+satisfied.  If a NULL is passed to this function, no check is done,
+but the version string is simply returned.
+
+See @code{STRINGPREP_VERSION} for a suitable @code{req_version} string.
+
+@strong{Return value:} Version string of run-time library, or NULL if the
+run-time library does not meet the required version number.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_convert.texi b/doc/texi/stringprep_convert.texi
new file mode 100644 (file)
index 0000000..15b186c
--- /dev/null
@@ -0,0 +1,16 @@
+@subheading stringprep_convert
+@anchor{stringprep_convert}
+@deftypefun {char *} {stringprep_convert} (const char * @var{str}, const char * @var{to_codeset}, const char * @var{from_codeset})
+@var{str}: input zero-terminated string.
+
+@var{to_codeset}: name of destination character set.
+
+@var{from_codeset}: name of origin character set, as used by @code{str}.
+
+Convert the string from one character set to another using the
+system's @code{iconv()} function.
+
+@strong{Return value:} Returns newly allocated zero-terminated string which
+is @code{str} transcoded into to_codeset.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_locale_charset.texi b/doc/texi/stringprep_locale_charset.texi
new file mode 100644 (file)
index 0000000..e97407f
--- /dev/null
@@ -0,0 +1,22 @@
+@subheading stringprep_locale_charset
+@anchor{stringprep_locale_charset}
+@deftypefun {const char *} {stringprep_locale_charset} ( @var{void})
+
+Find out current locale charset.  The function respect the CHARSET
+environment variable, but typically uses nl_langinfo(CODESET) when
+it is supported.  It fall back on "ASCII" if CHARSET isn't set and
+nl_langinfo isn't supported or return anything.
+
+Note that this function return the application's locale's preferred
+charset (or thread's locale's preffered charset, if your system
+support thread-specific locales).  It does not return what the
+system may be using.  Thus, if you receive data from external
+sources you cannot in general use this function to guess what
+charset it is encoded in.  Use stringprep_convert from the external
+representation into the charset returned by this function, to have
+data in the locale encoding.
+
+@strong{Return value:} Return the character set used by the current locale.
+It will never return NULL, but use "ASCII" as a fallback.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_locale_to_utf8.texi b/doc/texi/stringprep_locale_to_utf8.texi
new file mode 100644 (file)
index 0000000..1a49de8
--- /dev/null
@@ -0,0 +1,12 @@
+@subheading stringprep_locale_to_utf8
+@anchor{stringprep_locale_to_utf8}
+@deftypefun {char *} {stringprep_locale_to_utf8} (const char * @var{str})
+@var{str}: input zero terminated string.
+
+Convert string encoded in the locale's character set into UTF-8 by
+using @code{stringprep_convert()}.
+
+@strong{Return value:} Returns newly allocated zero-terminated string which
+is @code{str} transcoded into UTF-8.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_profile.texi b/doc/texi/stringprep_profile.texi
new file mode 100644 (file)
index 0000000..790577f
--- /dev/null
@@ -0,0 +1,29 @@
+@subheading stringprep_profile
+@anchor{stringprep_profile}
+@deftypefun {int} {stringprep_profile} (const char * @var{in}, char ** @var{out}, const char * @var{profile}, Stringprep_profile_flags @var{flags})
+@var{in}: input array with UTF-8 string to prepare.
+
+@var{out}: output variable with pointer to newly allocate string.
+
+@var{profile}: name of stringprep profile to use.
+
+@var{flags}: a @code{Stringprep_profile_flags} value, or 0.
+
+Prepare the input zero terminated UTF-8 string according to the
+stringprep profile, and return the result in a newly allocated
+variable.
+
+Note that you must convert strings entered in the systems locale
+into UTF-8 before using this function, see
+@code{stringprep_locale_to_utf8()}.
+
+The output @code{out} variable must be deallocated by the caller.
+
+The @code{flags} are one of @code{Stringprep_profile_flags} values, or 0.
+
+The @code{profile} specifies the name of the stringprep profile to use.
+It must be one of the internally supported stringprep profiles.
+
+@strong{Return value:} Returns @code{STRINGPREP_OK} iff successful, or an error code.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_strerror.texi b/doc/texi/stringprep_strerror.texi
new file mode 100644 (file)
index 0000000..ee1b067
--- /dev/null
@@ -0,0 +1,50 @@
+@subheading stringprep_strerror
+@anchor{stringprep_strerror}
+@deftypefun {const char *} {stringprep_strerror} (Stringprep_rc @var{rc})
+@var{rc}: a @code{Stringprep_rc} return code.
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{STRINGPREP_OK:} Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{STRINGPREP_CONTAINS_UNASSIGNED:} String contain unassigned Unicode
+code points, which is forbidden by the profile.
+
+@strong{STRINGPREP_CONTAINS_PROHIBITED:} String contain code points
+prohibited by the profile.
+
+@strong{STRINGPREP_BIDI_BOTH_L_AND_RAL:} String contain code points with
+conflicting bidirection category.
+
+@strong{STRINGPREP_BIDI_LEADTRAIL_NOT_RAL:} Leading and trailing character
+in string not of proper bidirectional category.
+
+@strong{STRINGPREP_BIDI_CONTAINS_PROHIBITED:} Contains prohibited code
+points detected by bidirectional code.
+
+@strong{STRINGPREP_TOO_SMALL_BUFFER:} Buffer handed to function was too
+small.  This usually indicate a problem in the calling
+application.
+
+@strong{STRINGPREP_PROFILE_ERROR:} The stringprep profile was inconsistent.
+This usually indicate an internal error in the library.
+
+@strong{STRINGPREP_FLAG_ERROR:} The supplied flag conflicted with profile.
+This usually indicate a problem in the calling application.
+
+@strong{STRINGPREP_UNKNOWN_PROFILE:} The supplied profile name was not
+known to the library.
+
+@strong{STRINGPREP_NFKC_FAILED:} The Unicode NFKC operation failed.  This
+usually indicate an internal error in the library.
+
+@strong{STRINGPREP_MALLOC_ERROR:} The @code{malloc()} was out of memory.  This is
+usually a fatal error.
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_ucs4_nfkc_normalize.texi b/doc/texi/stringprep_ucs4_nfkc_normalize.texi
new file mode 100644 (file)
index 0000000..69bbd06
--- /dev/null
@@ -0,0 +1,14 @@
+@subheading stringprep_ucs4_nfkc_normalize
+@anchor{stringprep_ucs4_nfkc_normalize}
+@deftypefun {uint32_t *} {stringprep_ucs4_nfkc_normalize} (uint32_t * @var{str}, ssize_t @var{len})
+@var{str}: a Unicode string.
+
+@var{len}: length of @code{str} array, or -1 if @code{str} is nul-terminated.
+
+Converts UCS4 string into UTF-8 and runs
+@code{stringprep_utf8_nfkc_normalize()}.
+
+@strong{Return value:} a newly allocated Unicode string, that is the NFKC
+normalized form of @code{str}.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_ucs4_to_utf8.texi b/doc/texi/stringprep_ucs4_to_utf8.texi
new file mode 100644 (file)
index 0000000..d472ac3
--- /dev/null
@@ -0,0 +1,23 @@
+@subheading stringprep_ucs4_to_utf8
+@anchor{stringprep_ucs4_to_utf8}
+@deftypefun {char *} {stringprep_ucs4_to_utf8} (const uint32_t * @var{str}, ssize_t @var{len}, size_t * @var{items_read}, size_t * @var{items_written})
+@var{str}: a UCS-4 encoded string
+
+@var{len}: the maximum length of @code{str} to use. If @code{len} < 0, then
+the string is terminated with a 0 character.
+
+@var{items_read}: location to store number of characters read read, or @code{NULL}.
+
+@var{items_written}: location to store number of bytes written or @code{NULL}.
+The value here stored does not include the trailing 0
+byte.
+
+Convert a string from a 32-bit fixed width representation as UCS-4.
+to UTF-8. The result will be terminated with a 0 byte.
+
+@strong{Return value:} a pointer to a newly allocated UTF-8 string.
+This value must be deallocated by the caller.
+If an error occurs, @code{NULL} will be returned and @code{error}
+set.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_unichar_to_utf8.texi b/doc/texi/stringprep_unichar_to_utf8.texi
new file mode 100644 (file)
index 0000000..435884f
--- /dev/null
@@ -0,0 +1,14 @@
+@subheading stringprep_unichar_to_utf8
+@anchor{stringprep_unichar_to_utf8}
+@deftypefun {int} {stringprep_unichar_to_utf8} (uint32_t @var{c}, char * @var{outbuf})
+@var{c}: a ISO10646 character code
+
+@var{outbuf}: output buffer, must have at least 6 bytes of space.
+If @code{NULL}, the length will be computed and returned
+and nothing will be written to @code{outbuf}.
+
+Converts a single character to UTF-8.
+
+@strong{Return value:} number of bytes written.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_utf8_nfkc_normalize.texi b/doc/texi/stringprep_utf8_nfkc_normalize.texi
new file mode 100644 (file)
index 0000000..dc51a4d
--- /dev/null
@@ -0,0 +1,25 @@
+@subheading stringprep_utf8_nfkc_normalize
+@anchor{stringprep_utf8_nfkc_normalize}
+@deftypefun {char *} {stringprep_utf8_nfkc_normalize} (const char * @var{str}, ssize_t @var{len})
+@var{str}: a UTF-8 encoded string.
+
+@var{len}: length of @code{str}, in bytes, or -1 if @code{str} is nul-terminated.
+
+Converts a string into canonical form, standardizing
+such issues as whether a character with an accent
+is represented as a base character and combining
+accent or as a single precomposed character.
+
+The normalization mode is NFKC (ALL COMPOSE).  It standardizes
+differences that do not affect the text content, such as the
+above-mentioned accent representation. It standardizes the
+"compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
+the standard forms (in this case DIGIT THREE). Formatting
+information may be lost but for most text operations such
+characters should be considered the same. It returns a result with
+composed forms rather than a maximally decomposed form.
+
+@strong{Return value:} a newly allocated string, that is the
+NFKC normalized form of @code{str}.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_utf8_to_locale.texi b/doc/texi/stringprep_utf8_to_locale.texi
new file mode 100644 (file)
index 0000000..9c73b14
--- /dev/null
@@ -0,0 +1,12 @@
+@subheading stringprep_utf8_to_locale
+@anchor{stringprep_utf8_to_locale}
+@deftypefun {char *} {stringprep_utf8_to_locale} (const char * @var{str})
+@var{str}: input zero terminated string.
+
+Convert string encoded in UTF-8 into the locale's character set by
+using @code{stringprep_convert()}.
+
+@strong{Return value:} Returns newly allocated zero-terminated string which
+is @code{str} transcoded into the locale's character set.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_utf8_to_ucs4.texi b/doc/texi/stringprep_utf8_to_ucs4.texi
new file mode 100644 (file)
index 0000000..346d628
--- /dev/null
@@ -0,0 +1,19 @@
+@subheading stringprep_utf8_to_ucs4
+@anchor{stringprep_utf8_to_ucs4}
+@deftypefun {uint32_t *} {stringprep_utf8_to_ucs4} (const char * @var{str}, ssize_t @var{len}, size_t * @var{items_written})
+@var{str}: a UTF-8 encoded string
+
+@var{len}: the maximum length of @code{str} to use. If @code{len} < 0, then
+the string is nul-terminated.
+
+@var{items_written}: location to store the number of characters in the
+result, or @code{NULL}.
+
+Convert a string from UTF-8 to a 32-bit fixed width
+representation as UCS-4, assuming valid UTF-8 input.
+This function does no error checking on the input.
+
+@strong{Return value:} a pointer to a newly allocated UCS-4 string.
+This value must be deallocated by the caller.
+@end deftypefun
+
diff --git a/doc/texi/stringprep_utf8_to_unichar.texi b/doc/texi/stringprep_utf8_to_unichar.texi
new file mode 100644 (file)
index 0000000..5cfd339
--- /dev/null
@@ -0,0 +1,12 @@
+@subheading stringprep_utf8_to_unichar
+@anchor{stringprep_utf8_to_unichar}
+@deftypefun {uint32_t} {stringprep_utf8_to_unichar} (const char * @var{p})
+@var{p}: a pointer to Unicode character encoded as UTF-8
+
+Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
+If @code{p} does not point to a valid UTF-8 encoded character, results are
+undefined.
+
+@strong{Return value:} the resulting character.
+@end deftypefun
+
diff --git a/doc/texi/tld.c.texi b/doc/texi/tld.c.texi
new file mode 100644 (file)
index 0000000..de3891f
--- /dev/null
@@ -0,0 +1,230 @@
+@subheading tld_get_table
+@anchor{tld_get_table}
+@deftypefun {const Tld_table *} {tld_get_table} (const char * @var{tld}, const Tld_table ** @var{tables})
+@var{tld}: TLD name (e.g. "com") as zero terminated ASCII byte string.
+
+@var{tables}: Zero terminated array of @code{Tld_table} info-structures for
+TLDs.
+
+Get the TLD table for a named TLD by searching through the given
+TLD table array.
+
+@strong{Return value:} Return structure corresponding to TLD @code{tld} by going
+thru @code{tables}, or return @code{NULL} if no such structure is found.
+@end deftypefun
+
+@subheading tld_default_table
+@anchor{tld_default_table}
+@deftypefun {const Tld_table *} {tld_default_table} (const char * @var{tld}, const Tld_table ** @var{overrides})
+@var{tld}: TLD name (e.g. "com") as zero terminated ASCII byte string.
+
+@var{overrides}: Additional zero terminated array of @code{Tld_table}
+info-structures for TLDs, or @code{NULL} to only use library deault
+tables.
+
+Get the TLD table for a named TLD, using the internal defaults,
+possibly overrided by the (optional) supplied tables.
+
+@strong{Return value:} Return structure corresponding to TLD @code{tld_str}, first
+looking through @code{overrides} then thru built-in list, or @code{NULL} if
+no such structure found.
+@end deftypefun
+
+@subheading tld_get_4
+@anchor{tld_get_4}
+@deftypefun {int} {tld_get_4} (const uint32_t * @var{in}, size_t @var{inlen}, char ** @var{out})
+@var{in}: Array of unicode code points to process. Does not need to be
+zero terminated.
+
+@var{inlen}: Number of unicode code points.
+
+@var{out}: Zero terminated ascii result string pointer.
+
+Isolate the top-level domain of @code{in} and return it as an ASCII
+string in @code{out}.
+
+@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding
+@code{Tld_rc} error code otherwise.
+@end deftypefun
+
+@subheading tld_get_4z
+@anchor{tld_get_4z}
+@deftypefun {int} {tld_get_4z} (const uint32_t * @var{in}, char ** @var{out})
+@var{in}: Zero terminated array of unicode code points to process.
+
+@var{out}: Zero terminated ascii result string pointer.
+
+Isolate the top-level domain of @code{in} and return it as an ASCII
+string in @code{out}.
+
+@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding
+@code{Tld_rc} error code otherwise.
+@end deftypefun
+
+@subheading tld_get_z
+@anchor{tld_get_z}
+@deftypefun {int} {tld_get_z} (const char * @var{in}, char ** @var{out})
+@var{in}: Zero terminated character array to process.
+
+@var{out}: Zero terminated ascii result string pointer.
+
+Isolate the top-level domain of @code{in} and return it as an ASCII
+string in @code{out}.  The input string @code{in} may be UTF-8, ISO-8859-1 or
+any ASCII compatible character encoding.
+
+@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding
+@code{Tld_rc} error code otherwise.
+@end deftypefun
+
+@subheading tld_check_4t
+@anchor{tld_check_4t}
+@deftypefun {int} {tld_check_4t} (const uint32_t * @var{in}, size_t @var{inlen}, size_t * @var{errpos}, const Tld_table * @var{tld})
+@var{in}: Array of unicode code points to process. Does not need to be
+zero terminated.
+
+@var{inlen}: Number of unicode code points.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{tld}: A @code{Tld_table} data structure representing the restrictions for
+which the input should be tested.
+
+Test each of the code points in @code{in} for whether or not
+they are allowed by the data structure in @code{tld}, return
+the position of the first character for which this is not
+the case in @code{errpos}.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code
+points are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
+@subheading tld_check_4tz
+@anchor{tld_check_4tz}
+@deftypefun {int} {tld_check_4tz} (const uint32_t * @var{in}, size_t * @var{errpos}, const Tld_table * @var{tld})
+@var{in}: Zero terminated array of unicode code points to process.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{tld}: A @code{Tld_table} data structure representing the restrictions for
+which the input should be tested.
+
+Test each of the code points in @code{in} for whether or not
+they are allowed by the data structure in @code{tld}, return
+the position of the first character for which this is not
+the case in @code{errpos}.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code
+points are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
+@subheading tld_check_4
+@anchor{tld_check_4}
+@deftypefun {int} {tld_check_4} (const uint32_t * @var{in}, size_t @var{inlen}, size_t * @var{errpos}, const Tld_table ** @var{overrides})
+@var{in}: Array of unicode code points to process. Does not need to be
+zero terminated.
+
+@var{inlen}: Number of unicode code points.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{overrides}: A @code{Tld_table} array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+Test each of the code points in @code{in} for whether or not they are
+allowed by the information in @code{overrides} or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in @code{overrides}, the information in @code{overrides} takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If @code{overrides} is @code{NULL}, only the built-in
+information is used.  The position of the first offending character
+is returned in @code{errpos}.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code
+points are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
+@subheading tld_check_4z
+@anchor{tld_check_4z}
+@deftypefun {int} {tld_check_4z} (const uint32_t * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides})
+@var{in}: Zero-terminated array of unicode code points to process.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{overrides}: A @code{Tld_table} array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+Test each of the code points in @code{in} for whether or not they are
+allowed by the information in @code{overrides} or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in @code{overrides}, the information in @code{overrides} takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If @code{overrides} is @code{NULL}, only the built-in
+information is used.  The position of the first offending character
+is returned in @code{errpos}.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code
+points are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
+@subheading tld_check_8z
+@anchor{tld_check_8z}
+@deftypefun {int} {tld_check_8z} (const char * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides})
+@var{in}: Zero-terminated UTF8 string to process.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{overrides}: A @code{Tld_table} array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+Test each of the characters in @code{in} for whether or not they are
+allowed by the information in @code{overrides} or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in @code{overrides}, the information in @code{overrides} takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If @code{overrides} is @code{NULL}, only the built-in
+information is used.  The position of the first offending character
+is returned in @code{errpos}.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all
+characters are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
+@subheading tld_check_lz
+@anchor{tld_check_lz}
+@deftypefun {int} {tld_check_lz} (const char * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides})
+@var{in}: Zero-terminated string in the current locales encoding to process.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{overrides}: A @code{Tld_table} array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+Test each of the characters in @code{in} for whether or not they are
+allowed by the information in @code{overrides} or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in @code{overrides}, the information in @code{overrides} takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If @code{overrides} is @code{NULL}, only the built-in
+information is used.  The position of the first offending character
+is returned in @code{errpos}.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all
+characters are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
diff --git a/doc/texi/tld_check_4.texi b/doc/texi/tld_check_4.texi
new file mode 100644 (file)
index 0000000..3790b39
--- /dev/null
@@ -0,0 +1,28 @@
+@subheading tld_check_4
+@anchor{tld_check_4}
+@deftypefun {int} {tld_check_4} (const uint32_t * @var{in}, size_t @var{inlen}, size_t * @var{errpos}, const Tld_table ** @var{overrides})
+@var{in}: Array of unicode code points to process. Does not need to be
+zero terminated.
+
+@var{inlen}: Number of unicode code points.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{overrides}: A @code{Tld_table} array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+Test each of the code points in @code{in} for whether or not they are
+allowed by the information in @code{overrides} or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in @code{overrides}, the information in @code{overrides} takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If @code{overrides} is @code{NULL}, only the built-in
+information is used.  The position of the first offending character
+is returned in @code{errpos}.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code
+points are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
diff --git a/doc/texi/tld_check_4t.texi b/doc/texi/tld_check_4t.texi
new file mode 100644 (file)
index 0000000..7e55195
--- /dev/null
@@ -0,0 +1,24 @@
+@subheading tld_check_4t
+@anchor{tld_check_4t}
+@deftypefun {int} {tld_check_4t} (const uint32_t * @var{in}, size_t @var{inlen}, size_t * @var{errpos}, const Tld_table * @var{tld})
+@var{in}: Array of unicode code points to process. Does not need to be
+zero terminated.
+
+@var{inlen}: Number of unicode code points.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{tld}: A @code{Tld_table} data structure representing the restrictions for
+which the input should be tested.
+
+Test each of the code points in @code{in} for whether or not
+they are allowed by the data structure in @code{tld}, return
+the position of the first character for which this is not
+the case in @code{errpos}.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code
+points are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
diff --git a/doc/texi/tld_check_4tz.texi b/doc/texi/tld_check_4tz.texi
new file mode 100644 (file)
index 0000000..fc7da3c
--- /dev/null
@@ -0,0 +1,21 @@
+@subheading tld_check_4tz
+@anchor{tld_check_4tz}
+@deftypefun {int} {tld_check_4tz} (const uint32_t * @var{in}, size_t * @var{errpos}, const Tld_table * @var{tld})
+@var{in}: Zero terminated array of unicode code points to process.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{tld}: A @code{Tld_table} data structure representing the restrictions for
+which the input should be tested.
+
+Test each of the code points in @code{in} for whether or not
+they are allowed by the data structure in @code{tld}, return
+the position of the first character for which this is not
+the case in @code{errpos}.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code
+points are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
diff --git a/doc/texi/tld_check_4z.texi b/doc/texi/tld_check_4z.texi
new file mode 100644 (file)
index 0000000..5158989
--- /dev/null
@@ -0,0 +1,25 @@
+@subheading tld_check_4z
+@anchor{tld_check_4z}
+@deftypefun {int} {tld_check_4z} (const uint32_t * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides})
+@var{in}: Zero-terminated array of unicode code points to process.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{overrides}: A @code{Tld_table} array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+Test each of the code points in @code{in} for whether or not they are
+allowed by the information in @code{overrides} or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in @code{overrides}, the information in @code{overrides} takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If @code{overrides} is @code{NULL}, only the built-in
+information is used.  The position of the first offending character
+is returned in @code{errpos}.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all code
+points are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
diff --git a/doc/texi/tld_check_8z.texi b/doc/texi/tld_check_8z.texi
new file mode 100644 (file)
index 0000000..17b42e3
--- /dev/null
@@ -0,0 +1,27 @@
+@subheading tld_check_8z
+@anchor{tld_check_8z}
+@deftypefun {int} {tld_check_8z} (const char * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides})
+@var{in}: Zero-terminated UTF8 string to process.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{overrides}: A @code{Tld_table} array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+Test each of the characters in @code{in} for whether or not they are
+allowed by the information in @code{overrides} or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in @code{overrides}, the information in @code{overrides} takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If @code{overrides} is @code{NULL}, only the built-in
+information is used.  The position of the first offending character
+is returned in @code{errpos}.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all
+characters are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
diff --git a/doc/texi/tld_check_lz.texi b/doc/texi/tld_check_lz.texi
new file mode 100644 (file)
index 0000000..7e83d4a
--- /dev/null
@@ -0,0 +1,27 @@
+@subheading tld_check_lz
+@anchor{tld_check_lz}
+@deftypefun {int} {tld_check_lz} (const char * @var{in}, size_t * @var{errpos}, const Tld_table ** @var{overrides})
+@var{in}: Zero-terminated string in the current locales encoding to process.
+
+@var{errpos}: Position of offending character is returned here.
+
+@var{overrides}: A @code{Tld_table} array of additional domain restriction
+structures that complement and supersede the built-in information.
+
+Test each of the characters in @code{in} for whether or not they are
+allowed by the information in @code{overrides} or by the built-in TLD
+restriction data. When data for the same TLD is available both
+internally and in @code{overrides}, the information in @code{overrides} takes
+precedence. If several entries for a specific TLD are found, the
+first one is used.  If @code{overrides} is @code{NULL}, only the built-in
+information is used.  The position of the first offending character
+is returned in @code{errpos}.  Note that the error position refers to the
+decoded character offset rather than the byte position in the
+string.
+
+@strong{Return value:} Returns the @code{Tld_rc} value @code{TLD_SUCCESS} if all
+characters are valid or when @code{tld} is null, @code{TLD_INVALID} if a
+character is not allowed, or additional error codes on general
+failure conditions.
+@end deftypefun
+
diff --git a/doc/texi/tld_default_table.texi b/doc/texi/tld_default_table.texi
new file mode 100644 (file)
index 0000000..408a149
--- /dev/null
@@ -0,0 +1,17 @@
+@subheading tld_default_table
+@anchor{tld_default_table}
+@deftypefun {const Tld_table *} {tld_default_table} (const char * @var{tld}, const Tld_table ** @var{overrides})
+@var{tld}: TLD name (e.g. "com") as zero terminated ASCII byte string.
+
+@var{overrides}: Additional zero terminated array of @code{Tld_table}
+info-structures for TLDs, or @code{NULL} to only use library deault
+tables.
+
+Get the TLD table for a named TLD, using the internal defaults,
+possibly overrided by the (optional) supplied tables.
+
+@strong{Return value:} Return structure corresponding to TLD @code{tld_str}, first
+looking through @code{overrides} then thru built-in list, or @code{NULL} if
+no such structure found.
+@end deftypefun
+
diff --git a/doc/texi/tld_get_4.texi b/doc/texi/tld_get_4.texi
new file mode 100644 (file)
index 0000000..60fda1b
--- /dev/null
@@ -0,0 +1,17 @@
+@subheading tld_get_4
+@anchor{tld_get_4}
+@deftypefun {int} {tld_get_4} (const uint32_t * @var{in}, size_t @var{inlen}, char ** @var{out})
+@var{in}: Array of unicode code points to process. Does not need to be
+zero terminated.
+
+@var{inlen}: Number of unicode code points.
+
+@var{out}: Zero terminated ascii result string pointer.
+
+Isolate the top-level domain of @code{in} and return it as an ASCII
+string in @code{out}.
+
+@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding
+@code{Tld_rc} error code otherwise.
+@end deftypefun
+
diff --git a/doc/texi/tld_get_4z.texi b/doc/texi/tld_get_4z.texi
new file mode 100644 (file)
index 0000000..e241079
--- /dev/null
@@ -0,0 +1,14 @@
+@subheading tld_get_4z
+@anchor{tld_get_4z}
+@deftypefun {int} {tld_get_4z} (const uint32_t * @var{in}, char ** @var{out})
+@var{in}: Zero terminated array of unicode code points to process.
+
+@var{out}: Zero terminated ascii result string pointer.
+
+Isolate the top-level domain of @code{in} and return it as an ASCII
+string in @code{out}.
+
+@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding
+@code{Tld_rc} error code otherwise.
+@end deftypefun
+
diff --git a/doc/texi/tld_get_table.texi b/doc/texi/tld_get_table.texi
new file mode 100644 (file)
index 0000000..b647d16
--- /dev/null
@@ -0,0 +1,15 @@
+@subheading tld_get_table
+@anchor{tld_get_table}
+@deftypefun {const Tld_table *} {tld_get_table} (const char * @var{tld}, const Tld_table ** @var{tables})
+@var{tld}: TLD name (e.g. "com") as zero terminated ASCII byte string.
+
+@var{tables}: Zero terminated array of @code{Tld_table} info-structures for
+TLDs.
+
+Get the TLD table for a named TLD by searching through the given
+TLD table array.
+
+@strong{Return value:} Return structure corresponding to TLD @code{tld} by going
+thru @code{tables}, or return @code{NULL} if no such structure is found.
+@end deftypefun
+
diff --git a/doc/texi/tld_get_z.texi b/doc/texi/tld_get_z.texi
new file mode 100644 (file)
index 0000000..1ff5b02
--- /dev/null
@@ -0,0 +1,15 @@
+@subheading tld_get_z
+@anchor{tld_get_z}
+@deftypefun {int} {tld_get_z} (const char * @var{in}, char ** @var{out})
+@var{in}: Zero terminated character array to process.
+
+@var{out}: Zero terminated ascii result string pointer.
+
+Isolate the top-level domain of @code{in} and return it as an ASCII
+string in @code{out}.  The input string @code{in} may be UTF-8, ISO-8859-1 or
+any ASCII compatible character encoding.
+
+@strong{Return value:} Return @code{TLD_SUCCESS} on success, or the corresponding
+@code{Tld_rc} error code otherwise.
+@end deftypefun
+
diff --git a/doc/texi/tld_strerror.texi b/doc/texi/tld_strerror.texi
new file mode 100644 (file)
index 0000000..3eeb9c2
--- /dev/null
@@ -0,0 +1,26 @@
+@subheading tld_strerror
+@anchor{tld_strerror}
+@deftypefun {const char *} {tld_strerror} (Tld_rc @var{rc})
+@var{rc}: tld return code
+
+Convert a return code integer to a text string.  This string can be
+used to output a diagnostic message to the user.
+
+@strong{TLD_SUCCESS:} Successful operation.  This value is guaranteed to
+always be zero, the remaining ones are only guaranteed to hold
+non-zero values, for logical comparison purposes.
+
+@strong{TLD_INVALID:} Invalid character found.
+
+@strong{TLD_NODATA:} No input data was provided.
+
+@strong{TLD_MALLOC_ERROR:} Error during memory allocation.
+
+@strong{TLD_ICONV_ERROR:} Error during iconv string conversion.
+
+@strong{TLD_NO_TLD:} No top-level domain found in domain string.
+
+@strong{Return value:} Returns a pointer to a statically allocated string
+containing a description of the error with the return code @code{rc}.
+@end deftypefun
+
diff --git a/doc/texi/toutf8.c.texi b/doc/texi/toutf8.c.texi
new file mode 100644 (file)
index 0000000..7fc7d28
--- /dev/null
@@ -0,0 +1,62 @@
+@subheading stringprep_locale_charset
+@anchor{stringprep_locale_charset}
+@deftypefun {const char *} {stringprep_locale_charset} ( @var{void})
+
+Find out current locale charset.  The function respect the CHARSET
+environment variable, but typically uses nl_langinfo(CODESET) when
+it is supported.  It fall back on "ASCII" if CHARSET isn't set and
+nl_langinfo isn't supported or return anything.
+
+Note that this function return the application's locale's preferred
+charset (or thread's locale's preffered charset, if your system
+support thread-specific locales).  It does not return what the
+system may be using.  Thus, if you receive data from external
+sources you cannot in general use this function to guess what
+charset it is encoded in.  Use stringprep_convert from the external
+representation into the charset returned by this function, to have
+data in the locale encoding.
+
+@strong{Return value:} Return the character set used by the current locale.
+It will never return NULL, but use "ASCII" as a fallback.
+@end deftypefun
+
+@subheading stringprep_convert
+@anchor{stringprep_convert}
+@deftypefun {char *} {stringprep_convert} (const char * @var{str}, const char * @var{to_codeset}, const char * @var{from_codeset})
+@var{str}: input zero-terminated string.
+
+@var{to_codeset}: name of destination character set.
+
+@var{from_codeset}: name of origin character set, as used by @code{str}.
+
+Convert the string from one character set to another using the
+system's @code{iconv()} function.
+
+@strong{Return value:} Returns newly allocated zero-terminated string which
+is @code{str} transcoded into to_codeset.
+@end deftypefun
+
+@subheading stringprep_locale_to_utf8
+@anchor{stringprep_locale_to_utf8}
+@deftypefun {char *} {stringprep_locale_to_utf8} (const char * @var{str})
+@var{str}: input zero terminated string.
+
+Convert string encoded in the locale's character set into UTF-8 by
+using @code{stringprep_convert()}.
+
+@strong{Return value:} Returns newly allocated zero-terminated string which
+is @code{str} transcoded into UTF-8.
+@end deftypefun
+
+@subheading stringprep_utf8_to_locale
+@anchor{stringprep_utf8_to_locale}
+@deftypefun {char *} {stringprep_utf8_to_locale} (const char * @var{str})
+@var{str}: input zero terminated string.
+
+Convert string encoded in UTF-8 into the locale's character set by
+using @code{stringprep_convert()}.
+
+@strong{Return value:} Returns newly allocated zero-terminated string which
+is @code{str} transcoded into the locale's character set.
+@end deftypefun
+
diff --git a/doc/texi/version.c.texi b/doc/texi/version.c.texi
new file mode 100644 (file)
index 0000000..2ba59d2
--- /dev/null
@@ -0,0 +1,16 @@
+@subheading stringprep_check_version
+@anchor{stringprep_check_version}
+@deftypefun {const char *} {stringprep_check_version} (const char * @var{req_version})
+@var{req_version}: Required version number, or NULL.
+
+Check that the version of the library is at minimum the requested one
+and return the version string; return NULL if the condition is not
+satisfied.  If a NULL is passed to this function, no check is done,
+but the version string is simply returned.
+
+See @code{STRINGPREP_VERSION} for a suitable @code{req_version} string.
+
+@strong{Return value:} Version string of run-time library, or NULL if the
+run-time library does not meet the required version number.
+@end deftypefun
+
diff --git a/doc/texinfo.css b/doc/texinfo.css
new file mode 100644 (file)
index 0000000..96df89e
--- /dev/null
@@ -0,0 +1,44 @@
+body { 
+       margin: 2%;
+       padding: 0 5%;
+       background: #ffffff;
+}
+h1,h2,h3,h4,h5 {
+    font-weight: bold;
+    padding: 5px 5px 5px 5px;
+    background-color: #c2e0ff;
+    color: #336699;
+}
+h1 {
+    padding: 2em 2em 2em 5%;
+    color: white;
+    background: #336699;
+    text-align: center;
+    letter-spacing: 3px;
+}
+h2 { text-decoration: underline; }
+pre {
+  margin: 0 5%;
+  padding: 0.5em;
+}
+pre.example {
+  border: solid 1px;
+  background: #eeeeff;
+  padding-bottom: 1em;
+}
+pre.verbatim {
+  border: solid 1px gray;
+  background: white;
+  padding-bottom: 1em;
+}
+div.node {
+  margin: 0 -5% 0 -2%;
+  padding: 0.5em 0.5em;
+  margin-top: 0.5em;
+  margin-bottom: 0.5em;
+  font-weight: bold;
+}
+dd, li {
+  padding-top: 0.1em;
+  padding-bottom: 0.1em;
+}
diff --git a/doc/tld/Makefile.am b/doc/tld/Makefile.am
new file mode 100644 (file)
index 0000000..b8de3ce
--- /dev/null
@@ -0,0 +1,20 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson.
+# Copyright (C) 2004  Free Software Foundation, Inc
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+EXTRA_DIST = README fr.tld no.tld
diff --git a/doc/tld/Makefile.in b/doc/tld/Makefile.in
new file mode 100644 (file)
index 0000000..1e207ad
--- /dev/null
@@ -0,0 +1,667 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson.
+# Copyright (C) 2004  Free Software Foundation, Inc
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc/tld
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = README fr.tld no.tld
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/tld/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu doc/tld/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/tld/README b/doc/tld/README
new file mode 100644 (file)
index 0000000..3433bf6
--- /dev/null
@@ -0,0 +1,45 @@
+Libidn doc/tld/README -- Notes and definition of the TLD tables.
+Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+Copyright (C) 2004  Free Software Foundation, Inc
+See the end for copying conditions.
+
+This directory contain tables that specify which characters are valid
+for each TLD.  Each table is stored in a file XX.tld where XX doesn't
+really matter, but is recommended to be the TLD name.  For example,
+the TLD table for .FR is stored in the file "fr.tld".
+
+The library finds all files matching *.tld automatically, so if you
+install a file you only need to remove lib/tlds.c and type 'make' and
+it will be incorporated in the library.
+
+Experimental tables for various TLDs can be found at
+<http://tldchk.berlios.de>.
+
+The format for the files are as follows.  Empty lines or those
+starting with '#' are ignored.  It is highly recommended to discuss
+matters in a comment; to give the URL to the source of the table,
+mention the copyright and copying conditions of the tables, etc.
+Normal lines consist of valid Unicode code points for the TLD,
+expressed as single numbers (like 123, 0xff, 0100) or inclusive
+intervals (112-344 0xff-0100) using the usual C decimal, octal or hex
+notations.
+
+Each TLD file must contain one line on the format 'tld XX'.  The XX
+should be the TLD name that the file defines.  This is the string that
+is used in the generated C source code.
+
+If definitions are shared among several TLDs or are constructed from
+standard Unicode blocks, put the building blocks in a file of its own
+and include it using 'include FILENAME' on a line by itself.
+
+All files, even included files, MUST contain a line 'version FOO'
+where FOO is a human readable string that should be possible to use in
+a string comparison to detect when the table has changed.  The version
+number must be changed whenever a backwards incompatible change is
+made to the file.  Don't change the version number just because the
+comments are changed, or there is a new release of the library.
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/doc/tld/fr.tld b/doc/tld/fr.tld
new file mode 100644 (file)
index 0000000..720b420
--- /dev/null
@@ -0,0 +1,86 @@
+# Copyright (C) 2004 Simon Josefsson
+# Copyright (C) 2003 Stephane Bortzmeyer <bortzmeyer@nic.fr> / AFNIC
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.
+
+version "1.0"
+tld fr
+# Variant table for the French language
+# See Internet-Draft draft-hoffman-idn-reg-00
+#
+# Designed at AFNIC
+
+# This table is built by starting from the characters that are
+# actually used in French.
+
+# a-z
+# a and its variants : à â
+# á (a acute) does not seem to exist in French: for further study (town names?)
+# a with ring above <U+00E5> does not exist in french but in picard
+# <URL:http://www.picard.free.fr/lgpic/a-e.htm>
+U+0061|U+00E0:U+00E2
+U+0062
+# c and ç
+U+0063|U+00E7
+U+0064
+# e and its variants : è é ê ë
+U+0065|U+00E8:U+00E9:U+00EA:U+00EB
+U+0066
+U+0067
+U+0068
+# i and its variants : î ï
+U+0069|U+00EE:U+00EF
+U+006A
+U+006B
+U+006C
+U+006D
+# n
+# ñ <U+00F1> does not exist in french but in breton
+# <URL:http://www.ouest-france.fr/dossiershtm/cours-de-breton/lecture.htm>
+# or in basque.
+U+006E
+# o and its variants : ô. ö <U+00F6> exists in French? No word uses 
+# it.
+# ò <U+00F2> does not exist in french but in occitan
+# <URL:http://occitanet.free.fr/fr/index.html>
+U+006F|U+00F4
+U+0070
+U+0071
+U+0072
+U+0073
+U+0074
+# u and its variants : ù û ü
+# ú (u acute) does not seem to exist in French: for further study
+U+0075|U+00F9:U+00FB:U+00FC
+U+0076
+U+0077
+U+0078
+# y. ÿ only in names? (L'Haÿ-les-Roses)
+U+0079|U+00FF
+U+007A
+# 0-9
+U+0030
+U+0031
+U+0032
+U+0033
+U+0034
+U+0035
+U+0036
+U+0037
+U+0038
+U+0039
+# - (hyphen)
+U+002D
+# Ligature ae (æ). Only in names like Lætitia?
+U+00E6|U+0061U+0065
+# Ligature oe (not in Latin-1)
+U+0153|U+006FU+0065
+
+# Some references:
+# http://www.sdv.fr/orthonet/pages/informations_p6.html
+# regional languages
+# http://www.ouest-france.fr/dossiershtm/cours-de-breton/lecture.htm
+# http://occitanet.free.fr/fr/index.html
+# http://www.picard.free.fr/lgpic/a-e.htm
diff --git a/doc/tld/no.tld b/doc/tld/no.tld
new file mode 100644 (file)
index 0000000..ff6ae27
--- /dev/null
@@ -0,0 +1,59 @@
+# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+# Author: Thomas Jacob, Internet24.de.
+
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice, this notice and the source URL list below are preserved.
+
+# See http://www.norid.no/domeneregistrering/idn/idn_nyetegn.html
+# http://www.norid.no/regelverk/forslag/idn-2003/index.en.html
+# http://www.norid.no/regelverk/forslag/idn-2003/2003-02-18.en.html
+
+# --- snip ---
+#
+# From Hilde.Thunem at uninett.no Tue Mar  9 14:12:49 2004
+# Message-Id: <200403091312.i29DClR3028354 at valgrind.uninett.no>
+# Subject: Re: NI2004012700128 Copyright of IDN character set tables
+#
+# Hi.
+#
+# You may use the character list freely. The only thing we would ask of you is
+# that you give some reference as to where you have found it. This is to ensure
+# that people that want to see the latest updated list know where to go (it may
+# change if the languages changes - although I doubt that will happen). It also
+# gives the opportunity for those interested in the background for why those
+# characters have been chosen (e.g. that the language councils of Norway has
+# been involved) to read about the process.
+#
+# Kind regards,
+# Hilde Thunem
+# NORID
+#
+# --- snap ---
+
+version "1.0"
+tld no
+
+U+00E1 # a med akutt aksent / á 00E1
+U+00E0 # a med gravis-aksent / à 00E0
+U+00E4 # a med omlyd / ä 00E4
+U+010D # c med caron
+U+00E7 # c med cedille / ç 00E7
+U+0111 # d med strek
+U+00E9 # e med akutt aksent / é
+U+00E8 # e med gravis-aksent / è
+U+00EA # e med circumflex-aksent / ê
+U+014B # eng
+U+0144 # n med akutt aksent
+U+00F1 # n med tilde / ñ
+U+00F3 # o med akutt aksent / ó
+U+00F2 # o med gravis-aksent / ò
+U+00F4 # o med circumflex-aksent / ô
+U+00F6 # o med omlyd / ö
+U+0161 # s med caron
+U+0167 # t med strek
+U+00FC # u med omlyd / ü
+U+017E # z med caron
+U+00E6 # æ
+U+00F8 # ø
+U+00E5 # å
diff --git a/doc/version.texi b/doc/version.texi
new file mode 100644 (file)
index 0000000..1001413
--- /dev/null
@@ -0,0 +1,4 @@
+@set UPDATED 28 May 2009
+@set UPDATED-MONTH May 2009
+@set EDITION 1.15
+@set VERSION 1.15
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644 (file)
index 0000000..218db74
--- /dev/null
@@ -0,0 +1,28 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+EXTRA_DIST = README
+
+AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib
+LDADD = ../lib/libidn.la
+
+noinst_PROGRAMS = example example2 example3 example4
+if TLD
+noinst_PROGRAMS += example5
+endif
diff --git a/examples/Makefile.in b/examples/Makefile.in
new file mode 100644 (file)
index 0000000..865bebd
--- /dev/null
@@ -0,0 +1,821 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+noinst_PROGRAMS = example$(EXEEXT) example2$(EXEEXT) example3$(EXEEXT) \
+       example4$(EXEEXT) $(am__EXEEXT_1)
+@TLD_TRUE@am__append_1 = example5
+subdir = examples
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+@TLD_TRUE@am__EXEEXT_1 = example5$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+example_SOURCES = example.c
+example_OBJECTS = example.$(OBJEXT)
+example_LDADD = $(LDADD)
+example_DEPENDENCIES = ../lib/libidn.la
+example2_SOURCES = example2.c
+example2_OBJECTS = example2.$(OBJEXT)
+example2_LDADD = $(LDADD)
+example2_DEPENDENCIES = ../lib/libidn.la
+example3_SOURCES = example3.c
+example3_OBJECTS = example3.$(OBJEXT)
+example3_LDADD = $(LDADD)
+example3_DEPENDENCIES = ../lib/libidn.la
+example4_SOURCES = example4.c
+example4_OBJECTS = example4.$(OBJEXT)
+example4_LDADD = $(LDADD)
+example4_DEPENDENCIES = ../lib/libidn.la
+example5_SOURCES = example5.c
+example5_OBJECTS = example5.$(OBJEXT)
+example5_LDADD = $(LDADD)
+example5_DEPENDENCIES = ../lib/libidn.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = example.c example2.c example3.c example4.c example5.c
+DIST_SOURCES = example.c example2.c example3.c example4.c example5.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = README
+AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib
+LDADD = ../lib/libidn.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu examples/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) 
+       @rm -f example$(EXEEXT)
+       $(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS)
+example2$(EXEEXT): $(example2_OBJECTS) $(example2_DEPENDENCIES) 
+       @rm -f example2$(EXEEXT)
+       $(LINK) $(example2_OBJECTS) $(example2_LDADD) $(LIBS)
+example3$(EXEEXT): $(example3_OBJECTS) $(example3_DEPENDENCIES) 
+       @rm -f example3$(EXEEXT)
+       $(LINK) $(example3_OBJECTS) $(example3_LDADD) $(LIBS)
+example4$(EXEEXT): $(example4_OBJECTS) $(example4_DEPENDENCIES) 
+       @rm -f example4$(EXEEXT)
+       $(LINK) $(example4_OBJECTS) $(example4_LDADD) $(LIBS)
+example5$(EXEEXT): $(example5_OBJECTS) $(example5_DEPENDENCIES) 
+       @rm -f example5$(EXEEXT)
+       $(LINK) $(example5_OBJECTS) $(example5_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example3.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example5.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstPROGRAMS ctags distclean \
+       distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+       pdf pdf-am ps ps-am tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/README b/examples/README
new file mode 100644 (file)
index 0000000..103d844
--- /dev/null
@@ -0,0 +1,28 @@
+Libidn examples/README -- Information about files in examples/ directory.
+Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+See the end for copying conditions.
+
+This directory contains examples on how to use Libidn.
+
+* Example 1::          Example using stringprep.
+This example demonstrates how the stringprep functions are used.
+
+* Example 2::          Example using punycode.
+This example demonstrates how the punycode functions are used.
+
+* Example 3::          Example using IDNA ToASCII.
+This example demonstrates how the library is used to convert
+internationalized domain names into ASCII compatible names.
+
+* Example 4::          Example using IDNA ToUnicode.
+This example demonstrates how the library is used to convert ASCII
+compatible names to internationalized domain names.
+
+* Example 5::          Example using TLD checking.
+This example demonstrates how the library is used to check a string
+for invalid characters within a specific TLD.
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/examples/example.c b/examples/example.c
new file mode 100644 (file)
index 0000000..bd093b1
--- /dev/null
@@ -0,0 +1,85 @@
+/* example.c --- Example code showing how to use stringprep().
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>            /* setlocale() */
+#include <stringprep.h>
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example example.c `pkg-config --cflags --libs libidn`
+ * $ ./example
+ * Input string encoded as `ISO-8859-1': ª
+ * Before locale2utf8 (length 2): aa 0a
+ * Before stringprep (length 3): c2 aa 0a
+ * After stringprep (length 2): 61 0a
+ * $
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  int rc;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+
+  printf ("Input string encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+
+  printf ("Before locale2utf8 (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  p = stringprep_locale_to_utf8 (buf);
+  if (p)
+    {
+      strcpy (buf, p);
+      free (p);
+    }
+  else
+    printf ("Could not convert string to UTF-8, continuing anyway...\n");
+
+  printf ("Before stringprep (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  rc = stringprep (buf, BUFSIZ, 0, stringprep_nameprep);
+  if (rc != STRINGPREP_OK)
+    printf ("Stringprep failed (%d): %s\n", rc, stringprep_strerror (rc));
+  else
+    {
+      printf ("After stringprep (length %d): ", strlen (buf));
+      for (i = 0; i < strlen (buf); i++)
+       printf ("%02x ", buf[i] & 0xFF);
+      printf ("\n");
+    }
+
+  return 0;
+}
diff --git a/examples/example2.c b/examples/example2.c
new file mode 100644 (file)
index 0000000..df1a10e
--- /dev/null
@@ -0,0 +1,233 @@
+/* example2.c --- Example code showing how to use punycode.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ * Copyright (C) 2002  Adam M. Costello
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <locale.h>            /* setlocale() */
+
+/*
+ * This file is derived from RFC 3492 written by Adam M. Costello.
+ *
+ * Disclaimer and license: Regarding this entire document or any
+ * portion of it (including the pseudocode and C code), the author
+ * makes no guarantees and is not responsible for any damage resulting
+ * from its use.  The author grants irrevocable permission to anyone
+ * to use, modify, and distribute it in any way that does not diminish
+ * the rights of anyone else to use, modify, and distribute it,
+ * provided that redistributed derivative works do not contain
+ * misleading author or version information.  Derivative works need
+ * not be licensed under similar terms.
+ *
+ */
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <punycode.h>
+
+/* For testing, we'll just set some compile-time limits rather than */
+/* use malloc(), and set a compile-time option rather than using a  */
+/* command-line option.                                             */
+
+enum
+{
+  unicode_max_length = 256,
+  ace_max_length = 256
+};
+
+static void
+usage (char **argv)
+{
+  fprintf (stderr,
+          "\n"
+          "%s -e reads code points and writes a Punycode string.\n"
+          "%s -d reads a Punycode string and writes code points.\n"
+          "\n"
+          "Input and output are plain text in the native character set.\n"
+          "Code points are in the form u+hex separated by whitespace.\n"
+          "Although the specification allows Punycode strings to contain\n"
+          "any characters from the ASCII repertoire, this test code\n"
+          "supports only the printable characters, and needs the Punycode\n"
+          "string to be followed by a newline.\n"
+          "The case of the u in u+hex is the force-to-uppercase flag.\n",
+          argv[0], argv[0]);
+  exit (EXIT_FAILURE);
+}
+
+static void
+fail (const char *msg)
+{
+  fputs (msg, stderr);
+  exit (EXIT_FAILURE);
+}
+
+static const char too_big[] =
+  "input or output is too large, recompile with larger limits\n";
+static const char invalid_input[] = "invalid input\n";
+static const char overflow[] = "arithmetic overflow\n";
+static const char io_error[] = "I/O error\n";
+
+/* The following string is used to convert printable */
+/* characters between ASCII and the native charset:  */
+
+static const char print_ascii[] = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" " !\"#$%&'()*+,-./" "0123456789:;<=>?" "\0x40" /* at sign */
+  "ABCDEFGHIJKLMNO"
+  "PQRSTUVWXYZ[\\]^_" "`abcdefghijklmno" "pqrstuvwxyz{|}~\n";
+
+int
+main (int argc, char **argv)
+{
+  enum punycode_status status;
+  int r;
+  size_t input_length, output_length, j;
+  unsigned char case_flags[unicode_max_length];
+
+  setlocale (LC_ALL, "");
+
+  if (argc != 2)
+    usage (argv);
+  if (argv[1][0] != '-')
+    usage (argv);
+  if (argv[1][2] != 0)
+    usage (argv);
+
+  if (argv[1][1] == 'e')
+    {
+      uint32_t input[unicode_max_length];
+      unsigned long codept;
+      char output[ace_max_length + 1], uplus[3];
+      int c;
+
+      /* Read the input code points: */
+
+      input_length = 0;
+
+      for (;;)
+       {
+         r = scanf ("%2s%lx", uplus, &codept);
+         if (ferror (stdin))
+           fail (io_error);
+         if (r == EOF || r == 0)
+           break;
+
+         if (r != 2 || uplus[1] != '+' || codept > (uint32_t) - 1)
+           {
+             fail (invalid_input);
+           }
+
+         if (input_length == unicode_max_length)
+           fail (too_big);
+
+         if (uplus[0] == 'u')
+           case_flags[input_length] = 0;
+         else if (uplus[0] == 'U')
+           case_flags[input_length] = 1;
+         else
+           fail (invalid_input);
+
+         input[input_length++] = codept;
+       }
+
+      /* Encode: */
+
+      output_length = ace_max_length;
+      status = punycode_encode (input_length, input, case_flags,
+                               &output_length, output);
+      if (status == punycode_bad_input)
+       fail (invalid_input);
+      if (status == punycode_big_output)
+       fail (too_big);
+      if (status == punycode_overflow)
+       fail (overflow);
+      assert (status == punycode_success);
+
+      /* Convert to native charset and output: */
+
+      for (j = 0; j < output_length; ++j)
+       {
+         c = output[j];
+         assert (c >= 0 && c <= 127);
+         if (print_ascii[c] == 0)
+           fail (invalid_input);
+         output[j] = print_ascii[c];
+       }
+
+      output[j] = 0;
+      r = puts (output);
+      if (r == EOF)
+       fail (io_error);
+      return EXIT_SUCCESS;
+    }
+
+  if (argv[1][1] == 'd')
+    {
+      char input[ace_max_length + 2], *p, *pp;
+      uint32_t output[unicode_max_length];
+
+      /* Read the Punycode input string and convert to ASCII: */
+
+      fgets (input, ace_max_length + 2, stdin);
+      if (ferror (stdin))
+       fail (io_error);
+      if (feof (stdin))
+       fail (invalid_input);
+      input_length = strlen (input) - 1;
+      if (input[input_length] != '\n')
+       fail (too_big);
+      input[input_length] = 0;
+
+      for (p = input; *p != 0; ++p)
+       {
+         pp = strchr (print_ascii, *p);
+         if (pp == 0)
+           fail (invalid_input);
+         *p = pp - print_ascii;
+       }
+
+      /* Decode: */
+
+      output_length = unicode_max_length;
+      status = punycode_decode (input_length, input, &output_length,
+                               output, case_flags);
+      if (status == punycode_bad_input)
+       fail (invalid_input);
+      if (status == punycode_big_output)
+       fail (too_big);
+      if (status == punycode_overflow)
+       fail (overflow);
+      assert (status == punycode_success);
+
+      /* Output the result: */
+
+      for (j = 0; j < output_length; ++j)
+       {
+         r = printf ("%s+%04lX\n",
+                     case_flags[j] ? "U" : "u", (unsigned long) output[j]);
+         if (r < 0)
+           fail (io_error);
+       }
+
+      return EXIT_SUCCESS;
+    }
+
+  usage (argv);
+  return EXIT_SUCCESS;         /* not reached, but quiets compiler warning */
+}
diff --git a/examples/example3.c b/examples/example3.c
new file mode 100644 (file)
index 0000000..2342c7d
--- /dev/null
@@ -0,0 +1,76 @@
+/* example3.c --- Example ToASCII() code showing how to use Libidn.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>            /* setlocale() */
+#include <stringprep.h>                /* stringprep_locale_charset() */
+#include <idna.h>              /* idna_to_ascii_lz() */
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example3 example3.c `pkg-config --cflags --libs libidn`
+ * $ ./example3
+ * Input domain encoded as `ISO-8859-1': www.räksmörgåsª.example
+ * Read string (length 23): 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 aa 2e 65 78 61 6d 70 6c 65
+ * ACE label (length 33): 'www.xn--rksmrgsa-0zap8p.example'
+ * 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65
+ * $
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  int rc;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+
+  printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+  buf[strlen (buf) - 1] = '\0';
+
+  printf ("Read string (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  rc = idna_to_ascii_lz (buf, &p, 0);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("ToASCII() failed (%d): %s\n", rc, idna_strerror (rc));
+      exit (1);
+    }
+
+  printf ("ACE label (length %d): '%s'\n", strlen (p), p);
+  for (i = 0; i < strlen (p); i++)
+    printf ("%02x ", p[i] & 0xFF);
+  printf ("\n");
+
+  free (p);
+
+  return 0;
+}
diff --git a/examples/example4.c b/examples/example4.c
new file mode 100644 (file)
index 0000000..20e5c88
--- /dev/null
@@ -0,0 +1,76 @@
+/* example4.c --- Example ToUnicode() code showing how to use Libidn.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>            /* setlocale() */
+#include <stringprep.h>                /* stringprep_locale_charset() */
+#include <idna.h>              /* idna_to_unicode_lzlz() */
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example4 example4.c `pkg-config --cflags --libs libidn`
+ * $ ./example4
+ * Input domain encoded as `ISO-8859-1': www.xn--rksmrgsa-0zap8p.example
+ * Read string (length 33): 77 77 77 2e 78 6e 2d 2d 72 6b 73 6d 72 67 73 61 2d 30 7a 61 70 38 70 2e 65 78 61 6d 70 6c 65
+ * ACE label (length 23): 'www.räksmörgåsa.example'
+ * 77 77 77 2e 72 e4 6b 73 6d f6 72 67 e5 73 61 2e 65 78 61 6d 70 6c 65
+ * $
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  int rc;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+
+  printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+  buf[strlen (buf) - 1] = '\0';
+
+  printf ("Read string (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  rc = idna_to_unicode_lzlz (buf, &p, 0);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("ToUnicode() failed (%d): %s\n", rc, idna_strerror (rc));
+      exit (1);
+    }
+
+  printf ("ACE label (length %d): '%s'\n", strlen (p), p);
+  for (i = 0; i < strlen (p); i++)
+    printf ("%02x ", p[i] & 0xFF);
+  printf ("\n");
+
+  free (p);
+
+  return 0;
+}
diff --git a/examples/example5.c b/examples/example5.c
new file mode 100644 (file)
index 0000000..2b40052
--- /dev/null
@@ -0,0 +1,121 @@
+/* example5.c --- Example TLD checking.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Get stringprep_locale_charset, etc. */
+#include <stringprep.h>
+
+/* Get idna_to_ascii_8z, etc. */
+#include <idna.h>
+
+/* Get tld_check_4z. */
+#include <tld.h>
+
+/*
+ * Compiling using libtool and pkg-config is recommended:
+ *
+ * $ libtool cc -o example5 example5.c `pkg-config --cflags --libs libidn`
+ * $ ./example5
+ * Input domain encoded as `UTF-8': fooß.no
+ * Read string (length 8): 66 6f 6f c3 9f 2e 6e 6f
+ * ToASCII string (length 8): fooss.no
+ * ToUnicode string: U+0066 U+006f U+006f U+0073 U+0073 U+002e U+006e U+006f
+ * Domain accepted by TLD check
+ *
+ * $ ./example5
+ * Input domain encoded as `UTF-8': gr€€n.no
+ * Read string (length 12): 67 72 e2 82 ac e2 82 ac 6e 2e 6e 6f
+ * ToASCII string (length 16): xn--grn-l50aa.no
+ * ToUnicode string: U+0067 U+0072 U+20ac U+20ac U+006e U+002e U+006e U+006f
+ * Domain rejected by TLD check, Unicode position 2
+ *
+ */
+
+int
+main (void)
+{
+  char buf[BUFSIZ];
+  char *p;
+  uint32_t *r;
+  int rc;
+  size_t errpos, i;
+
+  printf ("Input domain encoded as `%s': ", stringprep_locale_charset ());
+  fflush (stdout);
+  fgets (buf, BUFSIZ, stdin);
+  buf[strlen (buf) - 1] = '\0';
+
+  printf ("Read string (length %d): ", strlen (buf));
+  for (i = 0; i < strlen (buf); i++)
+    printf ("%02x ", buf[i] & 0xFF);
+  printf ("\n");
+
+  p = stringprep_locale_to_utf8 (buf);
+  if (p)
+    {
+      strcpy (buf, p);
+      free (p);
+    }
+  else
+    printf ("Could not convert string to UTF-8, continuing anyway...\n");
+
+  rc = idna_to_ascii_8z (buf, &p, 0);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("idna_to_ascii_8z failed (%d): %s\n", rc, idna_strerror (rc));
+      return 2;
+    }
+
+  printf ("ToASCII string (length %d): %s\n", strlen (p), p);
+
+  rc = idna_to_unicode_8z4z (p, &r, 0);
+  free (p);
+  if (rc != IDNA_SUCCESS)
+    {
+      printf ("idna_to_unicode_8z4z failed (%d): %s\n",
+             rc, idna_strerror (rc));
+      return 2;
+    }
+
+  printf ("ToUnicode string: ");
+  for (i = 0; r[i]; i++)
+    printf ("U+%04x ", r[i]);
+  printf ("\n");
+
+  rc = tld_check_4z (r, &errpos, NULL);
+  free (r);
+  if (rc == TLD_INVALID)
+    {
+      printf ("Domain rejected by TLD check, Unicode position %d\n", errpos);
+      return 1;
+    }
+  else if (rc != TLD_SUCCESS)
+    {
+      printf ("tld_check_4z() failed (%d): %s\n", rc, tld_strerror (rc));
+      return 2;
+    }
+
+  printf ("Domain accepted by TLD check\n");
+
+  return 0;
+}
diff --git a/gl/Makefile.am b/gl/Makefile.am
new file mode 100644 (file)
index 0000000..105d9e1
--- /dev/null
@@ -0,0 +1,372 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=gltests --aux-dir=build-aux --with-tests --libtool --macro-prefix=gl --no-vc-files autobuild csharpcomp-script error fdl-1.3 gendocs getopt gnupload gpl-3.0 lgpl-2.1 maintainer-makefile manywarnings pmccabe2html progname useless-if-before-free vc-list-files version-etc warnings
+
+AUTOMAKE_OPTIONS = 1.5 gnits
+
+SUBDIRS =
+noinst_HEADERS =
+noinst_LIBRARIES =
+noinst_LTLIBRARIES =
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST += m4/gnulib-cache.m4
+
+AM_CPPFLAGS =
+AM_CFLAGS =
+
+noinst_LTLIBRARIES += libgnu.la
+
+libgnu_la_SOURCES =
+libgnu_la_LIBADD = $(gl_LTLIBOBJS)
+libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS)
+EXTRA_libgnu_la_SOURCES =
+libgnu_la_LDFLAGS = $(AM_LDFLAGS)
+
+## begin gnulib module csharpcomp-script
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/csharpcomp.sh.in
+
+## end   gnulib module csharpcomp-script
+
+## begin gnulib module errno
+
+BUILT_SOURCES += $(ERRNO_H)
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+errno.h: errno.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+             -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+             -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+             -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+             -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+             -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+             -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+             < $(srcdir)/errno.in.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += errno.h errno.h-t
+
+EXTRA_DIST += errno.in.h
+
+## end   gnulib module errno
+
+## begin gnulib module error
+
+
+EXTRA_DIST += error.c error.h
+
+EXTRA_libgnu_la_SOURCES += error.c
+
+## end   gnulib module error
+
+## begin gnulib module gendocs
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/gendocs.sh
+
+## end   gnulib module gendocs
+
+## begin gnulib module getopt
+
+BUILT_SOURCES += $(GETOPT_H)
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt.in.h
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/getopt.in.h; \
+       } > $@-t
+       mv -f $@-t $@
+MOSTLYCLEANFILES += getopt.h getopt.h-t
+
+EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h
+
+EXTRA_libgnu_la_SOURCES += getopt.c getopt1.c
+
+## end   gnulib module getopt
+
+## begin gnulib module gettext-h
+
+libgnu_la_SOURCES += gettext.h
+
+## end   gnulib module gettext-h
+
+## begin gnulib module gnumakefile
+
+distclean-local: clean-GNUmakefile
+clean-GNUmakefile:
+       test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || :
+
+EXTRA_DIST += $(top_srcdir)/GNUmakefile
+
+## end   gnulib module gnumakefile
+
+## begin gnulib module gnupload
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/gnupload
+
+## end   gnulib module gnupload
+
+## begin gnulib module intprops
+
+
+EXTRA_DIST += intprops.h
+
+## end   gnulib module intprops
+
+## begin gnulib module link-warning
+
+LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/link-warning.h
+
+## end   gnulib module link-warning
+
+## begin gnulib module maintainer-makefile
+
+EXTRA_DIST += $(top_srcdir)/maint.mk
+
+## end   gnulib module maintainer-makefile
+
+## begin gnulib module pmccabe2html
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/pmccabe2html $(top_srcdir)/build-aux/pmccabe.css
+
+## end   gnulib module pmccabe2html
+
+## begin gnulib module progname
+
+libgnu_la_SOURCES += progname.h progname.c
+
+## end   gnulib module progname
+
+## begin gnulib module stdarg
+
+BUILT_SOURCES += $(STDARG_H)
+
+# We need the following in order to create <stdarg.h> when the system
+# doesn't have one that works with the given compiler.
+stdarg.h: stdarg.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \
+             < $(srcdir)/stdarg.in.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += stdarg.h stdarg.h-t
+
+EXTRA_DIST += stdarg.in.h
+
+## end   gnulib module stdarg
+
+## begin gnulib module strerror
+
+
+EXTRA_DIST += strerror.c
+
+EXTRA_libgnu_la_SOURCES += strerror.c
+
+## end   gnulib module strerror
+
+## begin gnulib module string
+
+BUILT_SOURCES += string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+             -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+             -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+             -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+             -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+             -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+             -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+             -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+             -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+             -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+             -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+             -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+             -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+             -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+             -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+             -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+             -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+             -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+             -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+             -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+             -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+             -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+             -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+             -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+             -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+             -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+             -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+             -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+             -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+             -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+             -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/string.in.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string.in.h
+
+## end   gnulib module string
+
+## begin gnulib module unistd
+
+BUILT_SOURCES += unistd.h
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+             -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+             -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+             -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+             -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+             -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+             -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+             -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+             -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+             -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+             -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+             -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+             -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+             -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+             -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+             -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+             -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+             -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+             -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+             -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+             -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+             -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+             -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+             -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+             -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+             -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+             -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \
+             -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+             -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+             -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \
+             -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+             -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+             -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+             -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+             -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+             -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+             -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+             -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+             -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+             -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+             -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+             -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+             -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+             -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+             -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/unistd.in.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += unistd.h unistd.h-t
+
+EXTRA_DIST += unistd.in.h
+
+## end   gnulib module unistd
+
+## begin gnulib module useless-if-before-free
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/useless-if-before-free
+
+## end   gnulib module useless-if-before-free
+
+## begin gnulib module vc-list-files
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/vc-list-files
+
+## end   gnulib module vc-list-files
+
+## begin gnulib module version-etc
+
+libgnu_la_SOURCES += version-etc.h version-etc.c
+
+## end   gnulib module version-etc
+
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
diff --git a/gl/Makefile.in b/gl/Makefile.in
new file mode 100644 (file)
index 0000000..c7dfc2a
--- /dev/null
@@ -0,0 +1,1166 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=gltests --aux-dir=build-aux --with-tests --libtool --macro-prefix=gl --no-vc-files autobuild csharpcomp-script error fdl-1.3 gendocs getopt gnupload gpl-3.0 lgpl-2.1 maintainer-makefile manywarnings pmccabe2html progname useless-if-before-free vc-list-files version-etc warnings
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = gl
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+am_libgnu_la_OBJECTS = progname.lo version-etc.lo
+libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS)
+libgnu_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(libgnu_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES)
+DIST_SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnits
+SUBDIRS = 
+noinst_HEADERS = 
+noinst_LIBRARIES = 
+noinst_LTLIBRARIES = libgnu.la
+EXTRA_DIST = m4/gnulib-cache.m4 \
+       $(top_srcdir)/build-aux/csharpcomp.sh.in errno.in.h error.c \
+       error.h $(top_srcdir)/build-aux/gendocs.sh getopt.c \
+       getopt.in.h getopt1.c getopt_int.h $(top_srcdir)/GNUmakefile \
+       $(top_srcdir)/build-aux/gnupload intprops.h \
+       $(top_srcdir)/build-aux/link-warning.h $(top_srcdir)/maint.mk \
+       $(top_srcdir)/build-aux/pmccabe2html \
+       $(top_srcdir)/build-aux/pmccabe.css stdarg.in.h strerror.c \
+       string.in.h unistd.in.h \
+       $(top_srcdir)/build-aux/useless-if-before-free \
+       $(top_srcdir)/build-aux/vc-list-files
+BUILT_SOURCES = $(ERRNO_H) $(GETOPT_H) $(STDARG_H) string.h unistd.h
+SUFFIXES = 
+MOSTLYCLEANFILES = core *.stackdump errno.h errno.h-t getopt.h \
+       getopt.h-t stdarg.h stdarg.h-t string.h string.h-t unistd.h \
+       unistd.h-t
+MOSTLYCLEANDIRS = 
+CLEANFILES = 
+DISTCLEANFILES = 
+MAINTAINERCLEANFILES = 
+AM_CPPFLAGS = 
+AM_CFLAGS = 
+libgnu_la_SOURCES = gettext.h progname.h progname.c version-etc.h \
+       version-etc.c
+libgnu_la_LIBADD = $(gl_LTLIBOBJS)
+libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS)
+EXTRA_libgnu_la_SOURCES = error.c getopt.c getopt1.c strerror.c
+libgnu_la_LDFLAGS = $(AM_LDFLAGS)
+LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits gl/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnits gl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+libgnu.la: $(libgnu_la_OBJECTS) $(libgnu_la_DEPENDENCIES) 
+       $(libgnu_la_LINK)  $(libgnu_la_OBJECTS) $(libgnu_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progname.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+       clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-local distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+       ctags-recursive install install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \
+       ctags-recursive distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-local distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+       mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am
+
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+errno.h: errno.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+             -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+             -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+             -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+             -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+             -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+             -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+             < $(srcdir)/errno.in.h; \
+       } > $@-t
+       mv $@-t $@
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt.in.h
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         cat $(srcdir)/getopt.in.h; \
+       } > $@-t
+       mv -f $@-t $@
+
+distclean-local: clean-GNUmakefile
+clean-GNUmakefile:
+       test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || :
+
+# We need the following in order to create <stdarg.h> when the system
+# doesn't have one that works with the given compiler.
+stdarg.h: stdarg.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \
+             < $(srcdir)/stdarg.in.h; \
+       } > $@-t
+       mv $@-t $@
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+             -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+             -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+             -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+             -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+             -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+             -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+             -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+             -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+             -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+             -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+             -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+             -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+             -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+             -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+             -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+             -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+             -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+             -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+             -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+             -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+             -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+             -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+             -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+             -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+             -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+             -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+             -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+             -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+             -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+             -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/string.in.h; \
+       } > $@-t
+       mv $@-t $@
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+             -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+             -e 's|@''GNULIB_CLOSE''@|$(GNULIB_CLOSE)|g' \
+             -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+             -e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
+             -e 's|@''GNULIB_EUIDACCESS''@|$(GNULIB_EUIDACCESS)|g' \
+             -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+             -e 's|@''GNULIB_FSYNC''@|$(GNULIB_FSYNC)|g' \
+             -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+             -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+             -e 's|@''GNULIB_GETDOMAINNAME''@|$(GNULIB_GETDOMAINNAME)|g' \
+             -e 's|@''GNULIB_GETDTABLESIZE''@|$(GNULIB_GETDTABLESIZE)|g' \
+             -e 's|@''GNULIB_GETHOSTNAME''@|$(GNULIB_GETHOSTNAME)|g' \
+             -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+             -e 's|@''GNULIB_GETPAGESIZE''@|$(GNULIB_GETPAGESIZE)|g' \
+             -e 's|@''GNULIB_GETUSERSHELL''@|$(GNULIB_GETUSERSHELL)|g' \
+             -e 's|@''GNULIB_LCHOWN''@|$(GNULIB_LCHOWN)|g' \
+             -e 's|@''GNULIB_LINK''@|$(GNULIB_LINK)|g' \
+             -e 's|@''GNULIB_LSEEK''@|$(GNULIB_LSEEK)|g' \
+             -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+             -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+             -e 's|@''GNULIB_UNISTD_H_SIGPIPE''@|$(GNULIB_UNISTD_H_SIGPIPE)|g' \
+             -e 's|@''GNULIB_WRITE''@|$(GNULIB_WRITE)|g' \
+             -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+             -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+             -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+             -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+             -e 's|@''HAVE_GETDOMAINNAME''@|$(HAVE_GETDOMAINNAME)|g' \
+             -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+             -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+             -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+             -e 's|@''HAVE_GETUSERSHELL''@|$(HAVE_GETUSERSHELL)|g' \
+             -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+             -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+             -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+             -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+             -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+             -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+             -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+             -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+             -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+             -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+             -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+             -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+             -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+             -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+             -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+             -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/unistd.in.h; \
+       } > $@-t
+       mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/gl/errno.in.h b/gl/errno.in.h
new file mode 100644 (file)
index 0000000..51ac662
--- /dev/null
@@ -0,0 +1,155 @@
+/* A POSIX-like <errno.h>.
+
+   Copyright (C) 2008 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_ERRNO_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_ERRNO_H@
+
+#ifndef _GL_ERRNO_H
+#define _GL_ERRNO_H
+
+
+/* On native Windows platforms, many macros are not defined.  */
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+
+/* POSIX says that EAGAIN and EWOULDBLOCK may have the same value.  */
+#  define EWOULDBLOCK     EAGAIN
+
+/* Values >= 100 seem safe to use.  */
+#  define ETXTBSY   100
+#  define GNULIB_defined_ETXTBSY 1
+
+/* These are intentionally the same values as the WSA* error numbers, defined
+   in <winsock2.h>.  */
+#  define EINPROGRESS     10036
+#  define EALREADY        10037
+#  define ENOTSOCK        10038
+#  define EDESTADDRREQ    10039
+#  define EMSGSIZE        10040
+#  define EPROTOTYPE      10041
+#  define ENOPROTOOPT     10042
+#  define EPROTONOSUPPORT 10043
+#  define ESOCKTNOSUPPORT 10044  /* not required by POSIX */
+#  define EOPNOTSUPP      10045
+#  define EPFNOSUPPORT    10046  /* not required by POSIX */
+#  define EAFNOSUPPORT    10047
+#  define EADDRINUSE      10048
+#  define EADDRNOTAVAIL   10049
+#  define ENETDOWN        10050
+#  define ENETUNREACH     10051
+#  define ENETRESET       10052
+#  define ECONNABORTED    10053
+#  define ECONNRESET      10054
+#  define ENOBUFS         10055
+#  define EISCONN         10056
+#  define ENOTCONN        10057
+#  define ESHUTDOWN       10058  /* not required by POSIX */
+#  define ETOOMANYREFS    10059  /* not required by POSIX */
+#  define ETIMEDOUT       10060
+#  define ECONNREFUSED    10061
+#  define ELOOP           10062
+#  define EHOSTDOWN       10064  /* not required by POSIX */
+#  define EHOSTUNREACH    10065
+#  define EPROCLIM        10067  /* not required by POSIX */
+#  define EUSERS          10068  /* not required by POSIX */
+#  define EDQUOT          10069
+#  define ESTALE          10070
+#  define EREMOTE         10071  /* not required by POSIX */
+#  define GNULIB_defined_ESOCK 1
+
+# endif
+
+
+/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros
+   EMULTIHOP, ENOLINK, EOVERFLOW are not defined.  */
+# if @EMULTIHOP_HIDDEN@
+#  define EMULTIHOP @EMULTIHOP_VALUE@
+#  define GNULIB_defined_EMULTIHOP 1
+# endif
+# if @ENOLINK_HIDDEN@
+#  define ENOLINK   @ENOLINK_VALUE@
+#  define GNULIB_defined_ENOLINK 1
+# endif
+# if @EOVERFLOW_HIDDEN@
+#  define EOVERFLOW @EOVERFLOW_VALUE@
+#  define GNULIB_defined_EOVERFLOW 1
+# endif
+
+
+/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK,
+   EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined.
+   Define them here.  Values >= 2000 seem safe to use: Solaris ESTALE = 151,
+   HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133.
+
+   Note: When one of these systems defines some of these macros some day,
+   binaries will have to be recompiled so that they recognizes the new
+   errno values from the system.  */
+
+# ifndef ENOMSG
+#  define ENOMSG    2000
+#  define GNULIB_defined_ENOMSG 1
+# endif
+
+# ifndef EIDRM
+#  define EIDRM     2001
+#  define GNULIB_defined_EIDRM 1
+# endif
+
+# ifndef ENOLINK
+#  define ENOLINK   2002
+#  define GNULIB_defined_ENOLINK 1
+# endif
+
+# ifndef EPROTO
+#  define EPROTO    2003
+#  define GNULIB_defined_EPROTO 1
+# endif
+
+# ifndef EMULTIHOP
+#  define EMULTIHOP 2004
+#  define GNULIB_defined_EMULTIHOP 1
+# endif
+
+# ifndef EBADMSG
+#  define EBADMSG   2005
+#  define GNULIB_defined_EBADMSG 1
+# endif
+
+# ifndef EOVERFLOW
+#  define EOVERFLOW 2006
+#  define GNULIB_defined_EOVERFLOW 1
+# endif
+
+# ifndef ENOTSUP
+#  define ENOTSUP   2007
+#  define GNULIB_defined_ENOTSUP 1
+# endif
+
+# ifndef ECANCELED
+#  define ECANCELED 2008
+#  define GNULIB_defined_ECANCELED 1
+# endif
+
+
+#endif /* _GL_ERRNO_H */
+#endif /* _GL_ERRNO_H */
diff --git a/gl/error.c b/gl/error.c
new file mode 100644 (file)
index 0000000..3177bd5
--- /dev/null
@@ -0,0 +1,338 @@
+/* Error handler for noninteractive utilities
+   Copyright (C) 1990-1998, 2000-2007 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>.  */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include "error.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if !_LIBC && ENABLE_NLS
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <wchar.h>
+# define mbsrtowcs __mbsrtowcs
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifndef _
+# define _(String) String
+#endif
+
+/* If NULL, error will flush stdout, then print on stderr the program
+   name, a colon and a space.  Otherwise, error will call this
+   function without parameters instead.  */
+void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called.  */
+unsigned int error_message_count;
+
+#ifdef _LIBC
+/* In the GNU C library, there is a predefined variable for this.  */
+
+# define program_name program_invocation_name
+# include <errno.h>
+# include <limits.h>
+# include <libio/libioP.h>
+
+/* In GNU libc we want do not want to use the common name `error' directly.
+   Instead make it a weak alias.  */
+extern void __error (int status, int errnum, const char *message, ...)
+     __attribute__ ((__format__ (__printf__, 3, 4)));
+extern void __error_at_line (int status, int errnum, const char *file_name,
+                            unsigned int line_number, const char *message,
+                            ...)
+     __attribute__ ((__format__ (__printf__, 5, 6)));;
+# define error __error
+# define error_at_line __error_at_line
+
+# include <libio/iolibio.h>
+# define fflush(s) INTUSE(_IO_fflush) (s)
+# undef putc
+# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
+
+# include <bits/libc-lock.h>
+
+#else /* not _LIBC */
+
+# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
+#  ifndef HAVE_DECL_STRERROR_R
+"this configure-time declaration test was not run"
+#  endif
+char *strerror_r ();
+# endif
+
+/* The calling program should define program_name and set it to the
+   name of the executing program.  */
+extern char *program_name;
+
+# if HAVE_STRERROR_R || defined strerror_r
+#  define __strerror_r strerror_r
+# endif        /* HAVE_STRERROR_R || defined strerror_r */
+#endif /* not _LIBC */
+
+static void
+print_errno_message (int errnum)
+{
+  char const *s;
+
+#if defined HAVE_STRERROR_R || _LIBC
+  char errbuf[1024];
+# if STRERROR_R_CHAR_P || _LIBC
+  s = __strerror_r (errnum, errbuf, sizeof errbuf);
+# else
+  if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
+    s = errbuf;
+  else
+    s = 0;
+# endif
+#else
+  s = strerror (errnum);
+#endif
+
+#if !_LIBC
+  if (! s)
+    s = _("Unknown system error");
+#endif
+
+#if _LIBC
+  __fxprintf (NULL, ": %s", s);
+#else
+  fprintf (stderr, ": %s", s);
+#endif
+}
+
+static void
+error_tail (int status, int errnum, const char *message, va_list args)
+{
+#if _LIBC
+  if (_IO_fwide (stderr, 0) > 0)
+    {
+# define ALLOCA_LIMIT 2000
+      size_t len = strlen (message) + 1;
+      wchar_t *wmessage = NULL;
+      mbstate_t st;
+      size_t res;
+      const char *tmp;
+      bool use_malloc = false;
+
+      while (1)
+       {
+         if (__libc_use_alloca (len * sizeof (wchar_t)))
+           wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
+         else
+           {
+             if (!use_malloc)
+               wmessage = NULL;
+
+             wchar_t *p = (wchar_t *) realloc (wmessage,
+                                               len * sizeof (wchar_t));
+             if (p == NULL)
+               {
+                 free (wmessage);
+                 fputws_unlocked (L"out of memory\n", stderr);
+                 return;
+               }
+             wmessage = p;
+             use_malloc = true;
+           }
+
+         memset (&st, '\0', sizeof (st));
+         tmp = message;
+
+         res = mbsrtowcs (wmessage, &tmp, len, &st);
+         if (res != len)
+           break;
+
+         if (__builtin_expect (len >= SIZE_MAX / 2, 0))
+           {
+             /* This really should not happen if everything is fine.  */
+             res = (size_t) -1;
+             break;
+           }
+
+         len *= 2;
+       }
+
+      if (res == (size_t) -1)
+       {
+         /* The string cannot be converted.  */
+         if (use_malloc)
+           {
+             free (wmessage);
+             use_malloc = false;
+           }
+         wmessage = (wchar_t *) L"???";
+       }
+
+      __vfwprintf (stderr, wmessage, args);
+
+      if (use_malloc)
+       free (wmessage);
+    }
+  else
+#endif
+    vfprintf (stderr, message, args);
+  va_end (args);
+
+  ++error_message_count;
+  if (errnum)
+    print_errno_message (errnum);
+#if _LIBC
+  __fxprintf (NULL, "\n");
+#else
+  putc ('\n', stderr);
+#endif
+  fflush (stderr);
+  if (status)
+    exit (status);
+}
+
+
+/* Print the program name and error message MESSAGE, which is a printf-style
+   format string with optional args.
+   If ERRNUM is nonzero, print its corresponding system error message.
+   Exit with status STATUS if it is nonzero.  */
+void
+error (int status, int errnum, const char *message, ...)
+{
+  va_list args;
+
+#if defined _LIBC && defined __libc_ptf_call
+  /* We do not want this call to be cut short by a thread
+     cancellation.  Therefore disable cancellation for now.  */
+  int state = PTHREAD_CANCEL_ENABLE;
+  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+                  0);
+#endif
+
+  fflush (stdout);
+#ifdef _LIBC
+  _IO_flockfile (stderr);
+#endif
+  if (error_print_progname)
+    (*error_print_progname) ();
+  else
+    {
+#if _LIBC
+      __fxprintf (NULL, "%s: ", program_name);
+#else
+      fprintf (stderr, "%s: ", program_name);
+#endif
+    }
+
+  va_start (args, message);
+  error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+  _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+\f
+/* Sometimes we want to have at most one error per line.  This
+   variable controls whether this mode is selected or not.  */
+int error_one_per_line;
+
+void
+error_at_line (int status, int errnum, const char *file_name,
+              unsigned int line_number, const char *message, ...)
+{
+  va_list args;
+
+  if (error_one_per_line)
+    {
+      static const char *old_file_name;
+      static unsigned int old_line_number;
+
+      if (old_line_number == line_number
+         && (file_name == old_file_name
+             || strcmp (old_file_name, file_name) == 0))
+       /* Simply return and print nothing.  */
+       return;
+
+      old_file_name = file_name;
+      old_line_number = line_number;
+    }
+
+#if defined _LIBC && defined __libc_ptf_call
+  /* We do not want this call to be cut short by a thread
+     cancellation.  Therefore disable cancellation for now.  */
+  int state = PTHREAD_CANCEL_ENABLE;
+  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+                  0);
+#endif
+
+  fflush (stdout);
+#ifdef _LIBC
+  _IO_flockfile (stderr);
+#endif
+  if (error_print_progname)
+    (*error_print_progname) ();
+  else
+    {
+#if _LIBC
+      __fxprintf (NULL, "%s:", program_name);
+#else
+      fprintf (stderr, "%s:", program_name);
+#endif
+    }
+
+#if _LIBC
+  __fxprintf (NULL, file_name != NULL ? "%s:%d: " : " ",
+             file_name, line_number);
+#else
+  fprintf (stderr, file_name != NULL ? "%s:%d: " : " ",
+          file_name, line_number);
+#endif
+
+  va_start (args, message);
+  error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+  _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+
+#ifdef _LIBC
+/* Make the weak alias.  */
+# undef error
+# undef error_at_line
+weak_alias (__error, error)
+weak_alias (__error_at_line, error_at_line)
+#endif
diff --git a/gl/error.h b/gl/error.h
new file mode 100644 (file)
index 0000000..6d49681
--- /dev/null
@@ -0,0 +1,65 @@
+/* Declaration for error-reporting function
+   Copyright (C) 1995, 1996, 1997, 2003, 2006, 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _ERROR_H
+#define _ERROR_H 1
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+#  define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+   are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+#  define __format__ format
+#  define __printf__ printf
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Print a message with `fprintf (stderr, FORMAT, ...)';
+   if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+   If STATUS is nonzero, terminate the program with `exit (STATUS)'.  */
+
+extern void error (int __status, int __errnum, const char *__format, ...)
+     __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern void error_at_line (int __status, int __errnum, const char *__fname,
+                          unsigned int __lineno, const char *__format, ...)
+     __attribute__ ((__format__ (__printf__, 5, 6)));
+
+/* If NULL, error will flush stdout, then print on stderr the program
+   name, a colon and a space.  Otherwise, error will call this
+   function without parameters instead.  */
+extern void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called.  */
+extern unsigned int error_message_count;
+
+/* Sometimes we want to have at most one error per line.  This
+   variable controls whether this mode is selected or not.  */
+extern int error_one_per_line;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* error.h */
diff --git a/gl/getopt.c b/gl/getopt.c
new file mode 100644 (file)
index 0000000..f1e6d1f
--- /dev/null
@@ -0,0 +1,1186 @@
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to drepper@gnu.org
+   before changing it!
+   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003,2004,2006,2008
+       Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+\f
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include "getopt.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+# include <wchar.h>
+#endif
+
+#ifndef attribute_hidden
+# define attribute_hidden
+#endif
+
+/* Unlike standard Unix `getopt', functions like `getopt_long'
+   let the user intersperse the options with the other arguments.
+
+   As `getopt_long' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Using `getopt' or setting the environment variable POSIXLY_CORRECT
+   disables permutation.
+   Then the application's behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt_int.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+int optind = 1;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Keep a global copy of all internal members of getopt_data.  */
+
+static struct _getopt_data getopt_data;
+
+\f
+#if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV
+extern char *getenv ();
+#endif
+\f
+#ifdef _LIBC
+/* Stored original parameters.
+   XXX This is no good solution.  We should rather copy the args so
+   that we can compare them later.  But we must not use malloc(3).  */
+extern int __libc_argc;
+extern char **__libc_argv;
+
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+# ifdef USE_NONOPTION_FLAGS
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+# endif
+
+# ifdef USE_NONOPTION_FLAGS
+#  define SWAP_FLAGS(ch1, ch2) \
+  if (d->__nonoption_flags_len > 0)                                          \
+    {                                                                        \
+      char __tmp = __getopt_nonoption_flags[ch1];                            \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];         \
+      __getopt_nonoption_flags[ch2] = __tmp;                                 \
+    }
+# else
+#  define SWAP_FLAGS(ch1, ch2)
+# endif
+#else  /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+static void
+exchange (char **argv, struct _getopt_data *d)
+{
+  int bottom = d->__first_nonopt;
+  int middle = d->__last_nonopt;
+  int top = d->optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+        presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+       d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
+      else
+       {
+         memset (__mempcpy (new_str, __getopt_nonoption_flags,
+                            d->__nonoption_flags_max_len),
+                 '\0', top + 1 - d->__nonoption_flags_max_len);
+         d->__nonoption_flags_max_len = top + 1;
+         __getopt_nonoption_flags = new_str;
+       }
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+       {
+         /* Bottom segment is the short one.  */
+         int len = middle - bottom;
+         register int i;
+
+         /* Swap it with the top part of the top segment.  */
+         for (i = 0; i < len; i++)
+           {
+             tem = argv[bottom + i];
+             argv[bottom + i] = argv[top - (middle - bottom) + i];
+             argv[top - (middle - bottom) + i] = tem;
+             SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+           }
+         /* Exclude the moved bottom segment from further swapping.  */
+         top -= len;
+       }
+      else
+       {
+         /* Top segment is the short one.  */
+         int len = top - middle;
+         register int i;
+
+         /* Swap it with the bottom part of the bottom segment.  */
+         for (i = 0; i < len; i++)
+           {
+             tem = argv[bottom + i];
+             argv[bottom + i] = argv[middle + i];
+             argv[middle + i] = tem;
+             SWAP_FLAGS (bottom + i, middle + i);
+           }
+         /* Exclude the moved top segment from further swapping.  */
+         bottom += len;
+       }
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  d->__first_nonopt += (d->optind - d->__last_nonopt);
+  d->__last_nonopt = d->optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+static const char *
+_getopt_initialize (int argc, char **argv, const char *optstring,
+                   int posixly_correct, struct _getopt_data *d)
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  d->__first_nonopt = d->__last_nonopt = d->optind;
+
+  d->__nextchar = NULL;
+
+  d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      d->__ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      d->__ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (d->__posixly_correct)
+    d->__ordering = REQUIRE_ORDER;
+  else
+    d->__ordering = PERMUTE;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  if (!d->__posixly_correct
+      && argc == __libc_argc && argv == __libc_argv)
+    {
+      if (d->__nonoption_flags_max_len == 0)
+       {
+         if (__getopt_nonoption_flags == NULL
+             || __getopt_nonoption_flags[0] == '\0')
+           d->__nonoption_flags_max_len = -1;
+         else
+           {
+             const char *orig_str = __getopt_nonoption_flags;
+             int len = d->__nonoption_flags_max_len = strlen (orig_str);
+             if (d->__nonoption_flags_max_len < argc)
+               d->__nonoption_flags_max_len = argc;
+             __getopt_nonoption_flags =
+               (char *) malloc (d->__nonoption_flags_max_len);
+             if (__getopt_nonoption_flags == NULL)
+               d->__nonoption_flags_max_len = -1;
+             else
+               memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+                       '\0', d->__nonoption_flags_max_len - len);
+           }
+       }
+      d->__nonoption_flags_len = d->__nonoption_flags_max_len;
+    }
+  else
+    d->__nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+\f
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.
+
+   If POSIXLY_CORRECT is nonzero, behave as if the POSIXLY_CORRECT
+   environment variable were set.  */
+
+int
+_getopt_internal_r (int argc, char **argv, const char *optstring,
+                   const struct option *longopts, int *longind,
+                   int long_only, int posixly_correct, struct _getopt_data *d)
+{
+  int print_errors = d->opterr;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  if (argc < 1)
+    return -1;
+
+  d->optarg = NULL;
+
+  if (d->optind == 0 || !d->__initialized)
+    {
+      if (d->optind == 0)
+       d->optind = 1;  /* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring,
+                                     posixly_correct, d);
+      d->__initialized = 1;
+    }
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
+                     || (d->optind < d->__nonoption_flags_len                \
+                         && __getopt_nonoption_flags[d->optind] == '1'))
+#else
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
+#endif
+
+  if (d->__nextchar == NULL || *d->__nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+        moved back by the user (who may also have changed the arguments).  */
+      if (d->__last_nonopt > d->optind)
+       d->__last_nonopt = d->optind;
+      if (d->__first_nonopt > d->optind)
+       d->__first_nonopt = d->optind;
+
+      if (d->__ordering == PERMUTE)
+       {
+         /* If we have just processed some options following some non-options,
+            exchange them so that the options come first.  */
+
+         if (d->__first_nonopt != d->__last_nonopt
+             && d->__last_nonopt != d->optind)
+           exchange ((char **) argv, d);
+         else if (d->__last_nonopt != d->optind)
+           d->__first_nonopt = d->optind;
+
+         /* Skip any additional non-options
+            and extend the range of non-options previously skipped.  */
+
+         while (d->optind < argc && NONOPTION_P)
+           d->optind++;
+         d->__last_nonopt = d->optind;
+       }
+
+      /* The special ARGV-element `--' means premature end of options.
+        Skip it like a null option,
+        then exchange with previous non-options as if it were an option,
+        then skip everything else like a non-option.  */
+
+      if (d->optind != argc && !strcmp (argv[d->optind], "--"))
+       {
+         d->optind++;
+
+         if (d->__first_nonopt != d->__last_nonopt
+             && d->__last_nonopt != d->optind)
+           exchange ((char **) argv, d);
+         else if (d->__first_nonopt == d->__last_nonopt)
+           d->__first_nonopt = d->optind;
+         d->__last_nonopt = argc;
+
+         d->optind = argc;
+       }
+
+      /* If we have done all the ARGV-elements, stop the scan
+        and back over any non-options that we skipped and permuted.  */
+
+      if (d->optind == argc)
+       {
+         /* Set the next-arg-index to point at the non-options
+            that we previously skipped, so the caller will digest them.  */
+         if (d->__first_nonopt != d->__last_nonopt)
+           d->optind = d->__first_nonopt;
+         return -1;
+       }
+
+      /* If we have come to a non-option and did not permute it,
+        either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+       {
+         if (d->__ordering == REQUIRE_ORDER)
+           return -1;
+         d->optarg = argv[d->optind++];
+         return 1;
+       }
+
+      /* We have found another option-ARGV-element.
+        Skip the initial punctuation.  */
+
+      d->__nextchar = (argv[d->optind] + 1
+                 + (longopts != NULL && argv[d->optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[d->optind][1] == '-'
+         || (long_only && (argv[d->optind][2]
+                           || !strchr (optstring, argv[d->optind][1])))))
+    {
+      char *nameend;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
+       /* Do nothing.  */ ;
+
+      /* Test all long options for either exact match
+        or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+       if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+         {
+           if ((unsigned int) (nameend - d->__nextchar)
+               == (unsigned int) strlen (p->name))
+             {
+               /* Exact match found.  */
+               pfound = p;
+               indfound = option_index;
+               exact = 1;
+               break;
+             }
+           else if (pfound == NULL)
+             {
+               /* First nonexact match found.  */
+               pfound = p;
+               indfound = option_index;
+             }
+           else if (long_only
+                    || pfound->has_arg != p->has_arg
+                    || pfound->flag != p->flag
+                    || pfound->val != p->val)
+             /* Second or later nonexact match found.  */
+             ambig = 1;
+         }
+
+      if (ambig && !exact)
+       {
+         if (print_errors)
+           {
+#if defined _LIBC && defined USE_IN_LIBIO
+             char *buf;
+
+             if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+                             argv[0], argv[d->optind]) >= 0)
+               {
+                 _IO_flockfile (stderr);
+
+                 int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                 ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                 __fxprintf (NULL, "%s", buf);
+
+                 ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                 _IO_funlockfile (stderr);
+
+                 free (buf);
+               }
+#else
+             fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+                      argv[0], argv[d->optind]);
+#endif
+           }
+         d->__nextchar += strlen (d->__nextchar);
+         d->optind++;
+         d->optopt = 0;
+         return '?';
+       }
+
+      if (pfound != NULL)
+       {
+         option_index = indfound;
+         d->optind++;
+         if (*nameend)
+           {
+             /* Don't test has_arg with >, because some C compilers don't
+                allow it to be used on enums.  */
+             if (pfound->has_arg)
+               d->optarg = nameend + 1;
+             else
+               {
+                 if (print_errors)
+                   {
+#if defined _LIBC && defined USE_IN_LIBIO
+                     char *buf;
+                     int n;
+#endif
+
+                     if (argv[d->optind - 1][1] == '-')
+                       {
+                         /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                         n = __asprintf (&buf, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                         argv[0], pfound->name);
+#else
+                         fprintf (stderr, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                  argv[0], pfound->name);
+#endif
+                       }
+                     else
+                       {
+                         /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                         n = __asprintf (&buf, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                         argv[0], argv[d->optind - 1][0],
+                                         pfound->name);
+#else
+                         fprintf (stderr, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                  argv[0], argv[d->optind - 1][0],
+                                  pfound->name);
+#endif
+                       }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+                     if (n >= 0)
+                       {
+                         _IO_flockfile (stderr);
+
+                         int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                         ((_IO_FILE *) stderr)->_flags2
+                           |= _IO_FLAGS2_NOTCANCEL;
+
+                         __fxprintf (NULL, "%s", buf);
+
+                         ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                         _IO_funlockfile (stderr);
+
+                         free (buf);
+                       }
+#endif
+                   }
+
+                 d->__nextchar += strlen (d->__nextchar);
+
+                 d->optopt = pfound->val;
+                 return '?';
+               }
+           }
+         else if (pfound->has_arg == 1)
+           {
+             if (d->optind < argc)
+               d->optarg = argv[d->optind++];
+             else
+               {
+                 if (print_errors)
+                   {
+#if defined _LIBC && defined USE_IN_LIBIO
+                     char *buf;
+
+                     if (__asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+                                     argv[0], argv[d->optind - 1]) >= 0)
+                       {
+                         _IO_flockfile (stderr);
+
+                         int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                         ((_IO_FILE *) stderr)->_flags2
+                           |= _IO_FLAGS2_NOTCANCEL;
+
+                         __fxprintf (NULL, "%s", buf);
+
+                         ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                         _IO_funlockfile (stderr);
+
+                         free (buf);
+                       }
+#else
+                     fprintf (stderr,
+                              _("%s: option `%s' requires an argument\n"),
+                              argv[0], argv[d->optind - 1]);
+#endif
+                   }
+                 d->__nextchar += strlen (d->__nextchar);
+                 d->optopt = pfound->val;
+                 return optstring[0] == ':' ? ':' : '?';
+               }
+           }
+         d->__nextchar += strlen (d->__nextchar);
+         if (longind != NULL)
+           *longind = option_index;
+         if (pfound->flag)
+           {
+             *(pfound->flag) = pfound->val;
+             return 0;
+           }
+         return pfound->val;
+       }
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+        or the option starts with '--' or is not a valid short
+        option, then it's an error.
+        Otherwise interpret it as a short option.  */
+      if (!long_only || argv[d->optind][1] == '-'
+         || strchr (optstring, *d->__nextchar) == NULL)
+       {
+         if (print_errors)
+           {
+#if defined _LIBC && defined USE_IN_LIBIO
+             char *buf;
+             int n;
+#endif
+
+             if (argv[d->optind][1] == '-')
+               {
+                 /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                 n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
+                                 argv[0], d->__nextchar);
+#else
+                 fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+                          argv[0], d->__nextchar);
+#endif
+               }
+             else
+               {
+                 /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                 n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
+                                 argv[0], argv[d->optind][0], d->__nextchar);
+#else
+                 fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+                          argv[0], argv[d->optind][0], d->__nextchar);
+#endif
+               }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+             if (n >= 0)
+               {
+                 _IO_flockfile (stderr);
+
+                 int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                 ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                 __fxprintf (NULL, "%s", buf);
+
+                 ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                 _IO_funlockfile (stderr);
+
+                 free (buf);
+               }
+#endif
+           }
+         d->__nextchar = (char *) "";
+         d->optind++;
+         d->optopt = 0;
+         return '?';
+       }
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *d->__nextchar++;
+    char *temp = strchr (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*d->__nextchar == '\0')
+      ++d->optind;
+
+    if (temp == NULL || c == ':')
+      {
+       if (print_errors)
+         {
+#if defined _LIBC && defined USE_IN_LIBIO
+             char *buf;
+             int n;
+#endif
+
+           if (d->__posixly_correct)
+             {
+               /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+               n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
+                               argv[0], c);
+#else
+               fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+#endif
+             }
+           else
+             {
+#if defined _LIBC && defined USE_IN_LIBIO
+               n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
+                               argv[0], c);
+#else
+               fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
+#endif
+             }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+           if (n >= 0)
+             {
+               _IO_flockfile (stderr);
+
+               int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+               ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+               __fxprintf (NULL, "%s", buf);
+
+               ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+               _IO_funlockfile (stderr);
+
+               free (buf);
+             }
+#endif
+         }
+       d->optopt = c;
+       return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+       char *nameend;
+       const struct option *p;
+       const struct option *pfound = NULL;
+       int exact = 0;
+       int ambig = 0;
+       int indfound = 0;
+       int option_index;
+
+       /* This is an option that requires an argument.  */
+       if (*d->__nextchar != '\0')
+         {
+           d->optarg = d->__nextchar;
+           /* If we end this ARGV-element by taking the rest as an arg,
+              we must advance to the next element now.  */
+           d->optind++;
+         }
+       else if (d->optind == argc)
+         {
+           if (print_errors)
+             {
+               /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+               char *buf;
+
+               if (__asprintf (&buf,
+                               _("%s: option requires an argument -- %c\n"),
+                               argv[0], c) >= 0)
+                 {
+                   _IO_flockfile (stderr);
+
+                   int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                   ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                   __fxprintf (NULL, "%s", buf);
+
+                   ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                   _IO_funlockfile (stderr);
+
+                   free (buf);
+                 }
+#else
+               fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+                        argv[0], c);
+#endif
+             }
+           d->optopt = c;
+           if (optstring[0] == ':')
+             c = ':';
+           else
+             c = '?';
+           return c;
+         }
+       else
+         /* We already incremented `d->optind' once;
+            increment it again when taking next ARGV-elt as argument.  */
+         d->optarg = argv[d->optind++];
+
+       /* optarg is now the argument, see if it's in the
+          table of longopts.  */
+
+       for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
+            nameend++)
+         /* Do nothing.  */ ;
+
+       /* Test all long options for either exact match
+          or abbreviated matches.  */
+       for (p = longopts, option_index = 0; p->name; p++, option_index++)
+         if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+           {
+             if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name))
+               {
+                 /* Exact match found.  */
+                 pfound = p;
+                 indfound = option_index;
+                 exact = 1;
+                 break;
+               }
+             else if (pfound == NULL)
+               {
+                 /* First nonexact match found.  */
+                 pfound = p;
+                 indfound = option_index;
+               }
+             else
+               /* Second or later nonexact match found.  */
+               ambig = 1;
+           }
+       if (ambig && !exact)
+         {
+           if (print_errors)
+             {
+#if defined _LIBC && defined USE_IN_LIBIO
+               char *buf;
+
+               if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+                               argv[0], argv[d->optind]) >= 0)
+                 {
+                   _IO_flockfile (stderr);
+
+                   int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                   ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                   __fxprintf (NULL, "%s", buf);
+
+                   ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                   _IO_funlockfile (stderr);
+
+                   free (buf);
+                 }
+#else
+               fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+                        argv[0], argv[d->optind]);
+#endif
+             }
+           d->__nextchar += strlen (d->__nextchar);
+           d->optind++;
+           return '?';
+         }
+       if (pfound != NULL)
+         {
+           option_index = indfound;
+           if (*nameend)
+             {
+               /* Don't test has_arg with >, because some C compilers don't
+                  allow it to be used on enums.  */
+               if (pfound->has_arg)
+                 d->optarg = nameend + 1;
+               else
+                 {
+                   if (print_errors)
+                     {
+#if defined _LIBC && defined USE_IN_LIBIO
+                       char *buf;
+
+                       if (__asprintf (&buf, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                                       argv[0], pfound->name) >= 0)
+                         {
+                           _IO_flockfile (stderr);
+
+                           int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                           ((_IO_FILE *) stderr)->_flags2
+                             |= _IO_FLAGS2_NOTCANCEL;
+
+                           __fxprintf (NULL, "%s", buf);
+
+                           ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                           _IO_funlockfile (stderr);
+
+                           free (buf);
+                         }
+#else
+                       fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                                argv[0], pfound->name);
+#endif
+                     }
+
+                   d->__nextchar += strlen (d->__nextchar);
+                   return '?';
+                 }
+             }
+           else if (pfound->has_arg == 1)
+             {
+               if (d->optind < argc)
+                 d->optarg = argv[d->optind++];
+               else
+                 {
+                   if (print_errors)
+                     {
+#if defined _LIBC && defined USE_IN_LIBIO
+                       char *buf;
+
+                       if (__asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+                                       argv[0], argv[d->optind - 1]) >= 0)
+                         {
+                           _IO_flockfile (stderr);
+
+                           int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                           ((_IO_FILE *) stderr)->_flags2
+                             |= _IO_FLAGS2_NOTCANCEL;
+
+                           __fxprintf (NULL, "%s", buf);
+
+                           ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                           _IO_funlockfile (stderr);
+
+                           free (buf);
+                         }
+#else
+                       fprintf (stderr,
+                                _("%s: option `%s' requires an argument\n"),
+                                argv[0], argv[d->optind - 1]);
+#endif
+                     }
+                   d->__nextchar += strlen (d->__nextchar);
+                   return optstring[0] == ':' ? ':' : '?';
+                 }
+             }
+           d->__nextchar += strlen (d->__nextchar);
+           if (longind != NULL)
+             *longind = option_index;
+           if (pfound->flag)
+             {
+               *(pfound->flag) = pfound->val;
+               return 0;
+             }
+           return pfound->val;
+         }
+         d->__nextchar = NULL;
+         return 'W';   /* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+       if (temp[2] == ':')
+         {
+           /* This is an option that accepts an argument optionally.  */
+           if (*d->__nextchar != '\0')
+             {
+               d->optarg = d->__nextchar;
+               d->optind++;
+             }
+           else
+             d->optarg = NULL;
+           d->__nextchar = NULL;
+         }
+       else
+         {
+           /* This is an option that requires an argument.  */
+           if (*d->__nextchar != '\0')
+             {
+               d->optarg = d->__nextchar;
+               /* If we end this ARGV-element by taking the rest as an arg,
+                  we must advance to the next element now.  */
+               d->optind++;
+             }
+           else if (d->optind == argc)
+             {
+               if (print_errors)
+                 {
+                   /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+                   char *buf;
+
+                   if (__asprintf (&buf, _("\
+%s: option requires an argument -- %c\n"),
+                                   argv[0], c) >= 0)
+                     {
+                       _IO_flockfile (stderr);
+
+                       int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+                       ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+                       __fxprintf (NULL, "%s", buf);
+
+                       ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+                       _IO_funlockfile (stderr);
+
+                       free (buf);
+                     }
+#else
+                   fprintf (stderr,
+                            _("%s: option requires an argument -- %c\n"),
+                            argv[0], c);
+#endif
+                 }
+               d->optopt = c;
+               if (optstring[0] == ':')
+                 c = ':';
+               else
+                 c = '?';
+             }
+           else
+             /* We already incremented `optind' once;
+                increment it again when taking next ARGV-elt as argument.  */
+             d->optarg = argv[d->optind++];
+           d->__nextchar = NULL;
+         }
+      }
+    return c;
+  }
+}
+
+int
+_getopt_internal (int argc, char **argv, const char *optstring,
+                 const struct option *longopts, int *longind,
+                 int long_only, int posixly_correct)
+{
+  int result;
+
+  getopt_data.optind = optind;
+  getopt_data.opterr = opterr;
+
+  result = _getopt_internal_r (argc, argv, optstring, longopts, longind,
+                              long_only, posixly_correct, &getopt_data);
+
+  optind = getopt_data.optind;
+  optarg = getopt_data.optarg;
+  optopt = getopt_data.optopt;
+
+  return result;
+}
+
+/* glibc gets a LSB-compliant getopt.
+   Standalone applications get a POSIX-compliant getopt.  */
+#if _LIBC
+enum { POSIXLY_CORRECT = 0 };
+#else
+enum { POSIXLY_CORRECT = 1 };
+#endif
+
+int
+getopt (int argc, char *const *argv, const char *optstring)
+{
+  return _getopt_internal (argc, (char **) argv, optstring, NULL, NULL, 0,
+                          POSIXLY_CORRECT);
+}
+
+\f
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int
+main (int argc, char **argv)
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+       break;
+
+      switch (c)
+       {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+         if (digit_optind != 0 && digit_optind != this_option_optind)
+           printf ("digits occur in two different argv-elements.\n");
+         digit_optind = this_option_optind;
+         printf ("option %c\n", c);
+         break;
+
+       case 'a':
+         printf ("option a\n");
+         break;
+
+       case 'b':
+         printf ("option b\n");
+         break;
+
+       case 'c':
+         printf ("option c with value `%s'\n", optarg);
+         break;
+
+       case '?':
+         break;
+
+       default:
+         printf ("?? getopt returned character code 0%o ??\n", c);
+       }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+       printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/gl/getopt.in.h b/gl/getopt.in.h
new file mode 100644 (file)
index 0000000..d2d3e6e
--- /dev/null
@@ -0,0 +1,225 @@
+/* Declarations for getopt.
+   Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2005,2006,2007
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+/* Standalone applications should #define __GETOPT_PREFIX to an
+   identifier that prefixes the external functions and variables
+   defined in this header.  When this happens, include the
+   headers that might declare getopt so that they will not cause
+   confusion if included after this file.  Then systematically rename
+   identifiers so that they do not collide with the system functions
+   and variables.  Renaming avoids problems with some compilers and
+   linkers.  */
+#if defined __GETOPT_PREFIX && !defined __need_getopt
+# include <stdlib.h>
+# include <stdio.h>
+# include <unistd.h>
+# undef __need_getopt
+# undef getopt
+# undef getopt_long
+# undef getopt_long_only
+# undef optarg
+# undef opterr
+# undef optind
+# undef optopt
+# define __GETOPT_CONCAT(x, y) x ## y
+# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
+# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
+# define getopt __GETOPT_ID (getopt)
+# define getopt_long __GETOPT_ID (getopt_long)
+# define getopt_long_only __GETOPT_ID (getopt_long_only)
+# define optarg __GETOPT_ID (optarg)
+# define opterr __GETOPT_ID (opterr)
+# define optind __GETOPT_ID (optind)
+# define optopt __GETOPT_ID (optopt)
+#endif
+
+/* Standalone applications get correct prototypes for getopt_long and
+   getopt_long_only; they declare "char **argv".  libc uses prototypes
+   with "char *const *argv" that are incorrect because getopt_long and
+   getopt_long_only can permute argv; this is required for backward
+   compatibility (e.g., for LSB 2.0.1).
+
+   This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
+   but it caused redefinition warnings if both unistd.h and getopt.h were
+   included, since unistd.h includes getopt.h having previously defined
+   __need_getopt.
+
+   The only place where __getopt_argv_const is used is in definitions
+   of getopt_long and getopt_long_only below, but these are visible
+   only if __need_getopt is not defined, so it is quite safe to rewrite
+   the conditional as follows:
+*/
+#if !defined __need_getopt
+# if defined __GETOPT_PREFIX
+#  define __getopt_argv_const /* empty */
+# else
+#  define __getopt_argv_const const
+# endif
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+   standalone, or this is the first header included in the source file.
+   If we are being used with glibc, we need to include <features.h>, but
+   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
+   not defined, include <ctype.h>, which will pull in <features.h> for us
+   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
+   doesn't flood the namespace with stuff the way some other headers do.)  */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifndef __THROW
+# ifndef __GNUC_PREREQ
+#  define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+#  define __THROW      throw ()
+# else
+#  define __THROW
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument         (or 0) if the option does not take an argument,
+   required_argument   (or 1) if the option requires an argument,
+   optional_argument   (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+  const char *name;
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument           0
+# define required_argument     1
+# define optional_argument     2
+#endif /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `-', then non-option arguments are treated as
+   arguments to the option '\1'.  This behavior is specific to the GNU
+   `getopt'.  If OPTS begins with `+', or POSIXLY_CORRECT is set in
+   the environment, then do not permute arguments.  */
+
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+       __THROW;
+
+#ifndef __need_getopt
+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
+                       const char *__shortopts,
+                       const struct option *__longopts, int *__longind)
+       __THROW;
+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
+                            const char *__shortopts,
+                            const struct option *__longopts, int *__longind)
+       __THROW;
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */
diff --git a/gl/getopt1.c b/gl/getopt1.c
new file mode 100644 (file)
index 0000000..ba115c4
--- /dev/null
@@ -0,0 +1,170 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+   Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004,2006,2009
+     Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+\f
+#ifdef _LIBC
+# include <getopt.h>
+#else
+# include <config.h>
+# include "getopt.h"
+#endif
+#include "getopt_int.h"
+
+#include <stdio.h>
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef        NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
+            const struct option *long_options, int *opt_index)
+{
+  return _getopt_internal (argc, (char **) argv, options, long_options,
+                          opt_index, 0, 0);
+}
+
+int
+_getopt_long_r (int argc, char **argv, const char *options,
+               const struct option *long_options, int *opt_index,
+               struct _getopt_data *d)
+{
+  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+                            0, 0, d);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+   If an option that starts with '-' (not '--') doesn't match a long option,
+   but does match a short option, it is parsed as a short option
+   instead.  */
+
+int
+getopt_long_only (int argc, char *__getopt_argv_const *argv,
+                 const char *options,
+                 const struct option *long_options, int *opt_index)
+{
+  return _getopt_internal (argc, (char **) argv, options, long_options,
+                          opt_index, 1, 0);
+}
+
+int
+_getopt_long_only_r (int argc, char **argv, const char *options,
+                    const struct option *long_options, int *opt_index,
+                    struct _getopt_data *d)
+{
+  return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+                            1, 0, d);
+}
+
+\f
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+      int option_index = 0;
+      static const struct option long_options[] =
+      {
+       {"add", 1, 0, 0},
+       {"append", 0, 0, 0},
+       {"delete", 1, 0, 0},
+       {"verbose", 0, 0, 0},
+       {"create", 0, 0, 0},
+       {"file", 1, 0, 0},
+       {0, 0, 0, 0}
+      };
+
+      c = getopt_long (argc, argv, "abc:d:0123456789",
+                      long_options, &option_index);
+      if (c == -1)
+       break;
+
+      switch (c)
+       {
+       case 0:
+         printf ("option %s", long_options[option_index].name);
+         if (optarg)
+           printf (" with arg %s", optarg);
+         printf ("\n");
+         break;
+
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+         if (digit_optind != 0 && digit_optind != this_option_optind)
+           printf ("digits occur in two different argv-elements.\n");
+         digit_optind = this_option_optind;
+         printf ("option %c\n", c);
+         break;
+
+       case 'a':
+         printf ("option a\n");
+         break;
+
+       case 'b':
+         printf ("option b\n");
+         break;
+
+       case 'c':
+         printf ("option c with value `%s'\n", optarg);
+         break;
+
+       case 'd':
+         printf ("option d with value `%s'\n", optarg);
+         break;
+
+       case '?':
+         break;
+
+       default:
+         printf ("?? getopt returned character code 0%o ??\n", c);
+       }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+       printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/gl/getopt_int.h b/gl/getopt_int.h
new file mode 100644 (file)
index 0000000..3c6628b
--- /dev/null
@@ -0,0 +1,130 @@
+/* Internal declarations for getopt.
+   Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _GETOPT_INT_H
+#define _GETOPT_INT_H  1
+
+extern int _getopt_internal (int ___argc, char **___argv,
+                            const char *__shortopts,
+                            const struct option *__longopts, int *__longind,
+                            int __long_only, int __posixly_correct);
+
+\f
+/* Reentrant versions which can handle parsing multiple argument
+   vectors at the same time.  */
+
+/* Data type for reentrant functions.  */
+struct _getopt_data
+{
+  /* These have exactly the same meaning as the corresponding global
+     variables, except that they are used for the reentrant
+     versions of getopt.  */
+  int optind;
+  int opterr;
+  int optopt;
+  char *optarg;
+
+  /* Internal members.  */
+
+  /* True if the internal members have been initialized.  */
+  int __initialized;
+
+  /* The next char to be scanned in the option-element
+     in which the last option character we returned was found.
+     This allows us to pick up the scan where we left off.
+
+     If this is zero, or a null string, it means resume the scan
+     by advancing to the next ARGV-element.  */
+  char *__nextchar;
+
+  /* Describe how to deal with options that follow non-option ARGV-elements.
+
+     If the caller did not specify anything,
+     the default is REQUIRE_ORDER if the environment variable
+     POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+     REQUIRE_ORDER means don't recognize them as options;
+     stop option processing when the first non-option is seen.
+     This is what Unix does.
+     This mode of operation is selected by either setting the environment
+     variable POSIXLY_CORRECT, or using `+' as the first character
+     of the list of option characters, or by calling getopt.
+
+     PERMUTE is the default.  We permute the contents of ARGV as we
+     scan, so that eventually all the non-options are at the end.
+     This allows options to be given in any order, even with programs
+     that were not written to expect this.
+
+     RETURN_IN_ORDER is an option available to programs that were
+     written to expect options and other ARGV-elements in any order
+     and that care about the ordering of the two.  We describe each
+     non-option ARGV-element as if it were the argument of an option
+     with character code 1.  Using `-' as the first character of the
+     list of option characters selects this mode of operation.
+
+     The special argument `--' forces an end of option-scanning regardless
+     of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+     `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+  enum
+    {
+      REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+    } __ordering;
+
+  /* If the POSIXLY_CORRECT environment variable is set
+     or getopt was called.  */
+  int __posixly_correct;
+
+
+  /* Handle permutation of arguments.  */
+
+  /* Describe the part of ARGV that contains non-options that have
+     been skipped.  `first_nonopt' is the index in ARGV of the first
+     of them; `last_nonopt' is the index after the last of them.  */
+
+  int __first_nonopt;
+  int __last_nonopt;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  int __nonoption_flags_max_len;
+  int __nonoption_flags_len;
+# endif
+};
+
+/* The initializer is necessary to set OPTIND and OPTERR to their
+   default values and to clear the initialization flag.  */
+#define _GETOPT_DATA_INITIALIZER       { 1, 1 }
+
+extern int _getopt_internal_r (int ___argc, char **___argv,
+                              const char *__shortopts,
+                              const struct option *__longopts, int *__longind,
+                              int __long_only, int __posixly_correct,
+                              struct _getopt_data *__data);
+
+extern int _getopt_long_r (int ___argc, char **___argv,
+                          const char *__shortopts,
+                          const struct option *__longopts, int *__longind,
+                          struct _getopt_data *__data);
+
+extern int _getopt_long_only_r (int ___argc, char **___argv,
+                               const char *__shortopts,
+                               const struct option *__longopts,
+                               int *__longind,
+                               struct _getopt_data *__data);
+
+#endif /* getopt_int.h */
diff --git a/gl/gettext.h b/gl/gettext.h
new file mode 100644 (file)
index 0000000..41c0ae1
--- /dev/null
@@ -0,0 +1,174 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+   Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option.  */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions.  */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+   the gettext() and ngettext() macros.  This is an alternative to calling
+   textdomain(), and is useful for libraries.  */
+# ifdef DEFAULT_TEXT_DOMAIN
+#  undef gettext
+#  define gettext(Msgid) \
+     dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+#  undef ngettext
+#  define ngettext(Msgid1, Msgid2, N) \
+     dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+   chokes if dcgettext is defined as a macro.  So include it now, to make
+   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
+   as well because people using "gettext.h" will not include <libintl.h>,
+   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+   is OK.  */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+   <libintl.h>, which chokes if dcgettext is defined as a macro.  So include
+   it now, to make later inclusions of <libintl.h> a NOP.  */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
+#  include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+   The casts to 'const char *' serve the purpose of producing warnings
+   for invalid uses of the value returned from these functions.
+   On pre-ANSI systems without 'const', the config.h file is supposed to
+   contain "#define const".  */
+# undef gettext
+# define gettext(Msgid) ((const char *) (Msgid))
+# undef dgettext
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# undef dcgettext
+# define dcgettext(Domainname, Msgid, Category) \
+    ((void) (Category), dgettext (Domainname, Msgid))
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+    ((N) == 1 \
+     ? ((void) (Msgid2), (const char *) (Msgid1)) \
+     : ((void) (Msgid1), (const char *) (Msgid2)))
+# undef dngettext
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+    ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# undef dcngettext
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+    ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
+# undef textdomain
+# define textdomain(Domainname) ((const char *) (Domainname))
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) \
+    ((void) (Domainname), (const char *) (Dirname))
+# undef bind_textdomain_codeset
+# define bind_textdomain_codeset(Domainname, Codeset) \
+    ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+   extraction of messages, but does not call gettext().  The run-time
+   translation is done at a different place in the code.
+   The argument, String, should be a literal string.  Concatenated strings
+   and other string expressions won't work.
+   The macro's expansion is not parenthesized, so that it is suitable as
+   initializer for static 'char[]' or 'const char[]' variables.  */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file.  */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+   MSGID.  MSGCTXT and MSGID must be string literals.  MSGCTXT should be
+   short and rarely need to change.
+   The letter 'p' stands for 'particular' or 'special'.  */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+             const char *msg_ctxt_id, const char *msgid,
+             int category)
+{
+  const char *translation = dcgettext (domain, msg_ctxt_id, category);
+  if (translation == msg_ctxt_id)
+    return msgid;
+  else
+    return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+              const char *msg_ctxt_id, const char *msgid,
+              const char *msgid_plural, unsigned long int n,
+              int category)
+{
+  const char *translation =
+    dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+  if (translation == msg_ctxt_id || translation == msgid_plural)
+    return (n == 1 ? msgid : msgid_plural);
+  else
+    return translation;
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/gl/intprops.h b/gl/intprops.h
new file mode 100644 (file)
index 0000000..002161e
--- /dev/null
@@ -0,0 +1,77 @@
+/* intprops.h -- properties of integer types
+
+   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert.  */
+
+#include <limits.h>
+
+/* The extra casts in the following macros work around compiler bugs,
+   e.g., in Cray C 5.0.3.0.  */
+
+/* True if the arithmetic type T is an integer type.  bool counts as
+   an integer.  */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+   complement, ones' complement, or signed magnitude representation,
+   respectively.  Much GNU code assumes two's complement, but some
+   people like to be portable to all possible C hosts.  */
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the arithmetic type T is signed.  */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T.  These
+   macros have undefined behavior if T is signed and has padding bits.
+   If this is a problem for you, please let us know how to fix it for
+   your host.  */
+#define TYPE_MINIMUM(t) \
+  ((t) (! TYPE_SIGNED (t) \
+       ? (t) 0 \
+       : TYPE_SIGNED_MAGNITUDE (t) \
+       ? ~ (t) 0 \
+       : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) (! TYPE_SIGNED (t) \
+       ? (t) -1 \
+       : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+/* Return zero if T can be determined to be an unsigned type.
+   Otherwise, return 1.
+   When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a
+   tighter bound.  Otherwise, it overestimates the true bound by one byte
+   when applied to unsigned types of size 2, 4, 16, ... bytes.
+   The symbol signed_type_or_expr__ is private to this header file.  */
+#if __GNUC__ >= 2
+# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t))
+#else
+# define signed_type_or_expr__(t) 1
+#endif
+
+/* Bound on length of the string representing an integer type or expression T.
+   Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485;
+   add 1 for integer division truncation; add 1 more for a minus sign
+   if needed.  */
+#define INT_STRLEN_BOUND(t) \
+  ((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \
+   + signed_type_or_expr__ (t) + 1)
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+   including the terminating null.  */
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
diff --git a/gl/m4/00gnulib.m4 b/gl/m4/00gnulib.m4
new file mode 100644 (file)
index 0000000..d4d04d1
--- /dev/null
@@ -0,0 +1,30 @@
+# 00gnulib.m4 serial 2
+dnl Copyright (C) 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl This file must be named something that sorts before all other
+dnl gnulib-provided .m4 files.  It is needed until such time as we can
+dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE semantics.
+
+# AC_DEFUN_ONCE([NAME], VALUE)
+# ----------------------------
+# Define NAME to expand to VALUE on the first use (whether by direct
+# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses.
+# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier.  This
+# definition is slower than the version in Autoconf 2.64, because it
+# can only use interfaces that existed since 2.59; but it achieves the
+# same effect.  Quoting is necessary to avoid confusing Automake.
+m4_version_prereq([2.63.263], [],
+[m4_define([AC][_DEFUN_ONCE],
+  [AC][_DEFUN([$1],
+    [AC_REQUIRE([_gl_DEFUN_ONCE([$1])],
+      [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl
+[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])])
+
+# gl_00GNULIB
+# -----------
+# Witness macro that this file has been included.  Needed to force
+# Automake to include this file prior to all other gnulib .m4 files.
+AC_DEFUN([gl_00GNULIB])
diff --git a/gl/m4/autobuild.m4 b/gl/m4/autobuild.m4
new file mode 100644 (file)
index 0000000..a025e73
--- /dev/null
@@ -0,0 +1,39 @@
+# autobuild.m4 serial 7
+dnl Copyright (C) 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# Usage: AB_INIT([MODE]).
+AC_DEFUN([AB_INIT],
+[
+  AC_REQUIRE([AC_CANONICAL_BUILD])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+
+  if test -z "$AB_PACKAGE"; then
+    AB_PACKAGE=${PACKAGE_NAME:-$PACKAGE}
+  fi
+  AC_MSG_NOTICE([autobuild project... $AB_PACKAGE])
+
+  if test -z "$AB_VERSION"; then
+    AB_VERSION=${PACKAGE_VERSION:-$VERSION}
+  fi
+  AC_MSG_NOTICE([autobuild revision... $AB_VERSION])
+
+  hostname=`hostname`
+  if test "$hostname"; then
+    AC_MSG_NOTICE([autobuild hostname... $hostname])
+  fi
+
+  ifelse([$1],[],,[AC_MSG_NOTICE([autobuild mode... $1])])
+
+  date=`TZ=UTC0 date +%Y%m%dT%H%M%SZ`
+  if test "$?" != 0; then
+    date=`date`
+  fi
+  if test "$date"; then
+    AC_MSG_NOTICE([autobuild timestamp... $date])
+  fi
+])
diff --git a/gl/m4/csharp.m4 b/gl/m4/csharp.m4
new file mode 100644 (file)
index 0000000..48fc3ab
--- /dev/null
@@ -0,0 +1,28 @@
+# csharp.m4 serial 3
+dnl Copyright (C) 2004-2005, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Sets CSHARP_CHOICE to the preferred C# implementation:
+# 'pnet' or 'mono' or 'any' or 'no'.
+AC_DEFUN([gt_CSHARP_CHOICE],
+[
+  AC_MSG_CHECKING([for preferred C[#] implementation])
+  AC_ARG_ENABLE([csharp],
+    [  --enable-csharp[[=IMPL]]  choose preferred C[#] implementation (pnet or mono)],
+    [CSHARP_CHOICE="$enableval"],
+    CSHARP_CHOICE=any)
+  AC_SUBST([CSHARP_CHOICE])
+  AC_MSG_RESULT([$CSHARP_CHOICE])
+  case "$CSHARP_CHOICE" in
+    pnet)
+      AC_DEFINE([CSHARP_CHOICE_PNET], [1],
+        [Define if pnet is the preferred C# implementation.])
+      ;;
+    mono)
+      AC_DEFINE([CSHARP_CHOICE_MONO], [1],
+        [Define if mono is the preferred C# implementation.])
+      ;;
+  esac
+])
diff --git a/gl/m4/csharpcomp.m4 b/gl/m4/csharpcomp.m4
new file mode 100644 (file)
index 0000000..ebb1de4
--- /dev/null
@@ -0,0 +1,78 @@
+# csharpcomp.m4 serial 8
+dnl Copyright (C) 2003-2005, 2007, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prerequisites of csharpcomp.sh.
+# Checks for a C# compiler.
+# Sets at most one of HAVE_CSCC, HAVE_MCS, HAVE_CSC.
+# Sets HAVE_CSHARPCOMP to nonempty if csharpcomp.sh will work.
+# Also sets CSHARPCOMPFLAGS.
+AC_DEFUN([gt_CSHARPCOMP],
+[
+  AC_REQUIRE([gt_CSHARP_CHOICE])
+  AC_MSG_CHECKING([for C[#] compiler])
+  HAVE_CSHARPCOMP=1
+  pushdef([AC_MSG_CHECKING],[:])dnl
+  pushdef([AC_CHECKING],[:])dnl
+  pushdef([AC_MSG_RESULT],[:])dnl
+  AC_CHECK_PROG([HAVE_CSCC_IN_PATH], [cscc], [yes])
+  AC_CHECK_PROG([HAVE_MCS_IN_PATH], [mcs], [yes])
+  AC_CHECK_PROG([HAVE_CSC_IN_PATH], [csc], [yes])
+  popdef([AC_MSG_RESULT])dnl
+  popdef([AC_CHECKING])dnl
+  popdef([AC_MSG_CHECKING])dnl
+  for impl in "$CSHARP_CHOICE" pnet mono sscli no; do
+    case "$impl" in
+      pnet)
+        if test -n "$HAVE_CSCC_IN_PATH" \
+           && cscc --version >/dev/null 2>/dev/null \
+           && (
+             # See if pnetlib is well installed.
+             echo 'class ConfTest { static void Main() { } }' > conftest.cs
+             cscc -o conftest.exe conftest.cs 2>/dev/null
+             error=$?
+             rm -f conftest.cs conftest.exe
+             exit $error
+            ); then
+          HAVE_CSCC=1
+          ac_result="cscc"
+          break
+        fi
+        ;;
+      mono)
+        if test -n "$HAVE_MCS_IN_PATH" \
+           && mcs --version >/dev/null 2>/dev/null \
+           && mcs --version 2>/dev/null | grep Mono >/dev/null; then
+          HAVE_MCS=1
+          ac_result="mcs"
+          break
+        fi
+        ;;
+      sscli)
+        if test -n "$HAVE_CSC_IN_PATH" \
+           && csc -help >/dev/null 2>/dev/null \
+           && { if csc -help 2>/dev/null | grep -i chicken > /dev/null; then false; else true; fi; }; then
+          HAVE_CSC=1
+          ac_result="csc"
+          break
+        fi
+        ;;
+      no)
+        HAVE_CSHARPCOMP=
+        ac_result="no"
+        break
+        ;;
+    esac
+  done
+  AC_MSG_RESULT([$ac_result])
+  AC_SUBST([HAVE_CSCC])
+  AC_SUBST([HAVE_MCS])
+  AC_SUBST([HAVE_CSC])
+  dnl Provide a default for CSHARPCOMPFLAGS.
+  if test -z "${CSHARPCOMPFLAGS+set}"; then
+    CSHARPCOMPFLAGS="-O -g"
+  fi
+  AC_SUBST([CSHARPCOMPFLAGS])
+])
diff --git a/gl/m4/errno_h.m4 b/gl/m4/errno_h.m4
new file mode 100644 (file)
index 0000000..16188d9
--- /dev/null
@@ -0,0 +1,112 @@
+# errno_h.m4 serial 5
+dnl Copyright (C) 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
+    AC_EGREP_CPP([booboo],[
+#include <errno.h>
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+      ],
+      [gl_cv_header_errno_h_complete=no],
+      [gl_cv_header_errno_h_complete=yes])
+  ])
+  if test $gl_cv_header_errno_h_complete = yes; then
+    ERRNO_H=''
+  else
+    gl_CHECK_NEXT_HEADERS([errno.h])
+    ERRNO_H='errno.h'
+  fi
+  AC_SUBST([ERRNO_H])
+  gl_REPLACE_ERRNO_VALUE([EMULTIHOP])
+  gl_REPLACE_ERRNO_VALUE([ENOLINK])
+  gl_REPLACE_ERRNO_VALUE([EOVERFLOW])
+])
+
+# Assuming $1 = EOVERFLOW.
+# The EOVERFLOW errno value ought to be defined in <errno.h>, according to
+# POSIX.  But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and
+# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
+# Check for the value of EOVERFLOW.
+# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE.
+AC_DEFUN([gl_REPLACE_ERRNO_VALUE],
+[
+  if test -n "$ERRNO_H"; then
+    AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [
+      AC_EGREP_CPP([yes],[
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+      ],
+      [gl_cv_header_errno_h_]$1[=yes],
+      [gl_cv_header_errno_h_]$1[=no])
+      if test $gl_cv_header_errno_h_]$1[ = no; then
+        AC_EGREP_CPP([yes],[
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+          ], [gl_cv_header_errno_h_]$1[=hidden])
+        if test $gl_cv_header_errno_h_]$1[ = hidden; then
+          dnl The macro exists but is hidden.
+          dnl Define it to the same value.
+          AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug.  */
+#include <stdio.h>
+#include <stdlib.h>
+])
+        fi
+      fi
+    ])
+    case $gl_cv_header_errno_h_]$1[ in
+      yes | no)
+        ]$1[_HIDDEN=0; ]$1[_VALUE=
+        ;;
+      *)
+        ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1["
+        ;;
+    esac
+    AC_SUBST($1[_HIDDEN])
+    AC_SUBST($1[_VALUE])
+  fi
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
diff --git a/gl/m4/error.m4 b/gl/m4/error.m4
new file mode 100644 (file)
index 0000000..7c7746e
--- /dev/null
@@ -0,0 +1,22 @@
+#serial 11
+
+# Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2004 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ERROR],
+[
+  AC_FUNC_ERROR_AT_LINE
+  dnl Note: AC_FUNC_ERROR_AT_LINE does AC_LIBSOURCES([error.h, error.c]).
+  gl_PREREQ_ERROR
+])
+
+# Prerequisites of lib/error.c.
+AC_DEFUN([gl_PREREQ_ERROR],
+[
+  AC_REQUIRE([AC_FUNC_STRERROR_R])
+  :
+])
diff --git a/gl/m4/extensions.m4 b/gl/m4/extensions.m4
new file mode 100644 (file)
index 0000000..ba6d5e1
--- /dev/null
@@ -0,0 +1,104 @@
+# serial 8  -*- Autoconf -*-
+# Enable extensions on systems that normally disable them.
+
+# Copyright (C) 2003, 2006-2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS
+# Autoconf.  Perhaps we can remove this once we can assume Autoconf
+# 2.62 or later everywhere, but since CVS Autoconf mutates rapidly
+# enough in this area it's likely we'll need to redefine
+# AC_USE_SYSTEM_EXTENSIONS for quite some time.
+
+# AC_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+# Remember that #undef in AH_VERBATIM gets replaced with #define by
+# AC_DEFINE.  The goal here is to define all known feature-enabling
+# macros, then, if reports of conflicts are made, disable macros that
+# cause problems on some platforms (such as __EXTENSIONS__).
+AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
+[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
+AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
+
+  AC_REQUIRE([AC_CANONICAL_HOST])
+
+  AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
+  if test "$MINIX" = yes; then
+    AC_DEFINE([_POSIX_SOURCE], [1],
+      [Define to 1 if you need to in order for `stat' and other
+       things to work.])
+    AC_DEFINE([_POSIX_1_SOURCE], [2],
+      [Define to 2 if the system does not provide POSIX.1 features
+       except with this defined.])
+    AC_DEFINE([_MINIX], [1],
+      [Define to 1 if on MINIX.])
+  fi
+
+  dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
+  dnl regardless of whether the flags -Ae or _D_HPUX_SOURCE=1 are already
+  dnl provided.
+  case "$host_os" in
+    hpux*)
+      AC_DEFINE([_XOPEN_SOURCE], [500],
+        [Define to 500 only on HP-UX.])
+      ;;
+  esac
+
+  AH_VERBATIM([__EXTENSIONS__],
+[/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+])
+  AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
+    [ac_cv_safe_to_define___extensions__],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([[
+#        define __EXTENSIONS__ 1
+         ]AC_INCLUDES_DEFAULT])],
+       [ac_cv_safe_to_define___extensions__=yes],
+       [ac_cv_safe_to_define___extensions__=no])])
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    AC_DEFINE([__EXTENSIONS__])
+  AC_DEFINE([_ALL_SOURCE])
+  AC_DEFINE([_GNU_SOURCE])
+  AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
+  AC_DEFINE([_TANDEM_SOURCE])
+])# AC_USE_SYSTEM_EXTENSIONS
+
+# gl_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
+[
+  dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS.
+  dnl gnulib does not need it. But if it gets required by third-party macros
+  dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a
+  dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS".
+  dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE,
+  dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck.
+  AC_REQUIRE([AC_GNU_SOURCE])
+
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+])
diff --git a/gl/m4/getopt.m4 b/gl/m4/getopt.m4
new file mode 100644 (file)
index 0000000..9b683c2
--- /dev/null
@@ -0,0 +1,83 @@
+# getopt.m4 serial 14
+dnl Copyright (C) 2002-2006, 2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# The getopt module assume you want GNU getopt, with getopt_long etc,
+# rather than vanilla POSIX getopt.  This means your code should
+# always include <getopt.h> for the getopt prototypes.
+
+AC_DEFUN([gl_GETOPT_SUBSTITUTE],
+[
+  AC_LIBOBJ([getopt])
+  AC_LIBOBJ([getopt1])
+  gl_GETOPT_SUBSTITUTE_HEADER
+  gl_PREREQ_GETOPT
+])
+
+AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
+[
+  GETOPT_H=getopt.h
+  AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
+    [Define to rpl_ if the getopt replacement functions and variables
+     should be used.])
+  AC_SUBST([GETOPT_H])
+])
+
+AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
+[
+  if test -z "$GETOPT_H"; then
+    AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
+  fi
+
+  if test -z "$GETOPT_H"; then
+    AC_CHECK_FUNCS([getopt_long_only], [], [GETOPT_H=getopt.h])
+  fi
+
+  dnl BSD getopt_long uses an incompatible method to reset option processing,
+  dnl and (as of 2004-10-15) mishandles optional option-arguments.
+  if test -z "$GETOPT_H"; then
+    AC_CHECK_DECL([optreset], [GETOPT_H=getopt.h], [], [#include <getopt.h>])
+  fi
+
+  dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+  dnl option string (as of 2005-05-05).
+  if test -z "$GETOPT_H"; then
+    AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_gnu_getopt],
+      [AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM([[#include <getopt.h>]],
+          [[
+            char *myargv[3];
+            myargv[0] = "conftest";
+            myargv[1] = "-+";
+            myargv[2] = 0;
+            return getopt (2, myargv, "+a") != '?';
+          ]])],
+       [gl_cv_func_gnu_getopt=yes],
+       [gl_cv_func_gnu_getopt=no],
+       [dnl cross compiling - pessimistically guess based on decls
+        dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+        dnl option string (as of 2005-05-05).
+        AC_CHECK_DECL([getopt_clip],
+          [gl_cv_func_gnu_getopt=no], [gl_cv_func_gnu_getopt=yes],
+          [#include <getopt.h>])])])
+    if test "$gl_cv_func_gnu_getopt" = "no"; then
+      GETOPT_H=getopt.h
+    fi
+  fi
+])
+
+AC_DEFUN([gl_GETOPT_IFELSE],
+[
+  AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
+  AS_IF([test -n "$GETOPT_H"], [$1], [$2])
+])
+
+AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])])
+
+# Prerequisites of lib/getopt*.
+AC_DEFUN([gl_PREREQ_GETOPT],
+[
+  AC_CHECK_DECLS_ONCE([getenv])
+])
diff --git a/gl/m4/gnulib-cache.m4 b/gl/m4/gnulib-cache.m4
new file mode 100644 (file)
index 0000000..ee13be4
--- /dev/null
@@ -0,0 +1,53 @@
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the specification of how gnulib-tool is used.
+# It acts as a cache: It is written and read by gnulib-tool.
+# In projects using CVS, this file is meant to be stored in CVS,
+# like the configure.ac and various Makefile.am files.
+
+
+# Specification in the form of a command-line invocation:
+#   gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=gltests --aux-dir=build-aux --with-tests --libtool --macro-prefix=gl --no-vc-files autobuild csharpcomp-script error fdl-1.3 gendocs getopt gnupload gpl-3.0 lgpl-2.1 maintainer-makefile manywarnings pmccabe2html progname useless-if-before-free vc-list-files version-etc warnings
+
+# Specification in the form of a few gnulib-tool.m4 macro invocations:
+gl_LOCAL_DIR([gl/override])
+gl_MODULES([
+  autobuild
+  csharpcomp-script
+  error
+  fdl-1.3
+  gendocs
+  getopt
+  gnupload
+  gpl-3.0
+  lgpl-2.1
+  maintainer-makefile
+  manywarnings
+  pmccabe2html
+  progname
+  useless-if-before-free
+  vc-list-files
+  version-etc
+  warnings
+])
+gl_AVOID([])
+gl_SOURCE_BASE([gl])
+gl_M4_BASE([gl/m4])
+gl_PO_BASE([])
+gl_DOC_BASE([doc])
+gl_TESTS_BASE([gltests])
+gl_WITH_TESTS
+gl_LIB([libgnu])
+gl_MAKEFILE_NAME([])
+gl_LIBTOOL
+gl_MACRO_PREFIX([gl])
+gl_PO_DOMAIN([])
+gl_VC_FILES([false])
diff --git a/gl/m4/gnulib-common.m4 b/gl/m4/gnulib-common.m4
new file mode 100644 (file)
index 0000000..c8fda20
--- /dev/null
@@ -0,0 +1,124 @@
+# gnulib-common.m4 serial 11
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_COMMON
+# is expanded unconditionally through gnulib-tool magic.
+AC_DEFUN([gl_COMMON], [
+  dnl Use AC_REQUIRE here, so that the code is expanded once only.
+  AC_REQUIRE([gl_00GNULIB])
+  AC_REQUIRE([gl_COMMON_BODY])
+])
+AC_DEFUN([gl_COMMON_BODY], [
+  AH_VERBATIM([isoc99_inline],
+[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+   the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+   earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+   __APPLE__ && __MACH__ test for MacOS X.
+   __APPLE_CC__ tests for the Apple compiler and its version.
+   __STDC_VERSION__ tests for the C99 mode.  */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif])
+  AH_VERBATIM([unused_parameter],
+[/* Define as a marker that can be attached to function parameter declarations
+   for parameters that are not used.  This helps to reduce warnings, such as
+   from GCC -Wunused-parameter.  */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _UNUSED_PARAMETER_ __attribute__ ((__unused__))
+#else
+# define _UNUSED_PARAMETER_
+#endif
+])
+])
+
+# gl_MODULE_INDICATOR([modulename])
+# defines a C macro indicating the presence of the given module.
+AC_DEFUN([gl_MODULE_INDICATOR],
+[
+  AC_DEFINE([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+    [Define to 1 when using the gnulib module ]$1[.])
+])
+
+# m4_foreach_w
+# is a backport of autoconf-2.59c's m4_foreach_w.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifndef([m4_foreach_w],
+  [m4_define([m4_foreach_w],
+    [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
+
+# AC_PROG_MKDIR_P
+# is a backport of autoconf-2.60's AC_PROG_MKDIR_P.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifdef([AC_PROG_MKDIR_P], [], [
+  AC_DEFUN_ONCE([AC_PROG_MKDIR_P],
+    [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+     MKDIR_P='$(mkdir_p)'
+     AC_SUBST([MKDIR_P])])])
+
+# AC_C_RESTRICT
+# This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
+# so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
+# works.
+# This definition can be removed once autoconf >= 2.62 can be assumed.
+AC_DEFUN([AC_C_RESTRICT],
+[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
+  [ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+      [[typedef int * int_ptr;
+       int foo (int_ptr $ac_kw ip) {
+       return ip[0];
+       }]],
+      [[int s[1];
+       int * $ac_kw t = s;
+       t[0] = 0;
+       return foo(t)]])],
+      [ac_cv_c_restrict=$ac_kw])
+     test "$ac_cv_c_restrict" != no && break
+   done
+  ])
+ AH_VERBATIM([restrict],
+[/* Define to the equivalent of the C99 'restrict' keyword, or to
+   nothing if this is not supported.  Do not define if restrict is
+   supported directly.  */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict, even
+   though the corresponding Sun C compiler does, which causes
+   "#define restrict _Restrict" in the previous line.  Perhaps some future
+   version of Sun C++ will work with _Restrict; if so, it'll probably
+   define __RESTRICT, just as Sun C does.  */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+#endif])
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) AC_DEFINE([restrict], []) ;;
+   *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
+ esac
+])
+
+# gl_BIGENDIAN
+# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
+# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some
+# macros invoke AC_C_BIGENDIAN with arguments.
+AC_DEFUN([gl_BIGENDIAN],
+[
+  AC_C_BIGENDIAN
+])
+
+# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it)
+# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not
+# output a spurious "(cached)" mark in the midst of other configure output.
+# This macro should be used instead of AC_CACHE_VAL when it is not surrounded
+# by an AC_MSG_CHECKING/AC_MSG_RESULT pair.
+AC_DEFUN([gl_CACHE_VAL_SILENT],
+[
+  saved_as_echo_n="$as_echo_n"
+  as_echo_n=':'
+  AC_CACHE_VAL([$1], [$2])
+  as_echo_n="$saved_as_echo_n"
+])
diff --git a/gl/m4/gnulib-comp.m4 b/gl/m4/gnulib-comp.m4
new file mode 100644 (file)
index 0000000..b1c6c08
--- /dev/null
@@ -0,0 +1,263 @@
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the compiled summary of the specification in
+# gnulib-cache.m4. It lists the computed macro invocations that need
+# to be invoked from configure.ac.
+# In projects using CVS, this file can be treated like other built files.
+
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Checks for programs", right after AC_PROG_CC, and certainly before
+# any checks for libraries, header files, types and library functions.
+AC_DEFUN([gl_EARLY],
+[
+  m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
+  m4_pattern_allow([^gl_ES$])dnl a valid locale name
+  m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
+  m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+  AC_REQUIRE([AC_PROG_RANLIB])
+  AB_INIT
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
+  dnl for the builtin va_copy to work.  With Autoconf 2.60 or later,
+  dnl AC_PROG_CC_STDC arranges for this.  With older Autoconf AC_PROG_CC_STDC
+  dnl shouldn't hurt, though installers are on their own to set c99 mode.
+  AC_REQUIRE([AC_PROG_CC_STDC])
+])
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([gl_INIT],
+[
+  AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
+  gl_cond_libtool=true
+  m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
+  m4_pushdef([gl_LIBSOURCES_LIST], [])
+  m4_pushdef([gl_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='gl'
+  AC_REQUIRE([gt_CSHARPCOMP])
+  AC_CONFIG_FILES([csharpcomp.sh:build-aux/csharpcomp.sh.in])
+  gl_HEADER_ERRNO_H
+  gl_ERROR
+  m4_ifdef([AM_XGETTEXT_OPTION],
+    [AM_XGETTEXT_OPTION([--flag=error:3:c-format])
+     AM_XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
+  gl_GETOPT
+  AC_SUBST([LIBINTL])
+  AC_SUBST([LTLIBINTL])
+  # Autoconf 2.61a.99 and earlier don't support linking a file only
+  # in VPATH builds.  But since GNUmakefile is for maintainer use
+  # only, it does not matter if we skip the link with older autoconf.
+  # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
+  # builds, so use a shell variable to bypass this.
+  GNUmakefile=GNUmakefile
+  m4_if(m4_version_compare([2.61a.100],
+       m4_defn([m4_PACKAGE_VERSION])), [1], [],
+        [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
+       [GNUmakefile=$GNUmakefile])])
+  gl_PMCCABE2HTML
+  gl_STDARG_H
+  gl_FUNC_STRERROR
+  gl_STRING_MODULE_INDICATOR([strerror])
+  gl_HEADER_STRING_H
+  gl_UNISTD_H
+  gl_VERSION_ETC
+  AC_SUBST([WARN_CFLAGS])
+  m4_ifval(gl_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
+      for gl_file in ]gl_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([gl_LIBSOURCES_DIR])
+  m4_popdef([gl_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    gl_libobjs=
+    gl_ltlibobjs=
+    if test -n "$gl_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        gl_libobjs="$gl_libobjs $i.$ac_objext"
+        gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
+    AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
+  ])
+  gltests_libdeps=
+  gltests_ltlibdeps=
+  m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
+  m4_pushdef([gltests_LIBSOURCES_LIST], [])
+  m4_pushdef([gltests_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='gltests'
+  abs_aux_dir=`cd "$ac_aux_dir"; pwd`
+  AC_SUBST([abs_aux_dir])
+  m4_ifval(gltests_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
+      for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([gltests_LIBSOURCES_DIR])
+  m4_popdef([gltests_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    gltests_libobjs=
+    gltests_ltlibobjs=
+    if test -n "$gltests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+        gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
+    AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
+  ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_LIBOBJ], [
+  AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
+  gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gl_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([gl_LIBSOURCES_DIR], [gl])
+      m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_LIBOBJ], [
+  AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
+  gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gltests_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([gltests_LIBSOURCES_DIR], [gltests])
+      m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# This macro records the list of files which have been installed by
+# gnulib-tool and may be removed by future gnulib-tool invocations.
+AC_DEFUN([gl_FILE_LIST], [
+  build-aux/csharpcomp.sh.in
+  build-aux/gendocs.sh
+  build-aux/gnupload
+  build-aux/link-warning.h
+  build-aux/pmccabe.css
+  build-aux/pmccabe2html
+  build-aux/useless-if-before-free
+  build-aux/vc-list-files
+  doc/fdl-1.3.texi
+  doc/gendocs_template
+  doc/gpl-3.0.texi
+  doc/lgpl-2.1.texi
+  lib/errno.in.h
+  lib/error.c
+  lib/error.h
+  lib/getopt.c
+  lib/getopt.in.h
+  lib/getopt1.c
+  lib/getopt_int.h
+  lib/gettext.h
+  lib/intprops.h
+  lib/progname.c
+  lib/progname.h
+  lib/stdarg.in.h
+  lib/strerror.c
+  lib/string.in.h
+  lib/unistd.in.h
+  lib/version-etc.c
+  lib/version-etc.h
+  m4/00gnulib.m4
+  m4/autobuild.m4
+  m4/csharp.m4
+  m4/csharpcomp.m4
+  m4/errno_h.m4
+  m4/error.m4
+  m4/extensions.m4
+  m4/getopt.m4
+  m4/gnulib-common.m4
+  m4/include_next.m4
+  m4/manywarnings.m4
+  m4/pmccabe2html.m4
+  m4/stdarg.m4
+  m4/strerror.m4
+  m4/string_h.m4
+  m4/unistd_h.m4
+  m4/version-etc.m4
+  m4/warnings.m4
+  tests/test-errno.c
+  tests/test-strerror.c
+  tests/test-string.c
+  tests/test-unistd.c
+  tests/test-vc-list-files-cvs.sh
+  tests/test-vc-list-files-git.sh
+  top/GNUmakefile
+  top/maint.mk
+])
diff --git a/gl/m4/include_next.m4 b/gl/m4/include_next.m4
new file mode 100644 (file)
index 0000000..5e22ded
--- /dev/null
@@ -0,0 +1,187 @@
+# include_next.m4 serial 14
+dnl Copyright (C) 2006-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert and Derek Price.
+
+dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER.
+dnl
+dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
+dnl 'include' otherwise.
+dnl
+dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler
+dnl supports it in the special case that it is the first include directive in
+dnl the given file, or to 'include' otherwise.
+dnl
+dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
+dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
+dnl '#pragma GCC system_header' has the same effect as if the file was found
+dnl through the include search path specified with '-isystem' options (as
+dnl opposed to the search path specified with '-I' options). Namely, gcc
+dnl does not warn about some things, and on some systems (Solaris and Interix)
+dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
+dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
+dnl of plain '__STDC__'.
+
+AC_DEFUN([gl_INCLUDE_NEXT],
+[
+  AC_LANG_PREPROC_REQUIRE()
+  AC_CACHE_CHECK([whether the preprocessor supports include_next],
+    [gl_cv_have_include_next],
+    [rm -rf conftestd1a conftestd1b conftestd2
+     mkdir conftestd1a conftestd1b conftestd2
+     dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on
+     dnl AIX 6.1 support include_next when used as first preprocessor directive
+     dnl in a file, but not when preceded by another include directive. Check
+     dnl for this bug by including <stdio.h>.
+     dnl Additionally, with this same compiler, include_next is a no-op when
+     dnl used in a header file that was included by specifying its absolute
+     dnl file name. Despite these two bugs, include_next is used in the
+     dnl compiler's <math.h>. By virtue of the second bug, we need to use
+     dnl include_next as well in this case.
+     cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+     cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+     gl_save_CPPFLAGS="$CPPFLAGS"
+     CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+     AC_COMPILE_IFELSE([#include <conftest.h>],
+       [gl_cv_have_include_next=yes],
+       [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+        AC_COMPILE_IFELSE([#include <conftest.h>],
+          [gl_cv_have_include_next=buggy],
+          [gl_cv_have_include_next=no])
+       ])
+     CPPFLAGS="$gl_save_CPPFLAGS"
+     rm -rf conftestd1a conftestd1b conftestd2
+    ])
+  PRAGMA_SYSTEM_HEADER=
+  if test $gl_cv_have_include_next = yes; then
+    INCLUDE_NEXT=include_next
+    INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    if test -n "$GCC"; then
+      PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+    fi
+  else
+    if test $gl_cv_have_include_next = buggy; then
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+    else
+      INCLUDE_NEXT=include
+      INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+    fi
+  fi
+  AC_SUBST([INCLUDE_NEXT])
+  AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
+  AC_SUBST([PRAGMA_SYSTEM_HEADER])
+])
+
+# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------------
+# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be
+# '<foo.h>'; otherwise define it to be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# Also, if #include_next works as first preprocessing directive in a file,
+# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be '<foo.h>'; otherwise define it to
+# be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# That way, a header file with the following line:
+#      #@INCLUDE_NEXT@ @NEXT_FOO_H@
+# or
+#      #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@
+# behaves (after sed substitution) as if it contained
+#      #include_next <foo.h>
+# even if the compiler does not support include_next.
+# The three "///" are to pacify Sun C 5.8, which otherwise would say
+# "warning: #include of /usr/include/... may be non-portable".
+# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
+# Note: This macro assumes that the header file is not empty after
+# preprocessing, i.e. it does not only define preprocessor macros but also
+# provides some type/enum definitions or function/variable declarations.
+AC_DEFUN([gl_CHECK_NEXT_HEADERS],
+[
+  AC_REQUIRE([gl_INCLUDE_NEXT])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_CHECK_HEADERS_ONCE([$1])
+
+  m4_foreach_w([gl_HEADER_NAME], [$1],
+    [AS_VAR_PUSHDEF([gl_next_header],
+                   [gl_cv_next_]m4_defn([gl_HEADER_NAME]))
+     if test $gl_cv_have_include_next = yes; then
+       AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+     else
+       AC_CACHE_CHECK(
+        [absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+        m4_defn([gl_next_header]),
+        [AS_VAR_PUSHDEF([gl_header_exists],
+                        [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
+         if test AS_VAR_GET(gl_header_exists) = yes; then
+           AC_LANG_CONFTEST(
+             [AC_LANG_SOURCE(
+                [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
+              )])
+           dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
+           dnl that contain only a #include of other header files and no
+           dnl non-comment tokens of their own. This leads to a failure to
+           dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
+           dnl and others. The workaround is to force preservation of comments
+           dnl through option -C. This ensures all necessary #line directives
+           dnl are present. GCC supports option -C as well.
+           case "$host_os" in
+             aix*) gl_absname_cpp="$ac_cpp -C" ;;
+             *)    gl_absname_cpp="$ac_cpp" ;;
+           esac
+           dnl eval is necessary to expand gl_absname_cpp.
+           dnl Ultrix and Pyramid sh refuse to redirect output of eval,
+           dnl so use subshell.
+           AS_VAR_SET([gl_next_header],
+             ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+              sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
+                s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
+                s#^/[^/]#//&#
+                p
+                q
+              }'`'"'])
+         else
+           AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+         fi
+         AS_VAR_POPDEF([gl_header_exists])])
+     fi
+     AC_SUBST(
+       AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
+       [AS_VAR_GET([gl_next_header])])
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'gl_HEADER_NAME'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=AS_VAR_GET([gl_next_header])
+     fi
+     AC_SUBST(
+       AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
+       [$gl_next_as_first_directive])
+     AS_VAR_POPDEF([gl_next_header])])
+])
diff --git a/gl/m4/manywarnings.m4 b/gl/m4/manywarnings.m4
new file mode 100644 (file)
index 0000000..7f36fb4
--- /dev/null
@@ -0,0 +1,108 @@
+# manywarnings.m4 serial 1
+dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR)
+# --------------------------------------------------
+# Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR.
+# Elements separated by whitespace.  In set logic terms, the function
+# does OUTVAR = LISTVAR \ REMOVEVAR.
+AC_DEFUN([gl_MANYWARN_COMPLEMENT],
+[
+  gl_warn_set=
+  set x $2; shift
+  for gl_warn_item
+  do
+    case " $3 " in
+      *" $gl_warn_item "*)
+        ;;
+      *)
+        gl_warn_set="$gl_warn_set $gl_warn_item"
+        ;;
+    esac
+  done
+  $1=$gl_warn_set
+])
+
+# gl_MANYWARN_ALL_GCC(VARIABLE)
+# -----------------------------
+# Add all documented GCC (currently as per version 4.4) warning
+# parameters to variable VARIABLE.  Note that you need to test them
+# using gl_WARN_ADD if you want to make sure your gcc understands it.
+AC_DEFUN([gl_MANYWARN_ALL_GCC],
+[
+ gl_manywarn_set=
+ for gl_manywarn_item in \
+   -Wall \
+   -W \
+   -Wformat-y2k \
+   -Wformat-nonliteral \
+   -Wformat-security \
+   -Winit-self \
+   -Wmissing-include-dirs \
+   -Wswitch-default \
+   -Wswitch-enum \
+   -Wunused \
+   -Wunknown-pragmas \
+   -Wstrict-aliasing \
+   -Wstrict-overflow \
+   -Wsystem-headers \
+   -Wfloat-equal \
+   -Wtraditional \
+   -Wtraditional-conversion \
+   -Wdeclaration-after-statement \
+   -Wundef \
+   -Wshadow \
+   -Wunsafe-loop-optimizations \
+   -Wpointer-arith \
+   -Wbad-function-cast \
+   -Wc++-compat \
+   -Wcast-qual \
+   -Wcast-align \
+   -Wwrite-strings \
+   -Wconversion \
+   -Wsign-conversion \
+   -Wlogical-op \
+   -Waggregate-return \
+   -Wstrict-prototypes \
+   -Wold-style-definition \
+   -Wmissing-prototypes \
+   -Wmissing-declarations \
+   -Wmissing-noreturn \
+   -Wmissing-format-attribute \
+   -Wpacked \
+   -Wpadded \
+   -Wredundant-decls \
+   -Wnested-externs \
+   -Wunreachable-code \
+   -Winline \
+   -Winvalid-pch \
+   -Wlong-long \
+   -Wvla \
+   -Wvolatile-register-var \
+   -Wdisabled-optimization \
+   -Wstack-protector \
+   -Woverlength-strings \
+   -Wbuiltin-macro-redefined \
+   -Wmudflap \
+   -Wpacked-bitfield-compat \
+   -Wsync-nand \
+  ; do
+    gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+  done
+ # The following are not documented in the manual but are included in
+ # output from gcc --help=warnings.
+ for gl_manywarn_item in \
+   -Wattributes \
+   -Wcoverage-mismatch \
+   -Wmultichar \
+   -Wunused-macros \
+  ; do
+    gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+  done
+  $1=$gl_manywarn_set
+])
diff --git a/gl/m4/pmccabe2html.m4 b/gl/m4/pmccabe2html.m4
new file mode 100644 (file)
index 0000000..2985f7c
--- /dev/null
@@ -0,0 +1,14 @@
+# pmccabe2html.m4 serial 2
+dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# Usage: gl_PMCCABE2HTML([]).
+AC_DEFUN([gl_PMCCABE2HTML],
+[
+  AC_REQUIRE([AC_PROG_AWK])
+  AC_PATH_PROG([PMCCABE], [pmccabe], [false])
+])
diff --git a/gl/m4/stdarg.m4 b/gl/m4/stdarg.m4
new file mode 100644 (file)
index 0000000..a9ada4f
--- /dev/null
@@ -0,0 +1,67 @@
+# stdarg.m4 serial 3
+dnl Copyright (C) 2006, 2008-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Provide a working va_copy in combination with <stdarg.h>.
+
+AC_DEFUN([gl_STDARG_H],
+[
+  STDARG_H='';                AC_SUBST([STDARG_H])
+  NEXT_STDARG_H='<stdarg.h>'; AC_SUBST([NEXT_STDARG_H])
+  AC_MSG_CHECKING([for va_copy])
+  AC_CACHE_VAL([gl_cv_func_va_copy], [
+    AC_TRY_COMPILE([#include <stdarg.h>], [
+#ifndef va_copy
+void (*func) (va_list, va_list) = va_copy;
+#endif
+],
+      [gl_cv_func_va_copy=yes], [gl_cv_func_va_copy=no])])
+  AC_MSG_RESULT([$gl_cv_func_va_copy])
+  if test $gl_cv_func_va_copy = no; then
+    dnl Provide a substitute.
+    dnl Usually a simple definition in <config.h> is enough. Not so on AIX 5
+    dnl with some versions of the /usr/vac/bin/cc compiler. It has an <stdarg.h>
+    dnl which does '#undef va_copy', leading to a missing va_copy symbol. For
+    dnl this platform, we use an <stdarg.h> substitute. But we cannot use this
+    dnl approach on other platforms, because <stdarg.h> often defines only
+    dnl preprocessor macros and gl_ABSOLUTE_HEADER, gl_CHECK_NEXT_HEADERS do
+    dnl not work in this situation.
+    AC_EGREP_CPP([vaccine],
+      [#if defined _AIX && !defined __GNUC__
+        AIX vaccine
+       #endif
+      ], [gl_aixcc=yes], [gl_aixcc=no])
+    if test $gl_aixcc = yes; then
+      dnl Provide a substitute <stdarg.h> file.
+      STDARG_H=stdarg.h
+      gl_CHECK_NEXT_HEADERS([stdarg.h])
+      dnl Fallback for the case when <stdarg.h> contains only macro definitions.
+      if test "$gl_cv_next_stdarg_h" = '""'; then
+        gl_cv_next_stdarg_h='"///usr/include/stdarg.h"'
+        NEXT_STDARG_H="$gl_cv_next_stdarg_h"
+      fi
+    else
+      dnl Provide a substitute in <config.h>, either __va_copy or as a simple
+      dnl assignment.
+      gl_CACHE_VAL_SILENT([gl_cv_func___va_copy], [
+        AC_TRY_COMPILE([#include <stdarg.h>], [
+#ifndef __va_copy
+error, bail out
+#endif
+],
+          [gl_cv_func___va_copy=yes], [gl_cv_func___va_copy=no])])
+      if test $gl_cv_func___va_copy = yes; then
+        AC_DEFINE([va_copy], [__va_copy],
+          [Define as a macro for copying va_list variables.])
+      else
+        AH_VERBATIM([gl_VA_COPY], [/* A replacement for va_copy, if needed.  */
+#define gl_va_copy(a,b) ((a) = (b))])
+        AC_DEFINE([va_copy], [gl_va_copy],
+          [Define as a macro for copying va_list variables.])
+      fi
+    fi
+  fi
+])
diff --git a/gl/m4/strerror.m4 b/gl/m4/strerror.m4
new file mode 100644 (file)
index 0000000..8c16ca9
--- /dev/null
@@ -0,0 +1,68 @@
+# strerror.m4 serial 9
+dnl Copyright (C) 2002, 2007-2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRERROR],
+[
+  AC_REQUIRE([gl_FUNC_STRERROR_SEPARATE])
+  if test $REPLACE_STRERROR = 1; then
+    AC_LIBOBJ([strerror])
+    AC_DEFINE_UNQUOTED([REPLACE_STRERROR], [$REPLACE_STRERROR],
+      [Define this to 1 if strerror is broken.])
+  fi
+])
+
+# Like gl_FUNC_STRERROR, except prepare for separate compilation (no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_STRERROR_SEPARATE],
+[
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_REQUIRE([gl_HEADER_ERRNO_H])
+  if test -z "$ERRNO_H"; then
+    AC_CACHE_CHECK([for working strerror function],
+     [gl_cv_func_working_strerror],
+     [AC_RUN_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#include <string.h>
+           ]],
+           [[return !*strerror (-2);]])],
+        [gl_cv_func_working_strerror=yes],
+        [gl_cv_func_working_strerror=no],
+        [dnl Assume crossbuild works if it compiles.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM(
+              [[#include <string.h>
+              ]],
+              [[return !*strerror (-2);]])],
+           [gl_cv_func_working_strerror=yes],
+           [gl_cv_func_working_strerror=no])
+      ])
+    ])
+    if test $gl_cv_func_working_strerror = no; then
+      dnl The system's strerror() fails to return a string for out-of-range
+      dnl integers. Replace it.
+      REPLACE_STRERROR=1
+    fi
+  else
+    dnl The system's strerror() cannot know about the new errno values we add
+    dnl to <errno.h>. Replace it.
+    REPLACE_STRERROR=1
+  fi
+  if test $REPLACE_STRERROR = 1; then
+    gl_PREREQ_STRERROR
+  fi
+])
+
+# Prerequisites of lib/strerror.c.
+AC_DEFUN([gl_PREREQ_STRERROR], [
+  AC_CHECK_DECLS([strerror])
+  AC_CHECK_HEADERS_ONCE([sys/socket.h])
+  if test $ac_cv_header_sys_socket_h != yes; then
+    dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
+    dnl the check for those headers unconditional; yet cygwin reports
+    dnl that the headers are present but cannot be compiled (since on
+    dnl cygwin, all socket information should come from sys/socket.h).
+    AC_CHECK_HEADERS([winsock2.h])
+  fi
+])
diff --git a/gl/m4/string_h.m4 b/gl/m4/string_h.m4
new file mode 100644 (file)
index 0000000..2d5553c
--- /dev/null
@@ -0,0 +1,92 @@
+# Configure a GNU-like replacement for <string.h>.
+
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_HEADER_STRING_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_HEADER_STRING_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_BODY],
+[
+  AC_REQUIRE([AC_C_RESTRICT])
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  gl_CHECK_NEXT_HEADERS([string.h])
+])
+
+AC_DEFUN([gl_STRING_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
+[
+  GNULIB_MEMMEM=0;      AC_SUBST([GNULIB_MEMMEM])
+  GNULIB_MEMPCPY=0;     AC_SUBST([GNULIB_MEMPCPY])
+  GNULIB_MEMRCHR=0;     AC_SUBST([GNULIB_MEMRCHR])
+  GNULIB_RAWMEMCHR=0;   AC_SUBST([GNULIB_RAWMEMCHR])
+  GNULIB_STPCPY=0;      AC_SUBST([GNULIB_STPCPY])
+  GNULIB_STPNCPY=0;     AC_SUBST([GNULIB_STPNCPY])
+  GNULIB_STRCHRNUL=0;   AC_SUBST([GNULIB_STRCHRNUL])
+  GNULIB_STRDUP=0;      AC_SUBST([GNULIB_STRDUP])
+  GNULIB_STRNDUP=0;     AC_SUBST([GNULIB_STRNDUP])
+  GNULIB_STRNLEN=0;     AC_SUBST([GNULIB_STRNLEN])
+  GNULIB_STRPBRK=0;     AC_SUBST([GNULIB_STRPBRK])
+  GNULIB_STRSEP=0;      AC_SUBST([GNULIB_STRSEP])
+  GNULIB_STRSTR=0;      AC_SUBST([GNULIB_STRSTR])
+  GNULIB_STRCASESTR=0;  AC_SUBST([GNULIB_STRCASESTR])
+  GNULIB_STRTOK_R=0;    AC_SUBST([GNULIB_STRTOK_R])
+  GNULIB_MBSLEN=0;      AC_SUBST([GNULIB_MBSLEN])
+  GNULIB_MBSNLEN=0;     AC_SUBST([GNULIB_MBSNLEN])
+  GNULIB_MBSCHR=0;      AC_SUBST([GNULIB_MBSCHR])
+  GNULIB_MBSRCHR=0;     AC_SUBST([GNULIB_MBSRCHR])
+  GNULIB_MBSSTR=0;      AC_SUBST([GNULIB_MBSSTR])
+  GNULIB_MBSCASECMP=0;  AC_SUBST([GNULIB_MBSCASECMP])
+  GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
+  GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
+  GNULIB_MBSCASESTR=0;  AC_SUBST([GNULIB_MBSCASESTR])
+  GNULIB_MBSCSPN=0;     AC_SUBST([GNULIB_MBSCSPN])
+  GNULIB_MBSPBRK=0;     AC_SUBST([GNULIB_MBSPBRK])
+  GNULIB_MBSSPN=0;      AC_SUBST([GNULIB_MBSSPN])
+  GNULIB_MBSSEP=0;      AC_SUBST([GNULIB_MBSSEP])
+  GNULIB_MBSTOK_R=0;    AC_SUBST([GNULIB_MBSTOK_R])
+  GNULIB_STRERROR=0;    AC_SUBST([GNULIB_STRERROR])
+  GNULIB_STRSIGNAL=0;   AC_SUBST([GNULIB_STRSIGNAL])
+  GNULIB_STRVERSCMP=0;   AC_SUBST([GNULIB_STRVERSCMP])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_DECL_MEMMEM=1;          AC_SUBST([HAVE_DECL_MEMMEM])
+  HAVE_MEMPCPY=1;              AC_SUBST([HAVE_MEMPCPY])
+  HAVE_DECL_MEMRCHR=1;         AC_SUBST([HAVE_DECL_MEMRCHR])
+  HAVE_RAWMEMCHR=1;            AC_SUBST([HAVE_RAWMEMCHR])
+  HAVE_STPCPY=1;               AC_SUBST([HAVE_STPCPY])
+  HAVE_STPNCPY=1;              AC_SUBST([HAVE_STPNCPY])
+  HAVE_STRCHRNUL=1;            AC_SUBST([HAVE_STRCHRNUL])
+  HAVE_DECL_STRDUP=1;          AC_SUBST([HAVE_DECL_STRDUP])
+  HAVE_STRNDUP=1;              AC_SUBST([HAVE_STRNDUP])
+  HAVE_DECL_STRNDUP=1;         AC_SUBST([HAVE_DECL_STRNDUP])
+  HAVE_DECL_STRNLEN=1;         AC_SUBST([HAVE_DECL_STRNLEN])
+  HAVE_STRPBRK=1;              AC_SUBST([HAVE_STRPBRK])
+  HAVE_STRSEP=1;               AC_SUBST([HAVE_STRSEP])
+  HAVE_STRCASESTR=1;           AC_SUBST([HAVE_STRCASESTR])
+  HAVE_DECL_STRTOK_R=1;                AC_SUBST([HAVE_DECL_STRTOK_R])
+  HAVE_DECL_STRERROR=1;                AC_SUBST([HAVE_DECL_STRERROR])
+  HAVE_DECL_STRSIGNAL=1;       AC_SUBST([HAVE_DECL_STRSIGNAL])
+  HAVE_STRVERSCMP=1;           AC_SUBST([HAVE_STRVERSCMP])
+  REPLACE_MEMMEM=0;            AC_SUBST([REPLACE_MEMMEM])
+  REPLACE_STRDUP=0;            AC_SUBST([REPLACE_STRDUP])
+  REPLACE_STRSTR=0;            AC_SUBST([REPLACE_STRSTR])
+  REPLACE_STRCASESTR=0;                AC_SUBST([REPLACE_STRCASESTR])
+  REPLACE_STRERROR=0;          AC_SUBST([REPLACE_STRERROR])
+  REPLACE_STRSIGNAL=0;         AC_SUBST([REPLACE_STRSIGNAL])
+])
diff --git a/gl/m4/unistd_h.m4 b/gl/m4/unistd_h.m4
new file mode 100644 (file)
index 0000000..ff9a4ea
--- /dev/null
@@ -0,0 +1,83 @@
+# unistd_h.m4 serial 17
+dnl Copyright (C) 2006-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Simon Josefsson, Bruno Haible.
+
+AC_DEFUN([gl_UNISTD_H],
+[
+  dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+  dnl once only, before all statements that occur in other macros.
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
+  gl_CHECK_NEXT_HEADERS([unistd.h])
+
+  AC_CHECK_HEADERS_ONCE([unistd.h])
+  if test $ac_cv_header_unistd_h = yes; then
+    HAVE_UNISTD_H=1
+  else
+    HAVE_UNISTD_H=0
+  fi
+  AC_SUBST([HAVE_UNISTD_H])
+])
+
+AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_UNISTD_H_DEFAULTS],
+[
+  GNULIB_CHOWN=0;            AC_SUBST([GNULIB_CHOWN])
+  GNULIB_CLOSE=0;            AC_SUBST([GNULIB_CLOSE])
+  GNULIB_DUP2=0;             AC_SUBST([GNULIB_DUP2])
+  GNULIB_ENVIRON=0;          AC_SUBST([GNULIB_ENVIRON])
+  GNULIB_EUIDACCESS=0;       AC_SUBST([GNULIB_EUIDACCESS])
+  GNULIB_FCHDIR=0;           AC_SUBST([GNULIB_FCHDIR])
+  GNULIB_FSYNC=0;            AC_SUBST([GNULIB_FSYNC])
+  GNULIB_FTRUNCATE=0;        AC_SUBST([GNULIB_FTRUNCATE])
+  GNULIB_GETCWD=0;           AC_SUBST([GNULIB_GETCWD])
+  GNULIB_GETDOMAINNAME=0;    AC_SUBST([GNULIB_GETDOMAINNAME])
+  GNULIB_GETDTABLESIZE=0;    AC_SUBST([GNULIB_GETDTABLESIZE])
+  GNULIB_GETHOSTNAME=0;      AC_SUBST([GNULIB_GETHOSTNAME])
+  GNULIB_GETLOGIN_R=0;       AC_SUBST([GNULIB_GETLOGIN_R])
+  GNULIB_GETPAGESIZE=0;      AC_SUBST([GNULIB_GETPAGESIZE])
+  GNULIB_GETUSERSHELL=0;     AC_SUBST([GNULIB_GETUSERSHELL])
+  GNULIB_LCHOWN=0;           AC_SUBST([GNULIB_LCHOWN])
+  GNULIB_LINK=0;             AC_SUBST([GNULIB_LINK])
+  GNULIB_LSEEK=0;            AC_SUBST([GNULIB_LSEEK])
+  GNULIB_READLINK=0;         AC_SUBST([GNULIB_READLINK])
+  GNULIB_SLEEP=0;            AC_SUBST([GNULIB_SLEEP])
+  GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
+  GNULIB_WRITE=0;            AC_SUBST([GNULIB_WRITE])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_DUP2=1;            AC_SUBST([HAVE_DUP2])
+  HAVE_EUIDACCESS=1;      AC_SUBST([HAVE_EUIDACCESS])
+  HAVE_FSYNC=1;           AC_SUBST([HAVE_FSYNC])
+  HAVE_FTRUNCATE=1;       AC_SUBST([HAVE_FTRUNCATE])
+  HAVE_GETDOMAINNAME=1;   AC_SUBST([HAVE_GETDOMAINNAME])
+  HAVE_GETDTABLESIZE=1;   AC_SUBST([HAVE_GETDTABLESIZE])
+  HAVE_GETHOSTNAME=1;     AC_SUBST([HAVE_GETHOSTNAME])
+  HAVE_GETPAGESIZE=1;     AC_SUBST([HAVE_GETPAGESIZE])
+  HAVE_GETUSERSHELL=1;    AC_SUBST([HAVE_GETUSERSHELL])
+  HAVE_LINK=1;            AC_SUBST([HAVE_LINK])
+  HAVE_READLINK=1;        AC_SUBST([HAVE_READLINK])
+  HAVE_SLEEP=1;           AC_SUBST([HAVE_SLEEP])
+  HAVE_DECL_ENVIRON=1;    AC_SUBST([HAVE_DECL_ENVIRON])
+  HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+  HAVE_OS_H=0;            AC_SUBST([HAVE_OS_H])
+  HAVE_SYS_PARAM_H=0;     AC_SUBST([HAVE_SYS_PARAM_H])
+  REPLACE_CHOWN=0;        AC_SUBST([REPLACE_CHOWN])
+  REPLACE_CLOSE=0;        AC_SUBST([REPLACE_CLOSE])
+  REPLACE_FCHDIR=0;       AC_SUBST([REPLACE_FCHDIR])
+  REPLACE_GETCWD=0;       AC_SUBST([REPLACE_GETCWD])
+  REPLACE_GETPAGESIZE=0;  AC_SUBST([REPLACE_GETPAGESIZE])
+  REPLACE_LCHOWN=0;       AC_SUBST([REPLACE_LCHOWN])
+  REPLACE_LSEEK=0;        AC_SUBST([REPLACE_LSEEK])
+  REPLACE_WRITE=0;        AC_SUBST([REPLACE_WRITE])
+  UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
+])
diff --git a/gl/m4/version-etc.m4 b/gl/m4/version-etc.m4
new file mode 100644 (file)
index 0000000..14d6eb6
--- /dev/null
@@ -0,0 +1,33 @@
+# version-etc.m4 serial 1
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl $1 - configure flag and define name
+dnl $2 - human readable description
+m4_define([gl_VERSION_ETC_FLAG],
+[dnl
+  AC_ARG_WITH([$1], [AS_HELP_STRING([--with-$1], [$2])],
+    [dnl
+      case $withval in
+       yes|no) ;;
+       *) AC_DEFINE_UNQUOTED(AS_TR_CPP([PACKAGE_$1]), ["$withval"], [$2]) ;;
+      esac
+    ])
+])
+
+AC_DEFUN([gl_VERSION_ETC],
+[dnl
+  gl_VERSION_ETC_FLAG([packager],
+                     [String identifying the packager of this software])
+  gl_VERSION_ETC_FLAG([packager-version],
+                     [Packager-specific version information])
+  gl_VERSION_ETC_FLAG([packager-bug-reports],
+                     [Packager info for bug reports (URL/e-mail/...)])
+  if test "X$with_packager" = "X" && \
+     test "X$with_packager_version$with_packager_bug_reports" != "X"
+  then
+    AC_MSG_ERROR([The --with-packager-{bug-reports,version} options require --with-packager])
+  fi
+])
diff --git a/gl/m4/warnings.m4 b/gl/m4/warnings.m4
new file mode 100644 (file)
index 0000000..c32cf4e
--- /dev/null
@@ -0,0 +1,44 @@
+# warnings.m4 serial 2
+dnl Copyright (C) 2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# gl_AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH])
+# ----------------------------------------------------
+# Provide the functionality of AS_VAR_IF if Autoconf does not have it.
+m4_ifdef([AS_VAR_IF],
+[m4_copy([AS_VAR_IF], [gl_AS_VAR_IF])],
+[m4_define([gl_AS_VAR_IF],
+[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])])
+
+# gl_AS_VAR_APPEND(VAR, VALUE)
+# ----------------------------
+# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
+m4_ifdef([AS_VAR_APPEND],
+[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
+[m4_define([gl_AS_VAR_APPEND],
+[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
+
+# gl_WARN_ADD(PARAMETER, [VARIABLE = WARN_CFLAGS])
+# ------------------------------------------------
+# Adds parameter to WARN_CFLAGS if the compiler supports it.  For example,
+# gl_WARN_ADD([-Wparentheses]).
+AC_DEFUN([gl_WARN_ADD],
+[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_$1])dnl
+AC_CACHE_CHECK([whether compiler handles $1], [gl_Warn], [
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="${CPPFLAGS} $1"
+  AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
+                    [AS_VAR_SET([gl_Warn], [yes])],
+                   [AS_VAR_SET([gl_Warn], [no])])
+  CPPFLAGS="$save_CPPFLAGS"
+])
+AS_VAR_PUSHDEF([gl_Flags], m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]))dnl
+gl_AS_VAR_IF([gl_Warn], [yes], [gl_AS_VAR_APPEND([gl_Flags], [" $1"])])
+AS_VAR_POPDEF([gl_Flags])dnl
+AS_VAR_POPDEF([gl_Warn])dnl
+m4_ifval([$2], [AS_LITERAL_IF([$2], [AC_SUBST([$2])], [])])dnl
+])
diff --git a/gl/progname.c b/gl/progname.c
new file mode 100644 (file)
index 0000000..9854b5e
--- /dev/null
@@ -0,0 +1,63 @@
+/* Program name management.
+   Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc.
+   Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+
+#include <config.h>
+
+/* Specification.  */
+#undef ENABLE_RELOCATABLE /* avoid defining set_program_name as a macro */
+#include "progname.h"
+
+#include <string.h>
+
+
+/* String containing name the program is called with.
+   To be initialized by main().  */
+const char *program_name = NULL;
+
+/* Set program_name, based on argv[0].  */
+void
+set_program_name (const char *argv0)
+{
+  /* libtool creates a temporary executable whose name is sometimes prefixed
+     with "lt-" (depends on the platform).  It also makes argv[0] absolute.
+     But the name of the temporary executable is a detail that should not be
+     visible to the end user and to the test suite.
+     Remove this "<dirname>/.libs/" or "<dirname>/.libs/lt-" prefix here.  */
+  const char *slash;
+  const char *base;
+
+  slash = strrchr (argv0, '/');
+  base = (slash != NULL ? slash + 1 : argv0);
+  if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0)
+    {
+      argv0 = base;
+      if (strncmp (base, "lt-", 3) == 0)
+       argv0 = base + 3;
+    }
+
+  /* But don't strip off a leading <dirname>/ in general, because when the user
+     runs
+         /some/hidden/place/bin/cp foo foo
+     he should get the error message
+         /some/hidden/place/bin/cp: `foo' and `foo' are the same file
+     not
+         cp: `foo' and `foo' are the same file
+   */
+
+  program_name = argv0;
+}
diff --git a/gl/progname.h b/gl/progname.h
new file mode 100644 (file)
index 0000000..c5983f6
--- /dev/null
@@ -0,0 +1,60 @@
+/* Program name management.
+   Copyright (C) 2001-2004, 2006 Free Software Foundation, Inc.
+   Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#ifndef _PROGNAME_H
+#define _PROGNAME_H
+
+/* Programs using this file should do the following in main():
+     set_program_name (argv[0]);
+ */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* String containing name the program is called with.  */
+extern const char *program_name;
+
+/* Set program_name, based on argv[0].  */
+extern void set_program_name (const char *argv0);
+
+#if defined(ENABLE_RELOCATABLE) && ENABLE_RELOCATABLE
+
+/* Set program_name, based on argv[0], and original installation prefix and
+   directory, for relocatability.  */
+extern void set_program_name_and_installdir (const char *argv0,
+                                            const char *orig_installprefix,
+                                            const char *orig_installdir);
+#undef set_program_name
+#define set_program_name(ARG0) \
+  set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR)
+
+/* Return the full pathname of the current executable, based on the earlier
+   call to set_program_name_and_installdir.  Return NULL if unknown.  */
+extern char *get_full_program_name (void);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _PROGNAME_H */
diff --git a/gl/stdarg.in.h b/gl/stdarg.in.h
new file mode 100644 (file)
index 0000000..186a495
--- /dev/null
@@ -0,0 +1,35 @@
+/* Substitute for and wrapper around <stdarg.h>.
+   Copyright (C) 2008 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_STDARG_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STDARG_H@
+
+#ifndef _GL_STDARG_H
+#define _GL_STDARG_H
+
+#ifndef va_copy
+# define va_copy(a,b) ((a) = (b))
+#endif
+
+#endif /* _GL_STDARG_H */
+#endif /* _GL_STDARG_H */
diff --git a/gl/strerror.c b/gl/strerror.c
new file mode 100644 (file)
index 0000000..798d854
--- /dev/null
@@ -0,0 +1,341 @@
+/* strerror.c --- POSIX compatible system error routine
+
+   Copyright (C) 2007-2009 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+#include <string.h>
+
+#if REPLACE_STRERROR
+
+# include <errno.h>
+# include <stdio.h>
+
+# if GNULIB_defined_ESOCK /* native Windows platforms */
+#  if HAVE_WINSOCK2_H
+#   include <winsock2.h>
+#  endif
+# endif
+
+# include "intprops.h"
+
+# undef strerror
+# if ! HAVE_DECL_STRERROR
+#  define strerror(n) NULL
+# endif
+
+char *
+rpl_strerror (int n)
+{
+  char const *msg = NULL;
+  /* These error messages are taken from glibc/sysdeps/gnu/errlist.c.  */
+  switch (n)
+    {
+# if GNULIB_defined_ETXTBSY
+    case ETXTBSY:
+      msg = "Text file busy";
+      break;
+# endif
+
+# if GNULIB_defined_ESOCK /* native Windows platforms */
+    /* EWOULDBLOCK is the same as EAGAIN.  */
+    case EINPROGRESS:
+      msg = "Operation now in progress";
+      break;
+    case EALREADY:
+      msg = "Operation already in progress";
+      break;
+    case ENOTSOCK:
+      msg = "Socket operation on non-socket";
+      break;
+    case EDESTADDRREQ:
+      msg = "Destination address required";
+      break;
+    case EMSGSIZE:
+      msg = "Message too long";
+      break;
+    case EPROTOTYPE:
+      msg = "Protocol wrong type for socket";
+      break;
+    case ENOPROTOOPT:
+      msg = "Protocol not available";
+      break;
+    case EPROTONOSUPPORT:
+      msg = "Protocol not supported";
+      break;
+    case ESOCKTNOSUPPORT:
+      msg = "Socket type not supported";
+      break;
+    case EOPNOTSUPP:
+      msg = "Operation not supported";
+      break;
+    case EPFNOSUPPORT:
+      msg = "Protocol family not supported";
+      break;
+    case EAFNOSUPPORT:
+      msg = "Address family not supported by protocol";
+      break;
+    case EADDRINUSE:
+      msg = "Address already in use";
+      break;
+    case EADDRNOTAVAIL:
+      msg = "Cannot assign requested address";
+      break;
+    case ENETDOWN:
+      msg = "Network is down";
+      break;
+    case ENETUNREACH:
+      msg = "Network is unreachable";
+      break;
+    case ENETRESET:
+      msg = "Network dropped connection on reset";
+      break;
+    case ECONNABORTED:
+      msg = "Software caused connection abort";
+      break;
+    case ECONNRESET:
+      msg = "Connection reset by peer";
+      break;
+    case ENOBUFS:
+      msg = "No buffer space available";
+      break;
+    case EISCONN:
+      msg = "Transport endpoint is already connected";
+      break;
+    case ENOTCONN:
+      msg = "Transport endpoint is not connected";
+      break;
+    case ESHUTDOWN:
+      msg = "Cannot send after transport endpoint shutdown";
+      break;
+    case ETOOMANYREFS:
+      msg = "Too many references: cannot splice";
+      break;
+    case ETIMEDOUT:
+      msg = "Connection timed out";
+      break;
+    case ECONNREFUSED:
+      msg = "Connection refused";
+      break;
+    case ELOOP:
+      msg = "Too many levels of symbolic links";
+      break;
+    case EHOSTDOWN:
+      msg = "Host is down";
+      break;
+    case EHOSTUNREACH:
+      msg = "No route to host";
+      break;
+    case EPROCLIM:
+      msg = "Too many processes";
+      break;
+    case EUSERS:
+      msg = "Too many users";
+      break;
+    case EDQUOT:
+      msg = "Disk quota exceeded";
+      break;
+    case ESTALE:
+      msg = "Stale NFS file handle";
+      break;
+    case EREMOTE:
+      msg = "Object is remote";
+      break;
+#  if HAVE_WINSOCK2_H
+    /* WSA_INVALID_HANDLE maps to EBADF */
+    /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
+    /* WSA_INVALID_PARAMETER maps to EINVAL */
+    case WSA_OPERATION_ABORTED:
+      msg = "Overlapped operation aborted";
+      break;
+    case WSA_IO_INCOMPLETE:
+      msg = "Overlapped I/O event object not in signaled state";
+      break;
+    case WSA_IO_PENDING:
+      msg = "Overlapped operations will complete later";
+      break;
+    /* WSAEINTR maps to EINTR */
+    /* WSAEBADF maps to EBADF */
+    /* WSAEACCES maps to EACCES */
+    /* WSAEFAULT maps to EFAULT */
+    /* WSAEINVAL maps to EINVAL */
+    /* WSAEMFILE maps to EMFILE */
+    /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
+    /* WSAEINPROGRESS is EINPROGRESS */
+    /* WSAEALREADY is EALREADY */
+    /* WSAENOTSOCK is ENOTSOCK */
+    /* WSAEDESTADDRREQ is EDESTADDRREQ */
+    /* WSAEMSGSIZE is EMSGSIZE */
+    /* WSAEPROTOTYPE is EPROTOTYPE */
+    /* WSAENOPROTOOPT is ENOPROTOOPT */
+    /* WSAEPROTONOSUPPORT is EPROTONOSUPPORT */
+    /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
+    /* WSAEOPNOTSUPP is EOPNOTSUPP */
+    /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
+    /* WSAEAFNOSUPPORT is EAFNOSUPPORT */
+    /* WSAEADDRINUSE is EADDRINUSE */
+    /* WSAEADDRNOTAVAIL is EADDRNOTAVAIL */
+    /* WSAENETDOWN is ENETDOWN */
+    /* WSAENETUNREACH is ENETUNREACH */
+    /* WSAENETRESET is ENETRESET */
+    /* WSAECONNABORTED is ECONNABORTED */
+    /* WSAECONNRESET is ECONNRESET */
+    /* WSAENOBUFS is ENOBUFS */
+    /* WSAEISCONN is EISCONN */
+    /* WSAENOTCONN is ENOTCONN */
+    /* WSAESHUTDOWN is ESHUTDOWN */
+    /* WSAETOOMANYREFS is ETOOMANYREFS */
+    /* WSAETIMEDOUT is ETIMEDOUT */
+    /* WSAECONNREFUSED is ECONNREFUSED */
+    /* WSAELOOP is ELOOP */
+    /* WSAENAMETOOLONG maps to ENAMETOOLONG */
+    /* WSAEHOSTDOWN is EHOSTDOWN */
+    /* WSAEHOSTUNREACH is EHOSTUNREACH */
+    /* WSAENOTEMPTY maps to ENOTEMPTY */
+    /* WSAEPROCLIM is EPROCLIM */
+    /* WSAEUSERS is EUSERS */
+    /* WSAEDQUOT is EDQUOT */
+    /* WSAESTALE is ESTALE */
+    /* WSAEREMOTE is EREMOTE */
+    case WSASYSNOTREADY:
+      msg = "Network subsystem is unavailable";
+      break;
+    case WSAVERNOTSUPPORTED:
+      msg = "Winsock.dll version out of range";
+      break;
+    case WSANOTINITIALISED:
+      msg = "Successful WSAStartup not yet performed";
+      break;
+    case WSAEDISCON:
+      msg = "Graceful shutdown in progress";
+      break;
+    case WSAENOMORE: case WSA_E_NO_MORE:
+      msg = "No more results";
+      break;
+    case WSAECANCELLED: case WSA_E_CANCELLED:
+      msg = "Call was canceled";
+      break;
+    case WSAEINVALIDPROCTABLE:
+      msg = "Procedure call table is invalid";
+      break;
+    case WSAEINVALIDPROVIDER:
+      msg = "Service provider is invalid";
+      break;
+    case WSAEPROVIDERFAILEDINIT:
+      msg = "Service provider failed to initialize";
+      break;
+    case WSASYSCALLFAILURE:
+      msg = "System call failure";
+      break;
+    case WSASERVICE_NOT_FOUND:
+      msg = "Service not found";
+      break;
+    case WSATYPE_NOT_FOUND:
+      msg = "Class type not found";
+      break;
+    case WSAEREFUSED:
+      msg = "Database query was refused";
+      break;
+    case WSAHOST_NOT_FOUND:
+      msg = "Host not found";
+      break;
+    case WSATRY_AGAIN:
+      msg = "Nonauthoritative host not found";
+      break;
+    case WSANO_RECOVERY:
+      msg = "Nonrecoverable error";
+      break;
+    case WSANO_DATA:
+      msg = "Valid name, no data record of requested type";
+      break;
+    /* WSA_QOS_* omitted */
+#  endif
+# endif
+
+# if GNULIB_defined_ENOMSG
+    case ENOMSG:
+      msg = "No message of desired type";
+      break;
+# endif
+
+# if GNULIB_defined_EIDRM
+    case EIDRM:
+      msg = "Identifier removed";
+      break;
+# endif
+
+# if GNULIB_defined_ENOLINK
+    case ENOLINK:
+      msg = "Link has been severed";
+      break;
+# endif
+
+# if GNULIB_defined_EPROTO
+    case EPROTO:
+      msg = "Protocol error";
+      break;
+# endif
+
+# if GNULIB_defined_EMULTIHOP
+    case EMULTIHOP:
+      msg = "Multihop attempted";
+      break;
+# endif
+
+# if GNULIB_defined_EBADMSG
+    case EBADMSG:
+      msg = "Bad message";
+      break;
+# endif
+
+# if GNULIB_defined_EOVERFLOW
+    case EOVERFLOW:
+      msg = "Value too large for defined data type";
+      break;
+# endif
+
+# if GNULIB_defined_ENOTSUP
+    case ENOTSUP:
+      msg = "Not supported";
+      break;
+# endif
+
+# if GNULIB_defined_
+    case ECANCELED:
+      msg = "Operation canceled";
+      break;
+# endif
+    }
+
+  if (msg)
+    return (char *) msg;
+
+  {
+    char *result = strerror (n);
+
+    if (result == NULL || result[0] == '\0')
+      {
+       static char const fmt[] = "Unknown error (%d)";
+       static char msg_buf[sizeof fmt + INT_STRLEN_BOUND (n)];
+       sprintf (msg_buf, fmt, n);
+       return msg_buf;
+      }
+
+    return result;
+  }
+}
+
+#endif
diff --git a/gl/string.in.h b/gl/string.in.h
new file mode 100644 (file)
index 0000000..f021a3e
--- /dev/null
@@ -0,0 +1,605 @@
+/* A GNU-like <string.h>.
+
+   Copyright (C) 1995-1996, 2001-2008 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_STRING_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STRING_H@
+
+#ifndef _GL_STRING_H
+#define _GL_STRING_H
+
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+#  define __attribute__(Spec) /* empty */
+# endif
+/* The attribute __pure__ was added in gcc 2.96.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
+#  define __pure__ /* empty */
+# endif
+#endif
+
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Return the first occurrence of NEEDLE in HAYSTACK.  */
+#if @GNULIB_MEMMEM@
+# if @REPLACE_MEMMEM@
+#  define memmem rpl_memmem
+# endif
+# if ! @HAVE_DECL_MEMMEM@ || @REPLACE_MEMMEM@
+extern void *memmem (void const *__haystack, size_t __haystack_len,
+                    void const *__needle, size_t __needle_len)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memmem
+# define memmem(a,al,b,bl) \
+    (GL_LINK_WARNING ("memmem is unportable and often quadratic - " \
+                      "use gnulib module memmem-simple for portability, " \
+                      "and module memmem for speed" ), \
+     memmem (a, al, b, bl))
+#endif
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+   last written byte.  */
+#if @GNULIB_MEMPCPY@
+# if ! @HAVE_MEMPCPY@
+extern void *mempcpy (void *restrict __dest, void const *restrict __src,
+                     size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mempcpy
+# define mempcpy(a,b,n) \
+    (GL_LINK_WARNING ("mempcpy is unportable - " \
+                      "use gnulib module mempcpy for portability"), \
+     mempcpy (a, b, n))
+#endif
+
+/* Search backwards through a block for a byte (specified as an int).  */
+#if @GNULIB_MEMRCHR@
+# if ! @HAVE_DECL_MEMRCHR@
+extern void *memrchr (void const *, int, size_t)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memrchr
+# define memrchr(a,b,c) \
+    (GL_LINK_WARNING ("memrchr is unportable - " \
+                      "use gnulib module memrchr for portability"), \
+     memrchr (a, b, c))
+#endif
+
+/* Find the first occurrence of C in S.  More efficient than
+   memchr(S,C,N), at the expense of undefined behavior if C does not
+   occur within N bytes.  */
+#if @GNULIB_RAWMEMCHR@
+# if ! @HAVE_RAWMEMCHR@
+extern void *rawmemchr (void const *__s, int __c_in)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rawmemchr
+# define rawmemchr(a,b) \
+    (GL_LINK_WARNING ("rawmemchr is unportable - " \
+                      "use gnulib module rawmemchr for portability"), \
+     rawmemchr (a, b))
+#endif
+
+/* Copy SRC to DST, returning the address of the terminating '\0' in DST.  */
+#if @GNULIB_STPCPY@
+# if ! @HAVE_STPCPY@
+extern char *stpcpy (char *restrict __dst, char const *restrict __src);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpcpy
+# define stpcpy(a,b) \
+    (GL_LINK_WARNING ("stpcpy is unportable - " \
+                      "use gnulib module stpcpy for portability"), \
+     stpcpy (a, b))
+#endif
+
+/* Copy no more than N bytes of SRC to DST, returning a pointer past the
+   last non-NUL byte written into DST.  */
+#if @GNULIB_STPNCPY@
+# if ! @HAVE_STPNCPY@
+#  define stpncpy gnu_stpncpy
+extern char *stpncpy (char *restrict __dst, char const *restrict __src,
+                     size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpncpy
+# define stpncpy(a,b,n) \
+    (GL_LINK_WARNING ("stpncpy is unportable - " \
+                      "use gnulib module stpncpy for portability"), \
+     stpncpy (a, b, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strchr
+# define strchr(s,c) \
+    (GL_LINK_WARNING ("strchr cannot work correctly on character strings " \
+                      "in some multibyte locales - " \
+                      "use mbschr if you care about internationalization"), \
+     strchr (s, c))
+#endif
+
+/* Find the first occurrence of C in S or the final NUL byte.  */
+#if @GNULIB_STRCHRNUL@
+# if ! @HAVE_STRCHRNUL@
+extern char *strchrnul (char const *__s, int __c_in)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strchrnul
+# define strchrnul(a,b) \
+    (GL_LINK_WARNING ("strchrnul is unportable - " \
+                      "use gnulib module strchrnul for portability"), \
+     strchrnul (a, b))
+#endif
+
+/* Duplicate S, returning an identical malloc'd string.  */
+#if @GNULIB_STRDUP@
+# if @REPLACE_STRDUP@
+#  undef strdup
+#  define strdup rpl_strdup
+# endif
+# if !(@HAVE_DECL_STRDUP@ || defined strdup) || @REPLACE_STRDUP@
+extern char *strdup (char const *__s);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strdup
+# define strdup(a) \
+    (GL_LINK_WARNING ("strdup is unportable - " \
+                      "use gnulib module strdup for portability"), \
+     strdup (a))
+#endif
+
+/* Return a newly allocated copy of at most N bytes of STRING.  */
+#if @GNULIB_STRNDUP@
+# if ! @HAVE_STRNDUP@
+#  undef strndup
+#  define strndup rpl_strndup
+# endif
+# if ! @HAVE_STRNDUP@ || ! @HAVE_DECL_STRNDUP@
+extern char *strndup (char const *__string, size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strndup
+# define strndup(a,n) \
+    (GL_LINK_WARNING ("strndup is unportable - " \
+                      "use gnulib module strndup for portability"), \
+     strndup (a, n))
+#endif
+
+/* Find the length (number of bytes) of STRING, but scan at most
+   MAXLEN bytes.  If no '\0' terminator is found in that many bytes,
+   return MAXLEN.  */
+#if @GNULIB_STRNLEN@
+# if ! @HAVE_DECL_STRNLEN@
+extern size_t strnlen (char const *__string, size_t __maxlen)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strnlen
+# define strnlen(a,n) \
+    (GL_LINK_WARNING ("strnlen is unportable - " \
+                      "use gnulib module strnlen for portability"), \
+     strnlen (a, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strcspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+# undef strcspn
+# define strcspn(s,a) \
+    (GL_LINK_WARNING ("strcspn cannot work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbscspn if you care about internationalization"), \
+     strcspn (s, a))
+#endif
+
+/* Find the first occurrence in S of any character in ACCEPT.  */
+#if @GNULIB_STRPBRK@
+# if ! @HAVE_STRPBRK@
+extern char *strpbrk (char const *__s, char const *__accept)
+  __attribute__ ((__pure__));
+# endif
+# if defined GNULIB_POSIXCHECK
+/* strpbrk() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+#  undef strpbrk
+#  define strpbrk(s,a) \
+     (GL_LINK_WARNING ("strpbrk cannot work correctly on character strings " \
+                       "in multibyte locales - " \
+                       "use mbspbrk if you care about internationalization"), \
+      strpbrk (s, a))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strpbrk
+# define strpbrk(s,a) \
+    (GL_LINK_WARNING ("strpbrk is unportable - " \
+                      "use gnulib module strpbrk for portability"), \
+     strpbrk (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it cannot work with multibyte strings.  */
+# undef strspn
+# define strspn(s,a) \
+    (GL_LINK_WARNING ("strspn cannot work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbsspn if you care about internationalization"), \
+     strspn (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strrchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strrchr
+# define strrchr(s,c) \
+    (GL_LINK_WARNING ("strrchr cannot work correctly on character strings " \
+                      "in some multibyte locales - " \
+                      "use mbsrchr if you care about internationalization"), \
+     strrchr (s, c))
+#endif
+
+/* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP
+   to point to the next char after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of strtok() that is multithread-safe and supports
+   empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strtok_r().  */
+#if @GNULIB_STRSEP@
+# if ! @HAVE_STRSEP@
+extern char *strsep (char **restrict __stringp, char const *restrict __delim);
+# endif
+# if defined GNULIB_POSIXCHECK
+#  undef strsep
+#  define strsep(s,d) \
+     (GL_LINK_WARNING ("strsep cannot work correctly on character strings " \
+                       "in multibyte locales - " \
+                       "use mbssep if you care about internationalization"), \
+      strsep (s, d))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsep
+# define strsep(s,d) \
+    (GL_LINK_WARNING ("strsep is unportable - " \
+                      "use gnulib module strsep for portability"), \
+     strsep (s, d))
+#endif
+
+#if @GNULIB_STRSTR@
+# if @REPLACE_STRSTR@
+#  define strstr rpl_strstr
+char *strstr (const char *haystack, const char *needle)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strstr() does not work with multibyte strings if the locale encoding is
+   different from UTF-8:
+   POSIX says that it operates on "strings", and "string" in POSIX is defined
+   as a sequence of bytes, not of characters.  */
+# undef strstr
+# define strstr(a,b) \
+    (GL_LINK_WARNING ("strstr is quadratic on many systems, and cannot " \
+                      "work correctly on character strings in most "    \
+                      "multibyte locales - " \
+                      "use mbsstr if you care about internationalization, " \
+                      "or use strstr if you care about speed"), \
+     strstr (a, b))
+#endif
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
+   comparison.  */
+#if @GNULIB_STRCASESTR@
+# if @REPLACE_STRCASESTR@
+#  define strcasestr rpl_strcasestr
+# endif
+# if ! @HAVE_STRCASESTR@ || @REPLACE_STRCASESTR@
+extern char *strcasestr (const char *haystack, const char *needle)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strcasestr() does not work with multibyte strings:
+   It is a glibc extension, and glibc implements it only for unibyte
+   locales.  */
+# undef strcasestr
+# define strcasestr(a,b) \
+    (GL_LINK_WARNING ("strcasestr does work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbscasestr if you care about " \
+                      "internationalization, or use c-strcasestr if you want " \
+                      "a locale independent function"), \
+     strcasestr (a, b))
+#endif
+
+/* Parse S into tokens separated by characters in DELIM.
+   If S is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+       char s[] = "-abc-=-def";
+       char *sp;
+       x = strtok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+       x = strtok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+       x = strtok_r(NULL, "=", &sp);   // x = NULL
+               // s = "abc\0-def\0"
+
+   This is a variant of strtok() that is multithread-safe.
+
+   For the POSIX documentation for this function, see:
+   http://www.opengroup.org/susv3xsh/strtok.html
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strsep().  */
+#if @GNULIB_STRTOK_R@
+# if ! @HAVE_DECL_STRTOK_R@
+extern char *strtok_r (char *restrict s, char const *restrict delim,
+                      char **restrict save_ptr);
+# endif
+# if defined GNULIB_POSIXCHECK
+#  undef strtok_r
+#  define strtok_r(s,d,p) \
+     (GL_LINK_WARNING ("strtok_r cannot work correctly on character strings " \
+                       "in multibyte locales - " \
+                       "use mbstok_r if you care about internationalization"), \
+      strtok_r (s, d, p))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtok_r
+# define strtok_r(s,d,p) \
+    (GL_LINK_WARNING ("strtok_r is unportable - " \
+                      "use gnulib module strtok_r for portability"), \
+     strtok_r (s, d, p))
+#endif
+
+
+/* The following functions are not specified by POSIX.  They are gnulib
+   extensions.  */
+
+#if @GNULIB_MBSLEN@
+/* Return the number of multibyte characters in the character string STRING.
+   This considers multibyte characters, unlike strlen, which counts bytes.  */
+extern size_t mbslen (const char *string);
+#endif
+
+#if @GNULIB_MBSNLEN@
+/* Return the number of multibyte characters in the character string starting
+   at STRING and ending at STRING + LEN.  */
+extern size_t mbsnlen (const char *string, size_t len);
+#endif
+
+#if @GNULIB_MBSCHR@
+/* Locate the first single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# define mbschr rpl_mbschr /* avoid collision with HP-UX function */
+extern char * mbschr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSRCHR@
+/* Locate the last single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strrchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */
+extern char * mbsrchr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSSTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK.  Return NULL if NEEDLE is not found in HAYSTACK.
+   Unlike strstr(), this function works correctly in multibyte locales with
+   encodings different from UTF-8.  */
+extern char * mbsstr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCASECMP@
+/* Compare the character strings S1 and S2, ignoring case, returning less than,
+   equal to or greater than zero if S1 is lexicographically less than, equal to
+   or greater than S2.
+   Note: This function may, in multibyte locales, return 0 for strings of
+   different lengths!
+   Unlike strcasecmp(), this function works correctly in multibyte locales.  */
+extern int mbscasecmp (const char *s1, const char *s2);
+#endif
+
+#if @GNULIB_MBSNCASECMP@
+/* Compare the initial segment of the character string S1 consisting of at most
+   N characters with the initial segment of the character string S2 consisting
+   of at most N characters, ignoring case, returning less than, equal to or
+   greater than zero if the initial segment of S1 is lexicographically less
+   than, equal to or greater than the initial segment of S2.
+   Note: This function may, in multibyte locales, return 0 for initial segments
+   of different lengths!
+   Unlike strncasecmp(), this function works correctly in multibyte locales.
+   But beware that N is not a byte count but a character count!  */
+extern int mbsncasecmp (const char *s1, const char *s2, size_t n);
+#endif
+
+#if @GNULIB_MBSPCASECMP@
+/* Compare the initial segment of the character string STRING consisting of
+   at most mbslen (PREFIX) characters with the character string PREFIX,
+   ignoring case, returning less than, equal to or greater than zero if this
+   initial segment is lexicographically less than, equal to or greater than
+   PREFIX.
+   Note: This function may, in multibyte locales, return 0 if STRING is of
+   smaller length than PREFIX!
+   Unlike strncasecmp(), this function works correctly in multibyte
+   locales.  */
+extern char * mbspcasecmp (const char *string, const char *prefix);
+#endif
+
+#if @GNULIB_MBSCASESTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK, using case-insensitive comparison.
+   Note: This function may, in multibyte locales, return success even if
+   strlen (haystack) < strlen (needle) !
+   Unlike strcasestr(), this function works correctly in multibyte locales.  */
+extern char * mbscasestr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCSPN@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strcspn(), this function works correctly in multibyte locales.  */
+extern size_t mbscspn (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSPBRK@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the pointer to it, or NULL if none
+   exists.
+   Unlike strpbrk(), this function works correctly in multibyte locales.  */
+# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
+extern char * mbspbrk (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSSPN@
+/* Find the first occurrence in the character string STRING of any character
+   not in the character string REJECT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strspn(), this function works correctly in multibyte locales.  */
+extern size_t mbsspn (const char *string, const char *reject);
+#endif
+
+#if @GNULIB_MBSSEP@
+/* Search the next delimiter (multibyte character listed in the character
+   string DELIM) starting at the character string *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP to point
+   to the next multibyte character after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of mbstok_r() that supports empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbstok_r().  */
+extern char * mbssep (char **stringp, const char *delim);
+#endif
+
+#if @GNULIB_MBSTOK_R@
+/* Parse the character string STRING into tokens separated by characters in
+   the character string DELIM.
+   If STRING is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+       char s[] = "-abc-=-def";
+       char *sp;
+       x = mbstok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+       x = mbstok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+       x = mbstok_r(NULL, "=", &sp);   // x = NULL
+               // s = "abc\0-def\0"
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbssep().  */
+extern char * mbstok_r (char *string, const char *delim, char **save_ptr);
+#endif
+
+/* Map any int, typically from errno, into an error message.  */
+#if @GNULIB_STRERROR@
+# if @REPLACE_STRERROR@
+#  undef strerror
+#  define strerror rpl_strerror
+extern char *strerror (int);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strerror
+# define strerror(e) \
+    (GL_LINK_WARNING ("strerror is unportable - " \
+                      "use gnulib module strerror to guarantee non-NULL result"), \
+     strerror (e))
+#endif
+
+#if @GNULIB_STRSIGNAL@
+# if @REPLACE_STRSIGNAL@
+#  define strsignal rpl_strsignal
+# endif
+# if ! @HAVE_DECL_STRSIGNAL@ || @REPLACE_STRSIGNAL@
+extern char *strsignal (int __sig);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsignal
+# define strsignal(a) \
+    (GL_LINK_WARNING ("strsignal is unportable - " \
+                      "use gnulib module strsignal for portability"), \
+     strsignal (a))
+#endif
+
+#if @GNULIB_STRVERSCMP@
+# if !@HAVE_STRVERSCMP@
+extern int strverscmp (const char *, const char *);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strverscmp
+# define strverscmp(a, b) \
+    (GL_LINK_WARNING ("strverscmp is unportable - " \
+                      "use gnulib module strverscmp for portability"), \
+     strverscmp (a, b))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STRING_H */
+#endif /* _GL_STRING_H */
diff --git a/gl/unistd.in.h b/gl/unistd.in.h
new file mode 100644 (file)
index 0000000..fa8d84a
--- /dev/null
@@ -0,0 +1,578 @@
+/* Substitute for and wrapper around <unistd.h>.
+   Copyright (C) 2003-2009 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_UNISTD_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_UNISTD_H@
+# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+#endif
+
+#ifndef _GL_UNISTD_H
+#define _GL_UNISTD_H
+
+/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>.  */
+#if !(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET)
+# include <stdio.h>
+#endif
+
+/* mingw fails to declare _exit in <unistd.h>.  */
+/* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>.  */
+#include <stdlib.h>
+
+#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
+/* Get ssize_t.  */
+# include <sys/types.h>
+#endif
+
+#if @GNULIB_GETHOSTNAME@
+/* Get all possible declarations of gethostname().  */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+#  include <winsock2.h>
+#  if !defined _GL_SYS_SOCKET_H
+#   undef socket
+#   define socket              socket_used_without_including_sys_socket_h
+#   undef connect
+#   define connect             connect_used_without_including_sys_socket_h
+#   undef accept
+#   define accept              accept_used_without_including_sys_socket_h
+#   undef bind
+#   define bind                        bind_used_without_including_sys_socket_h
+#   undef getpeername
+#   define getpeername         getpeername_used_without_including_sys_socket_h
+#   undef getsockname
+#   define getsockname         getsockname_used_without_including_sys_socket_h
+#   undef getsockopt
+#   define getsockopt          getsockopt_used_without_including_sys_socket_h
+#   undef listen
+#   define listen              listen_used_without_including_sys_socket_h
+#   undef recv
+#   define recv                        recv_used_without_including_sys_socket_h
+#   undef send
+#   define send                        send_used_without_including_sys_socket_h
+#   undef recvfrom
+#   define recvfrom            recvfrom_used_without_including_sys_socket_h
+#   undef sendto
+#   define sendto              sendto_used_without_including_sys_socket_h
+#   undef setsockopt
+#   define setsockopt          setsockopt_used_without_including_sys_socket_h
+#   undef shutdown
+#   define shutdown            shutdown_used_without_including_sys_socket_h
+#  endif
+#  if !defined _GL_SYS_SELECT_H
+#   undef select
+#   define select              select_used_without_including_sys_select_h
+#  endif
+# endif
+#endif
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+
+/* OS/2 EMX lacks these macros.  */
+#ifndef STDIN_FILENO
+# define STDIN_FILENO 0
+#endif
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO 1
+#endif
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+/* Declare overridden functions.  */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_CHOWN@
+# if @REPLACE_CHOWN@
+#  ifndef REPLACE_CHOWN
+#   define REPLACE_CHOWN 1
+#  endif
+#  if REPLACE_CHOWN
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+   to GID (if GID is not -1).  Follow symbolic links.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/chown.html>.  */
+#   define chown rpl_chown
+extern int chown (const char *file, uid_t uid, gid_t gid);
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef chown
+# define chown(f,u,g) \
+    (GL_LINK_WARNING ("chown fails to follow symlinks on some systems and " \
+                      "doesn't treat a uid or gid of -1 on some systems - " \
+                      "use gnulib module chown for portability"), \
+     chown (f, u, g))
+#endif
+
+
+#if @GNULIB_CLOSE@
+# if @REPLACE_CLOSE@
+/* Automatically included by modules that need a replacement for close.  */
+#  undef close
+#  define close rpl_close
+extern int close (int);
+# endif
+#elif @UNISTD_H_HAVE_WINSOCK2_H@
+# undef close
+# define close close_used_without_requesting_gnulib_module_close
+#elif defined GNULIB_POSIXCHECK
+# undef close
+# define close(f) \
+    (GL_LINK_WARNING ("close does not portably work on sockets - " \
+                      "use gnulib module close for portability"), \
+     close (f))
+#endif
+
+
+#if @GNULIB_DUP2@
+# if !@HAVE_DUP2@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD.  Do nothing if
+   NEWFD = OLDFD, otherwise close NEWFD first if it is open.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/dup2.html>.  */
+extern int dup2 (int oldfd, int newfd);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef dup2
+# define dup2(o,n) \
+    (GL_LINK_WARNING ("dup2 is unportable - " \
+                      "use gnulib module dup2 for portability"), \
+     dup2 (o, n))
+#endif
+
+
+#if @GNULIB_ENVIRON@
+# if !@HAVE_DECL_ENVIRON@
+/* Set of environment variables and values.  An array of strings of the form
+   "VARIABLE=VALUE", terminated with a NULL.  */
+#  if defined __APPLE__ && defined __MACH__
+#   include <crt_externs.h>
+#   define environ (*_NSGetEnviron ())
+#  else
+extern char **environ;
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef environ
+# define environ \
+    (GL_LINK_WARNING ("environ is unportable - " \
+                      "use gnulib module environ for portability"), \
+     environ)
+#endif
+
+
+#if @GNULIB_EUIDACCESS@
+# if !@HAVE_EUIDACCESS@
+/* Like access(), except that is uses the effective user id and group id of
+   the current process.  */
+extern int euidaccess (const char *filename, int mode);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef euidaccess
+# define euidaccess(f,m) \
+    (GL_LINK_WARNING ("euidaccess is unportable - " \
+                      "use gnulib module euidaccess for portability"), \
+     euidaccess (f, m))
+#endif
+
+
+#if @GNULIB_FCHDIR@
+# if @REPLACE_FCHDIR@
+
+/* Change the process' current working directory to the directory on which
+   the given file descriptor is open.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/fchdir.html>.  */
+extern int fchdir (int /*fd*/);
+
+#  define dup rpl_dup
+extern int dup (int);
+#  define dup2 rpl_dup2
+extern int dup2 (int, int);
+
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fchdir
+# define fchdir(f) \
+    (GL_LINK_WARNING ("fchdir is unportable - " \
+                      "use gnulib module fchdir for portability"), \
+     fchdir (f))
+#endif
+
+
+#if @GNULIB_FSYNC@
+/* Synchronize changes to a file.
+   Return 0 if successful, otherwise -1 and errno set.
+   See POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/fsync.html>.  */
+# if !@HAVE_FSYNC@
+extern int fsync (int fd);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fsync
+# define fsync(fd) \
+    (GL_LINK_WARNING ("fsync is unportable - " \
+                      "use gnulib module fsync for portability"), \
+     fsync (fd))
+#endif
+
+
+#if @GNULIB_FTRUNCATE@
+# if !@HAVE_FTRUNCATE@
+/* Change the size of the file to which FD is opened to become equal to LENGTH.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/ftruncate.html>.  */
+extern int ftruncate (int fd, off_t length);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef ftruncate
+# define ftruncate(f,l) \
+    (GL_LINK_WARNING ("ftruncate is unportable - " \
+                      "use gnulib module ftruncate for portability"), \
+     ftruncate (f, l))
+#endif
+
+
+#if @GNULIB_GETCWD@
+/* Include the headers that might declare getcwd so that they will not
+   cause confusion if included after this file.  */
+# include <stdlib.h>
+# if @REPLACE_GETCWD@
+/* Get the name of the current working directory, and put it in SIZE bytes
+   of BUF.
+   Return BUF if successful, or NULL if the directory couldn't be determined
+   or SIZE was too small.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/getcwd.html>.
+   Additionally, the gnulib module 'getcwd' guarantees the following GNU
+   extension: If BUF is NULL, an array is allocated with 'malloc'; the array
+   is SIZE bytes long, unless SIZE == 0, in which case it is as big as
+   necessary.  */
+#  define getcwd rpl_getcwd
+extern char * getcwd (char *buf, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getcwd
+# define getcwd(b,s) \
+    (GL_LINK_WARNING ("getcwd is unportable - " \
+                      "use gnulib module getcwd for portability"), \
+     getcwd (b, s))
+#endif
+
+
+#if @GNULIB_GETDOMAINNAME@
+/* Return the NIS domain name of the machine.
+   WARNING! The NIS domain name is unrelated to the fully qualified host name
+            of the machine.  It is also unrelated to email addresses.
+   WARNING! The NIS domain name is usually the empty string or "(none)" when
+            not using NIS.
+
+   Put up to LEN bytes of the NIS domain name into NAME.
+   Null terminate it if the name is shorter than LEN.
+   If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
+   Return 0 if successful, otherwise set errno and return -1.  */
+# if !@HAVE_GETDOMAINNAME@
+extern int getdomainname(char *name, size_t len);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getdomainname
+# define getdomainname(n,l) \
+    (GL_LINK_WARNING ("getdomainname is unportable - " \
+                      "use gnulib module getdomainname for portability"), \
+     getdomainname (n, l))
+#endif
+
+
+#if @GNULIB_GETDTABLESIZE@
+# if !@HAVE_GETDTABLESIZE@
+/* Return the maximum number of file descriptors in the current process.  */
+extern int getdtablesize (void);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getdtablesize
+# define getdtablesize() \
+    (GL_LINK_WARNING ("getdtablesize is unportable - " \
+                      "use gnulib module getdtablesize for portability"), \
+     getdtablesize ())
+#endif
+
+
+#if @GNULIB_GETHOSTNAME@
+/* Return the standard host name of the machine.
+   WARNING! The host name may or may not be fully qualified.
+
+   Put up to LEN bytes of the host name into NAME.
+   Null terminate it if the name is shorter than LEN.
+   If the host name is longer than LEN, set errno = EINVAL and return -1.
+   Return 0 if successful, otherwise set errno and return -1.  */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+#  undef gethostname
+#  define gethostname rpl_gethostname
+# endif
+# if @UNISTD_H_HAVE_WINSOCK2_H@ || !@HAVE_GETHOSTNAME@
+extern int gethostname(char *name, size_t len);
+# endif
+#elif @UNISTD_H_HAVE_WINSOCK2_H@
+# undef gethostname
+# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
+#elif defined GNULIB_POSIXCHECK
+# undef gethostname
+# define gethostname(n,l) \
+    (GL_LINK_WARNING ("gethostname is unportable - " \
+                      "use gnulib module gethostname for portability"), \
+     gethostname (n, l))
+#endif
+
+
+#if @GNULIB_GETLOGIN_R@
+/* Copies the user's login name to NAME.
+   The array pointed to by NAME has room for SIZE bytes.
+
+   Returns 0 if successful.  Upon error, an error number is returned, or -1 in
+   the case that the login name cannot be found but no specific error is
+   provided (this case is hopefully rare but is left open by the POSIX spec).
+
+   See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+ */
+# if !@HAVE_DECL_GETLOGIN_R@
+#  include <stddef.h>
+extern int getlogin_r (char *name, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin_r
+# define getlogin_r(n,s) \
+    (GL_LINK_WARNING ("getlogin_r is unportable - " \
+                      "use gnulib module getlogin_r for portability"), \
+     getlogin_r (n, s))
+#endif
+
+
+#if @GNULIB_GETPAGESIZE@
+# if @REPLACE_GETPAGESIZE@
+#  define getpagesize rpl_getpagesize
+extern int getpagesize (void);
+# elif !@HAVE_GETPAGESIZE@
+/* This is for POSIX systems.  */
+#  if !defined getpagesize && defined _SC_PAGESIZE
+#   if ! (defined __VMS && __VMS_VER < 70000000)
+#    define getpagesize() sysconf (_SC_PAGESIZE)
+#   endif
+#  endif
+/* This is for older VMS.  */
+#  if !defined getpagesize && defined __VMS
+#   ifdef __ALPHA
+#    define getpagesize() 8192
+#   else
+#    define getpagesize() 512
+#   endif
+#  endif
+/* This is for BeOS.  */
+#  if !defined getpagesize && @HAVE_OS_H@
+#   include <OS.h>
+#   if defined B_PAGE_SIZE
+#    define getpagesize() B_PAGE_SIZE
+#   endif
+#  endif
+/* This is for AmigaOS4.0.  */
+#  if !defined getpagesize && defined __amigaos4__
+#   define getpagesize() 2048
+#  endif
+/* This is for older Unix systems.  */
+#  if !defined getpagesize && @HAVE_SYS_PARAM_H@
+#   include <sys/param.h>
+#   ifdef EXEC_PAGESIZE
+#    define getpagesize() EXEC_PAGESIZE
+#   else
+#    ifdef NBPG
+#     ifndef CLSIZE
+#      define CLSIZE 1
+#     endif
+#     define getpagesize() (NBPG * CLSIZE)
+#    else
+#     ifdef NBPC
+#      define getpagesize() NBPC
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getpagesize
+# define getpagesize() \
+    (GL_LINK_WARNING ("getpagesize is unportable - " \
+                      "use gnulib module getpagesize for portability"), \
+     getpagesize ())
+#endif
+
+
+#if @GNULIB_GETUSERSHELL@
+# if !@HAVE_GETUSERSHELL@
+/* Return the next valid login shell on the system, or NULL when the end of
+   the list has been reached.  */
+extern char *getusershell (void);
+/* Rewind to pointer that is advanced at each getusershell() call.  */
+extern void setusershell (void);
+/* Free the pointer that is advanced at each getusershell() call and
+   associated resources.  */
+extern void endusershell (void);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getusershell
+# define getusershell() \
+    (GL_LINK_WARNING ("getusershell is unportable - " \
+                      "use gnulib module getusershell for portability"), \
+     getusershell ())
+# undef setusershell
+# define setusershell() \
+    (GL_LINK_WARNING ("setusershell is unportable - " \
+                      "use gnulib module getusershell for portability"), \
+     setusershell ())
+# undef endusershell
+# define endusershell() \
+    (GL_LINK_WARNING ("endusershell is unportable - " \
+                      "use gnulib module getusershell for portability"), \
+     endusershell ())
+#endif
+
+
+#if @GNULIB_LCHOWN@
+# if @REPLACE_LCHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+   to GID (if GID is not -1).  Do not follow symbolic links.
+   Return 0 if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/lchown.html>.  */
+#  define lchown rpl_lchown
+extern int lchown (char const *file, uid_t owner, gid_t group);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef lchown
+# define lchown(f,u,g) \
+    (GL_LINK_WARNING ("lchown is unportable to pre-POSIX.1-2001 " \
+                      "systems - use gnulib module lchown for portability"), \
+     lchown (f, u, g))
+#endif
+
+
+#if @GNULIB_LINK@
+/* Create a new hard link for an existing file.
+   Return 0 if successful, otherwise -1 and errno set.
+   See POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/link.html>.  */
+# if !@HAVE_LINK@
+extern int link (const char *path1, const char *path2);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef link
+# define link(path1,path2) \
+    (GL_LINK_WARNING ("link is unportable - " \
+                      "use gnulib module link for portability"), \
+     link (path1, path2))
+#endif
+
+
+#if @GNULIB_LSEEK@
+# if @REPLACE_LSEEK@
+/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
+   Return the new offset if successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/lseek.html>.  */
+#  define lseek rpl_lseek
+   extern off_t lseek (int fd, off_t offset, int whence);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef lseek
+# define lseek(f,o,w) \
+    (GL_LINK_WARNING ("lseek does not fail with ESPIPE on pipes on some " \
+                      "systems - use gnulib module lseek for portability"), \
+     lseek (f, o, w))
+#endif
+
+
+#if @GNULIB_READLINK@
+/* Read the contents of the symbolic link FILE and place the first BUFSIZE
+   bytes of it into BUF.  Return the number of bytes placed into BUF if
+   successful, otherwise -1 and errno set.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/readlink.html>.  */
+# if !@HAVE_READLINK@
+#  include <stddef.h>
+extern int readlink (const char *file, char *buf, size_t bufsize);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef readlink
+# define readlink(f,b,s) \
+    (GL_LINK_WARNING ("readlink is unportable - " \
+                      "use gnulib module readlink for portability"), \
+     readlink (f, b, s))
+#endif
+
+
+#if @GNULIB_SLEEP@
+/* Pause the execution of the current thread for N seconds.
+   Returns the number of seconds left to sleep.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/sleep.html>.  */
+# if !@HAVE_SLEEP@
+extern unsigned int sleep (unsigned int n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef sleep
+# define sleep(n) \
+    (GL_LINK_WARNING ("sleep is unportable - " \
+                      "use gnulib module sleep for portability"), \
+     sleep (n))
+#endif
+
+
+#if @GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@
+/* Write up to COUNT bytes starting at BUF to file descriptor FD.
+   See the POSIX:2001 specification
+   <http://www.opengroup.org/susv3xsh/write.html>.  */
+# undef write
+# define write rpl_write
+extern ssize_t write (int fd, const void *buf, size_t count);
+#endif
+
+
+#ifdef FCHDIR_REPLACEMENT
+/* gnulib internal function.  */
+extern void _gl_unregister_fd (int fd);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _GL_UNISTD_H */
+#endif /* _GL_UNISTD_H */
diff --git a/gl/version-etc.c b/gl/version-etc.c
new file mode 100644 (file)
index 0000000..c3b0289
--- /dev/null
@@ -0,0 +1,199 @@
+/* Print --version and bug-reporting information in a consistent format.
+   Copyright (C) 1999-2009 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+/* Specification.  */
+#include "version-etc.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+enum { COPYRIGHT_YEAR = 2009 };
+
+/* Like version_etc, below, but with the NULL-terminated author list
+   provided via a variable of type va_list.  */
+void
+version_etc_va (FILE *stream,
+               const char *command_name, const char *package,
+               const char *version, va_list authors)
+{
+  size_t n_authors;
+
+  /* Count the number of authors.  */
+  {
+    va_list tmp_authors;
+
+    va_copy (tmp_authors, authors);
+
+    n_authors = 0;
+    while (va_arg (tmp_authors, const char *) != NULL)
+      ++n_authors;
+  }
+
+  if (command_name)
+    fprintf (stream, "%s (%s) %s\n", command_name, package, version);
+  else
+    fprintf (stream, "%s %s\n", package, version);
+
+#ifdef PACKAGE_PACKAGER
+# ifdef PACKAGE_PACKAGER_VERSION
+  fprintf (stream, _("Packaged by %s (%s)\n"), PACKAGE_PACKAGER,
+          PACKAGE_PACKAGER_VERSION);
+# else
+  fprintf (stream, _("Packaged by %s\n"), PACKAGE_PACKAGER);
+# endif
+#endif
+
+  /* TRANSLATORS: Translate "(C)" to the copyright symbol
+     (C-in-a-circle), if this symbol is available in the user's
+     locale.  Otherwise, do not translate "(C)"; leave it as-is.  */
+  fprintf (stream, version_etc_copyright, _("(C)"), COPYRIGHT_YEAR);
+
+  fputs (_("\
+\n\
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\n\
+This is free software: you are free to change and redistribute it.\n\
+There is NO WARRANTY, to the extent permitted by law.\n\
+\n\
+"),
+        stream);
+
+  switch (n_authors)
+    {
+    case 0:
+      /* The caller must provide at least one author name.  */
+      abort ();
+    case 1:
+      /* TRANSLATORS: %s denotes an author name.  */
+      vfprintf (stream, _("Written by %s.\n"), authors);
+      break;
+    case 2:
+      /* TRANSLATORS: Each %s denotes an author name.  */
+      vfprintf (stream, _("Written by %s and %s.\n"), authors);
+      break;
+    case 3:
+      /* TRANSLATORS: Each %s denotes an author name.  */
+      vfprintf (stream, _("Written by %s, %s, and %s.\n"), authors);
+      break;
+    case 4:
+      /* TRANSLATORS: Each %s denotes an author name.
+        You can use line breaks, estimating that each author name occupies
+        ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      vfprintf (stream, _("Written by %s, %s, %s,\nand %s.\n"), authors);
+      break;
+    case 5:
+      /* TRANSLATORS: Each %s denotes an author name.
+        You can use line breaks, estimating that each author name occupies
+        ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      vfprintf (stream, _("Written by %s, %s, %s,\n%s, and %s.\n"), authors);
+      break;
+    case 6:
+      /* TRANSLATORS: Each %s denotes an author name.
+        You can use line breaks, estimating that each author name occupies
+        ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, and %s.\n"),
+               authors);
+      break;
+    case 7:
+      /* TRANSLATORS: Each %s denotes an author name.
+        You can use line breaks, estimating that each author name occupies
+        ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, %s, and %s.\n"),
+               authors);
+      break;
+    case 8:
+      /* TRANSLATORS: Each %s denotes an author name.
+        You can use line breaks, estimating that each author name occupies
+        ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      vfprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\nand %s.\n"),
+               authors);
+      break;
+    case 9:
+      /* TRANSLATORS: Each %s denotes an author name.
+        You can use line breaks, estimating that each author name occupies
+        ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      vfprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, and %s.\n"),
+               authors);
+      break;
+    default:
+      /* 10 or more authors.  Use an abbreviation, since the human reader
+        will probably not want to read the entire list anyway.  */
+      /* TRANSLATORS: Each %s denotes an author name.
+        You can use line breaks, estimating that each author name occupies
+        ca. 16 screen columns and that a screen line has ca. 80 columns.  */
+      vfprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, %s, and others.\n"),
+               authors);
+      break;
+    }
+  va_end (authors);
+}
+
+
+/* Display the --version information the standard way.
+
+   If COMMAND_NAME is NULL, the PACKAGE is asumed to be the name of
+   the program.  The formats are therefore:
+
+   PACKAGE VERSION
+
+   or
+
+   COMMAND_NAME (PACKAGE) VERSION.
+
+   The author names are passed as separate arguments, with an additional
+   NULL argument at the end.  */
+void
+version_etc (FILE *stream,
+            const char *command_name, const char *package,
+            const char *version, /* const char *author1, ...*/ ...)
+{
+  va_list authors;
+
+  va_start (authors, version);
+  version_etc_va (stream, command_name, package, version, authors);
+}
+
+void
+emit_bug_reporting_address (void)
+{
+  /* TRANSLATORS: The placeholder indicates the bug-reporting address
+     for this package.  Please add _another line_ saying
+     "Report translation bugs to <...>\n" with the address for translation
+     bugs (typically your translation team's web or email address).  */
+  printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+#ifdef PACKAGE_PACKAGER_BUG_REPORTS
+  printf (_("Report %s bugs to <%s>.\n"), PACKAGE_PACKAGER,
+         PACKAGE_PACKAGER_BUG_REPORTS);
+#endif
+  printf (_("%s home page: <http://www.gnu.org/software/%s/>.\n"),
+         PACKAGE_NAME, PACKAGE);
+  fputs (_("General help using GNU software: <http://www.gnu.org/gethelp/>.\n"),
+         stdout);
+}
diff --git a/gl/version-etc.h b/gl/version-etc.h
new file mode 100644 (file)
index 0000000..33a8e7f
--- /dev/null
@@ -0,0 +1,38 @@
+/* Print --version and bug-reporting information in a consistent format.
+   Copyright (C) 1999, 2003, 2005, 2009 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Jim Meyering. */
+
+#ifndef VERSION_ETC_H
+# define VERSION_ETC_H 1
+
+# include <stdarg.h>
+# include <stdio.h>
+
+extern const char version_etc_copyright[];
+
+extern void version_etc_va (FILE *stream,
+                           const char *command_name, const char *package,
+                           const char *version, va_list authors);
+
+extern void version_etc (FILE *stream,
+                        const char *command_name, const char *package,
+                        const char *version,
+                        /* const char *author1, ...*/ ...);
+
+extern void emit_bug_reporting_address (void);
+
+#endif /* VERSION_ETC_H */
diff --git a/gltests/Makefile.am b/gltests/Makefile.am
new file mode 100644 (file)
index 0000000..c0012e1
--- /dev/null
@@ -0,0 +1,92 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+
+AUTOMAKE_OPTIONS = 1.5 foreign
+
+SUBDIRS =
+TESTS =
+TESTS_ENVIRONMENT =
+noinst_PROGRAMS =
+check_PROGRAMS =
+noinst_HEADERS =
+noinst_LIBRARIES =
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+AM_CPPFLAGS = \
+  -I. -I$(srcdir) \
+  -I.. -I$(srcdir)/.. \
+  -I../gl -I$(srcdir)/../gl
+
+LDADD = ../gl/libgnu.la
+
+## begin gnulib module errno-tests
+
+TESTS += test-errno
+check_PROGRAMS += test-errno
+
+EXTRA_DIST += test-errno.c
+
+## end   gnulib module errno-tests
+
+## begin gnulib module strerror-tests
+
+TESTS += test-strerror
+check_PROGRAMS += test-strerror
+EXTRA_DIST += test-strerror.c
+
+## end   gnulib module strerror-tests
+
+## begin gnulib module string-tests
+
+TESTS += test-string
+check_PROGRAMS += test-string
+
+EXTRA_DIST += test-string.c
+
+## end   gnulib module string-tests
+
+## begin gnulib module unistd-tests
+
+TESTS += test-unistd
+check_PROGRAMS += test-unistd
+
+EXTRA_DIST += test-unistd.c
+
+## end   gnulib module unistd-tests
+
+## begin gnulib module vc-list-files-tests
+
+TESTS += test-vc-list-files-git.sh
+TESTS += test-vc-list-files-cvs.sh
+TESTS_ENVIRONMENT += PATH='$(abs_aux_dir)'$(PATH_SEPARATOR)"$$PATH"
+EXTRA_DIST += test-vc-list-files-git.sh test-vc-list-files-cvs.sh
+
+## end   gnulib module vc-list-files-tests
+
+# Clean up after Solaris cc.
+clean-local:
+       rm -rf SunWS_cache
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
diff --git a/gltests/Makefile.in b/gltests/Makefile.in
new file mode 100644 (file)
index 0000000..d58b826
--- /dev/null
@@ -0,0 +1,1113 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+TESTS = test-errno$(EXEEXT) test-strerror$(EXEEXT) \
+       test-string$(EXEEXT) test-unistd$(EXEEXT) \
+       test-vc-list-files-git.sh test-vc-list-files-cvs.sh
+noinst_PROGRAMS =
+check_PROGRAMS = test-errno$(EXEEXT) test-strerror$(EXEEXT) \
+       test-string$(EXEEXT) test-unistd$(EXEEXT)
+subdir = gltests
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+PROGRAMS = $(noinst_PROGRAMS)
+test_errno_SOURCES = test-errno.c
+test_errno_OBJECTS = test-errno.$(OBJEXT)
+test_errno_LDADD = $(LDADD)
+test_errno_DEPENDENCIES = ../gl/libgnu.la
+test_strerror_SOURCES = test-strerror.c
+test_strerror_OBJECTS = test-strerror.$(OBJEXT)
+test_strerror_LDADD = $(LDADD)
+test_strerror_DEPENDENCIES = ../gl/libgnu.la
+test_string_SOURCES = test-string.c
+test_string_OBJECTS = test-string.$(OBJEXT)
+test_string_LDADD = $(LDADD)
+test_string_DEPENDENCIES = ../gl/libgnu.la
+test_unistd_SOURCES = test-unistd.c
+test_unistd_OBJECTS = test-unistd.$(OBJEXT)
+test_unistd_LDADD = $(LDADD)
+test_unistd_DEPENDENCIES = ../gl/libgnu.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = test-errno.c test-strerror.c test-string.c test-unistd.c
+DIST_SOURCES = test-errno.c test-strerror.c test-string.c \
+       test-unistd.c
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 foreign
+SUBDIRS = 
+TESTS_ENVIRONMENT = PATH='$(abs_aux_dir)'$(PATH_SEPARATOR)"$$PATH"
+noinst_HEADERS = 
+noinst_LIBRARIES = 
+EXTRA_DIST = test-errno.c test-strerror.c test-string.c test-unistd.c \
+       test-vc-list-files-git.sh test-vc-list-files-cvs.sh
+BUILT_SOURCES = 
+SUFFIXES = 
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS = 
+CLEANFILES = 
+DISTCLEANFILES = 
+MAINTAINERCLEANFILES = 
+AM_CPPFLAGS = \
+  -I. -I$(srcdir) \
+  -I.. -I$(srcdir)/.. \
+  -I../gl -I$(srcdir)/../gl
+
+LDADD = ../gl/libgnu.la
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gltests/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign gltests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+
+clean-noinstPROGRAMS:
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+test-errno$(EXEEXT): $(test_errno_OBJECTS) $(test_errno_DEPENDENCIES) 
+       @rm -f test-errno$(EXEEXT)
+       $(LINK) $(test_errno_OBJECTS) $(test_errno_LDADD) $(LIBS)
+test-strerror$(EXEEXT): $(test_strerror_OBJECTS) $(test_strerror_DEPENDENCIES) 
+       @rm -f test-strerror$(EXEEXT)
+       $(LINK) $(test_strerror_OBJECTS) $(test_strerror_LDADD) $(LIBS)
+test-string$(EXEEXT): $(test_string_OBJECTS) $(test_string_DEPENDENCIES) 
+       @rm -f test-string$(EXEEXT)
+       $(LINK) $(test_string_OBJECTS) $(test_string_LDADD) $(LIBS)
+test-unistd$(EXEEXT): $(test_unistd_OBJECTS) $(test_unistd_DEPENDENCIES) 
+       @rm -f test-unistd$(EXEEXT)
+       $(LINK) $(test_unistd_OBJECTS) $(test_unistd_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-errno.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strerror.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-string.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-unistd.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list=' $(TESTS) '; \
+       $(am__tty_colors); \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=XPASS; \
+             ;; \
+             *) \
+               col=$$grn; res=PASS; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xfail=`expr $$xfail + 1`; \
+               col=$$lgn; res=XFAIL; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=FAIL; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             col=$$blu; res=SKIP; \
+           fi; \
+           echo "$${col}$$res$${std}: $$tst"; \
+         done; \
+         if test "$$all" -eq 1; then \
+           tests="test"; \
+           All=""; \
+         else \
+           tests="tests"; \
+           All="All "; \
+         fi; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="$$All$$all $$tests passed"; \
+           else \
+             if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+             banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all $$tests failed"; \
+           else \
+             if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+             banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           if test "$$skip" -eq 1; then \
+             skipped="($$skip test was not run)"; \
+           else \
+             skipped="($$skip tests were not run)"; \
+           fi; \
+           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         if test "$$failed" -eq 0; then \
+           echo "$$grn$$dashes"; \
+         else \
+           echo "$$red$$dashes"; \
+         fi; \
+         echo "$$banner"; \
+         test -z "$$skipped" || echo "$$skipped"; \
+         test -z "$$report" || echo "$$report"; \
+         echo "$$dashes$$std"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \
+       clean-noinstLIBRARIES clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+       check-am ctags-recursive install install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-TESTS check-am clean \
+       clean-checkPROGRAMS clean-generic clean-libtool clean-local \
+       clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \
+       ctags-recursive distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+       pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# Clean up after Solaris cc.
+clean-local:
+       rm -rf SunWS_cache
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/gltests/test-errno.c b/gltests/test-errno.c
new file mode 100644 (file)
index 0000000..4642027
--- /dev/null
@@ -0,0 +1,117 @@
+/* Test of <errno.h> substitute.
+   Copyright (C) 2008 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2008.  */
+
+#include <config.h>
+
+#include <errno.h>
+
+/* Verify that the POSIX mandated errno values exist and can be used as
+   initializers outside of a function.
+   The variable names happen to match the Linux/x86 error numbers.  */
+int e1 = EPERM;
+int e2 = ENOENT;
+int e3 = ESRCH;
+int e4 = EINTR;
+int e5 = EIO;
+int e6 = ENXIO;
+int e7 = E2BIG;
+int e8 = ENOEXEC;
+int e9 = EBADF;
+int e10 = ECHILD;
+int e11 = EAGAIN;
+int e11a = EWOULDBLOCK;
+int e12 = ENOMEM;
+int e13 = EACCES;
+int e14 = EFAULT;
+int e16 = EBUSY;
+int e17 = EEXIST;
+int e18 = EXDEV;
+int e19 = ENODEV;
+int e20 = ENOTDIR;
+int e21 = EISDIR;
+int e22 = EINVAL;
+int e23 = ENFILE;
+int e24 = EMFILE;
+int e25 = ENOTTY;
+int e26 = ETXTBSY;
+int e27 = EFBIG;
+int e28 = ENOSPC;
+int e29 = ESPIPE;
+int e30 = EROFS;
+int e31 = EMLINK;
+int e32 = EPIPE;
+int e33 = EDOM;
+int e34 = ERANGE;
+int e35 = EDEADLK;
+int e36 = ENAMETOOLONG;
+int e37 = ENOLCK;
+int e38 = ENOSYS;
+int e39 = ENOTEMPTY;
+int e40 = ELOOP;
+int e42 = ENOMSG;
+int e43 = EIDRM;
+int e67 = ENOLINK;
+int e71 = EPROTO;
+int e72 = EMULTIHOP;
+int e74 = EBADMSG;
+int e75 = EOVERFLOW;
+int e84 = EILSEQ;
+int e88 = ENOTSOCK;
+int e89 = EDESTADDRREQ;
+int e90 = EMSGSIZE;
+int e91 = EPROTOTYPE;
+int e92 = ENOPROTOOPT;
+int e93 = EPROTONOSUPPORT;
+int e95 = EOPNOTSUPP;
+int e95a = ENOTSUP;
+int e97 = EAFNOSUPPORT;
+int e98 = EADDRINUSE;
+int e99 = EADDRNOTAVAIL;
+int e100 = ENETDOWN;
+int e101 = ENETUNREACH;
+int e102 = ENETRESET;
+int e103 = ECONNABORTED;
+int e104 = ECONNRESET;
+int e105 = ENOBUFS;
+int e106 = EISCONN;
+int e107 = ENOTCONN;
+int e110 = ETIMEDOUT;
+int e111 = ECONNREFUSED;
+int e113 = EHOSTUNREACH;
+int e114 = EALREADY;
+int e115 = EINPROGRESS;
+int e116 = ESTALE;
+int e122 = EDQUOT;
+int e125 = ECANCELED;
+
+/* Don't verify that these errno values are all different, except for possibly
+   EWOULDBLOCK == EAGAIN.  Even Linux/x86 does not pass this check: it has
+   ENOTSUP == EOPNOTSUPP.  */
+
+int
+main ()
+{
+  /* Verify that errno can be assigned.  */
+  errno = EOVERFLOW;
+
+  /* snprintf() callers want to distinguish EINVAL and EOVERFLOW.  */
+  if (errno == EINVAL)
+    return 1;
+
+  return 0;
+}
diff --git a/gltests/test-strerror.c b/gltests/test-strerror.c
new file mode 100644 (file)
index 0000000..3d9814d
--- /dev/null
@@ -0,0 +1,65 @@
+/* Test of strerror() function.
+   Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Eric Blake <ebb9@byu.net>, 2007.  */
+
+#include <config.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+  do                                                                        \
+    {                                                                       \
+      if (!(expr))                                                          \
+        {                                                                   \
+          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+          fflush (stderr);                                                  \
+          abort ();                                                         \
+        }                                                                   \
+    }                                                                       \
+  while (0)
+
+int
+main (int argc, char **argv)
+{
+  char *str;
+
+  str = strerror (EACCES);
+  ASSERT (str);
+  ASSERT (*str);
+
+  str = strerror (ETIMEDOUT);
+  ASSERT (str);
+  ASSERT (*str);
+
+  str = strerror (EOVERFLOW);
+  ASSERT (str);
+  ASSERT (*str);
+
+  str = strerror (0);
+  ASSERT (str);
+  ASSERT (*str);
+
+  str = strerror (-3);
+  ASSERT (str);
+  ASSERT (*str);
+
+  return 0;
+}
diff --git a/gltests/test-string.c b/gltests/test-string.c
new file mode 100644 (file)
index 0000000..68014f5
--- /dev/null
@@ -0,0 +1,27 @@
+/* Test of <string.h> substitute.
+   Copyright (C) 2007 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+#include <string.h>
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gltests/test-unistd.c b/gltests/test-unistd.c
new file mode 100644 (file)
index 0000000..5fed15c
--- /dev/null
@@ -0,0 +1,50 @@
+/* Test of <unistd.h> substitute.
+   Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+#include <unistd.h>
+
+/* Check that the various SEEK_* macros are defined.  */
+int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
+
+/* Check that the various *_FILENO macros are defined.  */
+#if ! (defined STDIN_FILENO                                     \
+       && (STDIN_FILENO + STDOUT_FILENO + STDERR_FILENO == 3))
+missing or broken *_FILENO macros
+#endif
+
+/* Check that the types are all defined.  */
+size_t t1;
+ssize_t t2;
+#ifdef TODO /* Not implemented in gnulib yet */
+uid_t t3;
+gid_t t4;
+#endif
+off_t t5;
+pid_t t6;
+#ifdef TODO
+useconds_t t7;
+intptr_t t8;
+#endif
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gltests/test-vc-list-files-cvs.sh b/gltests/test-vc-list-files-cvs.sh
new file mode 100755 (executable)
index 0000000..12c9366
--- /dev/null
@@ -0,0 +1,62 @@
+#!/bin/sh
+# Unit tests for vc-list-files
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is part of the GNUlib Library.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+tmpdir=vc-cvs-$$
+trap 'st=$?; cd '"`pwd`"' && rm -rf $tmpdir; exit $st' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+if ( diff --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then
+  compare() { diff -u "$@"; }
+elif ( cmp --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then
+  compare() { cmp -s "$@"; }
+else
+  compare() { cmp "$@"; }
+fi
+
+repo=`pwd`/$tmpdir/repo
+
+fail=0
+for i in with-cvsu without; do
+  # On the first iteration, test using cvsu, if it's in your path.
+  # On the second iteration, ensure that cvsu fails, so we'll
+  # exercise the awk-using code.
+  if test $i = without; then
+    printf '%s\n' '#!/bin/sh' 'exit 1' > cvsu
+    chmod a+x cvsu
+    PATH=`pwd`:$PATH
+    export PATH
+  fi
+  ok=0
+  mkdir $tmpdir && cd $tmpdir &&
+    # without cvs, skip the test
+    # The double use of 'exit' is needed for the reference to $? inside the trap.
+    { ( cvs -Q -d "$repo" init ) > /dev/null 2>&1 \
+      || { echo "Skipping test: cvs not found in PATH"; (exit 77); exit 77; }; } &&
+    mkdir w && cd w &&
+    mkdir d &&
+    touch d/a b c &&
+    cvs -Q -d "$repo" import -m imp m M M0 &&
+    cvs -Q -d "$repo" co m && cd m &&
+    printf '%s\n' b c d/a > expected &&
+    vc-list-files | sort > actual &&
+    compare expected actual &&
+    ok=1
+  test $ok = 0 && fail=1
+done
+
+(exit $fail); exit $fail
diff --git a/gltests/test-vc-list-files-git.sh b/gltests/test-vc-list-files-git.sh
new file mode 100755 (executable)
index 0000000..f1627e7
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Unit tests for vc-list-files
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+# This file is part of the GNUlib Library.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+if ( diff --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then
+  compare() { diff -u "$@"; }
+elif ( cmp --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then
+  compare() { cmp -s "$@"; }
+else
+  compare() { cmp "$@"; }
+fi
+
+tmpdir=vc-git-$$
+trap 'st=$?; cd '"`pwd`"' && rm -rf $tmpdir; exit $st' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+fail=1
+mkdir $tmpdir && cd $tmpdir &&
+  # without git, skip the test
+  # The double use of 'exit' is needed for the reference to $? inside the trap.
+  { ( git init -q ) > /dev/null 2>&1 \
+    || { echo "Skipping test: git not found in PATH"; (exit 77); exit 77; }; } &&
+  mkdir d &&
+  touch d/a b c &&
+  git config user.email "you@example.com"
+  git config user.name "Your Name"
+  git add . > /dev/null &&
+  git commit -q -a -m log &&
+  printf '%s\n' b c d/a > expected &&
+  vc-list-files > actual &&
+  compare expected actual &&
+  fail=0
+
+(exit $fail); exit $fail
diff --git a/gtk-doc.make b/gtk-doc.make
new file mode 100644 (file)
index 0000000..6646365
--- /dev/null
@@ -0,0 +1,193 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = $(LIBTOOL) --mode=execute
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN =
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+EXTRA_DIST =                           \
+       $(content_files)                \
+       $(HTML_IMAGES)                  \
+       $(DOC_MAIN_SGML_FILE)           \
+       $(DOC_MODULE)-sections.txt      \
+       $(DOC_MODULE)-overrides.txt
+
+DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+          $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES =                 \
+       $(DOC_MODULE).args       \
+       $(DOC_MODULE).hierarchy  \
+       $(DOC_MODULE).interfaces \
+       $(DOC_MODULE).prerequisites \
+       $(DOC_MODULE).signals
+
+REPORT_FILES = \
+       $(DOC_MODULE)-undocumented.txt \
+       $(DOC_MODULE)-undeclared.txt \
+       $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+else
+all-local:
+endif
+
+docs: html-build.stamp
+
+$(REPORT_FILES): sgml-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+       @echo 'gtk-doc: Scanning header files'
+       @-chmod -R u+w $(srcdir)
+       @cd $(srcdir) && \
+         gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+       @if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+           CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+       else \
+           cd $(srcdir) ; \
+           for i in $(SCANOBJ_FILES) ; do \
+               test -f $$i || touch $$i ; \
+           done \
+       fi
+       @touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+       @true
+
+#### templates ####
+
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+       @echo 'gtk-doc: Rebuilding template files'
+       @-chmod -R u+w $(srcdir)
+       @cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+       @touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+       @true
+
+$(srcdir)/tmpl/*.sgml:
+       @true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+       @echo 'gtk-doc: Building XML'
+       @-chmod -R u+w $(srcdir)
+       @cd $(srcdir) && \
+       gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
+       @touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+       @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+       @echo 'gtk-doc: Building HTML'
+       @-chmod -R u+w $(srcdir)
+       @rm -rf $(srcdir)/html
+       @mkdir $(srcdir)/html
+       @mkhtml_options=""; \
+       gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-path"; \
+       if test "$(?)" = "0"; then \
+         mkhtml_options=--path="$(srcdir)"; \
+       fi; \
+       cd $(srcdir)/html && gtkdoc-mkhtml $(mkhtml_options) $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+       @test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+       @echo 'gtk-doc: Fixing cross-references'
+       @cd $(srcdir) && gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+       @touch html-build.stamp
+
+##############
+
+clean-local:
+       rm -f *~ *.bak
+       rm -rf .libs
+
+distclean-local:
+       cd $(srcdir) && \
+         rm -rf xml $(REPORT_FILES) \
+                $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+maintainer-clean-local: clean
+       cd $(srcdir) && rm -rf xml html
+
+install-data-local:
+       @installfiles=`echo $(srcdir)/html/*`; \
+       if test "$$installfiles" = '$(srcdir)/html/*'; \
+       then echo '-- Nothing to install' ; \
+       else \
+         if test -n "$(DOC_MODULE_VERSION)"; then \
+           installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+         else \
+           installdir="$(DESTDIR)$(TARGET_DIR)"; \
+         fi; \
+         $(mkinstalldirs) $${installdir} ; \
+         for i in $$installfiles; do \
+           echo '-- Installing '$$i ; \
+           $(INSTALL_DATA) $$i $${installdir}; \
+         done; \
+         if test -n "$(DOC_MODULE_VERSION)"; then \
+           mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+             $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+           mv -f $${installdir}/$(DOC_MODULE).devhelp \
+             $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \
+         fi; \
+         $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
+       fi
+
+uninstall-local:
+       @if test -n "$(DOC_MODULE_VERSION)"; then \
+         installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+       else \
+         installdir="$(DESTDIR)$(TARGET_DIR)"; \
+       fi; \
+       rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+       @echo "*** gtk-doc must be installed and enabled in order to make dist"
+       @false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+       mkdir $(distdir)/tmpl
+       mkdir $(distdir)/xml
+       mkdir $(distdir)/html
+       -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+       -cp $(srcdir)/xml/*.xml $(distdir)/xml
+       cp $(srcdir)/html/* $(distdir)/html
+       -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+       -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+       cd $(distdir) && rm -f $(DISTCLEANFILES)
+       $(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
diff --git a/java/Makefile.am b/java/Makefile.am
new file mode 100644 (file)
index 0000000..ba455fd
--- /dev/null
@@ -0,0 +1,56 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+SUBDIRS = gnu . misc
+
+INSTALL_TARGETS =
+
+if JAVA
+libidn_jardir = $(datadir)/java
+dist_libidn_jar_DATA = libidn-$(VERSION).jar
+
+libidn-$(VERSION).jar:
+       $(JAR) cf $@ gnu/inet/encoding/CombiningClass.class     \
+               gnu/inet/encoding/Composition.class             \
+               gnu/inet/encoding/DecompositionKeys.class       \
+               gnu/inet/encoding/DecompositionMappings.class   \
+               gnu/inet/encoding/IDNA.class                    \
+               gnu/inet/encoding/IDNAException.class           \
+               gnu/inet/encoding/NFKC.class                    \
+               gnu/inet/encoding/Punycode.class                \
+               gnu/inet/encoding/PunycodeException.class       \
+               gnu/inet/encoding/RFC3454.class                 \
+               gnu/inet/encoding/Stringprep.class              \
+               gnu/inet/encoding/StringprepException.class
+
+INSTALL_TARGETS += install-jar
+install-jar:
+       install -d -m 755 $(DESTDIR)$(libidn_jardir)
+       ln -sf libidn-$(VERSION).jar $(DESTDIR)$(libidn_jardir)/libidn.jar
+
+clean-local:
+       rm -f $(libidn_jar_DATA)
+
+# Invoked by ../doc/java/Makefile.
+.PHONY: javadoc
+javadoc:
+       cd $(srcdir) && $(GJDOC) -d $(top_builddir)/doc/java gnu/inet/encoding/*.java
+endif
+
+install-data-local: $(INSTALL_TARGETS)
diff --git a/java/Makefile.in b/java/Makefile.in
new file mode 100644 (file)
index 0000000..60b4661
--- /dev/null
@@ -0,0 +1,951 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@JAVA_TRUE@am__append_1 = install-jar
+subdir = java
+DIST_COMMON = $(am__dist_libidn_jar_DATA_DIST) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__dist_libidn_jar_DATA_DIST = libidn-$(VERSION).jar
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(libidn_jardir)"
+DATA = $(dist_libidn_jar_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = gnu . misc
+INSTALL_TARGETS = $(am__append_1)
+@JAVA_TRUE@libidn_jardir = $(datadir)/java
+@JAVA_TRUE@dist_libidn_jar_DATA = libidn-$(VERSION).jar
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu java/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-dist_libidn_jarDATA: $(dist_libidn_jar_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(libidn_jardir)" || $(MKDIR_P) "$(DESTDIR)$(libidn_jardir)"
+       @list='$(dist_libidn_jar_DATA)'; test -n "$(libidn_jardir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libidn_jardir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(libidn_jardir)" || exit $$?; \
+       done
+
+uninstall-dist_libidn_jarDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_libidn_jar_DATA)'; test -n "$(libidn_jardir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(libidn_jardir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(libidn_jardir)" && rm -f $$files
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(libidn_jardir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+@JAVA_FALSE@clean-local:
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-data-local install-dist_libidn_jarDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-dist_libidn_jarDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+       install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       clean-local ctags ctags-recursive distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-data-local install-dist_libidn_jarDATA \
+       install-dvi install-dvi-am install-exec install-exec-am \
+       install-html install-html-am install-info install-info-am \
+       install-man install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am uninstall-dist_libidn_jarDATA
+
+
+@JAVA_TRUE@libidn-$(VERSION).jar:
+@JAVA_TRUE@    $(JAR) cf $@ gnu/inet/encoding/CombiningClass.class     \
+@JAVA_TRUE@            gnu/inet/encoding/Composition.class             \
+@JAVA_TRUE@            gnu/inet/encoding/DecompositionKeys.class       \
+@JAVA_TRUE@            gnu/inet/encoding/DecompositionMappings.class   \
+@JAVA_TRUE@            gnu/inet/encoding/IDNA.class                    \
+@JAVA_TRUE@            gnu/inet/encoding/IDNAException.class           \
+@JAVA_TRUE@            gnu/inet/encoding/NFKC.class                    \
+@JAVA_TRUE@            gnu/inet/encoding/Punycode.class                \
+@JAVA_TRUE@            gnu/inet/encoding/PunycodeException.class       \
+@JAVA_TRUE@            gnu/inet/encoding/RFC3454.class                 \
+@JAVA_TRUE@            gnu/inet/encoding/Stringprep.class              \
+@JAVA_TRUE@            gnu/inet/encoding/StringprepException.class
+@JAVA_TRUE@install-jar:
+@JAVA_TRUE@    install -d -m 755 $(DESTDIR)$(libidn_jardir)
+@JAVA_TRUE@    ln -sf libidn-$(VERSION).jar $(DESTDIR)$(libidn_jardir)/libidn.jar
+
+@JAVA_TRUE@clean-local:
+@JAVA_TRUE@    rm -f $(libidn_jar_DATA)
+
+# Invoked by ../doc/java/Makefile.
+@JAVA_TRUE@.PHONY: javadoc
+@JAVA_TRUE@javadoc:
+@JAVA_TRUE@    cd $(srcdir) && $(GJDOC) -d $(top_builddir)/doc/java gnu/inet/encoding/*.java
+
+install-data-local: $(INSTALL_TARGETS)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/java/gnu/Makefile.am b/java/gnu/Makefile.am
new file mode 100644 (file)
index 0000000..021f2b8
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = inet
diff --git a/java/gnu/Makefile.in b/java/gnu/Makefile.in
new file mode 100644 (file)
index 0000000..6e11654
--- /dev/null
@@ -0,0 +1,851 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = java/gnu
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = inet
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/gnu/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu java/gnu/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+       install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       ctags ctags-recursive distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/java/gnu/inet/Makefile.am b/java/gnu/inet/Makefile.am
new file mode 100644 (file)
index 0000000..9807577
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = encoding
diff --git a/java/gnu/inet/Makefile.in b/java/gnu/inet/Makefile.in
new file mode 100644 (file)
index 0000000..adee240
--- /dev/null
@@ -0,0 +1,851 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = java/gnu/inet
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = encoding
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/gnu/inet/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu java/gnu/inet/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+       install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       ctags ctags-recursive distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/java/gnu/inet/encoding/CombiningClass.java b/java/gnu/inet/encoding/CombiningClass.java
new file mode 100644 (file)
index 0000000..b0d1055
--- /dev/null
@@ -0,0 +1,462 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit GenerateNFKC.java and re-run.  */
+
+package gnu.inet.encoding;
+
+/**
+ * Auto-generated class containing Unicode NFKC tables.
+ */
+public class CombiningClass
+{
+  public final static int[][] c = new int[][] {
+    { /* Page 3 */
+      230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, 
+      220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, 
+      230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 4 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 5 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, 
+      230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, 
+      0, 24, 25, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 6 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 
+      230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 7 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, 
+      230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 9 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 10 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 11 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 12 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 13 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 14 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 15 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 
+      130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 16 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 23 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 24 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 32 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, 
+      0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 48 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 251 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 254 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+  };
+
+  public final static int[] i = new int[] {
+    -1,
+    -1,
+    -1,
+    0,
+    1,
+    2,
+    3,
+    4,
+    -1,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    13,
+    14,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    15,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    16,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    17,
+    -1,
+    -1,
+    18,
+    -1,
+  };
+}
diff --git a/java/gnu/inet/encoding/Composition.java b/java/gnu/inet/encoding/Composition.java
new file mode 100644 (file)
index 0000000..93528eb
--- /dev/null
@@ -0,0 +1,728 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit GenerateNFKC.java and re-run.  */
+
+package gnu.inet.encoding;
+
+/**
+ * Auto-generated class containing Unicode NFKC tables.
+ */
+public class Composition
+{
+  public final static char[][] multiFirst = new char[][] {
+    { '\u00C0', '\u00C1', '\u00C2', '\u00C3', '\u0100', '\u0102', '\u0226', '\u00C4', '\u1EA2', '\u00C5', '\u01CD', '\u0200', '\u0202', '\u1EA0', '\u1E00', '\u0104', },
+    {        0,        0,        0,        0,        0,        0, '\u1E02',        0,        0,        0,        0,        0,        0, '\u1E04',        0,        0, '\u1E06', },
+    {        0, '\u0106', '\u0108',        0,        0,        0, '\u010A',        0,        0,        0, '\u010C',        0,        0,        0,        0,        0,        0, '\u00C7', },
+    {        0,        0,        0,        0,        0,        0, '\u1E0A',        0,        0,        0, '\u010E',        0,        0, '\u1E0C',        0,        0, '\u1E0E', '\u1E10', '\u1E12', },
+    { '\u00C8', '\u00C9', '\u00CA', '\u1EBC', '\u0112', '\u0114', '\u0116', '\u00CB', '\u1EBA',        0, '\u011A', '\u0204', '\u0206', '\u1EB8',        0, '\u0118',        0, '\u0228', '\u1E18', '\u1E1A', },
+    {        0, '\u01F4', '\u011C',        0, '\u1E20', '\u011E', '\u0120',        0,        0,        0, '\u01E6',        0,        0,        0,        0,        0,        0, '\u0122', },
+    {        0,        0, '\u0124',        0,        0,        0, '\u1E22', '\u1E26',        0,        0, '\u021E',        0,        0, '\u1E24',        0,        0,        0, '\u1E28',        0,        0, '\u1E2A', },
+    { '\u00CC', '\u00CD', '\u00CE', '\u0128', '\u012A', '\u012C', '\u0130', '\u00CF', '\u1EC8',        0, '\u01CF', '\u0208', '\u020A', '\u1ECA',        0, '\u012E',        0,        0,        0, '\u1E2C', },
+    {        0, '\u1E30',        0,        0,        0,        0,        0,        0,        0,        0, '\u01E8',        0,        0, '\u1E32',        0,        0, '\u1E34', '\u0136', },
+    {        0, '\u0139',        0,        0,        0,        0,        0,        0,        0,        0, '\u013D',        0,        0, '\u1E36',        0,        0, '\u1E3A', '\u013B', '\u1E3C', },
+    {        0, '\u1E3E',        0,        0,        0,        0, '\u1E40',        0,        0,        0,        0,        0,        0, '\u1E42', },
+    { '\u01F8', '\u0143',        0, '\u00D1',        0,        0, '\u1E44',        0,        0,        0, '\u0147',        0,        0, '\u1E46',        0,        0, '\u1E48', '\u0145', '\u1E4A', },
+    { '\u00D2', '\u00D3', '\u00D4', '\u00D5', '\u014C', '\u014E', '\u022E', '\u00D6', '\u1ECE',        0, '\u01D1', '\u020C', '\u020E', '\u1ECC',        0, '\u01EA',        0,        0,        0,        0,        0, '\u0150', '\u01A0', },
+    {        0, '\u1E54',        0,        0,        0,        0, '\u1E56', },
+    {        0, '\u0154',        0,        0,        0,        0, '\u1E58',        0,        0,        0, '\u0158', '\u0210', '\u0212', '\u1E5A',        0,        0, '\u1E5E', '\u0156', },
+    {        0, '\u015A', '\u015C',        0,        0,        0, '\u1E60',        0,        0,        0, '\u0160',        0,        0, '\u1E62',        0,        0,        0, '\u015E',        0,        0,        0,        0,        0, '\u0218', },
+    {        0,        0,        0,        0,        0,        0, '\u1E6A',        0,        0,        0, '\u0164',        0,        0, '\u1E6C',        0,        0, '\u1E6E', '\u0162', '\u1E70',        0,        0,        0,        0, '\u021A', },
+    { '\u00D9', '\u00DA', '\u00DB', '\u0168', '\u016A', '\u016C',        0, '\u00DC', '\u1EE6', '\u016E', '\u01D3', '\u0214', '\u0216', '\u1EE4',        0, '\u0172',        0,        0, '\u1E76', '\u1E74',        0, '\u0170', '\u01AF',        0, '\u1E72', },
+    {        0,        0,        0, '\u1E7C',        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1E7E', },
+    { '\u1E80', '\u1E82', '\u0174',        0,        0,        0, '\u1E86', '\u1E84',        0,        0,        0,        0,        0, '\u1E88', },
+    {        0,        0,        0,        0,        0,        0, '\u1E8A', '\u1E8C', },
+    { '\u1EF2', '\u00DD', '\u0176', '\u1EF8', '\u0232',        0, '\u1E8E', '\u0178', '\u1EF6',        0,        0,        0,        0, '\u1EF4', },
+    {        0, '\u0179', '\u1E90',        0,        0,        0, '\u017B',        0,        0,        0, '\u017D',        0,        0, '\u1E92',        0,        0, '\u1E94', },
+    { '\u00E0', '\u00E1', '\u00E2', '\u00E3', '\u0101', '\u0103', '\u0227', '\u00E4', '\u1EA3', '\u00E5', '\u01CE', '\u0201', '\u0203', '\u1EA1', '\u1E01', '\u0105', },
+    {        0,        0,        0,        0,        0,        0, '\u1E03',        0,        0,        0,        0,        0,        0, '\u1E05',        0,        0, '\u1E07', },
+    {        0, '\u0107', '\u0109',        0,        0,        0, '\u010B',        0,        0,        0, '\u010D',        0,        0,        0,        0,        0,        0, '\u00E7', },
+    {        0,        0,        0,        0,        0,        0, '\u1E0B',        0,        0,        0, '\u010F',        0,        0, '\u1E0D',        0,        0, '\u1E0F', '\u1E11', '\u1E13', },
+    { '\u00E8', '\u00E9', '\u00EA', '\u1EBD', '\u0113', '\u0115', '\u0117', '\u00EB', '\u1EBB',        0, '\u011B', '\u0205', '\u0207', '\u1EB9',        0, '\u0119',        0, '\u0229', '\u1E19', '\u1E1B', },
+    {        0, '\u01F5', '\u011D',        0, '\u1E21', '\u011F', '\u0121',        0,        0,        0, '\u01E7',        0,        0,        0,        0,        0,        0, '\u0123', },
+    {        0,        0, '\u0125',        0,        0,        0, '\u1E23', '\u1E27',        0,        0, '\u021F',        0,        0, '\u1E25',        0,        0, '\u1E96', '\u1E29',        0,        0, '\u1E2B', },
+    { '\u00EC', '\u00ED', '\u00EE', '\u0129', '\u012B', '\u012D',        0, '\u00EF', '\u1EC9',        0, '\u01D0', '\u0209', '\u020B', '\u1ECB',        0, '\u012F',        0,        0,        0, '\u1E2D', },
+    {        0,        0, '\u0135',        0,        0,        0,        0,        0,        0,        0, '\u01F0', },
+    {        0, '\u1E31',        0,        0,        0,        0,        0,        0,        0,        0, '\u01E9',        0,        0, '\u1E33',        0,        0, '\u1E35', '\u0137', },
+    {        0, '\u013A',        0,        0,        0,        0,        0,        0,        0,        0, '\u013E',        0,        0, '\u1E37',        0,        0, '\u1E3B', '\u013C', '\u1E3D', },
+    {        0, '\u1E3F',        0,        0,        0,        0, '\u1E41',        0,        0,        0,        0,        0,        0, '\u1E43', },
+    { '\u01F9', '\u0144',        0, '\u00F1',        0,        0, '\u1E45',        0,        0,        0, '\u0148',        0,        0, '\u1E47',        0,        0, '\u1E49', '\u0146', '\u1E4B', },
+    { '\u00F2', '\u00F3', '\u00F4', '\u00F5', '\u014D', '\u014F', '\u022F', '\u00F6', '\u1ECF',        0, '\u01D2', '\u020D', '\u020F', '\u1ECD',        0, '\u01EB',        0,        0,        0,        0,        0, '\u0151', '\u01A1', },
+    {        0, '\u1E55',        0,        0,        0,        0, '\u1E57', },
+    {        0, '\u0155',        0,        0,        0,        0, '\u1E59',        0,        0,        0, '\u0159', '\u0211', '\u0213', '\u1E5B',        0,        0, '\u1E5F', '\u0157', },
+    {        0, '\u015B', '\u015D',        0,        0,        0, '\u1E61',        0,        0,        0, '\u0161',        0,        0, '\u1E63',        0,        0,        0, '\u015F',        0,        0,        0,        0,        0, '\u0219', },
+    {        0,        0,        0,        0,        0,        0, '\u1E6B', '\u1E97',        0,        0, '\u0165',        0,        0, '\u1E6D',        0,        0, '\u1E6F', '\u0163', '\u1E71',        0,        0,        0,        0, '\u021B', },
+    { '\u00F9', '\u00FA', '\u00FB', '\u0169', '\u016B', '\u016D',        0, '\u00FC', '\u1EE7', '\u016F', '\u01D4', '\u0215', '\u0217', '\u1EE5',        0, '\u0173',        0,        0, '\u1E77', '\u1E75',        0, '\u0171', '\u01B0',        0, '\u1E73', },
+    {        0,        0,        0, '\u1E7D',        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1E7F', },
+    { '\u1E81', '\u1E83', '\u0175',        0,        0,        0, '\u1E87', '\u1E85',        0, '\u1E98',        0,        0,        0, '\u1E89', },
+    {        0,        0,        0,        0,        0,        0, '\u1E8B', '\u1E8D', },
+    { '\u1EF3', '\u00FD', '\u0177', '\u1EF9', '\u0233',        0, '\u1E8F', '\u00FF', '\u1EF7', '\u1E99',        0,        0,        0, '\u1EF5', },
+    {        0, '\u017A', '\u1E91',        0,        0,        0, '\u017C',        0,        0,        0, '\u017E',        0,        0, '\u1E93',        0,        0, '\u1E95', },
+    { '\u1FED', '\u0385',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FC1', },
+    { '\u1EA6', '\u1EA4',        0, '\u1EAA',        0,        0,        0,        0, '\u1EA8', },
+    {        0, '\u01FC',        0,        0, '\u01E2', },
+    { '\u1EC0', '\u1EBE',        0, '\u1EC4',        0,        0,        0,        0, '\u1EC2', },
+    { '\u1ED2', '\u1ED0',        0, '\u1ED6',        0,        0,        0,        0, '\u1ED4', },
+    {        0, '\u1E4C',        0,        0, '\u022C',        0,        0, '\u1E4E', },
+    { '\u01DB', '\u01D7',        0,        0, '\u01D5',        0,        0,        0,        0,        0, '\u01D9', },
+    { '\u1EA7', '\u1EA5',        0, '\u1EAB',        0,        0,        0,        0, '\u1EA9', },
+    {        0, '\u01FD',        0,        0, '\u01E3', },
+    { '\u1EC1', '\u1EBF',        0, '\u1EC5',        0,        0,        0,        0, '\u1EC3', },
+    { '\u1ED3', '\u1ED1',        0, '\u1ED7',        0,        0,        0,        0, '\u1ED5', },
+    {        0, '\u1E4D',        0,        0, '\u022D',        0,        0, '\u1E4F', },
+    { '\u01DC', '\u01D8',        0,        0, '\u01D6',        0,        0,        0,        0,        0, '\u01DA', },
+    { '\u1EB0', '\u1EAE',        0, '\u1EB4',        0,        0,        0,        0, '\u1EB2', },
+    { '\u1EB1', '\u1EAF',        0, '\u1EB5',        0,        0,        0,        0, '\u1EB3', },
+    { '\u1E14', '\u1E16', },
+    { '\u1E15', '\u1E17', },
+    { '\u1E50', '\u1E52', },
+    { '\u1E51', '\u1E53', },
+    { '\u1EDC', '\u1EDA',        0, '\u1EE0',        0,        0,        0,        0, '\u1EDE',        0,        0,        0,        0, '\u1EE2', },
+    { '\u1EDD', '\u1EDB',        0, '\u1EE1',        0,        0,        0,        0, '\u1EDF',        0,        0,        0,        0, '\u1EE3', },
+    { '\u1EEA', '\u1EE8',        0, '\u1EEE',        0,        0,        0,        0, '\u1EEC',        0,        0,        0,        0, '\u1EF0', },
+    { '\u1EEB', '\u1EE9',        0, '\u1EEF',        0,        0,        0,        0, '\u1EED',        0,        0,        0,        0, '\u1EF1', },
+    { '\u1FBA', '\u0386',        0,        0, '\u1FB9', '\u1FB8',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F08', '\u1F09', '\u1FBC', },
+    { '\u1FC8', '\u0388',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F18', '\u1F19', },
+    { '\u1FCA', '\u0389',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F28', '\u1F29', '\u1FCC', },
+    { '\u1FDA', '\u038A',        0,        0, '\u1FD9', '\u1FD8',        0, '\u03AA',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F38', '\u1F39', },
+    { '\u1FF8', '\u038C',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F48', '\u1F49', },
+    { '\u1FEA', '\u038E',        0,        0, '\u1FE9', '\u1FE8',        0, '\u03AB',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F59', },
+    { '\u1FFA', '\u038F',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F68', '\u1F69', '\u1FFC', },
+    { '\u1F70', '\u03AC',        0,        0, '\u1FB1', '\u1FB0',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FB6', '\u1F00', '\u1F01', '\u1FB3', },
+    { '\u1F72', '\u03AD',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F10', '\u1F11', },
+    { '\u1F74', '\u03AE',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FC6', '\u1F20', '\u1F21', '\u1FC3', },
+    { '\u1F76', '\u03AF',        0,        0, '\u1FD1', '\u1FD0',        0, '\u03CA',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FD6', '\u1F30', '\u1F31', },
+    { '\u1F78', '\u03CC',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F40', '\u1F41', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FE4', '\u1FE5', },
+    { '\u1F7A', '\u03CD',        0,        0, '\u1FE1', '\u1FE0',        0, '\u03CB',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FE6', '\u1F50', '\u1F51', },
+    { '\u1F7C', '\u03CE',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FF6', '\u1F60', '\u1F61', '\u1FF3', },
+    { '\u1FD2', '\u0390',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FD7', },
+    { '\u1FE2', '\u03B0',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FE7', },
+    {        0, '\u03D3',        0,        0,        0,        0,        0, '\u03D4', },
+    {        0,        0,        0,        0,        0, '\u04D0',        0, '\u04D2', },
+    { '\u0400',        0,        0,        0,        0, '\u04D6',        0, '\u0401', },
+    {        0,        0,        0,        0,        0, '\u04C1',        0, '\u04DC', },
+    { '\u040D',        0,        0,        0, '\u04E2', '\u0419',        0, '\u04E4', },
+    {        0,        0,        0,        0, '\u04EE', '\u040E',        0, '\u04F0',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u04F2', },
+    {        0,        0,        0,        0,        0, '\u04D1',        0, '\u04D3', },
+    { '\u0450',        0,        0,        0,        0, '\u04D7',        0, '\u0451', },
+    {        0,        0,        0,        0,        0, '\u04C2',        0, '\u04DD', },
+    { '\u045D',        0,        0,        0, '\u04E3', '\u0439',        0, '\u04E5', },
+    {        0,        0,        0,        0, '\u04EF', '\u045E',        0, '\u04F1',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u04F3', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u0623', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u0BCA', '\u0BCC', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u0CC7', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u0D4A', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u0DDA', },
+    {        0,        0, '\u1EAC',        0,        0, '\u1EB6', },
+    {        0,        0, '\u1EAD',        0,        0, '\u1EB7', },
+    { '\u1F02', '\u1F04',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F06',        0,        0, '\u1F80', },
+    { '\u1F03', '\u1F05',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F07',        0,        0, '\u1F81', },
+    { '\u1F0A', '\u1F0C',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F0E',        0,        0, '\u1F88', },
+    { '\u1F0B', '\u1F0D',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F0F',        0,        0, '\u1F89', },
+    { '\u1F12', '\u1F14', },
+    { '\u1F13', '\u1F15', },
+    { '\u1F1A', '\u1F1C', },
+    { '\u1F1B', '\u1F1D', },
+    { '\u1F22', '\u1F24',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F26',        0,        0, '\u1F90', },
+    { '\u1F23', '\u1F25',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F27',        0,        0, '\u1F91', },
+    { '\u1F2A', '\u1F2C',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F2E',        0,        0, '\u1F98', },
+    { '\u1F2B', '\u1F2D',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F2F',        0,        0, '\u1F99', },
+    { '\u1F32', '\u1F34',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F36', },
+    { '\u1F33', '\u1F35',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F37', },
+    { '\u1F3A', '\u1F3C',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F3E', },
+    { '\u1F3B', '\u1F3D',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F3F', },
+    { '\u1F42', '\u1F44', },
+    { '\u1F43', '\u1F45', },
+    { '\u1F4A', '\u1F4C', },
+    { '\u1F4B', '\u1F4D', },
+    { '\u1F52', '\u1F54',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F56', },
+    { '\u1F53', '\u1F55',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F57', },
+    { '\u1F5B', '\u1F5D',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F5F', },
+    { '\u1F62', '\u1F64',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F66',        0,        0, '\u1FA0', },
+    { '\u1F63', '\u1F65',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F67',        0,        0, '\u1FA1', },
+    { '\u1F6A', '\u1F6C',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F6E',        0,        0, '\u1FA8', },
+    { '\u1F6B', '\u1F6D',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1F6F',        0,        0, '\u1FA9', },
+    { '\u1FCD', '\u1FCE',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FCF', },
+    { '\u1FDD', '\u1FDE',        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u1FDF', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u3070', '\u3071', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u3073', '\u3074', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u3076', '\u3077', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u3079', '\u307A', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u307C', '\u307D', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u30D0', '\u30D1', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u30D3', '\u30D4', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u30D6', '\u30D7', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u30D9', '\u30DA', },
+    {        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0,        0, '\u30DC', '\u30DD', },
+  };
+  public final static char[][] singleFirst = new char[][] {
+    { '\u0338', '\u226E' },
+    { '\u0338', '\u2260' },
+    { '\u0338', '\u226F' },
+    { '\u0307', '\u1E1E' },
+    { '\u0302', '\u0134' },
+    { '\u0307', '\u1E1F' },
+    { '\u0304', '\u01DE' },
+    { '\u0301', '\u01FA' },
+    { '\u0301', '\u1E08' },
+    { '\u0301', '\u1E2E' },
+    { '\u0304', '\u022A' },
+    { '\u0301', '\u01FE' },
+    { '\u0304', '\u01DF' },
+    { '\u0301', '\u01FB' },
+    { '\u0301', '\u1E09' },
+    { '\u0301', '\u1E2F' },
+    { '\u0304', '\u022B' },
+    { '\u0301', '\u01FF' },
+    { '\u0307', '\u1E64' },
+    { '\u0307', '\u1E65' },
+    { '\u0307', '\u1E66' },
+    { '\u0307', '\u1E67' },
+    { '\u0301', '\u1E78' },
+    { '\u0301', '\u1E79' },
+    { '\u0308', '\u1E7A' },
+    { '\u0308', '\u1E7B' },
+    { '\u0307', '\u1E9B' },
+    { '\u030C', '\u01EE' },
+    { '\u0304', '\u01EC' },
+    { '\u0304', '\u01ED' },
+    { '\u0304', '\u01E0' },
+    { '\u0304', '\u01E1' },
+    { '\u0306', '\u1E1C' },
+    { '\u0306', '\u1E1D' },
+    { '\u0304', '\u0230' },
+    { '\u0304', '\u0231' },
+    { '\u030C', '\u01EF' },
+    { '\u0314', '\u1FEC' },
+    { '\u0345', '\u1FB4' },
+    { '\u0345', '\u1FC4' },
+    { '\u0345', '\u1FF4' },
+    { '\u0308', '\u0407' },
+    { '\u0301', '\u0403' },
+    { '\u0308', '\u04DE' },
+    { '\u0301', '\u040C' },
+    { '\u0308', '\u04E6' },
+    { '\u0308', '\u04F4' },
+    { '\u0308', '\u04F8' },
+    { '\u0308', '\u04EC' },
+    { '\u0301', '\u0453' },
+    { '\u0308', '\u04DF' },
+    { '\u0301', '\u045C' },
+    { '\u0308', '\u04E7' },
+    { '\u0308', '\u04F5' },
+    { '\u0308', '\u04F9' },
+    { '\u0308', '\u04ED' },
+    { '\u0308', '\u0457' },
+    { '\u030F', '\u0476' },
+    { '\u030F', '\u0477' },
+    { '\u0308', '\u04DA' },
+    { '\u0308', '\u04DB' },
+    { '\u0308', '\u04EA' },
+    { '\u0308', '\u04EB' },
+    { '\u0654', '\u0624' },
+    { '\u0654', '\u0626' },
+    { '\u0654', '\u06C2' },
+    { '\u0654', '\u06D3' },
+    { '\u0654', '\u06C0' },
+    { '\u093C', '\u0929' },
+    { '\u093C', '\u0931' },
+    { '\u093C', '\u0934' },
+    { '\u0BD7', '\u0B94' },
+    { '\u0BBE', '\u0BCB' },
+    { '\u0C56', '\u0C48' },
+    { '\u0CD5', '\u0CC0' },
+    { '\u0CD5', '\u0CCB' },
+    { '\u0D3E', '\u0D4B' },
+    { '\u0DCA', '\u0DDD' },
+    { '\u102E', '\u1026' },
+    { '\u0304', '\u1E38' },
+    { '\u0304', '\u1E39' },
+    { '\u0304', '\u1E5C' },
+    { '\u0304', '\u1E5D' },
+    { '\u0307', '\u1E68' },
+    { '\u0307', '\u1E69' },
+    { '\u0302', '\u1EC6' },
+    { '\u0302', '\u1EC7' },
+    { '\u0302', '\u1ED8' },
+    { '\u0302', '\u1ED9' },
+    { '\u0345', '\u1F82' },
+    { '\u0345', '\u1F83' },
+    { '\u0345', '\u1F84' },
+    { '\u0345', '\u1F85' },
+    { '\u0345', '\u1F86' },
+    { '\u0345', '\u1F87' },
+    { '\u0345', '\u1F8A' },
+    { '\u0345', '\u1F8B' },
+    { '\u0345', '\u1F8C' },
+    { '\u0345', '\u1F8D' },
+    { '\u0345', '\u1F8E' },
+    { '\u0345', '\u1F8F' },
+    { '\u0345', '\u1F92' },
+    { '\u0345', '\u1F93' },
+    { '\u0345', '\u1F94' },
+    { '\u0345', '\u1F95' },
+    { '\u0345', '\u1F96' },
+    { '\u0345', '\u1F97' },
+    { '\u0345', '\u1F9A' },
+    { '\u0345', '\u1F9B' },
+    { '\u0345', '\u1F9C' },
+    { '\u0345', '\u1F9D' },
+    { '\u0345', '\u1F9E' },
+    { '\u0345', '\u1F9F' },
+    { '\u0345', '\u1FA2' },
+    { '\u0345', '\u1FA3' },
+    { '\u0345', '\u1FA4' },
+    { '\u0345', '\u1FA5' },
+    { '\u0345', '\u1FA6' },
+    { '\u0345', '\u1FA7' },
+    { '\u0345', '\u1FAA' },
+    { '\u0345', '\u1FAB' },
+    { '\u0345', '\u1FAC' },
+    { '\u0345', '\u1FAD' },
+    { '\u0345', '\u1FAE' },
+    { '\u0345', '\u1FAF' },
+    { '\u0345', '\u1FB2' },
+    { '\u0345', '\u1FC2' },
+    { '\u0345', '\u1FF2' },
+    { '\u0345', '\u1FB7' },
+    { '\u0345', '\u1FC7' },
+    { '\u0345', '\u1FF7' },
+    { '\u0338', '\u219A' },
+    { '\u0338', '\u219B' },
+    { '\u0338', '\u21AE' },
+    { '\u0338', '\u21CD' },
+    { '\u0338', '\u21CF' },
+    { '\u0338', '\u21CE' },
+    { '\u0338', '\u2204' },
+    { '\u0338', '\u2209' },
+    { '\u0338', '\u220C' },
+    { '\u0338', '\u2224' },
+    { '\u0338', '\u2226' },
+    { '\u0338', '\u2241' },
+    { '\u0338', '\u2244' },
+    { '\u0338', '\u2247' },
+    { '\u0338', '\u2249' },
+    { '\u0338', '\u226D' },
+    { '\u0338', '\u2262' },
+    { '\u0338', '\u2270' },
+    { '\u0338', '\u2271' },
+    { '\u0338', '\u2274' },
+    { '\u0338', '\u2275' },
+    { '\u0338', '\u2278' },
+    { '\u0338', '\u2279' },
+    { '\u0338', '\u2280' },
+    { '\u0338', '\u2281' },
+    { '\u0338', '\u22E0' },
+    { '\u0338', '\u22E1' },
+    { '\u0338', '\u2284' },
+    { '\u0338', '\u2285' },
+    { '\u0338', '\u2288' },
+    { '\u0338', '\u2289' },
+    { '\u0338', '\u22E2' },
+    { '\u0338', '\u22E3' },
+    { '\u0338', '\u22AC' },
+    { '\u0338', '\u22AD' },
+    { '\u0338', '\u22AE' },
+    { '\u0338', '\u22AF' },
+    { '\u0338', '\u22EA' },
+    { '\u0338', '\u22EB' },
+    { '\u0338', '\u22EC' },
+    { '\u0338', '\u22ED' },
+    { '\u3099', '\u3094' },
+    { '\u3099', '\u304C' },
+    { '\u3099', '\u304E' },
+    { '\u3099', '\u3050' },
+    { '\u3099', '\u3052' },
+    { '\u3099', '\u3054' },
+    { '\u3099', '\u3056' },
+    { '\u3099', '\u3058' },
+    { '\u3099', '\u305A' },
+    { '\u3099', '\u305C' },
+    { '\u3099', '\u305E' },
+    { '\u3099', '\u3060' },
+    { '\u3099', '\u3062' },
+    { '\u3099', '\u3065' },
+    { '\u3099', '\u3067' },
+    { '\u3099', '\u3069' },
+    { '\u3099', '\u309E' },
+    { '\u3099', '\u30F4' },
+    { '\u3099', '\u30AC' },
+    { '\u3099', '\u30AE' },
+    { '\u3099', '\u30B0' },
+    { '\u3099', '\u30B2' },
+    { '\u3099', '\u30B4' },
+    { '\u3099', '\u30B6' },
+    { '\u3099', '\u30B8' },
+    { '\u3099', '\u30BA' },
+    { '\u3099', '\u30BC' },
+    { '\u3099', '\u30BE' },
+    { '\u3099', '\u30C0' },
+    { '\u3099', '\u30C2' },
+    { '\u3099', '\u30C5' },
+    { '\u3099', '\u30C7' },
+    { '\u3099', '\u30C9' },
+    { '\u3099', '\u30F7' },
+    { '\u3099', '\u30F8' },
+    { '\u3099', '\u30F9' },
+    { '\u3099', '\u30FA' },
+    { '\u3099', '\u30FE' },
+  };
+  public final static char[][] singleSecond = new char[][] {
+    { '\u0627', '\u0622' },
+    { '\u0627', '\u0625' },
+    { '\u09C7', '\u09CB' },
+    { '\u09C7', '\u09CC' },
+    { '\u0B47', '\u0B4B' },
+    { '\u0B47', '\u0B48' },
+    { '\u0B47', '\u0B4C' },
+    { '\u0CC6', '\u0CCA' },
+    { '\u0CC6', '\u0CC8' },
+    { '\u0D46', '\u0D4C' },
+    { '\u0DD9', '\u0DDC' },
+    { '\u0DD9', '\u0DDE' },
+  };
+  public final static int multiSecondStart = 144;
+  public final static int singleFirstStart = 181;
+  public final static int singleSecondStart = 391;
+  public final static int[] composePage = new int[] {
+    0,
+    1,
+    2,
+    3,
+    4,
+    -1,
+    5,
+    -1,
+    -1,
+    6,
+    -1,
+    7,
+    8,
+    9,
+    -1,
+    -1,
+    10,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    11,
+    12,
+    -1,
+    13,
+    14,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    15,
+    -1,
+  };
+  public final static int[][] composeData = new int[][] {
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 181, 182, 183, -1, 
+      -1, 0, 1, 2, 3, 4, 184, 5, 6, 7, 185, 8, 9, 10, 11, 12, 
+      13, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, 
+      -1, 23, 24, 25, 26, 27, 186, 28, 29, 30, 31, 32, 33, 34, 35, 36, 
+      37, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 48, -1, 187, 188, 49, 189, -1, -1, 50, -1, -1, -1, -1, 190, 
+      -1, -1, -1, -1, 51, 52, 191, -1, 192, -1, -1, -1, 53, -1, -1, -1, 
+      -1, -1, 54, -1, 193, 194, 55, 195, -1, -1, 56, -1, -1, -1, -1, 196, 
+      -1, -1, -1, -1, 57, 58, 197, -1, 198, -1, -1, -1, 59, -1, -1, -1, 
+    },
+    {
+      -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, 65, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 199, 200, -1, -1, -1, -1, 
+      201, 202, -1, -1, -1, -1, -1, -1, 203, 204, 205, 206, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 207, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, 
+      69, -1, -1, -1, -1, -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 209, 210, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 211, 212, 213, 214, -1, -1, -1, -1, 215, 216, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 217, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      144, 145, 146, 147, 148, -1, 149, 150, 151, 152, 153, 165, 154, -1, -1, 155, 
+      -1, 156, -1, 170, 171, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, -1, 
+      -1, -1, -1, 157, 168, 158, 167, 161, 159, -1, -1, -1, -1, 162, 164, -1, 
+      163, 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 169, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, 70, -1, -1, -1, 71, -1, 72, -1, 73, -1, -1, -1, -1, -1, 74, 
+      -1, 218, -1, -1, -1, 75, -1, -1, -1, 76, -1, -1, 219, -1, 220, -1, 
+      -1, 77, -1, -1, -1, 78, -1, 79, -1, 80, -1, -1, -1, -1, -1, 81, 
+      -1, 82, -1, -1, -1, 83, -1, -1, -1, 84, 85, 86, -1, -1, 221, -1, 
+      -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      88, -1, -1, 223, -1, 89, 90, 224, 91, -1, 225, -1, -1, -1, 226, -1, 
+      -1, -1, -1, 92, -1, -1, -1, 227, -1, -1, -1, 228, -1, 229, -1, -1, 
+      93, -1, -1, 230, -1, 94, 95, 231, 96, -1, 232, -1, -1, -1, 233, -1, 
+      -1, -1, -1, 97, -1, -1, -1, 234, -1, -1, -1, 235, -1, 236, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, 238, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 240, 241, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 242, 243, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 244, -1, 245, -1, -1, -1, -1, -1, 
+      -1, -1, -1, 391, 173, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 247, -1, -1, 248, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, 
+      250, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, 394, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 174, -1, 
+      -1, -1, -1, -1, -1, -1, 99, 253, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, 
+      -1, -1, 398, -1, -1, -1, 100, -1, -1, -1, 256, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, 176, 399, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177, -1, 
+      -1, -1, -1, -1, -1, -1, 101, 257, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, 400, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 178, -1, -1, -1, -1, 401, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, -1, -1, 258, -1, -1, 402, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 260, 261, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, -1, -1, -1, -1, 
+      -1, -1, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      103, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 266, 267, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 269, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      105, 106, 270, 271, 272, 273, 274, 275, 107, 108, 276, 277, 278, 279, 280, 281, 
+      109, 110, -1, -1, -1, -1, -1, -1, 111, 112, -1, -1, -1, -1, -1, -1, 
+      113, 114, 282, 283, 284, 285, 286, 287, 115, 116, 288, 289, 290, 291, 292, 293, 
+      117, 118, -1, -1, -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, -1, -1, 
+      121, 122, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, 
+      125, 126, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, 
+      128, 129, 294, 295, 296, 297, 298, 299, 130, 131, 300, 301, 302, 303, 304, 305, 
+      306, -1, -1, -1, 307, -1, -1, -1, -1, -1, -1, -1, 308, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 309, -1, -1, -1, -1, -1, -1, -1, -1, 132, 
+      -1, -1, -1, -1, -1, -1, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, 133, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      312, -1, 313, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      315, -1, 316, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, 318, -1, -1, -1, -1, 319, -1, -1, 320, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, 321, -1, 322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, 
+      -1, -1, -1, 324, -1, 325, -1, -1, 326, -1, -1, -1, -1, 327, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, 328, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 331, 332, -1, -1, 333, 334, -1, -1, 335, 336, 337, 338, -1, -1, 
+      -1, -1, 339, 340, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 345, -1, -1, -1, -1, -1, 346, 347, -1, 348, -1, -1, -1, -1, 
+      -1, -1, 349, 350, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+    {
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 353, -1, -1, -1, -1, 354, -1, 355, -1, 356, 
+      -1, 357, -1, 358, -1, 359, -1, 360, -1, 361, -1, 362, -1, 363, -1, 364, 
+      -1, 365, -1, -1, 366, -1, 367, -1, 368, -1, -1, -1, -1, -1, -1, 134, 
+      -1, -1, 135, -1, -1, 136, -1, -1, 137, -1, -1, 138, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, -1, 369, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 370, -1, -1, -1, -1, 371, -1, 372, -1, 373, 
+      -1, 374, -1, 375, -1, 376, -1, 377, -1, 378, -1, 379, -1, 380, -1, 381, 
+      -1, 382, -1, -1, 383, -1, 384, -1, 385, -1, -1, -1, -1, -1, -1, 139, 
+      -1, -1, 140, -1, -1, 141, -1, -1, 142, -1, -1, 143, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 
+      387, 388, 389, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, 
+    },
+  };
+}
diff --git a/java/gnu/inet/encoding/DecompositionKeys.java b/java/gnu/inet/encoding/DecompositionKeys.java
new file mode 100644 (file)
index 0000000..dabff6d
--- /dev/null
@@ -0,0 +1,3610 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit GenerateNFKC.java and re-run.  */
+
+package gnu.inet.encoding;
+
+/**
+ * Auto-generated class containing Unicode NFKC tables.
+ */
+public class DecompositionKeys
+{
+  public final static int[] k = new int[] {
+    '\u00A0', 0,
+    '\u00A8', 1,
+    '\u00AA', 2,
+    '\u00AF', 3,
+    '\u00B2', 4,
+    '\u00B3', 5,
+    '\u00B4', 6,
+    '\u00B5', 7,
+    '\u00B8', 8,
+    '\u00B9', 9,
+    '\u00BA', 10,
+    '\u00BC', 11,
+    '\u00BD', 12,
+    '\u00BE', 13,
+    '\u00C0', 14,
+    '\u00C1', 15,
+    '\u00C2', 16,
+    '\u00C3', 17,
+    '\u00C4', 18,
+    '\u00C5', 19,
+    '\u00C7', 20,
+    '\u00C8', 21,
+    '\u00C9', 22,
+    '\u00CA', 23,
+    '\u00CB', 24,
+    '\u00CC', 25,
+    '\u00CD', 26,
+    '\u00CE', 27,
+    '\u00CF', 28,
+    '\u00D1', 29,
+    '\u00D2', 30,
+    '\u00D3', 31,
+    '\u00D4', 32,
+    '\u00D5', 33,
+    '\u00D6', 34,
+    '\u00D9', 35,
+    '\u00DA', 36,
+    '\u00DB', 37,
+    '\u00DC', 38,
+    '\u00DD', 39,
+    '\u00E0', 40,
+    '\u00E1', 41,
+    '\u00E2', 42,
+    '\u00E3', 43,
+    '\u00E4', 44,
+    '\u00E5', 45,
+    '\u00E7', 46,
+    '\u00E8', 47,
+    '\u00E9', 48,
+    '\u00EA', 49,
+    '\u00EB', 50,
+    '\u00EC', 51,
+    '\u00ED', 52,
+    '\u00EE', 53,
+    '\u00EF', 54,
+    '\u00F1', 55,
+    '\u00F2', 56,
+    '\u00F3', 57,
+    '\u00F4', 58,
+    '\u00F5', 59,
+    '\u00F6', 60,
+    '\u00F9', 61,
+    '\u00FA', 62,
+    '\u00FB', 63,
+    '\u00FC', 64,
+    '\u00FD', 65,
+    '\u00FF', 66,
+    '\u0100', 67,
+    '\u0101', 68,
+    '\u0102', 69,
+    '\u0103', 70,
+    '\u0104', 71,
+    '\u0105', 72,
+    '\u0106', 73,
+    '\u0107', 74,
+    '\u0108', 75,
+    '\u0109', 76,
+    '\u010A', 77,
+    '\u010B', 78,
+    '\u010C', 79,
+    '\u010D', 80,
+    '\u010E', 81,
+    '\u010F', 82,
+    '\u0112', 83,
+    '\u0113', 84,
+    '\u0114', 85,
+    '\u0115', 86,
+    '\u0116', 87,
+    '\u0117', 88,
+    '\u0118', 89,
+    '\u0119', 90,
+    '\u011A', 91,
+    '\u011B', 92,
+    '\u011C', 93,
+    '\u011D', 94,
+    '\u011E', 95,
+    '\u011F', 96,
+    '\u0120', 97,
+    '\u0121', 98,
+    '\u0122', 99,
+    '\u0123', 100,
+    '\u0124', 101,
+    '\u0125', 102,
+    '\u0128', 103,
+    '\u0129', 104,
+    '\u012A', 105,
+    '\u012B', 106,
+    '\u012C', 107,
+    '\u012D', 108,
+    '\u012E', 109,
+    '\u012F', 110,
+    '\u0130', 111,
+    '\u0132', 112,
+    '\u0133', 113,
+    '\u0134', 114,
+    '\u0135', 115,
+    '\u0136', 116,
+    '\u0137', 117,
+    '\u0139', 118,
+    '\u013A', 119,
+    '\u013B', 120,
+    '\u013C', 121,
+    '\u013D', 122,
+    '\u013E', 123,
+    '\u013F', 124,
+    '\u0140', 125,
+    '\u0143', 126,
+    '\u0144', 127,
+    '\u0145', 128,
+    '\u0146', 129,
+    '\u0147', 130,
+    '\u0148', 131,
+    '\u0149', 132,
+    '\u014C', 133,
+    '\u014D', 134,
+    '\u014E', 135,
+    '\u014F', 136,
+    '\u0150', 137,
+    '\u0151', 138,
+    '\u0154', 139,
+    '\u0155', 140,
+    '\u0156', 141,
+    '\u0157', 142,
+    '\u0158', 143,
+    '\u0159', 144,
+    '\u015A', 145,
+    '\u015B', 146,
+    '\u015C', 147,
+    '\u015D', 148,
+    '\u015E', 149,
+    '\u015F', 150,
+    '\u0160', 151,
+    '\u0161', 152,
+    '\u0162', 153,
+    '\u0163', 154,
+    '\u0164', 155,
+    '\u0165', 156,
+    '\u0168', 157,
+    '\u0169', 158,
+    '\u016A', 159,
+    '\u016B', 160,
+    '\u016C', 161,
+    '\u016D', 162,
+    '\u016E', 163,
+    '\u016F', 164,
+    '\u0170', 165,
+    '\u0171', 166,
+    '\u0172', 167,
+    '\u0173', 168,
+    '\u0174', 169,
+    '\u0175', 170,
+    '\u0176', 171,
+    '\u0177', 172,
+    '\u0178', 173,
+    '\u0179', 174,
+    '\u017A', 175,
+    '\u017B', 176,
+    '\u017C', 177,
+    '\u017D', 178,
+    '\u017E', 179,
+    '\u017F', 180,
+    '\u01A0', 181,
+    '\u01A1', 182,
+    '\u01AF', 183,
+    '\u01B0', 184,
+    '\u01C4', 185,
+    '\u01C5', 186,
+    '\u01C6', 187,
+    '\u01C7', 188,
+    '\u01C8', 189,
+    '\u01C9', 190,
+    '\u01CA', 191,
+    '\u01CB', 192,
+    '\u01CC', 193,
+    '\u01CD', 194,
+    '\u01CE', 195,
+    '\u01CF', 196,
+    '\u01D0', 197,
+    '\u01D1', 198,
+    '\u01D2', 199,
+    '\u01D3', 200,
+    '\u01D4', 201,
+    '\u01D5', 202,
+    '\u01D6', 203,
+    '\u01D7', 204,
+    '\u01D8', 205,
+    '\u01D9', 206,
+    '\u01DA', 207,
+    '\u01DB', 208,
+    '\u01DC', 209,
+    '\u01DE', 210,
+    '\u01DF', 211,
+    '\u01E0', 212,
+    '\u01E1', 213,
+    '\u01E2', 214,
+    '\u01E3', 215,
+    '\u01E6', 216,
+    '\u01E7', 217,
+    '\u01E8', 218,
+    '\u01E9', 219,
+    '\u01EA', 220,
+    '\u01EB', 221,
+    '\u01EC', 222,
+    '\u01ED', 223,
+    '\u01EE', 224,
+    '\u01EF', 225,
+    '\u01F0', 226,
+    '\u01F1', 227,
+    '\u01F2', 228,
+    '\u01F3', 229,
+    '\u01F4', 230,
+    '\u01F5', 231,
+    '\u01F8', 232,
+    '\u01F9', 233,
+    '\u01FA', 234,
+    '\u01FB', 235,
+    '\u01FC', 236,
+    '\u01FD', 237,
+    '\u01FE', 238,
+    '\u01FF', 239,
+    '\u0200', 240,
+    '\u0201', 241,
+    '\u0202', 242,
+    '\u0203', 243,
+    '\u0204', 244,
+    '\u0205', 245,
+    '\u0206', 246,
+    '\u0207', 247,
+    '\u0208', 248,
+    '\u0209', 249,
+    '\u020A', 250,
+    '\u020B', 251,
+    '\u020C', 252,
+    '\u020D', 253,
+    '\u020E', 254,
+    '\u020F', 255,
+    '\u0210', 256,
+    '\u0211', 257,
+    '\u0212', 258,
+    '\u0213', 259,
+    '\u0214', 260,
+    '\u0215', 261,
+    '\u0216', 262,
+    '\u0217', 263,
+    '\u0218', 264,
+    '\u0219', 265,
+    '\u021A', 266,
+    '\u021B', 267,
+    '\u021E', 268,
+    '\u021F', 269,
+    '\u0226', 270,
+    '\u0227', 271,
+    '\u0228', 272,
+    '\u0229', 273,
+    '\u022A', 274,
+    '\u022B', 275,
+    '\u022C', 276,
+    '\u022D', 277,
+    '\u022E', 278,
+    '\u022F', 279,
+    '\u0230', 280,
+    '\u0231', 281,
+    '\u0232', 282,
+    '\u0233', 283,
+    '\u02B0', 284,
+    '\u02B1', 285,
+    '\u02B2', 286,
+    '\u02B3', 287,
+    '\u02B4', 288,
+    '\u02B5', 289,
+    '\u02B6', 290,
+    '\u02B7', 291,
+    '\u02B8', 292,
+    '\u02D8', 293,
+    '\u02D9', 294,
+    '\u02DA', 295,
+    '\u02DB', 296,
+    '\u02DC', 297,
+    '\u02DD', 298,
+    '\u02E0', 299,
+    '\u02E1', 300,
+    '\u02E2', 180,
+    '\u02E3', 301,
+    '\u02E4', 302,
+    '\u0340', 303,
+    '\u0341', 304,
+    '\u0343', 305,
+    '\u0344', 306,
+    '\u0374', 307,
+    '\u037A', 308,
+    '\u037E', 309,
+    '\u0384', 6,
+    '\u0385', 310,
+    '\u0386', 311,
+    '\u0387', 312,
+    '\u0388', 313,
+    '\u0389', 314,
+    '\u038A', 315,
+    '\u038C', 316,
+    '\u038E', 317,
+    '\u038F', 318,
+    '\u0390', 319,
+    '\u03AA', 320,
+    '\u03AB', 321,
+    '\u03AC', 322,
+    '\u03AD', 323,
+    '\u03AE', 324,
+    '\u03AF', 325,
+    '\u03B0', 326,
+    '\u03CA', 327,
+    '\u03CB', 328,
+    '\u03CC', 329,
+    '\u03CD', 330,
+    '\u03CE', 331,
+    '\u03D0', 332,
+    '\u03D1', 333,
+    '\u03D2', 334,
+    '\u03D3', 317,
+    '\u03D4', 321,
+    '\u03D5', 335,
+    '\u03D6', 336,
+    '\u03F0', 337,
+    '\u03F1', 338,
+    '\u03F2', 339,
+    '\u03F4', 340,
+    '\u03F5', 341,
+    '\u0400', 342,
+    '\u0401', 343,
+    '\u0403', 344,
+    '\u0407', 345,
+    '\u040C', 346,
+    '\u040D', 347,
+    '\u040E', 348,
+    '\u0419', 349,
+    '\u0439', 350,
+    '\u0450', 351,
+    '\u0451', 352,
+    '\u0453', 353,
+    '\u0457', 354,
+    '\u045C', 355,
+    '\u045D', 356,
+    '\u045E', 357,
+    '\u0476', 358,
+    '\u0477', 359,
+    '\u04C1', 360,
+    '\u04C2', 361,
+    '\u04D0', 362,
+    '\u04D1', 363,
+    '\u04D2', 364,
+    '\u04D3', 365,
+    '\u04D6', 366,
+    '\u04D7', 367,
+    '\u04DA', 368,
+    '\u04DB', 369,
+    '\u04DC', 370,
+    '\u04DD', 371,
+    '\u04DE', 372,
+    '\u04DF', 373,
+    '\u04E2', 374,
+    '\u04E3', 375,
+    '\u04E4', 376,
+    '\u04E5', 377,
+    '\u04E6', 378,
+    '\u04E7', 379,
+    '\u04EA', 380,
+    '\u04EB', 381,
+    '\u04EC', 382,
+    '\u04ED', 383,
+    '\u04EE', 384,
+    '\u04EF', 385,
+    '\u04F0', 386,
+    '\u04F1', 387,
+    '\u04F2', 388,
+    '\u04F3', 389,
+    '\u04F4', 390,
+    '\u04F5', 391,
+    '\u04F8', 392,
+    '\u04F9', 393,
+    '\u0587', 394,
+    '\u0622', 395,
+    '\u0623', 396,
+    '\u0624', 397,
+    '\u0625', 398,
+    '\u0626', 399,
+    '\u0675', 400,
+    '\u0676', 401,
+    '\u0677', 402,
+    '\u0678', 403,
+    '\u06C0', 404,
+    '\u06C2', 405,
+    '\u06D3', 406,
+    '\u0929', 407,
+    '\u0931', 408,
+    '\u0934', 409,
+    '\u0958', 410,
+    '\u0959', 411,
+    '\u095A', 412,
+    '\u095B', 413,
+    '\u095C', 414,
+    '\u095D', 415,
+    '\u095E', 416,
+    '\u095F', 417,
+    '\u09CB', 418,
+    '\u09CC', 419,
+    '\u09DC', 420,
+    '\u09DD', 421,
+    '\u09DF', 422,
+    '\u0A33', 423,
+    '\u0A36', 424,
+    '\u0A59', 425,
+    '\u0A5A', 426,
+    '\u0A5B', 427,
+    '\u0A5E', 428,
+    '\u0B48', 429,
+    '\u0B4B', 430,
+    '\u0B4C', 431,
+    '\u0B5C', 432,
+    '\u0B5D', 433,
+    '\u0B94', 434,
+    '\u0BCA', 435,
+    '\u0BCB', 436,
+    '\u0BCC', 437,
+    '\u0C48', 438,
+    '\u0CC0', 439,
+    '\u0CC7', 440,
+    '\u0CC8', 441,
+    '\u0CCA', 442,
+    '\u0CCB', 443,
+    '\u0D4A', 444,
+    '\u0D4B', 445,
+    '\u0D4C', 446,
+    '\u0DDA', 447,
+    '\u0DDC', 448,
+    '\u0DDD', 449,
+    '\u0DDE', 450,
+    '\u0E33', 451,
+    '\u0EB3', 452,
+    '\u0EDC', 453,
+    '\u0EDD', 454,
+    '\u0F0C', 455,
+    '\u0F43', 456,
+    '\u0F4D', 457,
+    '\u0F52', 458,
+    '\u0F57', 459,
+    '\u0F5C', 460,
+    '\u0F69', 461,
+    '\u0F73', 462,
+    '\u0F75', 463,
+    '\u0F76', 464,
+    '\u0F77', 465,
+    '\u0F78', 466,
+    '\u0F79', 467,
+    '\u0F81', 468,
+    '\u0F93', 469,
+    '\u0F9D', 470,
+    '\u0FA2', 471,
+    '\u0FA7', 472,
+    '\u0FAC', 473,
+    '\u0FB9', 474,
+    '\u1026', 475,
+    '\u1E00', 476,
+    '\u1E01', 477,
+    '\u1E02', 478,
+    '\u1E03', 479,
+    '\u1E04', 480,
+    '\u1E05', 481,
+    '\u1E06', 482,
+    '\u1E07', 483,
+    '\u1E08', 484,
+    '\u1E09', 485,
+    '\u1E0A', 486,
+    '\u1E0B', 487,
+    '\u1E0C', 488,
+    '\u1E0D', 489,
+    '\u1E0E', 490,
+    '\u1E0F', 491,
+    '\u1E10', 492,
+    '\u1E11', 493,
+    '\u1E12', 494,
+    '\u1E13', 495,
+    '\u1E14', 496,
+    '\u1E15', 497,
+    '\u1E16', 498,
+    '\u1E17', 499,
+    '\u1E18', 500,
+    '\u1E19', 501,
+    '\u1E1A', 502,
+    '\u1E1B', 503,
+    '\u1E1C', 504,
+    '\u1E1D', 505,
+    '\u1E1E', 506,
+    '\u1E1F', 507,
+    '\u1E20', 508,
+    '\u1E21', 509,
+    '\u1E22', 510,
+    '\u1E23', 511,
+    '\u1E24', 512,
+    '\u1E25', 513,
+    '\u1E26', 514,
+    '\u1E27', 515,
+    '\u1E28', 516,
+    '\u1E29', 517,
+    '\u1E2A', 518,
+    '\u1E2B', 519,
+    '\u1E2C', 520,
+    '\u1E2D', 521,
+    '\u1E2E', 522,
+    '\u1E2F', 523,
+    '\u1E30', 524,
+    '\u1E31', 525,
+    '\u1E32', 526,
+    '\u1E33', 527,
+    '\u1E34', 528,
+    '\u1E35', 529,
+    '\u1E36', 530,
+    '\u1E37', 531,
+    '\u1E38', 532,
+    '\u1E39', 533,
+    '\u1E3A', 534,
+    '\u1E3B', 535,
+    '\u1E3C', 536,
+    '\u1E3D', 537,
+    '\u1E3E', 538,
+    '\u1E3F', 539,
+    '\u1E40', 540,
+    '\u1E41', 541,
+    '\u1E42', 542,
+    '\u1E43', 543,
+    '\u1E44', 544,
+    '\u1E45', 545,
+    '\u1E46', 546,
+    '\u1E47', 547,
+    '\u1E48', 548,
+    '\u1E49', 549,
+    '\u1E4A', 550,
+    '\u1E4B', 551,
+    '\u1E4C', 552,
+    '\u1E4D', 553,
+    '\u1E4E', 554,
+    '\u1E4F', 555,
+    '\u1E50', 556,
+    '\u1E51', 557,
+    '\u1E52', 558,
+    '\u1E53', 559,
+    '\u1E54', 560,
+    '\u1E55', 561,
+    '\u1E56', 562,
+    '\u1E57', 563,
+    '\u1E58', 564,
+    '\u1E59', 565,
+    '\u1E5A', 566,
+    '\u1E5B', 567,
+    '\u1E5C', 568,
+    '\u1E5D', 569,
+    '\u1E5E', 570,
+    '\u1E5F', 571,
+    '\u1E60', 572,
+    '\u1E61', 573,
+    '\u1E62', 574,
+    '\u1E63', 575,
+    '\u1E64', 576,
+    '\u1E65', 577,
+    '\u1E66', 578,
+    '\u1E67', 579,
+    '\u1E68', 580,
+    '\u1E69', 581,
+    '\u1E6A', 582,
+    '\u1E6B', 583,
+    '\u1E6C', 584,
+    '\u1E6D', 585,
+    '\u1E6E', 586,
+    '\u1E6F', 587,
+    '\u1E70', 588,
+    '\u1E71', 589,
+    '\u1E72', 590,
+    '\u1E73', 591,
+    '\u1E74', 592,
+    '\u1E75', 593,
+    '\u1E76', 594,
+    '\u1E77', 595,
+    '\u1E78', 596,
+    '\u1E79', 597,
+    '\u1E7A', 598,
+    '\u1E7B', 599,
+    '\u1E7C', 600,
+    '\u1E7D', 601,
+    '\u1E7E', 602,
+    '\u1E7F', 603,
+    '\u1E80', 604,
+    '\u1E81', 605,
+    '\u1E82', 606,
+    '\u1E83', 607,
+    '\u1E84', 608,
+    '\u1E85', 609,
+    '\u1E86', 610,
+    '\u1E87', 611,
+    '\u1E88', 612,
+    '\u1E89', 613,
+    '\u1E8A', 614,
+    '\u1E8B', 615,
+    '\u1E8C', 616,
+    '\u1E8D', 617,
+    '\u1E8E', 618,
+    '\u1E8F', 619,
+    '\u1E90', 620,
+    '\u1E91', 621,
+    '\u1E92', 622,
+    '\u1E93', 623,
+    '\u1E94', 624,
+    '\u1E95', 625,
+    '\u1E96', 626,
+    '\u1E97', 627,
+    '\u1E98', 628,
+    '\u1E99', 629,
+    '\u1E9A', 630,
+    '\u1E9B', 573,
+    '\u1EA0', 631,
+    '\u1EA1', 632,
+    '\u1EA2', 633,
+    '\u1EA3', 634,
+    '\u1EA4', 635,
+    '\u1EA5', 636,
+    '\u1EA6', 637,
+    '\u1EA7', 638,
+    '\u1EA8', 639,
+    '\u1EA9', 640,
+    '\u1EAA', 641,
+    '\u1EAB', 642,
+    '\u1EAC', 643,
+    '\u1EAD', 644,
+    '\u1EAE', 645,
+    '\u1EAF', 646,
+    '\u1EB0', 647,
+    '\u1EB1', 648,
+    '\u1EB2', 649,
+    '\u1EB3', 650,
+    '\u1EB4', 651,
+    '\u1EB5', 652,
+    '\u1EB6', 653,
+    '\u1EB7', 654,
+    '\u1EB8', 655,
+    '\u1EB9', 656,
+    '\u1EBA', 657,
+    '\u1EBB', 658,
+    '\u1EBC', 659,
+    '\u1EBD', 660,
+    '\u1EBE', 661,
+    '\u1EBF', 662,
+    '\u1EC0', 663,
+    '\u1EC1', 664,
+    '\u1EC2', 665,
+    '\u1EC3', 666,
+    '\u1EC4', 667,
+    '\u1EC5', 668,
+    '\u1EC6', 669,
+    '\u1EC7', 670,
+    '\u1EC8', 671,
+    '\u1EC9', 672,
+    '\u1ECA', 673,
+    '\u1ECB', 674,
+    '\u1ECC', 675,
+    '\u1ECD', 676,
+    '\u1ECE', 677,
+    '\u1ECF', 678,
+    '\u1ED0', 679,
+    '\u1ED1', 680,
+    '\u1ED2', 681,
+    '\u1ED3', 682,
+    '\u1ED4', 683,
+    '\u1ED5', 684,
+    '\u1ED6', 685,
+    '\u1ED7', 686,
+    '\u1ED8', 687,
+    '\u1ED9', 688,
+    '\u1EDA', 689,
+    '\u1EDB', 690,
+    '\u1EDC', 691,
+    '\u1EDD', 692,
+    '\u1EDE', 693,
+    '\u1EDF', 694,
+    '\u1EE0', 695,
+    '\u1EE1', 696,
+    '\u1EE2', 697,
+    '\u1EE3', 698,
+    '\u1EE4', 699,
+    '\u1EE5', 700,
+    '\u1EE6', 701,
+    '\u1EE7', 702,
+    '\u1EE8', 703,
+    '\u1EE9', 704,
+    '\u1EEA', 705,
+    '\u1EEB', 706,
+    '\u1EEC', 707,
+    '\u1EED', 708,
+    '\u1EEE', 709,
+    '\u1EEF', 710,
+    '\u1EF0', 711,
+    '\u1EF1', 712,
+    '\u1EF2', 713,
+    '\u1EF3', 714,
+    '\u1EF4', 715,
+    '\u1EF5', 716,
+    '\u1EF6', 717,
+    '\u1EF7', 718,
+    '\u1EF8', 719,
+    '\u1EF9', 720,
+    '\u1F00', 721,
+    '\u1F01', 722,
+    '\u1F02', 723,
+    '\u1F03', 724,
+    '\u1F04', 725,
+    '\u1F05', 726,
+    '\u1F06', 727,
+    '\u1F07', 728,
+    '\u1F08', 729,
+    '\u1F09', 730,
+    '\u1F0A', 731,
+    '\u1F0B', 732,
+    '\u1F0C', 733,
+    '\u1F0D', 734,
+    '\u1F0E', 735,
+    '\u1F0F', 736,
+    '\u1F10', 737,
+    '\u1F11', 738,
+    '\u1F12', 739,
+    '\u1F13', 740,
+    '\u1F14', 741,
+    '\u1F15', 742,
+    '\u1F18', 743,
+    '\u1F19', 744,
+    '\u1F1A', 745,
+    '\u1F1B', 746,
+    '\u1F1C', 747,
+    '\u1F1D', 748,
+    '\u1F20', 749,
+    '\u1F21', 750,
+    '\u1F22', 751,
+    '\u1F23', 752,
+    '\u1F24', 753,
+    '\u1F25', 754,
+    '\u1F26', 755,
+    '\u1F27', 756,
+    '\u1F28', 757,
+    '\u1F29', 758,
+    '\u1F2A', 759,
+    '\u1F2B', 760,
+    '\u1F2C', 761,
+    '\u1F2D', 762,
+    '\u1F2E', 763,
+    '\u1F2F', 764,
+    '\u1F30', 765,
+    '\u1F31', 766,
+    '\u1F32', 767,
+    '\u1F33', 768,
+    '\u1F34', 769,
+    '\u1F35', 770,
+    '\u1F36', 771,
+    '\u1F37', 772,
+    '\u1F38', 773,
+    '\u1F39', 774,
+    '\u1F3A', 775,
+    '\u1F3B', 776,
+    '\u1F3C', 777,
+    '\u1F3D', 778,
+    '\u1F3E', 779,
+    '\u1F3F', 780,
+    '\u1F40', 781,
+    '\u1F41', 782,
+    '\u1F42', 783,
+    '\u1F43', 784,
+    '\u1F44', 785,
+    '\u1F45', 786,
+    '\u1F48', 787,
+    '\u1F49', 788,
+    '\u1F4A', 789,
+    '\u1F4B', 790,
+    '\u1F4C', 791,
+    '\u1F4D', 792,
+    '\u1F50', 793,
+    '\u1F51', 794,
+    '\u1F52', 795,
+    '\u1F53', 796,
+    '\u1F54', 797,
+    '\u1F55', 798,
+    '\u1F56', 799,
+    '\u1F57', 800,
+    '\u1F59', 801,
+    '\u1F5B', 802,
+    '\u1F5D', 803,
+    '\u1F5F', 804,
+    '\u1F60', 805,
+    '\u1F61', 806,
+    '\u1F62', 807,
+    '\u1F63', 808,
+    '\u1F64', 809,
+    '\u1F65', 810,
+    '\u1F66', 811,
+    '\u1F67', 812,
+    '\u1F68', 813,
+    '\u1F69', 814,
+    '\u1F6A', 815,
+    '\u1F6B', 816,
+    '\u1F6C', 817,
+    '\u1F6D', 818,
+    '\u1F6E', 819,
+    '\u1F6F', 820,
+    '\u1F70', 821,
+    '\u1F71', 322,
+    '\u1F72', 822,
+    '\u1F73', 323,
+    '\u1F74', 823,
+    '\u1F75', 324,
+    '\u1F76', 824,
+    '\u1F77', 325,
+    '\u1F78', 825,
+    '\u1F79', 329,
+    '\u1F7A', 826,
+    '\u1F7B', 330,
+    '\u1F7C', 827,
+    '\u1F7D', 331,
+    '\u1F80', 828,
+    '\u1F81', 829,
+    '\u1F82', 830,
+    '\u1F83', 831,
+    '\u1F84', 832,
+    '\u1F85', 833,
+    '\u1F86', 834,
+    '\u1F87', 835,
+    '\u1F88', 836,
+    '\u1F89', 837,
+    '\u1F8A', 838,
+    '\u1F8B', 839,
+    '\u1F8C', 840,
+    '\u1F8D', 841,
+    '\u1F8E', 842,
+    '\u1F8F', 843,
+    '\u1F90', 844,
+    '\u1F91', 845,
+    '\u1F92', 846,
+    '\u1F93', 847,
+    '\u1F94', 848,
+    '\u1F95', 849,
+    '\u1F96', 850,
+    '\u1F97', 851,
+    '\u1F98', 852,
+    '\u1F99', 853,
+    '\u1F9A', 854,
+    '\u1F9B', 855,
+    '\u1F9C', 856,
+    '\u1F9D', 857,
+    '\u1F9E', 858,
+    '\u1F9F', 859,
+    '\u1FA0', 860,
+    '\u1FA1', 861,
+    '\u1FA2', 862,
+    '\u1FA3', 863,
+    '\u1FA4', 864,
+    '\u1FA5', 865,
+    '\u1FA6', 866,
+    '\u1FA7', 867,
+    '\u1FA8', 868,
+    '\u1FA9', 869,
+    '\u1FAA', 870,
+    '\u1FAB', 871,
+    '\u1FAC', 872,
+    '\u1FAD', 873,
+    '\u1FAE', 874,
+    '\u1FAF', 875,
+    '\u1FB0', 876,
+    '\u1FB1', 877,
+    '\u1FB2', 878,
+    '\u1FB3', 879,
+    '\u1FB4', 880,
+    '\u1FB6', 881,
+    '\u1FB7', 882,
+    '\u1FB8', 883,
+    '\u1FB9', 884,
+    '\u1FBA', 885,
+    '\u1FBB', 311,
+    '\u1FBC', 886,
+    '\u1FBD', 887,
+    '\u1FBE', 888,
+    '\u1FBF', 887,
+    '\u1FC0', 889,
+    '\u1FC1', 890,
+    '\u1FC2', 891,
+    '\u1FC3', 892,
+    '\u1FC4', 893,
+    '\u1FC6', 894,
+    '\u1FC7', 895,
+    '\u1FC8', 896,
+    '\u1FC9', 313,
+    '\u1FCA', 897,
+    '\u1FCB', 314,
+    '\u1FCC', 898,
+    '\u1FCD', 899,
+    '\u1FCE', 900,
+    '\u1FCF', 901,
+    '\u1FD0', 902,
+    '\u1FD1', 903,
+    '\u1FD2', 904,
+    '\u1FD3', 319,
+    '\u1FD6', 905,
+    '\u1FD7', 906,
+    '\u1FD8', 907,
+    '\u1FD9', 908,
+    '\u1FDA', 909,
+    '\u1FDB', 315,
+    '\u1FDD', 910,
+    '\u1FDE', 911,
+    '\u1FDF', 912,
+    '\u1FE0', 913,
+    '\u1FE1', 914,
+    '\u1FE2', 915,
+    '\u1FE3', 326,
+    '\u1FE4', 916,
+    '\u1FE5', 917,
+    '\u1FE6', 918,
+    '\u1FE7', 919,
+    '\u1FE8', 920,
+    '\u1FE9', 921,
+    '\u1FEA', 922,
+    '\u1FEB', 317,
+    '\u1FEC', 923,
+    '\u1FED', 924,
+    '\u1FEE', 310,
+    '\u1FEF', 925,
+    '\u1FF2', 926,
+    '\u1FF3', 927,
+    '\u1FF4', 928,
+    '\u1FF6', 929,
+    '\u1FF7', 930,
+    '\u1FF8', 931,
+    '\u1FF9', 316,
+    '\u1FFA', 932,
+    '\u1FFB', 318,
+    '\u1FFC', 933,
+    '\u1FFD', 6,
+    '\u1FFE', 934,
+    '\u2000', 0,
+    '\u2001', 0,
+    '\u2002', 0,
+    '\u2003', 0,
+    '\u2004', 0,
+    '\u2005', 0,
+    '\u2006', 0,
+    '\u2007', 0,
+    '\u2008', 0,
+    '\u2009', 0,
+    '\u200A', 0,
+    '\u2011', 935,
+    '\u2017', 936,
+    '\u2024', 937,
+    '\u2025', 938,
+    '\u2026', 939,
+    '\u202F', 0,
+    '\u2033', 940,
+    '\u2034', 941,
+    '\u2036', 942,
+    '\u2037', 943,
+    '\u203C', 944,
+    '\u203E', 945,
+    '\u2047', 946,
+    '\u2048', 947,
+    '\u2049', 948,
+    '\u2057', 949,
+    '\u205F', 0,
+    '\u2070', 950,
+    '\u2071', 951,
+    '\u2074', 952,
+    '\u2075', 953,
+    '\u2076', 954,
+    '\u2077', 955,
+    '\u2078', 956,
+    '\u2079', 957,
+    '\u207A', 958,
+    '\u207B', 959,
+    '\u207C', 960,
+    '\u207D', 961,
+    '\u207E', 962,
+    '\u207F', 963,
+    '\u2080', 950,
+    '\u2081', 9,
+    '\u2082', 4,
+    '\u2083', 5,
+    '\u2084', 952,
+    '\u2085', 953,
+    '\u2086', 954,
+    '\u2087', 955,
+    '\u2088', 956,
+    '\u2089', 957,
+    '\u208A', 958,
+    '\u208B', 959,
+    '\u208C', 960,
+    '\u208D', 961,
+    '\u208E', 962,
+    '\u20A8', 964,
+    '\u2100', 965,
+    '\u2101', 966,
+    '\u2102', 967,
+    '\u2103', 968,
+    '\u2105', 969,
+    '\u2106', 970,
+    '\u2107', 971,
+    '\u2109', 972,
+    '\u210A', 973,
+    '\u210B', 974,
+    '\u210C', 974,
+    '\u210D', 974,
+    '\u210E', 284,
+    '\u210F', 975,
+    '\u2110', 976,
+    '\u2111', 976,
+    '\u2112', 977,
+    '\u2113', 300,
+    '\u2115', 978,
+    '\u2116', 979,
+    '\u2119', 980,
+    '\u211A', 981,
+    '\u211B', 982,
+    '\u211C', 982,
+    '\u211D', 982,
+    '\u2120', 983,
+    '\u2121', 984,
+    '\u2122', 985,
+    '\u2124', 986,
+    '\u2126', 987,
+    '\u2128', 986,
+    '\u212A', 988,
+    '\u212B', 19,
+    '\u212C', 989,
+    '\u212D', 967,
+    '\u212F', 990,
+    '\u2130', 991,
+    '\u2131', 992,
+    '\u2133', 993,
+    '\u2134', 10,
+    '\u2135', 994,
+    '\u2136', 995,
+    '\u2137', 996,
+    '\u2138', 997,
+    '\u2139', 951,
+    '\u213D', 998,
+    '\u213E', 999,
+    '\u213F', 1000,
+    '\u2140', 1001,
+    '\u2145', 1002,
+    '\u2146', 1003,
+    '\u2147', 990,
+    '\u2148', 951,
+    '\u2149', 286,
+    '\u2153', 1004,
+    '\u2154', 1005,
+    '\u2155', 1006,
+    '\u2156', 1007,
+    '\u2157', 1008,
+    '\u2158', 1009,
+    '\u2159', 1010,
+    '\u215A', 1011,
+    '\u215B', 1012,
+    '\u215C', 1013,
+    '\u215D', 1014,
+    '\u215E', 1015,
+    '\u215F', 1016,
+    '\u2160', 976,
+    '\u2161', 1017,
+    '\u2162', 1018,
+    '\u2163', 1019,
+    '\u2164', 1020,
+    '\u2165', 1021,
+    '\u2166', 1022,
+    '\u2167', 1023,
+    '\u2168', 1024,
+    '\u2169', 1025,
+    '\u216A', 1026,
+    '\u216B', 1027,
+    '\u216C', 977,
+    '\u216D', 967,
+    '\u216E', 1002,
+    '\u216F', 993,
+    '\u2170', 951,
+    '\u2171', 1028,
+    '\u2172', 1029,
+    '\u2173', 1030,
+    '\u2174', 1031,
+    '\u2175', 1032,
+    '\u2176', 1033,
+    '\u2177', 1034,
+    '\u2178', 1035,
+    '\u2179', 301,
+    '\u217A', 1036,
+    '\u217B', 1037,
+    '\u217C', 300,
+    '\u217D', 1038,
+    '\u217E', 1003,
+    '\u217F', 1039,
+    '\u219A', 1040,
+    '\u219B', 1041,
+    '\u21AE', 1042,
+    '\u21CD', 1043,
+    '\u21CE', 1044,
+    '\u21CF', 1045,
+    '\u2204', 1046,
+    '\u2209', 1047,
+    '\u220C', 1048,
+    '\u2224', 1049,
+    '\u2226', 1050,
+    '\u222C', 1051,
+    '\u222D', 1052,
+    '\u222F', 1053,
+    '\u2230', 1054,
+    '\u2241', 1055,
+    '\u2244', 1056,
+    '\u2247', 1057,
+    '\u2249', 1058,
+    '\u2260', 1059,
+    '\u2262', 1060,
+    '\u226D', 1061,
+    '\u226E', 1062,
+    '\u226F', 1063,
+    '\u2270', 1064,
+    '\u2271', 1065,
+    '\u2274', 1066,
+    '\u2275', 1067,
+    '\u2278', 1068,
+    '\u2279', 1069,
+    '\u2280', 1070,
+    '\u2281', 1071,
+    '\u2284', 1072,
+    '\u2285', 1073,
+    '\u2288', 1074,
+    '\u2289', 1075,
+    '\u22AC', 1076,
+    '\u22AD', 1077,
+    '\u22AE', 1078,
+    '\u22AF', 1079,
+    '\u22E0', 1080,
+    '\u22E1', 1081,
+    '\u22E2', 1082,
+    '\u22E3', 1083,
+    '\u22EA', 1084,
+    '\u22EB', 1085,
+    '\u22EC', 1086,
+    '\u22ED', 1087,
+    '\u2329', 1088,
+    '\u232A', 1089,
+    '\u2460', 9,
+    '\u2461', 4,
+    '\u2462', 5,
+    '\u2463', 952,
+    '\u2464', 953,
+    '\u2465', 954,
+    '\u2466', 955,
+    '\u2467', 956,
+    '\u2468', 957,
+    '\u2469', 1090,
+    '\u246A', 1091,
+    '\u246B', 1092,
+    '\u246C', 1093,
+    '\u246D', 1094,
+    '\u246E', 1095,
+    '\u246F', 1096,
+    '\u2470', 1097,
+    '\u2471', 1098,
+    '\u2472', 1099,
+    '\u2473', 1100,
+    '\u2474', 1101,
+    '\u2475', 1102,
+    '\u2476', 1103,
+    '\u2477', 1104,
+    '\u2478', 1105,
+    '\u2479', 1106,
+    '\u247A', 1107,
+    '\u247B', 1108,
+    '\u247C', 1109,
+    '\u247D', 1110,
+    '\u247E', 1111,
+    '\u247F', 1112,
+    '\u2480', 1113,
+    '\u2481', 1114,
+    '\u2482', 1115,
+    '\u2483', 1116,
+    '\u2484', 1117,
+    '\u2485', 1118,
+    '\u2486', 1119,
+    '\u2487', 1120,
+    '\u2488', 1121,
+    '\u2489', 1122,
+    '\u248A', 1123,
+    '\u248B', 1124,
+    '\u248C', 1125,
+    '\u248D', 1126,
+    '\u248E', 1127,
+    '\u248F', 1128,
+    '\u2490', 1129,
+    '\u2491', 1130,
+    '\u2492', 1131,
+    '\u2493', 1132,
+    '\u2494', 1133,
+    '\u2495', 1134,
+    '\u2496', 1135,
+    '\u2497', 1136,
+    '\u2498', 1137,
+    '\u2499', 1138,
+    '\u249A', 1139,
+    '\u249B', 1140,
+    '\u249C', 1141,
+    '\u249D', 1142,
+    '\u249E', 1143,
+    '\u249F', 1144,
+    '\u24A0', 1145,
+    '\u24A1', 1146,
+    '\u24A2', 1147,
+    '\u24A3', 1148,
+    '\u24A4', 1149,
+    '\u24A5', 1150,
+    '\u24A6', 1151,
+    '\u24A7', 1152,
+    '\u24A8', 1153,
+    '\u24A9', 1154,
+    '\u24AA', 1155,
+    '\u24AB', 1156,
+    '\u24AC', 1157,
+    '\u24AD', 1158,
+    '\u24AE', 1159,
+    '\u24AF', 1160,
+    '\u24B0', 1161,
+    '\u24B1', 1162,
+    '\u24B2', 1163,
+    '\u24B3', 1164,
+    '\u24B4', 1165,
+    '\u24B5', 1166,
+    '\u24B6', 1167,
+    '\u24B7', 989,
+    '\u24B8', 967,
+    '\u24B9', 1002,
+    '\u24BA', 991,
+    '\u24BB', 992,
+    '\u24BC', 1168,
+    '\u24BD', 974,
+    '\u24BE', 976,
+    '\u24BF', 1169,
+    '\u24C0', 988,
+    '\u24C1', 977,
+    '\u24C2', 993,
+    '\u24C3', 978,
+    '\u24C4', 1170,
+    '\u24C5', 980,
+    '\u24C6', 981,
+    '\u24C7', 982,
+    '\u24C8', 1171,
+    '\u24C9', 1172,
+    '\u24CA', 1173,
+    '\u24CB', 1020,
+    '\u24CC', 1174,
+    '\u24CD', 1025,
+    '\u24CE', 1175,
+    '\u24CF', 986,
+    '\u24D0', 2,
+    '\u24D1', 1176,
+    '\u24D2', 1038,
+    '\u24D3', 1003,
+    '\u24D4', 990,
+    '\u24D5', 1177,
+    '\u24D6', 973,
+    '\u24D7', 284,
+    '\u24D8', 951,
+    '\u24D9', 286,
+    '\u24DA', 1178,
+    '\u24DB', 300,
+    '\u24DC', 1039,
+    '\u24DD', 963,
+    '\u24DE', 10,
+    '\u24DF', 1179,
+    '\u24E0', 1180,
+    '\u24E1', 287,
+    '\u24E2', 180,
+    '\u24E3', 1181,
+    '\u24E4', 1182,
+    '\u24E5', 1031,
+    '\u24E6', 291,
+    '\u24E7', 301,
+    '\u24E8', 292,
+    '\u24E9', 1183,
+    '\u24EA', 950,
+    '\u2A0C', 1184,
+    '\u2A74', 1185,
+    '\u2A75', 1186,
+    '\u2A76', 1187,
+    '\u2ADC', 1188,
+    '\u2E9F', 1189,
+    '\u2EF3', 1190,
+    '\u2F00', 1191,
+    '\u2F01', 1192,
+    '\u2F02', 1193,
+    '\u2F03', 1194,
+    '\u2F04', 1195,
+    '\u2F05', 1196,
+    '\u2F06', 1197,
+    '\u2F07', 1198,
+    '\u2F08', 1199,
+    '\u2F09', 1200,
+    '\u2F0A', 1201,
+    '\u2F0B', 1202,
+    '\u2F0C', 1203,
+    '\u2F0D', 1204,
+    '\u2F0E', 1205,
+    '\u2F0F', 1206,
+    '\u2F10', 1207,
+    '\u2F11', 1208,
+    '\u2F12', 1209,
+    '\u2F13', 1210,
+    '\u2F14', 1211,
+    '\u2F15', 1212,
+    '\u2F16', 1213,
+    '\u2F17', 1214,
+    '\u2F18', 1215,
+    '\u2F19', 1216,
+    '\u2F1A', 1217,
+    '\u2F1B', 1218,
+    '\u2F1C', 1219,
+    '\u2F1D', 1220,
+    '\u2F1E', 1221,
+    '\u2F1F', 1222,
+    '\u2F20', 1223,
+    '\u2F21', 1224,
+    '\u2F22', 1225,
+    '\u2F23', 1226,
+    '\u2F24', 1227,
+    '\u2F25', 1228,
+    '\u2F26', 1229,
+    '\u2F27', 1230,
+    '\u2F28', 1231,
+    '\u2F29', 1232,
+    '\u2F2A', 1233,
+    '\u2F2B', 1234,
+    '\u2F2C', 1235,
+    '\u2F2D', 1236,
+    '\u2F2E', 1237,
+    '\u2F2F', 1238,
+    '\u2F30', 1239,
+    '\u2F31', 1240,
+    '\u2F32', 1241,
+    '\u2F33', 1242,
+    '\u2F34', 1243,
+    '\u2F35', 1244,
+    '\u2F36', 1245,
+    '\u2F37', 1246,
+    '\u2F38', 1247,
+    '\u2F39', 1248,
+    '\u2F3A', 1249,
+    '\u2F3B', 1250,
+    '\u2F3C', 1251,
+    '\u2F3D', 1252,
+    '\u2F3E', 1253,
+    '\u2F3F', 1254,
+    '\u2F40', 1255,
+    '\u2F41', 1256,
+    '\u2F42', 1257,
+    '\u2F43', 1258,
+    '\u2F44', 1259,
+    '\u2F45', 1260,
+    '\u2F46', 1261,
+    '\u2F47', 1262,
+    '\u2F48', 1263,
+    '\u2F49', 1264,
+    '\u2F4A', 1265,
+    '\u2F4B', 1266,
+    '\u2F4C', 1267,
+    '\u2F4D', 1268,
+    '\u2F4E', 1269,
+    '\u2F4F', 1270,
+    '\u2F50', 1271,
+    '\u2F51', 1272,
+    '\u2F52', 1273,
+    '\u2F53', 1274,
+    '\u2F54', 1275,
+    '\u2F55', 1276,
+    '\u2F56', 1277,
+    '\u2F57', 1278,
+    '\u2F58', 1279,
+    '\u2F59', 1280,
+    '\u2F5A', 1281,
+    '\u2F5B', 1282,
+    '\u2F5C', 1283,
+    '\u2F5D', 1284,
+    '\u2F5E', 1285,
+    '\u2F5F', 1286,
+    '\u2F60', 1287,
+    '\u2F61', 1288,
+    '\u2F62', 1289,
+    '\u2F63', 1290,
+    '\u2F64', 1291,
+    '\u2F65', 1292,
+    '\u2F66', 1293,
+    '\u2F67', 1294,
+    '\u2F68', 1295,
+    '\u2F69', 1296,
+    '\u2F6A', 1297,
+    '\u2F6B', 1298,
+    '\u2F6C', 1299,
+    '\u2F6D', 1300,
+    '\u2F6E', 1301,
+    '\u2F6F', 1302,
+    '\u2F70', 1303,
+    '\u2F71', 1304,
+    '\u2F72', 1305,
+    '\u2F73', 1306,
+    '\u2F74', 1307,
+    '\u2F75', 1308,
+    '\u2F76', 1309,
+    '\u2F77', 1310,
+    '\u2F78', 1311,
+    '\u2F79', 1312,
+    '\u2F7A', 1313,
+    '\u2F7B', 1314,
+    '\u2F7C', 1315,
+    '\u2F7D', 1316,
+    '\u2F7E', 1317,
+    '\u2F7F', 1318,
+    '\u2F80', 1319,
+    '\u2F81', 1320,
+    '\u2F82', 1321,
+    '\u2F83', 1322,
+    '\u2F84', 1323,
+    '\u2F85', 1324,
+    '\u2F86', 1325,
+    '\u2F87', 1326,
+    '\u2F88', 1327,
+    '\u2F89', 1328,
+    '\u2F8A', 1329,
+    '\u2F8B', 1330,
+    '\u2F8C', 1331,
+    '\u2F8D', 1332,
+    '\u2F8E', 1333,
+    '\u2F8F', 1334,
+    '\u2F90', 1335,
+    '\u2F91', 1336,
+    '\u2F92', 1337,
+    '\u2F93', 1338,
+    '\u2F94', 1339,
+    '\u2F95', 1340,
+    '\u2F96', 1341,
+    '\u2F97', 1342,
+    '\u2F98', 1343,
+    '\u2F99', 1344,
+    '\u2F9A', 1345,
+    '\u2F9B', 1346,
+    '\u2F9C', 1347,
+    '\u2F9D', 1348,
+    '\u2F9E', 1349,
+    '\u2F9F', 1350,
+    '\u2FA0', 1351,
+    '\u2FA1', 1352,
+    '\u2FA2', 1353,
+    '\u2FA3', 1354,
+    '\u2FA4', 1355,
+    '\u2FA5', 1356,
+    '\u2FA6', 1357,
+    '\u2FA7', 1358,
+    '\u2FA8', 1359,
+    '\u2FA9', 1360,
+    '\u2FAA', 1361,
+    '\u2FAB', 1362,
+    '\u2FAC', 1363,
+    '\u2FAD', 1364,
+    '\u2FAE', 1365,
+    '\u2FAF', 1366,
+    '\u2FB0', 1367,
+    '\u2FB1', 1368,
+    '\u2FB2', 1369,
+    '\u2FB3', 1370,
+    '\u2FB4', 1371,
+    '\u2FB5', 1372,
+    '\u2FB6', 1373,
+    '\u2FB7', 1374,
+    '\u2FB8', 1375,
+    '\u2FB9', 1376,
+    '\u2FBA', 1377,
+    '\u2FBB', 1378,
+    '\u2FBC', 1379,
+    '\u2FBD', 1380,
+    '\u2FBE', 1381,
+    '\u2FBF', 1382,
+    '\u2FC0', 1383,
+    '\u2FC1', 1384,
+    '\u2FC2', 1385,
+    '\u2FC3', 1386,
+    '\u2FC4', 1387,
+    '\u2FC5', 1388,
+    '\u2FC6', 1389,
+    '\u2FC7', 1390,
+    '\u2FC8', 1391,
+    '\u2FC9', 1392,
+    '\u2FCA', 1393,
+    '\u2FCB', 1394,
+    '\u2FCC', 1395,
+    '\u2FCD', 1396,
+    '\u2FCE', 1397,
+    '\u2FCF', 1398,
+    '\u2FD0', 1399,
+    '\u2FD1', 1400,
+    '\u2FD2', 1401,
+    '\u2FD3', 1402,
+    '\u2FD4', 1403,
+    '\u2FD5', 1404,
+    '\u3000', 0,
+    '\u3036', 1405,
+    '\u3038', 1214,
+    '\u3039', 1406,
+    '\u303A', 1407,
+    '\u304C', 1408,
+    '\u304E', 1409,
+    '\u3050', 1410,
+    '\u3052', 1411,
+    '\u3054', 1412,
+    '\u3056', 1413,
+    '\u3058', 1414,
+    '\u305A', 1415,
+    '\u305C', 1416,
+    '\u305E', 1417,
+    '\u3060', 1418,
+    '\u3062', 1419,
+    '\u3065', 1420,
+    '\u3067', 1421,
+    '\u3069', 1422,
+    '\u3070', 1423,
+    '\u3071', 1424,
+    '\u3073', 1425,
+    '\u3074', 1426,
+    '\u3076', 1427,
+    '\u3077', 1428,
+    '\u3079', 1429,
+    '\u307A', 1430,
+    '\u307C', 1431,
+    '\u307D', 1432,
+    '\u3094', 1433,
+    '\u309B', 1434,
+    '\u309C', 1435,
+    '\u309E', 1436,
+    '\u309F', 1437,
+    '\u30AC', 1438,
+    '\u30AE', 1439,
+    '\u30B0', 1440,
+    '\u30B2', 1441,
+    '\u30B4', 1442,
+    '\u30B6', 1443,
+    '\u30B8', 1444,
+    '\u30BA', 1445,
+    '\u30BC', 1446,
+    '\u30BE', 1447,
+    '\u30C0', 1448,
+    '\u30C2', 1449,
+    '\u30C5', 1450,
+    '\u30C7', 1451,
+    '\u30C9', 1452,
+    '\u30D0', 1453,
+    '\u30D1', 1454,
+    '\u30D3', 1455,
+    '\u30D4', 1456,
+    '\u30D6', 1457,
+    '\u30D7', 1458,
+    '\u30D9', 1459,
+    '\u30DA', 1460,
+    '\u30DC', 1461,
+    '\u30DD', 1462,
+    '\u30F4', 1463,
+    '\u30F7', 1464,
+    '\u30F8', 1465,
+    '\u30F9', 1466,
+    '\u30FA', 1467,
+    '\u30FE', 1468,
+    '\u30FF', 1469,
+    '\u3131', 1470,
+    '\u3132', 1471,
+    '\u3133', 1472,
+    '\u3134', 1473,
+    '\u3135', 1474,
+    '\u3136', 1475,
+    '\u3137', 1476,
+    '\u3138', 1477,
+    '\u3139', 1478,
+    '\u313A', 1479,
+    '\u313B', 1480,
+    '\u313C', 1481,
+    '\u313D', 1482,
+    '\u313E', 1483,
+    '\u313F', 1484,
+    '\u3140', 1485,
+    '\u3141', 1486,
+    '\u3142', 1487,
+    '\u3143', 1488,
+    '\u3144', 1489,
+    '\u3145', 1490,
+    '\u3146', 1491,
+    '\u3147', 1492,
+    '\u3148', 1493,
+    '\u3149', 1494,
+    '\u314A', 1495,
+    '\u314B', 1496,
+    '\u314C', 1497,
+    '\u314D', 1498,
+    '\u314E', 1499,
+    '\u314F', 1500,
+    '\u3150', 1501,
+    '\u3151', 1502,
+    '\u3152', 1503,
+    '\u3153', 1504,
+    '\u3154', 1505,
+    '\u3155', 1506,
+    '\u3156', 1507,
+    '\u3157', 1508,
+    '\u3158', 1509,
+    '\u3159', 1510,
+    '\u315A', 1511,
+    '\u315B', 1512,
+    '\u315C', 1513,
+    '\u315D', 1514,
+    '\u315E', 1515,
+    '\u315F', 1516,
+    '\u3160', 1517,
+    '\u3161', 1518,
+    '\u3162', 1519,
+    '\u3163', 1520,
+    '\u3164', 1521,
+    '\u3165', 1522,
+    '\u3166', 1523,
+    '\u3167', 1524,
+    '\u3168', 1525,
+    '\u3169', 1526,
+    '\u316A', 1527,
+    '\u316B', 1528,
+    '\u316C', 1529,
+    '\u316D', 1530,
+    '\u316E', 1531,
+    '\u316F', 1532,
+    '\u3170', 1533,
+    '\u3171', 1534,
+    '\u3172', 1535,
+    '\u3173', 1536,
+    '\u3174', 1537,
+    '\u3175', 1538,
+    '\u3176', 1539,
+    '\u3177', 1540,
+    '\u3178', 1541,
+    '\u3179', 1542,
+    '\u317A', 1543,
+    '\u317B', 1544,
+    '\u317C', 1545,
+    '\u317D', 1546,
+    '\u317E', 1547,
+    '\u317F', 1548,
+    '\u3180', 1549,
+    '\u3181', 1550,
+    '\u3182', 1551,
+    '\u3183', 1552,
+    '\u3184', 1553,
+    '\u3185', 1554,
+    '\u3186', 1555,
+    '\u3187', 1556,
+    '\u3188', 1557,
+    '\u3189', 1558,
+    '\u318A', 1559,
+    '\u318B', 1560,
+    '\u318C', 1561,
+    '\u318D', 1562,
+    '\u318E', 1563,
+    '\u3192', 1191,
+    '\u3193', 1197,
+    '\u3194', 1564,
+    '\u3195', 1565,
+    '\u3196', 1566,
+    '\u3197', 1567,
+    '\u3198', 1568,
+    '\u3199', 1569,
+    '\u319A', 1195,
+    '\u319B', 1570,
+    '\u319C', 1571,
+    '\u319D', 1572,
+    '\u319E', 1573,
+    '\u319F', 1199,
+    '\u3200', 1574,
+    '\u3201', 1575,
+    '\u3202', 1576,
+    '\u3203', 1577,
+    '\u3204', 1578,
+    '\u3205', 1579,
+    '\u3206', 1580,
+    '\u3207', 1581,
+    '\u3208', 1582,
+    '\u3209', 1583,
+    '\u320A', 1584,
+    '\u320B', 1585,
+    '\u320C', 1586,
+    '\u320D', 1587,
+    '\u320E', 1588,
+    '\u320F', 1589,
+    '\u3210', 1590,
+    '\u3211', 1591,
+    '\u3212', 1592,
+    '\u3213', 1593,
+    '\u3214', 1594,
+    '\u3215', 1595,
+    '\u3216', 1596,
+    '\u3217', 1597,
+    '\u3218', 1598,
+    '\u3219', 1599,
+    '\u321A', 1600,
+    '\u321B', 1601,
+    '\u321C', 1602,
+    '\u3220', 1603,
+    '\u3221', 1604,
+    '\u3222', 1605,
+    '\u3223', 1606,
+    '\u3224', 1607,
+    '\u3225', 1608,
+    '\u3226', 1609,
+    '\u3227', 1610,
+    '\u3228', 1611,
+    '\u3229', 1612,
+    '\u322A', 1613,
+    '\u322B', 1614,
+    '\u322C', 1615,
+    '\u322D', 1616,
+    '\u322E', 1617,
+    '\u322F', 1618,
+    '\u3230', 1619,
+    '\u3231', 1620,
+    '\u3232', 1621,
+    '\u3233', 1622,
+    '\u3234', 1623,
+    '\u3235', 1624,
+    '\u3236', 1625,
+    '\u3237', 1626,
+    '\u3238', 1627,
+    '\u3239', 1628,
+    '\u323A', 1629,
+    '\u323B', 1630,
+    '\u323C', 1631,
+    '\u323D', 1632,
+    '\u323E', 1633,
+    '\u323F', 1634,
+    '\u3240', 1635,
+    '\u3241', 1636,
+    '\u3242', 1637,
+    '\u3243', 1638,
+    '\u3251', 1639,
+    '\u3252', 1640,
+    '\u3253', 1641,
+    '\u3254', 1642,
+    '\u3255', 1643,
+    '\u3256', 1644,
+    '\u3257', 1645,
+    '\u3258', 1646,
+    '\u3259', 1647,
+    '\u325A', 1648,
+    '\u325B', 1649,
+    '\u325C', 1650,
+    '\u325D', 1651,
+    '\u325E', 1652,
+    '\u325F', 1653,
+    '\u3260', 1470,
+    '\u3261', 1473,
+    '\u3262', 1476,
+    '\u3263', 1478,
+    '\u3264', 1486,
+    '\u3265', 1487,
+    '\u3266', 1490,
+    '\u3267', 1492,
+    '\u3268', 1493,
+    '\u3269', 1495,
+    '\u326A', 1496,
+    '\u326B', 1497,
+    '\u326C', 1498,
+    '\u326D', 1499,
+    '\u326E', 1654,
+    '\u326F', 1655,
+    '\u3270', 1656,
+    '\u3271', 1657,
+    '\u3272', 1658,
+    '\u3273', 1659,
+    '\u3274', 1660,
+    '\u3275', 1661,
+    '\u3276', 1662,
+    '\u3277', 1663,
+    '\u3278', 1664,
+    '\u3279', 1665,
+    '\u327A', 1666,
+    '\u327B', 1667,
+    '\u3280', 1191,
+    '\u3281', 1197,
+    '\u3282', 1564,
+    '\u3283', 1565,
+    '\u3284', 1668,
+    '\u3285', 1669,
+    '\u3286', 1670,
+    '\u3287', 1202,
+    '\u3288', 1671,
+    '\u3289', 1214,
+    '\u328A', 1264,
+    '\u328B', 1276,
+    '\u328C', 1275,
+    '\u328D', 1265,
+    '\u328E', 1357,
+    '\u328F', 1222,
+    '\u3290', 1262,
+    '\u3291', 1672,
+    '\u3292', 1673,
+    '\u3293', 1674,
+    '\u3294', 1675,
+    '\u3295', 1676,
+    '\u3296', 1677,
+    '\u3297', 1678,
+    '\u3298', 1679,
+    '\u3299', 1680,
+    '\u329A', 1681,
+    '\u329B', 1228,
+    '\u329C', 1682,
+    '\u329D', 1683,
+    '\u329E', 1684,
+    '\u329F', 1685,
+    '\u32A0', 1686,
+    '\u32A1', 1687,
+    '\u32A2', 1688,
+    '\u32A3', 1689,
+    '\u32A4', 1566,
+    '\u32A5', 1567,
+    '\u32A6', 1568,
+    '\u32A7', 1690,
+    '\u32A8', 1691,
+    '\u32A9', 1692,
+    '\u32AA', 1693,
+    '\u32AB', 1694,
+    '\u32AC', 1695,
+    '\u32AD', 1696,
+    '\u32AE', 1697,
+    '\u32AF', 1698,
+    '\u32B0', 1699,
+    '\u32B1', 1700,
+    '\u32B2', 1701,
+    '\u32B3', 1702,
+    '\u32B4', 1703,
+    '\u32B5', 1704,
+    '\u32B6', 1705,
+    '\u32B7', 1706,
+    '\u32B8', 1707,
+    '\u32B9', 1708,
+    '\u32BA', 1709,
+    '\u32BB', 1710,
+    '\u32BC', 1711,
+    '\u32BD', 1712,
+    '\u32BE', 1713,
+    '\u32BF', 1714,
+    '\u32C0', 1715,
+    '\u32C1', 1716,
+    '\u32C2', 1717,
+    '\u32C3', 1718,
+    '\u32C4', 1719,
+    '\u32C5', 1720,
+    '\u32C6', 1721,
+    '\u32C7', 1722,
+    '\u32C8', 1723,
+    '\u32C9', 1724,
+    '\u32CA', 1725,
+    '\u32CB', 1726,
+    '\u32D0', 1727,
+    '\u32D1', 1728,
+    '\u32D2', 1729,
+    '\u32D3', 1730,
+    '\u32D4', 1731,
+    '\u32D5', 1732,
+    '\u32D6', 1733,
+    '\u32D7', 1734,
+    '\u32D8', 1735,
+    '\u32D9', 1736,
+    '\u32DA', 1737,
+    '\u32DB', 1738,
+    '\u32DC', 1739,
+    '\u32DD', 1740,
+    '\u32DE', 1741,
+    '\u32DF', 1742,
+    '\u32E0', 1743,
+    '\u32E1', 1744,
+    '\u32E2', 1745,
+    '\u32E3', 1746,
+    '\u32E4', 1747,
+    '\u32E5', 1748,
+    '\u32E6', 1749,
+    '\u32E7', 1750,
+    '\u32E8', 1751,
+    '\u32E9', 1752,
+    '\u32EA', 1753,
+    '\u32EB', 1754,
+    '\u32EC', 1755,
+    '\u32ED', 1756,
+    '\u32EE', 1757,
+    '\u32EF', 1758,
+    '\u32F0', 1759,
+    '\u32F1', 1760,
+    '\u32F2', 1761,
+    '\u32F3', 1762,
+    '\u32F4', 1763,
+    '\u32F5', 1764,
+    '\u32F6', 1765,
+    '\u32F7', 1766,
+    '\u32F8', 1767,
+    '\u32F9', 1768,
+    '\u32FA', 1769,
+    '\u32FB', 1770,
+    '\u32FC', 1771,
+    '\u32FD', 1772,
+    '\u32FE', 1773,
+    '\u3300', 1774,
+    '\u3301', 1775,
+    '\u3302', 1776,
+    '\u3303', 1777,
+    '\u3304', 1778,
+    '\u3305', 1779,
+    '\u3306', 1780,
+    '\u3307', 1781,
+    '\u3308', 1782,
+    '\u3309', 1783,
+    '\u330A', 1784,
+    '\u330B', 1785,
+    '\u330C', 1786,
+    '\u330D', 1787,
+    '\u330E', 1788,
+    '\u330F', 1789,
+    '\u3310', 1790,
+    '\u3311', 1791,
+    '\u3312', 1792,
+    '\u3313', 1793,
+    '\u3314', 1794,
+    '\u3315', 1795,
+    '\u3316', 1796,
+    '\u3317', 1797,
+    '\u3318', 1798,
+    '\u3319', 1799,
+    '\u331A', 1800,
+    '\u331B', 1801,
+    '\u331C', 1802,
+    '\u331D', 1803,
+    '\u331E', 1804,
+    '\u331F', 1805,
+    '\u3320', 1806,
+    '\u3321', 1807,
+    '\u3322', 1808,
+    '\u3323', 1809,
+    '\u3324', 1810,
+    '\u3325', 1811,
+    '\u3326', 1812,
+    '\u3327', 1813,
+    '\u3328', 1814,
+    '\u3329', 1815,
+    '\u332A', 1816,
+    '\u332B', 1817,
+    '\u332C', 1818,
+    '\u332D', 1819,
+    '\u332E', 1820,
+    '\u332F', 1821,
+    '\u3330', 1822,
+    '\u3331', 1823,
+    '\u3332', 1824,
+    '\u3333', 1825,
+    '\u3334', 1826,
+    '\u3335', 1827,
+    '\u3336', 1828,
+    '\u3337', 1829,
+    '\u3338', 1830,
+    '\u3339', 1831,
+    '\u333A', 1832,
+    '\u333B', 1833,
+    '\u333C', 1834,
+    '\u333D', 1835,
+    '\u333E', 1836,
+    '\u333F', 1837,
+    '\u3340', 1838,
+    '\u3341', 1839,
+    '\u3342', 1840,
+    '\u3343', 1841,
+    '\u3344', 1842,
+    '\u3345', 1843,
+    '\u3346', 1844,
+    '\u3347', 1845,
+    '\u3348', 1846,
+    '\u3349', 1847,
+    '\u334A', 1848,
+    '\u334B', 1849,
+    '\u334C', 1850,
+    '\u334D', 1851,
+    '\u334E', 1852,
+    '\u334F', 1853,
+    '\u3350', 1854,
+    '\u3351', 1855,
+    '\u3352', 1856,
+    '\u3353', 1857,
+    '\u3354', 1858,
+    '\u3355', 1859,
+    '\u3356', 1860,
+    '\u3357', 1861,
+    '\u3358', 1862,
+    '\u3359', 1863,
+    '\u335A', 1864,
+    '\u335B', 1865,
+    '\u335C', 1866,
+    '\u335D', 1867,
+    '\u335E', 1868,
+    '\u335F', 1869,
+    '\u3360', 1870,
+    '\u3361', 1871,
+    '\u3362', 1872,
+    '\u3363', 1873,
+    '\u3364', 1874,
+    '\u3365', 1875,
+    '\u3366', 1876,
+    '\u3367', 1877,
+    '\u3368', 1878,
+    '\u3369', 1879,
+    '\u336A', 1880,
+    '\u336B', 1881,
+    '\u336C', 1882,
+    '\u336D', 1883,
+    '\u336E', 1884,
+    '\u336F', 1885,
+    '\u3370', 1886,
+    '\u3371', 1887,
+    '\u3372', 1888,
+    '\u3373', 1889,
+    '\u3374', 1890,
+    '\u3375', 1891,
+    '\u3376', 1892,
+    '\u337B', 1893,
+    '\u337C', 1894,
+    '\u337D', 1895,
+    '\u337E', 1896,
+    '\u337F', 1897,
+    '\u3380', 1898,
+    '\u3381', 1899,
+    '\u3382', 1900,
+    '\u3383', 1901,
+    '\u3384', 1902,
+    '\u3385', 1903,
+    '\u3386', 1904,
+    '\u3387', 1905,
+    '\u3388', 1906,
+    '\u3389', 1907,
+    '\u338A', 1908,
+    '\u338B', 1909,
+    '\u338C', 1910,
+    '\u338D', 1911,
+    '\u338E', 1912,
+    '\u338F', 1913,
+    '\u3390', 1914,
+    '\u3391', 1915,
+    '\u3392', 1916,
+    '\u3393', 1917,
+    '\u3394', 1918,
+    '\u3395', 1919,
+    '\u3396', 1920,
+    '\u3397', 1921,
+    '\u3398', 1922,
+    '\u3399', 1923,
+    '\u339A', 1924,
+    '\u339B', 1925,
+    '\u339C', 1926,
+    '\u339D', 1927,
+    '\u339E', 1928,
+    '\u339F', 1929,
+    '\u33A0', 1930,
+    '\u33A1', 1931,
+    '\u33A2', 1932,
+    '\u33A3', 1933,
+    '\u33A4', 1934,
+    '\u33A5', 1935,
+    '\u33A6', 1936,
+    '\u33A7', 1937,
+    '\u33A8', 1938,
+    '\u33A9', 1939,
+    '\u33AA', 1940,
+    '\u33AB', 1941,
+    '\u33AC', 1942,
+    '\u33AD', 1943,
+    '\u33AE', 1944,
+    '\u33AF', 1945,
+    '\u33B0', 1946,
+    '\u33B1', 1947,
+    '\u33B2', 1948,
+    '\u33B3', 1949,
+    '\u33B4', 1950,
+    '\u33B5', 1951,
+    '\u33B6', 1952,
+    '\u33B7', 1953,
+    '\u33B8', 1954,
+    '\u33B9', 1955,
+    '\u33BA', 1956,
+    '\u33BB', 1957,
+    '\u33BC', 1958,
+    '\u33BD', 1959,
+    '\u33BE', 1960,
+    '\u33BF', 1961,
+    '\u33C0', 1962,
+    '\u33C1', 1963,
+    '\u33C2', 1964,
+    '\u33C3', 1965,
+    '\u33C4', 1966,
+    '\u33C5', 1967,
+    '\u33C6', 1968,
+    '\u33C7', 1969,
+    '\u33C8', 1970,
+    '\u33C9', 1971,
+    '\u33CA', 1972,
+    '\u33CB', 1973,
+    '\u33CC', 1974,
+    '\u33CD', 1975,
+    '\u33CE', 1976,
+    '\u33CF', 1977,
+    '\u33D0', 1978,
+    '\u33D1', 1979,
+    '\u33D2', 1980,
+    '\u33D3', 1981,
+    '\u33D4', 1982,
+    '\u33D5', 1983,
+    '\u33D6', 1984,
+    '\u33D7', 1985,
+    '\u33D8', 1986,
+    '\u33D9', 1987,
+    '\u33DA', 1988,
+    '\u33DB', 1989,
+    '\u33DC', 1990,
+    '\u33DD', 1991,
+    '\u33E0', 1992,
+    '\u33E1', 1993,
+    '\u33E2', 1994,
+    '\u33E3', 1995,
+    '\u33E4', 1996,
+    '\u33E5', 1997,
+    '\u33E6', 1998,
+    '\u33E7', 1999,
+    '\u33E8', 2000,
+    '\u33E9', 2001,
+    '\u33EA', 2002,
+    '\u33EB', 2003,
+    '\u33EC', 2004,
+    '\u33ED', 2005,
+    '\u33EE', 2006,
+    '\u33EF', 2007,
+    '\u33F0', 2008,
+    '\u33F1', 2009,
+    '\u33F2', 2010,
+    '\u33F3', 2011,
+    '\u33F4', 2012,
+    '\u33F5', 2013,
+    '\u33F6', 2014,
+    '\u33F7', 2015,
+    '\u33F8', 2016,
+    '\u33F9', 2017,
+    '\u33FA', 2018,
+    '\u33FB', 2019,
+    '\u33FC', 2020,
+    '\u33FD', 2021,
+    '\u33FE', 2022,
+    '\uF900', 2023,
+    '\uF901', 2024,
+    '\uF902', 1349,
+    '\uF903', 2025,
+    '\uF904', 2026,
+    '\uF905', 2027,
+    '\uF906', 2028,
+    '\uF907', 1403,
+    '\uF908', 1403,
+    '\uF909', 2029,
+    '\uF90A', 1357,
+    '\uF90B', 2030,
+    '\uF90C', 2031,
+    '\uF90D', 2032,
+    '\uF90E', 2033,
+    '\uF90F', 2034,
+    '\uF910', 2035,
+    '\uF911', 2036,
+    '\uF912', 2037,
+    '\uF913', 2038,
+    '\uF914', 2039,
+    '\uF915', 2040,
+    '\uF916', 2041,
+    '\uF917', 2042,
+    '\uF918', 2043,
+    '\uF919', 2044,
+    '\uF91A', 2045,
+    '\uF91B', 2046,
+    '\uF91C', 2047,
+    '\uF91D', 2048,
+    '\uF91E', 2049,
+    '\uF91F', 2050,
+    '\uF920', 2051,
+    '\uF921', 2052,
+    '\uF922', 2053,
+    '\uF923', 2054,
+    '\uF924', 2055,
+    '\uF925', 2056,
+    '\uF926', 2057,
+    '\uF927', 2058,
+    '\uF928', 2059,
+    '\uF929', 2060,
+    '\uF92A', 2061,
+    '\uF92B', 2062,
+    '\uF92C', 2063,
+    '\uF92D', 2064,
+    '\uF92E', 2065,
+    '\uF92F', 2066,
+    '\uF930', 2067,
+    '\uF931', 2068,
+    '\uF932', 2069,
+    '\uF933', 2070,
+    '\uF934', 1315,
+    '\uF935', 2071,
+    '\uF936', 2072,
+    '\uF937', 2073,
+    '\uF938', 2074,
+    '\uF939', 2075,
+    '\uF93A', 2076,
+    '\uF93B', 2077,
+    '\uF93C', 2078,
+    '\uF93D', 2079,
+    '\uF93E', 2080,
+    '\uF93F', 2081,
+    '\uF940', 1388,
+    '\uF941', 2082,
+    '\uF942', 2083,
+    '\uF943', 2084,
+    '\uF944', 2085,
+    '\uF945', 2086,
+    '\uF946', 2087,
+    '\uF947', 2088,
+    '\uF948', 2089,
+    '\uF949', 2090,
+    '\uF94A', 2091,
+    '\uF94B', 2092,
+    '\uF94C', 2093,
+    '\uF94D', 2094,
+    '\uF94E', 2095,
+    '\uF94F', 2096,
+    '\uF950', 2097,
+    '\uF951', 2098,
+    '\uF952', 2099,
+    '\uF953', 2100,
+    '\uF954', 2101,
+    '\uF955', 2102,
+    '\uF956', 2103,
+    '\uF957', 2104,
+    '\uF958', 2105,
+    '\uF959', 2106,
+    '\uF95A', 2107,
+    '\uF95B', 2108,
+    '\uF95C', 2039,
+    '\uF95D', 2109,
+    '\uF95E', 2110,
+    '\uF95F', 2111,
+    '\uF960', 2112,
+    '\uF961', 2113,
+    '\uF962', 2114,
+    '\uF963', 2115,
+    '\uF964', 2116,
+    '\uF965', 2117,
+    '\uF966', 2118,
+    '\uF967', 2119,
+    '\uF968', 2120,
+    '\uF969', 2121,
+    '\uF96A', 2122,
+    '\uF96B', 2123,
+    '\uF96C', 2124,
+    '\uF96D', 2125,
+    '\uF96E', 2126,
+    '\uF96F', 2127,
+    '\uF970', 2128,
+    '\uF971', 1351,
+    '\uF972', 2129,
+    '\uF973', 2130,
+    '\uF974', 2131,
+    '\uF975', 2132,
+    '\uF976', 2133,
+    '\uF977', 2134,
+    '\uF978', 2135,
+    '\uF979', 2136,
+    '\uF97A', 2137,
+    '\uF97B', 2138,
+    '\uF97C', 2139,
+    '\uF97D', 2140,
+    '\uF97E', 2141,
+    '\uF97F', 2142,
+    '\uF980', 2143,
+    '\uF981', 1228,
+    '\uF982', 2144,
+    '\uF983', 2145,
+    '\uF984', 2146,
+    '\uF985', 2147,
+    '\uF986', 2148,
+    '\uF987', 2149,
+    '\uF988', 2150,
+    '\uF989', 2151,
+    '\uF98A', 1209,
+    '\uF98B', 2152,
+    '\uF98C', 2153,
+    '\uF98D', 2154,
+    '\uF98E', 2155,
+    '\uF98F', 2156,
+    '\uF990', 2157,
+    '\uF991', 2158,
+    '\uF992', 2159,
+    '\uF993', 2160,
+    '\uF994', 2161,
+    '\uF995', 2162,
+    '\uF996', 2163,
+    '\uF997', 2164,
+    '\uF998', 2165,
+    '\uF999', 2166,
+    '\uF99A', 2167,
+    '\uF99B', 2168,
+    '\uF99C', 2169,
+    '\uF99D', 2170,
+    '\uF99E', 2171,
+    '\uF99F', 2172,
+    '\uF9A0', 2173,
+    '\uF9A1', 2127,
+    '\uF9A2', 2174,
+    '\uF9A3', 2175,
+    '\uF9A4', 2176,
+    '\uF9A5', 2177,
+    '\uF9A6', 2178,
+    '\uF9A7', 2179,
+    '\uF9A8', 2180,
+    '\uF9A9', 2181,
+    '\uF9AA', 2111,
+    '\uF9AB', 2182,
+    '\uF9AC', 2183,
+    '\uF9AD', 2184,
+    '\uF9AE', 2185,
+    '\uF9AF', 2186,
+    '\uF9B0', 2187,
+    '\uF9B1', 2188,
+    '\uF9B2', 2189,
+    '\uF9B3', 2190,
+    '\uF9B4', 2191,
+    '\uF9B5', 2192,
+    '\uF9B6', 2193,
+    '\uF9B7', 2194,
+    '\uF9B8', 2195,
+    '\uF9B9', 2196,
+    '\uF9BA', 2197,
+    '\uF9BB', 2198,
+    '\uF9BC', 2199,
+    '\uF9BD', 2200,
+    '\uF9BE', 2201,
+    '\uF9BF', 2039,
+    '\uF9C0', 2202,
+    '\uF9C1', 2203,
+    '\uF9C2', 2204,
+    '\uF9C3', 2205,
+    '\uF9C4', 1402,
+    '\uF9C5', 2206,
+    '\uF9C6', 2207,
+    '\uF9C7', 2208,
+    '\uF9C8', 2209,
+    '\uF9C9', 2210,
+    '\uF9CA', 2211,
+    '\uF9CB', 2212,
+    '\uF9CC', 2213,
+    '\uF9CD', 2214,
+    '\uF9CE', 2215,
+    '\uF9CF', 2216,
+    '\uF9D0', 2217,
+    '\uF9D1', 1669,
+    '\uF9D2', 2218,
+    '\uF9D3', 2219,
+    '\uF9D4', 2220,
+    '\uF9D5', 2221,
+    '\uF9D6', 2222,
+    '\uF9D7', 2223,
+    '\uF9D8', 2224,
+    '\uF9D9', 2225,
+    '\uF9DA', 2226,
+    '\uF9DB', 2113,
+    '\uF9DC', 2227,
+    '\uF9DD', 2228,
+    '\uF9DE', 2229,
+    '\uF9DF', 2230,
+    '\uF9E0', 2231,
+    '\uF9E1', 2232,
+    '\uF9E2', 2233,
+    '\uF9E3', 2234,
+    '\uF9E4', 2235,
+    '\uF9E5', 2236,
+    '\uF9E6', 2237,
+    '\uF9E7', 2238,
+    '\uF9E8', 2239,
+    '\uF9E9', 1356,
+    '\uF9EA', 2240,
+    '\uF9EB', 2241,
+    '\uF9EC', 2242,
+    '\uF9ED', 2243,
+    '\uF9EE', 2244,
+    '\uF9EF', 2245,
+    '\uF9F0', 2246,
+    '\uF9F1', 2247,
+    '\uF9F2', 2248,
+    '\uF9F3', 2249,
+    '\uF9F4', 2250,
+    '\uF9F5', 2251,
+    '\uF9F6', 2252,
+    '\uF9F7', 1307,
+    '\uF9F8', 2253,
+    '\uF9F9', 2254,
+    '\uF9FA', 2255,
+    '\uF9FB', 2256,
+    '\uF9FC', 2257,
+    '\uF9FD', 2258,
+    '\uF9FE', 2259,
+    '\uF9FF', 2260,
+    '\uFA00', 2261,
+    '\uFA01', 2262,
+    '\uFA02', 2263,
+    '\uFA03', 2264,
+    '\uFA04', 2265,
+    '\uFA05', 2266,
+    '\uFA06', 2267,
+    '\uFA07', 2268,
+    '\uFA08', 1334,
+    '\uFA09', 2269,
+    '\uFA0A', 1337,
+    '\uFA0B', 2270,
+    '\uFA0C', 2271,
+    '\uFA0D', 2272,
+    '\uFA10', 2273,
+    '\uFA12', 2274,
+    '\uFA15', 2275,
+    '\uFA16', 2276,
+    '\uFA17', 2277,
+    '\uFA18', 2278,
+    '\uFA19', 2279,
+    '\uFA1A', 2280,
+    '\uFA1B', 2281,
+    '\uFA1C', 2282,
+    '\uFA1D', 2283,
+    '\uFA1E', 1314,
+    '\uFA20', 2284,
+    '\uFA22', 2285,
+    '\uFA25', 2286,
+    '\uFA26', 2287,
+    '\uFA2A', 2288,
+    '\uFA2B', 2289,
+    '\uFA2C', 2290,
+    '\uFA2D', 2291,
+    '\uFA30', 2292,
+    '\uFA31', 2293,
+    '\uFA32', 2294,
+    '\uFA33', 2295,
+    '\uFA34', 2296,
+    '\uFA35', 2297,
+    '\uFA36', 2298,
+    '\uFA37', 2299,
+    '\uFA38', 2300,
+    '\uFA39', 2301,
+    '\uFA3A', 2302,
+    '\uFA3B', 2303,
+    '\uFA3C', 1235,
+    '\uFA3D', 2304,
+    '\uFA3E', 2305,
+    '\uFA3F', 2306,
+    '\uFA40', 2307,
+    '\uFA41', 2308,
+    '\uFA42', 2309,
+    '\uFA43', 2310,
+    '\uFA44', 2311,
+    '\uFA45', 2312,
+    '\uFA46', 2313,
+    '\uFA47', 2314,
+    '\uFA48', 2315,
+    '\uFA49', 2316,
+    '\uFA4A', 2317,
+    '\uFA4B', 2318,
+    '\uFA4C', 1674,
+    '\uFA4D', 2319,
+    '\uFA4E', 2320,
+    '\uFA4F', 2321,
+    '\uFA50', 2322,
+    '\uFA51', 1678,
+    '\uFA52', 2323,
+    '\uFA53', 2324,
+    '\uFA54', 2325,
+    '\uFA55', 2326,
+    '\uFA56', 2327,
+    '\uFA57', 2163,
+    '\uFA58', 2328,
+    '\uFA59', 2329,
+    '\uFA5A', 2330,
+    '\uFA5B', 2331,
+    '\uFA5C', 2332,
+    '\uFA5D', 2333,
+    '\uFA5E', 2333,
+    '\uFA5F', 2334,
+    '\uFA60', 2335,
+    '\uFA61', 2336,
+    '\uFA62', 2337,
+    '\uFA63', 2338,
+    '\uFA64', 2339,
+    '\uFA65', 2340,
+    '\uFA66', 2341,
+    '\uFA67', 2286,
+    '\uFA68', 2342,
+    '\uFA69', 2343,
+    '\uFA6A', 2344,
+    '\uFB00', 2345,
+    '\uFB01', 2346,
+    '\uFB02', 2347,
+    '\uFB03', 2348,
+    '\uFB04', 2349,
+    '\uFB05', 2350,
+    '\uFB06', 2350,
+    '\uFB13', 2351,
+    '\uFB14', 2352,
+    '\uFB15', 2353,
+    '\uFB16', 2354,
+    '\uFB17', 2355,
+    '\uFB1D', 2356,
+    '\uFB1F', 2357,
+    '\uFB20', 2358,
+    '\uFB21', 994,
+    '\uFB22', 997,
+    '\uFB23', 2359,
+    '\uFB24', 2360,
+    '\uFB25', 2361,
+    '\uFB26', 2362,
+    '\uFB27', 2363,
+    '\uFB28', 2364,
+    '\uFB29', 958,
+    '\uFB2A', 2365,
+    '\uFB2B', 2366,
+    '\uFB2C', 2367,
+    '\uFB2D', 2368,
+    '\uFB2E', 2369,
+    '\uFB2F', 2370,
+    '\uFB30', 2371,
+    '\uFB31', 2372,
+    '\uFB32', 2373,
+    '\uFB33', 2374,
+    '\uFB34', 2375,
+    '\uFB35', 2376,
+    '\uFB36', 2377,
+    '\uFB38', 2378,
+    '\uFB39', 2379,
+    '\uFB3A', 2380,
+    '\uFB3B', 2381,
+    '\uFB3C', 2382,
+    '\uFB3E', 2383,
+    '\uFB40', 2384,
+    '\uFB41', 2385,
+    '\uFB43', 2386,
+    '\uFB44', 2387,
+    '\uFB46', 2388,
+    '\uFB47', 2389,
+    '\uFB48', 2390,
+    '\uFB49', 2391,
+    '\uFB4A', 2392,
+    '\uFB4B', 2393,
+    '\uFB4C', 2394,
+    '\uFB4D', 2395,
+    '\uFB4E', 2396,
+    '\uFB4F', 2397,
+    '\uFB50', 2398,
+    '\uFB51', 2398,
+    '\uFB52', 2399,
+    '\uFB53', 2399,
+    '\uFB54', 2399,
+    '\uFB55', 2399,
+    '\uFB56', 2400,
+    '\uFB57', 2400,
+    '\uFB58', 2400,
+    '\uFB59', 2400,
+    '\uFB5A', 2401,
+    '\uFB5B', 2401,
+    '\uFB5C', 2401,
+    '\uFB5D', 2401,
+    '\uFB5E', 2402,
+    '\uFB5F', 2402,
+    '\uFB60', 2402,
+    '\uFB61', 2402,
+    '\uFB62', 2403,
+    '\uFB63', 2403,
+    '\uFB64', 2403,
+    '\uFB65', 2403,
+    '\uFB66', 2404,
+    '\uFB67', 2404,
+    '\uFB68', 2404,
+    '\uFB69', 2404,
+    '\uFB6A', 2405,
+    '\uFB6B', 2405,
+    '\uFB6C', 2405,
+    '\uFB6D', 2405,
+    '\uFB6E', 2406,
+    '\uFB6F', 2406,
+    '\uFB70', 2406,
+    '\uFB71', 2406,
+    '\uFB72', 2407,
+    '\uFB73', 2407,
+    '\uFB74', 2407,
+    '\uFB75', 2407,
+    '\uFB76', 2408,
+    '\uFB77', 2408,
+    '\uFB78', 2408,
+    '\uFB79', 2408,
+    '\uFB7A', 2409,
+    '\uFB7B', 2409,
+    '\uFB7C', 2409,
+    '\uFB7D', 2409,
+    '\uFB7E', 2410,
+    '\uFB7F', 2410,
+    '\uFB80', 2410,
+    '\uFB81', 2410,
+    '\uFB82', 2411,
+    '\uFB83', 2411,
+    '\uFB84', 2412,
+    '\uFB85', 2412,
+    '\uFB86', 2413,
+    '\uFB87', 2413,
+    '\uFB88', 2414,
+    '\uFB89', 2414,
+    '\uFB8A', 2415,
+    '\uFB8B', 2415,
+    '\uFB8C', 2416,
+    '\uFB8D', 2416,
+    '\uFB8E', 2417,
+    '\uFB8F', 2417,
+    '\uFB90', 2417,
+    '\uFB91', 2417,
+    '\uFB92', 2418,
+    '\uFB93', 2418,
+    '\uFB94', 2418,
+    '\uFB95', 2418,
+    '\uFB96', 2419,
+    '\uFB97', 2419,
+    '\uFB98', 2419,
+    '\uFB99', 2419,
+    '\uFB9A', 2420,
+    '\uFB9B', 2420,
+    '\uFB9C', 2420,
+    '\uFB9D', 2420,
+    '\uFB9E', 2421,
+    '\uFB9F', 2421,
+    '\uFBA0', 2422,
+    '\uFBA1', 2422,
+    '\uFBA2', 2422,
+    '\uFBA3', 2422,
+    '\uFBA4', 404,
+    '\uFBA5', 404,
+    '\uFBA6', 2423,
+    '\uFBA7', 2423,
+    '\uFBA8', 2423,
+    '\uFBA9', 2423,
+    '\uFBAA', 2424,
+    '\uFBAB', 2424,
+    '\uFBAC', 2424,
+    '\uFBAD', 2424,
+    '\uFBAE', 2425,
+    '\uFBAF', 2425,
+    '\uFBB0', 406,
+    '\uFBB1', 406,
+    '\uFBD3', 2426,
+    '\uFBD4', 2426,
+    '\uFBD5', 2426,
+    '\uFBD6', 2426,
+    '\uFBD7', 2427,
+    '\uFBD8', 2427,
+    '\uFBD9', 2428,
+    '\uFBDA', 2428,
+    '\uFBDB', 2429,
+    '\uFBDC', 2429,
+    '\uFBDD', 402,
+    '\uFBDE', 2430,
+    '\uFBDF', 2430,
+    '\uFBE0', 2431,
+    '\uFBE1', 2431,
+    '\uFBE2', 2432,
+    '\uFBE3', 2432,
+    '\uFBE4', 2433,
+    '\uFBE5', 2433,
+    '\uFBE6', 2433,
+    '\uFBE7', 2433,
+    '\uFBE8', 2434,
+    '\uFBE9', 2434,
+    '\uFBEA', 2435,
+    '\uFBEB', 2435,
+    '\uFBEC', 2436,
+    '\uFBED', 2436,
+    '\uFBEE', 2437,
+    '\uFBEF', 2437,
+    '\uFBF0', 2438,
+    '\uFBF1', 2438,
+    '\uFBF2', 2439,
+    '\uFBF3', 2439,
+    '\uFBF4', 2440,
+    '\uFBF5', 2440,
+    '\uFBF6', 2441,
+    '\uFBF7', 2441,
+    '\uFBF8', 2441,
+    '\uFBF9', 2442,
+    '\uFBFA', 2442,
+    '\uFBFB', 2442,
+    '\uFBFC', 2443,
+    '\uFBFD', 2443,
+    '\uFBFE', 2443,
+    '\uFBFF', 2443,
+    '\uFC00', 2444,
+    '\uFC01', 2445,
+    '\uFC02', 2446,
+    '\uFC03', 2442,
+    '\uFC04', 2447,
+    '\uFC05', 2448,
+    '\uFC06', 2449,
+    '\uFC07', 2450,
+    '\uFC08', 2451,
+    '\uFC09', 2452,
+    '\uFC0A', 2453,
+    '\uFC0B', 2454,
+    '\uFC0C', 2455,
+    '\uFC0D', 2456,
+    '\uFC0E', 2457,
+    '\uFC0F', 2458,
+    '\uFC10', 2459,
+    '\uFC11', 2460,
+    '\uFC12', 2461,
+    '\uFC13', 2462,
+    '\uFC14', 2463,
+    '\uFC15', 2464,
+    '\uFC16', 2465,
+    '\uFC17', 2466,
+    '\uFC18', 2467,
+    '\uFC19', 2468,
+    '\uFC1A', 2469,
+    '\uFC1B', 2470,
+    '\uFC1C', 2471,
+    '\uFC1D', 2472,
+    '\uFC1E', 2473,
+    '\uFC1F', 2474,
+    '\uFC20', 2475,
+    '\uFC21', 2476,
+    '\uFC22', 2477,
+    '\uFC23', 2478,
+    '\uFC24', 2479,
+    '\uFC25', 2480,
+    '\uFC26', 2481,
+    '\uFC27', 2482,
+    '\uFC28', 2483,
+    '\uFC29', 2484,
+    '\uFC2A', 2485,
+    '\uFC2B', 2486,
+    '\uFC2C', 2487,
+    '\uFC2D', 2488,
+    '\uFC2E', 2489,
+    '\uFC2F', 2490,
+    '\uFC30', 2491,
+    '\uFC31', 2492,
+    '\uFC32', 2493,
+    '\uFC33', 2494,
+    '\uFC34', 2495,
+    '\uFC35', 2496,
+    '\uFC36', 2497,
+    '\uFC37', 2498,
+    '\uFC38', 2499,
+    '\uFC39', 2500,
+    '\uFC3A', 2501,
+    '\uFC3B', 2502,
+    '\uFC3C', 2503,
+    '\uFC3D', 2504,
+    '\uFC3E', 2505,
+    '\uFC3F', 2506,
+    '\uFC40', 2507,
+    '\uFC41', 2508,
+    '\uFC42', 2509,
+    '\uFC43', 2510,
+    '\uFC44', 2511,
+    '\uFC45', 2512,
+    '\uFC46', 2513,
+    '\uFC47', 2514,
+    '\uFC48', 2515,
+    '\uFC49', 2516,
+    '\uFC4A', 2517,
+    '\uFC4B', 2518,
+    '\uFC4C', 2519,
+    '\uFC4D', 2520,
+    '\uFC4E', 2521,
+    '\uFC4F', 2522,
+    '\uFC50', 2523,
+    '\uFC51', 2524,
+    '\uFC52', 2525,
+    '\uFC53', 2526,
+    '\uFC54', 2527,
+    '\uFC55', 2528,
+    '\uFC56', 2529,
+    '\uFC57', 2530,
+    '\uFC58', 2531,
+    '\uFC59', 2532,
+    '\uFC5A', 2533,
+    '\uFC5B', 2534,
+    '\uFC5C', 2535,
+    '\uFC5D', 2536,
+    '\uFC5E', 2537,
+    '\uFC5F', 2538,
+    '\uFC60', 2539,
+    '\uFC61', 2540,
+    '\uFC62', 2541,
+    '\uFC63', 2542,
+    '\uFC64', 2543,
+    '\uFC65', 2544,
+    '\uFC66', 2446,
+    '\uFC67', 2545,
+    '\uFC68', 2442,
+    '\uFC69', 2447,
+    '\uFC6A', 2546,
+    '\uFC6B', 2547,
+    '\uFC6C', 2451,
+    '\uFC6D', 2548,
+    '\uFC6E', 2452,
+    '\uFC6F', 2453,
+    '\uFC70', 2549,
+    '\uFC71', 2550,
+    '\uFC72', 2457,
+    '\uFC73', 2551,
+    '\uFC74', 2458,
+    '\uFC75', 2459,
+    '\uFC76', 2552,
+    '\uFC77', 2553,
+    '\uFC78', 2461,
+    '\uFC79', 2554,
+    '\uFC7A', 2462,
+    '\uFC7B', 2463,
+    '\uFC7C', 2492,
+    '\uFC7D', 2493,
+    '\uFC7E', 2496,
+    '\uFC7F', 2497,
+    '\uFC80', 2498,
+    '\uFC81', 2502,
+    '\uFC82', 2503,
+    '\uFC83', 2504,
+    '\uFC84', 2505,
+    '\uFC85', 2509,
+    '\uFC86', 2510,
+    '\uFC87', 2511,
+    '\uFC88', 2555,
+    '\uFC89', 2515,
+    '\uFC8A', 2556,
+    '\uFC8B', 2557,
+    '\uFC8C', 2521,
+    '\uFC8D', 2558,
+    '\uFC8E', 2522,
+    '\uFC8F', 2523,
+    '\uFC90', 2536,
+    '\uFC91', 2559,
+    '\uFC92', 2560,
+    '\uFC93', 2531,
+    '\uFC94', 2561,
+    '\uFC95', 2532,
+    '\uFC96', 2533,
+    '\uFC97', 2444,
+    '\uFC98', 2445,
+    '\uFC99', 2562,
+    '\uFC9A', 2446,
+    '\uFC9B', 2563,
+    '\uFC9C', 2448,
+    '\uFC9D', 2449,
+    '\uFC9E', 2450,
+    '\uFC9F', 2451,
+    '\uFCA0', 2564,
+    '\uFCA1', 2454,
+    '\uFCA2', 2455,
+    '\uFCA3', 2456,
+    '\uFCA4', 2457,
+    '\uFCA5', 2565,
+    '\uFCA6', 2461,
+    '\uFCA7', 2464,
+    '\uFCA8', 2465,
+    '\uFCA9', 2466,
+    '\uFCAA', 2467,
+    '\uFCAB', 2468,
+    '\uFCAC', 2470,
+    '\uFCAD', 2471,
+    '\uFCAE', 2472,
+    '\uFCAF', 2473,
+    '\uFCB0', 2474,
+    '\uFCB1', 2475,
+    '\uFCB2', 2566,
+    '\uFCB3', 2476,
+    '\uFCB4', 2477,
+    '\uFCB5', 2478,
+    '\uFCB6', 2479,
+    '\uFCB7', 2480,
+    '\uFCB8', 2481,
+    '\uFCB9', 2483,
+    '\uFCBA', 2484,
+    '\uFCBB', 2485,
+    '\uFCBC', 2486,
+    '\uFCBD', 2487,
+    '\uFCBE', 2488,
+    '\uFCBF', 2489,
+    '\uFCC0', 2490,
+    '\uFCC1', 2491,
+    '\uFCC2', 2494,
+    '\uFCC3', 2495,
+    '\uFCC4', 2499,
+    '\uFCC5', 2500,
+    '\uFCC6', 2501,
+    '\uFCC7', 2502,
+    '\uFCC8', 2503,
+    '\uFCC9', 2506,
+    '\uFCCA', 2507,
+    '\uFCCB', 2508,
+    '\uFCCC', 2509,
+    '\uFCCD', 2567,
+    '\uFCCE', 2512,
+    '\uFCCF', 2513,
+    '\uFCD0', 2514,
+    '\uFCD1', 2515,
+    '\uFCD2', 2518,
+    '\uFCD3', 2519,
+    '\uFCD4', 2520,
+    '\uFCD5', 2521,
+    '\uFCD6', 2568,
+    '\uFCD7', 2524,
+    '\uFCD8', 2525,
+    '\uFCD9', 2569,
+    '\uFCDA', 2528,
+    '\uFCDB', 2529,
+    '\uFCDC', 2530,
+    '\uFCDD', 2531,
+    '\uFCDE', 2570,
+    '\uFCDF', 2446,
+    '\uFCE0', 2563,
+    '\uFCE1', 2451,
+    '\uFCE2', 2564,
+    '\uFCE3', 2457,
+    '\uFCE4', 2565,
+    '\uFCE5', 2461,
+    '\uFCE6', 2571,
+    '\uFCE7', 2474,
+    '\uFCE8', 2572,
+    '\uFCE9', 2573,
+    '\uFCEA', 2574,
+    '\uFCEB', 2502,
+    '\uFCEC', 2503,
+    '\uFCED', 2509,
+    '\uFCEE', 2521,
+    '\uFCEF', 2568,
+    '\uFCF0', 2531,
+    '\uFCF1', 2570,
+    '\uFCF2', 2575,
+    '\uFCF3', 2576,
+    '\uFCF4', 2577,
+    '\uFCF5', 2578,
+    '\uFCF6', 2579,
+    '\uFCF7', 2580,
+    '\uFCF8', 2581,
+    '\uFCF9', 2582,
+    '\uFCFA', 2583,
+    '\uFCFB', 2584,
+    '\uFCFC', 2585,
+    '\uFCFD', 2586,
+    '\uFCFE', 2587,
+    '\uFCFF', 2588,
+    '\uFD00', 2589,
+    '\uFD01', 2590,
+    '\uFD02', 2591,
+    '\uFD03', 2592,
+    '\uFD04', 2593,
+    '\uFD05', 2594,
+    '\uFD06', 2595,
+    '\uFD07', 2596,
+    '\uFD08', 2597,
+    '\uFD09', 2598,
+    '\uFD0A', 2599,
+    '\uFD0B', 2600,
+    '\uFD0C', 2573,
+    '\uFD0D', 2601,
+    '\uFD0E', 2602,
+    '\uFD0F', 2603,
+    '\uFD10', 2604,
+    '\uFD11', 2578,
+    '\uFD12', 2579,
+    '\uFD13', 2580,
+    '\uFD14', 2581,
+    '\uFD15', 2582,
+    '\uFD16', 2583,
+    '\uFD17', 2584,
+    '\uFD18', 2585,
+    '\uFD19', 2586,
+    '\uFD1A', 2587,
+    '\uFD1B', 2588,
+    '\uFD1C', 2589,
+    '\uFD1D', 2590,
+    '\uFD1E', 2591,
+    '\uFD1F', 2592,
+    '\uFD20', 2593,
+    '\uFD21', 2594,
+    '\uFD22', 2595,
+    '\uFD23', 2596,
+    '\uFD24', 2597,
+    '\uFD25', 2598,
+    '\uFD26', 2599,
+    '\uFD27', 2600,
+    '\uFD28', 2573,
+    '\uFD29', 2601,
+    '\uFD2A', 2602,
+    '\uFD2B', 2603,
+    '\uFD2C', 2604,
+    '\uFD2D', 2598,
+    '\uFD2E', 2599,
+    '\uFD2F', 2600,
+    '\uFD30', 2573,
+    '\uFD31', 2572,
+    '\uFD32', 2574,
+    '\uFD33', 2482,
+    '\uFD34', 2471,
+    '\uFD35', 2472,
+    '\uFD36', 2473,
+    '\uFD37', 2598,
+    '\uFD38', 2599,
+    '\uFD39', 2600,
+    '\uFD3A', 2482,
+    '\uFD3B', 2483,
+    '\uFD3C', 2605,
+    '\uFD3D', 2605,
+    '\uFD50', 2606,
+    '\uFD51', 2607,
+    '\uFD52', 2607,
+    '\uFD53', 2608,
+    '\uFD54', 2609,
+    '\uFD55', 2610,
+    '\uFD56', 2611,
+    '\uFD57', 2612,
+    '\uFD58', 2613,
+    '\uFD59', 2613,
+    '\uFD5A', 2614,
+    '\uFD5B', 2615,
+    '\uFD5C', 2616,
+    '\uFD5D', 2617,
+    '\uFD5E', 2618,
+    '\uFD5F', 2619,
+    '\uFD60', 2619,
+    '\uFD61', 2620,
+    '\uFD62', 2621,
+    '\uFD63', 2621,
+    '\uFD64', 2622,
+    '\uFD65', 2622,
+    '\uFD66', 2623,
+    '\uFD67', 2624,
+    '\uFD68', 2624,
+    '\uFD69', 2625,
+    '\uFD6A', 2626,
+    '\uFD6B', 2626,
+    '\uFD6C', 2627,
+    '\uFD6D', 2627,
+    '\uFD6E', 2628,
+    '\uFD6F', 2629,
+    '\uFD70', 2629,
+    '\uFD71', 2630,
+    '\uFD72', 2630,
+    '\uFD73', 2631,
+    '\uFD74', 2632,
+    '\uFD75', 2633,
+    '\uFD76', 2634,
+    '\uFD77', 2634,
+    '\uFD78', 2635,
+    '\uFD79', 2636,
+    '\uFD7A', 2637,
+    '\uFD7B', 2638,
+    '\uFD7C', 2639,
+    '\uFD7D', 2639,
+    '\uFD7E', 2640,
+    '\uFD7F', 2641,
+    '\uFD80', 2642,
+    '\uFD81', 2643,
+    '\uFD82', 2644,
+    '\uFD83', 2645,
+    '\uFD84', 2645,
+    '\uFD85', 2646,
+    '\uFD86', 2646,
+    '\uFD87', 2647,
+    '\uFD88', 2647,
+    '\uFD89', 2648,
+    '\uFD8A', 2649,
+    '\uFD8B', 2650,
+    '\uFD8C', 2651,
+    '\uFD8D', 2652,
+    '\uFD8E', 2653,
+    '\uFD8F', 2654,
+    '\uFD92', 2655,
+    '\uFD93', 2656,
+    '\uFD94', 2657,
+    '\uFD95', 2658,
+    '\uFD96', 2659,
+    '\uFD97', 2660,
+    '\uFD98', 2660,
+    '\uFD99', 2661,
+    '\uFD9A', 2662,
+    '\uFD9B', 2663,
+    '\uFD9C', 2664,
+    '\uFD9D', 2664,
+    '\uFD9E', 2665,
+    '\uFD9F', 2666,
+    '\uFDA0', 2667,
+    '\uFDA1', 2668,
+    '\uFDA2', 2669,
+    '\uFDA3', 2670,
+    '\uFDA4', 2671,
+    '\uFDA5', 2672,
+    '\uFDA6', 2673,
+    '\uFDA7', 2674,
+    '\uFDA8', 2675,
+    '\uFDA9', 2676,
+    '\uFDAA', 2677,
+    '\uFDAB', 2678,
+    '\uFDAC', 2679,
+    '\uFDAD', 2680,
+    '\uFDAE', 2681,
+    '\uFDAF', 2682,
+    '\uFDB0', 2683,
+    '\uFDB1', 2684,
+    '\uFDB2', 2685,
+    '\uFDB3', 2686,
+    '\uFDB4', 2640,
+    '\uFDB5', 2642,
+    '\uFDB6', 2687,
+    '\uFDB7', 2688,
+    '\uFDB8', 2689,
+    '\uFDB9', 2690,
+    '\uFDBA', 2691,
+    '\uFDBB', 2692,
+    '\uFDBC', 2691,
+    '\uFDBD', 2689,
+    '\uFDBE', 2693,
+    '\uFDBF', 2694,
+    '\uFDC0', 2695,
+    '\uFDC1', 2696,
+    '\uFDC2', 2697,
+    '\uFDC3', 2692,
+    '\uFDC4', 2633,
+    '\uFDC5', 2623,
+    '\uFDC6', 2698,
+    '\uFDC7', 2699,
+    '\uFDF0', 2700,
+    '\uFDF1', 2701,
+    '\uFDF2', 2702,
+    '\uFDF3', 2703,
+    '\uFDF4', 2704,
+    '\uFDF5', 2705,
+    '\uFDF6', 2706,
+    '\uFDF7', 2707,
+    '\uFDF8', 2708,
+    '\uFDF9', 2709,
+    '\uFDFA', 2710,
+    '\uFDFB', 2711,
+    '\uFDFC', 2712,
+    '\uFE30', 938,
+    '\uFE31', 2713,
+    '\uFE32', 2714,
+    '\uFE33', 2715,
+    '\uFE34', 2715,
+    '\uFE35', 961,
+    '\uFE36', 962,
+    '\uFE37', 2716,
+    '\uFE38', 2717,
+    '\uFE39', 2718,
+    '\uFE3A', 2719,
+    '\uFE3B', 2720,
+    '\uFE3C', 2721,
+    '\uFE3D', 2722,
+    '\uFE3E', 2723,
+    '\uFE3F', 1088,
+    '\uFE40', 1089,
+    '\uFE41', 2724,
+    '\uFE42', 2725,
+    '\uFE43', 2726,
+    '\uFE44', 2727,
+    '\uFE49', 945,
+    '\uFE4A', 945,
+    '\uFE4B', 945,
+    '\uFE4C', 945,
+    '\uFE4D', 2715,
+    '\uFE4E', 2715,
+    '\uFE4F', 2715,
+    '\uFE50', 2728,
+    '\uFE51', 2729,
+    '\uFE52', 937,
+    '\uFE54', 309,
+    '\uFE55', 2730,
+    '\uFE56', 2731,
+    '\uFE57', 2732,
+    '\uFE58', 2713,
+    '\uFE59', 961,
+    '\uFE5A', 962,
+    '\uFE5B', 2716,
+    '\uFE5C', 2717,
+    '\uFE5D', 2718,
+    '\uFE5E', 2719,
+    '\uFE5F', 2733,
+    '\uFE60', 2734,
+    '\uFE61', 2735,
+    '\uFE62', 958,
+    '\uFE63', 2736,
+    '\uFE64', 2737,
+    '\uFE65', 2738,
+    '\uFE66', 960,
+    '\uFE68', 2739,
+    '\uFE69', 2740,
+    '\uFE6A', 2741,
+    '\uFE6B', 2742,
+    '\uFE70', 2743,
+    '\uFE71', 2744,
+    '\uFE72', 2745,
+    '\uFE74', 2746,
+    '\uFE76', 2747,
+    '\uFE77', 2748,
+    '\uFE78', 2749,
+    '\uFE79', 2750,
+    '\uFE7A', 2751,
+    '\uFE7B', 2752,
+    '\uFE7C', 2753,
+    '\uFE7D', 2754,
+    '\uFE7E', 2755,
+    '\uFE7F', 2756,
+    '\uFE80', 2757,
+    '\uFE81', 395,
+    '\uFE82', 395,
+    '\uFE83', 396,
+    '\uFE84', 396,
+    '\uFE85', 397,
+    '\uFE86', 397,
+    '\uFE87', 398,
+    '\uFE88', 398,
+    '\uFE89', 399,
+    '\uFE8A', 399,
+    '\uFE8B', 399,
+    '\uFE8C', 399,
+    '\uFE8D', 2758,
+    '\uFE8E', 2758,
+    '\uFE8F', 2759,
+    '\uFE90', 2759,
+    '\uFE91', 2759,
+    '\uFE92', 2759,
+    '\uFE93', 2760,
+    '\uFE94', 2760,
+    '\uFE95', 2761,
+    '\uFE96', 2761,
+    '\uFE97', 2761,
+    '\uFE98', 2761,
+    '\uFE99', 2762,
+    '\uFE9A', 2762,
+    '\uFE9B', 2762,
+    '\uFE9C', 2762,
+    '\uFE9D', 2763,
+    '\uFE9E', 2763,
+    '\uFE9F', 2763,
+    '\uFEA0', 2763,
+    '\uFEA1', 2764,
+    '\uFEA2', 2764,
+    '\uFEA3', 2764,
+    '\uFEA4', 2764,
+    '\uFEA5', 2765,
+    '\uFEA6', 2765,
+    '\uFEA7', 2765,
+    '\uFEA8', 2765,
+    '\uFEA9', 2766,
+    '\uFEAA', 2766,
+    '\uFEAB', 2767,
+    '\uFEAC', 2767,
+    '\uFEAD', 2768,
+    '\uFEAE', 2768,
+    '\uFEAF', 2769,
+    '\uFEB0', 2769,
+    '\uFEB1', 2770,
+    '\uFEB2', 2770,
+    '\uFEB3', 2770,
+    '\uFEB4', 2770,
+    '\uFEB5', 2771,
+    '\uFEB6', 2771,
+    '\uFEB7', 2771,
+    '\uFEB8', 2771,
+    '\uFEB9', 2772,
+    '\uFEBA', 2772,
+    '\uFEBB', 2772,
+    '\uFEBC', 2772,
+    '\uFEBD', 2773,
+    '\uFEBE', 2773,
+    '\uFEBF', 2773,
+    '\uFEC0', 2773,
+    '\uFEC1', 2774,
+    '\uFEC2', 2774,
+    '\uFEC3', 2774,
+    '\uFEC4', 2774,
+    '\uFEC5', 2775,
+    '\uFEC6', 2775,
+    '\uFEC7', 2775,
+    '\uFEC8', 2775,
+    '\uFEC9', 2776,
+    '\uFECA', 2776,
+    '\uFECB', 2776,
+    '\uFECC', 2776,
+    '\uFECD', 2777,
+    '\uFECE', 2777,
+    '\uFECF', 2777,
+    '\uFED0', 2777,
+    '\uFED1', 2778,
+    '\uFED2', 2778,
+    '\uFED3', 2778,
+    '\uFED4', 2778,
+    '\uFED5', 2779,
+    '\uFED6', 2779,
+    '\uFED7', 2779,
+    '\uFED8', 2779,
+    '\uFED9', 2780,
+    '\uFEDA', 2780,
+    '\uFEDB', 2780,
+    '\uFEDC', 2780,
+    '\uFEDD', 2781,
+    '\uFEDE', 2781,
+    '\uFEDF', 2781,
+    '\uFEE0', 2781,
+    '\uFEE1', 2782,
+    '\uFEE2', 2782,
+    '\uFEE3', 2782,
+    '\uFEE4', 2782,
+    '\uFEE5', 2783,
+    '\uFEE6', 2783,
+    '\uFEE7', 2783,
+    '\uFEE8', 2783,
+    '\uFEE9', 2784,
+    '\uFEEA', 2784,
+    '\uFEEB', 2784,
+    '\uFEEC', 2784,
+    '\uFEED', 2785,
+    '\uFEEE', 2785,
+    '\uFEEF', 2434,
+    '\uFEF0', 2434,
+    '\uFEF1', 2786,
+    '\uFEF2', 2786,
+    '\uFEF3', 2786,
+    '\uFEF4', 2786,
+    '\uFEF5', 2787,
+    '\uFEF6', 2787,
+    '\uFEF7', 2788,
+    '\uFEF8', 2788,
+    '\uFEF9', 2789,
+    '\uFEFA', 2789,
+    '\uFEFB', 2790,
+    '\uFEFC', 2790,
+    '\uFF01', 2732,
+    '\uFF02', 2791,
+    '\uFF03', 2733,
+    '\uFF04', 2740,
+    '\uFF05', 2741,
+    '\uFF06', 2734,
+    '\uFF07', 2792,
+    '\uFF08', 961,
+    '\uFF09', 962,
+    '\uFF0A', 2735,
+    '\uFF0B', 958,
+    '\uFF0C', 2728,
+    '\uFF0D', 2736,
+    '\uFF0E', 937,
+    '\uFF0F', 2793,
+    '\uFF10', 950,
+    '\uFF11', 9,
+    '\uFF12', 4,
+    '\uFF13', 5,
+    '\uFF14', 952,
+    '\uFF15', 953,
+    '\uFF16', 954,
+    '\uFF17', 955,
+    '\uFF18', 956,
+    '\uFF19', 957,
+    '\uFF1A', 2730,
+    '\uFF1B', 309,
+    '\uFF1C', 2737,
+    '\uFF1D', 960,
+    '\uFF1E', 2738,
+    '\uFF1F', 2731,
+    '\uFF20', 2742,
+    '\uFF21', 1167,
+    '\uFF22', 989,
+    '\uFF23', 967,
+    '\uFF24', 1002,
+    '\uFF25', 991,
+    '\uFF26', 992,
+    '\uFF27', 1168,
+    '\uFF28', 974,
+    '\uFF29', 976,
+    '\uFF2A', 1169,
+    '\uFF2B', 988,
+    '\uFF2C', 977,
+    '\uFF2D', 993,
+    '\uFF2E', 978,
+    '\uFF2F', 1170,
+    '\uFF30', 980,
+    '\uFF31', 981,
+    '\uFF32', 982,
+    '\uFF33', 1171,
+    '\uFF34', 1172,
+    '\uFF35', 1173,
+    '\uFF36', 1020,
+    '\uFF37', 1174,
+    '\uFF38', 1025,
+    '\uFF39', 1175,
+    '\uFF3A', 986,
+    '\uFF3B', 2794,
+    '\uFF3C', 2739,
+    '\uFF3D', 2795,
+    '\uFF3E', 2796,
+    '\uFF3F', 2715,
+    '\uFF40', 925,
+    '\uFF41', 2,
+    '\uFF42', 1176,
+    '\uFF43', 1038,
+    '\uFF44', 1003,
+    '\uFF45', 990,
+    '\uFF46', 1177,
+    '\uFF47', 973,
+    '\uFF48', 284,
+    '\uFF49', 951,
+    '\uFF4A', 286,
+    '\uFF4B', 1178,
+    '\uFF4C', 300,
+    '\uFF4D', 1039,
+    '\uFF4E', 963,
+    '\uFF4F', 10,
+    '\uFF50', 1179,
+    '\uFF51', 1180,
+    '\uFF52', 287,
+    '\uFF53', 180,
+    '\uFF54', 1181,
+    '\uFF55', 1182,
+    '\uFF56', 1031,
+    '\uFF57', 291,
+    '\uFF58', 301,
+    '\uFF59', 292,
+    '\uFF5A', 1183,
+    '\uFF5B', 2716,
+    '\uFF5C', 2797,
+    '\uFF5D', 2717,
+    '\uFF5E', 2798,
+    '\uFF5F', 2799,
+    '\uFF60', 2800,
+    '\uFF61', 2801,
+    '\uFF62', 2724,
+    '\uFF63', 2725,
+    '\uFF64', 2729,
+    '\uFF65', 2802,
+    '\uFF66', 1773,
+    '\uFF67', 2803,
+    '\uFF68', 2804,
+    '\uFF69', 2805,
+    '\uFF6A', 2806,
+    '\uFF6B', 2807,
+    '\uFF6C', 2808,
+    '\uFF6D', 2809,
+    '\uFF6E', 2810,
+    '\uFF6F', 2811,
+    '\uFF70', 2812,
+    '\uFF71', 1727,
+    '\uFF72', 1728,
+    '\uFF73', 1729,
+    '\uFF74', 1730,
+    '\uFF75', 1731,
+    '\uFF76', 1732,
+    '\uFF77', 1733,
+    '\uFF78', 1734,
+    '\uFF79', 1735,
+    '\uFF7A', 1736,
+    '\uFF7B', 1737,
+    '\uFF7C', 1738,
+    '\uFF7D', 1739,
+    '\uFF7E', 1740,
+    '\uFF7F', 1741,
+    '\uFF80', 1742,
+    '\uFF81', 1743,
+    '\uFF82', 1744,
+    '\uFF83', 1745,
+    '\uFF84', 1746,
+    '\uFF85', 1747,
+    '\uFF86', 1748,
+    '\uFF87', 1749,
+    '\uFF88', 1750,
+    '\uFF89', 1751,
+    '\uFF8A', 1752,
+    '\uFF8B', 1753,
+    '\uFF8C', 1754,
+    '\uFF8D', 1755,
+    '\uFF8E', 1756,
+    '\uFF8F', 1757,
+    '\uFF90', 1758,
+    '\uFF91', 1759,
+    '\uFF92', 1760,
+    '\uFF93', 1761,
+    '\uFF94', 1762,
+    '\uFF95', 1763,
+    '\uFF96', 1764,
+    '\uFF97', 1765,
+    '\uFF98', 1766,
+    '\uFF99', 1767,
+    '\uFF9A', 1768,
+    '\uFF9B', 1769,
+    '\uFF9C', 1770,
+    '\uFF9D', 2813,
+    '\uFF9E', 2814,
+    '\uFF9F', 2815,
+    '\uFFA0', 1521,
+    '\uFFA1', 1470,
+    '\uFFA2', 1471,
+    '\uFFA3', 1472,
+    '\uFFA4', 1473,
+    '\uFFA5', 1474,
+    '\uFFA6', 1475,
+    '\uFFA7', 1476,
+    '\uFFA8', 1477,
+    '\uFFA9', 1478,
+    '\uFFAA', 1479,
+    '\uFFAB', 1480,
+    '\uFFAC', 1481,
+    '\uFFAD', 1482,
+    '\uFFAE', 1483,
+    '\uFFAF', 1484,
+    '\uFFB0', 1485,
+    '\uFFB1', 1486,
+    '\uFFB2', 1487,
+    '\uFFB3', 1488,
+    '\uFFB4', 1489,
+    '\uFFB5', 1490,
+    '\uFFB6', 1491,
+    '\uFFB7', 1492,
+    '\uFFB8', 1493,
+    '\uFFB9', 1494,
+    '\uFFBA', 1495,
+    '\uFFBB', 1496,
+    '\uFFBC', 1497,
+    '\uFFBD', 1498,
+    '\uFFBE', 1499,
+    '\uFFC2', 1500,
+    '\uFFC3', 1501,
+    '\uFFC4', 1502,
+    '\uFFC5', 1503,
+    '\uFFC6', 1504,
+    '\uFFC7', 1505,
+    '\uFFCA', 1506,
+    '\uFFCB', 1507,
+    '\uFFCC', 1508,
+    '\uFFCD', 1509,
+    '\uFFCE', 1510,
+    '\uFFCF', 1511,
+    '\uFFD2', 1512,
+    '\uFFD3', 1513,
+    '\uFFD4', 1514,
+    '\uFFD5', 1515,
+    '\uFFD6', 1516,
+    '\uFFD7', 1517,
+    '\uFFDA', 1518,
+    '\uFFDB', 1519,
+    '\uFFDC', 1520,
+    '\uFFE0', 2816,
+    '\uFFE1', 2817,
+    '\uFFE2', 2818,
+    '\uFFE3', 3,
+    '\uFFE4', 2819,
+    '\uFFE5', 2820,
+    '\uFFE6', 2821,
+    '\uFFE8', 2822,
+    '\uFFE9', 2823,
+    '\uFFEA', 2824,
+    '\uFFEB', 2825,
+    '\uFFEC', 2826,
+    '\uFFED', 2827,
+    '\uFFEE', 2828,
+  };
+}
diff --git a/java/gnu/inet/encoding/DecompositionMappings.java b/java/gnu/inet/encoding/DecompositionMappings.java
new file mode 100644 (file)
index 0000000..0a70efc
--- /dev/null
@@ -0,0 +1,2842 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit GenerateNFKC.java and re-run.  */
+
+package gnu.inet.encoding;
+
+/**
+ * Auto-generated class containing Unicode NFKC tables.
+ */
+public class DecompositionMappings
+{
+  public final static String[] m = new String[] {
+    "\u0020",
+    "\u0020\u0308",
+    "\u0061",
+    "\u0020\u0304",
+    "\u0032",
+    "\u0033",
+    "\u0020\u0301",
+    "\u03BC",
+    "\u0020\u0327",
+    "\u0031",
+    "\u006F",
+    "\u0031\u2044\u0034",
+    "\u0031\u2044\u0032",
+    "\u0033\u2044\u0034",
+    "\u0041\u0300",
+    "\u0041\u0301",
+    "\u0041\u0302",
+    "\u0041\u0303",
+    "\u0041\u0308",
+    "\u0041\u030A",
+    "\u0043\u0327",
+    "\u0045\u0300",
+    "\u0045\u0301",
+    "\u0045\u0302",
+    "\u0045\u0308",
+    "\u0049\u0300",
+    "\u0049\u0301",
+    "\u0049\u0302",
+    "\u0049\u0308",
+    "\u004E\u0303",
+    "\u004F\u0300",
+    "\u004F\u0301",
+    "\u004F\u0302",
+    "\u004F\u0303",
+    "\u004F\u0308",
+    "\u0055\u0300",
+    "\u0055\u0301",
+    "\u0055\u0302",
+    "\u0055\u0308",
+    "\u0059\u0301",
+    "\u0061\u0300",
+    "\u0061\u0301",
+    "\u0061\u0302",
+    "\u0061\u0303",
+    "\u0061\u0308",
+    "\u0061\u030A",
+    "\u0063\u0327",
+    "\u0065\u0300",
+    "\u0065\u0301",
+    "\u0065\u0302",
+    "\u0065\u0308",
+    "\u0069\u0300",
+    "\u0069\u0301",
+    "\u0069\u0302",
+    "\u0069\u0308",
+    "\u006E\u0303",
+    "\u006F\u0300",
+    "\u006F\u0301",
+    "\u006F\u0302",
+    "\u006F\u0303",
+    "\u006F\u0308",
+    "\u0075\u0300",
+    "\u0075\u0301",
+    "\u0075\u0302",
+    "\u0075\u0308",
+    "\u0079\u0301",
+    "\u0079\u0308",
+    "\u0041\u0304",
+    "\u0061\u0304",
+    "\u0041\u0306",
+    "\u0061\u0306",
+    "\u0041\u0328",
+    "\u0061\u0328",
+    "\u0043\u0301",
+    "\u0063\u0301",
+    "\u0043\u0302",
+    "\u0063\u0302",
+    "\u0043\u0307",
+    "\u0063\u0307",
+    "\u0043\u030C",
+    "\u0063\u030C",
+    "\u0044\u030C",
+    "\u0064\u030C",
+    "\u0045\u0304",
+    "\u0065\u0304",
+    "\u0045\u0306",
+    "\u0065\u0306",
+    "\u0045\u0307",
+    "\u0065\u0307",
+    "\u0045\u0328",
+    "\u0065\u0328",
+    "\u0045\u030C",
+    "\u0065\u030C",
+    "\u0047\u0302",
+    "\u0067\u0302",
+    "\u0047\u0306",
+    "\u0067\u0306",
+    "\u0047\u0307",
+    "\u0067\u0307",
+    "\u0047\u0327",
+    "\u0067\u0327",
+    "\u0048\u0302",
+    "\u0068\u0302",
+    "\u0049\u0303",
+    "\u0069\u0303",
+    "\u0049\u0304",
+    "\u0069\u0304",
+    "\u0049\u0306",
+    "\u0069\u0306",
+    "\u0049\u0328",
+    "\u0069\u0328",
+    "\u0049\u0307",
+    "\u0049\u004A",
+    "\u0069\u006A",
+    "\u004A\u0302",
+    "\u006A\u0302",
+    "\u004B\u0327",
+    "\u006B\u0327",
+    "\u004C\u0301",
+    "\u006C\u0301",
+    "\u004C\u0327",
+    "\u006C\u0327",
+    "\u004C\u030C",
+    "\u006C\u030C",
+    "\u004C\u00B7",
+    "\u006C\u00B7",
+    "\u004E\u0301",
+    "\u006E\u0301",
+    "\u004E\u0327",
+    "\u006E\u0327",
+    "\u004E\u030C",
+    "\u006E\u030C",
+    "\u02BC\u006E",
+    "\u004F\u0304",
+    "\u006F\u0304",
+    "\u004F\u0306",
+    "\u006F\u0306",
+    "\u004F\u030B",
+    "\u006F\u030B",
+    "\u0052\u0301",
+    "\u0072\u0301",
+    "\u0052\u0327",
+    "\u0072\u0327",
+    "\u0052\u030C",
+    "\u0072\u030C",
+    "\u0053\u0301",
+    "\u0073\u0301",
+    "\u0053\u0302",
+    "\u0073\u0302",
+    "\u0053\u0327",
+    "\u0073\u0327",
+    "\u0053\u030C",
+    "\u0073\u030C",
+    "\u0054\u0327",
+    "\u0074\u0327",
+    "\u0054\u030C",
+    "\u0074\u030C",
+    "\u0055\u0303",
+    "\u0075\u0303",
+    "\u0055\u0304",
+    "\u0075\u0304",
+    "\u0055\u0306",
+    "\u0075\u0306",
+    "\u0055\u030A",
+    "\u0075\u030A",
+    "\u0055\u030B",
+    "\u0075\u030B",
+    "\u0055\u0328",
+    "\u0075\u0328",
+    "\u0057\u0302",
+    "\u0077\u0302",
+    "\u0059\u0302",
+    "\u0079\u0302",
+    "\u0059\u0308",
+    "\u005A\u0301",
+    "\u007A\u0301",
+    "\u005A\u0307",
+    "\u007A\u0307",
+    "\u005A\u030C",
+    "\u007A\u030C",
+    "\u0073",
+    "\u004F\u031B",
+    "\u006F\u031B",
+    "\u0055\u031B",
+    "\u0075\u031B",
+    "\u0044\u005A\u030C",
+    "\u0044\u007A\u030C",
+    "\u0064\u007A\u030C",
+    "\u004C\u004A",
+    "\u004C\u006A",
+    "\u006C\u006A",
+    "\u004E\u004A",
+    "\u004E\u006A",
+    "\u006E\u006A",
+    "\u0041\u030C",
+    "\u0061\u030C",
+    "\u0049\u030C",
+    "\u0069\u030C",
+    "\u004F\u030C",
+    "\u006F\u030C",
+    "\u0055\u030C",
+    "\u0075\u030C",
+    "\u0055\u0308\u0304",
+    "\u0075\u0308\u0304",
+    "\u0055\u0308\u0301",
+    "\u0075\u0308\u0301",
+    "\u0055\u0308\u030C",
+    "\u0075\u0308\u030C",
+    "\u0055\u0308\u0300",
+    "\u0075\u0308\u0300",
+    "\u0041\u0308\u0304",
+    "\u0061\u0308\u0304",
+    "\u0041\u0307\u0304",
+    "\u0061\u0307\u0304",
+    "\u00C6\u0304",
+    "\u00E6\u0304",
+    "\u0047\u030C",
+    "\u0067\u030C",
+    "\u004B\u030C",
+    "\u006B\u030C",
+    "\u004F\u0328",
+    "\u006F\u0328",
+    "\u004F\u0328\u0304",
+    "\u006F\u0328\u0304",
+    "\u01B7\u030C",
+    "\u0292\u030C",
+    "\u006A\u030C",
+    "\u0044\u005A",
+    "\u0044\u007A",
+    "\u0064\u007A",
+    "\u0047\u0301",
+    "\u0067\u0301",
+    "\u004E\u0300",
+    "\u006E\u0300",
+    "\u0041\u030A\u0301",
+    "\u0061\u030A\u0301",
+    "\u00C6\u0301",
+    "\u00E6\u0301",
+    "\u00D8\u0301",
+    "\u00F8\u0301",
+    "\u0041\u030F",
+    "\u0061\u030F",
+    "\u0041\u0311",
+    "\u0061\u0311",
+    "\u0045\u030F",
+    "\u0065\u030F",
+    "\u0045\u0311",
+    "\u0065\u0311",
+    "\u0049\u030F",
+    "\u0069\u030F",
+    "\u0049\u0311",
+    "\u0069\u0311",
+    "\u004F\u030F",
+    "\u006F\u030F",
+    "\u004F\u0311",
+    "\u006F\u0311",
+    "\u0052\u030F",
+    "\u0072\u030F",
+    "\u0052\u0311",
+    "\u0072\u0311",
+    "\u0055\u030F",
+    "\u0075\u030F",
+    "\u0055\u0311",
+    "\u0075\u0311",
+    "\u0053\u0326",
+    "\u0073\u0326",
+    "\u0054\u0326",
+    "\u0074\u0326",
+    "\u0048\u030C",
+    "\u0068\u030C",
+    "\u0041\u0307",
+    "\u0061\u0307",
+    "\u0045\u0327",
+    "\u0065\u0327",
+    "\u004F\u0308\u0304",
+    "\u006F\u0308\u0304",
+    "\u004F\u0303\u0304",
+    "\u006F\u0303\u0304",
+    "\u004F\u0307",
+    "\u006F\u0307",
+    "\u004F\u0307\u0304",
+    "\u006F\u0307\u0304",
+    "\u0059\u0304",
+    "\u0079\u0304",
+    "\u0068",
+    "\u0266",
+    "\u006A",
+    "\u0072",
+    "\u0279",
+    "\u027B",
+    "\u0281",
+    "\u0077",
+    "\u0079",
+    "\u0020\u0306",
+    "\u0020\u0307",
+    "\u0020\u030A",
+    "\u0020\u0328",
+    "\u0020\u0303",
+    "\u0020\u030B",
+    "\u0263",
+    "\u006C",
+    "\u0078",
+    "\u0295",
+    "\u0300",
+    "\u0301",
+    "\u0313",
+    "\u0308\u0301",
+    "\u02B9",
+    "\u0020\u0345",
+    "\u003B",
+    "\u0020\u0308\u0301",
+    "\u0391\u0301",
+    "\u00B7",
+    "\u0395\u0301",
+    "\u0397\u0301",
+    "\u0399\u0301",
+    "\u039F\u0301",
+    "\u03A5\u0301",
+    "\u03A9\u0301",
+    "\u03B9\u0308\u0301",
+    "\u0399\u0308",
+    "\u03A5\u0308",
+    "\u03B1\u0301",
+    "\u03B5\u0301",
+    "\u03B7\u0301",
+    "\u03B9\u0301",
+    "\u03C5\u0308\u0301",
+    "\u03B9\u0308",
+    "\u03C5\u0308",
+    "\u03BF\u0301",
+    "\u03C5\u0301",
+    "\u03C9\u0301",
+    "\u03B2",
+    "\u03B8",
+    "\u03A5",
+    "\u03C6",
+    "\u03C0",
+    "\u03BA",
+    "\u03C1",
+    "\u03C2",
+    "\u0398",
+    "\u03B5",
+    "\u0415\u0300",
+    "\u0415\u0308",
+    "\u0413\u0301",
+    "\u0406\u0308",
+    "\u041A\u0301",
+    "\u0418\u0300",
+    "\u0423\u0306",
+    "\u0418\u0306",
+    "\u0438\u0306",
+    "\u0435\u0300",
+    "\u0435\u0308",
+    "\u0433\u0301",
+    "\u0456\u0308",
+    "\u043A\u0301",
+    "\u0438\u0300",
+    "\u0443\u0306",
+    "\u0474\u030F",
+    "\u0475\u030F",
+    "\u0416\u0306",
+    "\u0436\u0306",
+    "\u0410\u0306",
+    "\u0430\u0306",
+    "\u0410\u0308",
+    "\u0430\u0308",
+    "\u0415\u0306",
+    "\u0435\u0306",
+    "\u04D8\u0308",
+    "\u04D9\u0308",
+    "\u0416\u0308",
+    "\u0436\u0308",
+    "\u0417\u0308",
+    "\u0437\u0308",
+    "\u0418\u0304",
+    "\u0438\u0304",
+    "\u0418\u0308",
+    "\u0438\u0308",
+    "\u041E\u0308",
+    "\u043E\u0308",
+    "\u04E8\u0308",
+    "\u04E9\u0308",
+    "\u042D\u0308",
+    "\u044D\u0308",
+    "\u0423\u0304",
+    "\u0443\u0304",
+    "\u0423\u0308",
+    "\u0443\u0308",
+    "\u0423\u030B",
+    "\u0443\u030B",
+    "\u0427\u0308",
+    "\u0447\u0308",
+    "\u042B\u0308",
+    "\u044B\u0308",
+    "\u0565\u0582",
+    "\u0627\u0653",
+    "\u0627\u0654",
+    "\u0648\u0654",
+    "\u0627\u0655",
+    "\u064A\u0654",
+    "\u0627\u0674",
+    "\u0648\u0674",
+    "\u06C7\u0674",
+    "\u064A\u0674",
+    "\u06D5\u0654",
+    "\u06C1\u0654",
+    "\u06D2\u0654",
+    "\u0928\u093C",
+    "\u0930\u093C",
+    "\u0933\u093C",
+    "\u0915\u093C",
+    "\u0916\u093C",
+    "\u0917\u093C",
+    "\u091C\u093C",
+    "\u0921\u093C",
+    "\u0922\u093C",
+    "\u092B\u093C",
+    "\u092F\u093C",
+    "\u09C7\u09BE",
+    "\u09C7\u09D7",
+    "\u09A1\u09BC",
+    "\u09A2\u09BC",
+    "\u09AF\u09BC",
+    "\u0A32\u0A3C",
+    "\u0A38\u0A3C",
+    "\u0A16\u0A3C",
+    "\u0A17\u0A3C",
+    "\u0A1C\u0A3C",
+    "\u0A2B\u0A3C",
+    "\u0B47\u0B56",
+    "\u0B47\u0B3E",
+    "\u0B47\u0B57",
+    "\u0B21\u0B3C",
+    "\u0B22\u0B3C",
+    "\u0B92\u0BD7",
+    "\u0BC6\u0BBE",
+    "\u0BC7\u0BBE",
+    "\u0BC6\u0BD7",
+    "\u0C46\u0C56",
+    "\u0CBF\u0CD5",
+    "\u0CC6\u0CD5",
+    "\u0CC6\u0CD6",
+    "\u0CC6\u0CC2",
+    "\u0CC6\u0CC2\u0CD5",
+    "\u0D46\u0D3E",
+    "\u0D47\u0D3E",
+    "\u0D46\u0D57",
+    "\u0DD9\u0DCA",
+    "\u0DD9\u0DCF",
+    "\u0DD9\u0DCF\u0DCA",
+    "\u0DD9\u0DDF",
+    "\u0E4D\u0E32",
+    "\u0ECD\u0EB2",
+    "\u0EAB\u0E99",
+    "\u0EAB\u0EA1",
+    "\u0F0B",
+    "\u0F42\u0FB7",
+    "\u0F4C\u0FB7",
+    "\u0F51\u0FB7",
+    "\u0F56\u0FB7",
+    "\u0F5B\u0FB7",
+    "\u0F40\u0FB5",
+    "\u0F71\u0F72",
+    "\u0F71\u0F74",
+    "\u0FB2\u0F80",
+    "\u0FB2\u0F71\u0F80",
+    "\u0FB3\u0F80",
+    "\u0FB3\u0F71\u0F80",
+    "\u0F71\u0F80",
+    "\u0F92\u0FB7",
+    "\u0F9C\u0FB7",
+    "\u0FA1\u0FB7",
+    "\u0FA6\u0FB7",
+    "\u0FAB\u0FB7",
+    "\u0F90\u0FB5",
+    "\u1025\u102E",
+    "\u0041\u0325",
+    "\u0061\u0325",
+    "\u0042\u0307",
+    "\u0062\u0307",
+    "\u0042\u0323",
+    "\u0062\u0323",
+    "\u0042\u0331",
+    "\u0062\u0331",
+    "\u0043\u0327\u0301",
+    "\u0063\u0327\u0301",
+    "\u0044\u0307",
+    "\u0064\u0307",
+    "\u0044\u0323",
+    "\u0064\u0323",
+    "\u0044\u0331",
+    "\u0064\u0331",
+    "\u0044\u0327",
+    "\u0064\u0327",
+    "\u0044\u032D",
+    "\u0064\u032D",
+    "\u0045\u0304\u0300",
+    "\u0065\u0304\u0300",
+    "\u0045\u0304\u0301",
+    "\u0065\u0304\u0301",
+    "\u0045\u032D",
+    "\u0065\u032D",
+    "\u0045\u0330",
+    "\u0065\u0330",
+    "\u0045\u0327\u0306",
+    "\u0065\u0327\u0306",
+    "\u0046\u0307",
+    "\u0066\u0307",
+    "\u0047\u0304",
+    "\u0067\u0304",
+    "\u0048\u0307",
+    "\u0068\u0307",
+    "\u0048\u0323",
+    "\u0068\u0323",
+    "\u0048\u0308",
+    "\u0068\u0308",
+    "\u0048\u0327",
+    "\u0068\u0327",
+    "\u0048\u032E",
+    "\u0068\u032E",
+    "\u0049\u0330",
+    "\u0069\u0330",
+    "\u0049\u0308\u0301",
+    "\u0069\u0308\u0301",
+    "\u004B\u0301",
+    "\u006B\u0301",
+    "\u004B\u0323",
+    "\u006B\u0323",
+    "\u004B\u0331",
+    "\u006B\u0331",
+    "\u004C\u0323",
+    "\u006C\u0323",
+    "\u004C\u0323\u0304",
+    "\u006C\u0323\u0304",
+    "\u004C\u0331",
+    "\u006C\u0331",
+    "\u004C\u032D",
+    "\u006C\u032D",
+    "\u004D\u0301",
+    "\u006D\u0301",
+    "\u004D\u0307",
+    "\u006D\u0307",
+    "\u004D\u0323",
+    "\u006D\u0323",
+    "\u004E\u0307",
+    "\u006E\u0307",
+    "\u004E\u0323",
+    "\u006E\u0323",
+    "\u004E\u0331",
+    "\u006E\u0331",
+    "\u004E\u032D",
+    "\u006E\u032D",
+    "\u004F\u0303\u0301",
+    "\u006F\u0303\u0301",
+    "\u004F\u0303\u0308",
+    "\u006F\u0303\u0308",
+    "\u004F\u0304\u0300",
+    "\u006F\u0304\u0300",
+    "\u004F\u0304\u0301",
+    "\u006F\u0304\u0301",
+    "\u0050\u0301",
+    "\u0070\u0301",
+    "\u0050\u0307",
+    "\u0070\u0307",
+    "\u0052\u0307",
+    "\u0072\u0307",
+    "\u0052\u0323",
+    "\u0072\u0323",
+    "\u0052\u0323\u0304",
+    "\u0072\u0323\u0304",
+    "\u0052\u0331",
+    "\u0072\u0331",
+    "\u0053\u0307",
+    "\u0073\u0307",
+    "\u0053\u0323",
+    "\u0073\u0323",
+    "\u0053\u0301\u0307",
+    "\u0073\u0301\u0307",
+    "\u0053\u030C\u0307",
+    "\u0073\u030C\u0307",
+    "\u0053\u0323\u0307",
+    "\u0073\u0323\u0307",
+    "\u0054\u0307",
+    "\u0074\u0307",
+    "\u0054\u0323",
+    "\u0074\u0323",
+    "\u0054\u0331",
+    "\u0074\u0331",
+    "\u0054\u032D",
+    "\u0074\u032D",
+    "\u0055\u0324",
+    "\u0075\u0324",
+    "\u0055\u0330",
+    "\u0075\u0330",
+    "\u0055\u032D",
+    "\u0075\u032D",
+    "\u0055\u0303\u0301",
+    "\u0075\u0303\u0301",
+    "\u0055\u0304\u0308",
+    "\u0075\u0304\u0308",
+    "\u0056\u0303",
+    "\u0076\u0303",
+    "\u0056\u0323",
+    "\u0076\u0323",
+    "\u0057\u0300",
+    "\u0077\u0300",
+    "\u0057\u0301",
+    "\u0077\u0301",
+    "\u0057\u0308",
+    "\u0077\u0308",
+    "\u0057\u0307",
+    "\u0077\u0307",
+    "\u0057\u0323",
+    "\u0077\u0323",
+    "\u0058\u0307",
+    "\u0078\u0307",
+    "\u0058\u0308",
+    "\u0078\u0308",
+    "\u0059\u0307",
+    "\u0079\u0307",
+    "\u005A\u0302",
+    "\u007A\u0302",
+    "\u005A\u0323",
+    "\u007A\u0323",
+    "\u005A\u0331",
+    "\u007A\u0331",
+    "\u0068\u0331",
+    "\u0074\u0308",
+    "\u0077\u030A",
+    "\u0079\u030A",
+    "\u0061\u02BE",
+    "\u0041\u0323",
+    "\u0061\u0323",
+    "\u0041\u0309",
+    "\u0061\u0309",
+    "\u0041\u0302\u0301",
+    "\u0061\u0302\u0301",
+    "\u0041\u0302\u0300",
+    "\u0061\u0302\u0300",
+    "\u0041\u0302\u0309",
+    "\u0061\u0302\u0309",
+    "\u0041\u0302\u0303",
+    "\u0061\u0302\u0303",
+    "\u0041\u0323\u0302",
+    "\u0061\u0323\u0302",
+    "\u0041\u0306\u0301",
+    "\u0061\u0306\u0301",
+    "\u0041\u0306\u0300",
+    "\u0061\u0306\u0300",
+    "\u0041\u0306\u0309",
+    "\u0061\u0306\u0309",
+    "\u0041\u0306\u0303",
+    "\u0061\u0306\u0303",
+    "\u0041\u0323\u0306",
+    "\u0061\u0323\u0306",
+    "\u0045\u0323",
+    "\u0065\u0323",
+    "\u0045\u0309",
+    "\u0065\u0309",
+    "\u0045\u0303",
+    "\u0065\u0303",
+    "\u0045\u0302\u0301",
+    "\u0065\u0302\u0301",
+    "\u0045\u0302\u0300",
+    "\u0065\u0302\u0300",
+    "\u0045\u0302\u0309",
+    "\u0065\u0302\u0309",
+    "\u0045\u0302\u0303",
+    "\u0065\u0302\u0303",
+    "\u0045\u0323\u0302",
+    "\u0065\u0323\u0302",
+    "\u0049\u0309",
+    "\u0069\u0309",
+    "\u0049\u0323",
+    "\u0069\u0323",
+    "\u004F\u0323",
+    "\u006F\u0323",
+    "\u004F\u0309",
+    "\u006F\u0309",
+    "\u004F\u0302\u0301",
+    "\u006F\u0302\u0301",
+    "\u004F\u0302\u0300",
+    "\u006F\u0302\u0300",
+    "\u004F\u0302\u0309",
+    "\u006F\u0302\u0309",
+    "\u004F\u0302\u0303",
+    "\u006F\u0302\u0303",
+    "\u004F\u0323\u0302",
+    "\u006F\u0323\u0302",
+    "\u004F\u031B\u0301",
+    "\u006F\u031B\u0301",
+    "\u004F\u031B\u0300",
+    "\u006F\u031B\u0300",
+    "\u004F\u031B\u0309",
+    "\u006F\u031B\u0309",
+    "\u004F\u031B\u0303",
+    "\u006F\u031B\u0303",
+    "\u004F\u031B\u0323",
+    "\u006F\u031B\u0323",
+    "\u0055\u0323",
+    "\u0075\u0323",
+    "\u0055\u0309",
+    "\u0075\u0309",
+    "\u0055\u031B\u0301",
+    "\u0075\u031B\u0301",
+    "\u0055\u031B\u0300",
+    "\u0075\u031B\u0300",
+    "\u0055\u031B\u0309",
+    "\u0075\u031B\u0309",
+    "\u0055\u031B\u0303",
+    "\u0075\u031B\u0303",
+    "\u0055\u031B\u0323",
+    "\u0075\u031B\u0323",
+    "\u0059\u0300",
+    "\u0079\u0300",
+    "\u0059\u0323",
+    "\u0079\u0323",
+    "\u0059\u0309",
+    "\u0079\u0309",
+    "\u0059\u0303",
+    "\u0079\u0303",
+    "\u03B1\u0313",
+    "\u03B1\u0314",
+    "\u03B1\u0313\u0300",
+    "\u03B1\u0314\u0300",
+    "\u03B1\u0313\u0301",
+    "\u03B1\u0314\u0301",
+    "\u03B1\u0313\u0342",
+    "\u03B1\u0314\u0342",
+    "\u0391\u0313",
+    "\u0391\u0314",
+    "\u0391\u0313\u0300",
+    "\u0391\u0314\u0300",
+    "\u0391\u0313\u0301",
+    "\u0391\u0314\u0301",
+    "\u0391\u0313\u0342",
+    "\u0391\u0314\u0342",
+    "\u03B5\u0313",
+    "\u03B5\u0314",
+    "\u03B5\u0313\u0300",
+    "\u03B5\u0314\u0300",
+    "\u03B5\u0313\u0301",
+    "\u03B5\u0314\u0301",
+    "\u0395\u0313",
+    "\u0395\u0314",
+    "\u0395\u0313\u0300",
+    "\u0395\u0314\u0300",
+    "\u0395\u0313\u0301",
+    "\u0395\u0314\u0301",
+    "\u03B7\u0313",
+    "\u03B7\u0314",
+    "\u03B7\u0313\u0300",
+    "\u03B7\u0314\u0300",
+    "\u03B7\u0313\u0301",
+    "\u03B7\u0314\u0301",
+    "\u03B7\u0313\u0342",
+    "\u03B7\u0314\u0342",
+    "\u0397\u0313",
+    "\u0397\u0314",
+    "\u0397\u0313\u0300",
+    "\u0397\u0314\u0300",
+    "\u0397\u0313\u0301",
+    "\u0397\u0314\u0301",
+    "\u0397\u0313\u0342",
+    "\u0397\u0314\u0342",
+    "\u03B9\u0313",
+    "\u03B9\u0314",
+    "\u03B9\u0313\u0300",
+    "\u03B9\u0314\u0300",
+    "\u03B9\u0313\u0301",
+    "\u03B9\u0314\u0301",
+    "\u03B9\u0313\u0342",
+    "\u03B9\u0314\u0342",
+    "\u0399\u0313",
+    "\u0399\u0314",
+    "\u0399\u0313\u0300",
+    "\u0399\u0314\u0300",
+    "\u0399\u0313\u0301",
+    "\u0399\u0314\u0301",
+    "\u0399\u0313\u0342",
+    "\u0399\u0314\u0342",
+    "\u03BF\u0313",
+    "\u03BF\u0314",
+    "\u03BF\u0313\u0300",
+    "\u03BF\u0314\u0300",
+    "\u03BF\u0313\u0301",
+    "\u03BF\u0314\u0301",
+    "\u039F\u0313",
+    "\u039F\u0314",
+    "\u039F\u0313\u0300",
+    "\u039F\u0314\u0300",
+    "\u039F\u0313\u0301",
+    "\u039F\u0314\u0301",
+    "\u03C5\u0313",
+    "\u03C5\u0314",
+    "\u03C5\u0313\u0300",
+    "\u03C5\u0314\u0300",
+    "\u03C5\u0313\u0301",
+    "\u03C5\u0314\u0301",
+    "\u03C5\u0313\u0342",
+    "\u03C5\u0314\u0342",
+    "\u03A5\u0314",
+    "\u03A5\u0314\u0300",
+    "\u03A5\u0314\u0301",
+    "\u03A5\u0314\u0342",
+    "\u03C9\u0313",
+    "\u03C9\u0314",
+    "\u03C9\u0313\u0300",
+    "\u03C9\u0314\u0300",
+    "\u03C9\u0313\u0301",
+    "\u03C9\u0314\u0301",
+    "\u03C9\u0313\u0342",
+    "\u03C9\u0314\u0342",
+    "\u03A9\u0313",
+    "\u03A9\u0314",
+    "\u03A9\u0313\u0300",
+    "\u03A9\u0314\u0300",
+    "\u03A9\u0313\u0301",
+    "\u03A9\u0314\u0301",
+    "\u03A9\u0313\u0342",
+    "\u03A9\u0314\u0342",
+    "\u03B1\u0300",
+    "\u03B5\u0300",
+    "\u03B7\u0300",
+    "\u03B9\u0300",
+    "\u03BF\u0300",
+    "\u03C5\u0300",
+    "\u03C9\u0300",
+    "\u03B1\u0313\u0345",
+    "\u03B1\u0314\u0345",
+    "\u03B1\u0313\u0300\u0345",
+    "\u03B1\u0314\u0300\u0345",
+    "\u03B1\u0313\u0301\u0345",
+    "\u03B1\u0314\u0301\u0345",
+    "\u03B1\u0313\u0342\u0345",
+    "\u03B1\u0314\u0342\u0345",
+    "\u0391\u0313\u0345",
+    "\u0391\u0314\u0345",
+    "\u0391\u0313\u0300\u0345",
+    "\u0391\u0314\u0300\u0345",
+    "\u0391\u0313\u0301\u0345",
+    "\u0391\u0314\u0301\u0345",
+    "\u0391\u0313\u0342\u0345",
+    "\u0391\u0314\u0342\u0345",
+    "\u03B7\u0313\u0345",
+    "\u03B7\u0314\u0345",
+    "\u03B7\u0313\u0300\u0345",
+    "\u03B7\u0314\u0300\u0345",
+    "\u03B7\u0313\u0301\u0345",
+    "\u03B7\u0314\u0301\u0345",
+    "\u03B7\u0313\u0342\u0345",
+    "\u03B7\u0314\u0342\u0345",
+    "\u0397\u0313\u0345",
+    "\u0397\u0314\u0345",
+    "\u0397\u0313\u0300\u0345",
+    "\u0397\u0314\u0300\u0345",
+    "\u0397\u0313\u0301\u0345",
+    "\u0397\u0314\u0301\u0345",
+    "\u0397\u0313\u0342\u0345",
+    "\u0397\u0314\u0342\u0345",
+    "\u03C9\u0313\u0345",
+    "\u03C9\u0314\u0345",
+    "\u03C9\u0313\u0300\u0345",
+    "\u03C9\u0314\u0300\u0345",
+    "\u03C9\u0313\u0301\u0345",
+    "\u03C9\u0314\u0301\u0345",
+    "\u03C9\u0313\u0342\u0345",
+    "\u03C9\u0314\u0342\u0345",
+    "\u03A9\u0313\u0345",
+    "\u03A9\u0314\u0345",
+    "\u03A9\u0313\u0300\u0345",
+    "\u03A9\u0314\u0300\u0345",
+    "\u03A9\u0313\u0301\u0345",
+    "\u03A9\u0314\u0301\u0345",
+    "\u03A9\u0313\u0342\u0345",
+    "\u03A9\u0314\u0342\u0345",
+    "\u03B1\u0306",
+    "\u03B1\u0304",
+    "\u03B1\u0300\u0345",
+    "\u03B1\u0345",
+    "\u03B1\u0301\u0345",
+    "\u03B1\u0342",
+    "\u03B1\u0342\u0345",
+    "\u0391\u0306",
+    "\u0391\u0304",
+    "\u0391\u0300",
+    "\u0391\u0345",
+    "\u0020\u0313",
+    "\u03B9",
+    "\u0020\u0342",
+    "\u0020\u0308\u0342",
+    "\u03B7\u0300\u0345",
+    "\u03B7\u0345",
+    "\u03B7\u0301\u0345",
+    "\u03B7\u0342",
+    "\u03B7\u0342\u0345",
+    "\u0395\u0300",
+    "\u0397\u0300",
+    "\u0397\u0345",
+    "\u0020\u0313\u0300",
+    "\u0020\u0313\u0301",
+    "\u0020\u0313\u0342",
+    "\u03B9\u0306",
+    "\u03B9\u0304",
+    "\u03B9\u0308\u0300",
+    "\u03B9\u0342",
+    "\u03B9\u0308\u0342",
+    "\u0399\u0306",
+    "\u0399\u0304",
+    "\u0399\u0300",
+    "\u0020\u0314\u0300",
+    "\u0020\u0314\u0301",
+    "\u0020\u0314\u0342",
+    "\u03C5\u0306",
+    "\u03C5\u0304",
+    "\u03C5\u0308\u0300",
+    "\u03C1\u0313",
+    "\u03C1\u0314",
+    "\u03C5\u0342",
+    "\u03C5\u0308\u0342",
+    "\u03A5\u0306",
+    "\u03A5\u0304",
+    "\u03A5\u0300",
+    "\u03A1\u0314",
+    "\u0020\u0308\u0300",
+    "\u0060",
+    "\u03C9\u0300\u0345",
+    "\u03C9\u0345",
+    "\u03C9\u0301\u0345",
+    "\u03C9\u0342",
+    "\u03C9\u0342\u0345",
+    "\u039F\u0300",
+    "\u03A9\u0300",
+    "\u03A9\u0345",
+    "\u0020\u0314",
+    "\u2010",
+    "\u0020\u0333",
+    "\u002E",
+    "\u002E\u002E",
+    "\u002E\u002E\u002E",
+    "\u2032\u2032",
+    "\u2032\u2032\u2032",
+    "\u2035\u2035",
+    "\u2035\u2035\u2035",
+    "\u0021\u0021",
+    "\u0020\u0305",
+    "\u003F\u003F",
+    "\u003F\u0021",
+    "\u0021\u003F",
+    "\u2032\u2032\u2032\u2032",
+    "\u0030",
+    "\u0069",
+    "\u0034",
+    "\u0035",
+    "\u0036",
+    "\u0037",
+    "\u0038",
+    "\u0039",
+    "\u002B",
+    "\u2212",
+    "\u003D",
+    "\u0028",
+    "\u0029",
+    "\u006E",
+    "\u0052\u0073",
+    "\u0061\u002F\u0063",
+    "\u0061\u002F\u0073",
+    "\u0043",
+    "\u00B0\u0043",
+    "\u0063\u002F\u006F",
+    "\u0063\u002F\u0075",
+    "\u0190",
+    "\u00B0\u0046",
+    "\u0067",
+    "\u0048",
+    "\u0127",
+    "\u0049",
+    "\u004C",
+    "\u004E",
+    "\u004E\u006F",
+    "\u0050",
+    "\u0051",
+    "\u0052",
+    "\u0053\u004D",
+    "\u0054\u0045\u004C",
+    "\u0054\u004D",
+    "\u005A",
+    "\u03A9",
+    "\u004B",
+    "\u0042",
+    "\u0065",
+    "\u0045",
+    "\u0046",
+    "\u004D",
+    "\u05D0",
+    "\u05D1",
+    "\u05D2",
+    "\u05D3",
+    "\u03B3",
+    "\u0393",
+    "\u03A0",
+    "\u2211",
+    "\u0044",
+    "\u0064",
+    "\u0031\u2044\u0033",
+    "\u0032\u2044\u0033",
+    "\u0031\u2044\u0035",
+    "\u0032\u2044\u0035",
+    "\u0033\u2044\u0035",
+    "\u0034\u2044\u0035",
+    "\u0031\u2044\u0036",
+    "\u0035\u2044\u0036",
+    "\u0031\u2044\u0038",
+    "\u0033\u2044\u0038",
+    "\u0035\u2044\u0038",
+    "\u0037\u2044\u0038",
+    "\u0031\u2044",
+    "\u0049\u0049",
+    "\u0049\u0049\u0049",
+    "\u0049\u0056",
+    "\u0056",
+    "\u0056\u0049",
+    "\u0056\u0049\u0049",
+    "\u0056\u0049\u0049\u0049",
+    "\u0049\u0058",
+    "\u0058",
+    "\u0058\u0049",
+    "\u0058\u0049\u0049",
+    "\u0069\u0069",
+    "\u0069\u0069\u0069",
+    "\u0069\u0076",
+    "\u0076",
+    "\u0076\u0069",
+    "\u0076\u0069\u0069",
+    "\u0076\u0069\u0069\u0069",
+    "\u0069\u0078",
+    "\u0078\u0069",
+    "\u0078\u0069\u0069",
+    "\u0063",
+    "\u006D",
+    "\u2190\u0338",
+    "\u2192\u0338",
+    "\u2194\u0338",
+    "\u21D0\u0338",
+    "\u21D4\u0338",
+    "\u21D2\u0338",
+    "\u2203\u0338",
+    "\u2208\u0338",
+    "\u220B\u0338",
+    "\u2223\u0338",
+    "\u2225\u0338",
+    "\u222B\u222B",
+    "\u222B\u222B\u222B",
+    "\u222E\u222E",
+    "\u222E\u222E\u222E",
+    "\u223C\u0338",
+    "\u2243\u0338",
+    "\u2245\u0338",
+    "\u2248\u0338",
+    "\u003D\u0338",
+    "\u2261\u0338",
+    "\u224D\u0338",
+    "\u003C\u0338",
+    "\u003E\u0338",
+    "\u2264\u0338",
+    "\u2265\u0338",
+    "\u2272\u0338",
+    "\u2273\u0338",
+    "\u2276\u0338",
+    "\u2277\u0338",
+    "\u227A\u0338",
+    "\u227B\u0338",
+    "\u2282\u0338",
+    "\u2283\u0338",
+    "\u2286\u0338",
+    "\u2287\u0338",
+    "\u22A2\u0338",
+    "\u22A8\u0338",
+    "\u22A9\u0338",
+    "\u22AB\u0338",
+    "\u227C\u0338",
+    "\u227D\u0338",
+    "\u2291\u0338",
+    "\u2292\u0338",
+    "\u22B2\u0338",
+    "\u22B3\u0338",
+    "\u22B4\u0338",
+    "\u22B5\u0338",
+    "\u3008",
+    "\u3009",
+    "\u0031\u0030",
+    "\u0031\u0031",
+    "\u0031\u0032",
+    "\u0031\u0033",
+    "\u0031\u0034",
+    "\u0031\u0035",
+    "\u0031\u0036",
+    "\u0031\u0037",
+    "\u0031\u0038",
+    "\u0031\u0039",
+    "\u0032\u0030",
+    "\u0028\u0031\u0029",
+    "\u0028\u0032\u0029",
+    "\u0028\u0033\u0029",
+    "\u0028\u0034\u0029",
+    "\u0028\u0035\u0029",
+    "\u0028\u0036\u0029",
+    "\u0028\u0037\u0029",
+    "\u0028\u0038\u0029",
+    "\u0028\u0039\u0029",
+    "\u0028\u0031\u0030\u0029",
+    "\u0028\u0031\u0031\u0029",
+    "\u0028\u0031\u0032\u0029",
+    "\u0028\u0031\u0033\u0029",
+    "\u0028\u0031\u0034\u0029",
+    "\u0028\u0031\u0035\u0029",
+    "\u0028\u0031\u0036\u0029",
+    "\u0028\u0031\u0037\u0029",
+    "\u0028\u0031\u0038\u0029",
+    "\u0028\u0031\u0039\u0029",
+    "\u0028\u0032\u0030\u0029",
+    "\u0031\u002E",
+    "\u0032\u002E",
+    "\u0033\u002E",
+    "\u0034\u002E",
+    "\u0035\u002E",
+    "\u0036\u002E",
+    "\u0037\u002E",
+    "\u0038\u002E",
+    "\u0039\u002E",
+    "\u0031\u0030\u002E",
+    "\u0031\u0031\u002E",
+    "\u0031\u0032\u002E",
+    "\u0031\u0033\u002E",
+    "\u0031\u0034\u002E",
+    "\u0031\u0035\u002E",
+    "\u0031\u0036\u002E",
+    "\u0031\u0037\u002E",
+    "\u0031\u0038\u002E",
+    "\u0031\u0039\u002E",
+    "\u0032\u0030\u002E",
+    "\u0028\u0061\u0029",
+    "\u0028\u0062\u0029",
+    "\u0028\u0063\u0029",
+    "\u0028\u0064\u0029",
+    "\u0028\u0065\u0029",
+    "\u0028\u0066\u0029",
+    "\u0028\u0067\u0029",
+    "\u0028\u0068\u0029",
+    "\u0028\u0069\u0029",
+    "\u0028\u006A\u0029",
+    "\u0028\u006B\u0029",
+    "\u0028\u006C\u0029",
+    "\u0028\u006D\u0029",
+    "\u0028\u006E\u0029",
+    "\u0028\u006F\u0029",
+    "\u0028\u0070\u0029",
+    "\u0028\u0071\u0029",
+    "\u0028\u0072\u0029",
+    "\u0028\u0073\u0029",
+    "\u0028\u0074\u0029",
+    "\u0028\u0075\u0029",
+    "\u0028\u0076\u0029",
+    "\u0028\u0077\u0029",
+    "\u0028\u0078\u0029",
+    "\u0028\u0079\u0029",
+    "\u0028\u007A\u0029",
+    "\u0041",
+    "\u0047",
+    "\u004A",
+    "\u004F",
+    "\u0053",
+    "\u0054",
+    "\u0055",
+    "\u0057",
+    "\u0059",
+    "\u0062",
+    "\u0066",
+    "\u006B",
+    "\u0070",
+    "\u0071",
+    "\u0074",
+    "\u0075",
+    "\u007A",
+    "\u222B\u222B\u222B\u222B",
+    "\u003A\u003A\u003D",
+    "\u003D\u003D",
+    "\u003D\u003D\u003D",
+    "\u2ADD\u0338",
+    "\u6BCD",
+    "\u9F9F",
+    "\u4E00",
+    "\u4E28",
+    "\u4E36",
+    "\u4E3F",
+    "\u4E59",
+    "\u4E85",
+    "\u4E8C",
+    "\u4EA0",
+    "\u4EBA",
+    "\u513F",
+    "\u5165",
+    "\u516B",
+    "\u5182",
+    "\u5196",
+    "\u51AB",
+    "\u51E0",
+    "\u51F5",
+    "\u5200",
+    "\u529B",
+    "\u52F9",
+    "\u5315",
+    "\u531A",
+    "\u5338",
+    "\u5341",
+    "\u535C",
+    "\u5369",
+    "\u5382",
+    "\u53B6",
+    "\u53C8",
+    "\u53E3",
+    "\u56D7",
+    "\u571F",
+    "\u58EB",
+    "\u5902",
+    "\u590A",
+    "\u5915",
+    "\u5927",
+    "\u5973",
+    "\u5B50",
+    "\u5B80",
+    "\u5BF8",
+    "\u5C0F",
+    "\u5C22",
+    "\u5C38",
+    "\u5C6E",
+    "\u5C71",
+    "\u5DDB",
+    "\u5DE5",
+    "\u5DF1",
+    "\u5DFE",
+    "\u5E72",
+    "\u5E7A",
+    "\u5E7F",
+    "\u5EF4",
+    "\u5EFE",
+    "\u5F0B",
+    "\u5F13",
+    "\u5F50",
+    "\u5F61",
+    "\u5F73",
+    "\u5FC3",
+    "\u6208",
+    "\u6236",
+    "\u624B",
+    "\u652F",
+    "\u6534",
+    "\u6587",
+    "\u6597",
+    "\u65A4",
+    "\u65B9",
+    "\u65E0",
+    "\u65E5",
+    "\u66F0",
+    "\u6708",
+    "\u6728",
+    "\u6B20",
+    "\u6B62",
+    "\u6B79",
+    "\u6BB3",
+    "\u6BCB",
+    "\u6BD4",
+    "\u6BDB",
+    "\u6C0F",
+    "\u6C14",
+    "\u6C34",
+    "\u706B",
+    "\u722A",
+    "\u7236",
+    "\u723B",
+    "\u723F",
+    "\u7247",
+    "\u7259",
+    "\u725B",
+    "\u72AC",
+    "\u7384",
+    "\u7389",
+    "\u74DC",
+    "\u74E6",
+    "\u7518",
+    "\u751F",
+    "\u7528",
+    "\u7530",
+    "\u758B",
+    "\u7592",
+    "\u7676",
+    "\u767D",
+    "\u76AE",
+    "\u76BF",
+    "\u76EE",
+    "\u77DB",
+    "\u77E2",
+    "\u77F3",
+    "\u793A",
+    "\u79B8",
+    "\u79BE",
+    "\u7A74",
+    "\u7ACB",
+    "\u7AF9",
+    "\u7C73",
+    "\u7CF8",
+    "\u7F36",
+    "\u7F51",
+    "\u7F8A",
+    "\u7FBD",
+    "\u8001",
+    "\u800C",
+    "\u8012",
+    "\u8033",
+    "\u807F",
+    "\u8089",
+    "\u81E3",
+    "\u81EA",
+    "\u81F3",
+    "\u81FC",
+    "\u820C",
+    "\u821B",
+    "\u821F",
+    "\u826E",
+    "\u8272",
+    "\u8278",
+    "\u864D",
+    "\u866B",
+    "\u8840",
+    "\u884C",
+    "\u8863",
+    "\u897E",
+    "\u898B",
+    "\u89D2",
+    "\u8A00",
+    "\u8C37",
+    "\u8C46",
+    "\u8C55",
+    "\u8C78",
+    "\u8C9D",
+    "\u8D64",
+    "\u8D70",
+    "\u8DB3",
+    "\u8EAB",
+    "\u8ECA",
+    "\u8F9B",
+    "\u8FB0",
+    "\u8FB5",
+    "\u9091",
+    "\u9149",
+    "\u91C6",
+    "\u91CC",
+    "\u91D1",
+    "\u9577",
+    "\u9580",
+    "\u961C",
+    "\u96B6",
+    "\u96B9",
+    "\u96E8",
+    "\u9751",
+    "\u975E",
+    "\u9762",
+    "\u9769",
+    "\u97CB",
+    "\u97ED",
+    "\u97F3",
+    "\u9801",
+    "\u98A8",
+    "\u98DB",
+    "\u98DF",
+    "\u9996",
+    "\u9999",
+    "\u99AC",
+    "\u9AA8",
+    "\u9AD8",
+    "\u9ADF",
+    "\u9B25",
+    "\u9B2F",
+    "\u9B32",
+    "\u9B3C",
+    "\u9B5A",
+    "\u9CE5",
+    "\u9E75",
+    "\u9E7F",
+    "\u9EA5",
+    "\u9EBB",
+    "\u9EC3",
+    "\u9ECD",
+    "\u9ED1",
+    "\u9EF9",
+    "\u9EFD",
+    "\u9F0E",
+    "\u9F13",
+    "\u9F20",
+    "\u9F3B",
+    "\u9F4A",
+    "\u9F52",
+    "\u9F8D",
+    "\u9F9C",
+    "\u9FA0",
+    "\u3012",
+    "\u5344",
+    "\u5345",
+    "\u304B\u3099",
+    "\u304D\u3099",
+    "\u304F\u3099",
+    "\u3051\u3099",
+    "\u3053\u3099",
+    "\u3055\u3099",
+    "\u3057\u3099",
+    "\u3059\u3099",
+    "\u305B\u3099",
+    "\u305D\u3099",
+    "\u305F\u3099",
+    "\u3061\u3099",
+    "\u3064\u3099",
+    "\u3066\u3099",
+    "\u3068\u3099",
+    "\u306F\u3099",
+    "\u306F\u309A",
+    "\u3072\u3099",
+    "\u3072\u309A",
+    "\u3075\u3099",
+    "\u3075\u309A",
+    "\u3078\u3099",
+    "\u3078\u309A",
+    "\u307B\u3099",
+    "\u307B\u309A",
+    "\u3046\u3099",
+    "\u0020\u3099",
+    "\u0020\u309A",
+    "\u309D\u3099",
+    "\u3088\u308A",
+    "\u30AB\u3099",
+    "\u30AD\u3099",
+    "\u30AF\u3099",
+    "\u30B1\u3099",
+    "\u30B3\u3099",
+    "\u30B5\u3099",
+    "\u30B7\u3099",
+    "\u30B9\u3099",
+    "\u30BB\u3099",
+    "\u30BD\u3099",
+    "\u30BF\u3099",
+    "\u30C1\u3099",
+    "\u30C4\u3099",
+    "\u30C6\u3099",
+    "\u30C8\u3099",
+    "\u30CF\u3099",
+    "\u30CF\u309A",
+    "\u30D2\u3099",
+    "\u30D2\u309A",
+    "\u30D5\u3099",
+    "\u30D5\u309A",
+    "\u30D8\u3099",
+    "\u30D8\u309A",
+    "\u30DB\u3099",
+    "\u30DB\u309A",
+    "\u30A6\u3099",
+    "\u30EF\u3099",
+    "\u30F0\u3099",
+    "\u30F1\u3099",
+    "\u30F2\u3099",
+    "\u30FD\u3099",
+    "\u30B3\u30C8",
+    "\u1100",
+    "\u1101",
+    "\u11AA",
+    "\u1102",
+    "\u11AC",
+    "\u11AD",
+    "\u1103",
+    "\u1104",
+    "\u1105",
+    "\u11B0",
+    "\u11B1",
+    "\u11B2",
+    "\u11B3",
+    "\u11B4",
+    "\u11B5",
+    "\u111A",
+    "\u1106",
+    "\u1107",
+    "\u1108",
+    "\u1121",
+    "\u1109",
+    "\u110A",
+    "\u110B",
+    "\u110C",
+    "\u110D",
+    "\u110E",
+    "\u110F",
+    "\u1110",
+    "\u1111",
+    "\u1112",
+    "\u1161",
+    "\u1162",
+    "\u1163",
+    "\u1164",
+    "\u1165",
+    "\u1166",
+    "\u1167",
+    "\u1168",
+    "\u1169",
+    "\u116A",
+    "\u116B",
+    "\u116C",
+    "\u116D",
+    "\u116E",
+    "\u116F",
+    "\u1170",
+    "\u1171",
+    "\u1172",
+    "\u1173",
+    "\u1174",
+    "\u1175",
+    "\u1160",
+    "\u1114",
+    "\u1115",
+    "\u11C7",
+    "\u11C8",
+    "\u11CC",
+    "\u11CE",
+    "\u11D3",
+    "\u11D7",
+    "\u11D9",
+    "\u111C",
+    "\u11DD",
+    "\u11DF",
+    "\u111D",
+    "\u111E",
+    "\u1120",
+    "\u1122",
+    "\u1123",
+    "\u1127",
+    "\u1129",
+    "\u112B",
+    "\u112C",
+    "\u112D",
+    "\u112E",
+    "\u112F",
+    "\u1132",
+    "\u1136",
+    "\u1140",
+    "\u1147",
+    "\u114C",
+    "\u11F1",
+    "\u11F2",
+    "\u1157",
+    "\u1158",
+    "\u1159",
+    "\u1184",
+    "\u1185",
+    "\u1188",
+    "\u1191",
+    "\u1192",
+    "\u1194",
+    "\u119E",
+    "\u11A1",
+    "\u4E09",
+    "\u56DB",
+    "\u4E0A",
+    "\u4E2D",
+    "\u4E0B",
+    "\u7532",
+    "\u4E19",
+    "\u4E01",
+    "\u5929",
+    "\u5730",
+    "\u0028\u1100\u0029",
+    "\u0028\u1102\u0029",
+    "\u0028\u1103\u0029",
+    "\u0028\u1105\u0029",
+    "\u0028\u1106\u0029",
+    "\u0028\u1107\u0029",
+    "\u0028\u1109\u0029",
+    "\u0028\u110B\u0029",
+    "\u0028\u110C\u0029",
+    "\u0028\u110E\u0029",
+    "\u0028\u110F\u0029",
+    "\u0028\u1110\u0029",
+    "\u0028\u1111\u0029",
+    "\u0028\u1112\u0029",
+    "\u0028\u1100\u1161\u0029",
+    "\u0028\u1102\u1161\u0029",
+    "\u0028\u1103\u1161\u0029",
+    "\u0028\u1105\u1161\u0029",
+    "\u0028\u1106\u1161\u0029",
+    "\u0028\u1107\u1161\u0029",
+    "\u0028\u1109\u1161\u0029",
+    "\u0028\u110B\u1161\u0029",
+    "\u0028\u110C\u1161\u0029",
+    "\u0028\u110E\u1161\u0029",
+    "\u0028\u110F\u1161\u0029",
+    "\u0028\u1110\u1161\u0029",
+    "\u0028\u1111\u1161\u0029",
+    "\u0028\u1112\u1161\u0029",
+    "\u0028\u110C\u116E\u0029",
+    "\u0028\u4E00\u0029",
+    "\u0028\u4E8C\u0029",
+    "\u0028\u4E09\u0029",
+    "\u0028\u56DB\u0029",
+    "\u0028\u4E94\u0029",
+    "\u0028\u516D\u0029",
+    "\u0028\u4E03\u0029",
+    "\u0028\u516B\u0029",
+    "\u0028\u4E5D\u0029",
+    "\u0028\u5341\u0029",
+    "\u0028\u6708\u0029",
+    "\u0028\u706B\u0029",
+    "\u0028\u6C34\u0029",
+    "\u0028\u6728\u0029",
+    "\u0028\u91D1\u0029",
+    "\u0028\u571F\u0029",
+    "\u0028\u65E5\u0029",
+    "\u0028\u682A\u0029",
+    "\u0028\u6709\u0029",
+    "\u0028\u793E\u0029",
+    "\u0028\u540D\u0029",
+    "\u0028\u7279\u0029",
+    "\u0028\u8CA1\u0029",
+    "\u0028\u795D\u0029",
+    "\u0028\u52B4\u0029",
+    "\u0028\u4EE3\u0029",
+    "\u0028\u547C\u0029",
+    "\u0028\u5B66\u0029",
+    "\u0028\u76E3\u0029",
+    "\u0028\u4F01\u0029",
+    "\u0028\u8CC7\u0029",
+    "\u0028\u5354\u0029",
+    "\u0028\u796D\u0029",
+    "\u0028\u4F11\u0029",
+    "\u0028\u81EA\u0029",
+    "\u0028\u81F3\u0029",
+    "\u0032\u0031",
+    "\u0032\u0032",
+    "\u0032\u0033",
+    "\u0032\u0034",
+    "\u0032\u0035",
+    "\u0032\u0036",
+    "\u0032\u0037",
+    "\u0032\u0038",
+    "\u0032\u0039",
+    "\u0033\u0030",
+    "\u0033\u0031",
+    "\u0033\u0032",
+    "\u0033\u0033",
+    "\u0033\u0034",
+    "\u0033\u0035",
+    "\u1100\u1161",
+    "\u1102\u1161",
+    "\u1103\u1161",
+    "\u1105\u1161",
+    "\u1106\u1161",
+    "\u1107\u1161",
+    "\u1109\u1161",
+    "\u110B\u1161",
+    "\u110C\u1161",
+    "\u110E\u1161",
+    "\u110F\u1161",
+    "\u1110\u1161",
+    "\u1111\u1161",
+    "\u1112\u1161",
+    "\u4E94",
+    "\u516D",
+    "\u4E03",
+    "\u4E5D",
+    "\u682A",
+    "\u6709",
+    "\u793E",
+    "\u540D",
+    "\u7279",
+    "\u8CA1",
+    "\u795D",
+    "\u52B4",
+    "\u79D8",
+    "\u7537",
+    "\u9069",
+    "\u512A",
+    "\u5370",
+    "\u6CE8",
+    "\u9805",
+    "\u4F11",
+    "\u5199",
+    "\u6B63",
+    "\u5DE6",
+    "\u53F3",
+    "\u533B",
+    "\u5B97",
+    "\u5B66",
+    "\u76E3",
+    "\u4F01",
+    "\u8CC7",
+    "\u5354",
+    "\u591C",
+    "\u0033\u0036",
+    "\u0033\u0037",
+    "\u0033\u0038",
+    "\u0033\u0039",
+    "\u0034\u0030",
+    "\u0034\u0031",
+    "\u0034\u0032",
+    "\u0034\u0033",
+    "\u0034\u0034",
+    "\u0034\u0035",
+    "\u0034\u0036",
+    "\u0034\u0037",
+    "\u0034\u0038",
+    "\u0034\u0039",
+    "\u0035\u0030",
+    "\u0031\u6708",
+    "\u0032\u6708",
+    "\u0033\u6708",
+    "\u0034\u6708",
+    "\u0035\u6708",
+    "\u0036\u6708",
+    "\u0037\u6708",
+    "\u0038\u6708",
+    "\u0039\u6708",
+    "\u0031\u0030\u6708",
+    "\u0031\u0031\u6708",
+    "\u0031\u0032\u6708",
+    "\u30A2",
+    "\u30A4",
+    "\u30A6",
+    "\u30A8",
+    "\u30AA",
+    "\u30AB",
+    "\u30AD",
+    "\u30AF",
+    "\u30B1",
+    "\u30B3",
+    "\u30B5",
+    "\u30B7",
+    "\u30B9",
+    "\u30BB",
+    "\u30BD",
+    "\u30BF",
+    "\u30C1",
+    "\u30C4",
+    "\u30C6",
+    "\u30C8",
+    "\u30CA",
+    "\u30CB",
+    "\u30CC",
+    "\u30CD",
+    "\u30CE",
+    "\u30CF",
+    "\u30D2",
+    "\u30D5",
+    "\u30D8",
+    "\u30DB",
+    "\u30DE",
+    "\u30DF",
+    "\u30E0",
+    "\u30E1",
+    "\u30E2",
+    "\u30E4",
+    "\u30E6",
+    "\u30E8",
+    "\u30E9",
+    "\u30EA",
+    "\u30EB",
+    "\u30EC",
+    "\u30ED",
+    "\u30EF",
+    "\u30F0",
+    "\u30F1",
+    "\u30F2",
+    "\u30A2\u30CF\u309A\u30FC\u30C8",
+    "\u30A2\u30EB\u30D5\u30A1",
+    "\u30A2\u30F3\u30D8\u309A\u30A2",
+    "\u30A2\u30FC\u30EB",
+    "\u30A4\u30CB\u30F3\u30AF\u3099",
+    "\u30A4\u30F3\u30C1",
+    "\u30A6\u30A9\u30F3",
+    "\u30A8\u30B9\u30AF\u30FC\u30C8\u3099",
+    "\u30A8\u30FC\u30AB\u30FC",
+    "\u30AA\u30F3\u30B9",
+    "\u30AA\u30FC\u30E0",
+    "\u30AB\u30A4\u30EA",
+    "\u30AB\u30E9\u30C3\u30C8",
+    "\u30AB\u30ED\u30EA\u30FC",
+    "\u30AB\u3099\u30ED\u30F3",
+    "\u30AB\u3099\u30F3\u30DE",
+    "\u30AD\u3099\u30AB\u3099",
+    "\u30AD\u3099\u30CB\u30FC",
+    "\u30AD\u30E5\u30EA\u30FC",
+    "\u30AD\u3099\u30EB\u30BF\u3099\u30FC",
+    "\u30AD\u30ED",
+    "\u30AD\u30ED\u30AF\u3099\u30E9\u30E0",
+    "\u30AD\u30ED\u30E1\u30FC\u30C8\u30EB",
+    "\u30AD\u30ED\u30EF\u30C3\u30C8",
+    "\u30AF\u3099\u30E9\u30E0",
+    "\u30AF\u3099\u30E9\u30E0\u30C8\u30F3",
+    "\u30AF\u30EB\u30BB\u3099\u30A4\u30ED",
+    "\u30AF\u30ED\u30FC\u30CD",
+    "\u30B1\u30FC\u30B9",
+    "\u30B3\u30EB\u30CA",
+    "\u30B3\u30FC\u30DB\u309A",
+    "\u30B5\u30A4\u30AF\u30EB",
+    "\u30B5\u30F3\u30C1\u30FC\u30E0",
+    "\u30B7\u30EA\u30F3\u30AF\u3099",
+    "\u30BB\u30F3\u30C1",
+    "\u30BB\u30F3\u30C8",
+    "\u30BF\u3099\u30FC\u30B9",
+    "\u30C6\u3099\u30B7",
+    "\u30C8\u3099\u30EB",
+    "\u30C8\u30F3",
+    "\u30CA\u30CE",
+    "\u30CE\u30C3\u30C8",
+    "\u30CF\u30A4\u30C4",
+    "\u30CF\u309A\u30FC\u30BB\u30F3\u30C8",
+    "\u30CF\u309A\u30FC\u30C4",
+    "\u30CF\u3099\u30FC\u30EC\u30EB",
+    "\u30D2\u309A\u30A2\u30B9\u30C8\u30EB",
+    "\u30D2\u309A\u30AF\u30EB",
+    "\u30D2\u309A\u30B3",
+    "\u30D2\u3099\u30EB",
+    "\u30D5\u30A1\u30E9\u30C3\u30C8\u3099",
+    "\u30D5\u30A3\u30FC\u30C8",
+    "\u30D5\u3099\u30C3\u30B7\u30A7\u30EB",
+    "\u30D5\u30E9\u30F3",
+    "\u30D8\u30AF\u30BF\u30FC\u30EB",
+    "\u30D8\u309A\u30BD",
+    "\u30D8\u309A\u30CB\u30D2",
+    "\u30D8\u30EB\u30C4",
+    "\u30D8\u309A\u30F3\u30B9",
+    "\u30D8\u309A\u30FC\u30B7\u3099",
+    "\u30D8\u3099\u30FC\u30BF",
+    "\u30DB\u309A\u30A4\u30F3\u30C8",
+    "\u30DB\u3099\u30EB\u30C8",
+    "\u30DB\u30F3",
+    "\u30DB\u309A\u30F3\u30C8\u3099",
+    "\u30DB\u30FC\u30EB",
+    "\u30DB\u30FC\u30F3",
+    "\u30DE\u30A4\u30AF\u30ED",
+    "\u30DE\u30A4\u30EB",
+    "\u30DE\u30C3\u30CF",
+    "\u30DE\u30EB\u30AF",
+    "\u30DE\u30F3\u30B7\u30E7\u30F3",
+    "\u30DF\u30AF\u30ED\u30F3",
+    "\u30DF\u30EA",
+    "\u30DF\u30EA\u30CF\u3099\u30FC\u30EB",
+    "\u30E1\u30AB\u3099",
+    "\u30E1\u30AB\u3099\u30C8\u30F3",
+    "\u30E1\u30FC\u30C8\u30EB",
+    "\u30E4\u30FC\u30C8\u3099",
+    "\u30E4\u30FC\u30EB",
+    "\u30E6\u30A2\u30F3",
+    "\u30EA\u30C3\u30C8\u30EB",
+    "\u30EA\u30E9",
+    "\u30EB\u30D2\u309A\u30FC",
+    "\u30EB\u30FC\u30D5\u3099\u30EB",
+    "\u30EC\u30E0",
+    "\u30EC\u30F3\u30C8\u30B1\u3099\u30F3",
+    "\u30EF\u30C3\u30C8",
+    "\u0030\u70B9",
+    "\u0031\u70B9",
+    "\u0032\u70B9",
+    "\u0033\u70B9",
+    "\u0034\u70B9",
+    "\u0035\u70B9",
+    "\u0036\u70B9",
+    "\u0037\u70B9",
+    "\u0038\u70B9",
+    "\u0039\u70B9",
+    "\u0031\u0030\u70B9",
+    "\u0031\u0031\u70B9",
+    "\u0031\u0032\u70B9",
+    "\u0031\u0033\u70B9",
+    "\u0031\u0034\u70B9",
+    "\u0031\u0035\u70B9",
+    "\u0031\u0036\u70B9",
+    "\u0031\u0037\u70B9",
+    "\u0031\u0038\u70B9",
+    "\u0031\u0039\u70B9",
+    "\u0032\u0030\u70B9",
+    "\u0032\u0031\u70B9",
+    "\u0032\u0032\u70B9",
+    "\u0032\u0033\u70B9",
+    "\u0032\u0034\u70B9",
+    "\u0068\u0050\u0061",
+    "\u0064\u0061",
+    "\u0041\u0055",
+    "\u0062\u0061\u0072",
+    "\u006F\u0056",
+    "\u0070\u0063",
+    "\u5E73\u6210",
+    "\u662D\u548C",
+    "\u5927\u6B63",
+    "\u660E\u6CBB",
+    "\u682A\u5F0F\u4F1A\u793E",
+    "\u0070\u0041",
+    "\u006E\u0041",
+    "\u03BC\u0041",
+    "\u006D\u0041",
+    "\u006B\u0041",
+    "\u004B\u0042",
+    "\u004D\u0042",
+    "\u0047\u0042",
+    "\u0063\u0061\u006C",
+    "\u006B\u0063\u0061\u006C",
+    "\u0070\u0046",
+    "\u006E\u0046",
+    "\u03BC\u0046",
+    "\u03BC\u0067",
+    "\u006D\u0067",
+    "\u006B\u0067",
+    "\u0048\u007A",
+    "\u006B\u0048\u007A",
+    "\u004D\u0048\u007A",
+    "\u0047\u0048\u007A",
+    "\u0054\u0048\u007A",
+    "\u03BC\u006C",
+    "\u006D\u006C",
+    "\u0064\u006C",
+    "\u006B\u006C",
+    "\u0066\u006D",
+    "\u006E\u006D",
+    "\u03BC\u006D",
+    "\u006D\u006D",
+    "\u0063\u006D",
+    "\u006B\u006D",
+    "\u006D\u006D\u0032",
+    "\u0063\u006D\u0032",
+    "\u006D\u0032",
+    "\u006B\u006D\u0032",
+    "\u006D\u006D\u0033",
+    "\u0063\u006D\u0033",
+    "\u006D\u0033",
+    "\u006B\u006D\u0033",
+    "\u006D\u2215\u0073",
+    "\u006D\u2215\u0073\u0032",
+    "\u0050\u0061",
+    "\u006B\u0050\u0061",
+    "\u004D\u0050\u0061",
+    "\u0047\u0050\u0061",
+    "\u0072\u0061\u0064",
+    "\u0072\u0061\u0064\u2215\u0073",
+    "\u0072\u0061\u0064\u2215\u0073\u0032",
+    "\u0070\u0073",
+    "\u006E\u0073",
+    "\u03BC\u0073",
+    "\u006D\u0073",
+    "\u0070\u0056",
+    "\u006E\u0056",
+    "\u03BC\u0056",
+    "\u006D\u0056",
+    "\u006B\u0056",
+    "\u004D\u0056",
+    "\u0070\u0057",
+    "\u006E\u0057",
+    "\u03BC\u0057",
+    "\u006D\u0057",
+    "\u006B\u0057",
+    "\u004D\u0057",
+    "\u006B\u03A9",
+    "\u004D\u03A9",
+    "\u0061\u002E\u006D\u002E",
+    "\u0042\u0071",
+    "\u0063\u0063",
+    "\u0063\u0064",
+    "\u0043\u2215\u006B\u0067",
+    "\u0043\u006F\u002E",
+    "\u0064\u0042",
+    "\u0047\u0079",
+    "\u0068\u0061",
+    "\u0048\u0050",
+    "\u0069\u006E",
+    "\u004B\u004B",
+    "\u004B\u004D",
+    "\u006B\u0074",
+    "\u006C\u006D",
+    "\u006C\u006E",
+    "\u006C\u006F\u0067",
+    "\u006C\u0078",
+    "\u006D\u0062",
+    "\u006D\u0069\u006C",
+    "\u006D\u006F\u006C",
+    "\u0050\u0048",
+    "\u0070\u002E\u006D\u002E",
+    "\u0050\u0050\u004D",
+    "\u0050\u0052",
+    "\u0073\u0072",
+    "\u0053\u0076",
+    "\u0057\u0062",
+    "\u0031\u65E5",
+    "\u0032\u65E5",
+    "\u0033\u65E5",
+    "\u0034\u65E5",
+    "\u0035\u65E5",
+    "\u0036\u65E5",
+    "\u0037\u65E5",
+    "\u0038\u65E5",
+    "\u0039\u65E5",
+    "\u0031\u0030\u65E5",
+    "\u0031\u0031\u65E5",
+    "\u0031\u0032\u65E5",
+    "\u0031\u0033\u65E5",
+    "\u0031\u0034\u65E5",
+    "\u0031\u0035\u65E5",
+    "\u0031\u0036\u65E5",
+    "\u0031\u0037\u65E5",
+    "\u0031\u0038\u65E5",
+    "\u0031\u0039\u65E5",
+    "\u0032\u0030\u65E5",
+    "\u0032\u0031\u65E5",
+    "\u0032\u0032\u65E5",
+    "\u0032\u0033\u65E5",
+    "\u0032\u0034\u65E5",
+    "\u0032\u0035\u65E5",
+    "\u0032\u0036\u65E5",
+    "\u0032\u0037\u65E5",
+    "\u0032\u0038\u65E5",
+    "\u0032\u0039\u65E5",
+    "\u0033\u0030\u65E5",
+    "\u0033\u0031\u65E5",
+    "\u8C48",
+    "\u66F4",
+    "\u8CC8",
+    "\u6ED1",
+    "\u4E32",
+    "\u53E5",
+    "\u5951",
+    "\u5587",
+    "\u5948",
+    "\u61F6",
+    "\u7669",
+    "\u7F85",
+    "\u863F",
+    "\u87BA",
+    "\u88F8",
+    "\u908F",
+    "\u6A02",
+    "\u6D1B",
+    "\u70D9",
+    "\u73DE",
+    "\u843D",
+    "\u916A",
+    "\u99F1",
+    "\u4E82",
+    "\u5375",
+    "\u6B04",
+    "\u721B",
+    "\u862D",
+    "\u9E1E",
+    "\u5D50",
+    "\u6FEB",
+    "\u85CD",
+    "\u8964",
+    "\u62C9",
+    "\u81D8",
+    "\u881F",
+    "\u5ECA",
+    "\u6717",
+    "\u6D6A",
+    "\u72FC",
+    "\u90CE",
+    "\u4F86",
+    "\u51B7",
+    "\u52DE",
+    "\u64C4",
+    "\u6AD3",
+    "\u7210",
+    "\u76E7",
+    "\u8606",
+    "\u865C",
+    "\u8DEF",
+    "\u9732",
+    "\u9B6F",
+    "\u9DFA",
+    "\u788C",
+    "\u797F",
+    "\u7DA0",
+    "\u83C9",
+    "\u9304",
+    "\u8AD6",
+    "\u58DF",
+    "\u5F04",
+    "\u7C60",
+    "\u807E",
+    "\u7262",
+    "\u78CA",
+    "\u8CC2",
+    "\u96F7",
+    "\u58D8",
+    "\u5C62",
+    "\u6A13",
+    "\u6DDA",
+    "\u6F0F",
+    "\u7D2F",
+    "\u7E37",
+    "\u964B",
+    "\u52D2",
+    "\u808B",
+    "\u51DC",
+    "\u51CC",
+    "\u7A1C",
+    "\u7DBE",
+    "\u83F1",
+    "\u9675",
+    "\u8B80",
+    "\u62CF",
+    "\u8AFE",
+    "\u4E39",
+    "\u5BE7",
+    "\u6012",
+    "\u7387",
+    "\u7570",
+    "\u5317",
+    "\u78FB",
+    "\u4FBF",
+    "\u5FA9",
+    "\u4E0D",
+    "\u6CCC",
+    "\u6578",
+    "\u7D22",
+    "\u53C3",
+    "\u585E",
+    "\u7701",
+    "\u8449",
+    "\u8AAA",
+    "\u6BBA",
+    "\u6C88",
+    "\u62FE",
+    "\u82E5",
+    "\u63A0",
+    "\u7565",
+    "\u4EAE",
+    "\u5169",
+    "\u51C9",
+    "\u6881",
+    "\u7CE7",
+    "\u826F",
+    "\u8AD2",
+    "\u91CF",
+    "\u52F5",
+    "\u5442",
+    "\u5EEC",
+    "\u65C5",
+    "\u6FFE",
+    "\u792A",
+    "\u95AD",
+    "\u9A6A",
+    "\u9E97",
+    "\u9ECE",
+    "\u66C6",
+    "\u6B77",
+    "\u8F62",
+    "\u5E74",
+    "\u6190",
+    "\u6200",
+    "\u649A",
+    "\u6F23",
+    "\u7149",
+    "\u7489",
+    "\u79CA",
+    "\u7DF4",
+    "\u806F",
+    "\u8F26",
+    "\u84EE",
+    "\u9023",
+    "\u934A",
+    "\u5217",
+    "\u52A3",
+    "\u54BD",
+    "\u70C8",
+    "\u88C2",
+    "\u5EC9",
+    "\u5FF5",
+    "\u637B",
+    "\u6BAE",
+    "\u7C3E",
+    "\u7375",
+    "\u4EE4",
+    "\u56F9",
+    "\u5DBA",
+    "\u601C",
+    "\u73B2",
+    "\u7469",
+    "\u7F9A",
+    "\u8046",
+    "\u9234",
+    "\u96F6",
+    "\u9748",
+    "\u9818",
+    "\u4F8B",
+    "\u79AE",
+    "\u91B4",
+    "\u96B8",
+    "\u60E1",
+    "\u4E86",
+    "\u50DA",
+    "\u5BEE",
+    "\u5C3F",
+    "\u6599",
+    "\u71CE",
+    "\u7642",
+    "\u84FC",
+    "\u907C",
+    "\u6688",
+    "\u962E",
+    "\u5289",
+    "\u677B",
+    "\u67F3",
+    "\u6D41",
+    "\u6E9C",
+    "\u7409",
+    "\u7559",
+    "\u786B",
+    "\u7D10",
+    "\u985E",
+    "\u622E",
+    "\u9678",
+    "\u502B",
+    "\u5D19",
+    "\u6DEA",
+    "\u8F2A",
+    "\u5F8B",
+    "\u6144",
+    "\u6817",
+    "\u9686",
+    "\u5229",
+    "\u540F",
+    "\u5C65",
+    "\u6613",
+    "\u674E",
+    "\u68A8",
+    "\u6CE5",
+    "\u7406",
+    "\u75E2",
+    "\u7F79",
+    "\u88CF",
+    "\u88E1",
+    "\u96E2",
+    "\u533F",
+    "\u6EBA",
+    "\u541D",
+    "\u71D0",
+    "\u7498",
+    "\u85FA",
+    "\u96A3",
+    "\u9C57",
+    "\u9E9F",
+    "\u6797",
+    "\u6DCB",
+    "\u81E8",
+    "\u7B20",
+    "\u7C92",
+    "\u72C0",
+    "\u7099",
+    "\u8B58",
+    "\u4EC0",
+    "\u8336",
+    "\u523A",
+    "\u5207",
+    "\u5EA6",
+    "\u62D3",
+    "\u7CD6",
+    "\u5B85",
+    "\u6D1E",
+    "\u66B4",
+    "\u8F3B",
+    "\u964D",
+    "\u5ED3",
+    "\u5140",
+    "\u55C0",
+    "\u585A",
+    "\u6674",
+    "\u51DE",
+    "\u732A",
+    "\u76CA",
+    "\u793C",
+    "\u795E",
+    "\u7965",
+    "\u798F",
+    "\u9756",
+    "\u7CBE",
+    "\u8612",
+    "\u8AF8",
+    "\u9038",
+    "\u90FD",
+    "\u98EF",
+    "\u98FC",
+    "\u9928",
+    "\u9DB4",
+    "\u4FAE",
+    "\u50E7",
+    "\u514D",
+    "\u52C9",
+    "\u52E4",
+    "\u5351",
+    "\u559D",
+    "\u5606",
+    "\u5668",
+    "\u5840",
+    "\u58A8",
+    "\u5C64",
+    "\u6094",
+    "\u6168",
+    "\u618E",
+    "\u61F2",
+    "\u654F",
+    "\u65E2",
+    "\u6691",
+    "\u6885",
+    "\u6D77",
+    "\u6E1A",
+    "\u6F22",
+    "\u716E",
+    "\u722B",
+    "\u7422",
+    "\u7891",
+    "\u7949",
+    "\u7948",
+    "\u7950",
+    "\u7956",
+    "\u798D",
+    "\u798E",
+    "\u7A40",
+    "\u7A81",
+    "\u7BC0",
+    "\u7E09",
+    "\u7E41",
+    "\u7F72",
+    "\u8005",
+    "\u81ED",
+    "\u8279",
+    "\u8457",
+    "\u8910",
+    "\u8996",
+    "\u8B01",
+    "\u8B39",
+    "\u8CD3",
+    "\u8D08",
+    "\u8FB6",
+    "\u96E3",
+    "\u97FF",
+    "\u983B",
+    "\u0066\u0066",
+    "\u0066\u0069",
+    "\u0066\u006C",
+    "\u0066\u0066\u0069",
+    "\u0066\u0066\u006C",
+    "\u0073\u0074",
+    "\u0574\u0576",
+    "\u0574\u0565",
+    "\u0574\u056B",
+    "\u057E\u0576",
+    "\u0574\u056D",
+    "\u05D9\u05B4",
+    "\u05F2\u05B7",
+    "\u05E2",
+    "\u05D4",
+    "\u05DB",
+    "\u05DC",
+    "\u05DD",
+    "\u05E8",
+    "\u05EA",
+    "\u05E9\u05C1",
+    "\u05E9\u05C2",
+    "\u05E9\u05BC\u05C1",
+    "\u05E9\u05BC\u05C2",
+    "\u05D0\u05B7",
+    "\u05D0\u05B8",
+    "\u05D0\u05BC",
+    "\u05D1\u05BC",
+    "\u05D2\u05BC",
+    "\u05D3\u05BC",
+    "\u05D4\u05BC",
+    "\u05D5\u05BC",
+    "\u05D6\u05BC",
+    "\u05D8\u05BC",
+    "\u05D9\u05BC",
+    "\u05DA\u05BC",
+    "\u05DB\u05BC",
+    "\u05DC\u05BC",
+    "\u05DE\u05BC",
+    "\u05E0\u05BC",
+    "\u05E1\u05BC",
+    "\u05E3\u05BC",
+    "\u05E4\u05BC",
+    "\u05E6\u05BC",
+    "\u05E7\u05BC",
+    "\u05E8\u05BC",
+    "\u05E9\u05BC",
+    "\u05EA\u05BC",
+    "\u05D5\u05B9",
+    "\u05D1\u05BF",
+    "\u05DB\u05BF",
+    "\u05E4\u05BF",
+    "\u05D0\u05DC",
+    "\u0671",
+    "\u067B",
+    "\u067E",
+    "\u0680",
+    "\u067A",
+    "\u067F",
+    "\u0679",
+    "\u06A4",
+    "\u06A6",
+    "\u0684",
+    "\u0683",
+    "\u0686",
+    "\u0687",
+    "\u068D",
+    "\u068C",
+    "\u068E",
+    "\u0688",
+    "\u0698",
+    "\u0691",
+    "\u06A9",
+    "\u06AF",
+    "\u06B3",
+    "\u06B1",
+    "\u06BA",
+    "\u06BB",
+    "\u06C1",
+    "\u06BE",
+    "\u06D2",
+    "\u06AD",
+    "\u06C7",
+    "\u06C6",
+    "\u06C8",
+    "\u06CB",
+    "\u06C5",
+    "\u06C9",
+    "\u06D0",
+    "\u0649",
+    "\u064A\u0654\u0627",
+    "\u064A\u0654\u06D5",
+    "\u064A\u0654\u0648",
+    "\u064A\u0654\u06C7",
+    "\u064A\u0654\u06C6",
+    "\u064A\u0654\u06C8",
+    "\u064A\u0654\u06D0",
+    "\u064A\u0654\u0649",
+    "\u06CC",
+    "\u064A\u0654\u062C",
+    "\u064A\u0654\u062D",
+    "\u064A\u0654\u0645",
+    "\u064A\u0654\u064A",
+    "\u0628\u062C",
+    "\u0628\u062D",
+    "\u0628\u062E",
+    "\u0628\u0645",
+    "\u0628\u0649",
+    "\u0628\u064A",
+    "\u062A\u062C",
+    "\u062A\u062D",
+    "\u062A\u062E",
+    "\u062A\u0645",
+    "\u062A\u0649",
+    "\u062A\u064A",
+    "\u062B\u062C",
+    "\u062B\u0645",
+    "\u062B\u0649",
+    "\u062B\u064A",
+    "\u062C\u062D",
+    "\u062C\u0645",
+    "\u062D\u062C",
+    "\u062D\u0645",
+    "\u062E\u062C",
+    "\u062E\u062D",
+    "\u062E\u0645",
+    "\u0633\u062C",
+    "\u0633\u062D",
+    "\u0633\u062E",
+    "\u0633\u0645",
+    "\u0635\u062D",
+    "\u0635\u0645",
+    "\u0636\u062C",
+    "\u0636\u062D",
+    "\u0636\u062E",
+    "\u0636\u0645",
+    "\u0637\u062D",
+    "\u0637\u0645",
+    "\u0638\u0645",
+    "\u0639\u062C",
+    "\u0639\u0645",
+    "\u063A\u062C",
+    "\u063A\u0645",
+    "\u0641\u062C",
+    "\u0641\u062D",
+    "\u0641\u062E",
+    "\u0641\u0645",
+    "\u0641\u0649",
+    "\u0641\u064A",
+    "\u0642\u062D",
+    "\u0642\u0645",
+    "\u0642\u0649",
+    "\u0642\u064A",
+    "\u0643\u0627",
+    "\u0643\u062C",
+    "\u0643\u062D",
+    "\u0643\u062E",
+    "\u0643\u0644",
+    "\u0643\u0645",
+    "\u0643\u0649",
+    "\u0643\u064A",
+    "\u0644\u062C",
+    "\u0644\u062D",
+    "\u0644\u062E",
+    "\u0644\u0645",
+    "\u0644\u0649",
+    "\u0644\u064A",
+    "\u0645\u062C",
+    "\u0645\u062D",
+    "\u0645\u062E",
+    "\u0645\u0645",
+    "\u0645\u0649",
+    "\u0645\u064A",
+    "\u0646\u062C",
+    "\u0646\u062D",
+    "\u0646\u062E",
+    "\u0646\u0645",
+    "\u0646\u0649",
+    "\u0646\u064A",
+    "\u0647\u062C",
+    "\u0647\u0645",
+    "\u0647\u0649",
+    "\u0647\u064A",
+    "\u064A\u062C",
+    "\u064A\u062D",
+    "\u064A\u062E",
+    "\u064A\u0645",
+    "\u064A\u0649",
+    "\u064A\u064A",
+    "\u0630\u0670",
+    "\u0631\u0670",
+    "\u0649\u0670",
+    "\u0020\u064C\u0651",
+    "\u0020\u064D\u0651",
+    "\u0020\u064E\u0651",
+    "\u0020\u064F\u0651",
+    "\u0020\u0650\u0651",
+    "\u0020\u0651\u0670",
+    "\u064A\u0654\u0631",
+    "\u064A\u0654\u0632",
+    "\u064A\u0654\u0646",
+    "\u0628\u0631",
+    "\u0628\u0632",
+    "\u0628\u0646",
+    "\u062A\u0631",
+    "\u062A\u0632",
+    "\u062A\u0646",
+    "\u062B\u0631",
+    "\u062B\u0632",
+    "\u062B\u0646",
+    "\u0645\u0627",
+    "\u0646\u0631",
+    "\u0646\u0632",
+    "\u0646\u0646",
+    "\u064A\u0631",
+    "\u064A\u0632",
+    "\u064A\u0646",
+    "\u064A\u0654\u062E",
+    "\u064A\u0654\u0647",
+    "\u0628\u0647",
+    "\u062A\u0647",
+    "\u0635\u062E",
+    "\u0644\u0647",
+    "\u0646\u0647",
+    "\u0647\u0670",
+    "\u064A\u0647",
+    "\u062B\u0647",
+    "\u0633\u0647",
+    "\u0634\u0645",
+    "\u0634\u0647",
+    "\u0640\u064E\u0651",
+    "\u0640\u064F\u0651",
+    "\u0640\u0650\u0651",
+    "\u0637\u0649",
+    "\u0637\u064A",
+    "\u0639\u0649",
+    "\u0639\u064A",
+    "\u063A\u0649",
+    "\u063A\u064A",
+    "\u0633\u0649",
+    "\u0633\u064A",
+    "\u0634\u0649",
+    "\u0634\u064A",
+    "\u062D\u0649",
+    "\u062D\u064A",
+    "\u062C\u0649",
+    "\u062C\u064A",
+    "\u062E\u0649",
+    "\u062E\u064A",
+    "\u0635\u0649",
+    "\u0635\u064A",
+    "\u0636\u0649",
+    "\u0636\u064A",
+    "\u0634\u062C",
+    "\u0634\u062D",
+    "\u0634\u062E",
+    "\u0634\u0631",
+    "\u0633\u0631",
+    "\u0635\u0631",
+    "\u0636\u0631",
+    "\u0627\u064B",
+    "\u062A\u062C\u0645",
+    "\u062A\u062D\u062C",
+    "\u062A\u062D\u0645",
+    "\u062A\u062E\u0645",
+    "\u062A\u0645\u062C",
+    "\u062A\u0645\u062D",
+    "\u062A\u0645\u062E",
+    "\u062C\u0645\u062D",
+    "\u062D\u0645\u064A",
+    "\u062D\u0645\u0649",
+    "\u0633\u062D\u062C",
+    "\u0633\u062C\u062D",
+    "\u0633\u062C\u0649",
+    "\u0633\u0645\u062D",
+    "\u0633\u0645\u062C",
+    "\u0633\u0645\u0645",
+    "\u0635\u062D\u062D",
+    "\u0635\u0645\u0645",
+    "\u0634\u062D\u0645",
+    "\u0634\u062C\u064A",
+    "\u0634\u0645\u062E",
+    "\u0634\u0645\u0645",
+    "\u0636\u062D\u0649",
+    "\u0636\u062E\u0645",
+    "\u0637\u0645\u062D",
+    "\u0637\u0645\u0645",
+    "\u0637\u0645\u064A",
+    "\u0639\u062C\u0645",
+    "\u0639\u0645\u0645",
+    "\u0639\u0645\u0649",
+    "\u063A\u0645\u0645",
+    "\u063A\u0645\u064A",
+    "\u063A\u0645\u0649",
+    "\u0641\u062E\u0645",
+    "\u0642\u0645\u062D",
+    "\u0642\u0645\u0645",
+    "\u0644\u062D\u0645",
+    "\u0644\u062D\u064A",
+    "\u0644\u062D\u0649",
+    "\u0644\u062C\u062C",
+    "\u0644\u062E\u0645",
+    "\u0644\u0645\u062D",
+    "\u0645\u062D\u062C",
+    "\u0645\u062D\u0645",
+    "\u0645\u062D\u064A",
+    "\u0645\u062C\u062D",
+    "\u0645\u062C\u0645",
+    "\u0645\u062E\u062C",
+    "\u0645\u062E\u0645",
+    "\u0645\u062C\u062E",
+    "\u0647\u0645\u062C",
+    "\u0647\u0645\u0645",
+    "\u0646\u062D\u0645",
+    "\u0646\u062D\u0649",
+    "\u0646\u062C\u0645",
+    "\u0646\u062C\u0649",
+    "\u0646\u0645\u064A",
+    "\u0646\u0645\u0649",
+    "\u064A\u0645\u0645",
+    "\u0628\u062E\u064A",
+    "\u062A\u062C\u064A",
+    "\u062A\u062C\u0649",
+    "\u062A\u062E\u064A",
+    "\u062A\u062E\u0649",
+    "\u062A\u0645\u064A",
+    "\u062A\u0645\u0649",
+    "\u062C\u0645\u064A",
+    "\u062C\u062D\u0649",
+    "\u062C\u0645\u0649",
+    "\u0633\u062E\u0649",
+    "\u0635\u062D\u064A",
+    "\u0634\u062D\u064A",
+    "\u0636\u062D\u064A",
+    "\u0644\u062C\u064A",
+    "\u0644\u0645\u064A",
+    "\u064A\u062D\u064A",
+    "\u064A\u062C\u064A",
+    "\u064A\u0645\u064A",
+    "\u0645\u0645\u064A",
+    "\u0642\u0645\u064A",
+    "\u0646\u062D\u064A",
+    "\u0639\u0645\u064A",
+    "\u0643\u0645\u064A",
+    "\u0646\u062C\u062D",
+    "\u0645\u062E\u064A",
+    "\u0644\u062C\u0645",
+    "\u0643\u0645\u0645",
+    "\u062C\u062D\u064A",
+    "\u062D\u062C\u064A",
+    "\u0645\u062C\u064A",
+    "\u0641\u0645\u064A",
+    "\u0628\u062D\u064A",
+    "\u0633\u062E\u064A",
+    "\u0646\u062C\u064A",
+    "\u0635\u0644\u06D2",
+    "\u0642\u0644\u06D2",
+    "\u0627\u0644\u0644\u0647",
+    "\u0627\u0643\u0628\u0631",
+    "\u0645\u062D\u0645\u062F",
+    "\u0635\u0644\u0639\u0645",
+    "\u0631\u0633\u0648\u0644",
+    "\u0639\u0644\u064A\u0647",
+    "\u0648\u0633\u0644\u0645",
+    "\u0635\u0644\u0649",
+    "\u0635\u0644\u0649\u0020\u0627\u0644\u0644\u0647\u0020\u0639\u0644\u064A\u0647\u0020\u0648\u0633\u0644\u0645",
+    "\u062C\u0644\u0020\u062C\u0644\u0627\u0644\u0647",
+    "\u0631\u06CC\u0627\u0644",
+    "\u2014",
+    "\u2013",
+    "\u005F",
+    "\u007B",
+    "\u007D",
+    "\u3014",
+    "\u3015",
+    "\u3010",
+    "\u3011",
+    "\u300A",
+    "\u300B",
+    "\u300C",
+    "\u300D",
+    "\u300E",
+    "\u300F",
+    "\u002C",
+    "\u3001",
+    "\u003A",
+    "\u003F",
+    "\u0021",
+    "\u0023",
+    "\u0026",
+    "\u002A",
+    "\u002D",
+    "\u003C",
+    "\u003E",
+    "\\",
+    "\u0024",
+    "\u0025",
+    "\u0040",
+    "\u0020\u064B",
+    "\u0640\u064B",
+    "\u0020\u064C",
+    "\u0020\u064D",
+    "\u0020\u064E",
+    "\u0640\u064E",
+    "\u0020\u064F",
+    "\u0640\u064F",
+    "\u0020\u0650",
+    "\u0640\u0650",
+    "\u0020\u0651",
+    "\u0640\u0651",
+    "\u0020\u0652",
+    "\u0640\u0652",
+    "\u0621",
+    "\u0627",
+    "\u0628",
+    "\u0629",
+    "\u062A",
+    "\u062B",
+    "\u062C",
+    "\u062D",
+    "\u062E",
+    "\u062F",
+    "\u0630",
+    "\u0631",
+    "\u0632",
+    "\u0633",
+    "\u0634",
+    "\u0635",
+    "\u0636",
+    "\u0637",
+    "\u0638",
+    "\u0639",
+    "\u063A",
+    "\u0641",
+    "\u0642",
+    "\u0643",
+    "\u0644",
+    "\u0645",
+    "\u0646",
+    "\u0647",
+    "\u0648",
+    "\u064A",
+    "\u0644\u0627\u0653",
+    "\u0644\u0627\u0654",
+    "\u0644\u0627\u0655",
+    "\u0644\u0627",
+    "\"",
+    "\u0027",
+    "\u002F",
+    "\u005B",
+    "\u005D",
+    "\u005E",
+    "\u007C",
+    "\u007E",
+    "\u2985",
+    "\u2986",
+    "\u3002",
+    "\u30FB",
+    "\u30A1",
+    "\u30A3",
+    "\u30A5",
+    "\u30A7",
+    "\u30A9",
+    "\u30E3",
+    "\u30E5",
+    "\u30E7",
+    "\u30C3",
+    "\u30FC",
+    "\u30F3",
+    "\u3099",
+    "\u309A",
+    "\u00A2",
+    "\u00A3",
+    "\u00AC",
+    "\u00A6",
+    "\u00A5",
+    "\u20A9",
+    "\u2502",
+    "\u2190",
+    "\u2191",
+    "\u2192",
+    "\u2193",
+    "\u25A0",
+    "\u25CB",
+  };
+}
diff --git a/java/gnu/inet/encoding/IDNA.java b/java/gnu/inet/encoding/IDNA.java
new file mode 100644 (file)
index 0000000..0bd26ec
--- /dev/null
@@ -0,0 +1,278 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+package gnu.inet.encoding;
+
+/**
+ * This class offers static methods for converting internationalized
+ * domain names to ACE and back.
+ * <ul>
+ * <li>RFC3490 IDNA
+ * </ul>
+ * Note that this implementation only supports 16-bit Unicode code
+ * points.
+ */
+public class IDNA
+{
+  public final static String ACE_PREFIX = "xn--";
+
+  /**
+   * Converts a Unicode string to ASCII using the procedure in RFC3490
+   * section 4.1. Unassigned characters are not allowed and STD3 ASCII
+   * rules are enforced. The input string may be a domain name
+   * containing dots.
+   *
+   * @param input Unicode string.
+   * @return Encoded string.
+   */
+  public static String toASCII(String input)
+    throws IDNAException
+  {
+    StringBuffer o = new StringBuffer();
+    StringBuffer h = new StringBuffer();
+
+    for (int i = 0; i < input.length(); i++) {
+      char c = input.charAt(i);
+      if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61') {
+       o.append(toASCII(h.toString(), false, true));
+       o.append('.');
+       h = new StringBuffer();
+      } else {
+       h.append(c);
+      }
+    }
+    o.append(toASCII(h.toString(), false, true));
+    return o.toString();
+  }
+
+  /**
+   * Converts a Unicode string to ASCII using the procedure in RFC3490
+   * section 4.1. Unassigned characters are not allowed and STD3 ASCII
+   * rules are enforced.
+   *
+   * @param input Unicode string.
+   * @param allowUnassigned Unassigned characters, allowed or not?
+   * @param useSTD3ASCIIRules STD3 ASCII rules, enforced or not?
+   * @return Encoded string.
+   */
+  public static String toASCII(String input, boolean allowUnassigned, boolean useSTD3ASCIIRules)
+    throws IDNAException
+  {
+    // Step 1: Check if the string contains code points outside
+    //         the ASCII range 0..0x7c.
+
+    boolean nonASCII = false;
+
+    for (int i = 0; i < input.length(); i++) {
+      int c = input.charAt(i);
+      if (c > 0x7f) {
+       nonASCII = true;
+       break;
+      }
+    }
+
+    // Step 2: Perform the nameprep operation.
+
+    if (nonASCII) {
+      try {
+       input = Stringprep.nameprep(input, allowUnassigned);
+      } catch (StringprepException e) {
+       throw new IDNAException(e);
+      }
+    }
+
+    // Step 3: - Verify the absence of non-LDH ASCII code points
+    //           0..0x2c, 0x2e..0x2f, 0x3a..0x40, 0x5b..0x60,
+    //           0x7b..0x7f
+    //         - Verify the absence of leading and trailing
+    //           hyphen-minus
+
+    if (useSTD3ASCIIRules) {
+      for (int i = 0; i < input.length(); i++) {
+       int c = input.charAt(i);
+       if ((c <= 0x2c) ||
+           (c >= 0x2e && c <= 0x2f) ||
+           (c >= 0x3a && c <= 0x40) ||
+           (c >= 0x5b && c <= 0x60) ||
+           (c >= 0x7b && c <= 0x7f)) {
+         throw new IDNAException(IDNAException.CONTAINS_NON_LDH);
+       }
+      }
+
+      if (input.startsWith("-") || input.endsWith("-")) {
+       throw new IDNAException(IDNAException.CONTAINS_HYPHEN);
+      }
+    }
+
+    // Step 4: If all code points are inside 0..0x7f, skip to step 8
+
+    nonASCII = false;
+
+    for (int i = 0; i < input.length(); i++) {
+      int c = input.charAt(i);
+      if (c > 0x7f) {
+       nonASCII = true;
+       break;
+      }
+    }
+
+    String output = input;
+
+    if (nonASCII) {
+
+      // Step 5: Verify that the sequence does not begin with the ACE prefix.
+
+      if (input.startsWith(ACE_PREFIX)) {
+       throw new IDNAException(IDNAException.CONTAINS_ACE_PREFIX);
+      }
+
+      // Step 6: Punycode
+
+      try {
+       output = Punycode.encode(input);
+      } catch (PunycodeException e) {
+       throw new IDNAException(e);
+      }
+
+      // Step 7: Prepend the ACE prefix.
+
+      output = ACE_PREFIX + output;
+    }
+
+    // Step 8: Check that the length is inside 1..63.
+
+    if (output.length() < 1 || output.length() > 63) {
+      throw new IDNAException(IDNAException.TOO_LONG);
+    }
+
+    return output;
+  }
+
+  /**
+   * Converts an ASCII-encoded string to Unicode. Unassigned
+   * characters are not allowed and STD3 hostnames are enforced. Input
+   * may be domain name containing dots.
+   *
+   * @param input ASCII input string.
+   * @return Unicode string.
+   */
+  public static String toUnicode(String input)
+  {
+    StringBuffer o = new StringBuffer();
+    StringBuffer h = new StringBuffer();
+
+    for (int i = 0; i < input.length(); i++) {
+      char c = input.charAt(i);
+      if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61') {
+       o.append(toUnicode(h.toString(), false, true));
+       o.append(c);
+       h = new StringBuffer();
+      } else {
+       h.append(c);
+      }
+    }
+    o.append(toUnicode(h.toString(), false, true));
+    return o.toString();
+  }
+
+  /**
+   * Converts an ASCII-encoded string to Unicode.
+   *
+   * @param input ASCII input string.
+   * @param allowUnassigned Allow unassigned Unicode characters.
+   * @param useSTD3ASCIIRules Check that the output conforms to STD3.
+   * @return Unicode string.
+   */
+  public static String toUnicode(String input, boolean allowUnassigned, boolean useSTD3ASCIIRules)
+  {
+    String original = input;
+    boolean nonASCII = false;
+
+    // Step 1: If all code points are inside 0..0x7f, skip to step 3.
+
+    for (int i = 0; i < input.length(); i++) {
+      int c = input.charAt(i);
+      if (c > 0x7f) {
+       nonASCII = true;
+       break;
+      }
+    }
+
+    // Step 2: Perform the Nameprep operation.
+
+    if (nonASCII) {
+      try {
+       input = Stringprep.nameprep(input, allowUnassigned);
+      } catch (StringprepException e) {
+       // ToUnicode never fails!
+       return original;
+      }
+    }
+
+    // Step 3: Verify the sequence starts with the ACE prefix.
+
+    if (!input.startsWith(ACE_PREFIX)) {
+      // ToUnicode never fails!
+      return original;
+    }
+
+    String stored = input;
+
+    // Step 4: Remove the ACE prefix.
+
+    input = input.substring(ACE_PREFIX.length());
+
+    // Step 5: Decode using punycode
+
+    String output;
+
+    try {
+      output = Punycode.decode(input);
+    } catch (PunycodeException e) {
+      // ToUnicode never fails!
+      return original;
+    }
+
+    // Step 6: Apply toASCII
+
+    String ascii;
+
+    try {
+      ascii = toASCII(output, allowUnassigned, useSTD3ASCIIRules);
+    } catch (IDNAException e) {
+      // ToUnicode never fails!
+      return original;
+    }
+
+    // Step 7: Compare case-insensitively.
+
+    if (!ascii.equalsIgnoreCase(stored)) {
+      // ToUnicode never fails!
+      return original;
+    }
+
+    // Step 8: Return the result.
+
+    return output;
+  }
+}
diff --git a/java/gnu/inet/encoding/IDNAException.java b/java/gnu/inet/encoding/IDNAException.java
new file mode 100644 (file)
index 0000000..6af9060
--- /dev/null
@@ -0,0 +1,51 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+package gnu.inet.encoding;
+
+/**
+ * Exception handling for IDNA class.
+ */
+public class IDNAException
+  extends Exception
+{
+  public static String CONTAINS_NON_LDH = "Contains non-LDH characters.";
+  public static String CONTAINS_HYPHEN = "Leading or trailing hyphen not allowed.";
+  public static String CONTAINS_ACE_PREFIX = "ACE prefix (xn--) not allowed.";
+  public static String TOO_LONG = "String too long.";
+
+  public IDNAException(String m)
+  {
+    super(m);
+  }
+
+  public IDNAException(StringprepException e)
+  {
+    super(e);
+  }
+
+  public IDNAException(PunycodeException e)
+  {
+    super(e);
+  }
+}
diff --git a/java/gnu/inet/encoding/Makefile.am b/java/gnu/inet/encoding/Makefile.am
new file mode 100644 (file)
index 0000000..d3ea42b
--- /dev/null
@@ -0,0 +1,36 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+JAVAROOT = $(top_builddir)/java
+
+if JAVA
+dist_noinst_JAVA = CombiningClass.java \
+       Composition.java                \
+       DecompositionKeys.java          \
+       DecompositionMappings.java      \
+       IDNA.java                       \
+       IDNAException.java              \
+       NFKC.java                       \
+       Punycode.java                   \
+       PunycodeException.java          \
+       RFC3454.java                    \
+       Stringprep.java                 \
+       StringprepException.java
+endif # JAVA
diff --git a/java/gnu/inet/encoding/Makefile.in b/java/gnu/inet/encoding/Makefile.in
new file mode 100644 (file)
index 0000000..85b34eb
--- /dev/null
@@ -0,0 +1,705 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = java/gnu/inet/encoding
+DIST_COMMON = $(am__dist_noinst_JAVA_DIST) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__dist_noinst_JAVA_DIST = CombiningClass.java Composition.java \
+       DecompositionKeys.java DecompositionMappings.java IDNA.java \
+       IDNAException.java NFKC.java Punycode.java \
+       PunycodeException.java RFC3454.java Stringprep.java \
+       StringprepException.java
+JAVAC = javac
+CLASSPATH_ENV = CLASSPATH=$(JAVAROOT):$(srcdir)/$(JAVAROOT):$$CLASSPATH
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+JAVAROOT = $(top_builddir)/java
+@JAVA_TRUE@dist_noinst_JAVA = CombiningClass.java      \
+@JAVA_TRUE@    Composition.java                \
+@JAVA_TRUE@    DecompositionKeys.java          \
+@JAVA_TRUE@    DecompositionMappings.java      \
+@JAVA_TRUE@    IDNA.java                       \
+@JAVA_TRUE@    IDNAException.java              \
+@JAVA_TRUE@    NFKC.java                       \
+@JAVA_TRUE@    Punycode.java                   \
+@JAVA_TRUE@    PunycodeException.java          \
+@JAVA_TRUE@    RFC3454.java                    \
+@JAVA_TRUE@    Stringprep.java                 \
+@JAVA_TRUE@    StringprepException.java
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/gnu/inet/encoding/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu java/gnu/inet/encoding/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+classdist_noinst.stamp: $(dist_noinst_JAVA)
+       @list1='$?'; list2=; if test -n "$$list1"; then \
+         for p in $$list1; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+           list2="$$list2 $$d$$p"; \
+         done; \
+         echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \
+         $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \
+       else :; fi
+       echo timestamp > classdist_noinst.stamp
+
+clean-dist_noinstJAVA:
+       -rm -f *.class classdist_noinst.stamp
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile classdist_noinst.stamp
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-dist_noinstJAVA clean-generic clean-libtool \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-dist_noinstJAVA \
+       clean-generic clean-libtool distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/java/gnu/inet/encoding/NFKC.java b/java/gnu/inet/encoding/NFKC.java
new file mode 100644 (file)
index 0000000..cd090bb
--- /dev/null
@@ -0,0 +1,328 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+package gnu.inet.encoding;
+
+/**
+ * This class offers static methods for Unicode NFKC string normalization.
+ */
+public class NFKC
+{
+  /**
+   * Applies NFKC normalization to a string.
+   *
+   * @param in The string to normalize.
+   * @return An NFKC normalized string.
+   */
+  public static String normalizeNFKC(String in)
+  {
+    StringBuffer out = new StringBuffer();
+
+    for (int i = 0; i < in.length(); i++) {
+      char code = in.charAt(i);
+
+      // In Unicode 3.0, Hangul was defined as the block from U+AC00
+      // to U+D7A3, however, since Unicode 3.2 the block extends until
+      // U+D7AF. The decomposeHangul function only decomposes until
+      // U+D7A3. Should this be changed?
+      if (code >= 0xAC00 && code <= 0xD7AF) {
+       out.append(decomposeHangul(code));
+      } else {
+       int index = decomposeIndex(code);
+       if (index == -1) {
+         out.append(code);
+       } else {
+         out.append(DecompositionMappings.m[index]);
+       }
+      }
+    }
+
+    // Bring the stringbuffer into canonical order.
+    canonicalOrdering(out);
+
+    // Do the canonical composition.
+    int last_cc = 0;
+    int last_start = 0;
+
+    for (int i = 0; i < out.length(); i++) {
+      int cc = combiningClass(out.charAt(i));
+
+      if (i > 0 && (last_cc == 0 || last_cc != cc)) {
+       // Try to combine characters
+       char a = out.charAt(last_start);
+       char b = out.charAt(i);
+
+       int c = compose(a, b);
+
+       if (c != -1) {
+         out.setCharAt(last_start, (char) c);
+         out.deleteCharAt(i);
+         i--;
+
+         if (i == last_start) {
+           last_cc = 0;
+         } else {
+           last_cc = combiningClass(out.charAt(i-1));
+         }
+         continue;
+       }
+      }
+
+      if (cc == 0) {
+       last_start = i;
+      }
+
+      last_cc = cc;
+    }
+
+    return out.toString();
+  }
+
+
+  /**
+   * Returns the index inside the decomposition table, implemented
+   * using a binary search.
+   *
+   * @param c Character to look up.
+   * @return Index if found, -1 otherwise.
+   */
+  static int decomposeIndex(char c)
+  {
+    int start = 0;
+    int end = DecompositionKeys.k.length/2;
+
+    while (true) {
+      int half = (start + end) / 2;
+      int code = DecompositionKeys.k[half*2];
+
+      if (c == code) {
+       return DecompositionKeys.k[half*2 + 1];
+      }
+      if (half == start) {
+       // Character not found
+       return -1;
+      } else if (c > code) {
+       start = half;
+      } else {
+       end = half;
+      }
+    }
+  }
+
+  /**
+   * Returns the combining class of a given character.
+   *
+   * @param c The character.
+   * @return The combining class.
+   */
+  static int combiningClass(char c)
+  {
+    int h = c >> 8;
+    int l = c & 0xff;
+
+    int i = CombiningClass.i[h];
+    if (i > -1) {
+      return CombiningClass.c[i][l];
+    } else {
+      return 0;
+    }
+  }
+
+  /**
+   * Rearranges characters in a stringbuffer in order to respect the
+   * canonical ordering properties.
+   *
+   * @param The StringBuffer to rearrange.
+   */
+  static void canonicalOrdering(StringBuffer in)
+  {
+    boolean isOrdered = false;
+
+    while (!isOrdered) {
+      isOrdered = true;
+
+      int lastCC = combiningClass(in.charAt(0));
+
+      for (int i = 0; i < in.length()-1; i++) {
+       int nextCC = combiningClass(in.charAt(i+1));
+       if (nextCC != 0 && lastCC > nextCC) {
+         for (int j = i+1; j > 0; j--) {
+           if (combiningClass(in.charAt(j-1)) <= nextCC) {
+             break;
+           }
+           char t = in.charAt(j);
+           in.setCharAt(j, in.charAt(j-1));
+           in.setCharAt(j-1, t);
+           isOrdered = false;
+         }
+         nextCC = lastCC;
+       }
+       lastCC = nextCC;
+      }
+    }
+  }
+
+  /**
+   * Returns the index inside the composition table.
+   *
+   * @param a Character to look up.
+   * @return Index if found, -1 otherwise.
+   */
+  static int composeIndex(char a)
+  {
+    if (a>>8 >= Composition.composePage.length) {
+      return -1;
+    }
+    int ap = Composition.composePage[a>>8];
+    if (ap == -1) {
+      return -1;
+    }
+    return Composition.composeData[ap][a & 0xff];
+  }
+
+  /**
+   * Tries to compose two characters canonically.
+   *
+   * @param a First character.
+   * @param b Second character.
+   * @return The composed character or -1 if no composition could be
+   * found.
+   */
+  static int compose(char a, char b)
+  {
+    int h = composeHangul(a, b);
+    if (h != -1) {
+      return h;
+    }
+
+    int ai = composeIndex(a);
+
+    if (ai >= Composition.singleFirstStart && ai < Composition.singleSecondStart) {
+      if (b == Composition.singleFirst[ai - Composition.singleFirstStart][0]) {
+       return Composition.singleFirst[ai - Composition.singleFirstStart][1];
+      } else {
+       return -1;
+      }
+    }
+
+    int bi = composeIndex(b);
+
+    if (bi >= Composition.singleSecondStart) {
+      if (a == Composition.singleSecond[bi - Composition.singleSecondStart][0]) {
+       return Composition.singleSecond[bi - Composition.singleSecondStart][1];
+      } else {
+       return -1;
+      }
+    }
+
+    if (ai >= 0 && ai < Composition.multiSecondStart &&
+       bi >= Composition.multiSecondStart && bi < Composition.singleFirstStart) {
+      char[] f = Composition.multiFirst[ai];
+
+      if (bi - Composition.multiSecondStart < f.length) {
+       char r = f[bi - Composition.multiSecondStart];
+       if (r == 0) {
+         return -1;
+       } else {
+         return r;
+       }
+      }
+    }
+
+
+    return -1;
+  }
+
+  /**
+   * Entire hangul code copied from:
+   * http://www.unicode.org/unicode/reports/tr15/
+   *
+   * Several hangul specific constants
+   */
+  static final int SBase = 0xAC00;
+  static final int LBase = 0x1100;
+  static final int VBase = 0x1161;
+  static final int TBase = 0x11A7;
+  static final int LCount = 19;
+  static final int VCount = 21;
+  static final int TCount = 28;
+  static final int NCount = VCount * TCount;
+  static final int SCount = LCount * NCount;
+
+  /**
+   * Decomposes a hangul character.
+   *
+   * @param s A character to decompose.
+   * @return A string containing the hangul decomposition of the input
+   * character. If no hangul decomposition can be found, a string
+   * containing the character itself is returned.
+   */
+  static String decomposeHangul(char s)
+  {
+    int SIndex = s - SBase;
+    if (SIndex < 0 || SIndex >= SCount) {
+      return String.valueOf(s);
+    }
+    StringBuffer result = new StringBuffer();
+    int L = LBase + SIndex / NCount;
+    int V = VBase + (SIndex % NCount) / TCount;
+    int T = TBase + SIndex % TCount;
+    result.append((char)L);
+    result.append((char)V);
+    if (T != TBase) result.append((char)T);
+    return result.toString();
+  }
+
+  /**
+   * Composes two hangul characters.
+   *
+   * @param a First character.
+   * @param b Second character.
+   * @return Returns the composed character or -1 if the two
+   * characters cannot be composed.
+   */
+  static int composeHangul(char a, char b)
+  {
+    // 1. check to see if two current characters are L and V
+    int LIndex = a - LBase;
+    if (0 <= LIndex && LIndex < LCount) {
+      int VIndex = b - VBase;
+      if (0 <= VIndex && VIndex < VCount) {
+       // make syllable of form LV
+       return SBase + (LIndex * VCount + VIndex) * TCount;
+      }
+    }
+    
+    // 2. check to see if two current characters are LV and T
+    int SIndex = a - SBase;
+    if (0 <= SIndex && SIndex < SCount && (SIndex % TCount) == 0) {
+      int TIndex = b - TBase;
+      if (0 <= TIndex && TIndex <= TCount) {
+       // make syllable of form LVT
+       return a+TIndex;
+      }
+    }
+    return -1;
+  }
+
+}
\ No newline at end of file
diff --git a/java/gnu/inet/encoding/Punycode.java b/java/gnu/inet/encoding/Punycode.java
new file mode 100644 (file)
index 0000000..dd6d2f9
--- /dev/null
@@ -0,0 +1,259 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+package gnu.inet.encoding;
+
+/**
+ * This class offers static methods for encoding/decoding strings
+ * using the Punycode algorithm.
+ * <ul>
+ * <li>RFC3492 Punycode
+ * </ul>
+ * Note that this implementation only supports 16-bit Unicode code
+ * points.
+ */
+public class Punycode
+{
+  /* Punycode parameters */
+  final static int TMIN = 1;
+  final static int TMAX = 26;
+  final static int BASE = 36;
+  final static int INITIAL_N = 128;
+  final static int INITIAL_BIAS = 72;
+  final static int DAMP = 700;
+  final static int SKEW = 38;
+  final static char DELIMITER = '-';
+
+  /**
+   * Punycodes a unicode string.
+   *
+   * @param input Unicode string.
+   * @return Punycoded string.
+   */
+  public static String encode(String input)
+    throws PunycodeException
+  {
+    int n = INITIAL_N;
+    int delta = 0;
+    int bias = INITIAL_BIAS;
+    StringBuffer output = new StringBuffer();
+
+    // Copy all basic code points to the output
+    int b = 0;
+    for (int i = 0; i < input.length(); i++) {
+      char c = input.charAt(i);
+      if (isBasic(c)) {
+       output.append(c);
+       b++;
+      }
+    }
+
+    // Append delimiter
+    if (b > 0) {
+      output.append(DELIMITER);
+    }
+
+    int h = b;
+    while (h < input.length()) {
+      int m = Integer.MAX_VALUE;
+
+      // Find the minimum code point >= n
+      for (int i = 0; i < input.length(); i++) {
+       int c = input.charAt(i);
+       if (c >= n && c < m) {
+         m = c;
+       }
+      }
+
+      if (m - n > (Integer.MAX_VALUE - delta) / (h + 1)) {
+       throw new PunycodeException(PunycodeException.OVERFLOW);
+      }
+      delta = delta + (m - n) * (h + 1);
+      n = m;
+
+      for (int j = 0; j < input.length(); j++) {
+       int c = input.charAt(j);
+       if (c < n) {
+         delta++;
+         if (0 == delta) {
+           throw new PunycodeException(PunycodeException.OVERFLOW);
+         }
+       }
+       if (c == n) {
+         int q = delta;
+
+         for (int k = BASE;; k += BASE) {
+           int t;
+           if (k <= bias) {
+             t = TMIN;
+           } else if (k >= bias + TMAX) {
+             t = TMAX;
+           } else {
+             t = k - bias;
+           }
+           if (q < t) {
+             break;
+           }
+           output.append((char) digit2codepoint(t + (q - t) % (BASE - t)));
+           q = (q - t) / (BASE - t);
+         }
+
+         output.append((char) digit2codepoint(q));
+         bias = adapt(delta, h + 1, h == b);
+         delta = 0;
+         h++;
+       }
+      }
+
+      delta++;
+      n++;
+    }
+
+    return output.toString();
+  }
+
+  /**
+   * Decode a punycoded string.
+   *
+   * @param input Punycode string
+   * @return Unicode string.
+   */
+  public static String decode(String input)
+    throws PunycodeException
+  {
+    int n = INITIAL_N;
+    int i = 0;
+    int bias = INITIAL_BIAS;
+    StringBuffer output = new StringBuffer();
+
+    int d = input.lastIndexOf(DELIMITER);
+    if (d > 0) {
+      for (int j = 0; j < d; j++) {
+       char c = input.charAt(j);
+       if (!isBasic(c)) {
+         throw new PunycodeException(PunycodeException.BAD_INPUT);
+       }
+       output.append(c);
+      }
+      d++;
+    } else {
+      d = 0;
+    }
+
+    while (d < input.length()) {
+      int oldi = i;
+      int w = 1;
+
+      for (int k = BASE; ; k += BASE) {
+       if (d == input.length()) {
+         throw new PunycodeException(PunycodeException.BAD_INPUT);
+       }
+       int c = input.charAt(d++);
+       int digit = codepoint2digit(c);
+       if (digit > (Integer.MAX_VALUE - i) / w) {
+         throw new PunycodeException(PunycodeException.OVERFLOW);
+       }
+
+       i = i + digit * w;
+
+       int t;
+       if (k <= bias) {
+         t = TMIN;
+       } else if (k >= bias + TMAX) {
+         t = TMAX;
+       } else {
+         t = k - bias;
+       }
+       if (digit < t) {
+         break;
+       }
+       w = w * (BASE - t);
+      }
+
+      bias = adapt(i - oldi, output.length()+1, oldi == 0);
+
+      if (i / (output.length() + 1) > Integer.MAX_VALUE - n) {
+       throw new PunycodeException(PunycodeException.OVERFLOW);
+      }
+
+      n = n + i / (output.length() + 1);
+      i = i % (output.length() + 1);
+      output.insert(i, (char) n);
+      i++;
+    }
+
+    return output.toString();
+  }
+
+  public final static int adapt(int delta, int numpoints, boolean first)
+  {
+    if (first) {
+      delta = delta / DAMP;
+    } else {
+      delta = delta / 2;
+    }
+
+    delta = delta + (delta / numpoints);
+
+    int k = 0;
+    while (delta > ((BASE - TMIN) * TMAX) / 2) {
+      delta = delta / (BASE - TMIN);
+      k = k + BASE;
+    }
+
+    return k + ((BASE - TMIN + 1) * delta) / (delta + SKEW);
+  }
+
+  public final static boolean isBasic(char c)
+  {
+    return c < 0x80;
+  }
+
+  public final static int digit2codepoint(int d)
+    throws PunycodeException
+  {
+    if (d < 26) {
+      // 0..25 : 'a'..'z'
+      return d + 'a';
+    } else if (d < 36) {
+      // 26..35 : '0'..'9';
+      return d - 26 + '0';
+    } else {
+      throw new PunycodeException(PunycodeException.BAD_INPUT);
+    }
+  }
+
+  public final static int codepoint2digit(int c)
+    throws PunycodeException
+  {
+    if (c - '0' < 10) {
+      // '0'..'9' : 26..35
+      return c - '0' + 26;
+    } else if (c - 'a' < 26) {
+      // 'a'..'z' : 0..25
+      return c - 'a';
+    } else {
+      throw new PunycodeException(PunycodeException.BAD_INPUT);
+    }
+  }
+}
\ No newline at end of file
diff --git a/java/gnu/inet/encoding/PunycodeException.java b/java/gnu/inet/encoding/PunycodeException.java
new file mode 100644 (file)
index 0000000..2b1527e
--- /dev/null
@@ -0,0 +1,44 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+package gnu.inet.encoding;
+
+/**
+ * Exception handling for Punycode class.
+ */
+public class PunycodeException
+  extends Exception
+{
+  public static String OVERFLOW = "Overflow.";
+  public static String BAD_INPUT = "Bad input.";
+
+  /**
+   * Creates a new PunycodeException.
+   *
+   * @param m message.
+   */
+  public PunycodeException(String m)
+  {
+    super(m);
+  }
+}
\ No newline at end of file
diff --git a/java/gnu/inet/encoding/RFC3454.java b/java/gnu/inet/encoding/RFC3454.java
new file mode 100644 (file)
index 0000000..0f99f04
--- /dev/null
@@ -0,0 +1,4228 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit GenerateRFC3454.java and re-run.  */
+
+package gnu.inet.encoding;
+
+/**
+ * Auto-generated class containing StringPrep mapping tables.
+ */
+public class RFC3454
+{
+  final static char[][] A1 = new char[][] {
+    new char[] { '\u0221' },
+    new char[] { '\u0234', '\u024F' },
+    new char[] { '\u02AE', '\u02AF' },
+    new char[] { '\u02EF', '\u02FF' },
+    new char[] { '\u0350', '\u035F' },
+    new char[] { '\u0370', '\u0373' },
+    new char[] { '\u0376', '\u0379' },
+    new char[] { '\u037B', '\u037D' },
+    new char[] { '\u037F', '\u0383' },
+    new char[] { '\u038B' },
+    new char[] { '\u038D' },
+    new char[] { '\u03A2' },
+    new char[] { '\u03CF' },
+    new char[] { '\u03F7', '\u03FF' },
+    new char[] { '\u0487' },
+    new char[] { '\u04CF' },
+    new char[] { '\u04F6', '\u04F7' },
+    new char[] { '\u04FA', '\u04FF' },
+    new char[] { '\u0510', '\u0530' },
+    new char[] { '\u0557', '\u0558' },
+    new char[] { '\u0560' },
+    new char[] { '\u0588' },
+    new char[] { '\u058B', '\u0590' },
+    new char[] { '\u05A2' },
+    new char[] { '\u05BA' },
+    new char[] { '\u05C5', '\u05CF' },
+    new char[] { '\u05EB', '\u05EF' },
+    new char[] { '\u05F5', '\u060B' },
+    new char[] { '\u060D', '\u061A' },
+    new char[] { '\u061C', '\u061E' },
+    new char[] { '\u0620' },
+    new char[] { '\u063B', '\u063F' },
+    new char[] { '\u0656', '\u065F' },
+    new char[] { '\u06EE', '\u06EF' },
+    new char[] { '\u06FF' },
+    new char[] { '\u070E' },
+    new char[] { '\u072D', '\u072F' },
+    new char[] { '\u074B', '\u077F' },
+    new char[] { '\u07B2', '\u0900' },
+    new char[] { '\u0904' },
+    new char[] { '\u093A', '\u093B' },
+    new char[] { '\u094E', '\u094F' },
+    new char[] { '\u0955', '\u0957' },
+    new char[] { '\u0971', '\u0980' },
+    new char[] { '\u0984' },
+    new char[] { '\u098D', '\u098E' },
+    new char[] { '\u0991', '\u0992' },
+    new char[] { '\u09A9' },
+    new char[] { '\u09B1' },
+    new char[] { '\u09B3', '\u09B5' },
+    new char[] { '\u09BA', '\u09BB' },
+    new char[] { '\u09BD' },
+    new char[] { '\u09C5', '\u09C6' },
+    new char[] { '\u09C9', '\u09CA' },
+    new char[] { '\u09CE', '\u09D6' },
+    new char[] { '\u09D8', '\u09DB' },
+    new char[] { '\u09DE' },
+    new char[] { '\u09E4', '\u09E5' },
+    new char[] { '\u09FB', '\u0A01' },
+    new char[] { '\u0A03', '\u0A04' },
+    new char[] { '\u0A0B', '\u0A0E' },
+    new char[] { '\u0A11', '\u0A12' },
+    new char[] { '\u0A29' },
+    new char[] { '\u0A31' },
+    new char[] { '\u0A34' },
+    new char[] { '\u0A37' },
+    new char[] { '\u0A3A', '\u0A3B' },
+    new char[] { '\u0A3D' },
+    new char[] { '\u0A43', '\u0A46' },
+    new char[] { '\u0A49', '\u0A4A' },
+    new char[] { '\u0A4E', '\u0A58' },
+    new char[] { '\u0A5D' },
+    new char[] { '\u0A5F', '\u0A65' },
+    new char[] { '\u0A75', '\u0A80' },
+    new char[] { '\u0A84' },
+    new char[] { '\u0A8C' },
+    new char[] { '\u0A8E' },
+    new char[] { '\u0A92' },
+    new char[] { '\u0AA9' },
+    new char[] { '\u0AB1' },
+    new char[] { '\u0AB4' },
+    new char[] { '\u0ABA', '\u0ABB' },
+    new char[] { '\u0AC6' },
+    new char[] { '\u0ACA' },
+    new char[] { '\u0ACE', '\u0ACF' },
+    new char[] { '\u0AD1', '\u0ADF' },
+    new char[] { '\u0AE1', '\u0AE5' },
+    new char[] { '\u0AF0', '\u0B00' },
+    new char[] { '\u0B04' },
+    new char[] { '\u0B0D', '\u0B0E' },
+    new char[] { '\u0B11', '\u0B12' },
+    new char[] { '\u0B29' },
+    new char[] { '\u0B31' },
+    new char[] { '\u0B34', '\u0B35' },
+    new char[] { '\u0B3A', '\u0B3B' },
+    new char[] { '\u0B44', '\u0B46' },
+    new char[] { '\u0B49', '\u0B4A' },
+    new char[] { '\u0B4E', '\u0B55' },
+    new char[] { '\u0B58', '\u0B5B' },
+    new char[] { '\u0B5E' },
+    new char[] { '\u0B62', '\u0B65' },
+    new char[] { '\u0B71', '\u0B81' },
+    new char[] { '\u0B84' },
+    new char[] { '\u0B8B', '\u0B8D' },
+    new char[] { '\u0B91' },
+    new char[] { '\u0B96', '\u0B98' },
+    new char[] { '\u0B9B' },
+    new char[] { '\u0B9D' },
+    new char[] { '\u0BA0', '\u0BA2' },
+    new char[] { '\u0BA5', '\u0BA7' },
+    new char[] { '\u0BAB', '\u0BAD' },
+    new char[] { '\u0BB6' },
+    new char[] { '\u0BBA', '\u0BBD' },
+    new char[] { '\u0BC3', '\u0BC5' },
+    new char[] { '\u0BC9' },
+    new char[] { '\u0BCE', '\u0BD6' },
+    new char[] { '\u0BD8', '\u0BE6' },
+    new char[] { '\u0BF3', '\u0C00' },
+    new char[] { '\u0C04' },
+    new char[] { '\u0C0D' },
+    new char[] { '\u0C11' },
+    new char[] { '\u0C29' },
+    new char[] { '\u0C34' },
+    new char[] { '\u0C3A', '\u0C3D' },
+    new char[] { '\u0C45' },
+    new char[] { '\u0C49' },
+    new char[] { '\u0C4E', '\u0C54' },
+    new char[] { '\u0C57', '\u0C5F' },
+    new char[] { '\u0C62', '\u0C65' },
+    new char[] { '\u0C70', '\u0C81' },
+    new char[] { '\u0C84' },
+    new char[] { '\u0C8D' },
+    new char[] { '\u0C91' },
+    new char[] { '\u0CA9' },
+    new char[] { '\u0CB4' },
+    new char[] { '\u0CBA', '\u0CBD' },
+    new char[] { '\u0CC5' },
+    new char[] { '\u0CC9' },
+    new char[] { '\u0CCE', '\u0CD4' },
+    new char[] { '\u0CD7', '\u0CDD' },
+    new char[] { '\u0CDF' },
+    new char[] { '\u0CE2', '\u0CE5' },
+    new char[] { '\u0CF0', '\u0D01' },
+    new char[] { '\u0D04' },
+    new char[] { '\u0D0D' },
+    new char[] { '\u0D11' },
+    new char[] { '\u0D29' },
+    new char[] { '\u0D3A', '\u0D3D' },
+    new char[] { '\u0D44', '\u0D45' },
+    new char[] { '\u0D49' },
+    new char[] { '\u0D4E', '\u0D56' },
+    new char[] { '\u0D58', '\u0D5F' },
+    new char[] { '\u0D62', '\u0D65' },
+    new char[] { '\u0D70', '\u0D81' },
+    new char[] { '\u0D84' },
+    new char[] { '\u0D97', '\u0D99' },
+    new char[] { '\u0DB2' },
+    new char[] { '\u0DBC' },
+    new char[] { '\u0DBE', '\u0DBF' },
+    new char[] { '\u0DC7', '\u0DC9' },
+    new char[] { '\u0DCB', '\u0DCE' },
+    new char[] { '\u0DD5' },
+    new char[] { '\u0DD7' },
+    new char[] { '\u0DE0', '\u0DF1' },
+    new char[] { '\u0DF5', '\u0E00' },
+    new char[] { '\u0E3B', '\u0E3E' },
+    new char[] { '\u0E5C', '\u0E80' },
+    new char[] { '\u0E83' },
+    new char[] { '\u0E85', '\u0E86' },
+    new char[] { '\u0E89' },
+    new char[] { '\u0E8B', '\u0E8C' },
+    new char[] { '\u0E8E', '\u0E93' },
+    new char[] { '\u0E98' },
+    new char[] { '\u0EA0' },
+    new char[] { '\u0EA4' },
+    new char[] { '\u0EA6' },
+    new char[] { '\u0EA8', '\u0EA9' },
+    new char[] { '\u0EAC' },
+    new char[] { '\u0EBA' },
+    new char[] { '\u0EBE', '\u0EBF' },
+    new char[] { '\u0EC5' },
+    new char[] { '\u0EC7' },
+    new char[] { '\u0ECE', '\u0ECF' },
+    new char[] { '\u0EDA', '\u0EDB' },
+    new char[] { '\u0EDE', '\u0EFF' },
+    new char[] { '\u0F48' },
+    new char[] { '\u0F6B', '\u0F70' },
+    new char[] { '\u0F8C', '\u0F8F' },
+    new char[] { '\u0F98' },
+    new char[] { '\u0FBD' },
+    new char[] { '\u0FCD', '\u0FCE' },
+    new char[] { '\u0FD0', '\u0FFF' },
+    new char[] { '\u1022' },
+    new char[] { '\u1028' },
+    new char[] { '\u102B' },
+    new char[] { '\u1033', '\u1035' },
+    new char[] { '\u103A', '\u103F' },
+    new char[] { '\u105A', '\u109F' },
+    new char[] { '\u10C6', '\u10CF' },
+    new char[] { '\u10F9', '\u10FA' },
+    new char[] { '\u10FC', '\u10FF' },
+    new char[] { '\u115A', '\u115E' },
+    new char[] { '\u11A3', '\u11A7' },
+    new char[] { '\u11FA', '\u11FF' },
+    new char[] { '\u1207' },
+    new char[] { '\u1247' },
+    new char[] { '\u1249' },
+    new char[] { '\u124E', '\u124F' },
+    new char[] { '\u1257' },
+    new char[] { '\u1259' },
+    new char[] { '\u125E', '\u125F' },
+    new char[] { '\u1287' },
+    new char[] { '\u1289' },
+    new char[] { '\u128E', '\u128F' },
+    new char[] { '\u12AF' },
+    new char[] { '\u12B1' },
+    new char[] { '\u12B6', '\u12B7' },
+    new char[] { '\u12BF' },
+    new char[] { '\u12C1' },
+    new char[] { '\u12C6', '\u12C7' },
+    new char[] { '\u12CF' },
+    new char[] { '\u12D7' },
+    new char[] { '\u12EF' },
+    new char[] { '\u130F' },
+    new char[] { '\u1311' },
+    new char[] { '\u1316', '\u1317' },
+    new char[] { '\u131F' },
+    new char[] { '\u1347' },
+    new char[] { '\u135B', '\u1360' },
+    new char[] { '\u137D', '\u139F' },
+    new char[] { '\u13F5', '\u1400' },
+    new char[] { '\u1677', '\u167F' },
+    new char[] { '\u169D', '\u169F' },
+    new char[] { '\u16F1', '\u16FF' },
+    new char[] { '\u170D' },
+    new char[] { '\u1715', '\u171F' },
+    new char[] { '\u1737', '\u173F' },
+    new char[] { '\u1754', '\u175F' },
+    new char[] { '\u176D' },
+    new char[] { '\u1771' },
+    new char[] { '\u1774', '\u177F' },
+    new char[] { '\u17DD', '\u17DF' },
+    new char[] { '\u17EA', '\u17FF' },
+    new char[] { '\u180F' },
+    new char[] { '\u181A', '\u181F' },
+    new char[] { '\u1878', '\u187F' },
+    new char[] { '\u18AA', '\u1DFF' },
+    new char[] { '\u1E9C', '\u1E9F' },
+    new char[] { '\u1EFA', '\u1EFF' },
+    new char[] { '\u1F16', '\u1F17' },
+    new char[] { '\u1F1E', '\u1F1F' },
+    new char[] { '\u1F46', '\u1F47' },
+    new char[] { '\u1F4E', '\u1F4F' },
+    new char[] { '\u1F58' },
+    new char[] { '\u1F5A' },
+    new char[] { '\u1F5C' },
+    new char[] { '\u1F5E' },
+    new char[] { '\u1F7E', '\u1F7F' },
+    new char[] { '\u1FB5' },
+    new char[] { '\u1FC5' },
+    new char[] { '\u1FD4', '\u1FD5' },
+    new char[] { '\u1FDC' },
+    new char[] { '\u1FF0', '\u1FF1' },
+    new char[] { '\u1FF5' },
+    new char[] { '\u1FFF' },
+    new char[] { '\u2053', '\u2056' },
+    new char[] { '\u2058', '\u205E' },
+    new char[] { '\u2064', '\u2069' },
+    new char[] { '\u2072', '\u2073' },
+    new char[] { '\u208F', '\u209F' },
+    new char[] { '\u20B2', '\u20CF' },
+    new char[] { '\u20EB', '\u20FF' },
+    new char[] { '\u213B', '\u213C' },
+    new char[] { '\u214C', '\u2152' },
+    new char[] { '\u2184', '\u218F' },
+    new char[] { '\u23CF', '\u23FF' },
+    new char[] { '\u2427', '\u243F' },
+    new char[] { '\u244B', '\u245F' },
+    new char[] { '\u24FF' },
+    new char[] { '\u2614', '\u2615' },
+    new char[] { '\u2618' },
+    new char[] { '\u267E', '\u267F' },
+    new char[] { '\u268A', '\u2700' },
+    new char[] { '\u2705' },
+    new char[] { '\u270A', '\u270B' },
+    new char[] { '\u2728' },
+    new char[] { '\u274C' },
+    new char[] { '\u274E' },
+    new char[] { '\u2753', '\u2755' },
+    new char[] { '\u2757' },
+    new char[] { '\u275F', '\u2760' },
+    new char[] { '\u2795', '\u2797' },
+    new char[] { '\u27B0' },
+    new char[] { '\u27BF', '\u27CF' },
+    new char[] { '\u27EC', '\u27EF' },
+    new char[] { '\u2B00', '\u2E7F' },
+    new char[] { '\u2E9A' },
+    new char[] { '\u2EF4', '\u2EFF' },
+    new char[] { '\u2FD6', '\u2FEF' },
+    new char[] { '\u2FFC', '\u2FFF' },
+    new char[] { '\u3040' },
+    new char[] { '\u3097', '\u3098' },
+    new char[] { '\u3100', '\u3104' },
+    new char[] { '\u312D', '\u3130' },
+    new char[] { '\u318F' },
+    new char[] { '\u31B8', '\u31EF' },
+    new char[] { '\u321D', '\u321F' },
+    new char[] { '\u3244', '\u3250' },
+    new char[] { '\u327C', '\u327E' },
+    new char[] { '\u32CC', '\u32CF' },
+    new char[] { '\u32FF' },
+    new char[] { '\u3377', '\u337A' },
+    new char[] { '\u33DE', '\u33DF' },
+    new char[] { '\u33FF' },
+    new char[] { '\u4DB6', '\u4DFF' },
+    new char[] { '\u9FA6', '\u9FFF' },
+    new char[] { '\uA48D', '\uA48F' },
+    new char[] { '\uA4C7', '\uABFF' },
+    new char[] { '\uD7A4', '\uD7FF' },
+    new char[] { '\uFA2E', '\uFA2F' },
+    new char[] { '\uFA6B', '\uFAFF' },
+    new char[] { '\uFB07', '\uFB12' },
+    new char[] { '\uFB18', '\uFB1C' },
+    new char[] { '\uFB37' },
+    new char[] { '\uFB3D' },
+    new char[] { '\uFB3F' },
+    new char[] { '\uFB42' },
+    new char[] { '\uFB45' },
+    new char[] { '\uFBB2', '\uFBD2' },
+    new char[] { '\uFD40', '\uFD4F' },
+    new char[] { '\uFD90', '\uFD91' },
+    new char[] { '\uFDC8', '\uFDCF' },
+    new char[] { '\uFDFD', '\uFDFF' },
+    new char[] { '\uFE10', '\uFE1F' },
+    new char[] { '\uFE24', '\uFE2F' },
+    new char[] { '\uFE47', '\uFE48' },
+    new char[] { '\uFE53' },
+    new char[] { '\uFE67' },
+    new char[] { '\uFE6C', '\uFE6F' },
+    new char[] { '\uFE75' },
+    new char[] { '\uFEFD', '\uFEFE' },
+    new char[] { '\uFF00' },
+    new char[] { '\uFFBF', '\uFFC1' },
+    new char[] { '\uFFC8', '\uFFC9' },
+    new char[] { '\uFFD0', '\uFFD1' },
+    new char[] { '\uFFD8', '\uFFD9' },
+    new char[] { '\uFFDD', '\uFFDF' },
+    new char[] { '\uFFE7' },
+    new char[] { '\uFFEF', '\uFFF8' },
+  };
+
+  final static char[] B1 = new char[] {
+    '\u00AD',
+    '\u034F',
+    '\u1806',
+    '\u180B',
+    '\u180C',
+    '\u180D',
+    '\u200B',
+    '\u200C',
+    '\u200D',
+    '\u2060',
+    '\uFE00',
+    '\uFE01',
+    '\uFE02',
+    '\uFE03',
+    '\uFE04',
+    '\uFE05',
+    '\uFE06',
+    '\uFE07',
+    '\uFE08',
+    '\uFE09',
+    '\uFE0A',
+    '\uFE0B',
+    '\uFE0C',
+    '\uFE0D',
+    '\uFE0E',
+    '\uFE0F',
+    '\uFEFF',
+  };
+
+  final static char[] B2search = new char[] {
+    '\u0041',
+    '\u0042',
+    '\u0043',
+    '\u0044',
+    '\u0045',
+    '\u0046',
+    '\u0047',
+    '\u0048',
+    '\u0049',
+    '\u004A',
+    '\u004B',
+    '\u004C',
+    '\u004D',
+    '\u004E',
+    '\u004F',
+    '\u0050',
+    '\u0051',
+    '\u0052',
+    '\u0053',
+    '\u0054',
+    '\u0055',
+    '\u0056',
+    '\u0057',
+    '\u0058',
+    '\u0059',
+    '\u005A',
+    '\u00B5',
+    '\u00C0',
+    '\u00C1',
+    '\u00C2',
+    '\u00C3',
+    '\u00C4',
+    '\u00C5',
+    '\u00C6',
+    '\u00C7',
+    '\u00C8',
+    '\u00C9',
+    '\u00CA',
+    '\u00CB',
+    '\u00CC',
+    '\u00CD',
+    '\u00CE',
+    '\u00CF',
+    '\u00D0',
+    '\u00D1',
+    '\u00D2',
+    '\u00D3',
+    '\u00D4',
+    '\u00D5',
+    '\u00D6',
+    '\u00D8',
+    '\u00D9',
+    '\u00DA',
+    '\u00DB',
+    '\u00DC',
+    '\u00DD',
+    '\u00DE',
+    '\u00DF',
+    '\u0100',
+    '\u0102',
+    '\u0104',
+    '\u0106',
+    '\u0108',
+    '\u010A',
+    '\u010C',
+    '\u010E',
+    '\u0110',
+    '\u0112',
+    '\u0114',
+    '\u0116',
+    '\u0118',
+    '\u011A',
+    '\u011C',
+    '\u011E',
+    '\u0120',
+    '\u0122',
+    '\u0124',
+    '\u0126',
+    '\u0128',
+    '\u012A',
+    '\u012C',
+    '\u012E',
+    '\u0130',
+    '\u0132',
+    '\u0134',
+    '\u0136',
+    '\u0139',
+    '\u013B',
+    '\u013D',
+    '\u013F',
+    '\u0141',
+    '\u0143',
+    '\u0145',
+    '\u0147',
+    '\u0149',
+    '\u014A',
+    '\u014C',
+    '\u014E',
+    '\u0150',
+    '\u0152',
+    '\u0154',
+    '\u0156',
+    '\u0158',
+    '\u015A',
+    '\u015C',
+    '\u015E',
+    '\u0160',
+    '\u0162',
+    '\u0164',
+    '\u0166',
+    '\u0168',
+    '\u016A',
+    '\u016C',
+    '\u016E',
+    '\u0170',
+    '\u0172',
+    '\u0174',
+    '\u0176',
+    '\u0178',
+    '\u0179',
+    '\u017B',
+    '\u017D',
+    '\u017F',
+    '\u0181',
+    '\u0182',
+    '\u0184',
+    '\u0186',
+    '\u0187',
+    '\u0189',
+    '\u018A',
+    '\u018B',
+    '\u018E',
+    '\u018F',
+    '\u0190',
+    '\u0191',
+    '\u0193',
+    '\u0194',
+    '\u0196',
+    '\u0197',
+    '\u0198',
+    '\u019C',
+    '\u019D',
+    '\u019F',
+    '\u01A0',
+    '\u01A2',
+    '\u01A4',
+    '\u01A6',
+    '\u01A7',
+    '\u01A9',
+    '\u01AC',
+    '\u01AE',
+    '\u01AF',
+    '\u01B1',
+    '\u01B2',
+    '\u01B3',
+    '\u01B5',
+    '\u01B7',
+    '\u01B8',
+    '\u01BC',
+    '\u01C4',
+    '\u01C5',
+    '\u01C7',
+    '\u01C8',
+    '\u01CA',
+    '\u01CB',
+    '\u01CD',
+    '\u01CF',
+    '\u01D1',
+    '\u01D3',
+    '\u01D5',
+    '\u01D7',
+    '\u01D9',
+    '\u01DB',
+    '\u01DE',
+    '\u01E0',
+    '\u01E2',
+    '\u01E4',
+    '\u01E6',
+    '\u01E8',
+    '\u01EA',
+    '\u01EC',
+    '\u01EE',
+    '\u01F0',
+    '\u01F1',
+    '\u01F2',
+    '\u01F4',
+    '\u01F6',
+    '\u01F7',
+    '\u01F8',
+    '\u01FA',
+    '\u01FC',
+    '\u01FE',
+    '\u0200',
+    '\u0202',
+    '\u0204',
+    '\u0206',
+    '\u0208',
+    '\u020A',
+    '\u020C',
+    '\u020E',
+    '\u0210',
+    '\u0212',
+    '\u0214',
+    '\u0216',
+    '\u0218',
+    '\u021A',
+    '\u021C',
+    '\u021E',
+    '\u0220',
+    '\u0222',
+    '\u0224',
+    '\u0226',
+    '\u0228',
+    '\u022A',
+    '\u022C',
+    '\u022E',
+    '\u0230',
+    '\u0232',
+    '\u0345',
+    '\u037A',
+    '\u0386',
+    '\u0388',
+    '\u0389',
+    '\u038A',
+    '\u038C',
+    '\u038E',
+    '\u038F',
+    '\u0390',
+    '\u0391',
+    '\u0392',
+    '\u0393',
+    '\u0394',
+    '\u0395',
+    '\u0396',
+    '\u0397',
+    '\u0398',
+    '\u0399',
+    '\u039A',
+    '\u039B',
+    '\u039C',
+    '\u039D',
+    '\u039E',
+    '\u039F',
+    '\u03A0',
+    '\u03A1',
+    '\u03A3',
+    '\u03A4',
+    '\u03A5',
+    '\u03A6',
+    '\u03A7',
+    '\u03A8',
+    '\u03A9',
+    '\u03AA',
+    '\u03AB',
+    '\u03B0',
+    '\u03C2',
+    '\u03D0',
+    '\u03D1',
+    '\u03D2',
+    '\u03D3',
+    '\u03D4',
+    '\u03D5',
+    '\u03D6',
+    '\u03D8',
+    '\u03DA',
+    '\u03DC',
+    '\u03DE',
+    '\u03E0',
+    '\u03E2',
+    '\u03E4',
+    '\u03E6',
+    '\u03E8',
+    '\u03EA',
+    '\u03EC',
+    '\u03EE',
+    '\u03F0',
+    '\u03F1',
+    '\u03F2',
+    '\u03F4',
+    '\u03F5',
+    '\u0400',
+    '\u0401',
+    '\u0402',
+    '\u0403',
+    '\u0404',
+    '\u0405',
+    '\u0406',
+    '\u0407',
+    '\u0408',
+    '\u0409',
+    '\u040A',
+    '\u040B',
+    '\u040C',
+    '\u040D',
+    '\u040E',
+    '\u040F',
+    '\u0410',
+    '\u0411',
+    '\u0412',
+    '\u0413',
+    '\u0414',
+    '\u0415',
+    '\u0416',
+    '\u0417',
+    '\u0418',
+    '\u0419',
+    '\u041A',
+    '\u041B',
+    '\u041C',
+    '\u041D',
+    '\u041E',
+    '\u041F',
+    '\u0420',
+    '\u0421',
+    '\u0422',
+    '\u0423',
+    '\u0424',
+    '\u0425',
+    '\u0426',
+    '\u0427',
+    '\u0428',
+    '\u0429',
+    '\u042A',
+    '\u042B',
+    '\u042C',
+    '\u042D',
+    '\u042E',
+    '\u042F',
+    '\u0460',
+    '\u0462',
+    '\u0464',
+    '\u0466',
+    '\u0468',
+    '\u046A',
+    '\u046C',
+    '\u046E',
+    '\u0470',
+    '\u0472',
+    '\u0474',
+    '\u0476',
+    '\u0478',
+    '\u047A',
+    '\u047C',
+    '\u047E',
+    '\u0480',
+    '\u048A',
+    '\u048C',
+    '\u048E',
+    '\u0490',
+    '\u0492',
+    '\u0494',
+    '\u0496',
+    '\u0498',
+    '\u049A',
+    '\u049C',
+    '\u049E',
+    '\u04A0',
+    '\u04A2',
+    '\u04A4',
+    '\u04A6',
+    '\u04A8',
+    '\u04AA',
+    '\u04AC',
+    '\u04AE',
+    '\u04B0',
+    '\u04B2',
+    '\u04B4',
+    '\u04B6',
+    '\u04B8',
+    '\u04BA',
+    '\u04BC',
+    '\u04BE',
+    '\u04C1',
+    '\u04C3',
+    '\u04C5',
+    '\u04C7',
+    '\u04C9',
+    '\u04CB',
+    '\u04CD',
+    '\u04D0',
+    '\u04D2',
+    '\u04D4',
+    '\u04D6',
+    '\u04D8',
+    '\u04DA',
+    '\u04DC',
+    '\u04DE',
+    '\u04E0',
+    '\u04E2',
+    '\u04E4',
+    '\u04E6',
+    '\u04E8',
+    '\u04EA',
+    '\u04EC',
+    '\u04EE',
+    '\u04F0',
+    '\u04F2',
+    '\u04F4',
+    '\u04F8',
+    '\u0500',
+    '\u0502',
+    '\u0504',
+    '\u0506',
+    '\u0508',
+    '\u050A',
+    '\u050C',
+    '\u050E',
+    '\u0531',
+    '\u0532',
+    '\u0533',
+    '\u0534',
+    '\u0535',
+    '\u0536',
+    '\u0537',
+    '\u0538',
+    '\u0539',
+    '\u053A',
+    '\u053B',
+    '\u053C',
+    '\u053D',
+    '\u053E',
+    '\u053F',
+    '\u0540',
+    '\u0541',
+    '\u0542',
+    '\u0543',
+    '\u0544',
+    '\u0545',
+    '\u0546',
+    '\u0547',
+    '\u0548',
+    '\u0549',
+    '\u054A',
+    '\u054B',
+    '\u054C',
+    '\u054D',
+    '\u054E',
+    '\u054F',
+    '\u0550',
+    '\u0551',
+    '\u0552',
+    '\u0553',
+    '\u0554',
+    '\u0555',
+    '\u0556',
+    '\u0587',
+    '\u1E00',
+    '\u1E02',
+    '\u1E04',
+    '\u1E06',
+    '\u1E08',
+    '\u1E0A',
+    '\u1E0C',
+    '\u1E0E',
+    '\u1E10',
+    '\u1E12',
+    '\u1E14',
+    '\u1E16',
+    '\u1E18',
+    '\u1E1A',
+    '\u1E1C',
+    '\u1E1E',
+    '\u1E20',
+    '\u1E22',
+    '\u1E24',
+    '\u1E26',
+    '\u1E28',
+    '\u1E2A',
+    '\u1E2C',
+    '\u1E2E',
+    '\u1E30',
+    '\u1E32',
+    '\u1E34',
+    '\u1E36',
+    '\u1E38',
+    '\u1E3A',
+    '\u1E3C',
+    '\u1E3E',
+    '\u1E40',
+    '\u1E42',
+    '\u1E44',
+    '\u1E46',
+    '\u1E48',
+    '\u1E4A',
+    '\u1E4C',
+    '\u1E4E',
+    '\u1E50',
+    '\u1E52',
+    '\u1E54',
+    '\u1E56',
+    '\u1E58',
+    '\u1E5A',
+    '\u1E5C',
+    '\u1E5E',
+    '\u1E60',
+    '\u1E62',
+    '\u1E64',
+    '\u1E66',
+    '\u1E68',
+    '\u1E6A',
+    '\u1E6C',
+    '\u1E6E',
+    '\u1E70',
+    '\u1E72',
+    '\u1E74',
+    '\u1E76',
+    '\u1E78',
+    '\u1E7A',
+    '\u1E7C',
+    '\u1E7E',
+    '\u1E80',
+    '\u1E82',
+    '\u1E84',
+    '\u1E86',
+    '\u1E88',
+    '\u1E8A',
+    '\u1E8C',
+    '\u1E8E',
+    '\u1E90',
+    '\u1E92',
+    '\u1E94',
+    '\u1E96',
+    '\u1E97',
+    '\u1E98',
+    '\u1E99',
+    '\u1E9A',
+    '\u1E9B',
+    '\u1EA0',
+    '\u1EA2',
+    '\u1EA4',
+    '\u1EA6',
+    '\u1EA8',
+    '\u1EAA',
+    '\u1EAC',
+    '\u1EAE',
+    '\u1EB0',
+    '\u1EB2',
+    '\u1EB4',
+    '\u1EB6',
+    '\u1EB8',
+    '\u1EBA',
+    '\u1EBC',
+    '\u1EBE',
+    '\u1EC0',
+    '\u1EC2',
+    '\u1EC4',
+    '\u1EC6',
+    '\u1EC8',
+    '\u1ECA',
+    '\u1ECC',
+    '\u1ECE',
+    '\u1ED0',
+    '\u1ED2',
+    '\u1ED4',
+    '\u1ED6',
+    '\u1ED8',
+    '\u1EDA',
+    '\u1EDC',
+    '\u1EDE',
+    '\u1EE0',
+    '\u1EE2',
+    '\u1EE4',
+    '\u1EE6',
+    '\u1EE8',
+    '\u1EEA',
+    '\u1EEC',
+    '\u1EEE',
+    '\u1EF0',
+    '\u1EF2',
+    '\u1EF4',
+    '\u1EF6',
+    '\u1EF8',
+    '\u1F08',
+    '\u1F09',
+    '\u1F0A',
+    '\u1F0B',
+    '\u1F0C',
+    '\u1F0D',
+    '\u1F0E',
+    '\u1F0F',
+    '\u1F18',
+    '\u1F19',
+    '\u1F1A',
+    '\u1F1B',
+    '\u1F1C',
+    '\u1F1D',
+    '\u1F28',
+    '\u1F29',
+    '\u1F2A',
+    '\u1F2B',
+    '\u1F2C',
+    '\u1F2D',
+    '\u1F2E',
+    '\u1F2F',
+    '\u1F38',
+    '\u1F39',
+    '\u1F3A',
+    '\u1F3B',
+    '\u1F3C',
+    '\u1F3D',
+    '\u1F3E',
+    '\u1F3F',
+    '\u1F48',
+    '\u1F49',
+    '\u1F4A',
+    '\u1F4B',
+    '\u1F4C',
+    '\u1F4D',
+    '\u1F50',
+    '\u1F52',
+    '\u1F54',
+    '\u1F56',
+    '\u1F59',
+    '\u1F5B',
+    '\u1F5D',
+    '\u1F5F',
+    '\u1F68',
+    '\u1F69',
+    '\u1F6A',
+    '\u1F6B',
+    '\u1F6C',
+    '\u1F6D',
+    '\u1F6E',
+    '\u1F6F',
+    '\u1F80',
+    '\u1F81',
+    '\u1F82',
+    '\u1F83',
+    '\u1F84',
+    '\u1F85',
+    '\u1F86',
+    '\u1F87',
+    '\u1F88',
+    '\u1F89',
+    '\u1F8A',
+    '\u1F8B',
+    '\u1F8C',
+    '\u1F8D',
+    '\u1F8E',
+    '\u1F8F',
+    '\u1F90',
+    '\u1F91',
+    '\u1F92',
+    '\u1F93',
+    '\u1F94',
+    '\u1F95',
+    '\u1F96',
+    '\u1F97',
+    '\u1F98',
+    '\u1F99',
+    '\u1F9A',
+    '\u1F9B',
+    '\u1F9C',
+    '\u1F9D',
+    '\u1F9E',
+    '\u1F9F',
+    '\u1FA0',
+    '\u1FA1',
+    '\u1FA2',
+    '\u1FA3',
+    '\u1FA4',
+    '\u1FA5',
+    '\u1FA6',
+    '\u1FA7',
+    '\u1FA8',
+    '\u1FA9',
+    '\u1FAA',
+    '\u1FAB',
+    '\u1FAC',
+    '\u1FAD',
+    '\u1FAE',
+    '\u1FAF',
+    '\u1FB2',
+    '\u1FB3',
+    '\u1FB4',
+    '\u1FB6',
+    '\u1FB7',
+    '\u1FB8',
+    '\u1FB9',
+    '\u1FBA',
+    '\u1FBB',
+    '\u1FBC',
+    '\u1FBE',
+    '\u1FC2',
+    '\u1FC3',
+    '\u1FC4',
+    '\u1FC6',
+    '\u1FC7',
+    '\u1FC8',
+    '\u1FC9',
+    '\u1FCA',
+    '\u1FCB',
+    '\u1FCC',
+    '\u1FD2',
+    '\u1FD3',
+    '\u1FD6',
+    '\u1FD7',
+    '\u1FD8',
+    '\u1FD9',
+    '\u1FDA',
+    '\u1FDB',
+    '\u1FE2',
+    '\u1FE3',
+    '\u1FE4',
+    '\u1FE6',
+    '\u1FE7',
+    '\u1FE8',
+    '\u1FE9',
+    '\u1FEA',
+    '\u1FEB',
+    '\u1FEC',
+    '\u1FF2',
+    '\u1FF3',
+    '\u1FF4',
+    '\u1FF6',
+    '\u1FF7',
+    '\u1FF8',
+    '\u1FF9',
+    '\u1FFA',
+    '\u1FFB',
+    '\u1FFC',
+    '\u20A8',
+    '\u2102',
+    '\u2103',
+    '\u2107',
+    '\u2109',
+    '\u210B',
+    '\u210C',
+    '\u210D',
+    '\u2110',
+    '\u2111',
+    '\u2112',
+    '\u2115',
+    '\u2116',
+    '\u2119',
+    '\u211A',
+    '\u211B',
+    '\u211C',
+    '\u211D',
+    '\u2120',
+    '\u2121',
+    '\u2122',
+    '\u2124',
+    '\u2126',
+    '\u2128',
+    '\u212A',
+    '\u212B',
+    '\u212C',
+    '\u212D',
+    '\u2130',
+    '\u2131',
+    '\u2133',
+    '\u213E',
+    '\u213F',
+    '\u2145',
+    '\u2160',
+    '\u2161',
+    '\u2162',
+    '\u2163',
+    '\u2164',
+    '\u2165',
+    '\u2166',
+    '\u2167',
+    '\u2168',
+    '\u2169',
+    '\u216A',
+    '\u216B',
+    '\u216C',
+    '\u216D',
+    '\u216E',
+    '\u216F',
+    '\u24B6',
+    '\u24B7',
+    '\u24B8',
+    '\u24B9',
+    '\u24BA',
+    '\u24BB',
+    '\u24BC',
+    '\u24BD',
+    '\u24BE',
+    '\u24BF',
+    '\u24C0',
+    '\u24C1',
+    '\u24C2',
+    '\u24C3',
+    '\u24C4',
+    '\u24C5',
+    '\u24C6',
+    '\u24C7',
+    '\u24C8',
+    '\u24C9',
+    '\u24CA',
+    '\u24CB',
+    '\u24CC',
+    '\u24CD',
+    '\u24CE',
+    '\u24CF',
+    '\u3371',
+    '\u3373',
+    '\u3375',
+    '\u3380',
+    '\u3381',
+    '\u3382',
+    '\u3383',
+    '\u3384',
+    '\u3385',
+    '\u3386',
+    '\u3387',
+    '\u338A',
+    '\u338B',
+    '\u338C',
+    '\u3390',
+    '\u3391',
+    '\u3392',
+    '\u3393',
+    '\u3394',
+    '\u33A9',
+    '\u33AA',
+    '\u33AB',
+    '\u33AC',
+    '\u33B4',
+    '\u33B5',
+    '\u33B6',
+    '\u33B7',
+    '\u33B8',
+    '\u33B9',
+    '\u33BA',
+    '\u33BB',
+    '\u33BC',
+    '\u33BD',
+    '\u33BE',
+    '\u33BF',
+    '\u33C0',
+    '\u33C1',
+    '\u33C3',
+    '\u33C6',
+    '\u33C7',
+    '\u33C8',
+    '\u33C9',
+    '\u33CB',
+    '\u33CD',
+    '\u33CE',
+    '\u33D7',
+    '\u33D9',
+    '\u33DA',
+    '\u33DC',
+    '\u33DD',
+    '\uFB00',
+    '\uFB01',
+    '\uFB02',
+    '\uFB03',
+    '\uFB04',
+    '\uFB05',
+    '\uFB06',
+    '\uFB13',
+    '\uFB14',
+    '\uFB15',
+    '\uFB16',
+    '\uFB17',
+    '\uFF21',
+    '\uFF22',
+    '\uFF23',
+    '\uFF24',
+    '\uFF25',
+    '\uFF26',
+    '\uFF27',
+    '\uFF28',
+    '\uFF29',
+    '\uFF2A',
+    '\uFF2B',
+    '\uFF2C',
+    '\uFF2D',
+    '\uFF2E',
+    '\uFF2F',
+    '\uFF30',
+    '\uFF31',
+    '\uFF32',
+    '\uFF33',
+    '\uFF34',
+    '\uFF35',
+    '\uFF36',
+    '\uFF37',
+    '\uFF38',
+    '\uFF39',
+    '\uFF3A',
+  };
+
+  final static String[] B2replace = new String[] {
+    "\u0061",
+    "\u0062",
+    "\u0063",
+    "\u0064",
+    "\u0065",
+    "\u0066",
+    "\u0067",
+    "\u0068",
+    "\u0069",
+    "\u006A",
+    "\u006B",
+    "\u006C",
+    "\u006D",
+    "\u006E",
+    "\u006F",
+    "\u0070",
+    "\u0071",
+    "\u0072",
+    "\u0073",
+    "\u0074",
+    "\u0075",
+    "\u0076",
+    "\u0077",
+    "\u0078",
+    "\u0079",
+    "\u007A",
+    "\u03BC",
+    "\u00E0",
+    "\u00E1",
+    "\u00E2",
+    "\u00E3",
+    "\u00E4",
+    "\u00E5",
+    "\u00E6",
+    "\u00E7",
+    "\u00E8",
+    "\u00E9",
+    "\u00EA",
+    "\u00EB",
+    "\u00EC",
+    "\u00ED",
+    "\u00EE",
+    "\u00EF",
+    "\u00F0",
+    "\u00F1",
+    "\u00F2",
+    "\u00F3",
+    "\u00F4",
+    "\u00F5",
+    "\u00F6",
+    "\u00F8",
+    "\u00F9",
+    "\u00FA",
+    "\u00FB",
+    "\u00FC",
+    "\u00FD",
+    "\u00FE",
+    "\u0073\u0073",
+    "\u0101",
+    "\u0103",
+    "\u0105",
+    "\u0107",
+    "\u0109",
+    "\u010B",
+    "\u010D",
+    "\u010F",
+    "\u0111",
+    "\u0113",
+    "\u0115",
+    "\u0117",
+    "\u0119",
+    "\u011B",
+    "\u011D",
+    "\u011F",
+    "\u0121",
+    "\u0123",
+    "\u0125",
+    "\u0127",
+    "\u0129",
+    "\u012B",
+    "\u012D",
+    "\u012F",
+    "\u0069\u0307",
+    "\u0133",
+    "\u0135",
+    "\u0137",
+    "\u013A",
+    "\u013C",
+    "\u013E",
+    "\u0140",
+    "\u0142",
+    "\u0144",
+    "\u0146",
+    "\u0148",
+    "\u02BC\u006E",
+    "\u014B",
+    "\u014D",
+    "\u014F",
+    "\u0151",
+    "\u0153",
+    "\u0155",
+    "\u0157",
+    "\u0159",
+    "\u015B",
+    "\u015D",
+    "\u015F",
+    "\u0161",
+    "\u0163",
+    "\u0165",
+    "\u0167",
+    "\u0169",
+    "\u016B",
+    "\u016D",
+    "\u016F",
+    "\u0171",
+    "\u0173",
+    "\u0175",
+    "\u0177",
+    "\u00FF",
+    "\u017A",
+    "\u017C",
+    "\u017E",
+    "\u0073",
+    "\u0253",
+    "\u0183",
+    "\u0185",
+    "\u0254",
+    "\u0188",
+    "\u0256",
+    "\u0257",
+    "\u018C",
+    "\u01DD",
+    "\u0259",
+    "\u025B",
+    "\u0192",
+    "\u0260",
+    "\u0263",
+    "\u0269",
+    "\u0268",
+    "\u0199",
+    "\u026F",
+    "\u0272",
+    "\u0275",
+    "\u01A1",
+    "\u01A3",
+    "\u01A5",
+    "\u0280",
+    "\u01A8",
+    "\u0283",
+    "\u01AD",
+    "\u0288",
+    "\u01B0",
+    "\u028A",
+    "\u028B",
+    "\u01B4",
+    "\u01B6",
+    "\u0292",
+    "\u01B9",
+    "\u01BD",
+    "\u01C6",
+    "\u01C6",
+    "\u01C9",
+    "\u01C9",
+    "\u01CC",
+    "\u01CC",
+    "\u01CE",
+    "\u01D0",
+    "\u01D2",
+    "\u01D4",
+    "\u01D6",
+    "\u01D8",
+    "\u01DA",
+    "\u01DC",
+    "\u01DF",
+    "\u01E1",
+    "\u01E3",
+    "\u01E5",
+    "\u01E7",
+    "\u01E9",
+    "\u01EB",
+    "\u01ED",
+    "\u01EF",
+    "\u006A\u030C",
+    "\u01F3",
+    "\u01F3",
+    "\u01F5",
+    "\u0195",
+    "\u01BF",
+    "\u01F9",
+    "\u01FB",
+    "\u01FD",
+    "\u01FF",
+    "\u0201",
+    "\u0203",
+    "\u0205",
+    "\u0207",
+    "\u0209",
+    "\u020B",
+    "\u020D",
+    "\u020F",
+    "\u0211",
+    "\u0213",
+    "\u0215",
+    "\u0217",
+    "\u0219",
+    "\u021B",
+    "\u021D",
+    "\u021F",
+    "\u019E",
+    "\u0223",
+    "\u0225",
+    "\u0227",
+    "\u0229",
+    "\u022B",
+    "\u022D",
+    "\u022F",
+    "\u0231",
+    "\u0233",
+    "\u03B9",
+    "\u0020\u03B9",
+    "\u03AC",
+    "\u03AD",
+    "\u03AE",
+    "\u03AF",
+    "\u03CC",
+    "\u03CD",
+    "\u03CE",
+    "\u03B9\u0308\u0301",
+    "\u03B1",
+    "\u03B2",
+    "\u03B3",
+    "\u03B4",
+    "\u03B5",
+    "\u03B6",
+    "\u03B7",
+    "\u03B8",
+    "\u03B9",
+    "\u03BA",
+    "\u03BB",
+    "\u03BC",
+    "\u03BD",
+    "\u03BE",
+    "\u03BF",
+    "\u03C0",
+    "\u03C1",
+    "\u03C3",
+    "\u03C4",
+    "\u03C5",
+    "\u03C6",
+    "\u03C7",
+    "\u03C8",
+    "\u03C9",
+    "\u03CA",
+    "\u03CB",
+    "\u03C5\u0308\u0301",
+    "\u03C3",
+    "\u03B2",
+    "\u03B8",
+    "\u03C5",
+    "\u03CD",
+    "\u03CB",
+    "\u03C6",
+    "\u03C0",
+    "\u03D9",
+    "\u03DB",
+    "\u03DD",
+    "\u03DF",
+    "\u03E1",
+    "\u03E3",
+    "\u03E5",
+    "\u03E7",
+    "\u03E9",
+    "\u03EB",
+    "\u03ED",
+    "\u03EF",
+    "\u03BA",
+    "\u03C1",
+    "\u03C3",
+    "\u03B8",
+    "\u03B5",
+    "\u0450",
+    "\u0451",
+    "\u0452",
+    "\u0453",
+    "\u0454",
+    "\u0455",
+    "\u0456",
+    "\u0457",
+    "\u0458",
+    "\u0459",
+    "\u045A",
+    "\u045B",
+    "\u045C",
+    "\u045D",
+    "\u045E",
+    "\u045F",
+    "\u0430",
+    "\u0431",
+    "\u0432",
+    "\u0433",
+    "\u0434",
+    "\u0435",
+    "\u0436",
+    "\u0437",
+    "\u0438",
+    "\u0439",
+    "\u043A",
+    "\u043B",
+    "\u043C",
+    "\u043D",
+    "\u043E",
+    "\u043F",
+    "\u0440",
+    "\u0441",
+    "\u0442",
+    "\u0443",
+    "\u0444",
+    "\u0445",
+    "\u0446",
+    "\u0447",
+    "\u0448",
+    "\u0449",
+    "\u044A",
+    "\u044B",
+    "\u044C",
+    "\u044D",
+    "\u044E",
+    "\u044F",
+    "\u0461",
+    "\u0463",
+    "\u0465",
+    "\u0467",
+    "\u0469",
+    "\u046B",
+    "\u046D",
+    "\u046F",
+    "\u0471",
+    "\u0473",
+    "\u0475",
+    "\u0477",
+    "\u0479",
+    "\u047B",
+    "\u047D",
+    "\u047F",
+    "\u0481",
+    "\u048B",
+    "\u048D",
+    "\u048F",
+    "\u0491",
+    "\u0493",
+    "\u0495",
+    "\u0497",
+    "\u0499",
+    "\u049B",
+    "\u049D",
+    "\u049F",
+    "\u04A1",
+    "\u04A3",
+    "\u04A5",
+    "\u04A7",
+    "\u04A9",
+    "\u04AB",
+    "\u04AD",
+    "\u04AF",
+    "\u04B1",
+    "\u04B3",
+    "\u04B5",
+    "\u04B7",
+    "\u04B9",
+    "\u04BB",
+    "\u04BD",
+    "\u04BF",
+    "\u04C2",
+    "\u04C4",
+    "\u04C6",
+    "\u04C8",
+    "\u04CA",
+    "\u04CC",
+    "\u04CE",
+    "\u04D1",
+    "\u04D3",
+    "\u04D5",
+    "\u04D7",
+    "\u04D9",
+    "\u04DB",
+    "\u04DD",
+    "\u04DF",
+    "\u04E1",
+    "\u04E3",
+    "\u04E5",
+    "\u04E7",
+    "\u04E9",
+    "\u04EB",
+    "\u04ED",
+    "\u04EF",
+    "\u04F1",
+    "\u04F3",
+    "\u04F5",
+    "\u04F9",
+    "\u0501",
+    "\u0503",
+    "\u0505",
+    "\u0507",
+    "\u0509",
+    "\u050B",
+    "\u050D",
+    "\u050F",
+    "\u0561",
+    "\u0562",
+    "\u0563",
+    "\u0564",
+    "\u0565",
+    "\u0566",
+    "\u0567",
+    "\u0568",
+    "\u0569",
+    "\u056A",
+    "\u056B",
+    "\u056C",
+    "\u056D",
+    "\u056E",
+    "\u056F",
+    "\u0570",
+    "\u0571",
+    "\u0572",
+    "\u0573",
+    "\u0574",
+    "\u0575",
+    "\u0576",
+    "\u0577",
+    "\u0578",
+    "\u0579",
+    "\u057A",
+    "\u057B",
+    "\u057C",
+    "\u057D",
+    "\u057E",
+    "\u057F",
+    "\u0580",
+    "\u0581",
+    "\u0582",
+    "\u0583",
+    "\u0584",
+    "\u0585",
+    "\u0586",
+    "\u0565\u0582",
+    "\u1E01",
+    "\u1E03",
+    "\u1E05",
+    "\u1E07",
+    "\u1E09",
+    "\u1E0B",
+    "\u1E0D",
+    "\u1E0F",
+    "\u1E11",
+    "\u1E13",
+    "\u1E15",
+    "\u1E17",
+    "\u1E19",
+    "\u1E1B",
+    "\u1E1D",
+    "\u1E1F",
+    "\u1E21",
+    "\u1E23",
+    "\u1E25",
+    "\u1E27",
+    "\u1E29",
+    "\u1E2B",
+    "\u1E2D",
+    "\u1E2F",
+    "\u1E31",
+    "\u1E33",
+    "\u1E35",
+    "\u1E37",
+    "\u1E39",
+    "\u1E3B",
+    "\u1E3D",
+    "\u1E3F",
+    "\u1E41",
+    "\u1E43",
+    "\u1E45",
+    "\u1E47",
+    "\u1E49",
+    "\u1E4B",
+    "\u1E4D",
+    "\u1E4F",
+    "\u1E51",
+    "\u1E53",
+    "\u1E55",
+    "\u1E57",
+    "\u1E59",
+    "\u1E5B",
+    "\u1E5D",
+    "\u1E5F",
+    "\u1E61",
+    "\u1E63",
+    "\u1E65",
+    "\u1E67",
+    "\u1E69",
+    "\u1E6B",
+    "\u1E6D",
+    "\u1E6F",
+    "\u1E71",
+    "\u1E73",
+    "\u1E75",
+    "\u1E77",
+    "\u1E79",
+    "\u1E7B",
+    "\u1E7D",
+    "\u1E7F",
+    "\u1E81",
+    "\u1E83",
+    "\u1E85",
+    "\u1E87",
+    "\u1E89",
+    "\u1E8B",
+    "\u1E8D",
+    "\u1E8F",
+    "\u1E91",
+    "\u1E93",
+    "\u1E95",
+    "\u0068\u0331",
+    "\u0074\u0308",
+    "\u0077\u030A",
+    "\u0079\u030A",
+    "\u0061\u02BE",
+    "\u1E61",
+    "\u1EA1",
+    "\u1EA3",
+    "\u1EA5",
+    "\u1EA7",
+    "\u1EA9",
+    "\u1EAB",
+    "\u1EAD",
+    "\u1EAF",
+    "\u1EB1",
+    "\u1EB3",
+    "\u1EB5",
+    "\u1EB7",
+    "\u1EB9",
+    "\u1EBB",
+    "\u1EBD",
+    "\u1EBF",
+    "\u1EC1",
+    "\u1EC3",
+    "\u1EC5",
+    "\u1EC7",
+    "\u1EC9",
+    "\u1ECB",
+    "\u1ECD",
+    "\u1ECF",
+    "\u1ED1",
+    "\u1ED3",
+    "\u1ED5",
+    "\u1ED7",
+    "\u1ED9",
+    "\u1EDB",
+    "\u1EDD",
+    "\u1EDF",
+    "\u1EE1",
+    "\u1EE3",
+    "\u1EE5",
+    "\u1EE7",
+    "\u1EE9",
+    "\u1EEB",
+    "\u1EED",
+    "\u1EEF",
+    "\u1EF1",
+    "\u1EF3",
+    "\u1EF5",
+    "\u1EF7",
+    "\u1EF9",
+    "\u1F00",
+    "\u1F01",
+    "\u1F02",
+    "\u1F03",
+    "\u1F04",
+    "\u1F05",
+    "\u1F06",
+    "\u1F07",
+    "\u1F10",
+    "\u1F11",
+    "\u1F12",
+    "\u1F13",
+    "\u1F14",
+    "\u1F15",
+    "\u1F20",
+    "\u1F21",
+    "\u1F22",
+    "\u1F23",
+    "\u1F24",
+    "\u1F25",
+    "\u1F26",
+    "\u1F27",
+    "\u1F30",
+    "\u1F31",
+    "\u1F32",
+    "\u1F33",
+    "\u1F34",
+    "\u1F35",
+    "\u1F36",
+    "\u1F37",
+    "\u1F40",
+    "\u1F41",
+    "\u1F42",
+    "\u1F43",
+    "\u1F44",
+    "\u1F45",
+    "\u03C5\u0313",
+    "\u03C5\u0313\u0300",
+    "\u03C5\u0313\u0301",
+    "\u03C5\u0313\u0342",
+    "\u1F51",
+    "\u1F53",
+    "\u1F55",
+    "\u1F57",
+    "\u1F60",
+    "\u1F61",
+    "\u1F62",
+    "\u1F63",
+    "\u1F64",
+    "\u1F65",
+    "\u1F66",
+    "\u1F67",
+    "\u1F00\u03B9",
+    "\u1F01\u03B9",
+    "\u1F02\u03B9",
+    "\u1F03\u03B9",
+    "\u1F04\u03B9",
+    "\u1F05\u03B9",
+    "\u1F06\u03B9",
+    "\u1F07\u03B9",
+    "\u1F00\u03B9",
+    "\u1F01\u03B9",
+    "\u1F02\u03B9",
+    "\u1F03\u03B9",
+    "\u1F04\u03B9",
+    "\u1F05\u03B9",
+    "\u1F06\u03B9",
+    "\u1F07\u03B9",
+    "\u1F20\u03B9",
+    "\u1F21\u03B9",
+    "\u1F22\u03B9",
+    "\u1F23\u03B9",
+    "\u1F24\u03B9",
+    "\u1F25\u03B9",
+    "\u1F26\u03B9",
+    "\u1F27\u03B9",
+    "\u1F20\u03B9",
+    "\u1F21\u03B9",
+    "\u1F22\u03B9",
+    "\u1F23\u03B9",
+    "\u1F24\u03B9",
+    "\u1F25\u03B9",
+    "\u1F26\u03B9",
+    "\u1F27\u03B9",
+    "\u1F60\u03B9",
+    "\u1F61\u03B9",
+    "\u1F62\u03B9",
+    "\u1F63\u03B9",
+    "\u1F64\u03B9",
+    "\u1F65\u03B9",
+    "\u1F66\u03B9",
+    "\u1F67\u03B9",
+    "\u1F60\u03B9",
+    "\u1F61\u03B9",
+    "\u1F62\u03B9",
+    "\u1F63\u03B9",
+    "\u1F64\u03B9",
+    "\u1F65\u03B9",
+    "\u1F66\u03B9",
+    "\u1F67\u03B9",
+    "\u1F70\u03B9",
+    "\u03B1\u03B9",
+    "\u03AC\u03B9",
+    "\u03B1\u0342",
+    "\u03B1\u0342\u03B9",
+    "\u1FB0",
+    "\u1FB1",
+    "\u1F70",
+    "\u1F71",
+    "\u03B1\u03B9",
+    "\u03B9",
+    "\u1F74\u03B9",
+    "\u03B7\u03B9",
+    "\u03AE\u03B9",
+    "\u03B7\u0342",
+    "\u03B7\u0342\u03B9",
+    "\u1F72",
+    "\u1F73",
+    "\u1F74",
+    "\u1F75",
+    "\u03B7\u03B9",
+    "\u03B9\u0308\u0300",
+    "\u03B9\u0308\u0301",
+    "\u03B9\u0342",
+    "\u03B9\u0308\u0342",
+    "\u1FD0",
+    "\u1FD1",
+    "\u1F76",
+    "\u1F77",
+    "\u03C5\u0308\u0300",
+    "\u03C5\u0308\u0301",
+    "\u03C1\u0313",
+    "\u03C5\u0342",
+    "\u03C5\u0308\u0342",
+    "\u1FE0",
+    "\u1FE1",
+    "\u1F7A",
+    "\u1F7B",
+    "\u1FE5",
+    "\u1F7C\u03B9",
+    "\u03C9\u03B9",
+    "\u03CE\u03B9",
+    "\u03C9\u0342",
+    "\u03C9\u0342\u03B9",
+    "\u1F78",
+    "\u1F79",
+    "\u1F7C",
+    "\u1F7D",
+    "\u03C9\u03B9",
+    "\u0072\u0073",
+    "\u0063",
+    "\u00B0\u0063",
+    "\u025B",
+    "\u00B0\u0066",
+    "\u0068",
+    "\u0068",
+    "\u0068",
+    "\u0069",
+    "\u0069",
+    "\u006C",
+    "\u006E",
+    "\u006E\u006F",
+    "\u0070",
+    "\u0071",
+    "\u0072",
+    "\u0072",
+    "\u0072",
+    "\u0073\u006D",
+    "\u0074\u0065\u006C",
+    "\u0074\u006D",
+    "\u007A",
+    "\u03C9",
+    "\u007A",
+    "\u006B",
+    "\u00E5",
+    "\u0062",
+    "\u0063",
+    "\u0065",
+    "\u0066",
+    "\u006D",
+    "\u03B3",
+    "\u03C0",
+    "\u0064",
+    "\u2170",
+    "\u2171",
+    "\u2172",
+    "\u2173",
+    "\u2174",
+    "\u2175",
+    "\u2176",
+    "\u2177",
+    "\u2178",
+    "\u2179",
+    "\u217A",
+    "\u217B",
+    "\u217C",
+    "\u217D",
+    "\u217E",
+    "\u217F",
+    "\u24D0",
+    "\u24D1",
+    "\u24D2",
+    "\u24D3",
+    "\u24D4",
+    "\u24D5",
+    "\u24D6",
+    "\u24D7",
+    "\u24D8",
+    "\u24D9",
+    "\u24DA",
+    "\u24DB",
+    "\u24DC",
+    "\u24DD",
+    "\u24DE",
+    "\u24DF",
+    "\u24E0",
+    "\u24E1",
+    "\u24E2",
+    "\u24E3",
+    "\u24E4",
+    "\u24E5",
+    "\u24E6",
+    "\u24E7",
+    "\u24E8",
+    "\u24E9",
+    "\u0068\u0070\u0061",
+    "\u0061\u0075",
+    "\u006F\u0076",
+    "\u0070\u0061",
+    "\u006E\u0061",
+    "\u03BC\u0061",
+    "\u006D\u0061",
+    "\u006B\u0061",
+    "\u006B\u0062",
+    "\u006D\u0062",
+    "\u0067\u0062",
+    "\u0070\u0066",
+    "\u006E\u0066",
+    "\u03BC\u0066",
+    "\u0068\u007A",
+    "\u006B\u0068\u007A",
+    "\u006D\u0068\u007A",
+    "\u0067\u0068\u007A",
+    "\u0074\u0068\u007A",
+    "\u0070\u0061",
+    "\u006B\u0070\u0061",
+    "\u006D\u0070\u0061",
+    "\u0067\u0070\u0061",
+    "\u0070\u0076",
+    "\u006E\u0076",
+    "\u03BC\u0076",
+    "\u006D\u0076",
+    "\u006B\u0076",
+    "\u006D\u0076",
+    "\u0070\u0077",
+    "\u006E\u0077",
+    "\u03BC\u0077",
+    "\u006D\u0077",
+    "\u006B\u0077",
+    "\u006D\u0077",
+    "\u006B\u03C9",
+    "\u006D\u03C9",
+    "\u0062\u0071",
+    "\u0063\u2215\u006B\u0067",
+    "\u0063\u006F\u002E",
+    "\u0064\u0062",
+    "\u0067\u0079",
+    "\u0068\u0070",
+    "\u006B\u006B",
+    "\u006B\u006D",
+    "\u0070\u0068",
+    "\u0070\u0070\u006D",
+    "\u0070\u0072",
+    "\u0073\u0076",
+    "\u0077\u0062",
+    "\u0066\u0066",
+    "\u0066\u0069",
+    "\u0066\u006C",
+    "\u0066\u0066\u0069",
+    "\u0066\u0066\u006C",
+    "\u0073\u0074",
+    "\u0073\u0074",
+    "\u0574\u0576",
+    "\u0574\u0565",
+    "\u0574\u056B",
+    "\u057E\u0576",
+    "\u0574\u056D",
+    "\uFF41",
+    "\uFF42",
+    "\uFF43",
+    "\uFF44",
+    "\uFF45",
+    "\uFF46",
+    "\uFF47",
+    "\uFF48",
+    "\uFF49",
+    "\uFF4A",
+    "\uFF4B",
+    "\uFF4C",
+    "\uFF4D",
+    "\uFF4E",
+    "\uFF4F",
+    "\uFF50",
+    "\uFF51",
+    "\uFF52",
+    "\uFF53",
+    "\uFF54",
+    "\uFF55",
+    "\uFF56",
+    "\uFF57",
+    "\uFF58",
+    "\uFF59",
+    "\uFF5A",
+  };
+
+  final static char[] B3search = new char[] {
+    '\u0041',
+    '\u0042',
+    '\u0043',
+    '\u0044',
+    '\u0045',
+    '\u0046',
+    '\u0047',
+    '\u0048',
+    '\u0049',
+    '\u004A',
+    '\u004B',
+    '\u004C',
+    '\u004D',
+    '\u004E',
+    '\u004F',
+    '\u0050',
+    '\u0051',
+    '\u0052',
+    '\u0053',
+    '\u0054',
+    '\u0055',
+    '\u0056',
+    '\u0057',
+    '\u0058',
+    '\u0059',
+    '\u005A',
+    '\u00B5',
+    '\u00C0',
+    '\u00C1',
+    '\u00C2',
+    '\u00C3',
+    '\u00C4',
+    '\u00C5',
+    '\u00C6',
+    '\u00C7',
+    '\u00C8',
+    '\u00C9',
+    '\u00CA',
+    '\u00CB',
+    '\u00CC',
+    '\u00CD',
+    '\u00CE',
+    '\u00CF',
+    '\u00D0',
+    '\u00D1',
+    '\u00D2',
+    '\u00D3',
+    '\u00D4',
+    '\u00D5',
+    '\u00D6',
+    '\u00D8',
+    '\u00D9',
+    '\u00DA',
+    '\u00DB',
+    '\u00DC',
+    '\u00DD',
+    '\u00DE',
+    '\u00DF',
+    '\u0100',
+    '\u0102',
+    '\u0104',
+    '\u0106',
+    '\u0108',
+    '\u010A',
+    '\u010C',
+    '\u010E',
+    '\u0110',
+    '\u0112',
+    '\u0114',
+    '\u0116',
+    '\u0118',
+    '\u011A',
+    '\u011C',
+    '\u011E',
+    '\u0120',
+    '\u0122',
+    '\u0124',
+    '\u0126',
+    '\u0128',
+    '\u012A',
+    '\u012C',
+    '\u012E',
+    '\u0130',
+    '\u0132',
+    '\u0134',
+    '\u0136',
+    '\u0139',
+    '\u013B',
+    '\u013D',
+    '\u013F',
+    '\u0141',
+    '\u0143',
+    '\u0145',
+    '\u0147',
+    '\u0149',
+    '\u014A',
+    '\u014C',
+    '\u014E',
+    '\u0150',
+    '\u0152',
+    '\u0154',
+    '\u0156',
+    '\u0158',
+    '\u015A',
+    '\u015C',
+    '\u015E',
+    '\u0160',
+    '\u0162',
+    '\u0164',
+    '\u0166',
+    '\u0168',
+    '\u016A',
+    '\u016C',
+    '\u016E',
+    '\u0170',
+    '\u0172',
+    '\u0174',
+    '\u0176',
+    '\u0178',
+    '\u0179',
+    '\u017B',
+    '\u017D',
+    '\u017F',
+    '\u0181',
+    '\u0182',
+    '\u0184',
+    '\u0186',
+    '\u0187',
+    '\u0189',
+    '\u018A',
+    '\u018B',
+    '\u018E',
+    '\u018F',
+    '\u0190',
+    '\u0191',
+    '\u0193',
+    '\u0194',
+    '\u0196',
+    '\u0197',
+    '\u0198',
+    '\u019C',
+    '\u019D',
+    '\u019F',
+    '\u01A0',
+    '\u01A2',
+    '\u01A4',
+    '\u01A6',
+    '\u01A7',
+    '\u01A9',
+    '\u01AC',
+    '\u01AE',
+    '\u01AF',
+    '\u01B1',
+    '\u01B2',
+    '\u01B3',
+    '\u01B5',
+    '\u01B7',
+    '\u01B8',
+    '\u01BC',
+    '\u01C4',
+    '\u01C5',
+    '\u01C7',
+    '\u01C8',
+    '\u01CA',
+    '\u01CB',
+    '\u01CD',
+    '\u01CF',
+    '\u01D1',
+    '\u01D3',
+    '\u01D5',
+    '\u01D7',
+    '\u01D9',
+    '\u01DB',
+    '\u01DE',
+    '\u01E0',
+    '\u01E2',
+    '\u01E4',
+    '\u01E6',
+    '\u01E8',
+    '\u01EA',
+    '\u01EC',
+    '\u01EE',
+    '\u01F0',
+    '\u01F1',
+    '\u01F2',
+    '\u01F4',
+    '\u01F6',
+    '\u01F7',
+    '\u01F8',
+    '\u01FA',
+    '\u01FC',
+    '\u01FE',
+    '\u0200',
+    '\u0202',
+    '\u0204',
+    '\u0206',
+    '\u0208',
+    '\u020A',
+    '\u020C',
+    '\u020E',
+    '\u0210',
+    '\u0212',
+    '\u0214',
+    '\u0216',
+    '\u0218',
+    '\u021A',
+    '\u021C',
+    '\u021E',
+    '\u0220',
+    '\u0222',
+    '\u0224',
+    '\u0226',
+    '\u0228',
+    '\u022A',
+    '\u022C',
+    '\u022E',
+    '\u0230',
+    '\u0232',
+    '\u0345',
+    '\u0386',
+    '\u0388',
+    '\u0389',
+    '\u038A',
+    '\u038C',
+    '\u038E',
+    '\u038F',
+    '\u0390',
+    '\u0391',
+    '\u0392',
+    '\u0393',
+    '\u0394',
+    '\u0395',
+    '\u0396',
+    '\u0397',
+    '\u0398',
+    '\u0399',
+    '\u039A',
+    '\u039B',
+    '\u039C',
+    '\u039D',
+    '\u039E',
+    '\u039F',
+    '\u03A0',
+    '\u03A1',
+    '\u03A3',
+    '\u03A4',
+    '\u03A5',
+    '\u03A6',
+    '\u03A7',
+    '\u03A8',
+    '\u03A9',
+    '\u03AA',
+    '\u03AB',
+    '\u03B0',
+    '\u03C2',
+    '\u03D0',
+    '\u03D1',
+    '\u03D5',
+    '\u03D6',
+    '\u03D8',
+    '\u03DA',
+    '\u03DC',
+    '\u03DE',
+    '\u03E0',
+    '\u03E2',
+    '\u03E4',
+    '\u03E6',
+    '\u03E8',
+    '\u03EA',
+    '\u03EC',
+    '\u03EE',
+    '\u03F0',
+    '\u03F1',
+    '\u03F2',
+    '\u03F4',
+    '\u03F5',
+    '\u0400',
+    '\u0401',
+    '\u0402',
+    '\u0403',
+    '\u0404',
+    '\u0405',
+    '\u0406',
+    '\u0407',
+    '\u0408',
+    '\u0409',
+    '\u040A',
+    '\u040B',
+    '\u040C',
+    '\u040D',
+    '\u040E',
+    '\u040F',
+    '\u0410',
+    '\u0411',
+    '\u0412',
+    '\u0413',
+    '\u0414',
+    '\u0415',
+    '\u0416',
+    '\u0417',
+    '\u0418',
+    '\u0419',
+    '\u041A',
+    '\u041B',
+    '\u041C',
+    '\u041D',
+    '\u041E',
+    '\u041F',
+    '\u0420',
+    '\u0421',
+    '\u0422',
+    '\u0423',
+    '\u0424',
+    '\u0425',
+    '\u0426',
+    '\u0427',
+    '\u0428',
+    '\u0429',
+    '\u042A',
+    '\u042B',
+    '\u042C',
+    '\u042D',
+    '\u042E',
+    '\u042F',
+    '\u0460',
+    '\u0462',
+    '\u0464',
+    '\u0466',
+    '\u0468',
+    '\u046A',
+    '\u046C',
+    '\u046E',
+    '\u0470',
+    '\u0472',
+    '\u0474',
+    '\u0476',
+    '\u0478',
+    '\u047A',
+    '\u047C',
+    '\u047E',
+    '\u0480',
+    '\u048A',
+    '\u048C',
+    '\u048E',
+    '\u0490',
+    '\u0492',
+    '\u0494',
+    '\u0496',
+    '\u0498',
+    '\u049A',
+    '\u049C',
+    '\u049E',
+    '\u04A0',
+    '\u04A2',
+    '\u04A4',
+    '\u04A6',
+    '\u04A8',
+    '\u04AA',
+    '\u04AC',
+    '\u04AE',
+    '\u04B0',
+    '\u04B2',
+    '\u04B4',
+    '\u04B6',
+    '\u04B8',
+    '\u04BA',
+    '\u04BC',
+    '\u04BE',
+    '\u04C1',
+    '\u04C3',
+    '\u04C5',
+    '\u04C7',
+    '\u04C9',
+    '\u04CB',
+    '\u04CD',
+    '\u04D0',
+    '\u04D2',
+    '\u04D4',
+    '\u04D6',
+    '\u04D8',
+    '\u04DA',
+    '\u04DC',
+    '\u04DE',
+    '\u04E0',
+    '\u04E2',
+    '\u04E4',
+    '\u04E6',
+    '\u04E8',
+    '\u04EA',
+    '\u04EC',
+    '\u04EE',
+    '\u04F0',
+    '\u04F2',
+    '\u04F4',
+    '\u04F8',
+    '\u0500',
+    '\u0502',
+    '\u0504',
+    '\u0506',
+    '\u0508',
+    '\u050A',
+    '\u050C',
+    '\u050E',
+    '\u0531',
+    '\u0532',
+    '\u0533',
+    '\u0534',
+    '\u0535',
+    '\u0536',
+    '\u0537',
+    '\u0538',
+    '\u0539',
+    '\u053A',
+    '\u053B',
+    '\u053C',
+    '\u053D',
+    '\u053E',
+    '\u053F',
+    '\u0540',
+    '\u0541',
+    '\u0542',
+    '\u0543',
+    '\u0544',
+    '\u0545',
+    '\u0546',
+    '\u0547',
+    '\u0548',
+    '\u0549',
+    '\u054A',
+    '\u054B',
+    '\u054C',
+    '\u054D',
+    '\u054E',
+    '\u054F',
+    '\u0550',
+    '\u0551',
+    '\u0552',
+    '\u0553',
+    '\u0554',
+    '\u0555',
+    '\u0556',
+    '\u0587',
+    '\u1E00',
+    '\u1E02',
+    '\u1E04',
+    '\u1E06',
+    '\u1E08',
+    '\u1E0A',
+    '\u1E0C',
+    '\u1E0E',
+    '\u1E10',
+    '\u1E12',
+    '\u1E14',
+    '\u1E16',
+    '\u1E18',
+    '\u1E1A',
+    '\u1E1C',
+    '\u1E1E',
+    '\u1E20',
+    '\u1E22',
+    '\u1E24',
+    '\u1E26',
+    '\u1E28',
+    '\u1E2A',
+    '\u1E2C',
+    '\u1E2E',
+    '\u1E30',
+    '\u1E32',
+    '\u1E34',
+    '\u1E36',
+    '\u1E38',
+    '\u1E3A',
+    '\u1E3C',
+    '\u1E3E',
+    '\u1E40',
+    '\u1E42',
+    '\u1E44',
+    '\u1E46',
+    '\u1E48',
+    '\u1E4A',
+    '\u1E4C',
+    '\u1E4E',
+    '\u1E50',
+    '\u1E52',
+    '\u1E54',
+    '\u1E56',
+    '\u1E58',
+    '\u1E5A',
+    '\u1E5C',
+    '\u1E5E',
+    '\u1E60',
+    '\u1E62',
+    '\u1E64',
+    '\u1E66',
+    '\u1E68',
+    '\u1E6A',
+    '\u1E6C',
+    '\u1E6E',
+    '\u1E70',
+    '\u1E72',
+    '\u1E74',
+    '\u1E76',
+    '\u1E78',
+    '\u1E7A',
+    '\u1E7C',
+    '\u1E7E',
+    '\u1E80',
+    '\u1E82',
+    '\u1E84',
+    '\u1E86',
+    '\u1E88',
+    '\u1E8A',
+    '\u1E8C',
+    '\u1E8E',
+    '\u1E90',
+    '\u1E92',
+    '\u1E94',
+    '\u1E96',
+    '\u1E97',
+    '\u1E98',
+    '\u1E99',
+    '\u1E9A',
+    '\u1E9B',
+    '\u1EA0',
+    '\u1EA2',
+    '\u1EA4',
+    '\u1EA6',
+    '\u1EA8',
+    '\u1EAA',
+    '\u1EAC',
+    '\u1EAE',
+    '\u1EB0',
+    '\u1EB2',
+    '\u1EB4',
+    '\u1EB6',
+    '\u1EB8',
+    '\u1EBA',
+    '\u1EBC',
+    '\u1EBE',
+    '\u1EC0',
+    '\u1EC2',
+    '\u1EC4',
+    '\u1EC6',
+    '\u1EC8',
+    '\u1ECA',
+    '\u1ECC',
+    '\u1ECE',
+    '\u1ED0',
+    '\u1ED2',
+    '\u1ED4',
+    '\u1ED6',
+    '\u1ED8',
+    '\u1EDA',
+    '\u1EDC',
+    '\u1EDE',
+    '\u1EE0',
+    '\u1EE2',
+    '\u1EE4',
+    '\u1EE6',
+    '\u1EE8',
+    '\u1EEA',
+    '\u1EEC',
+    '\u1EEE',
+    '\u1EF0',
+    '\u1EF2',
+    '\u1EF4',
+    '\u1EF6',
+    '\u1EF8',
+    '\u1F08',
+    '\u1F09',
+    '\u1F0A',
+    '\u1F0B',
+    '\u1F0C',
+    '\u1F0D',
+    '\u1F0E',
+    '\u1F0F',
+    '\u1F18',
+    '\u1F19',
+    '\u1F1A',
+    '\u1F1B',
+    '\u1F1C',
+    '\u1F1D',
+    '\u1F28',
+    '\u1F29',
+    '\u1F2A',
+    '\u1F2B',
+    '\u1F2C',
+    '\u1F2D',
+    '\u1F2E',
+    '\u1F2F',
+    '\u1F38',
+    '\u1F39',
+    '\u1F3A',
+    '\u1F3B',
+    '\u1F3C',
+    '\u1F3D',
+    '\u1F3E',
+    '\u1F3F',
+    '\u1F48',
+    '\u1F49',
+    '\u1F4A',
+    '\u1F4B',
+    '\u1F4C',
+    '\u1F4D',
+    '\u1F50',
+    '\u1F52',
+    '\u1F54',
+    '\u1F56',
+    '\u1F59',
+    '\u1F5B',
+    '\u1F5D',
+    '\u1F5F',
+    '\u1F68',
+    '\u1F69',
+    '\u1F6A',
+    '\u1F6B',
+    '\u1F6C',
+    '\u1F6D',
+    '\u1F6E',
+    '\u1F6F',
+    '\u1F80',
+    '\u1F81',
+    '\u1F82',
+    '\u1F83',
+    '\u1F84',
+    '\u1F85',
+    '\u1F86',
+    '\u1F87',
+    '\u1F88',
+    '\u1F89',
+    '\u1F8A',
+    '\u1F8B',
+    '\u1F8C',
+    '\u1F8D',
+    '\u1F8E',
+    '\u1F8F',
+    '\u1F90',
+    '\u1F91',
+    '\u1F92',
+    '\u1F93',
+    '\u1F94',
+    '\u1F95',
+    '\u1F96',
+    '\u1F97',
+    '\u1F98',
+    '\u1F99',
+    '\u1F9A',
+    '\u1F9B',
+    '\u1F9C',
+    '\u1F9D',
+    '\u1F9E',
+    '\u1F9F',
+    '\u1FA0',
+    '\u1FA1',
+    '\u1FA2',
+    '\u1FA3',
+    '\u1FA4',
+    '\u1FA5',
+    '\u1FA6',
+    '\u1FA7',
+    '\u1FA8',
+    '\u1FA9',
+    '\u1FAA',
+    '\u1FAB',
+    '\u1FAC',
+    '\u1FAD',
+    '\u1FAE',
+    '\u1FAF',
+    '\u1FB2',
+    '\u1FB3',
+    '\u1FB4',
+    '\u1FB6',
+    '\u1FB7',
+    '\u1FB8',
+    '\u1FB9',
+    '\u1FBA',
+    '\u1FBB',
+    '\u1FBC',
+    '\u1FBE',
+    '\u1FC2',
+    '\u1FC3',
+    '\u1FC4',
+    '\u1FC6',
+    '\u1FC7',
+    '\u1FC8',
+    '\u1FC9',
+    '\u1FCA',
+    '\u1FCB',
+    '\u1FCC',
+    '\u1FD2',
+    '\u1FD3',
+    '\u1FD6',
+    '\u1FD7',
+    '\u1FD8',
+    '\u1FD9',
+    '\u1FDA',
+    '\u1FDB',
+    '\u1FE2',
+    '\u1FE3',
+    '\u1FE4',
+    '\u1FE6',
+    '\u1FE7',
+    '\u1FE8',
+    '\u1FE9',
+    '\u1FEA',
+    '\u1FEB',
+    '\u1FEC',
+    '\u1FF2',
+    '\u1FF3',
+    '\u1FF4',
+    '\u1FF6',
+    '\u1FF7',
+    '\u1FF8',
+    '\u1FF9',
+    '\u1FFA',
+    '\u1FFB',
+    '\u1FFC',
+    '\u2126',
+    '\u212A',
+    '\u212B',
+    '\u2160',
+    '\u2161',
+    '\u2162',
+    '\u2163',
+    '\u2164',
+    '\u2165',
+    '\u2166',
+    '\u2167',
+    '\u2168',
+    '\u2169',
+    '\u216A',
+    '\u216B',
+    '\u216C',
+    '\u216D',
+    '\u216E',
+    '\u216F',
+    '\u24B6',
+    '\u24B7',
+    '\u24B8',
+    '\u24B9',
+    '\u24BA',
+    '\u24BB',
+    '\u24BC',
+    '\u24BD',
+    '\u24BE',
+    '\u24BF',
+    '\u24C0',
+    '\u24C1',
+    '\u24C2',
+    '\u24C3',
+    '\u24C4',
+    '\u24C5',
+    '\u24C6',
+    '\u24C7',
+    '\u24C8',
+    '\u24C9',
+    '\u24CA',
+    '\u24CB',
+    '\u24CC',
+    '\u24CD',
+    '\u24CE',
+    '\u24CF',
+    '\uFB00',
+    '\uFB01',
+    '\uFB02',
+    '\uFB03',
+    '\uFB04',
+    '\uFB05',
+    '\uFB06',
+    '\uFB13',
+    '\uFB14',
+    '\uFB15',
+    '\uFB16',
+    '\uFB17',
+    '\uFF21',
+    '\uFF22',
+    '\uFF23',
+    '\uFF24',
+    '\uFF25',
+    '\uFF26',
+    '\uFF27',
+    '\uFF28',
+    '\uFF29',
+    '\uFF2A',
+    '\uFF2B',
+    '\uFF2C',
+    '\uFF2D',
+    '\uFF2E',
+    '\uFF2F',
+    '\uFF30',
+    '\uFF31',
+    '\uFF32',
+    '\uFF33',
+    '\uFF34',
+    '\uFF35',
+    '\uFF36',
+    '\uFF37',
+    '\uFF38',
+    '\uFF39',
+    '\uFF3A',
+  };
+
+  final static String[] B3replace = new String[] {
+    "\u0061",
+    "\u0062",
+    "\u0063",
+    "\u0064",
+    "\u0065",
+    "\u0066",
+    "\u0067",
+    "\u0068",
+    "\u0069",
+    "\u006A",
+    "\u006B",
+    "\u006C",
+    "\u006D",
+    "\u006E",
+    "\u006F",
+    "\u0070",
+    "\u0071",
+    "\u0072",
+    "\u0073",
+    "\u0074",
+    "\u0075",
+    "\u0076",
+    "\u0077",
+    "\u0078",
+    "\u0079",
+    "\u007A",
+    "\u03BC",
+    "\u00E0",
+    "\u00E1",
+    "\u00E2",
+    "\u00E3",
+    "\u00E4",
+    "\u00E5",
+    "\u00E6",
+    "\u00E7",
+    "\u00E8",
+    "\u00E9",
+    "\u00EA",
+    "\u00EB",
+    "\u00EC",
+    "\u00ED",
+    "\u00EE",
+    "\u00EF",
+    "\u00F0",
+    "\u00F1",
+    "\u00F2",
+    "\u00F3",
+    "\u00F4",
+    "\u00F5",
+    "\u00F6",
+    "\u00F8",
+    "\u00F9",
+    "\u00FA",
+    "\u00FB",
+    "\u00FC",
+    "\u00FD",
+    "\u00FE",
+    "\u0073\u0073",
+    "\u0101",
+    "\u0103",
+    "\u0105",
+    "\u0107",
+    "\u0109",
+    "\u010B",
+    "\u010D",
+    "\u010F",
+    "\u0111",
+    "\u0113",
+    "\u0115",
+    "\u0117",
+    "\u0119",
+    "\u011B",
+    "\u011D",
+    "\u011F",
+    "\u0121",
+    "\u0123",
+    "\u0125",
+    "\u0127",
+    "\u0129",
+    "\u012B",
+    "\u012D",
+    "\u012F",
+    "\u0069\u0307",
+    "\u0133",
+    "\u0135",
+    "\u0137",
+    "\u013A",
+    "\u013C",
+    "\u013E",
+    "\u0140",
+    "\u0142",
+    "\u0144",
+    "\u0146",
+    "\u0148",
+    "\u02BC\u006E",
+    "\u014B",
+    "\u014D",
+    "\u014F",
+    "\u0151",
+    "\u0153",
+    "\u0155",
+    "\u0157",
+    "\u0159",
+    "\u015B",
+    "\u015D",
+    "\u015F",
+    "\u0161",
+    "\u0163",
+    "\u0165",
+    "\u0167",
+    "\u0169",
+    "\u016B",
+    "\u016D",
+    "\u016F",
+    "\u0171",
+    "\u0173",
+    "\u0175",
+    "\u0177",
+    "\u00FF",
+    "\u017A",
+    "\u017C",
+    "\u017E",
+    "\u0073",
+    "\u0253",
+    "\u0183",
+    "\u0185",
+    "\u0254",
+    "\u0188",
+    "\u0256",
+    "\u0257",
+    "\u018C",
+    "\u01DD",
+    "\u0259",
+    "\u025B",
+    "\u0192",
+    "\u0260",
+    "\u0263",
+    "\u0269",
+    "\u0268",
+    "\u0199",
+    "\u026F",
+    "\u0272",
+    "\u0275",
+    "\u01A1",
+    "\u01A3",
+    "\u01A5",
+    "\u0280",
+    "\u01A8",
+    "\u0283",
+    "\u01AD",
+    "\u0288",
+    "\u01B0",
+    "\u028A",
+    "\u028B",
+    "\u01B4",
+    "\u01B6",
+    "\u0292",
+    "\u01B9",
+    "\u01BD",
+    "\u01C6",
+    "\u01C6",
+    "\u01C9",
+    "\u01C9",
+    "\u01CC",
+    "\u01CC",
+    "\u01CE",
+    "\u01D0",
+    "\u01D2",
+    "\u01D4",
+    "\u01D6",
+    "\u01D8",
+    "\u01DA",
+    "\u01DC",
+    "\u01DF",
+    "\u01E1",
+    "\u01E3",
+    "\u01E5",
+    "\u01E7",
+    "\u01E9",
+    "\u01EB",
+    "\u01ED",
+    "\u01EF",
+    "\u006A\u030C",
+    "\u01F3",
+    "\u01F3",
+    "\u01F5",
+    "\u0195",
+    "\u01BF",
+    "\u01F9",
+    "\u01FB",
+    "\u01FD",
+    "\u01FF",
+    "\u0201",
+    "\u0203",
+    "\u0205",
+    "\u0207",
+    "\u0209",
+    "\u020B",
+    "\u020D",
+    "\u020F",
+    "\u0211",
+    "\u0213",
+    "\u0215",
+    "\u0217",
+    "\u0219",
+    "\u021B",
+    "\u021D",
+    "\u021F",
+    "\u019E",
+    "\u0223",
+    "\u0225",
+    "\u0227",
+    "\u0229",
+    "\u022B",
+    "\u022D",
+    "\u022F",
+    "\u0231",
+    "\u0233",
+    "\u03B9",
+    "\u03AC",
+    "\u03AD",
+    "\u03AE",
+    "\u03AF",
+    "\u03CC",
+    "\u03CD",
+    "\u03CE",
+    "\u03B9\u0308\u0301",
+    "\u03B1",
+    "\u03B2",
+    "\u03B3",
+    "\u03B4",
+    "\u03B5",
+    "\u03B6",
+    "\u03B7",
+    "\u03B8",
+    "\u03B9",
+    "\u03BA",
+    "\u03BB",
+    "\u03BC",
+    "\u03BD",
+    "\u03BE",
+    "\u03BF",
+    "\u03C0",
+    "\u03C1",
+    "\u03C3",
+    "\u03C4",
+    "\u03C5",
+    "\u03C6",
+    "\u03C7",
+    "\u03C8",
+    "\u03C9",
+    "\u03CA",
+    "\u03CB",
+    "\u03C5\u0308\u0301",
+    "\u03C3",
+    "\u03B2",
+    "\u03B8",
+    "\u03C6",
+    "\u03C0",
+    "\u03D9",
+    "\u03DB",
+    "\u03DD",
+    "\u03DF",
+    "\u03E1",
+    "\u03E3",
+    "\u03E5",
+    "\u03E7",
+    "\u03E9",
+    "\u03EB",
+    "\u03ED",
+    "\u03EF",
+    "\u03BA",
+    "\u03C1",
+    "\u03C3",
+    "\u03B8",
+    "\u03B5",
+    "\u0450",
+    "\u0451",
+    "\u0452",
+    "\u0453",
+    "\u0454",
+    "\u0455",
+    "\u0456",
+    "\u0457",
+    "\u0458",
+    "\u0459",
+    "\u045A",
+    "\u045B",
+    "\u045C",
+    "\u045D",
+    "\u045E",
+    "\u045F",
+    "\u0430",
+    "\u0431",
+    "\u0432",
+    "\u0433",
+    "\u0434",
+    "\u0435",
+    "\u0436",
+    "\u0437",
+    "\u0438",
+    "\u0439",
+    "\u043A",
+    "\u043B",
+    "\u043C",
+    "\u043D",
+    "\u043E",
+    "\u043F",
+    "\u0440",
+    "\u0441",
+    "\u0442",
+    "\u0443",
+    "\u0444",
+    "\u0445",
+    "\u0446",
+    "\u0447",
+    "\u0448",
+    "\u0449",
+    "\u044A",
+    "\u044B",
+    "\u044C",
+    "\u044D",
+    "\u044E",
+    "\u044F",
+    "\u0461",
+    "\u0463",
+    "\u0465",
+    "\u0467",
+    "\u0469",
+    "\u046B",
+    "\u046D",
+    "\u046F",
+    "\u0471",
+    "\u0473",
+    "\u0475",
+    "\u0477",
+    "\u0479",
+    "\u047B",
+    "\u047D",
+    "\u047F",
+    "\u0481",
+    "\u048B",
+    "\u048D",
+    "\u048F",
+    "\u0491",
+    "\u0493",
+    "\u0495",
+    "\u0497",
+    "\u0499",
+    "\u049B",
+    "\u049D",
+    "\u049F",
+    "\u04A1",
+    "\u04A3",
+    "\u04A5",
+    "\u04A7",
+    "\u04A9",
+    "\u04AB",
+    "\u04AD",
+    "\u04AF",
+    "\u04B1",
+    "\u04B3",
+    "\u04B5",
+    "\u04B7",
+    "\u04B9",
+    "\u04BB",
+    "\u04BD",
+    "\u04BF",
+    "\u04C2",
+    "\u04C4",
+    "\u04C6",
+    "\u04C8",
+    "\u04CA",
+    "\u04CC",
+    "\u04CE",
+    "\u04D1",
+    "\u04D3",
+    "\u04D5",
+    "\u04D7",
+    "\u04D9",
+    "\u04DB",
+    "\u04DD",
+    "\u04DF",
+    "\u04E1",
+    "\u04E3",
+    "\u04E5",
+    "\u04E7",
+    "\u04E9",
+    "\u04EB",
+    "\u04ED",
+    "\u04EF",
+    "\u04F1",
+    "\u04F3",
+    "\u04F5",
+    "\u04F9",
+    "\u0501",
+    "\u0503",
+    "\u0505",
+    "\u0507",
+    "\u0509",
+    "\u050B",
+    "\u050D",
+    "\u050F",
+    "\u0561",
+    "\u0562",
+    "\u0563",
+    "\u0564",
+    "\u0565",
+    "\u0566",
+    "\u0567",
+    "\u0568",
+    "\u0569",
+    "\u056A",
+    "\u056B",
+    "\u056C",
+    "\u056D",
+    "\u056E",
+    "\u056F",
+    "\u0570",
+    "\u0571",
+    "\u0572",
+    "\u0573",
+    "\u0574",
+    "\u0575",
+    "\u0576",
+    "\u0577",
+    "\u0578",
+    "\u0579",
+    "\u057A",
+    "\u057B",
+    "\u057C",
+    "\u057D",
+    "\u057E",
+    "\u057F",
+    "\u0580",
+    "\u0581",
+    "\u0582",
+    "\u0583",
+    "\u0584",
+    "\u0585",
+    "\u0586",
+    "\u0565\u0582",
+    "\u1E01",
+    "\u1E03",
+    "\u1E05",
+    "\u1E07",
+    "\u1E09",
+    "\u1E0B",
+    "\u1E0D",
+    "\u1E0F",
+    "\u1E11",
+    "\u1E13",
+    "\u1E15",
+    "\u1E17",
+    "\u1E19",
+    "\u1E1B",
+    "\u1E1D",
+    "\u1E1F",
+    "\u1E21",
+    "\u1E23",
+    "\u1E25",
+    "\u1E27",
+    "\u1E29",
+    "\u1E2B",
+    "\u1E2D",
+    "\u1E2F",
+    "\u1E31",
+    "\u1E33",
+    "\u1E35",
+    "\u1E37",
+    "\u1E39",
+    "\u1E3B",
+    "\u1E3D",
+    "\u1E3F",
+    "\u1E41",
+    "\u1E43",
+    "\u1E45",
+    "\u1E47",
+    "\u1E49",
+    "\u1E4B",
+    "\u1E4D",
+    "\u1E4F",
+    "\u1E51",
+    "\u1E53",
+    "\u1E55",
+    "\u1E57",
+    "\u1E59",
+    "\u1E5B",
+    "\u1E5D",
+    "\u1E5F",
+    "\u1E61",
+    "\u1E63",
+    "\u1E65",
+    "\u1E67",
+    "\u1E69",
+    "\u1E6B",
+    "\u1E6D",
+    "\u1E6F",
+    "\u1E71",
+    "\u1E73",
+    "\u1E75",
+    "\u1E77",
+    "\u1E79",
+    "\u1E7B",
+    "\u1E7D",
+    "\u1E7F",
+    "\u1E81",
+    "\u1E83",
+    "\u1E85",
+    "\u1E87",
+    "\u1E89",
+    "\u1E8B",
+    "\u1E8D",
+    "\u1E8F",
+    "\u1E91",
+    "\u1E93",
+    "\u1E95",
+    "\u0068\u0331",
+    "\u0074\u0308",
+    "\u0077\u030A",
+    "\u0079\u030A",
+    "\u0061\u02BE",
+    "\u1E61",
+    "\u1EA1",
+    "\u1EA3",
+    "\u1EA5",
+    "\u1EA7",
+    "\u1EA9",
+    "\u1EAB",
+    "\u1EAD",
+    "\u1EAF",
+    "\u1EB1",
+    "\u1EB3",
+    "\u1EB5",
+    "\u1EB7",
+    "\u1EB9",
+    "\u1EBB",
+    "\u1EBD",
+    "\u1EBF",
+    "\u1EC1",
+    "\u1EC3",
+    "\u1EC5",
+    "\u1EC7",
+    "\u1EC9",
+    "\u1ECB",
+    "\u1ECD",
+    "\u1ECF",
+    "\u1ED1",
+    "\u1ED3",
+    "\u1ED5",
+    "\u1ED7",
+    "\u1ED9",
+    "\u1EDB",
+    "\u1EDD",
+    "\u1EDF",
+    "\u1EE1",
+    "\u1EE3",
+    "\u1EE5",
+    "\u1EE7",
+    "\u1EE9",
+    "\u1EEB",
+    "\u1EED",
+    "\u1EEF",
+    "\u1EF1",
+    "\u1EF3",
+    "\u1EF5",
+    "\u1EF7",
+    "\u1EF9",
+    "\u1F00",
+    "\u1F01",
+    "\u1F02",
+    "\u1F03",
+    "\u1F04",
+    "\u1F05",
+    "\u1F06",
+    "\u1F07",
+    "\u1F10",
+    "\u1F11",
+    "\u1F12",
+    "\u1F13",
+    "\u1F14",
+    "\u1F15",
+    "\u1F20",
+    "\u1F21",
+    "\u1F22",
+    "\u1F23",
+    "\u1F24",
+    "\u1F25",
+    "\u1F26",
+    "\u1F27",
+    "\u1F30",
+    "\u1F31",
+    "\u1F32",
+    "\u1F33",
+    "\u1F34",
+    "\u1F35",
+    "\u1F36",
+    "\u1F37",
+    "\u1F40",
+    "\u1F41",
+    "\u1F42",
+    "\u1F43",
+    "\u1F44",
+    "\u1F45",
+    "\u03C5\u0313",
+    "\u03C5\u0313\u0300",
+    "\u03C5\u0313\u0301",
+    "\u03C5\u0313\u0342",
+    "\u1F51",
+    "\u1F53",
+    "\u1F55",
+    "\u1F57",
+    "\u1F60",
+    "\u1F61",
+    "\u1F62",
+    "\u1F63",
+    "\u1F64",
+    "\u1F65",
+    "\u1F66",
+    "\u1F67",
+    "\u1F00\u03B9",
+    "\u1F01\u03B9",
+    "\u1F02\u03B9",
+    "\u1F03\u03B9",
+    "\u1F04\u03B9",
+    "\u1F05\u03B9",
+    "\u1F06\u03B9",
+    "\u1F07\u03B9",
+    "\u1F00\u03B9",
+    "\u1F01\u03B9",
+    "\u1F02\u03B9",
+    "\u1F03\u03B9",
+    "\u1F04\u03B9",
+    "\u1F05\u03B9",
+    "\u1F06\u03B9",
+    "\u1F07\u03B9",
+    "\u1F20\u03B9",
+    "\u1F21\u03B9",
+    "\u1F22\u03B9",
+    "\u1F23\u03B9",
+    "\u1F24\u03B9",
+    "\u1F25\u03B9",
+    "\u1F26\u03B9",
+    "\u1F27\u03B9",
+    "\u1F20\u03B9",
+    "\u1F21\u03B9",
+    "\u1F22\u03B9",
+    "\u1F23\u03B9",
+    "\u1F24\u03B9",
+    "\u1F25\u03B9",
+    "\u1F26\u03B9",
+    "\u1F27\u03B9",
+    "\u1F60\u03B9",
+    "\u1F61\u03B9",
+    "\u1F62\u03B9",
+    "\u1F63\u03B9",
+    "\u1F64\u03B9",
+    "\u1F65\u03B9",
+    "\u1F66\u03B9",
+    "\u1F67\u03B9",
+    "\u1F60\u03B9",
+    "\u1F61\u03B9",
+    "\u1F62\u03B9",
+    "\u1F63\u03B9",
+    "\u1F64\u03B9",
+    "\u1F65\u03B9",
+    "\u1F66\u03B9",
+    "\u1F67\u03B9",
+    "\u1F70\u03B9",
+    "\u03B1\u03B9",
+    "\u03AC\u03B9",
+    "\u03B1\u0342",
+    "\u03B1\u0342\u03B9",
+    "\u1FB0",
+    "\u1FB1",
+    "\u1F70",
+    "\u1F71",
+    "\u03B1\u03B9",
+    "\u03B9",
+    "\u1F74\u03B9",
+    "\u03B7\u03B9",
+    "\u03AE\u03B9",
+    "\u03B7\u0342",
+    "\u03B7\u0342\u03B9",
+    "\u1F72",
+    "\u1F73",
+    "\u1F74",
+    "\u1F75",
+    "\u03B7\u03B9",
+    "\u03B9\u0308\u0300",
+    "\u03B9\u0308\u0301",
+    "\u03B9\u0342",
+    "\u03B9\u0308\u0342",
+    "\u1FD0",
+    "\u1FD1",
+    "\u1F76",
+    "\u1F77",
+    "\u03C5\u0308\u0300",
+    "\u03C5\u0308\u0301",
+    "\u03C1\u0313",
+    "\u03C5\u0342",
+    "\u03C5\u0308\u0342",
+    "\u1FE0",
+    "\u1FE1",
+    "\u1F7A",
+    "\u1F7B",
+    "\u1FE5",
+    "\u1F7C\u03B9",
+    "\u03C9\u03B9",
+    "\u03CE\u03B9",
+    "\u03C9\u0342",
+    "\u03C9\u0342\u03B9",
+    "\u1F78",
+    "\u1F79",
+    "\u1F7C",
+    "\u1F7D",
+    "\u03C9\u03B9",
+    "\u03C9",
+    "\u006B",
+    "\u00E5",
+    "\u2170",
+    "\u2171",
+    "\u2172",
+    "\u2173",
+    "\u2174",
+    "\u2175",
+    "\u2176",
+    "\u2177",
+    "\u2178",
+    "\u2179",
+    "\u217A",
+    "\u217B",
+    "\u217C",
+    "\u217D",
+    "\u217E",
+    "\u217F",
+    "\u24D0",
+    "\u24D1",
+    "\u24D2",
+    "\u24D3",
+    "\u24D4",
+    "\u24D5",
+    "\u24D6",
+    "\u24D7",
+    "\u24D8",
+    "\u24D9",
+    "\u24DA",
+    "\u24DB",
+    "\u24DC",
+    "\u24DD",
+    "\u24DE",
+    "\u24DF",
+    "\u24E0",
+    "\u24E1",
+    "\u24E2",
+    "\u24E3",
+    "\u24E4",
+    "\u24E5",
+    "\u24E6",
+    "\u24E7",
+    "\u24E8",
+    "\u24E9",
+    "\u0066\u0066",
+    "\u0066\u0069",
+    "\u0066\u006C",
+    "\u0066\u0066\u0069",
+    "\u0066\u0066\u006C",
+    "\u0073\u0074",
+    "\u0073\u0074",
+    "\u0574\u0576",
+    "\u0574\u0565",
+    "\u0574\u056B",
+    "\u057E\u0576",
+    "\u0574\u056D",
+    "\uFF41",
+    "\uFF42",
+    "\uFF43",
+    "\uFF44",
+    "\uFF45",
+    "\uFF46",
+    "\uFF47",
+    "\uFF48",
+    "\uFF49",
+    "\uFF4A",
+    "\uFF4B",
+    "\uFF4C",
+    "\uFF4D",
+    "\uFF4E",
+    "\uFF4F",
+    "\uFF50",
+    "\uFF51",
+    "\uFF52",
+    "\uFF53",
+    "\uFF54",
+    "\uFF55",
+    "\uFF56",
+    "\uFF57",
+    "\uFF58",
+    "\uFF59",
+    "\uFF5A",
+  };
+
+  final static char[] C11 = new char[] {
+    '\u0020',
+  };
+
+  final static char[] C12 = new char[] {
+    '\u00A0',
+    '\u1680',
+    '\u2000',
+    '\u2001',
+    '\u2002',
+    '\u2003',
+    '\u2004',
+    '\u2005',
+    '\u2006',
+    '\u2007',
+    '\u2008',
+    '\u2009',
+    '\u200A',
+    '\u200B',
+    '\u202F',
+    '\u205F',
+    '\u3000',
+  };
+
+  final static char[][] C21 = new char[][] {
+    new char[] { '\u0000', '\u001F' },
+    new char[] { '\u007F' },
+  };
+
+  final static char[][] C22 = new char[][] {
+    new char[] { '\u0080', '\u009F' },
+    new char[] { '\u06DD' },
+    new char[] { '\u070F' },
+    new char[] { '\u180E' },
+    new char[] { '\u200C' },
+    new char[] { '\u200D' },
+    new char[] { '\u2028' },
+    new char[] { '\u2029' },
+    new char[] { '\u2060' },
+    new char[] { '\u2061' },
+    new char[] { '\u2062' },
+    new char[] { '\u2063' },
+    new char[] { '\u206A', '\u206F' },
+    new char[] { '\uFEFF' },
+    new char[] { '\uFFF9', '\uFFFC' },
+  };
+
+  final static char[][] C3 = new char[][] {
+    new char[] { '\uE000', '\uF8FF' },
+  };
+
+  final static char[][] C4 = new char[][] {
+    new char[] { '\uFDD0', '\uFDEF' },
+    new char[] { '\uFFFE', '\uFFFF' },
+  };
+
+  final static char[][] C5 = new char[][] {
+    new char[] { '\uD800', '\uDFFF' },
+  };
+
+  final static char[][] C6 = new char[][] {
+    new char[] { '\uFFF9' },
+    new char[] { '\uFFFA' },
+    new char[] { '\uFFFB' },
+    new char[] { '\uFFFC' },
+    new char[] { '\uFFFD' },
+  };
+
+  final static char[][] C7 = new char[][] {
+    new char[] { '\u2FF0', '\u2FFB' },
+  };
+
+  final static char[][] C8 = new char[][] {
+    new char[] { '\u0340' },
+    new char[] { '\u0341' },
+    new char[] { '\u200E' },
+    new char[] { '\u200F' },
+    new char[] { '\u202A' },
+    new char[] { '\u202B' },
+    new char[] { '\u202C' },
+    new char[] { '\u202D' },
+    new char[] { '\u202E' },
+    new char[] { '\u206A' },
+    new char[] { '\u206B' },
+    new char[] { '\u206C' },
+    new char[] { '\u206D' },
+    new char[] { '\u206E' },
+    new char[] { '\u206F' },
+  };
+
+  final static char[][] D1 = new char[][] {
+    new char[] { '\u05BE' },
+    new char[] { '\u05C0' },
+    new char[] { '\u05C3' },
+    new char[] { '\u05D0', '\u05EA' },
+    new char[] { '\u05F0', '\u05F4' },
+    new char[] { '\u061B' },
+    new char[] { '\u061F' },
+    new char[] { '\u0621', '\u063A' },
+    new char[] { '\u0640', '\u064A' },
+    new char[] { '\u066D', '\u066F' },
+    new char[] { '\u0671', '\u06D5' },
+    new char[] { '\u06DD' },
+    new char[] { '\u06E5', '\u06E6' },
+    new char[] { '\u06FA', '\u06FE' },
+    new char[] { '\u0700', '\u070D' },
+    new char[] { '\u0710' },
+    new char[] { '\u0712', '\u072C' },
+    new char[] { '\u0780', '\u07A5' },
+    new char[] { '\u07B1' },
+    new char[] { '\u200F' },
+    new char[] { '\uFB1D' },
+    new char[] { '\uFB1F', '\uFB28' },
+    new char[] { '\uFB2A', '\uFB36' },
+    new char[] { '\uFB38', '\uFB3C' },
+    new char[] { '\uFB3E' },
+    new char[] { '\uFB40', '\uFB41' },
+    new char[] { '\uFB43', '\uFB44' },
+    new char[] { '\uFB46', '\uFBB1' },
+    new char[] { '\uFBD3', '\uFD3D' },
+    new char[] { '\uFD50', '\uFD8F' },
+    new char[] { '\uFD92', '\uFDC7' },
+    new char[] { '\uFDF0', '\uFDFC' },
+    new char[] { '\uFE70', '\uFE74' },
+    new char[] { '\uFE76', '\uFEFC' },
+  };
+
+  final static char[][] D2 = new char[][] {
+    new char[] { '\u0041', '\u005A' },
+    new char[] { '\u0061', '\u007A' },
+    new char[] { '\u00AA' },
+    new char[] { '\u00B5' },
+    new char[] { '\u00BA' },
+    new char[] { '\u00C0', '\u00D6' },
+    new char[] { '\u00D8', '\u00F6' },
+    new char[] { '\u00F8', '\u0220' },
+    new char[] { '\u0222', '\u0233' },
+    new char[] { '\u0250', '\u02AD' },
+    new char[] { '\u02B0', '\u02B8' },
+    new char[] { '\u02BB', '\u02C1' },
+    new char[] { '\u02D0', '\u02D1' },
+    new char[] { '\u02E0', '\u02E4' },
+    new char[] { '\u02EE' },
+    new char[] { '\u037A' },
+    new char[] { '\u0386' },
+    new char[] { '\u0388', '\u038A' },
+    new char[] { '\u038C' },
+    new char[] { '\u038E', '\u03A1' },
+    new char[] { '\u03A3', '\u03CE' },
+    new char[] { '\u03D0', '\u03F5' },
+    new char[] { '\u0400', '\u0482' },
+    new char[] { '\u048A', '\u04CE' },
+    new char[] { '\u04D0', '\u04F5' },
+    new char[] { '\u04F8', '\u04F9' },
+    new char[] { '\u0500', '\u050F' },
+    new char[] { '\u0531', '\u0556' },
+    new char[] { '\u0559', '\u055F' },
+    new char[] { '\u0561', '\u0587' },
+    new char[] { '\u0589' },
+    new char[] { '\u0903' },
+    new char[] { '\u0905', '\u0939' },
+    new char[] { '\u093D', '\u0940' },
+    new char[] { '\u0949', '\u094C' },
+    new char[] { '\u0950' },
+    new char[] { '\u0958', '\u0961' },
+    new char[] { '\u0964', '\u0970' },
+    new char[] { '\u0982', '\u0983' },
+    new char[] { '\u0985', '\u098C' },
+    new char[] { '\u098F', '\u0990' },
+    new char[] { '\u0993', '\u09A8' },
+    new char[] { '\u09AA', '\u09B0' },
+    new char[] { '\u09B2' },
+    new char[] { '\u09B6', '\u09B9' },
+    new char[] { '\u09BE', '\u09C0' },
+    new char[] { '\u09C7', '\u09C8' },
+    new char[] { '\u09CB', '\u09CC' },
+    new char[] { '\u09D7' },
+    new char[] { '\u09DC', '\u09DD' },
+    new char[] { '\u09DF', '\u09E1' },
+    new char[] { '\u09E6', '\u09F1' },
+    new char[] { '\u09F4', '\u09FA' },
+    new char[] { '\u0A05', '\u0A0A' },
+    new char[] { '\u0A0F', '\u0A10' },
+    new char[] { '\u0A13', '\u0A28' },
+    new char[] { '\u0A2A', '\u0A30' },
+    new char[] { '\u0A32', '\u0A33' },
+    new char[] { '\u0A35', '\u0A36' },
+    new char[] { '\u0A38', '\u0A39' },
+    new char[] { '\u0A3E', '\u0A40' },
+    new char[] { '\u0A59', '\u0A5C' },
+    new char[] { '\u0A5E' },
+    new char[] { '\u0A66', '\u0A6F' },
+    new char[] { '\u0A72', '\u0A74' },
+    new char[] { '\u0A83' },
+    new char[] { '\u0A85', '\u0A8B' },
+    new char[] { '\u0A8D' },
+    new char[] { '\u0A8F', '\u0A91' },
+    new char[] { '\u0A93', '\u0AA8' },
+    new char[] { '\u0AAA', '\u0AB0' },
+    new char[] { '\u0AB2', '\u0AB3' },
+    new char[] { '\u0AB5', '\u0AB9' },
+    new char[] { '\u0ABD', '\u0AC0' },
+    new char[] { '\u0AC9' },
+    new char[] { '\u0ACB', '\u0ACC' },
+    new char[] { '\u0AD0' },
+    new char[] { '\u0AE0' },
+    new char[] { '\u0AE6', '\u0AEF' },
+    new char[] { '\u0B02', '\u0B03' },
+    new char[] { '\u0B05', '\u0B0C' },
+    new char[] { '\u0B0F', '\u0B10' },
+    new char[] { '\u0B13', '\u0B28' },
+    new char[] { '\u0B2A', '\u0B30' },
+    new char[] { '\u0B32', '\u0B33' },
+    new char[] { '\u0B36', '\u0B39' },
+    new char[] { '\u0B3D', '\u0B3E' },
+    new char[] { '\u0B40' },
+    new char[] { '\u0B47', '\u0B48' },
+    new char[] { '\u0B4B', '\u0B4C' },
+    new char[] { '\u0B57' },
+    new char[] { '\u0B5C', '\u0B5D' },
+    new char[] { '\u0B5F', '\u0B61' },
+    new char[] { '\u0B66', '\u0B70' },
+    new char[] { '\u0B83' },
+    new char[] { '\u0B85', '\u0B8A' },
+    new char[] { '\u0B8E', '\u0B90' },
+    new char[] { '\u0B92', '\u0B95' },
+    new char[] { '\u0B99', '\u0B9A' },
+    new char[] { '\u0B9C' },
+    new char[] { '\u0B9E', '\u0B9F' },
+    new char[] { '\u0BA3', '\u0BA4' },
+    new char[] { '\u0BA8', '\u0BAA' },
+    new char[] { '\u0BAE', '\u0BB5' },
+    new char[] { '\u0BB7', '\u0BB9' },
+    new char[] { '\u0BBE', '\u0BBF' },
+    new char[] { '\u0BC1', '\u0BC2' },
+    new char[] { '\u0BC6', '\u0BC8' },
+    new char[] { '\u0BCA', '\u0BCC' },
+    new char[] { '\u0BD7' },
+    new char[] { '\u0BE7', '\u0BF2' },
+    new char[] { '\u0C01', '\u0C03' },
+    new char[] { '\u0C05', '\u0C0C' },
+    new char[] { '\u0C0E', '\u0C10' },
+    new char[] { '\u0C12', '\u0C28' },
+    new char[] { '\u0C2A', '\u0C33' },
+    new char[] { '\u0C35', '\u0C39' },
+    new char[] { '\u0C41', '\u0C44' },
+    new char[] { '\u0C60', '\u0C61' },
+    new char[] { '\u0C66', '\u0C6F' },
+    new char[] { '\u0C82', '\u0C83' },
+    new char[] { '\u0C85', '\u0C8C' },
+    new char[] { '\u0C8E', '\u0C90' },
+    new char[] { '\u0C92', '\u0CA8' },
+    new char[] { '\u0CAA', '\u0CB3' },
+    new char[] { '\u0CB5', '\u0CB9' },
+    new char[] { '\u0CBE' },
+    new char[] { '\u0CC0', '\u0CC4' },
+    new char[] { '\u0CC7', '\u0CC8' },
+    new char[] { '\u0CCA', '\u0CCB' },
+    new char[] { '\u0CD5', '\u0CD6' },
+    new char[] { '\u0CDE' },
+    new char[] { '\u0CE0', '\u0CE1' },
+    new char[] { '\u0CE6', '\u0CEF' },
+    new char[] { '\u0D02', '\u0D03' },
+    new char[] { '\u0D05', '\u0D0C' },
+    new char[] { '\u0D0E', '\u0D10' },
+    new char[] { '\u0D12', '\u0D28' },
+    new char[] { '\u0D2A', '\u0D39' },
+    new char[] { '\u0D3E', '\u0D40' },
+    new char[] { '\u0D46', '\u0D48' },
+    new char[] { '\u0D4A', '\u0D4C' },
+    new char[] { '\u0D57' },
+    new char[] { '\u0D60', '\u0D61' },
+    new char[] { '\u0D66', '\u0D6F' },
+    new char[] { '\u0D82', '\u0D83' },
+    new char[] { '\u0D85', '\u0D96' },
+    new char[] { '\u0D9A', '\u0DB1' },
+    new char[] { '\u0DB3', '\u0DBB' },
+    new char[] { '\u0DBD' },
+    new char[] { '\u0DC0', '\u0DC6' },
+    new char[] { '\u0DCF', '\u0DD1' },
+    new char[] { '\u0DD8', '\u0DDF' },
+    new char[] { '\u0DF2', '\u0DF4' },
+    new char[] { '\u0E01', '\u0E30' },
+    new char[] { '\u0E32', '\u0E33' },
+    new char[] { '\u0E40', '\u0E46' },
+    new char[] { '\u0E4F', '\u0E5B' },
+    new char[] { '\u0E81', '\u0E82' },
+    new char[] { '\u0E84' },
+    new char[] { '\u0E87', '\u0E88' },
+    new char[] { '\u0E8A' },
+    new char[] { '\u0E8D' },
+    new char[] { '\u0E94', '\u0E97' },
+    new char[] { '\u0E99', '\u0E9F' },
+    new char[] { '\u0EA1', '\u0EA3' },
+    new char[] { '\u0EA5' },
+    new char[] { '\u0EA7' },
+    new char[] { '\u0EAA', '\u0EAB' },
+    new char[] { '\u0EAD', '\u0EB0' },
+    new char[] { '\u0EB2', '\u0EB3' },
+    new char[] { '\u0EBD' },
+    new char[] { '\u0EC0', '\u0EC4' },
+    new char[] { '\u0EC6' },
+    new char[] { '\u0ED0', '\u0ED9' },
+    new char[] { '\u0EDC', '\u0EDD' },
+    new char[] { '\u0F00', '\u0F17' },
+    new char[] { '\u0F1A', '\u0F34' },
+    new char[] { '\u0F36' },
+    new char[] { '\u0F38' },
+    new char[] { '\u0F3E', '\u0F47' },
+    new char[] { '\u0F49', '\u0F6A' },
+    new char[] { '\u0F7F' },
+    new char[] { '\u0F85' },
+    new char[] { '\u0F88', '\u0F8B' },
+    new char[] { '\u0FBE', '\u0FC5' },
+    new char[] { '\u0FC7', '\u0FCC' },
+    new char[] { '\u0FCF' },
+    new char[] { '\u1000', '\u1021' },
+    new char[] { '\u1023', '\u1027' },
+    new char[] { '\u1029', '\u102A' },
+    new char[] { '\u102C' },
+    new char[] { '\u1031' },
+    new char[] { '\u1038' },
+    new char[] { '\u1040', '\u1057' },
+    new char[] { '\u10A0', '\u10C5' },
+    new char[] { '\u10D0', '\u10F8' },
+    new char[] { '\u10FB' },
+    new char[] { '\u1100', '\u1159' },
+    new char[] { '\u115F', '\u11A2' },
+    new char[] { '\u11A8', '\u11F9' },
+    new char[] { '\u1200', '\u1206' },
+    new char[] { '\u1208', '\u1246' },
+    new char[] { '\u1248' },
+    new char[] { '\u124A', '\u124D' },
+    new char[] { '\u1250', '\u1256' },
+    new char[] { '\u1258' },
+    new char[] { '\u125A', '\u125D' },
+    new char[] { '\u1260', '\u1286' },
+    new char[] { '\u1288' },
+    new char[] { '\u128A', '\u128D' },
+    new char[] { '\u1290', '\u12AE' },
+    new char[] { '\u12B0' },
+    new char[] { '\u12B2', '\u12B5' },
+    new char[] { '\u12B8', '\u12BE' },
+    new char[] { '\u12C0' },
+    new char[] { '\u12C2', '\u12C5' },
+    new char[] { '\u12C8', '\u12CE' },
+    new char[] { '\u12D0', '\u12D6' },
+    new char[] { '\u12D8', '\u12EE' },
+    new char[] { '\u12F0', '\u130E' },
+    new char[] { '\u1310' },
+    new char[] { '\u1312', '\u1315' },
+    new char[] { '\u1318', '\u131E' },
+    new char[] { '\u1320', '\u1346' },
+    new char[] { '\u1348', '\u135A' },
+    new char[] { '\u1361', '\u137C' },
+    new char[] { '\u13A0', '\u13F4' },
+    new char[] { '\u1401', '\u1676' },
+    new char[] { '\u1681', '\u169A' },
+    new char[] { '\u16A0', '\u16F0' },
+    new char[] { '\u1700', '\u170C' },
+    new char[] { '\u170E', '\u1711' },
+    new char[] { '\u1720', '\u1731' },
+    new char[] { '\u1735', '\u1736' },
+    new char[] { '\u1740', '\u1751' },
+    new char[] { '\u1760', '\u176C' },
+    new char[] { '\u176E', '\u1770' },
+    new char[] { '\u1780', '\u17B6' },
+    new char[] { '\u17BE', '\u17C5' },
+    new char[] { '\u17C7', '\u17C8' },
+    new char[] { '\u17D4', '\u17DA' },
+    new char[] { '\u17DC' },
+    new char[] { '\u17E0', '\u17E9' },
+    new char[] { '\u1810', '\u1819' },
+    new char[] { '\u1820', '\u1877' },
+    new char[] { '\u1880', '\u18A8' },
+    new char[] { '\u1E00', '\u1E9B' },
+    new char[] { '\u1EA0', '\u1EF9' },
+    new char[] { '\u1F00', '\u1F15' },
+    new char[] { '\u1F18', '\u1F1D' },
+    new char[] { '\u1F20', '\u1F45' },
+    new char[] { '\u1F48', '\u1F4D' },
+    new char[] { '\u1F50', '\u1F57' },
+    new char[] { '\u1F59' },
+    new char[] { '\u1F5B' },
+    new char[] { '\u1F5D' },
+    new char[] { '\u1F5F', '\u1F7D' },
+    new char[] { '\u1F80', '\u1FB4' },
+    new char[] { '\u1FB6', '\u1FBC' },
+    new char[] { '\u1FBE' },
+    new char[] { '\u1FC2', '\u1FC4' },
+    new char[] { '\u1FC6', '\u1FCC' },
+    new char[] { '\u1FD0', '\u1FD3' },
+    new char[] { '\u1FD6', '\u1FDB' },
+    new char[] { '\u1FE0', '\u1FEC' },
+    new char[] { '\u1FF2', '\u1FF4' },
+    new char[] { '\u1FF6', '\u1FFC' },
+    new char[] { '\u200E' },
+    new char[] { '\u2071' },
+    new char[] { '\u207F' },
+    new char[] { '\u2102' },
+    new char[] { '\u2107' },
+    new char[] { '\u210A', '\u2113' },
+    new char[] { '\u2115' },
+    new char[] { '\u2119', '\u211D' },
+    new char[] { '\u2124' },
+    new char[] { '\u2126' },
+    new char[] { '\u2128' },
+    new char[] { '\u212A', '\u212D' },
+    new char[] { '\u212F', '\u2131' },
+    new char[] { '\u2133', '\u2139' },
+    new char[] { '\u213D', '\u213F' },
+    new char[] { '\u2145', '\u2149' },
+    new char[] { '\u2160', '\u2183' },
+    new char[] { '\u2336', '\u237A' },
+    new char[] { '\u2395' },
+    new char[] { '\u249C', '\u24E9' },
+    new char[] { '\u3005', '\u3007' },
+    new char[] { '\u3021', '\u3029' },
+    new char[] { '\u3031', '\u3035' },
+    new char[] { '\u3038', '\u303C' },
+    new char[] { '\u3041', '\u3096' },
+    new char[] { '\u309D', '\u309F' },
+    new char[] { '\u30A1', '\u30FA' },
+    new char[] { '\u30FC', '\u30FF' },
+    new char[] { '\u3105', '\u312C' },
+    new char[] { '\u3131', '\u318E' },
+    new char[] { '\u3190', '\u31B7' },
+    new char[] { '\u31F0', '\u321C' },
+    new char[] { '\u3220', '\u3243' },
+    new char[] { '\u3260', '\u327B' },
+    new char[] { '\u327F', '\u32B0' },
+    new char[] { '\u32C0', '\u32CB' },
+    new char[] { '\u32D0', '\u32FE' },
+    new char[] { '\u3300', '\u3376' },
+    new char[] { '\u337B', '\u33DD' },
+    new char[] { '\u33E0', '\u33FE' },
+    new char[] { '\u3400', '\u4DB5' },
+    new char[] { '\u4E00', '\u9FA5' },
+    new char[] { '\uA000', '\uA48C' },
+    new char[] { '\uAC00', '\uD7A3' },
+    new char[] { '\uD800', '\uFA2D' },
+    new char[] { '\uFA30', '\uFA6A' },
+    new char[] { '\uFB00', '\uFB06' },
+    new char[] { '\uFB13', '\uFB17' },
+    new char[] { '\uFF21', '\uFF3A' },
+    new char[] { '\uFF41', '\uFF5A' },
+    new char[] { '\uFF66', '\uFFBE' },
+    new char[] { '\uFFC2', '\uFFC7' },
+    new char[] { '\uFFCA', '\uFFCF' },
+    new char[] { '\uFFD2', '\uFFD7' },
+    new char[] { '\uFFDA', '\uFFDC' },
+  };
+
+}
diff --git a/java/gnu/inet/encoding/Stringprep.java b/java/gnu/inet/encoding/Stringprep.java
new file mode 100644 (file)
index 0000000..3c34b5c
--- /dev/null
@@ -0,0 +1,424 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+package gnu.inet.encoding;
+
+/**
+ * This class offers static methods for preparing internationalized
+ * strings. It supports the following stringprep profiles:
+ * <ul>
+ * <li>RFC3491 nameprep
+ * <li>RFC3920 XMPP nodeprep and resourceprep
+ * </ul>
+ * Note that this implementation only supports 16-bit Unicode code
+ * points.
+ */
+public class Stringprep
+{
+  /**
+   * Preps a name according to the Stringprep profile defined in
+   * RFC3491. Unassigned code points are not allowed.
+   *
+   * @param input the name to prep.
+   * @return the prepped name.
+   * @throws StringprepException If the name cannot be prepped with
+   * this profile.
+   * @throws NullPointerException If the name is null.
+   */
+  public static String nameprep(String input)
+    throws StringprepException,
+          NullPointerException
+  {
+    return nameprep(input, false);
+  }
+
+  /**
+   * Preps a name according to the Stringprep profile defined in
+   * RFC3491.
+   *
+   * @param input the name to prep.
+   * @param allowUnassigned true if the name may contain unassigned
+   * code points.
+   * @return the prepped name.
+   * @throws StringprepException If the name cannot be prepped with
+   * this profile.
+   * @throws NullPointerException If the name is null.
+   */
+  public static String nameprep(String input, boolean allowUnassigned)
+    throws StringprepException,
+          NullPointerException
+  {
+    if (input == null) {
+      throw new NullPointerException();
+    }
+
+    StringBuffer s = new StringBuffer(input);
+
+    if (!allowUnassigned && contains(s, RFC3454.A1)) {
+      throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED);
+    }
+
+    filter(s, RFC3454.B1);
+    map(s, RFC3454.B2search, RFC3454.B2replace);
+
+    s = new StringBuffer(NFKC.normalizeNFKC(s.toString()));
+    // B.3 is only needed if NFKC is not used, right?
+    // map(s, RFC3454.B3search, RFC3454.B3replace);
+
+    if (contains(s, RFC3454.C12) ||
+       contains(s, RFC3454.C22) ||
+       contains(s, RFC3454.C3) ||
+       contains(s, RFC3454.C4) ||
+       contains(s, RFC3454.C5) ||
+       contains(s, RFC3454.C6) ||
+       contains(s, RFC3454.C7) ||
+       contains(s, RFC3454.C8)) {
+      // Table C.9 only contains code points > 0xFFFF which Java
+      // doesn't handle
+      throw new StringprepException(StringprepException.CONTAINS_PROHIBITED);
+    }
+
+    // Bidi handling
+    boolean r = contains(s, RFC3454.D1);
+    boolean l = contains(s, RFC3454.D2);
+
+    // RFC 3454, section 6, requirement 1: already handled above (table C.8)
+
+    // RFC 3454, section 6, requirement 2
+    if (r && l) {
+      throw new StringprepException(StringprepException.BIDI_BOTHRAL);
+    }
+
+    // RFC 3454, section 6, requirement 3
+    if (r) {
+      if (!contains(s.charAt(0), RFC3454.D1) ||
+         !contains(s.charAt(s.length()-1), RFC3454.D1)) {
+       throw new StringprepException(StringprepException.BIDI_LTRAL);
+      }
+    }
+
+    return s.toString();
+  }
+
+  /**
+   * Characters prohibited by RFC3920 nodeprep that aren't defined as
+   * part of the RFC3454 tables.
+   */
+  private static final char [] RFC3920_NODEPREP_PROHIBIT = new char [] {
+    '\u0022', '\u0026', '\'',     '\u002F',
+    '\u003A', '\u003C', '\u003E', '\u0040'
+  };
+
+  /**
+   * Preps a node name according to the Stringprep profile defined in
+   * RFC3920. Unassigned code points are not allowed.
+   *
+   * @param input the node name to prep.
+   * @return the prepped node name.
+   * @throws StringprepException If the node name cannot be prepped
+   * with this profile.
+   * @throws NullPointerException If the node name is null.
+   */
+  public static String nodeprep(String input)
+    throws StringprepException,
+          NullPointerException
+  {
+    return nodeprep(input, false);
+  }
+
+  /**
+   * Preps a node name according to the Stringprep profile defined in
+   * RFC3920.
+   *
+   * @param input the node name to prep.
+   * @param allowUnassigned true if the node name may contain
+   * unassigned code points.
+   * @return the prepped node name.
+   * @throws StringprepException If the node name cannot be prepped
+   * with this profile.
+   * @throws NullPointerException If the node name is null.
+   */
+  public static String nodeprep(String input, boolean allowUnassigned)
+    throws StringprepException,
+          NullPointerException
+  {
+    if (input == null) {
+      throw new NullPointerException();
+    }
+
+    StringBuffer s = new StringBuffer(input);
+
+    if (!allowUnassigned && contains(s, RFC3454.A1)) {
+      throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED);
+    }
+
+    filter(s, RFC3454.B1);
+    map(s, RFC3454.B2search, RFC3454.B2replace);
+
+    s = new StringBuffer(NFKC.normalizeNFKC(s.toString()));
+    
+    if (contains(s, RFC3454.C11) ||
+       contains(s, RFC3454.C12) ||
+       contains(s, RFC3454.C21) ||
+       contains(s, RFC3454.C22) ||
+       contains(s, RFC3454.C3) ||
+       contains(s, RFC3454.C4) ||
+       contains(s, RFC3454.C5) ||
+       contains(s, RFC3454.C6) ||
+       contains(s, RFC3454.C7) ||
+       contains(s, RFC3454.C8) ||
+       contains(s, RFC3920_NODEPREP_PROHIBIT)) {                           
+      // Table C.9 only contains code points > 0xFFFF which Java
+      // doesn't handle
+      throw new StringprepException(StringprepException.CONTAINS_PROHIBITED);
+    }
+
+    // Bidi handling
+    boolean r = contains(s, RFC3454.D1);
+    boolean l = contains(s, RFC3454.D2);
+
+    // RFC 3454, section 6, requirement 1: already handled above (table C.8)
+
+    // RFC 3454, section 6, requirement 2
+    if (r && l) {
+      throw new        StringprepException(StringprepException.BIDI_BOTHRAL);
+    }
+    
+    // RFC 3454, section 6, requirement 3
+    if (r) {
+      if (!contains(s.charAt(0), RFC3454.D1) ||
+         !contains(s.charAt(s.length() - 1), RFC3454.D1)) {
+       throw new StringprepException(StringprepException.BIDI_LTRAL);
+      }
+    }
+    
+    return s.toString();
+  }
+
+  /**
+   * Preps a resource name according to the Stringprep profile defined
+   * in RFC3920. Unassigned code points are not allowed.
+   *
+   * @param input the resource name to prep.
+   * @return the prepped node name.
+   * @throws StringprepException If the resource name cannot be prepped
+   * with this profile.
+   * @throws NullPointerException If the resource name is null.
+   */
+  public static String resourceprep(String input)
+    throws StringprepException,
+          NullPointerException
+  {
+    return resourceprep(input, false);
+  }
+
+  /**
+   * Preps a resource name according to the Stringprep profile defined
+   * in RFC3920.
+   *
+   * @param input the resource name to prep.
+   * @param allowUnassigned true if the resource name may contain
+   * unassigned code points.
+   * @return the prepped node name.
+   * @throws StringprepException If the resource name cannot be prepped
+   * with this profile.
+   * @throws NullPointerException If the resource name is null.
+   */
+  public static String resourceprep(String input, boolean allowUnassigned)
+    throws StringprepException,
+          NullPointerException
+  {
+    if (input == null) {
+      throw new NullPointerException();
+    }
+
+    StringBuffer s = new StringBuffer(input);
+    
+    if (!allowUnassigned && contains(s, RFC3454.A1)) {
+      throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED);
+    }
+
+    filter(s, RFC3454.B1);
+    
+    s = new StringBuffer(NFKC.normalizeNFKC(s.toString()));
+    
+    if (contains(s, RFC3454.C12) ||
+       contains(s, RFC3454.C21) ||
+       contains(s, RFC3454.C22) ||
+       contains(s, RFC3454.C3) ||
+       contains(s, RFC3454.C4) ||
+       contains(s, RFC3454.C5) ||
+       contains(s, RFC3454.C6) ||
+       contains(s, RFC3454.C7) ||
+       contains(s, RFC3454.C8)) {
+      // Table C.9 only contains code points > 0xFFFF which Java
+      // doesn't handle
+      throw new StringprepException(StringprepException.CONTAINS_PROHIBITED);
+    }
+    
+    // Bidi handling
+    boolean r = contains(s, RFC3454.D1);
+    boolean l = contains(s, RFC3454.D2);
+    
+    // RFC 3454, section 6, requirement 1: already handled above (table C.8)
+    
+    // RFC 3454, section 6, requirement 2
+    if (r && l) {
+      throw new        StringprepException(StringprepException.BIDI_BOTHRAL);
+    }
+
+    // RFC 3454, section 6, requirement 3
+    if (r) {
+      if (!contains(s.charAt(0), RFC3454.D1) ||
+         !contains(s.charAt(s.length() - 1), RFC3454.D1)) {
+       throw new StringprepException(StringprepException.BIDI_LTRAL);
+      }
+    }
+    
+    return s.toString();
+  }
+
+  static boolean contains(StringBuffer s, char[] p)
+  {
+    for (int i = 0; i < p.length; i++) {
+      char c = p[i];
+      for (int j = 0; j < s.length(); j++) {
+       if (c == s.charAt(j)) {
+         return true;
+       }
+      }
+    }
+    return false;
+  }
+
+  static boolean contains(StringBuffer s, char[][] p)
+  {
+    for (int i = 0; i < p.length; i++) {
+      char[] r = p[i];
+      if (1 == r.length) {
+       char c = r[0];
+       for (int j = 0; j < s.length(); j++) {
+         if (c == s.charAt(j)) {
+           return true;
+         }
+       }
+      } else if (2 == r.length) {
+       char f = r[0];
+       char t = r[1];
+       for (int j = 0; j < s.length(); j++) {
+         if (f <= s.charAt(j) && t >= s.charAt(j)) {
+           return true;
+         }
+       }
+      }
+    }
+    return false;
+  }
+
+  static boolean contains(char c, char[][] p)
+  {
+    for (int i = 0; i < p.length; i++) {
+      char[] r = p[i];
+      if (1 == r.length) {
+       if (c == r[0]) {
+         return true;
+       }
+      } else if (2 == r.length) {
+       char f = r[0];
+       char t = r[1];
+       if (f <= c && t >= c) {
+         return true;
+       }
+      }
+    }
+    return false;
+  }
+
+  static void filter(StringBuffer s, char[] f)
+  {
+    for (int i = 0; i < f.length; i++) {
+      char c = f[i];
+
+      int j = 0;
+      while (j < s.length()) {
+       if (c == s.charAt(j)) {
+         s.deleteCharAt(j);
+       } else {
+         j++;
+       }
+      }
+    }
+  }
+
+  static void filter(StringBuffer s, char[][] f)
+  {
+    for (int i = 0; i < f.length; i++) {
+      char[] r = f[i];
+
+      if (1 == r.length) {
+       char c = r[0];
+
+       int j = 0;
+       while (j < s.length()) {
+         if (c == s.charAt(j)) {
+           s.deleteCharAt(j);
+         } else {
+           j++;
+         }
+       }
+      } else if (2 == r.length) {
+       char from = r[0];
+       char to = r[1];
+
+       int j = 0;
+       while (j < s.length()) {
+         if (from <= s.charAt(j) && to >= s.charAt(j)) {
+           s.deleteCharAt(j);
+         } else {
+           j++;
+         }
+       }
+      }
+    }
+  }
+
+  static void map(StringBuffer s, char[] search, String[] replace)
+  {
+    for (int i = 0; i < search.length; i++) {
+      char c = search[i];
+
+      int j = 0;
+      while (j < s.length()) {
+       if (c == s.charAt(j)) {
+         s.deleteCharAt(j);
+         if (null != replace[i]) {
+           s.insert(j, replace[i]);
+           j += replace[i].length()-1;
+         }
+       } else {
+         j++;
+       }
+      }
+    }
+  }
+}
diff --git a/java/gnu/inet/encoding/StringprepException.java b/java/gnu/inet/encoding/StringprepException.java
new file mode 100644 (file)
index 0000000..ed15efe
--- /dev/null
@@ -0,0 +1,41 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+package gnu.inet.encoding;
+
+/**
+ * Exception handling for StringPrep class.
+ */
+public class StringprepException
+  extends Exception
+{
+  public static String CONTAINS_UNASSIGNED = "Contains unassigned code points.";
+  public static String CONTAINS_PROHIBITED = "Contains prohibited code points.";
+  public static String BIDI_BOTHRAL = "Contains both R and AL code points.";
+  public static String BIDI_LTRAL = "Leading and trailing code points not both R or AL.";
+
+  public StringprepException(String m)
+  {
+    super(m);
+  }
+}
\ No newline at end of file
diff --git a/java/libidn-1.15.jar b/java/libidn-1.15.jar
new file mode 100644 (file)
index 0000000..aa3055b
Binary files /dev/null and b/java/libidn-1.15.jar differ
diff --git a/java/misc/GenerateNFKC.java b/java/misc/GenerateNFKC.java
new file mode 100644 (file)
index 0000000..d4a5efa
--- /dev/null
@@ -0,0 +1,586 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.Iterator;
+
+public class GenerateNFKC
+{
+  static String stripComment(String in)
+  {
+    int c = in.indexOf('#');
+    if (c == -1) {
+      return in;
+    } else {
+      return in.substring(0, c);
+    }
+  }
+
+  static String[] split(String in, char sep)
+  {
+    StringBuffer sb = new StringBuffer(in);
+    int c = 0;
+    for (int i = 0; i < sb.length(); i++) {
+      if (sb.charAt(i) == sep) {
+       c++;
+      }
+    }
+
+    String out[] = new String[c+1];
+    c = 0;
+    int l = 0;
+    for (int i = 0; i < sb.length(); i++) {
+      if (sb.charAt(i) == sep) {
+       if (l >= i) {
+         out[c] = "";
+       } else {
+         out[c] = sb.substring(l, i);
+       }
+        l = i+1;
+       c++;
+      }
+    }
+    if (l < sb.length()) {
+      out[c] = sb.substring(l);
+    }
+    return out;
+  }
+
+  static boolean isCompatibilityMapping(String in)
+  {
+    return in.length() > 0 && in.charAt(0) == '<';
+  }
+
+  static String stripCompatibilityTag(String in)
+  {
+    return in.substring(in.indexOf('>')+2);
+  }
+
+  static String toJavaString(String in)
+  {
+    StringBuffer out = new StringBuffer();
+    String[] chars = split(in, ' ');
+    for (int i = 0; i < chars.length; i++) {
+      if (chars[i].equals("005C")) {
+       out.append("\\\\");
+      } else if (chars[i].equals("0022")) {
+       out.append("\\\"");
+      } else {
+       out.append("\\u");
+       out.append(chars[i]);
+      }
+    }
+    return out.toString();
+  }
+
+  static String decompose(String in, TreeMap mappings)
+  {
+    StringBuffer out = new StringBuffer("");
+    String[] c = split(in, ' ');
+
+    for (int i = 0; i < c.length; i++) {
+      if (mappings.containsKey(c[i])) {
+       if (out.length() > 0) {
+         out.append(" ");
+       }
+       out.append(decompose((String) mappings.get(c[i]), mappings));
+      } else {
+       if (out.length() > 0) {
+         out.append(" ");
+       }
+       out.append(c[i]);
+      }
+    }
+
+    return out.toString();
+  }
+
+  public static void main(String[] arg)
+    throws Exception
+  {
+    // Check if the unicode files exist
+    {
+      File f1 = new File("CompositionExclusions.txt");
+      File f2 = new File("UnicodeData.txt");
+      if (!f1.exists() || !f2.exists()) {
+       System.err.println("Unable to find UnicodeData.txt or CompositionExclusions.txt.");
+       System.err.println("Please download the latest version of these file from:");
+       System.err.println("http://www.unicode.org/Public/UNIDATA/");
+       System.exit(1);
+      }
+    }
+
+    // Read CompositionExclusions
+    TreeSet exclusions = new TreeSet();
+    {
+      BufferedReader r = new BufferedReader(new FileReader("CompositionExclusions.txt"));
+      String line;
+      while (null != (line = r.readLine())) {
+       line = stripComment(line);
+       line = line.trim();
+       if (line.length() == 0) {
+         // Empty line
+       } else if (line.length() == 4) {
+         exclusions.add(line);
+       } else {
+         // Skip code points > 0xffff
+       }
+      }
+      r.close();
+    }
+
+    // Read UnicodeData
+    TreeMap canonical = new TreeMap();
+    TreeMap compatibility = new TreeMap();
+    TreeMap combiningClasses = new TreeMap();
+
+    {
+      BufferedReader r = new BufferedReader(new FileReader("UnicodeData.txt"));
+      String line;
+      while (null != (line = r.readLine())) {
+       line = stripComment(line);
+       line = line.trim();
+       
+       if (line.length() == 0) {
+         // Empty line
+       } else {
+         String[] f = split(line, ';');
+         
+         if (f[0].length() == 4) {
+           if (!f[5].equals("")) {
+             if (isCompatibilityMapping(f[5])) {
+               compatibility.put(f[0], stripCompatibilityTag(f[5]));
+             } else {
+               compatibility.put(f[0], f[5]);
+               if (!exclusions.contains(f[0])) {
+                 canonical.put(f[0], f[5]);
+               }
+             }
+           }
+           if (!f[3].equals("0")) {
+             combiningClasses.put(new Integer(Integer.parseInt(f[0], 16)), f[3]);
+           }
+         } else {
+           // Skip code points > 0xffff
+         }
+       }
+      }
+      r.close();
+    }
+
+    // Recursively apply compatibility mappings
+    while (true) {
+      boolean replaced = false;
+
+      Iterator i = compatibility.keySet().iterator();
+      while (i.hasNext()) {
+       String k = (String) i.next();
+       String v = (String) compatibility.get(k);
+
+       String d = decompose(v, compatibility);
+       if (!d.equals(v)) {
+         replaced = true;
+         compatibility.put(k, d);
+       }
+      }
+
+      if (!replaced) {
+       break;
+      }
+    }
+
+    // Eliminate duplicate mappings
+    TreeMap compatibilityKeys = new TreeMap();
+    ArrayList compatibilityMappings = new ArrayList();
+
+    {
+      Iterator i = compatibility.keySet().iterator();
+      while (i.hasNext()) {
+       String k = (String) i.next();
+       String v = (String) compatibility.get(k);
+       
+       int index = compatibilityMappings.indexOf(v);
+       if (index == -1) {
+         index = compatibilityMappings.size();
+         compatibilityMappings.add(v);
+       }
+       compatibilityKeys.put(k, new Integer(index));
+      }
+    }
+
+    // Create composition tables
+    TreeMap firstMap = new TreeMap();
+    TreeMap secondMap = new TreeMap();
+    
+    {
+      Iterator i = canonical.keySet().iterator();
+      while (i.hasNext()) {
+       String k = (String) i.next();
+       String v = (String) canonical.get(k);
+
+       String[] s = split(v, ' ');
+
+       if (s.length == 2) {
+         // If both characters have the same combining class, they
+         // won't be combined (in the sequence AB, B is blocked from
+         // A if both have the same combining class)
+         String cc1 = (String) combiningClasses.get(new Integer(Integer.parseInt(s[0], 16)));
+         String cc2 = (String) combiningClasses.get(new Integer(Integer.parseInt(s[1], 16)));
+         if (cc1 != null || (cc1 != null && cc1.equals(cc2))) {
+           // Ignore this composition
+           i.remove();
+           continue;
+         }
+
+         if (firstMap.containsKey(s[0])) {
+           Integer c = (Integer) firstMap.get(s[0]);
+           firstMap.put(s[0], new Integer(c.intValue()+1));
+         } else {
+           firstMap.put(s[0], new Integer(1));
+         }
+
+         if (secondMap.containsKey(s[1])) {
+           Integer c = (Integer) secondMap.get(s[1]);
+           secondMap.put(s[1], new Integer(c.intValue()+1));
+         } else {
+           secondMap.put(s[1], new Integer(1));
+         }
+       } else if (s.length > 2) {
+         System.err.println("? wrong canonical mapping for "+k);
+         System.exit(1);
+       }       
+      }
+    }
+
+    TreeMap singleFirstComposition = new TreeMap();
+    TreeMap singleSecondComposition = new TreeMap();
+    TreeMap complexComposition = new TreeMap();
+
+    int composeLookupMax = 0;
+    {
+      Iterator i = canonical.keySet().iterator();
+      while (i.hasNext()) {
+       String k = (String) i.next();
+       String v = (String) canonical.get(k);
+
+       String[] s = split(v, ' ');
+
+       if (s.length == 2) {
+         Integer first = (Integer) firstMap.get(s[0]);
+         Integer second = (Integer) secondMap.get(s[1]);
+
+         if (first.intValue() == 1) {
+           singleFirstComposition.put(s[0], new String[] { s[1], k });
+           composeLookupMax = Math.max(composeLookupMax, Integer.parseInt(s[0], 16));
+         } else if (second.intValue() == 1) {
+           singleSecondComposition.put(s[1], new String[] { s[0], k });
+           composeLookupMax = Math.max(composeLookupMax, Integer.parseInt(s[1], 16));
+         } else {
+           if (complexComposition.containsKey(s[0])) {
+             TreeMap m = (TreeMap) complexComposition.get(s[0]);
+             if (m.containsKey(s[1])) {
+               System.err.println("? ambiguous canonical mapping for "+s[0]);
+               System.exit(1);
+             }
+             m.put(s[1], k);
+           } else {
+             TreeMap m = new TreeMap();
+             m.put(s[1], k);
+             complexComposition.put(s[0], m);
+           }
+           composeLookupMax = Math.max(composeLookupMax, Integer.parseInt(s[0], 16));
+           composeLookupMax = Math.max(composeLookupMax, Integer.parseInt(s[1], 16));
+         }
+       }
+      }
+    }
+
+    System.out.print("Creating CombiningClass.java...");
+
+    // Dump combining classes
+    {
+      PrintWriter w = new PrintWriter(new FileWriter("CombiningClass.java"));
+      w.println("/* This file is automatically generated.  DO NOT EDIT!");
+      w.println("   Instead, edit GenerateNFKC.java and re-run.  */");
+      w.println();
+      w.println("package gnu.inet.encoding;");
+      w.println();
+      w.println("/**");
+      w.println(" * Auto-generated class containing Unicode NFKC tables.");
+      w.println(" */");
+      w.println("public class CombiningClass");
+      w.println("{");
+      w.println("  public final static int[][] c = new int[][] {");
+      StringBuffer index = new StringBuffer();
+
+      int count = 0;
+      
+      for (int i = 0; i < 256; i++) {
+       boolean empty = true;
+       
+       StringBuffer page = new StringBuffer();
+       page.append("    { /* Page "+i+" */");
+       
+       for (int j = 0; j < 256; j++) {
+         Integer c = new Integer((i << 8) + j);
+         String cc = (String) combiningClasses.get(c);
+         
+         if (0 == (j & 31)) {
+           page.append("\n      ");
+         }
+         if (cc == null) {
+           page.append("0, ");
+         } else {
+           page.append(cc+", ");
+           empty = false;
+         }
+       }
+       page.append("\n    },");
+       
+       index.append("    ");
+
+       if (!empty) {
+         w.println(page.toString());
+         index.append(count++);
+         index.append(",\n");
+       } else {
+         index.append("-1,\n");
+       }
+      }
+      w.println("  };\n");
+
+      w.println("  public final static int[] i = new int[] {");
+      w.print(index.toString());
+      w.println("  };");
+      w.println("}");
+      w.close();
+    }
+
+    System.out.println(" Ok.");
+    System.out.print("Creating DecompositionKeys.java...");
+
+    // Dump compatibility decomposition
+    {
+      PrintWriter w = new PrintWriter(new FileWriter("DecompositionKeys.java"));
+      w.println("/* This file is automatically generated.  DO NOT EDIT!");
+      w.println("   Instead, edit GenerateNFKC.java and re-run.  */");
+      w.println();
+      w.println("package gnu.inet.encoding;");
+      w.println();
+      w.println("/**");
+      w.println(" * Auto-generated class containing Unicode NFKC tables.");
+      w.println(" */");
+      w.println("public class DecompositionKeys");
+      w.println("{");
+      w.println("  public final static int[] k = new int[] {");
+      Iterator i = compatibilityKeys.keySet().iterator();
+      while (i.hasNext()) {
+       String k  = (String) i.next();
+       int index = ((Integer) compatibilityKeys.get(k)).intValue();
+       w.println("    '\\u"+k+"', "+index+",");
+      }
+      w.println("  };");
+      w.println("}");
+      w.close();
+    }
+
+    System.out.println(" Ok.");
+    System.out.print("Creating DecompositionMappings.java...");
+    
+    {
+      PrintWriter w = new PrintWriter(new FileWriter("DecompositionMappings.java"));
+      w.println("/* This file is automatically generated.  DO NOT EDIT!");
+      w.println("   Instead, edit GenerateNFKC.java and re-run.  */");
+      w.println();
+      w.println("package gnu.inet.encoding;");
+      w.println();
+      w.println("/**");
+      w.println(" * Auto-generated class containing Unicode NFKC tables.");
+      w.println(" */");
+      w.println("public class DecompositionMappings");
+      w.println("{");
+      w.println("  public final static String[] m = new String[] {");
+      Iterator i = compatibilityMappings.iterator();
+      while (i.hasNext()) {
+       String m = (String) i.next();
+       w.println("    \""+toJavaString(m)+"\",");
+      }
+      w.println("  };");
+      w.println("}");
+      w.close();
+    }
+
+    System.out.println(" Ok.");
+    System.out.print("Creating Composition.java...");
+
+    // Dump canonical composition
+    {
+      PrintWriter w = new PrintWriter(new FileWriter("Composition.java"));
+      w.println("/* This file is automatically generated.  DO NOT EDIT!");
+      w.println("   Instead, edit GenerateNFKC.java and re-run.  */");
+      w.println();
+      w.println("package gnu.inet.encoding;");
+      w.println();
+      w.println("/**");
+      w.println(" * Auto-generated class containing Unicode NFKC tables.");
+      w.println(" */");
+      w.println("public class Composition");
+      w.println("{");
+
+      Iterator i;
+      int index = 0;
+
+      TreeMap indices = new TreeMap();
+
+      i = complexComposition.keySet().iterator();
+      while (i.hasNext()) {
+       String s0 = (String) i.next();
+       indices.put(new Integer(Integer.parseInt(s0, 16)), new Integer(index));
+       index++;
+      }
+
+      int multiSecondStart = index;
+
+      w.println("  public final static char[][] multiFirst = new char[][] {");
+      i = complexComposition.keySet().iterator();
+      while (i.hasNext()) {
+       String s0 = (String) i.next();
+       TreeMap m = (TreeMap) complexComposition.get(s0);
+
+       TreeMap line = new TreeMap();
+       int maxIndex = 1;
+
+       Iterator i2 = m.keySet().iterator();
+       while (i2.hasNext()) {
+         String s1 = (String) i2.next();
+         String k = (String) m.get(s1);
+
+         Integer s1i = new Integer(Integer.parseInt(s1, 16));
+
+         if (!indices.containsKey(s1i)) {
+           indices.put(s1i, new Integer(index));
+           index++;
+         }
+         line.put(indices.get(s1i), k);
+         maxIndex = Math.max(maxIndex, ((Integer) indices.get(s1i)).intValue());
+       }
+
+       w.print("    { ");
+       for (int j = multiSecondStart; j <= maxIndex; j++) {
+         if (line.containsKey(new Integer(j))) {
+           String s = (String) line.get(new Integer(j));
+           w.print("'"+toJavaString(s)+"', ");
+         } else {
+           w.print("       0, ");
+         }
+       }
+       w.println("},");        
+      }
+      w.println("  };");
+
+      int singleFirstStart = index;
+
+      w.println("  public final static char[][] singleFirst = new char[][] {");
+      i = singleFirstComposition.keySet().iterator();
+      while (i.hasNext()) {
+       String k = (String) i.next();
+       String[] v = ((String[]) singleFirstComposition.get(k));
+       w.println("    { '"+toJavaString(v[0])+"', '"+toJavaString(v[1])+"' },");
+
+       if (indices.containsKey(new Integer(Integer.parseInt(k, 16)))) {
+         System.out.println(k+" already indexed!");
+       }
+
+       indices.put(new Integer(Integer.parseInt(k, 16)), new Integer(index));
+       index++;
+      }
+      w.println("  };");
+
+      int singleSecondStart = index;
+
+      w.println("  public final static char[][] singleSecond = new char[][] {");
+      i = singleSecondComposition.keySet().iterator();
+      while (i.hasNext()) {
+       String k = (String) i.next();
+       String[] v = ((String[]) singleSecondComposition.get(k));
+       w.println("    { '"+toJavaString(v[0])+"', '"+toJavaString(v[1])+"' },");
+
+       indices.put(new Integer(Integer.parseInt(k, 16)), new Integer(index));
+       index++;
+      }
+      w.println("  };");
+
+      w.println("  public final static int multiSecondStart = "+multiSecondStart+";");
+      w.println("  public final static int singleFirstStart = "+singleFirstStart+";");
+      w.println("  public final static int singleSecondStart = "+singleSecondStart+";");
+
+      StringBuffer compositionPages = new StringBuffer();
+
+      w.println("  public final static int[] composePage = new int[] {");
+      int pageCount = 0;
+      for (int j = 0; j*256 < composeLookupMax+255; j++) {
+       boolean empty = true;
+       StringBuffer page = new StringBuffer();
+       for (int k = 0; k < 256; k++) {
+         if (k % 16 == 0) {
+           page.append("\n      ");
+         }
+         if (indices.containsKey(new Integer(j*256+k))) {
+           page.append(indices.get(new Integer(j*256+k)));
+           page.append(", ");
+           empty = false;
+         } else {
+           page.append("-1, ");
+         }
+       }
+
+       if (empty) {
+         w.println("    -1,");
+       } else {
+         w.println("    "+pageCount+",");
+         compositionPages.append("    {");
+         compositionPages.append(page);
+         compositionPages.append("\n    },\n");
+         pageCount++;
+       }
+      }
+      w.println("  };");
+
+      w.println("  public final static int[][] composeData = new int[][] {");
+      w.print(compositionPages);
+      w.println("  };");
+
+      w.println("}");
+      w.close();
+    }
+
+    System.out.println(" Ok.");
+  }
+}
\ No newline at end of file
diff --git a/java/misc/GenerateRFC3454.java b/java/misc/GenerateRFC3454.java
new file mode 100644 (file)
index 0000000..7b23de9
--- /dev/null
@@ -0,0 +1,226 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.StringTokenizer;
+
+public class GenerateRFC3454
+{
+  static class Range
+  {
+    int t, f;
+
+    public Range(String r)
+    {
+      if (r.length() == 9) {
+       f = Integer.parseInt(r.substring(0, 4), 16);
+       t = Integer.parseInt(r.substring(5, 9), 16);
+      } else {
+       f = Integer.parseInt(r.substring(0, 5), 16);
+       t = Integer.parseInt(r.substring(6, 11), 16);
+      }
+    }
+
+    public boolean hasNext()
+    {
+      return (f <= t);
+    }
+
+    public String next()
+    {
+      StringBuffer s = new StringBuffer(Integer.toHexString(f));
+      while (s.length() < 4) {
+       s.insert(0, '0');
+      }
+      f++;
+      return s.toString();
+    }
+  }
+
+  public static void main(String[] arg)
+    throws Exception
+  {
+    File f = new File("rfc3454.txt");
+    if (!f.exists()) {
+      System.err.println("Unable to find rfc3454.txt.");
+      System.err.println("Please download this file from:");
+      System.err.println("http://www.ietf.org/rfc/rfc3454.txt");
+      System.exit(1);
+    }
+
+    System.out.print("Creating RFC3454.java...");
+
+    BufferedReader r = new BufferedReader(new FileReader(f));
+    PrintWriter w = new PrintWriter(new FileWriter("RFC3454.java"));
+    w.println("/* This file is automatically generated.  DO NOT EDIT!");
+    w.println("   Instead, edit GenerateRFC3454.java and re-run.  */");
+    w.println();
+    w.println("package gnu.inet.encoding;");
+    w.println();
+    w.println("/**");
+    w.println(" * Auto-generated class containing StringPrep mapping tables.");
+    w.println(" */");
+    w.println("public class RFC3454");
+    w.println("{");
+    
+    int n = 0;
+    
+    String t = null;
+    StringBuffer o1 = null;
+    StringBuffer o2 = null;
+    
+    while (true) {
+      String l = r.readLine();
+      if (null == l) {
+       break;
+      }
+      l = l.trim();
+      
+      if (l.equals("")) {
+       // Ignore empty line
+      } else if (-1 != l.indexOf("\u000c")) {
+       // Ignore FF
+      } else if (0 == l.indexOf("RFC")) {
+       // Ignore page header
+      } else if (0 == l.indexOf("Hoffman & Blanchet")) {
+       // Ignore page footer
+      } else if (-1 != l.indexOf("----- Start Table ")) {
+       // Start of a table
+       t = l.substring(l.indexOf("Table")+6, l.lastIndexOf("-----")-1);
+       o1 = new StringBuffer();
+       o2 = new StringBuffer();
+      } else if (-1 != l.indexOf("----- End Table ")) {
+       // End of a table
+       if ("A.1".equals(t)) {
+         w.println("  final static char[][] A1 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("B.1".equals(t)) {
+         w.println("  final static char[] B1 = new char[] {\n"+o1.toString()+"  };\n");
+       } else if ("B.2".equals(t)) {
+         w.println("  final static char[] B2search = new char[] {\n"+o1.toString()+"  };\n");
+         w.println("  final static String[] B2replace = new String[] {\n"+o2.toString()+"  };\n");
+       } else if ("B.3".equals(t)) {
+         w.println("  final static char[] B3search = new char[] {\n"+o1.toString()+"  };\n");
+         w.println("  final static String[] B3replace = new String[] {\n"+o2.toString()+"  };\n");
+       } else if ("C.1.1".equals(t)) {
+         w.println("  final static char[] C11 = new char[] {\n"+o1.toString()+"  };\n");
+       } else if ("C.1.2".equals(t)) {
+         w.println("  final static char[] C12 = new char[] {\n"+o1.toString()+"  };\n");
+       } else if ("C.2.1".equals(t)) {
+         w.println("  final static char[][] C21 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("C.2.2".equals(t)) {
+         w.println("  final static char[][] C22 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("C.3".equals(t)) {
+         w.println("  final static char[][] C3 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("C.4".equals(t)) {
+         w.println("  final static char[][] C4 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("C.5".equals(t)) {
+         w.println("  final static char[][] C5 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("C.6".equals(t)) {
+         w.println("  final static char[][] C6 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("C.7".equals(t)) {
+         w.println("  final static char[][] C7 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("C.8".equals(t)) {
+         w.println("  final static char[][] C8 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("D.1".equals(t)) {
+         w.println("  final static char[][] D1 = new char[][] {\n"+o1.toString()+"  };\n");
+       } else if ("D.2".equals(t)) {
+         w.println("  final static char[][] D2 = new char[][] {\n"+o1.toString()+"  };\n");
+       }
+       t = null;
+      } else if (null != t) {
+       // Filter comments
+       if (-1 != l.lastIndexOf(";")) {
+         String c = l.substring(l.lastIndexOf(";")).trim();
+         try {
+           Integer.parseInt(c, 16);
+         } catch (NumberFormatException e) {
+           l = l.substring(0, l.lastIndexOf(";"));
+         }
+       }
+       
+       if ("A.1".equals(t)) {
+         if (4 == l.length()) {
+           o1.append("    new char[] { '\\u");
+           o1.append(l);
+           o1.append("' },\n");
+         } else if (5 == l.length()) {
+           // Skip characters outside the range of Java unicode
+         } else if (9 == l.length()) {
+           o1.append("    new char[] { '\\u");
+           o1.append(l.substring(0, 4));
+           o1.append("', '\\u");
+           o1.append(l.substring(5, 9));
+           o1.append("' },\n");
+         } else if (11 == l.length()) {
+           // Skip characters outside the range of Java unicode
+         } else {
+           System.err.println("Unknown format of A.1 line: "+l);
+         }
+       } else if ("B.1".equals(t)) {
+         StringTokenizer tok = new StringTokenizer(l, " ;");
+         o1.append("    '\\u"+tok.nextToken()+"',\n");
+       } else if ("B.2".equals(t) || "B.3".equals(t)) {
+         StringTokenizer tok = new StringTokenizer(l, "; ");
+         String c = tok.nextToken();
+         if (c.length() == 4) {
+           o1.append("    '\\u"+c+"',\n");
+           if (tok.hasMoreElements()) {
+             o2.append("    \"");
+             while (tok.hasMoreElements()) {
+               o2.append("\\u"+tok.nextToken());
+             }
+             o2.append("\",\n");
+           } else {
+             o2.append("    null,\n");
+           }
+         }
+       } else if ("C.1.1".equals(t)) {
+         o1.append("    '\\u"+l+"',\n");
+       } else if ("C.1.2".equals(t)) {
+         o1.append("    '\\u"+l+"',\n");
+       } else if ("C.2.1".equals(t) || "C.2.2".equals(t) || "C.3".equals(t) || "C.4".equals(t) || "C.5".equals(t) || "C.6".equals(t) || "C.7".equals(t) || "C.8".equals(t) || "D.1".equals(t) || "D.2".equals(t)) {
+         if (4 == l.length()) {
+           o1.append("    new char[] { '\\u"+l+"' },\n");
+         } else if (9 == l.length()) {
+           o1.append("    new char[] { '\\u");
+           o1.append(l.substring(0, 4));
+           o1.append("', '\\u");
+           o1.append(l.substring(5, 9));
+           o1.append("' },\n");
+         }
+       }
+      }
+      
+      n++;
+    }
+    
+    w.println("}");
+    w.close();
+    
+    System.out.println(" Ok.");
+  }
+}
\ No newline at end of file
diff --git a/java/misc/Makefile.am b/java/misc/Makefile.am
new file mode 100644 (file)
index 0000000..d82ea05
--- /dev/null
@@ -0,0 +1,26 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+JAVAROOT = $(top_builddir)/java/misc
+AM_JAVACFLAGS = -classpath $(top_builddir)/java/libidn-$(VERSION).jar:$(top_srcdir)/java/libidn-$(VERSION).jar
+
+if JAVA
+dist_noinst_JAVA = GenerateRFC3454.java GenerateNFKC.java      \
+                       TestIDNA.java TestNFKC.java
+endif # JAVA
diff --git a/java/misc/Makefile.in b/java/misc/Makefile.in
new file mode 100644 (file)
index 0000000..57d2621
--- /dev/null
@@ -0,0 +1,692 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = java/misc
+DIST_COMMON = $(am__dist_noinst_JAVA_DIST) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__dist_noinst_JAVA_DIST = GenerateRFC3454.java GenerateNFKC.java \
+       TestIDNA.java TestNFKC.java
+JAVAC = javac
+CLASSPATH_ENV = CLASSPATH=$(JAVAROOT):$(srcdir)/$(JAVAROOT):$$CLASSPATH
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+JAVAROOT = $(top_builddir)/java/misc
+AM_JAVACFLAGS = -classpath $(top_builddir)/java/libidn-$(VERSION).jar:$(top_srcdir)/java/libidn-$(VERSION).jar
+@JAVA_TRUE@dist_noinst_JAVA = GenerateRFC3454.java GenerateNFKC.java   \
+@JAVA_TRUE@                    TestIDNA.java TestNFKC.java
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu java/misc/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu java/misc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+classdist_noinst.stamp: $(dist_noinst_JAVA)
+       @list1='$?'; list2=; if test -n "$$list1"; then \
+         for p in $$list1; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+           list2="$$list2 $$d$$p"; \
+         done; \
+         echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \
+         $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \
+       else :; fi
+       echo timestamp > classdist_noinst.stamp
+
+clean-dist_noinstJAVA:
+       -rm -f *.class classdist_noinst.stamp
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile classdist_noinst.stamp
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-dist_noinstJAVA clean-generic clean-libtool \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-dist_noinstJAVA \
+       clean-generic clean-libtool distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/java/misc/TestIDNA.java b/java/misc/TestIDNA.java
new file mode 100644 (file)
index 0000000..6b7c3a8
--- /dev/null
@@ -0,0 +1,146 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+import gnu.inet.encoding.IDNA;
+import gnu.inet.encoding.IDNAException;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.StringTokenizer;
+
+public class TestIDNA
+{
+  final static int STATE_SCAN = 0;
+  final static int STATE_INPUT = 1;
+
+  public static void usage()
+  {
+    System.err.println("Usage: "+TestIDNA.class.toString()+" [-a|-u string] [-t]");
+    System.err.println("       -a string: apply toASCII(string)");
+    System.err.println("       -u string: apply toUnicode(string)");
+    System.err.println("       -t: automatic test using draft-josefsson-idn-test-vectors.html");
+    System.exit(1);
+  }
+
+  public static void main(String[] args)
+    throws Exception
+  {
+      String[] tests = new String[] {
+         "domain\u3002invalid",
+         "domain\uFF0Einvalid",
+         "domain\uFF61invalid",
+      };
+      for ( int i = 0; i < tests.length ; i++ ) {
+         if (!IDNA.toASCII( tests[i] ).equals( "domain.invalid" )) {
+             System.err.println("Dot-test failed");
+             System.exit(1);
+         }
+      }
+
+      if (args.length == 2) {
+      if (args[0].equals("-u")) {
+       try {
+         System.out.println("Input: "+args[1]);
+         System.out.println("Output: "+IDNA.toASCII(args[1]));
+       } catch (IDNAException e) {
+         System.out.println(e);
+       }
+      } else if (args[0].equals("-a")) {
+       System.out.println("Input: "+args[1]);
+       System.out.println("Output: "+IDNA.toUnicode(args[1]));
+      } else {
+       usage();
+      }
+    } else if (args.length == 1 && args[0].equals("-t")) {
+      File f = new File("draft-josefsson-idn-test-vectors.html");
+      if (!f.exists()) {
+       System.err.println("Unable to find draft-josefsson-idn-test-vectors.html.");
+       System.err.println("Please download the latest version of this file from:");
+       System.err.println("http://www.gnu.org/software/libidn/");
+       System.exit(1);
+      }
+
+      BufferedReader r = new BufferedReader(new FileReader(f));
+      int state = STATE_SCAN;
+
+      StringBuffer input = new StringBuffer();
+      String out;
+
+      while (true) {
+       String l = r.readLine();
+       if (null == l) {
+         break;
+       }
+
+       switch (state) {
+       case STATE_SCAN:
+         if (l.startsWith("input (length ")) {
+           state = STATE_INPUT;
+           input = new StringBuffer();
+         }
+         break;
+       case STATE_INPUT:
+         if (l.equals("")) {
+           // Empty line (before "out:")
+         } else if (l.startsWith("out: ")) {
+           out = l.substring(5).trim();
+           
+           try {
+             String ascii = IDNA.toASCII(input.toString());
+             if (ascii.equals(out)) {
+               // Ok
+             } else {
+               System.err.println("Error detected:");
+               System.err.println("  Input: "+input);
+               System.err.println("  toASCII returned: "+ascii);
+               System.err.println("  expected result: "+out);
+               System.exit(1);
+             }
+           } catch (IDNAException e) {
+             System.out.println(" exception thrown ("+e+")");
+           }
+           
+           state = STATE_SCAN;
+         } else {
+           StringTokenizer tok = new StringTokenizer(l.trim(), " ");
+           while (tok.hasMoreTokens()) {
+             String t = tok.nextToken();
+             if (t.startsWith("U+")) {
+               char u = (char) Integer.parseInt(t.substring(2, 6), 16);
+               input.append(u);
+             } else {
+               System.err.println("Unknown token: "+t);
+             }
+           }
+         }
+         break;
+       }
+      }
+      
+      System.out.println("No errors detected!");
+    } else {
+      usage();
+    }
+  }
+}
diff --git a/java/misc/TestNFKC.java b/java/misc/TestNFKC.java
new file mode 100644 (file)
index 0000000..06e1b94
--- /dev/null
@@ -0,0 +1,165 @@
+/**
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+ *
+ * Author: Oliver Hitz
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+import gnu.inet.encoding.NFKC;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+
+public class TestNFKC
+{
+  static String stripComment(String in)
+  {
+    int c = in.indexOf('#');
+    if (c == -1) {
+      return in;
+    } else {
+      return in.substring(0, c);
+    }
+  }
+
+  static String[] split(String in, char sep)
+  {
+    StringBuffer sb = new StringBuffer(in);
+    int c = 0;
+    for (int i = 0; i < sb.length(); i++) {
+      if (sb.charAt(i) == sep) {
+       c++;
+      }
+    }
+
+    String out[] = new String[c+1];
+    c = 0;
+    int l = 0;
+    for (int i = 0; i < sb.length(); i++) {
+      if (sb.charAt(i) == sep) {
+       if (l >= i) {
+         out[c] = "";
+       } else {
+         out[c] = sb.substring(l, i);
+       }
+        l = i+1;
+       c++;
+      }
+    }
+    if (l < sb.length()) {
+      out[c] = sb.substring(l);
+    }
+    return out;
+  }
+
+  static boolean containsHighChar(String in)
+  {
+    String[] s = split(in, ' ');
+    for (int i = 0; i < s.length; i++) {
+      if (s[i].length() != 4) {
+       return true;
+      }
+    }
+    return false;
+  }
+
+  static String evalUnicode(String in)
+  {
+    StringBuffer out = new StringBuffer();
+    String[] s = split(in, ' ');
+    for (int i = 0; i < s.length; i++) {
+      out.append((char) Integer.parseInt(s[i], 16));
+    }
+    return out.toString();
+  }
+
+  static String toUnicode(String in)
+  {
+    StringBuffer out = new StringBuffer();
+    for (int i = 0; i < in.length(); i++) {
+      int c = in.charAt(i);
+      out.append(Integer.toHexString(c));
+      out.append(" ");
+    }
+    return out.toString();
+  }
+
+  public static void main(String[] args)
+    throws Exception
+  {
+    if (args.length > 0) {
+      System.out.println("Input: "+args[0]);     
+      System.out.println("Output: "+NFKC.normalizeNFKC(args[0]));
+    } else {
+      // Check if the normalization test file exists
+      File f = new File("NormalizationTest.txt");
+      if (!f.exists()) {
+       System.err.println("Unable to find NormalizationTest.txt.");
+       System.err.println("Please download the latest version of this file from:");
+       System.err.println("http://www.unicode.org/Public/UNIDATA/");
+       System.exit(1);
+      }
+
+      BufferedReader r = new BufferedReader(new FileReader(f));
+      
+      String line;
+      while (null != (line = r.readLine())) {
+       line = stripComment(line);
+       line = line.trim();
+       if (line.length() == 0) {
+         // Empty line
+       } else {
+         String[] cols = split(line, ';');
+         
+         if (!containsHighChar(cols[0]) &&
+             !containsHighChar(cols[1]) &&
+             !containsHighChar(cols[2]) &&
+             !containsHighChar(cols[3]) &&
+             !containsHighChar(cols[4])) {
+           
+           String c1 = evalUnicode(cols[0]);
+           String c2 = evalUnicode(cols[1]);
+           String c3 = evalUnicode(cols[2]);
+           String c4 = evalUnicode(cols[3]);
+           String c5 = evalUnicode(cols[4]);
+           
+           String nc1 = NFKC.normalizeNFKC(c1);
+           String nc2 = NFKC.normalizeNFKC(c2);
+           String nc3 = NFKC.normalizeNFKC(c3);
+           String nc4 = NFKC.normalizeNFKC(c4);
+           String nc5 = NFKC.normalizeNFKC(c5);
+           
+           if (!nc1.equals(c4) || !nc2.equals(c4) || !nc3.equals(c4) || !nc4.equals(c4) || !nc5.equals(c4)) {
+             System.out.println("Error at `"+line+"'");
+             System.out.println("NFKC(c1) = "+toUnicode(nc1)+", should be "+toUnicode(c4));
+             System.out.println("NFKC(c2) = "+toUnicode(nc2)+", should be "+toUnicode(c4));
+             System.out.println("NFKC(c3) = "+toUnicode(nc3)+", should be "+toUnicode(c4));
+             System.out.println("NFKC(c4) = "+toUnicode(nc4)+", should be "+toUnicode(c4));
+             System.out.println("NFKC(c5) = "+toUnicode(nc5)+", should be "+toUnicode(c4));
+             return;
+           }
+         }
+       }
+      }
+
+      System.out.println("No errors detected!");
+    }
+  }
+}
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644 (file)
index 0000000..c54d750
--- /dev/null
@@ -0,0 +1,90 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+EXTRA_DIST = gen-stringprep-tables.pl gen-unicode-tables.pl gen-tld-tables.pl
+
+AM_CPPFLAGS = -I$(srcdir)/gl -Igl -DLIBIDN_BUILDING
+AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS)
+AM_CFLAGS += $(CFLAG_VISIBILITY)
+DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
+
+lib_LTLIBRARIES = libidn.la
+
+idn_int = idn-int.h
+
+BUILT_SOURCES = $(idn_int) gunibreak.h gunicomp.h gunidecomp.h rfc3454.c tlds.c
+DISTCLEANFILES = $(idn_int)
+include_HEADERS = stringprep.h idna.h punycode.h idn-free.h pr29.h
+if TLD
+include_HEADERS += tld.h
+endif
+nodist_include_HEADERS = $(idn_int)
+
+idn-int.h:
+       if test -n "$(STDINT_H)"; then \
+               sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \
+       else \
+               echo '#include <stdint.h>' > idn-int.h; \
+       fi
+
+libidn_la_SOURCES = libidn.map \
+       gunibreak.h gunicomp.h gunidecomp.h \
+       nfkc.c toutf8.c version.c \
+       stringprep.h stringprep.c rfc3454.c profiles.c \
+       punycode.h punycode.c \
+       idna.h idna.c \
+       pr29.h pr29.c \
+       idn-free.h idn-free.c \
+       strerror-idna.c strerror-pr29.c strerror-punycode.c \
+       strerror-stringprep.c strerror-tld.c
+
+if TLD
+libidn_la_SOURCES += tld.h tld.c tlds.c
+endif
+libidn_la_LIBADD = $(LTLIBICONV) $(LTLIBINTL) gl/libgnu.la
+libidn_la_LDFLAGS = \
+       -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -no-undefined
+
+if HAVE_LD_VERSION_SCRIPT
+libidn_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libidn.map
+else
+libidn_la_LDFLAGS += -export-symbols-regex \
+                       '^(idn|pr29_|punycode_|stringprep|tld_).*'
+endif
+
+if HAVE_LD_OUTPUT_DEF
+libidn_la_LDFLAGS += -Wl,--output-def,libidn-$(DLL_VERSION).def
+defexecdir = $(bindir)
+defexec_DATA = libidn-$(DLL_VERSION).def
+DISTCLEANFILES += $(defexec_DATA)
+endif
+
+nfkc.c: gunibreak.h gunicomp.h gunidecomp.h
+
+SPEC = $(top_srcdir)/doc/specifications
+
+gunibreak.h gunicomp.h gunidecomp.h: gen-unicode-tables.pl $(SPEC)/UnicodeData-3.2.0.txt $(SPEC)/LineBreak-3.2.0.txt $(SPEC)/SpecialCasing-3.2.0.txt $(SPEC)/CaseFolding-3.2.0.txt $(SPEC)/CompositionExclusions-3.2.0.txt
+       $(PERL) $(srcdir)/gen-unicode-tables.pl -decomp 3.2 $(SPEC)
+
+rfc3454.c: gen-stringprep-tables.pl
+       $(PERL) $(srcdir)/gen-stringprep-tables.pl $(SPEC)/rfc3454.txt
+
+tlds.c: gen-tld-tables.pl
+       $(PERL) $(srcdir)/gen-tld-tables.pl $(top_srcdir)/doc/tld/*.tld > tlds.c
diff --git a/lib/Makefile.in b/lib/Makefile.in
new file mode 100644 (file)
index 0000000..d1461f7
--- /dev/null
@@ -0,0 +1,988 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@TLD_TRUE@am__append_1 = tld.h
+@TLD_TRUE@am__append_2 = tld.h tld.c tlds.c
+@HAVE_LD_VERSION_SCRIPT_TRUE@am__append_3 = -Wl,--version-script=$(srcdir)/libidn.map
+@HAVE_LD_VERSION_SCRIPT_FALSE@am__append_4 = -export-symbols-regex \
+@HAVE_LD_VERSION_SCRIPT_FALSE@                 '^(idn|pr29_|punycode_|stringprep|tld_).*'
+
+@HAVE_LD_OUTPUT_DEF_TRUE@am__append_5 = -Wl,--output-def,libidn-$(DLL_VERSION).def
+@HAVE_LD_OUTPUT_DEF_TRUE@am__append_6 = $(defexec_DATA)
+subdir = lib
+DIST_COMMON = $(am__include_HEADERS_DIST) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(defexecdir)" \
+       "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libidn_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       gl/libgnu.la
+am__libidn_la_SOURCES_DIST = libidn.map gunibreak.h gunicomp.h \
+       gunidecomp.h nfkc.c toutf8.c version.c stringprep.h \
+       stringprep.c rfc3454.c profiles.c punycode.h punycode.c idna.h \
+       idna.c pr29.h pr29.c idn-free.h idn-free.c strerror-idna.c \
+       strerror-pr29.c strerror-punycode.c strerror-stringprep.c \
+       strerror-tld.c tld.h tld.c tlds.c
+@TLD_TRUE@am__objects_1 = tld.lo tlds.lo
+am_libidn_la_OBJECTS = nfkc.lo toutf8.lo version.lo stringprep.lo \
+       rfc3454.lo profiles.lo punycode.lo idna.lo pr29.lo idn-free.lo \
+       strerror-idna.lo strerror-pr29.lo strerror-punycode.lo \
+       strerror-stringprep.lo strerror-tld.lo $(am__objects_1)
+libidn_la_OBJECTS = $(am_libidn_la_OBJECTS)
+libidn_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(libidn_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = $(libidn_la_SOURCES)
+DIST_SOURCES = $(am__libidn_la_SOURCES_DIST)
+DATA = $(defexec_DATA)
+am__include_HEADERS_DIST = stringprep.h idna.h punycode.h idn-free.h \
+       pr29.h tld.h
+HEADERS = $(include_HEADERS) $(nodist_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = gen-stringprep-tables.pl gen-unicode-tables.pl gen-tld-tables.pl
+AM_CPPFLAGS = -I$(srcdir)/gl -Igl -DLIBIDN_BUILDING
+AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS) \
+       $(CFLAG_VISIBILITY)
+lib_LTLIBRARIES = libidn.la
+idn_int = idn-int.h
+BUILT_SOURCES = $(idn_int) gunibreak.h gunicomp.h gunidecomp.h rfc3454.c tlds.c
+DISTCLEANFILES = $(idn_int) $(am__append_6)
+include_HEADERS = stringprep.h idna.h punycode.h idn-free.h pr29.h \
+       $(am__append_1)
+nodist_include_HEADERS = $(idn_int)
+libidn_la_SOURCES = libidn.map gunibreak.h gunicomp.h gunidecomp.h \
+       nfkc.c toutf8.c version.c stringprep.h stringprep.c rfc3454.c \
+       profiles.c punycode.h punycode.c idna.h idna.c pr29.h pr29.c \
+       idn-free.h idn-free.c strerror-idna.c strerror-pr29.c \
+       strerror-punycode.c strerror-stringprep.c strerror-tld.c \
+       $(am__append_2)
+libidn_la_LIBADD = $(LTLIBICONV) $(LTLIBINTL) gl/libgnu.la
+libidn_la_LDFLAGS = -version-info \
+       $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -no-undefined \
+       $(am__append_3) $(am__append_4) $(am__append_5)
+@HAVE_LD_OUTPUT_DEF_TRUE@defexecdir = $(bindir)
+@HAVE_LD_OUTPUT_DEF_TRUE@defexec_DATA = libidn-$(DLL_VERSION).def
+SPEC = $(top_srcdir)/doc/specifications
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu lib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+       }
+
+uninstall-libLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+       done
+
+clean-libLTLIBRARIES:
+       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+libidn.la: $(libidn_la_OBJECTS) $(libidn_la_DEPENDENCIES) 
+       $(libidn_la_LINK) -rpath $(libdir) $(libidn_la_OBJECTS) $(libidn_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idn-free.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfkc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr29.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/profiles.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/punycode.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfc3454.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-idna.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-pr29.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-punycode.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-stringprep.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-tld.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringprep.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tld.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tlds.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/toutf8.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-defexecDATA: $(defexec_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(defexecdir)" || $(MKDIR_P) "$(DESTDIR)$(defexecdir)"
+       @list='$(defexec_DATA)'; test -n "$(defexecdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defexecdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(defexecdir)" || exit $$?; \
+       done
+
+uninstall-defexecDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(defexec_DATA)'; test -n "$(defexecdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(defexecdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(defexecdir)" && rm -f $$files
+install-includeHEADERS: $(include_HEADERS)
+       @$(NORMAL_INSTALL)
+       test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
+       @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
+       done
+
+uninstall-includeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(includedir)" && rm -f $$files
+install-nodist_includeHEADERS: $(nodist_include_HEADERS)
+       @$(NORMAL_INSTALL)
+       test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
+       @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
+       done
+
+uninstall-nodist_includeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(includedir)" && rm -f $$files
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+installdirs:
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(defexecdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+       mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-includeHEADERS install-nodist_includeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-defexecDATA install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-defexecDATA uninstall-includeHEADERS \
+       uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libLTLIBRARIES clean-libtool ctags distclean \
+       distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am \
+       install-defexecDATA install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am \
+       install-includeHEADERS install-info install-info-am \
+       install-libLTLIBRARIES install-man \
+       install-nodist_includeHEADERS install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-defexecDATA \
+       uninstall-includeHEADERS uninstall-libLTLIBRARIES \
+       uninstall-nodist_includeHEADERS
+
+
+idn-int.h:
+       if test -n "$(STDINT_H)"; then \
+               sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \
+       else \
+               echo '#include <stdint.h>' > idn-int.h; \
+       fi
+
+nfkc.c: gunibreak.h gunicomp.h gunidecomp.h
+
+gunibreak.h gunicomp.h gunidecomp.h: gen-unicode-tables.pl $(SPEC)/UnicodeData-3.2.0.txt $(SPEC)/LineBreak-3.2.0.txt $(SPEC)/SpecialCasing-3.2.0.txt $(SPEC)/CaseFolding-3.2.0.txt $(SPEC)/CompositionExclusions-3.2.0.txt
+       $(PERL) $(srcdir)/gen-unicode-tables.pl -decomp 3.2 $(SPEC)
+
+rfc3454.c: gen-stringprep-tables.pl
+       $(PERL) $(srcdir)/gen-stringprep-tables.pl $(SPEC)/rfc3454.txt
+
+tlds.c: gen-tld-tables.pl
+       $(PERL) $(srcdir)/gen-tld-tables.pl $(top_srcdir)/doc/tld/*.tld > tlds.c
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/gen-stringprep-tables.pl b/lib/gen-stringprep-tables.pl
new file mode 100755 (executable)
index 0000000..b1670ce
--- /dev/null
@@ -0,0 +1,119 @@
+#! /usr/bin/perl -w
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# I consider the output of this program to be unrestricted.  Use it as
+# you will.
+
+use strict;
+
+my ($tab) = 59;
+my ($intable) = 0;
+my ($tablename);
+my ($varname);
+my ($starheader, $header);
+my ($profile) = "rfc3454";
+my ($filename) = "$profile.c";
+my ($line, $start, $end, @map);
+
+open(FH, ">$filename") or die "cannot open $filename for writing";
+
+print FH "/* This file is automatically generated.  DO NOT EDIT!\n";
+print FH "   Instead, edit gen-stringprep-tables.pl and re-run.  */\n\n";
+
+print FH "#include \"stringprep.h\"\n";
+
+while(<>) {
+    s/^   (.*)/$1/g; # for rfc
+    $line = $_;
+
+    die "already in table" if $intable && m,^----- Start Table (.*) -----,;
+    die "not in table" if !$intable && m,^----- End Table (.*) -----,;
+
+    if ($intable && m,^----- End Table (.*) -----,) {
+       die "table error" unless $1 eq $tablename ||
+           ($1 eq "C.1.2" && $tablename eq "C.1.1"); # Typo in draft
+       $intable = 0;
+       print FH "  { 0 },\n";
+       print FH "};\n\n";
+    }
+
+    if (m,^[A-Z],) {
+       $header = $line;
+    } elsif (!m,^[ -],) {
+       $header .= $line;
+    }
+
+    next unless ($intable || m,^----- Start Table (.*) -----,);
+
+    if ($intable) {
+       $_ = $line;
+       chop $line;
+
+       next if m,^$,;
+       next if m,^Hoffman & Blanchet          Standards Track                    \[Page [0-9]+\]$,;
+       next if m,^\f$,;
+       next if m,RFC 3454        Preparation of Internationalized Strings   December 2002,;
+
+       die "regexp failed on line: $line" unless
+           m,^([0-9A-F]+)(-([0-9A-F]+))?(; ([0-9A-F]+)( ([0-9A-F]+))?( ([0-9A-F]+))?( ([0-9A-F]+))?;)?,;
+
+       die "too many mapping targets on line: $line" if $12;
+
+       $start = $1;
+       $end = $3;
+       $map[0] = $5;
+       $map[1] = $7;
+       $map[2] = $9;
+       $map[3] = $11;
+
+       die "tables tried to map a range" if $end && $map[0];
+
+       if ($map[3]) {
+           printf FH "  { 0x%06s, 0, { 0x%06s,%*s/* %s */\n                   0x%06s, 0x%06s, 0x%06s }},\n",
+           $start, $map[0], $tab-length($line)-13, " ", $line,
+           $map[1], $map[2], $map[3];
+       } elsif ($map[2]) {
+           printf FH "  { 0x%06s, 0, { 0x%06s,%*s/* %s */\n                   0x%06s, 0x%06s }},\n",
+           $start, $map[0], $tab-length($line)-14, " ", $line,
+           $map[1], $map[2];
+       } elsif ($map[1]) {
+           printf FH "  { 0x%06s, 0, { 0x%06s,%*s/* %s */\n                   0x%06s }},\n",
+           $start, $map[0], $tab-length($line)-14, " ", $line,
+           $map[1];
+       } elsif ($map[0]) {
+           printf FH "  { 0x%06s, 0, { 0x%06s }},%*s/* %s */\n",
+           $start, $map[0], $tab-length($line)-17, " ",  $line;
+       } elsif ($end) {
+           printf FH "  { 0x%06s, 0x%06s },%*s/* %s */\n",
+           $start, $end, $tab-length($line)-11, " ",  $line;
+       } else {
+           printf FH "  { 0x%06s           },%*s/* %s */\n",
+           $start, $tab-length($line)-11, " ",  $line;
+       }
+    } else {
+       $intable = 1 if !$intable;
+       $tablename = $1;
+
+       ($varname = $tablename) =~ tr/./_/;
+       $header =~ s/\n/\n * /s;
+
+       print FH "\n/*\n * $header */\n\n";
+       print FH "const Stringprep_table_element stringprep_${profile}_${varname}\[\] = {\n";
+    }
+}
+
+close FH or die "cannot close $filename";
diff --git a/lib/gen-tld-tables.pl b/lib/gen-tld-tables.pl
new file mode 100755 (executable)
index 0000000..73f4af6
--- /dev/null
@@ -0,0 +1,252 @@
+#!/usr/bin/perl
+
+# Author: Thomas Jacob, Internet24.de
+
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson.
+# Copyright (C) 2004  Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# I consider the output of this program to be unrestricted.  Use it as
+# you will.
+
+# See doc/tld/README and draft-hoffman-idn-reg-*.txt inside Libidn for
+# more information on the input file syntax.
+
+# Use this to generate TLD tables:
+# $ ./gen-tld-tables *.tld > tlds.c
+
+use strict;
+use warnings;
+
+die "Usage: $0 <TLD-FILE [TLD-FILE ...]>" if ($#ARGV == -1);
+
+print "/* This file is automatically generated.  DO NOT EDIT!\n";
+print "   Instead, edit gen-tld-tables.pl and re-run.  */\n";
+print "\n";
+print "#include \"tld.h\"\n";
+print "\n";
+
+my @tlds;
+
+foreach my $tldfile (@ARGV)
+{
+    my ($tld, $version);
+    my $data = process_definition ($tldfile, \$tld, \$version);
+
+    push @tlds, $tld;
+
+    optimize($data);
+
+    print_tld_domain($tld, \@$data, $version);
+}
+
+print "/* Main array */\n";
+print "const Tld_table * _tld_tables[] =\n";
+print "{\n";
+foreach (@tlds)
+{
+    print "  &_tld_${_},\n";
+}
+print "  NULL\n";
+print "};\n";
+
+# Print tld domain structure.
+# void print_tld_domain($tldfile, \$tld, \@intervals, $version);
+sub print_tld_domain
+{
+    my $tld = shift;
+    my $intervals = shift;
+    my $version = shift;
+    my $num_intervals = @$intervals;
+
+    print "/* TLD $tld */\n";
+    print "static const Tld_table_element _tld_${tld}_valid[] =\n";
+    print "{\n";
+    if (@$intervals)
+    {
+       my $last = pop @$intervals;
+       foreach (@$intervals)
+       {
+           printf "  { 0x%x,  0x%x },\n", $_->[0], $_->[1];
+       }
+       printf "  { 0x%x,  0x%x }\n", $last->[0], $last->[1];
+    }
+    print "};\n";
+    print "\n";
+
+    print "static const Tld_table _tld_${tld} =\n";
+    print "{\n";
+    print "  \"$tld\",\n";
+    print "  \"$version\",\n";
+    print "  $num_intervals,\n";
+    print "  &_tld_${tld}_valid[0]\n";
+    print "};\n\n";
+}
+
+# process a definition file
+# $filename, \$tld, \$version
+# return @data on success, die otherwise
+sub process_definition
+{
+    my $filename = shift;
+    my $tld = shift;
+    my $version = shift;
+    my $incversion;
+    my $path;
+    my @data;
+
+    local * FILE;
+
+    open(FILE, "<$filename") or die "Cannot open $filename";
+
+    $path = $filename;
+    $path =~ s/\/[^\/]+$//;
+
+    my ($is_int,$have_num,$num,$cnum);
+    my $line = 1;
+    while(<FILE>)
+    {
+       chomp;
+
+       s/#.*$//;
+
+       if (m/^include\s+(\S+)\s*$/i)
+       {
+           my $incfile = $1;
+           my ($junk, $ver);
+           my $incdata = process_definition("$path/$incfile", \$junk, \$ver);
+           $incversion = $incversion . " $incfile ($ver)";
+           push @data, @$incdata;
+           next;
+       }
+
+       if (m/^version\s+"(.*)"\s*$/i)
+       {
+           $$version = $1;
+           next;
+       }
+
+       if (m/^tld\s+(\S+)\s*$/i)
+       {
+           $$tld = $1;
+           next;
+       }
+
+       while ($_ ne "")
+       {
+           s/^\s*//;
+           if ( (s/^(0x)([a-f0-9]+)//i) ||
+                (s/^(U\+)([a-f0-9]+)//i) ||
+                (s/^(0)(\d+)//) ||
+                (s/^(\d+)//) )
+           {
+               $cnum = $1;
+               if (((lc($1) eq "0x") || (lc($1) eq "u+")) && $2)
+               {
+                   $cnum = hex($2);
+               }
+               elsif (($1 eq "0") && $2)
+               {
+                   $cnum = oct($2);
+               }
+
+               if ($have_num)
+               {
+                   if ($is_int)
+                   {
+                       push @data, [$num, $cnum];
+                       $have_num = 0;
+                       $is_int = 0;
+                   }
+                   else
+                   {
+                       push @data, [$num,$num];
+                       $num = $cnum;
+                   }
+               }
+               else
+               {
+                   $have_num = 1;
+                   $num = $cnum;
+               }
+           }
+           elsif (s/^\-//)
+           {
+               $is_int = 1;
+           }
+           elsif (s/^\|//)
+           {
+               $is_int = 0;
+           }
+           elsif (s/^\://)
+           {
+               $is_int = 0;
+           }
+           else
+           {
+               die "Parser error in file $filename at line $line near $_, "
+                   if $_ ne "";
+           }
+       }
+       $line++;
+    }
+    close(FILE);
+
+    if ($have_num)
+    {
+       if ($is_int)
+       {
+           push @data, [$num, $cnum];
+       }
+       else
+       {
+           push @data, [$num, $num];
+       }
+    }
+
+    $$version = $$version . $incversion if $incversion;
+    return \@data;
+}
+
+# Build minimal set of intervals.
+# void optimize(\@intervals)
+sub optimize
+{
+    my $intervals = shift;
+
+    return undef unless (@$intervals);
+
+    my @intervals = sort {$a->[0] <=> $b->[0]} @$intervals;
+    @$intervals = ();
+
+    my $cur_int = shift @intervals;
+
+    foreach (@intervals)
+    {
+       if ($_->[0]>($cur_int->[1]+1))
+       {
+           push @$intervals, $cur_int;
+           $cur_int = $_;
+       }
+       else
+       {
+           if ($_->[1] > $cur_int->[1])
+           {
+               $cur_int->[1] = $_->[1];
+           }
+       }
+    }
+    push @$intervals, $cur_int;
+}
diff --git a/lib/gen-unicode-tables.pl b/lib/gen-unicode-tables.pl
new file mode 100755 (executable)
index 0000000..aa87cc0
--- /dev/null
@@ -0,0 +1,1337 @@
+#! /usr/bin/perl -w
+
+#    Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+#    Copyright (C) 1998, 1999 Tom Tromey
+#    Copyright (C) 2001 Red Hat Software
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# I consider the output of this program to be unrestricted.  Use it as
+# you will.
+
+# Contributer(s):
+#   Andrew Taylor <andrew.taylor@montage.ca>
+
+# gen-unicode-tables.pl - Generate tables for libunicode from Unicode data.
+# See http://www.unicode.org/Public/UNIDATA/UnicodeCharacterDatabase.html
+
+# FIXME:
+# * For decomp table it might make sense to use a shift count other
+#   than 8.  We could easily compute the perfect shift count.
+
+# we use some perl unicode features
+require 5.006;
+
+use vars qw($CODE $NAME $CATEGORY $COMBINING_CLASSES $BIDI_CATEGORY $DECOMPOSITION $DECIMAL_VALUE $DIGIT_VALUE $NUMERIC_VALUE $MIRRORED $OLD_NAME $COMMENT $UPPER $LOWER $TITLE $BREAK_CODE $BREAK_CATEGORY $BREAK_NAME $CASE_CODE $CASE_LOWER $CASE_TITLE $CASE_UPPER $CASE_CONDITION);
+
+
+# Names of fields in Unicode data table.
+$CODE = 0;
+$NAME = 1;
+$CATEGORY = 2;
+$COMBINING_CLASSES = 3;
+$BIDI_CATEGORY = 4;
+$DECOMPOSITION = 5;
+$DECIMAL_VALUE = 6;
+$DIGIT_VALUE = 7;
+$NUMERIC_VALUE = 8;
+$MIRRORED = 9;
+$OLD_NAME = 10;
+$COMMENT = 11;
+$UPPER = 12;
+$LOWER = 13;
+$TITLE = 14;
+
+# Names of fields in the line break table
+$BREAK_CODE = 0;
+$BREAK_PROPERTY = 1;
+
+# Names of fields in the SpecialCasing table
+$CASE_CODE = 0;
+$CASE_LOWER = 1;
+$CASE_TITLE = 2;
+$CASE_UPPER = 3;
+$CASE_CONDITION = 4;
+
+# Names of fields in the CaseFolding table
+$FOLDING_CODE = 0;
+$FOLDING_STATUS = 1;
+$FOLDING_MAPPING = 2;
+
+# Map general category code onto symbolic name.
+%mappings =
+    (
+     # Normative.
+     'Lu' => "G_UNICODE_UPPERCASE_LETTER",
+     'Ll' => "G_UNICODE_LOWERCASE_LETTER",
+     'Lt' => "G_UNICODE_TITLECASE_LETTER",
+     'Mn' => "G_UNICODE_NON_SPACING_MARK",
+     'Mc' => "G_UNICODE_COMBINING_MARK",
+     'Me' => "G_UNICODE_ENCLOSING_MARK",
+     'Nd' => "G_UNICODE_DECIMAL_NUMBER",
+     'Nl' => "G_UNICODE_LETTER_NUMBER",
+     'No' => "G_UNICODE_OTHER_NUMBER",
+     'Zs' => "G_UNICODE_SPACE_SEPARATOR",
+     'Zl' => "G_UNICODE_LINE_SEPARATOR",
+     'Zp' => "G_UNICODE_PARAGRAPH_SEPARATOR",
+     'Cc' => "G_UNICODE_CONTROL",
+     'Cf' => "G_UNICODE_FORMAT",
+     'Cs' => "G_UNICODE_SURROGATE",
+     'Co' => "G_UNICODE_PRIVATE_USE",
+     'Cn' => "G_UNICODE_UNASSIGNED",
+
+     # Informative.
+     'Lm' => "G_UNICODE_MODIFIER_LETTER",
+     'Lo' => "G_UNICODE_OTHER_LETTER",
+     'Pc' => "G_UNICODE_CONNECT_PUNCTUATION",
+     'Pd' => "G_UNICODE_DASH_PUNCTUATION",
+     'Ps' => "G_UNICODE_OPEN_PUNCTUATION",
+     'Pe' => "G_UNICODE_CLOSE_PUNCTUATION",
+     'Pi' => "G_UNICODE_INITIAL_PUNCTUATION",
+     'Pf' => "G_UNICODE_FINAL_PUNCTUATION",
+     'Po' => "G_UNICODE_OTHER_PUNCTUATION",
+     'Sm' => "G_UNICODE_MATH_SYMBOL",
+     'Sc' => "G_UNICODE_CURRENCY_SYMBOL",
+     'Sk' => "G_UNICODE_MODIFIER_SYMBOL",
+     'So' => "G_UNICODE_OTHER_SYMBOL"
+     );
+
+%break_mappings =
+    (
+     'BK' => "G_UNICODE_BREAK_MANDATORY",
+     'CR' => "G_UNICODE_BREAK_CARRIAGE_RETURN",
+     'LF' => "G_UNICODE_BREAK_LINE_FEED",
+     'CM' => "G_UNICODE_BREAK_COMBINING_MARK",
+     'SG' => "G_UNICODE_BREAK_SURROGATE",
+     'ZW' => "G_UNICODE_BREAK_ZERO_WIDTH_SPACE",
+     'IN' => "G_UNICODE_BREAK_INSEPARABLE",
+     'GL' => "G_UNICODE_BREAK_NON_BREAKING_GLUE",
+     'CB' => "G_UNICODE_BREAK_CONTINGENT",
+     'SP' => "G_UNICODE_BREAK_SPACE",
+     'BA' => "G_UNICODE_BREAK_AFTER",
+     'BB' => "G_UNICODE_BREAK_BEFORE",
+     'B2' => "G_UNICODE_BREAK_BEFORE_AND_AFTER",
+     'HY' => "G_UNICODE_BREAK_HYPHEN",
+     'NS' => "G_UNICODE_BREAK_NON_STARTER",
+     'OP' => "G_UNICODE_BREAK_OPEN_PUNCTUATION",
+     'CL' => "G_UNICODE_BREAK_CLOSE_PUNCTUATION",
+     'QU' => "G_UNICODE_BREAK_QUOTATION",
+     'EX' => "G_UNICODE_BREAK_EXCLAMATION",
+     'ID' => "G_UNICODE_BREAK_IDEOGRAPHIC",
+     'NU' => "G_UNICODE_BREAK_NUMERIC",
+     'IS' => "G_UNICODE_BREAK_INFIX_SEPARATOR",
+     'SY' => "G_UNICODE_BREAK_SYMBOL",
+     'AL' => "G_UNICODE_BREAK_ALPHABETIC",
+     'PR' => "G_UNICODE_BREAK_PREFIX",
+     'PO' => "G_UNICODE_BREAK_POSTFIX",
+     'SA' => "G_UNICODE_BREAK_COMPLEX_CONTEXT",
+     'AI' => "G_UNICODE_BREAK_AMBIGUOUS",
+     'NL' => "G_UNICODE_BREAK_NEXT_LINE",
+     'WJ' => "G_UNICODE_BREAK_WORD_JOINER",
+     'XX' => "G_UNICODE_BREAK_UNKNOWN"
+     );
+
+# Title case mappings.
+%title_to_lower = ();
+%title_to_upper = ();
+
+# Maximum length of special-case strings
+
+my @special_cases;
+my @special_case_offsets;
+my $special_case_offset = 0;
+
+$do_decomp = 0;
+$do_props = 1;
+if (@ARGV && $ARGV[0] eq '-decomp')
+{
+    $do_decomp = 1;
+    $do_props = 0;
+    shift @ARGV;
+}
+elsif (@ARGV && $ARGV[0] eq '-both')
+{
+    $do_decomp = 1;
+    shift @ARGV;
+}
+
+if (@ARGV != 2) {
+    $0 =~ s@.*/@@;
+    die "\nUsage: $0 [-decomp | -both] UNICODE-VERSION DIRECTORY\n\n       DIRECTORY should contain the following Unicode data files:\n       UnicodeData.txt, LineBreak.txt, SpecialCasing.txt, CaseFolding.txt,\n       CompositionExclusions.txt, BidiMirroring.txt\n\n";
+}
+
+my ($unicodedatatxt, $linebreaktxt, $specialcasingtxt, $casefoldingtxt, $compositionexclusionstxt, $bidimirroringtxt);
+
+my $d = $ARGV[1];
+opendir (my $dir, $d) or die "Cannot open Unicode data dir $d: $!\n";
+for my $f (readdir ($dir))
+{
+    $unicodedatatxt = "$d/$f" if ($f =~ /UnicodeData.*\.txt/);
+    $linebreaktxt = "$d/$f" if ($f =~ /LineBreak.*\.txt/);
+    $specialcasingtxt = "$d/$f" if ($f =~ /SpecialCasing.*\.txt/);
+    $casefoldingtxt = "$d/$f" if ($f =~ /CaseFolding.*\.txt/);
+    $compositionexclusionstxt = "$d/$f" if ($f =~ /CompositionExclusions.*\.txt/);
+    $bidimirroringtxt = "$d/$f" if ($f =~ /BidiMirroring.*\.txt/);
+}
+
+defined $unicodedatatxt or die "Did not find UnicodeData file";
+defined $linebreaktxt or die "Did not find LineBreak file";
+defined $specialcasingtxt or die "Did not find SpecialCasing file";
+defined $casefoldingtxt or die "Did not find CaseFolding file";
+defined $compositionexclusionstxt or die "Did not find CompositionExclusions file";
+defined $bidimirroringtxt or die "Did not find BidiMirroring file";
+
+print "Creating decomp table\n" if ($do_decomp);
+print "Creating property table\n" if ($do_props);
+
+print "Composition exlusions from $compositionexclusionstxt\n";
+
+open (INPUT, "< $compositionexclusionstxt") || exit 1;
+
+while (<INPUT>) {
+
+    chop;
+
+    next if /^#/;
+    next if /^\s*$/;
+
+    s/\s*#.*//;
+
+    s/^\s*//;
+    s/\s*$//;
+
+    $composition_exclusions{hex($_)} = 1;
+}
+
+close INPUT;
+
+print "Unicode data from $unicodedatatxt\n";
+
+open (INPUT, "< $unicodedatatxt") || exit 1;
+
+# we save memory by skipping the huge empty area before U+E0000
+my $pages_before_e0000;
+
+$last_code = -1;
+while (<INPUT>)
+{
+    chop;
+    @fields = split (';', $_, 30);
+    if ($#fields != 14)
+    {
+       printf STDERR ("Entry for $fields[$CODE] has wrong number of fields (%d)\n", $#fields);
+    }
+
+    $code = hex ($fields[$CODE]);
+
+    if ($code >= 0xE0000 and $last_code < 0xE0000)
+    {
+        $pages_before_e0000 = ($last_code >> 8) + 1;
+    }
+
+    if ($code > $last_code + 1)
+    {
+       # Found a gap.
+       if ($fields[$NAME] =~ /Last>/)
+       {
+           # Fill the gap with the last character read,
+            # since this was a range specified in the char database
+           @gfields = @fields;
+       }
+       else
+       {
+           # The gap represents undefined characters.  Only the type
+           # matters.
+           @gfields = ('', '', 'Cn', '0', '', '', '', '', '', '', '',
+                       '', '', '', '');
+       }
+       for (++$last_code; $last_code < $code; ++$last_code)
+       {
+           $gfields{$CODE} = sprintf ("%04x", $last_code);
+           &process_one ($last_code, @gfields);
+       }
+    }
+    &process_one ($code, @fields);
+    $last_code = $code;
+}
+
+close INPUT;
+
+@gfields = ('', '', 'Cn', '0', '', '', '', '', '', '', '',
+           '', '', '', '');
+for (++$last_code; $last_code <= 0x10FFFF; ++$last_code)
+{
+    $gfields{$CODE} = sprintf ("%04x", $last_code);
+    &process_one ($last_code, @gfields);
+}
+--$last_code;                  # Want last to be 0x10FFFF.
+
+print "Creating line break table\n";
+
+print "Line break data from $linebreaktxt\n";
+
+open (INPUT, "< $linebreaktxt") || exit 1;
+
+$last_code = -1;
+while (<INPUT>)
+{
+    my ($start_code, $end_code);
+    
+    chop;
+
+    next if /^#/;
+
+    s/\s*#.*//;
+    
+    @fields = split (';', $_, 30);
+    if ($#fields != 1)
+    {
+       printf STDERR ("Entry for $fields[$CODE] has wrong number of fields (%d)\n", $#fields);
+       next;
+    }
+
+    if ($fields[$CODE] =~ /([A-F0-9]{4,6})\.\.([A-F0-9]{4,6})/) 
+    {
+       $start_code = hex ($1);
+       $end_code = hex ($2);
+    } else {
+       $start_code = $end_code = hex ($fields[$CODE]);
+       
+    }
+
+    if ($start_code > $last_code + 1)
+    {
+       # The gap represents undefined characters. If assigned,
+       # they are AL, if not assigned, XX
+       for (++$last_code; $last_code < $start_code; ++$last_code)
+       {
+           if ($type[$last_code] eq 'Cn')
+           {
+               $break_props[$last_code] = 'XX';
+           }
+           else
+           {
+               $break_props[$last_code] = 'AL';
+           }
+       }
+    }
+
+    for ($last_code = $start_code; $last_code <= $end_code; $last_code++)
+    {
+       $break_props[$last_code] = $fields[$BREAK_PROPERTY];
+    }
+    
+    $last_code = $end_code;
+}
+
+close INPUT;
+
+for (++$last_code; $last_code <= 0x10FFFF; ++$last_code)
+{
+  if ($type[$last_code] eq 'Cn')
+    {
+      $break_props[$last_code] = 'XX';
+    }
+  else
+    {
+      $break_props[$last_code] = 'AL';
+    }
+}
+--$last_code;                  # Want last to be 0x10FFFF.
+
+print STDERR "Last code is not 0x10FFFF" if ($last_code != 0x10FFFF);
+
+print "Reading special-casing table for case conversion\n";
+
+open (INPUT, "< $specialcasingtxt") || exit 1;
+
+while (<INPUT>)
+{
+    my $code;
+    
+    chop;
+
+    next if /^#/;
+    next if /^\s*$/;
+
+    s/\s*#.*//;
+
+    @fields = split ('\s*;\s*', $_, 30);
+
+    $raw_code = $fields[$CASE_CODE];
+    $code = hex ($raw_code);
+
+    if ($#fields != 4 && $#fields != 5)
+    {
+       printf STDERR ("Entry for $raw_code has wrong number of fields (%d)\n", $#fields);
+       next;
+    }
+
+    if (!defined $type[$code])
+    {
+       printf STDERR "Special case for code point: $code, which has no defined type\n";
+       next;
+    }
+
+    if (defined $fields[5]) {
+       # Ignore conditional special cases - we'll handle them in code
+       next;
+    }
+    
+    if ($type[$code] eq 'Lu') 
+    {
+       (hex $fields[$CASE_UPPER] == $code) || die "$raw_code is Lu and UCD_Upper($raw_code) != $raw_code";
+
+       &add_special_case ($code, $value[$code], $fields[$CASE_LOWER], $fields[$CASE_TITLE]);
+       
+    } elsif ($type[$code] eq 'Lt') 
+    {
+       (hex $fields[$CASE_TITLE] == $code) || die "$raw_code is Lt and UCD_Title($raw_code) != $raw_code";
+       
+       &add_special_case ($code, undef, $fields[$CASE_LOWER], $fields[$CASE_UPPER]);
+    } elsif ($type[$code] eq 'Ll') 
+    {
+       (hex $fields[$CASE_LOWER] == $code) || die "$raw_code is Ll and UCD_Lower($raw_code) != $raw_code";
+       
+       &add_special_case ($code, $value[$code], $fields[$CASE_UPPER], $fields[$CASE_TITLE]);
+    } else {
+       printf STDERR "Special case for non-alphabetic code point: $raw_code\n";
+       next;
+    }
+}
+
+close INPUT;
+
+open (INPUT, "< $casefoldingtxt") || exit 1;
+
+my $casefoldlen = 0;
+my @casefold;
+while (<INPUT>)
+{
+    my $code;
+    
+    chop;
+
+    next if /^#/;
+    next if /^\s*$/;
+
+    s/\s*#.*//;
+
+    @fields = split ('\s*;\s*', $_, 30);
+
+    $raw_code = $fields[$FOLDING_CODE];
+    $code = hex ($raw_code);
+
+    if ($#fields != 3)
+    {
+       printf STDERR ("Entry for $raw_code has wrong number of fields (%d)\n", $#fields);
+       next;
+    }
+
+    # we don't use Simple or Turkic rules here
+    next if ($fields[$FOLDING_STATUS] =~ /^[ST]$/);
+
+    @values = map { hex ($_) } split /\s+/, $fields[$FOLDING_MAPPING];
+
+    # Check simple case
+
+    if (@values == 1 && 
+       !(defined $value[$code] && $value[$code] >= 0x1000000) &&
+       defined $type[$code]) {
+
+       my $lower;
+       if ($type[$code] eq 'Ll') 
+       {
+           $lower = $code;
+       } elsif ($type[$code] eq 'Lt') 
+       {
+           $lower = $title_to_lower{$code};
+       } elsif ($type[$code] eq 'Lu') 
+       {
+           $lower = $value[$code];
+       } else {
+           $lower = $code;
+       }
+       
+       if ($lower == $values[0]) {
+           next;
+       }
+    }
+
+    my $string = pack ("U*", @values);
+
+    if (1 + &length_in_bytes ($string) > $casefoldlen) {
+       $casefoldlen = 1 + &length_in_bytes ($string);
+    }
+
+    push @casefold, [ $code, &escape ($string) ];
+}
+
+close INPUT;
+
+open (INPUT, "< $bidimirroringtxt") || exit 1;
+
+my @bidimirror;
+while (<INPUT>)
+{
+    chomp;
+
+    next if /^#/;
+    next if /^\s*$/;
+
+    s/\s*#.*//;
+
+    @fields = split ('\s*;\s*', $_, 30);
+
+    push @bidimirror, [hex ($fields[0]), hex ($fields[1])];
+}
+if ($do_props) {
+    &print_tables ($last_code)
+}
+if ($do_decomp) {
+    &print_decomp ($last_code);
+    &output_composition_table;
+}
+
+&print_line_break ($last_code);
+
+exit 0;
+
+
+# perl "length" returns the length in characters
+sub length_in_bytes
+{
+    my ($string) = @_;
+
+    use bytes;
+    return length $string;
+}
+
+# Process a single character.
+sub process_one
+{
+    my ($code, @fields) = @_;
+
+    $type[$code] = $fields[$CATEGORY];
+    if ($type[$code] eq 'Nd')
+    {
+       $value[$code] = int ($fields[$DECIMAL_VALUE]);
+    }
+    elsif ($type[$code] eq 'Ll')
+    {
+       $value[$code] = hex ($fields[$UPPER]);
+    }
+    elsif ($type[$code] eq 'Lu')
+    {
+       $value[$code] = hex ($fields[$LOWER]);
+    }
+
+    if ($type[$code] eq 'Lt')
+    {
+       $title_to_lower{$code} = hex ($fields[$LOWER]);
+       $title_to_upper{$code} = hex ($fields[$UPPER]);
+    }
+
+    $cclass[$code] = $fields[$COMBINING_CLASSES];
+
+    # Handle decompositions.
+    if ($fields[$DECOMPOSITION] ne '')
+    {
+       if ($fields[$DECOMPOSITION] =~ s/\<.*\>\s*//) {
+           $decompose_compat[$code] = 1;
+       } else {
+           $decompose_compat[$code] = 0;
+
+          if (!exists $composition_exclusions{$code}) {
+              $compositions{$code} = $fields[$DECOMPOSITION];
+          }
+        }
+       $decompositions[$code] = $fields[$DECOMPOSITION];
+    }
+}
+
+sub print_tables
+{
+    my ($last) = @_;
+    my ($outfile) = "gunichartables.h";
+
+    local ($bytes_out) = 0;
+
+    print "Writing $outfile...\n";
+
+    open (OUT, "> $outfile");
+
+    print OUT "/* This file is automatically generated.  DO NOT EDIT!\n";
+    print OUT "   Instead, edit gen-unicode-tables.pl and re-run.  */\n\n";
+
+    print OUT "#ifndef CHARTABLES_H\n";
+    print OUT "#define CHARTABLES_H\n\n";
+
+    print OUT "#define G_UNICODE_DATA_VERSION \"$ARGV[0]\"\n\n";
+
+    printf OUT "#define G_UNICODE_LAST_CHAR 0x%04x\n\n", $last;
+
+    printf OUT "#define G_UNICODE_MAX_TABLE_INDEX 10000\n\n";
+
+    my $last_part1 = ($pages_before_e0000 * 256) - 1;
+    printf OUT "#define G_UNICODE_LAST_CHAR_PART1 0x%04X\n\n", $last_part1;
+    printf OUT "#define G_UNICODE_LAST_PAGE_PART1 %d\n\n", $pages_before_e0000 - 1;
+
+    $table_index = 0;
+    printf OUT "static const char type_data[][256] = {\n";
+    for ($count = 0; $count <= $last; $count += 256)
+    {
+       $row[$count / 256] = &print_row ($count, 1, \&fetch_type);
+    }
+    printf OUT "\n};\n\n";
+
+    printf OUT "/* U+0000 through U+%04X */\n", $last_part1;
+    print OUT "static const gint16 type_table_part1[$pages_before_e0000] = {\n";
+    for ($count = 0; $count <= $last_part1; $count += 256)
+    {
+       print OUT ",\n" if $count > 0;
+       print OUT "  ", $row[$count / 256];
+       $bytes_out += 2;
+    }
+    print OUT "\n};\n\n";
+
+    printf OUT "/* U+E0000 through U+%04X */\n", $last;
+    print OUT "static const gint16 type_table_part2[768] = {\n";
+    for ($count = 0xE0000; $count <= $last; $count += 256)
+    {
+       print OUT ",\n" if $count > 0xE0000;
+       print OUT "  ", $row[$count / 256];
+       $bytes_out += 2;
+    }
+    print OUT "\n};\n\n";
+
+
+    #
+    # Now print attribute table.
+    #
+
+    $table_index = 0;
+    printf OUT "static const gunichar attr_data[][256] = {\n";
+    for ($count = 0; $count <= $last; $count += 256)
+    {
+       $row[$count / 256] = &print_row ($count, 4, \&fetch_attr);
+    }
+    printf OUT "\n};\n\n";
+
+    printf OUT "/* U+0000 through U+%04X */\n", $last_part1;
+    print OUT "static const gint16 attr_table_part1[$pages_before_e0000] = {\n";
+    for ($count = 0; $count <= $last_part1; $count += 256)
+    {
+       print OUT ",\n" if $count > 0;
+       print OUT "  ", $row[$count / 256];
+       $bytes_out += 2;
+    }
+    print OUT "\n};\n\n";
+
+    printf OUT "/* U+E0000 through U+%04X */\n", $last;
+    print OUT "static const gint16 attr_table_part2[768] = {\n";
+    for ($count = 0xE0000; $count <= $last; $count += 256)
+    {
+       print OUT ",\n" if $count > 0xE0000;
+       print OUT "  ", $row[$count / 256];
+       $bytes_out += 2;
+    }
+    print OUT "\n};\n\n";
+
+    #
+    # print title case table
+    #
+
+    print OUT "static const gunichar title_table[][3] = {\n";
+    my ($item);
+    my ($first) = 1;
+    foreach $item (sort keys %title_to_lower)
+    {
+       print OUT ",\n"
+           unless $first;
+       $first = 0;
+       printf OUT "  { 0x%04x, 0x%04x, 0x%04x }", $item, $title_to_upper{$item}, $title_to_lower{$item};
+       $bytes_out += 12;
+    }
+    print OUT "\n};\n\n";
+
+    #
+    # And special case conversion table -- conversions that change length
+    #
+    &output_special_case_table (\*OUT);
+    &output_casefold_table (\*OUT);
+
+    print OUT "static const struct {\n";
+    print OUT "    gunichar ch;\n";
+    print OUT "    gunichar mirrored_ch;\n";
+    print OUT "} bidi_mirroring_table[] =\n";
+    print OUT "{\n";
+    $first = 1;
+    foreach $item (@bidimirror)
+    {
+        print OUT ",\n" unless $first;
+        $first = 0;
+        printf OUT "  { 0x%04x, 0x%04x }", $item->[0], $item->[1];
+        $bytes_out += 8;
+    }
+    print OUT "\n};\n\n";
+
+    print OUT "#endif /* CHARTABLES_H */\n";
+
+    close (OUT);
+
+    printf STDERR "Generated %d bytes in tables\n", $bytes_out;
+}
+
+# A fetch function for the type table.
+sub fetch_type
+{
+    my ($index) = @_;
+    return $mappings{$type[$index]};
+}
+
+# A fetch function for the attribute table.
+sub fetch_attr
+{
+    my ($index) = @_;
+    if (defined $value[$index])
+      {
+        return sprintf ("0x%04x", $value[$index]);
+      }
+    else
+      {
+        return "0x0000";
+      }
+}
+
+sub print_row
+{
+    my ($start, $typsize, $fetcher) = @_;
+
+    my ($i);
+    my (@values);
+    my ($flag) = 1;
+    my ($off);
+
+    for ($off = 0; $off < 256; ++$off)
+    {
+       $values[$off] = $fetcher->($off + $start);
+       if ($values[$off] ne $values[0])
+       {
+           $flag = 0;
+       }
+    }
+    if ($flag)
+    {
+       return $values[0] . " + G_UNICODE_MAX_TABLE_INDEX";
+    }
+
+    printf OUT ",\n" if ($table_index != 0);
+    printf OUT "  { /* page %d, index %d */\n    ", $start / 256, $table_index;
+    my ($column) = 4;
+    for ($i = $start; $i < $start + 256; ++$i)
+    {
+       print OUT ", "
+           if $i > $start;
+       my ($text) = $values[$i - $start];
+       if (length ($text) + $column + 2 > 78)
+       {
+           print OUT "\n    ";
+           $column = 4;
+       }
+       print OUT $text;
+       $column += length ($text) + 2;
+    }
+    print OUT "\n  }";
+
+    $bytes_out += 256 * $typsize;
+
+    return sprintf "%d /* page %d */", $table_index++, $start / 256;
+}
+
+sub escape
+{
+    my ($string) = @_;
+
+    my $escaped = unpack("H*", $string);
+    $escaped =~ s/(.{2})/\\x$1/g;
+
+    return $escaped;
+}
+
+# Returns the offset of $decomp in the offset string. Updates the
+# referenced variables as appropriate.
+sub handle_decomp ($$$$)
+{
+    my ($decomp, $decomp_offsets_ref, $decomp_string_ref, $decomp_string_offset_ref) = @_;
+    my $offset = "G_UNICODE_NOT_PRESENT_OFFSET";
+
+    if (defined $decomp)
+    {
+        if (defined $decomp_offsets_ref->{$decomp})
+        {
+            $offset = $decomp_offsets_ref->{$decomp};
+        }
+        else
+        {
+            $offset = ${$decomp_string_offset_ref};
+            $decomp_offsets_ref->{$decomp} = $offset;
+            ${$decomp_string_ref} .= "\n  \"" . &escape ($decomp) . "\\0\" /* offset ${$decomp_string_offset_ref} */";
+            ${$decomp_string_offset_ref} += &length_in_bytes ($decomp) + 1;
+        }
+    }
+
+    return $offset;
+}
+
+# Generate the character decomposition header.
+sub print_decomp
+{
+    my ($last) = @_;
+    my ($outfile) = "gunidecomp.h";
+
+    local ($bytes_out) = 0;
+
+    print "Writing $outfile...\n";
+
+    open (OUT, "> $outfile") || exit 1;
+
+    print OUT "/* This file is automatically generated.  DO NOT EDIT!\n";
+    print OUT "   Instead, edit gen-unicode-tables.pl and re-run.  */\n\n";
+
+    print OUT "#ifndef DECOMP_H\n";
+    print OUT "#define DECOMP_H\n\n";
+
+    printf OUT "#define G_UNICODE_LAST_CHAR 0x%04x\n\n", $last;
+
+    printf OUT "#define G_UNICODE_MAX_TABLE_INDEX (0x110000 / 256)\n\n";
+
+    my $last_part1 = ($pages_before_e0000 * 256) - 1;
+    printf OUT "#define G_UNICODE_LAST_CHAR_PART1 0x%04X\n\n", $last_part1;
+    printf OUT "#define G_UNICODE_LAST_PAGE_PART1 %d\n\n", $pages_before_e0000 - 1;
+
+    $NOT_PRESENT_OFFSET = 65535;
+    print OUT "#define G_UNICODE_NOT_PRESENT_OFFSET $NOT_PRESENT_OFFSET\n\n";
+
+    my ($count, @row);
+    $table_index = 0;
+    printf OUT "static const guchar cclass_data[][256] = {\n";
+    for ($count = 0; $count <= $last; $count += 256)
+    {
+       $row[$count / 256] = &print_row ($count, 1, \&fetch_cclass);
+    }
+    printf OUT "\n};\n\n";
+
+    print OUT "static const gint16 combining_class_table_part1[$pages_before_e0000] = {\n";
+    for ($count = 0; $count <= $last_part1; $count += 256)
+    {
+       print OUT ",\n" if $count > 0;
+       print OUT "  ", $row[$count / 256];
+       $bytes_out += 2;
+    }
+    print OUT "\n};\n\n";
+
+    print OUT "static const gint16 combining_class_table_part2[768] = {\n";
+    for ($count = 0xE0000; $count <= $last; $count += 256)
+    {
+       print OUT ",\n" if $count > 0xE0000;
+       print OUT "  ", $row[$count / 256];
+       $bytes_out += 2;
+    }
+    print OUT "\n};\n\n";
+
+    print OUT "typedef struct\n{\n";
+    print OUT "  gunichar ch;\n";
+    print OUT "  guint16 canon_offset;\n";
+    print OUT "  guint16 compat_offset;\n";
+    print OUT "} decomposition;\n\n";
+
+    print OUT "static const decomposition decomp_table[] =\n{\n";
+    my ($iter);
+    my ($first) = 1;
+    my ($decomp_string) = "";
+    my ($decomp_string_offset) = 0;
+    for ($count = 0; $count <= $last; ++$count)
+    {
+       if (defined $decompositions[$count])
+       {
+           print OUT ",\n"
+               if ! $first;
+           $first = 0;
+
+           my $canon_decomp;
+           my $compat_decomp;
+
+           if (!$decompose_compat[$count]) {
+               $canon_decomp = make_decomp ($count, 0);
+           }
+           $compat_decomp = make_decomp ($count, 1);
+
+           if (defined $canon_decomp && $compat_decomp eq $canon_decomp) {
+               undef $compat_decomp; 
+           }
+
+           my $canon_offset = handle_decomp ($canon_decomp, \%decomp_offsets, \$decomp_string, \$decomp_string_offset);
+           my $compat_offset = handle_decomp ($compat_decomp, \%decomp_offsets, \$decomp_string, \$decomp_string_offset);
+
+            die if $decomp_string_offset > $NOT_PRESENT_OFFSET;
+
+            printf OUT qq(  { 0x%04x, $canon_offset, $compat_offset }), $count;
+           $bytes_out += 8;
+       }
+    }
+    print OUT "\n};\n\n";
+    $bytes_out += $decomp_string_offset + 1;
+
+    printf OUT "static const gchar decomp_expansion_string[] = %s;\n\n", $decomp_string;
+
+    print OUT "#endif /* DECOMP_H */\n";
+
+    printf STDERR "Generated %d bytes in decomp tables\n", $bytes_out;
+}
+
+sub print_line_break
+{
+    my ($last) = @_;
+    my ($outfile) = "gunibreak.h";
+
+    local ($bytes_out) = 0;
+
+    print "Writing $outfile...\n";
+
+    open (OUT, "> $outfile");
+
+    print OUT "/* This file is automatically generated.  DO NOT EDIT!\n";
+    print OUT "   Instead, edit gen-unicode-tables.pl and re-run.  */\n\n";
+
+    print OUT "#ifndef BREAKTABLES_H\n";
+    print OUT "#define BREAKTABLES_H\n\n";
+
+    print OUT "#define G_UNICODE_DATA_VERSION \"$ARGV[0]\"\n\n";
+
+    printf OUT "#define G_UNICODE_LAST_CHAR 0x%04X\n\n", $last;
+
+    printf OUT "#define G_UNICODE_MAX_TABLE_INDEX 10000\n\n";
+
+    my $last_part1 = ($pages_before_e0000 * 256) - 1;
+    printf OUT "/* the last code point that should be looked up in break_property_table_part1 */\n";
+    printf OUT "#define G_UNICODE_LAST_CHAR_PART1 0x%04X\n\n", $last_part1;
+
+    $table_index = 0;
+    printf OUT "static const gint8 break_property_data[][256] = {\n";
+    for ($count = 0; $count <= $last; $count += 256)
+    {
+       $row[$count / 256] = &print_row ($count, 1, \&fetch_break_type);
+    }
+    printf OUT "\n};\n\n";
+
+    printf OUT "/* U+0000 through U+%04X */\n", $last_part1;
+    print OUT "static const gint16 break_property_table_part1[$pages_before_e0000] = {\n";
+    for ($count = 0; $count <= $last_part1; $count += 256)
+    {
+       print OUT ",\n" if $count > 0;
+       print OUT "  ", $row[$count / 256];
+       $bytes_out += 2;
+    }
+    print OUT "\n};\n\n";
+
+    printf OUT "/* U+E0000 through U+%04X */\n", $last;
+    print OUT "static const gint16 break_property_table_part2[768] = {\n";
+    for ($count = 0xE0000; $count <= $last; $count += 256)
+    {
+       print OUT ",\n" if $count > 0xE0000;
+       print OUT "  ", $row[$count / 256];
+       $bytes_out += 2;
+    }
+    print OUT "\n};\n\n";
+
+
+    print OUT "#endif /* BREAKTABLES_H */\n";
+
+    close (OUT);
+
+    printf STDERR "Generated %d bytes in break tables\n", $bytes_out;
+}
+
+
+# A fetch function for the break properties table.
+sub fetch_break_type
+{
+    my ($index) = @_;
+    return $break_mappings{$break_props[$index]};
+}
+
+# Fetcher for combining class.
+sub fetch_cclass
+{
+    my ($i) = @_;
+    return $cclass[$i];
+}
+
+# Expand a character decomposition recursively.
+sub expand_decomp
+{
+    my ($code, $compat) = @_;
+
+    my ($iter, $val);
+    my (@result) = ();
+    foreach $iter (split (' ', $decompositions[$code]))
+    {
+       $val = hex ($iter);
+       if (defined $decompositions[$val] && 
+           ($compat || !$decompose_compat[$val]))
+       {
+           push (@result, &expand_decomp ($val, $compat));
+       }
+       else
+       {
+           push (@result, $val);
+       }
+    }
+
+    return @result;
+}
+
+sub make_decomp
+{
+    my ($code, $compat) = @_;
+
+    my $result = "";
+    foreach $iter (&expand_decomp ($code, $compat))
+    {
+       $result .= pack ("U", $iter);  # to utf-8
+    }
+
+    $result;
+}
+# Generate special case data string from two fields
+sub add_special_case
+{
+    my ($code, $single, $field1, $field2) = @_;
+
+    @values = (defined $single ? $single : (),
+              (map { hex ($_) } split /\s+/, $field1),
+               0,
+               (map { hex ($_) } split /\s+/, $field2));
+    $result = "";
+
+
+    for $value (@values) {
+       $result .= pack ("U", $value);  # to utf-8
+    }
+    
+    push @special_case_offsets, $special_case_offset;
+
+    # We encode special cases up in the 0x1000000 space
+    $value[$code] = 0x1000000 + $special_case_offset;
+
+    $special_case_offset += 1 + &length_in_bytes ($result);
+
+    push @special_cases, &escape ($result);
+}
+
+sub output_special_case_table
+{
+    my $out = shift;
+
+    print $out <<EOT;
+
+/* Table of special cases for case conversion; each record contains
+ * First, the best single character mapping to lowercase if Lu, 
+ * and to uppercase if Ll, followed by the output mapping for the two cases 
+ * other than the case of the codepoint, in the order [Ll],[Lu],[Lt],
+ * encoded in UTF-8, separated and terminated by a null character.
+ */
+static const gchar special_case_table[] = {
+EOT
+
+    my $i = 0;
+    for $case (@special_cases) {
+       print $out qq( "$case\\0" /* offset ${special_case_offsets[$i]} */\n);
+        $i++;
+    }
+
+    print $out <<EOT;
+};
+
+EOT
+
+    print STDERR "Generated " . ($special_case_offset + 1) . " bytes in special case table\n";
+}
+
+sub enumerate_ordered
+{
+    my ($array) = @_;
+
+    my $n = 0;
+    for my $code (sort { $a <=> $b } keys %$array) {
+       if ($array->{$code} == 1) {
+           delete $array->{$code};
+           next;
+       }
+       $array->{$code} = $n++;
+    }
+
+    return $n;
+}
+
+sub output_composition_table
+{
+    print STDERR "Generating composition table\n";
+    
+    local ($bytes_out) = 0;
+
+    my %first;
+    my %second;
+
+    # First we need to go through and remove decompositions
+    # starting with a non-starter, and single-character 
+    # decompositions. At the same time, record
+    # the first and second character of each decomposition
+    
+    for $code (keys %compositions) 
+    {
+       @values = map { hex ($_) } split /\s+/, $compositions{$code};
+
+        # non-starters
+       if ($cclass[$values[0]]) {
+           delete $compositions{$code};
+           next;
+       }
+
+        # single-character decompositions
+       if (@values == 1) {
+           delete $compositions{$code};
+           next;
+       }
+
+       if (@values != 2) {
+           die "$code has more than two elements in its decomposition!\n";
+       }
+
+       if (exists $first{$values[0]}) {
+           $first{$values[0]}++;
+       } else {
+           $first{$values[0]} = 1;
+       }
+    }
+
+    # Assign integer indices, removing singletons
+    my $n_first = enumerate_ordered (\%first);
+
+    # Now record the second character of each (non-singleton) decomposition
+    for $code (keys %compositions) {
+       @values = map { hex ($_) } split /\s+/, $compositions{$code};
+
+       if (exists $first{$values[0]}) {
+           if (exists $second{$values[1]}) {
+               $second{$values[1]}++;
+           } else {
+               $second{$values[1]} = 1;
+           }
+       }
+    }
+
+    # Assign integer indices, removing duplicate
+    my $n_second = enumerate_ordered (\%second);
+
+    # Build reverse table
+
+    my @first_singletons;
+    my @second_singletons;
+    my %reverse;
+    for $code (keys %compositions) {
+       @values = map { hex ($_) } split /\s+/, $compositions{$code};
+
+       my $first = $first{$values[0]};
+       my $second = $second{$values[1]};
+
+       if (defined $first && defined $second) {
+           $reverse{"$first|$second"} = $code;
+       } elsif (!defined $first) {
+           push @first_singletons, [ $values[0], $values[1], $code ];
+       } else {
+           push @second_singletons, [ $values[1], $values[0], $code ];
+       }
+    }
+
+    @first_singletons = sort { $a->[0] <=> $b->[0] } @first_singletons;
+    @second_singletons = sort { $a->[0] <=> $b->[0] } @second_singletons;
+
+    my %vals;
+    
+    open OUT, ">gunicomp.h" or die "Cannot open gunicomp.h: $!\n";
+
+    print OUT "/* This file is automatically generated.  DO NOT EDIT!\n";
+    print OUT "   Instead, edit gen-unicode-tables.pl and re-run.  */\n\n";
+
+    # Assign values in lookup table for all code points involved
+    
+    my $total = 1;
+    my $last = 0;
+    printf OUT "#define COMPOSE_FIRST_START %d\n", $total;
+    for $code (keys %first) {
+       $vals{$code} = $first{$code} + $total;
+       $last = $code if $code > $last;
+    }
+    $total += $n_first;
+    $i = 0;
+    printf OUT "#define COMPOSE_FIRST_SINGLE_START %d\n", $total;
+    for $record (@first_singletons) {
+       my $code = $record->[0];
+       $vals{$code} = $i++ + $total;
+       $last = $code if $code > $last;
+    }
+    $total += @first_singletons;
+    printf OUT "#define COMPOSE_SECOND_START %d\n", $total;
+    for $code (keys %second) {
+       $vals{$code} = $second{$code} + $total;
+       $last = $code if $code > $last;
+    }
+    $total += $n_second;
+    $i = 0;
+    printf OUT "#define COMPOSE_SECOND_SINGLE_START %d\n\n", $total;
+    for $record (@second_singletons) {
+       my $code = $record->[0];
+       $vals{$code} = $i++ + $total;
+       $last = $code if $code > $last;
+    }
+
+    printf OUT "#define COMPOSE_TABLE_LAST %d\n\n", $last / 256;
+
+    # Output lookup table
+
+    my @row;                                             
+    $table_index = 0;
+    printf OUT "static const guint16 compose_data[][256] = {\n";
+    for (my $count = 0; $count <= $last; $count += 256)
+    {
+       $row[$count / 256] = &print_row ($count, 2, sub { exists $vals{$_[0]} ? $vals{$_[0]} : 0; });
+    }
+    printf OUT "\n};\n\n";
+
+    print OUT "static const gint16 compose_table[COMPOSE_TABLE_LAST + 1] = {\n";
+    for (my $count = 0; $count <= $last; $count += 256)
+    {
+       print OUT ",\n" if $count > 0;
+       print OUT "  ", $row[$count / 256];
+        $bytes_out += 2;
+    }
+    print OUT "\n};\n\n";
+
+    # Output first singletons
+
+    print OUT "static const guint16 compose_first_single[][2] = {\n";
+    $i = 0;                                 
+    for $record (@first_singletons) {
+        if ($record->[1] > 0xFFFF or $record->[2] > 0xFFFF) {
+            die "time to switch compose_first_single to gunichar" ;
+        }
+       print OUT ",\n" if $i++ > 0;
+       printf OUT " { %#06x, %#06x }", $record->[1], $record->[2];
+    }
+    print OUT "\n};\n";
+                                    
+    $bytes_out += @first_singletons * 4;
+                 
+    # Output second singletons
+
+    print OUT "static const guint16 compose_second_single[][2] = {\n";
+    $i = 0;                                 
+    for $record (@second_singletons) {
+        if ($record->[1] > 0xFFFF or $record->[2] > 0xFFFF) {
+            die "time to switch compose_second_single to gunichar";
+        }
+       print OUT ",\n" if $i++ > 0;
+       printf OUT " { %#06x, %#06x }", $record->[1], $record->[2];
+    }
+    print OUT "\n};\n";
+                                    
+    $bytes_out += @second_singletons * 4;                                   
+                 
+    # Output array of composition pairs
+
+    print OUT <<EOT;
+static const guint16 compose_array[$n_first][$n_second] = {
+EOT
+                       
+    for (my $i = 0; $i < $n_first; $i++) {
+       print OUT ",\n" if $i;
+       print OUT " { ";
+       for (my $j = 0; $j < $n_second; $j++) {
+           print OUT ", " if $j;
+           if (exists $reverse{"$i|$j"}) {
+                if ($reverse{"$i|$j"} > 0xFFFF) {
+                    die "time to switch compose_array to gunichar" ;
+                }
+               printf OUT "0x%04x", $reverse{"$i|$j"};
+           } else {
+               print OUT "     0";
+            }
+       }
+       print OUT " }";
+    }
+    print OUT "\n";
+
+    print OUT <<EOT;
+};
+EOT
+
+    $bytes_out += $n_first * $n_second * 2;
+    
+    printf STDERR "Generated %d bytes in compose tables\n", $bytes_out;
+}
+
+sub output_casefold_table
+{
+    my $out = shift;
+
+    print $out <<EOT;
+
+/* Table of casefolding cases that can't be derived by lowercasing
+ */
+static const struct {
+  guint16 ch;
+  gchar data[$casefoldlen];
+} casefold_table[] = {
+EOT
+
+   @casefold = sort { $a->[0] <=> $b->[0] } @casefold; 
+    
+   for $case (@casefold) 
+   {
+       $code = $case->[0];
+       $string = $case->[1];
+
+       if ($code > 0xFFFF) {
+           die "time to switch casefold_table to gunichar" ;
+       }
+
+       print $out sprintf(qq(  { 0x%04x, "$string" },\n), $code);
+    
+   }
+
+    print $out <<EOT;
+};
+
+EOT
+
+   my $recordlen = (2+$casefoldlen+1) & ~1;
+   printf "Generated %d bytes for casefold table\n", $recordlen * @casefold;
+}
+
+                            
+
diff --git a/lib/gl/Makefile.am b/lib/gl/Makefile.am
new file mode 100644 (file)
index 0000000..b54e974
--- /dev/null
@@ -0,0 +1,355 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=lib/gl/override --lib=libgnu --source-base=lib/gl --m4-base=lib/gl/m4 --doc-base=doc --tests-base=lib/gltests --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=lgl --no-vc-files gettext-h lib-msvc-compat lib-symbol-versions lib-symbol-visibility stdint striconv strverscmp
+
+AUTOMAKE_OPTIONS = 1.5 gnits
+
+SUBDIRS =
+noinst_HEADERS =
+noinst_LIBRARIES =
+noinst_LTLIBRARIES =
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+EXTRA_DIST += m4/gnulib-cache.m4
+
+AM_CPPFLAGS =
+AM_CFLAGS =
+
+noinst_LTLIBRARIES += libgnu.la
+
+libgnu_la_SOURCES =
+libgnu_la_LIBADD = $(lgl_LTLIBOBJS)
+libgnu_la_DEPENDENCIES = $(lgl_LTLIBOBJS)
+EXTRA_libgnu_la_SOURCES =
+libgnu_la_LDFLAGS = $(AM_LDFLAGS)
+
+## begin gnulib module c-ctype
+
+libgnu_la_SOURCES += c-ctype.h c-ctype.c
+
+## end   gnulib module c-ctype
+
+## begin gnulib module c-strcase
+
+libgnu_la_SOURCES += c-strcase.h c-strcasecmp.c c-strncasecmp.c
+
+## end   gnulib module c-strcase
+
+## begin gnulib module gettext-h
+
+libgnu_la_SOURCES += gettext.h
+
+## end   gnulib module gettext-h
+
+## begin gnulib module gperf
+
+GPERF = gperf
+
+## end   gnulib module gperf
+
+## begin gnulib module havelib
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/config.rpath
+
+## end   gnulib module havelib
+
+## begin gnulib module iconv_open
+
+BUILT_SOURCES += $(ICONV_H)
+
+# We need the following in order to create <iconv.h> when the system
+# doesn't have one that works with the given compiler.
+iconv.h: iconv.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_ICONV_H''@|$(NEXT_ICONV_H)|g' \
+             -e 's|@''ICONV_CONST''@|$(ICONV_CONST)|g' \
+             -e 's|@''REPLACE_ICONV''@|$(REPLACE_ICONV)|g' \
+             -e 's|@''REPLACE_ICONV_OPEN''@|$(REPLACE_ICONV_OPEN)|g' \
+             -e 's|@''REPLACE_ICONV_UTF''@|$(REPLACE_ICONV_UTF)|g' \
+             < $(srcdir)/iconv.in.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += iconv.h iconv.h-t
+
+iconv_open-aix.h: iconv_open-aix.gperf
+       $(GPERF) -m 10 $(srcdir)/iconv_open-aix.gperf > $(srcdir)/iconv_open-aix.h-t
+       mv $(srcdir)/iconv_open-aix.h-t $(srcdir)/iconv_open-aix.h
+iconv_open-hpux.h: iconv_open-hpux.gperf
+       $(GPERF) -m 10 $(srcdir)/iconv_open-hpux.gperf > $(srcdir)/iconv_open-hpux.h-t
+       mv $(srcdir)/iconv_open-hpux.h-t $(srcdir)/iconv_open-hpux.h
+iconv_open-irix.h: iconv_open-irix.gperf
+       $(GPERF) -m 10 $(srcdir)/iconv_open-irix.gperf > $(srcdir)/iconv_open-irix.h-t
+       mv $(srcdir)/iconv_open-irix.h-t $(srcdir)/iconv_open-irix.h
+iconv_open-osf.h: iconv_open-osf.gperf
+       $(GPERF) -m 10 $(srcdir)/iconv_open-osf.gperf > $(srcdir)/iconv_open-osf.h-t
+       mv $(srcdir)/iconv_open-osf.h-t $(srcdir)/iconv_open-osf.h
+BUILT_SOURCES        += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h
+MOSTLYCLEANFILES     += iconv_open-aix.h-t iconv_open-hpux.h-t iconv_open-irix.h-t iconv_open-osf.h-t
+MAINTAINERCLEANFILES += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h
+EXTRA_DIST           += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h iconv_open-osf.h
+
+EXTRA_DIST += iconv.in.h iconv_open-aix.gperf iconv_open-hpux.gperf iconv_open-irix.gperf iconv_open-osf.gperf iconv_open.c
+
+EXTRA_libgnu_la_SOURCES += iconv_open.c
+
+## end   gnulib module iconv_open
+
+## begin gnulib module lib-symbol-visibility
+
+# The value of $(CFLAG_VISIBILITY) needs to be added to the CFLAGS for the
+# compilation of all sources that make up the library. This line here does it
+# only for the gnulib part of it. The developer is responsible for adding
+# $(CFLAG_VISIBILITY) to the Makefile.ams of the other portions of the library.
+AM_CFLAGS += $(CFLAG_VISIBILITY)
+
+## end   gnulib module lib-symbol-visibility
+
+## begin gnulib module link-warning
+
+LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/link-warning.h
+
+## end   gnulib module link-warning
+
+## begin gnulib module stdbool
+
+BUILT_SOURCES += $(STDBOOL_H)
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += stdbool.h stdbool.h-t
+
+EXTRA_DIST += stdbool.in.h
+
+## end   gnulib module stdbool
+
+## begin gnulib module stdint
+
+BUILT_SOURCES += $(STDINT_H)
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+             -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+             -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+             -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+             < $(srcdir)/stdint.in.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += stdint.h stdint.h-t
+
+EXTRA_DIST += stdint.in.h
+
+## end   gnulib module stdint
+
+## begin gnulib module striconv
+
+libgnu_la_SOURCES += striconv.h striconv.c
+if GL_COND_LIBTOOL
+libgnu_la_LDFLAGS += $(LTLIBICONV)
+endif
+
+## end   gnulib module striconv
+
+## begin gnulib module string
+
+BUILT_SOURCES += string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+             -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+             -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+             -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+             -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+             -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+             -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+             -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+             -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+             -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+             -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+             -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+             -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+             -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+             -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+             -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+             -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+             -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+             -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+             -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+             -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+             -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+             -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+             -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+             -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+             -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+             -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+             -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+             -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+             -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+             -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/string.in.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string.in.h
+
+## end   gnulib module string
+
+## begin gnulib module strverscmp
+
+
+EXTRA_DIST += strverscmp.c
+
+EXTRA_libgnu_la_SOURCES += strverscmp.c
+
+## end   gnulib module strverscmp
+
+## begin gnulib module wchar
+
+BUILT_SOURCES += $(WCHAR_H)
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+             -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+             -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+             -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+             -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+             -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+             -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+             -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+             -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+             -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+             -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+             -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+             -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+           < $(srcdir)/wchar.in.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += wchar.h wchar.h-t
+
+EXTRA_DIST += wchar.in.h
+
+## end   gnulib module wchar
+
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
diff --git a/lib/gl/Makefile.in b/lib/gl/Makefile.in
new file mode 100644 (file)
index 0000000..41070ca
--- /dev/null
@@ -0,0 +1,1190 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=lib/gl/override --lib=libgnu --source-base=lib/gl --m4-base=lib/gl/m4 --doc-base=doc --tests-base=lib/gltests --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=lgl --no-vc-files gettext-h lib-msvc-compat lib-symbol-versions lib-symbol-visibility stdint striconv strverscmp
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@GL_COND_LIBTOOL_TRUE@am__append_1 = $(LTLIBICONV)
+subdir = lib/gl
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+am_libgnu_la_OBJECTS = c-ctype.lo c-strcasecmp.lo c-strncasecmp.lo \
+       striconv.lo
+libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS)
+libgnu_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(libgnu_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES)
+DIST_SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnits
+SUBDIRS = 
+noinst_HEADERS = 
+noinst_LIBRARIES = 
+noinst_LTLIBRARIES = libgnu.la
+EXTRA_DIST = m4/gnulib-cache.m4 $(top_srcdir)/build-aux/config.rpath \
+       iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h \
+       iconv_open-osf.h iconv.in.h iconv_open-aix.gperf \
+       iconv_open-hpux.gperf iconv_open-irix.gperf \
+       iconv_open-osf.gperf iconv_open.c \
+       $(top_srcdir)/build-aux/link-warning.h stdbool.in.h \
+       stdint.in.h string.in.h strverscmp.c wchar.in.h
+BUILT_SOURCES = $(ICONV_H) iconv_open-aix.h iconv_open-hpux.h \
+       iconv_open-irix.h iconv_open-osf.h $(STDBOOL_H) $(STDINT_H) \
+       string.h $(WCHAR_H)
+SUFFIXES = 
+MOSTLYCLEANFILES = core *.stackdump iconv.h iconv.h-t \
+       iconv_open-aix.h-t iconv_open-hpux.h-t iconv_open-irix.h-t \
+       iconv_open-osf.h-t stdbool.h stdbool.h-t stdint.h stdint.h-t \
+       string.h string.h-t wchar.h wchar.h-t
+MOSTLYCLEANDIRS = 
+CLEANFILES = 
+DISTCLEANFILES = 
+MAINTAINERCLEANFILES = iconv_open-aix.h iconv_open-hpux.h \
+       iconv_open-irix.h iconv_open-osf.h
+AM_CPPFLAGS = 
+
+# The value of $(CFLAG_VISIBILITY) needs to be added to the CFLAGS for the
+# compilation of all sources that make up the library. This line here does it
+# only for the gnulib part of it. The developer is responsible for adding
+# $(CFLAG_VISIBILITY) to the Makefile.ams of the other portions of the library.
+AM_CFLAGS = $(CFLAG_VISIBILITY)
+libgnu_la_SOURCES = c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c \
+       c-strncasecmp.c gettext.h striconv.h striconv.c
+libgnu_la_LIBADD = $(lgl_LTLIBOBJS)
+libgnu_la_DEPENDENCIES = $(lgl_LTLIBOBJS)
+EXTRA_libgnu_la_SOURCES = iconv_open.c strverscmp.c
+libgnu_la_LDFLAGS = $(AM_LDFLAGS) $(am__append_1)
+GPERF = gperf
+LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/gl/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnits lib/gl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+libgnu.la: $(libgnu_la_OBJECTS) $(libgnu_la_DEPENDENCIES) 
+       $(libgnu_la_LINK)  $(libgnu_la_OBJECTS) $(libgnu_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-ctype.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strcasecmp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strncasecmp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iconv_open.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/striconv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strverscmp.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+       clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+       ctags-recursive install install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \
+       ctags-recursive distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+       pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# We need the following in order to create <iconv.h> when the system
+# doesn't have one that works with the given compiler.
+iconv.h: iconv.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_ICONV_H''@|$(NEXT_ICONV_H)|g' \
+             -e 's|@''ICONV_CONST''@|$(ICONV_CONST)|g' \
+             -e 's|@''REPLACE_ICONV''@|$(REPLACE_ICONV)|g' \
+             -e 's|@''REPLACE_ICONV_OPEN''@|$(REPLACE_ICONV_OPEN)|g' \
+             -e 's|@''REPLACE_ICONV_UTF''@|$(REPLACE_ICONV_UTF)|g' \
+             < $(srcdir)/iconv.in.h; \
+       } > $@-t
+       mv $@-t $@
+
+iconv_open-aix.h: iconv_open-aix.gperf
+       $(GPERF) -m 10 $(srcdir)/iconv_open-aix.gperf > $(srcdir)/iconv_open-aix.h-t
+       mv $(srcdir)/iconv_open-aix.h-t $(srcdir)/iconv_open-aix.h
+iconv_open-hpux.h: iconv_open-hpux.gperf
+       $(GPERF) -m 10 $(srcdir)/iconv_open-hpux.gperf > $(srcdir)/iconv_open-hpux.h-t
+       mv $(srcdir)/iconv_open-hpux.h-t $(srcdir)/iconv_open-hpux.h
+iconv_open-irix.h: iconv_open-irix.gperf
+       $(GPERF) -m 10 $(srcdir)/iconv_open-irix.gperf > $(srcdir)/iconv_open-irix.h-t
+       mv $(srcdir)/iconv_open-irix.h-t $(srcdir)/iconv_open-irix.h
+iconv_open-osf.h: iconv_open-osf.gperf
+       $(GPERF) -m 10 $(srcdir)/iconv_open-osf.gperf > $(srcdir)/iconv_open-osf.h-t
+       mv $(srcdir)/iconv_open-osf.h-t $(srcdir)/iconv_open-osf.h
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+       } > $@-t
+       mv $@-t $@
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+             -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+             -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+             -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+             -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+             -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+             -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+             -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+             -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+             -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+             -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+             -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+             -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+             -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+             -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+             -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+             -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+             < $(srcdir)/stdint.in.h; \
+       } > $@-t
+       mv $@-t $@
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+             -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+             -e 's|@''GNULIB_MBSNLEN''@|$(GNULIB_MBSNLEN)|g' \
+             -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+             -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+             -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+             -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+             -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+             -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+             -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+             -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+             -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+             -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+             -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+             -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+             -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+             -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+             -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+             -e 's|@''GNULIB_RAWMEMCHR''@|$(GNULIB_RAWMEMCHR)|g' \
+             -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+             -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+             -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+             -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+             -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+             -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+             -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+             -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+             -e 's|@''GNULIB_STRSTR''@|$(GNULIB_STRSTR)|g' \
+             -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+             -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+             -e 's|@''GNULIB_STRERROR''@|$(GNULIB_STRERROR)|g' \
+             -e 's|@''GNULIB_STRSIGNAL''@|$(GNULIB_STRSIGNAL)|g' \
+             -e 's|@''GNULIB_STRVERSCMP''@|$(GNULIB_STRVERSCMP)|g' \
+             -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+             -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+             -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+             -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+             -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+             -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+             -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+             -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+             -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+             -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+             -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+             -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+             -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+             -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+             -e 's|@''HAVE_DECL_STRERROR''@|$(HAVE_DECL_STRERROR)|g' \
+             -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+             -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+             -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+             -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+             -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+             -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+             -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+             -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/string.in.h; \
+       } > $@-t
+       mv $@-t $@
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar.in.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+         sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+             -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+             -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
+             -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
+             -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
+             -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
+             -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
+             -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
+             -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
+             -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
+             -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
+             -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
+             -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
+             -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+             -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+             -e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
+             -e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
+             -e 's|@''HAVE_MBRLEN''@|$(HAVE_MBRLEN)|g' \
+             -e 's|@''HAVE_MBSRTOWCS''@|$(HAVE_MBSRTOWCS)|g' \
+             -e 's|@''HAVE_MBSNRTOWCS''@|$(HAVE_MBSNRTOWCS)|g' \
+             -e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
+             -e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
+             -e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+             -e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
+             -e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
+             -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+             -e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
+             -e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
+             -e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
+             -e 's|@''REPLACE_MBRTOWC''@|$(REPLACE_MBRTOWC)|g' \
+             -e 's|@''REPLACE_MBRLEN''@|$(REPLACE_MBRLEN)|g' \
+             -e 's|@''REPLACE_MBSRTOWCS''@|$(REPLACE_MBSRTOWCS)|g' \
+             -e 's|@''REPLACE_MBSNRTOWCS''@|$(REPLACE_MBSNRTOWCS)|g' \
+             -e 's|@''REPLACE_WCRTOMB''@|$(REPLACE_WCRTOMB)|g' \
+             -e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
+             -e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
+             -e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+           < $(srcdir)/wchar.in.h; \
+       } > $@-t
+       mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/gl/c-ctype.c b/lib/gl/c-ctype.c
new file mode 100644 (file)
index 0000000..1c685c5
--- /dev/null
@@ -0,0 +1,396 @@
+/* Character handling in C locale.
+
+   Copyright 2000-2003, 2006 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#define NO_C_CTYPE_MACROS
+#include "c-ctype.h"
+
+/* The function isascii is not locale dependent. Its use in EBCDIC is
+   questionable. */
+bool
+c_isascii (int c)
+{
+  return (c >= 0x00 && c <= 0x7f);
+}
+
+bool
+c_isalnum (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+  return ((c >= '0' && c <= '9')
+          || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'));
+#else
+  return ((c >= '0' && c <= '9')
+          || (c >= 'A' && c <= 'Z')
+          || (c >= 'a' && c <= 'z'));
+#endif
+#else
+  switch (c)
+    {
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isalpha (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+  return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z');
+#else
+  return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
+#endif
+#else
+  switch (c)
+    {
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isblank (int c)
+{
+  return (c == ' ' || c == '\t');
+}
+
+bool
+c_iscntrl (int c)
+{
+#if C_CTYPE_ASCII
+  return ((c & ~0x1f) == 0 || c == 0x7f);
+#else
+  switch (c)
+    {
+    case ' ': case '!': case '"': case '#': case '$': case '%':
+    case '&': case '\'': case '(': case ')': case '*': case '+':
+    case ',': case '-': case '.': case '/':
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case ':': case ';': case '<': case '=': case '>': case '?':
+    case '@':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case '[': case '\\': case ']': case '^': case '_': case '`':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+    case '{': case '|': case '}': case '~':
+      return 0;
+    default:
+      return 1;
+    }
+#endif
+}
+
+bool
+c_isdigit (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS
+  return (c >= '0' && c <= '9');
+#else
+  switch (c)
+    {
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_islower (int c)
+{
+#if C_CTYPE_CONSECUTIVE_LOWERCASE
+  return (c >= 'a' && c <= 'z');
+#else
+  switch (c)
+    {
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isgraph (int c)
+{
+#if C_CTYPE_ASCII
+  return (c >= '!' && c <= '~');
+#else
+  switch (c)
+    {
+    case '!': case '"': case '#': case '$': case '%': case '&':
+    case '\'': case '(': case ')': case '*': case '+': case ',':
+    case '-': case '.': case '/':
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case ':': case ';': case '<': case '=': case '>': case '?':
+    case '@':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case '[': case '\\': case ']': case '^': case '_': case '`':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+    case '{': case '|': case '}': case '~':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isprint (int c)
+{
+#if C_CTYPE_ASCII
+  return (c >= ' ' && c <= '~');
+#else
+  switch (c)
+    {
+    case ' ': case '!': case '"': case '#': case '$': case '%':
+    case '&': case '\'': case '(': case ')': case '*': case '+':
+    case ',': case '-': case '.': case '/':
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case ':': case ';': case '<': case '=': case '>': case '?':
+    case '@':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+    case '[': case '\\': case ']': case '^': case '_': case '`':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+    case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+    case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+    case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+    case 'y': case 'z':
+    case '{': case '|': case '}': case '~':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_ispunct (int c)
+{
+#if C_CTYPE_ASCII
+  return ((c >= '!' && c <= '~')
+          && !((c >= '0' && c <= '9')
+               || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')));
+#else
+  switch (c)
+    {
+    case '!': case '"': case '#': case '$': case '%': case '&':
+    case '\'': case '(': case ')': case '*': case '+': case ',':
+    case '-': case '.': case '/':
+    case ':': case ';': case '<': case '=': case '>': case '?':
+    case '@':
+    case '[': case '\\': case ']': case '^': case '_': case '`':
+    case '{': case '|': case '}': case '~':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isspace (int c)
+{
+  return (c == ' ' || c == '\t'
+          || c == '\n' || c == '\v' || c == '\f' || c == '\r');
+}
+
+bool
+c_isupper (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE
+  return (c >= 'A' && c <= 'Z');
+#else
+  switch (c)
+    {
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+    case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+    case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+    case 'Y': case 'Z':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+bool
+c_isxdigit (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+  return ((c >= '0' && c <= '9')
+          || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F'));
+#else
+  return ((c >= '0' && c <= '9')
+          || (c >= 'A' && c <= 'F')
+          || (c >= 'a' && c <= 'f'));
+#endif
+#else
+  switch (c)
+    {
+    case '0': case '1': case '2': case '3': case '4': case '5':
+    case '6': case '7': case '8': case '9':
+    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+      return 1;
+    default:
+      return 0;
+    }
+#endif
+}
+
+int
+c_tolower (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+  return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c);
+#else
+  switch (c)
+    {
+    case 'A': return 'a';
+    case 'B': return 'b';
+    case 'C': return 'c';
+    case 'D': return 'd';
+    case 'E': return 'e';
+    case 'F': return 'f';
+    case 'G': return 'g';
+    case 'H': return 'h';
+    case 'I': return 'i';
+    case 'J': return 'j';
+    case 'K': return 'k';
+    case 'L': return 'l';
+    case 'M': return 'm';
+    case 'N': return 'n';
+    case 'O': return 'o';
+    case 'P': return 'p';
+    case 'Q': return 'q';
+    case 'R': return 'r';
+    case 'S': return 's';
+    case 'T': return 't';
+    case 'U': return 'u';
+    case 'V': return 'v';
+    case 'W': return 'w';
+    case 'X': return 'x';
+    case 'Y': return 'y';
+    case 'Z': return 'z';
+    default: return c;
+    }
+#endif
+}
+
+int
+c_toupper (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+  return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c);
+#else
+  switch (c)
+    {
+    case 'a': return 'A';
+    case 'b': return 'B';
+    case 'c': return 'C';
+    case 'd': return 'D';
+    case 'e': return 'E';
+    case 'f': return 'F';
+    case 'g': return 'G';
+    case 'h': return 'H';
+    case 'i': return 'I';
+    case 'j': return 'J';
+    case 'k': return 'K';
+    case 'l': return 'L';
+    case 'm': return 'M';
+    case 'n': return 'N';
+    case 'o': return 'O';
+    case 'p': return 'P';
+    case 'q': return 'Q';
+    case 'r': return 'R';
+    case 's': return 'S';
+    case 't': return 'T';
+    case 'u': return 'U';
+    case 'v': return 'V';
+    case 'w': return 'W';
+    case 'x': return 'X';
+    case 'y': return 'Y';
+    case 'z': return 'Z';
+    default: return c;
+    }
+#endif
+}
diff --git a/lib/gl/c-ctype.h b/lib/gl/c-ctype.h
new file mode 100644 (file)
index 0000000..2bce9d1
--- /dev/null
@@ -0,0 +1,295 @@
+/* Character handling in C locale.
+
+   These functions work like the corresponding functions in <ctype.h>,
+   except that they have the C (POSIX) locale hardwired, whereas the
+   <ctype.h> functions' behaviour depends on the current locale set via
+   setlocale.
+
+   Copyright (C) 2000-2003, 2006, 2008 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef C_CTYPE_H
+#define C_CTYPE_H
+
+#include <stdbool.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* The functions defined in this file assume the "C" locale and a character
+   set without diacritics (ASCII-US or EBCDIC-US or something like that).
+   Even if the "C" locale on a particular system is an extension of the ASCII
+   character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
+   is ISO-8859-1), the functions in this file recognize only the ASCII
+   characters.  */
+
+
+/* Check whether the ASCII optimizations apply. */
+
+/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that
+   '0', '1', ..., '9' have consecutive integer values.  */
+#define C_CTYPE_CONSECUTIVE_DIGITS 1
+
+#if ('A' <= 'Z') \
+    && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \
+    && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \
+    && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \
+    && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \
+    && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \
+    && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \
+    && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \
+    && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \
+    && ('Y' + 1 == 'Z')
+#define C_CTYPE_CONSECUTIVE_UPPERCASE 1
+#endif
+
+#if ('a' <= 'z') \
+    && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \
+    && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \
+    && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \
+    && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \
+    && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \
+    && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \
+    && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \
+    && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \
+    && ('y' + 1 == 'z')
+#define C_CTYPE_CONSECUTIVE_LOWERCASE 1
+#endif
+
+#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+    && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+    && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+    && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+    && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+    && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+    && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+    && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+    && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+    && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+    && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+    && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+    && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+    && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+    && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+    && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+    && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+    && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+    && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+    && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+    && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+    && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+    && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)
+/* The character set is ASCII or one of its variants or extensions, not EBCDIC.
+   Testing the value of '\n' and '\r' is not relevant.  */
+#define C_CTYPE_ASCII 1
+#endif
+
+
+/* Function declarations. */
+
+/* Unlike the functions in <ctype.h>, which require an argument in the range
+   of the 'unsigned char' type, the functions here operate on values that are
+   in the 'unsigned char' range or in the 'char' range.  In other words,
+   when you have a 'char' value, you need to cast it before using it as
+   argument to a <ctype.h> function:
+
+         const char *s = ...;
+         if (isalpha ((unsigned char) *s)) ...
+
+   but you don't need to cast it for the functions defined in this file:
+
+         const char *s = ...;
+         if (c_isalpha (*s)) ...
+ */
+
+extern bool c_isascii (int c); /* not locale dependent */
+
+extern bool c_isalnum (int c);
+extern bool c_isalpha (int c);
+extern bool c_isblank (int c);
+extern bool c_iscntrl (int c);
+extern bool c_isdigit (int c);
+extern bool c_islower (int c);
+extern bool c_isgraph (int c);
+extern bool c_isprint (int c);
+extern bool c_ispunct (int c);
+extern bool c_isspace (int c);
+extern bool c_isupper (int c);
+extern bool c_isxdigit (int c);
+
+extern int c_tolower (int c);
+extern int c_toupper (int c);
+
+
+#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS
+
+/* ASCII optimizations. */
+
+#undef c_isascii
+#define c_isascii(c) \
+  ({ int __c = (c); \
+     (__c >= 0x00 && __c <= 0x7f); \
+   })
+
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isalnum
+#define c_isalnum(c) \
+  ({ int __c = (c); \
+     ((__c >= '0' && __c <= '9') \
+      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \
+   })
+#else
+#undef c_isalnum
+#define c_isalnum(c) \
+  ({ int __c = (c); \
+     ((__c >= '0' && __c <= '9') \
+      || (__c >= 'A' && __c <= 'Z') \
+      || (__c >= 'a' && __c <= 'z')); \
+   })
+#endif
+#endif
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isalpha
+#define c_isalpha(c) \
+  ({ int __c = (c); \
+     ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \
+   })
+#else
+#undef c_isalpha
+#define c_isalpha(c) \
+  ({ int __c = (c); \
+     ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \
+   })
+#endif
+#endif
+
+#undef c_isblank
+#define c_isblank(c) \
+  ({ int __c = (c); \
+     (__c == ' ' || __c == '\t'); \
+   })
+
+#if C_CTYPE_ASCII
+#undef c_iscntrl
+#define c_iscntrl(c) \
+  ({ int __c = (c); \
+     ((__c & ~0x1f) == 0 || __c == 0x7f); \
+   })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_DIGITS
+#undef c_isdigit
+#define c_isdigit(c) \
+  ({ int __c = (c); \
+     (__c >= '0' && __c <= '9'); \
+   })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_LOWERCASE
+#undef c_islower
+#define c_islower(c) \
+  ({ int __c = (c); \
+     (__c >= 'a' && __c <= 'z'); \
+   })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_isgraph
+#define c_isgraph(c) \
+  ({ int __c = (c); \
+     (__c >= '!' && __c <= '~'); \
+   })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_isprint
+#define c_isprint(c) \
+  ({ int __c = (c); \
+     (__c >= ' ' && __c <= '~'); \
+   })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_ispunct
+#define c_ispunct(c) \
+  ({ int _c = (c); \
+     (c_isgraph (_c) && ! c_isalnum (_c)); \
+   })
+#endif
+
+#undef c_isspace
+#define c_isspace(c) \
+  ({ int __c = (c); \
+     (__c == ' ' || __c == '\t' \
+      || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \
+   })
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE
+#undef c_isupper
+#define c_isupper(c) \
+  ({ int __c = (c); \
+     (__c >= 'A' && __c <= 'Z'); \
+   })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isxdigit
+#define c_isxdigit(c) \
+  ({ int __c = (c); \
+     ((__c >= '0' && __c <= '9') \
+      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \
+   })
+#else
+#undef c_isxdigit
+#define c_isxdigit(c) \
+  ({ int __c = (c); \
+     ((__c >= '0' && __c <= '9') \
+      || (__c >= 'A' && __c <= 'F') \
+      || (__c >= 'a' && __c <= 'f')); \
+   })
+#endif
+#endif
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#undef c_tolower
+#define c_tolower(c) \
+  ({ int __c = (c); \
+     (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \
+   })
+#undef c_toupper
+#define c_toupper(c) \
+  ({ int __c = (c); \
+     (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \
+   })
+#endif
+
+#endif /* optimizing for speed */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* C_CTYPE_H */
diff --git a/lib/gl/c-strcase.h b/lib/gl/c-strcase.h
new file mode 100644 (file)
index 0000000..6d92e26
--- /dev/null
@@ -0,0 +1,55 @@
+/* Case-insensitive string comparison functions in C locale.
+   Copyright (C) 1995-1996, 2001, 2003, 2005 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef C_STRCASE_H
+#define C_STRCASE_H
+
+#include <stddef.h>
+
+
+/* The functions defined in this file assume the "C" locale and a character
+   set without diacritics (ASCII-US or EBCDIC-US or something like that).
+   Even if the "C" locale on a particular system is an extension of the ASCII
+   character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
+   is ISO-8859-1), the functions in this file recognize only the ASCII
+   characters.  More precisely, one of the string arguments must be an ASCII
+   string; the other one can also contain non-ASCII characters (but then
+   the comparison result will be nonzero).  */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
+   greater than zero if S1 is lexicographically less than, equal to or greater
+   than S2.  */
+extern int c_strcasecmp (const char *s1, const char *s2);
+
+/* Compare no more than N characters of strings S1 and S2, ignoring case,
+   returning less than, equal to or greater than zero if S1 is
+   lexicographically less than, equal to or greater than S2.  */
+extern int c_strncasecmp (const char *s1, const char *s2, size_t n);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* C_STRCASE_H */
diff --git a/lib/gl/c-strcasecmp.c b/lib/gl/c-strcasecmp.c
new file mode 100644 (file)
index 0000000..8c006ca
--- /dev/null
@@ -0,0 +1,57 @@
+/* c-strcasecmp.c -- case insensitive string comparator in C locale
+   Copyright (C) 1998-1999, 2005-2006 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "c-strcase.h"
+
+#include <limits.h>
+
+#include "c-ctype.h"
+
+int
+c_strcasecmp (const char *s1, const char *s2)
+{
+  register const unsigned char *p1 = (const unsigned char *) s1;
+  register const unsigned char *p2 = (const unsigned char *) s2;
+  unsigned char c1, c2;
+
+  if (p1 == p2)
+    return 0;
+
+  do
+    {
+      c1 = c_tolower (*p1);
+      c2 = c_tolower (*p2);
+
+      if (c1 == '\0')
+       break;
+
+      ++p1;
+      ++p2;
+    }
+  while (c1 == c2);
+
+  if (UCHAR_MAX <= INT_MAX)
+    return c1 - c2;
+  else
+    /* On machines where 'char' and 'int' are types of the same size, the
+       difference of two 'unsigned char' values - including the sign bit -
+       doesn't fit in an 'int'.  */
+    return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+}
diff --git a/lib/gl/c-strncasecmp.c b/lib/gl/c-strncasecmp.c
new file mode 100644 (file)
index 0000000..03f10f6
--- /dev/null
@@ -0,0 +1,57 @@
+/* c-strncasecmp.c -- case insensitive string comparator in C locale
+   Copyright (C) 1998-1999, 2005-2006 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "c-strcase.h"
+
+#include <limits.h>
+
+#include "c-ctype.h"
+
+int
+c_strncasecmp (const char *s1, const char *s2, size_t n)
+{
+  register const unsigned char *p1 = (const unsigned char *) s1;
+  register const unsigned char *p2 = (const unsigned char *) s2;
+  unsigned char c1, c2;
+
+  if (p1 == p2 || n == 0)
+    return 0;
+
+  do
+    {
+      c1 = c_tolower (*p1);
+      c2 = c_tolower (*p2);
+
+      if (--n == 0 || c1 == '\0')
+       break;
+
+      ++p1;
+      ++p2;
+    }
+  while (c1 == c2);
+
+  if (UCHAR_MAX <= INT_MAX)
+    return c1 - c2;
+  else
+    /* On machines where 'char' and 'int' are types of the same size, the
+       difference of two 'unsigned char' values - including the sign bit -
+       doesn't fit in an 'int'.  */
+    return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+}
diff --git a/lib/gl/gettext.h b/lib/gl/gettext.h
new file mode 100644 (file)
index 0000000..56d4a21
--- /dev/null
@@ -0,0 +1,174 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+   Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option.  */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions.  */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+   the gettext() and ngettext() macros.  This is an alternative to calling
+   textdomain(), and is useful for libraries.  */
+# ifdef DEFAULT_TEXT_DOMAIN
+#  undef gettext
+#  define gettext(Msgid) \
+     dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+#  undef ngettext
+#  define ngettext(Msgid1, Msgid2, N) \
+     dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+   chokes if dcgettext is defined as a macro.  So include it now, to make
+   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
+   as well because people using "gettext.h" will not include <libintl.h>,
+   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+   is OK.  */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+   <libintl.h>, which chokes if dcgettext is defined as a macro.  So include
+   it now, to make later inclusions of <libintl.h> a NOP.  */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
+#  include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+   The casts to 'const char *' serve the purpose of producing warnings
+   for invalid uses of the value returned from these functions.
+   On pre-ANSI systems without 'const', the config.h file is supposed to
+   contain "#define const".  */
+# undef gettext
+# define gettext(Msgid) ((const char *) (Msgid))
+# undef dgettext
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# undef dcgettext
+# define dcgettext(Domainname, Msgid, Category) \
+    ((void) (Category), dgettext (Domainname, Msgid))
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+    ((N) == 1 \
+     ? ((void) (Msgid2), (const char *) (Msgid1)) \
+     : ((void) (Msgid1), (const char *) (Msgid2)))
+# undef dngettext
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+    ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# undef dcngettext
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+    ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
+# undef textdomain
+# define textdomain(Domainname) ((const char *) (Domainname))
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) \
+    ((void) (Domainname), (const char *) (Dirname))
+# undef bind_textdomain_codeset
+# define bind_textdomain_codeset(Domainname, Codeset) \
+    ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+   extraction of messages, but does not call gettext().  The run-time
+   translation is done at a different place in the code.
+   The argument, String, should be a literal string.  Concatenated strings
+   and other string expressions won't work.
+   The macro's expansion is not parenthesized, so that it is suitable as
+   initializer for static 'char[]' or 'const char[]' variables.  */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file.  */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+   MSGID.  MSGCTXT and MSGID must be string literals.  MSGCTXT should be
+   short and rarely need to change.
+   The letter 'p' stands for 'particular' or 'special'.  */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+   pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+   npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+             const char *msg_ctxt_id, const char *msgid,
+             int category)
+{
+  const char *translation = dcgettext (domain, msg_ctxt_id, category);
+  if (translation == msg_ctxt_id)
+    return msgid;
+  else
+    return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+              const char *msg_ctxt_id, const char *msgid,
+              const char *msgid_plural, unsigned long int n,
+              int category)
+{
+  const char *translation =
+    dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+  if (translation == msg_ctxt_id || translation == msgid_plural)
+    return (n == 1 ? msgid : msgid_plural);
+  else
+    return translation;
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/lib/gl/iconv.in.h b/lib/gl/iconv.in.h
new file mode 100644 (file)
index 0000000..db2f139
--- /dev/null
@@ -0,0 +1,71 @@
+/* A GNU-like <iconv.h>.
+
+   Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_ICONV_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_ICONV_H@
+
+#ifndef _GL_ICONV_H
+#define _GL_ICONV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @REPLACE_ICONV_OPEN@
+/* An iconv_open wrapper that supports the IANA standardized encoding names
+   ("ISO-8859-1" etc.) as far as possible.  */
+# define iconv_open rpl_iconv_open
+extern iconv_t iconv_open (const char *tocode, const char *fromcode);
+#endif
+
+#if @REPLACE_ICONV_UTF@
+/* Special constants for supporting UTF-{16,32}{BE,LE} encodings.
+   Not public.  */
+# define _ICONV_UTF8_UTF16BE (iconv_t)(-161)
+# define _ICONV_UTF8_UTF16LE (iconv_t)(-162)
+# define _ICONV_UTF8_UTF32BE (iconv_t)(-163)
+# define _ICONV_UTF8_UTF32LE (iconv_t)(-164)
+# define _ICONV_UTF16BE_UTF8 (iconv_t)(-165)
+# define _ICONV_UTF16LE_UTF8 (iconv_t)(-166)
+# define _ICONV_UTF32BE_UTF8 (iconv_t)(-167)
+# define _ICONV_UTF32LE_UTF8 (iconv_t)(-168)
+#endif
+
+#if @REPLACE_ICONV@
+# define iconv rpl_iconv
+extern size_t iconv (iconv_t cd,
+                    @ICONV_CONST@ char **inbuf, size_t *inbytesleft,
+                    char **outbuf, size_t *outbytesleft);
+# define iconv_close rpl_iconv_close
+extern int iconv_close (iconv_t cd);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_ICONV_H */
+#endif /* _GL_ICONV_H */
diff --git a/lib/gl/iconv_open-aix.gperf b/lib/gl/iconv_open-aix.gperf
new file mode 100644 (file)
index 0000000..6782b99
--- /dev/null
@@ -0,0 +1,44 @@
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+%struct-type
+%language=ANSI-C
+%define slot-name standard_name
+%define hash-function-name mapping_hash
+%define lookup-function-name mapping_lookup
+%readonly-tables
+%global-table
+%define word-array-name mappings
+%pic
+%%
+# On AIX 5.1, look in /usr/lib/nls/loc/uconvTable.
+ISO-8859-1, "ISO8859-1"
+ISO-8859-2, "ISO8859-2"
+ISO-8859-3, "ISO8859-3"
+ISO-8859-4, "ISO8859-4"
+ISO-8859-5, "ISO8859-5"
+ISO-8859-6, "ISO8859-6"
+ISO-8859-7, "ISO8859-7"
+ISO-8859-8, "ISO8859-8"
+ISO-8859-9, "ISO8859-9"
+ISO-8859-15, "ISO8859-15"
+CP437, "IBM-437"
+CP850, "IBM-850"
+CP852, "IBM-852"
+CP856, "IBM-856"
+CP857, "IBM-857"
+CP861, "IBM-861"
+CP865, "IBM-865"
+CP869, "IBM-869"
+ISO-8859-13, "IBM-921"
+CP922, "IBM-922"
+CP932, "IBM-932"
+CP943, "IBM-943"
+CP1046, "IBM-1046"
+CP1124, "IBM-1124"
+CP1125, "IBM-1125"
+CP1129, "IBM-1129"
+CP1252, "IBM-1252"
+GB2312, "IBM-eucCN"
+EUC-JP, "IBM-eucJP"
+EUC-KR, "IBM-eucKR"
+EUC-TW, "IBM-eucTW"
+BIG5, "big5"
diff --git a/lib/gl/iconv_open-aix.h b/lib/gl/iconv_open-aix.h
new file mode 100644 (file)
index 0000000..0ffc3fe
--- /dev/null
@@ -0,0 +1,256 @@
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: gperf -m 10 ./iconv_open-aix.gperf  */
+/* Computed positions: -k'4,$' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 1 "./iconv_open-aix.gperf"
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+
+#define TOTAL_KEYWORDS 32
+#define MIN_WORD_LENGTH 4
+#define MAX_WORD_LENGTH 11
+#define MIN_HASH_VALUE 6
+#define MAX_HASH_VALUE 44
+/* maximum key range = 39, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+mapping_hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45,  0,  4, 25,
+       0, 11, 24,  9, 17,  3, 14, 21, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+       3, 45,  1, 45, 45, 45, 45,  0, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+      45, 45, 45, 45, 45, 45, 45, 45
+    };
+  return len + asso_values[(unsigned char)str[3]+2] + asso_values[(unsigned char)str[len - 1]];
+}
+
+struct stringpool_t
+  {
+    char stringpool_str6[sizeof("EUC-TW")];
+    char stringpool_str7[sizeof("EUC-KR")];
+    char stringpool_str8[sizeof("CP852")];
+    char stringpool_str9[sizeof("EUC-JP")];
+    char stringpool_str10[sizeof("ISO-8859-2")];
+    char stringpool_str11[sizeof("CP857")];
+    char stringpool_str12[sizeof("CP850")];
+    char stringpool_str13[sizeof("ISO-8859-7")];
+    char stringpool_str14[sizeof("CP932")];
+    char stringpool_str15[sizeof("GB2312")];
+    char stringpool_str16[sizeof("BIG5")];
+    char stringpool_str17[sizeof("CP437")];
+    char stringpool_str19[sizeof("ISO-8859-5")];
+    char stringpool_str20[sizeof("ISO-8859-15")];
+    char stringpool_str21[sizeof("ISO-8859-3")];
+    char stringpool_str22[sizeof("ISO-8859-13")];
+    char stringpool_str23[sizeof("CP1046")];
+    char stringpool_str24[sizeof("ISO-8859-8")];
+    char stringpool_str25[sizeof("CP856")];
+    char stringpool_str26[sizeof("CP1125")];
+    char stringpool_str27[sizeof("ISO-8859-6")];
+    char stringpool_str28[sizeof("CP865")];
+    char stringpool_str29[sizeof("CP922")];
+    char stringpool_str30[sizeof("CP1252")];
+    char stringpool_str31[sizeof("ISO-8859-9")];
+    char stringpool_str33[sizeof("CP943")];
+    char stringpool_str34[sizeof("ISO-8859-4")];
+    char stringpool_str35[sizeof("ISO-8859-1")];
+    char stringpool_str38[sizeof("CP1129")];
+    char stringpool_str40[sizeof("CP869")];
+    char stringpool_str41[sizeof("CP1124")];
+    char stringpool_str44[sizeof("CP861")];
+  };
+static const struct stringpool_t stringpool_contents =
+  {
+    "EUC-TW",
+    "EUC-KR",
+    "CP852",
+    "EUC-JP",
+    "ISO-8859-2",
+    "CP857",
+    "CP850",
+    "ISO-8859-7",
+    "CP932",
+    "GB2312",
+    "BIG5",
+    "CP437",
+    "ISO-8859-5",
+    "ISO-8859-15",
+    "ISO-8859-3",
+    "ISO-8859-13",
+    "CP1046",
+    "ISO-8859-8",
+    "CP856",
+    "CP1125",
+    "ISO-8859-6",
+    "CP865",
+    "CP922",
+    "CP1252",
+    "ISO-8859-9",
+    "CP943",
+    "ISO-8859-4",
+    "ISO-8859-1",
+    "CP1129",
+    "CP869",
+    "CP1124",
+    "CP861"
+  };
+#define stringpool ((const char *) &stringpool_contents)
+
+static const struct mapping mappings[] =
+  {
+    {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+#line 43 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "IBM-eucTW"},
+#line 42 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "IBM-eucKR"},
+#line 25 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "IBM-852"},
+#line 41 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "IBM-eucJP"},
+#line 14 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "ISO8859-2"},
+#line 27 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "IBM-857"},
+#line 24 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "IBM-850"},
+#line 19 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "ISO8859-7"},
+#line 33 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "IBM-932"},
+#line 40 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "IBM-eucCN"},
+#line 44 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "big5"},
+#line 23 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "IBM-437"},
+    {-1},
+#line 17 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "ISO8859-5"},
+#line 22 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "ISO8859-15"},
+#line 15 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "ISO8859-3"},
+#line 31 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "IBM-921"},
+#line 35 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "IBM-1046"},
+#line 20 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str24, "ISO8859-8"},
+#line 26 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, "IBM-856"},
+#line 37 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, "IBM-1125"},
+#line 18 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, "ISO8859-6"},
+#line 29 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str28, "IBM-865"},
+#line 32 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, "IBM-922"},
+#line 39 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, "IBM-1252"},
+#line 21 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, "ISO8859-9"},
+    {-1},
+#line 34 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, "IBM-943"},
+#line 16 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, "ISO8859-4"},
+#line 13 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, "ISO8859-1"},
+    {-1}, {-1},
+#line 38 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, "IBM-1129"},
+    {-1},
+#line 30 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, "IBM-869"},
+#line 36 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, "IBM-1124"},
+    {-1}, {-1},
+#line 28 "./iconv_open-aix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str44, "IBM-861"}
+  };
+
+#ifdef __GNUC__
+__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct mapping *
+mapping_lookup (register const char *str, register unsigned int len)
+{
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = mapping_hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register int o = mappings[key].standard_name;
+          if (o >= 0)
+            {
+              register const char *s = o + stringpool;
+
+              if (*str == *s && !strcmp (str + 1, s + 1))
+                return &mappings[key];
+            }
+        }
+    }
+  return 0;
+}
diff --git a/lib/gl/iconv_open-hpux.gperf b/lib/gl/iconv_open-hpux.gperf
new file mode 100644 (file)
index 0000000..5a35c83
--- /dev/null
@@ -0,0 +1,56 @@
+struct mapping { int standard_name; const char vendor_name[9 + 1]; };
+%struct-type
+%language=ANSI-C
+%define slot-name standard_name
+%define hash-function-name mapping_hash
+%define lookup-function-name mapping_lookup
+%readonly-tables
+%global-table
+%define word-array-name mappings
+%pic
+%%
+# On HP-UX 11.11, look in /usr/lib/nls/iconv.
+ISO-8859-1, "iso88591"
+ISO-8859-2, "iso88592"
+ISO-8859-5, "iso88595"
+ISO-8859-6, "iso88596"
+ISO-8859-7, "iso88597"
+ISO-8859-8, "iso88598"
+ISO-8859-9, "iso88599"
+ISO-8859-15, "iso885915"
+CP437, "cp437"
+CP775, "cp775"
+CP850, "cp850"
+CP852, "cp852"
+CP855, "cp855"
+CP857, "cp857"
+CP861, "cp861"
+CP862, "cp862"
+CP864, "cp864"
+CP865, "cp865"
+CP866, "cp866"
+CP869, "cp869"
+CP874, "cp874"
+CP1250, "cp1250"
+CP1251, "cp1251"
+CP1252, "cp1252"
+CP1253, "cp1253"
+CP1254, "cp1254"
+CP1255, "cp1255"
+CP1256, "cp1256"
+CP1257, "cp1257"
+CP1258, "cp1258"
+HP-ROMAN8, "roman8"
+HP-ARABIC8, "arabic8"
+HP-GREEK8, "greek8"
+HP-HEBREW8, "hebrew8"
+HP-TURKISH8, "turkish8"
+HP-KANA8, "kana8"
+TIS-620, "tis620"
+GB2312, "hp15CN"
+EUC-JP, "eucJP"
+EUC-KR, "eucKR"
+EUC-TW, "eucTW"
+BIG5, "big5"
+SHIFT_JIS, "sjis"
+UTF-8, "utf8"
diff --git a/lib/gl/iconv_open-hpux.h b/lib/gl/iconv_open-hpux.h
new file mode 100644 (file)
index 0000000..8f9f0a9
--- /dev/null
@@ -0,0 +1,299 @@
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: gperf -m 10 ./iconv_open-hpux.gperf  */
+/* Computed positions: -k'4,$' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 1 "./iconv_open-hpux.gperf"
+struct mapping { int standard_name; const char vendor_name[9 + 1]; };
+
+#define TOTAL_KEYWORDS 44
+#define MIN_WORD_LENGTH 4
+#define MAX_WORD_LENGTH 11
+#define MIN_HASH_VALUE 6
+#define MAX_HASH_VALUE 49
+/* maximum key range = 44, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+mapping_hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50,  1,  2,
+      24, 43,  5, 10,  0, 13, 32,  3, 19, 18,
+      50, 50, 50, 50, 50, 50, 50, 50, 50,  5,
+      50, 50, 50, 50, 14,  5,  0, 50, 50,  0,
+      27, 50, 12, 14, 50, 50,  0,  5,  2, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
+      50, 50, 50, 50, 50, 50, 50, 50, 50, 50
+    };
+  return len + asso_values[(unsigned char)str[3]+4] + asso_values[(unsigned char)str[len - 1]];
+}
+
+struct stringpool_t
+  {
+    char stringpool_str6[sizeof("CP1256")];
+    char stringpool_str7[sizeof("CP1250")];
+    char stringpool_str8[sizeof("CP1251")];
+    char stringpool_str9[sizeof("CP850")];
+    char stringpool_str10[sizeof("TIS-620")];
+    char stringpool_str11[sizeof("CP1254")];
+    char stringpool_str12[sizeof("ISO-8859-6")];
+    char stringpool_str13[sizeof("EUC-TW")];
+    char stringpool_str14[sizeof("ISO-8859-1")];
+    char stringpool_str15[sizeof("ISO-8859-9")];
+    char stringpool_str16[sizeof("CP1255")];
+    char stringpool_str17[sizeof("BIG5")];
+    char stringpool_str18[sizeof("CP855")];
+    char stringpool_str19[sizeof("CP1257")];
+    char stringpool_str20[sizeof("EUC-KR")];
+    char stringpool_str21[sizeof("CP857")];
+    char stringpool_str22[sizeof("ISO-8859-5")];
+    char stringpool_str23[sizeof("ISO-8859-15")];
+    char stringpool_str24[sizeof("CP866")];
+    char stringpool_str25[sizeof("ISO-8859-7")];
+    char stringpool_str26[sizeof("CP861")];
+    char stringpool_str27[sizeof("CP869")];
+    char stringpool_str28[sizeof("CP874")];
+    char stringpool_str29[sizeof("CP864")];
+    char stringpool_str30[sizeof("CP1252")];
+    char stringpool_str31[sizeof("CP437")];
+    char stringpool_str32[sizeof("CP852")];
+    char stringpool_str33[sizeof("CP775")];
+    char stringpool_str34[sizeof("CP865")];
+    char stringpool_str35[sizeof("EUC-JP")];
+    char stringpool_str36[sizeof("ISO-8859-2")];
+    char stringpool_str37[sizeof("SHIFT_JIS")];
+    char stringpool_str38[sizeof("CP1258")];
+    char stringpool_str39[sizeof("UTF-8")];
+    char stringpool_str40[sizeof("HP-KANA8")];
+    char stringpool_str41[sizeof("HP-ROMAN8")];
+    char stringpool_str42[sizeof("HP-HEBREW8")];
+    char stringpool_str43[sizeof("GB2312")];
+    char stringpool_str44[sizeof("ISO-8859-8")];
+    char stringpool_str45[sizeof("HP-TURKISH8")];
+    char stringpool_str46[sizeof("HP-GREEK8")];
+    char stringpool_str47[sizeof("HP-ARABIC8")];
+    char stringpool_str48[sizeof("CP862")];
+    char stringpool_str49[sizeof("CP1253")];
+  };
+static const struct stringpool_t stringpool_contents =
+  {
+    "CP1256",
+    "CP1250",
+    "CP1251",
+    "CP850",
+    "TIS-620",
+    "CP1254",
+    "ISO-8859-6",
+    "EUC-TW",
+    "ISO-8859-1",
+    "ISO-8859-9",
+    "CP1255",
+    "BIG5",
+    "CP855",
+    "CP1257",
+    "EUC-KR",
+    "CP857",
+    "ISO-8859-5",
+    "ISO-8859-15",
+    "CP866",
+    "ISO-8859-7",
+    "CP861",
+    "CP869",
+    "CP874",
+    "CP864",
+    "CP1252",
+    "CP437",
+    "CP852",
+    "CP775",
+    "CP865",
+    "EUC-JP",
+    "ISO-8859-2",
+    "SHIFT_JIS",
+    "CP1258",
+    "UTF-8",
+    "HP-KANA8",
+    "HP-ROMAN8",
+    "HP-HEBREW8",
+    "GB2312",
+    "ISO-8859-8",
+    "HP-TURKISH8",
+    "HP-GREEK8",
+    "HP-ARABIC8",
+    "CP862",
+    "CP1253"
+  };
+#define stringpool ((const char *) &stringpool_contents)
+
+static const struct mapping mappings[] =
+  {
+    {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+#line 40 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "cp1256"},
+#line 34 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "cp1250"},
+#line 35 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "cp1251"},
+#line 23 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "cp850"},
+#line 49 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "tis620"},
+#line 38 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "cp1254"},
+#line 16 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "iso88596"},
+#line 53 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "eucTW"},
+#line 13 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "iso88591"},
+#line 19 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "iso88599"},
+#line 39 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "cp1255"},
+#line 54 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "big5"},
+#line 25 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, "cp855"},
+#line 41 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "cp1257"},
+#line 52 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "eucKR"},
+#line 26 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "cp857"},
+#line 15 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "iso88595"},
+#line 20 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "iso885915"},
+#line 31 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str24, "cp866"},
+#line 17 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, "iso88597"},
+#line 27 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, "cp861"},
+#line 32 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, "cp869"},
+#line 33 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str28, "cp874"},
+#line 29 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, "cp864"},
+#line 36 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, "cp1252"},
+#line 21 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, "cp437"},
+#line 24 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str32, "cp852"},
+#line 22 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, "cp775"},
+#line 30 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, "cp865"},
+#line 51 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, "eucJP"},
+#line 14 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str36, "iso88592"},
+#line 55 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str37, "sjis"},
+#line 42 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, "cp1258"},
+#line 56 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str39, "utf8"},
+#line 48 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, "kana8"},
+#line 43 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, "roman8"},
+#line 46 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str42, "hebrew8"},
+#line 50 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str43, "hp15CN"},
+#line 18 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str44, "iso88598"},
+#line 47 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str45, "turkish8"},
+#line 45 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str46, "greek8"},
+#line 44 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str47, "arabic8"},
+#line 28 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str48, "cp862"},
+#line 37 "./iconv_open-hpux.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str49, "cp1253"}
+  };
+
+#ifdef __GNUC__
+__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct mapping *
+mapping_lookup (register const char *str, register unsigned int len)
+{
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = mapping_hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register int o = mappings[key].standard_name;
+          if (o >= 0)
+            {
+              register const char *s = o + stringpool;
+
+              if (*str == *s && !strcmp (str + 1, s + 1))
+                return &mappings[key];
+            }
+        }
+    }
+  return 0;
+}
diff --git a/lib/gl/iconv_open-irix.gperf b/lib/gl/iconv_open-irix.gperf
new file mode 100644 (file)
index 0000000..3672a80
--- /dev/null
@@ -0,0 +1,31 @@
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+%struct-type
+%language=ANSI-C
+%define slot-name standard_name
+%define hash-function-name mapping_hash
+%define lookup-function-name mapping_lookup
+%readonly-tables
+%global-table
+%define word-array-name mappings
+%pic
+%%
+# On IRIX 6.5, look in /usr/lib/iconv and /usr/lib/international/encodings.
+ISO-8859-1, "ISO8859-1"
+ISO-8859-2, "ISO8859-2"
+ISO-8859-3, "ISO8859-3"
+ISO-8859-4, "ISO8859-4"
+ISO-8859-5, "ISO8859-5"
+ISO-8859-6, "ISO8859-6"
+ISO-8859-7, "ISO8859-7"
+ISO-8859-8, "ISO8859-8"
+ISO-8859-9, "ISO8859-9"
+ISO-8859-15, "ISO8859-15"
+KOI8-R, "KOI8"
+CP855, "DOS855"
+CP1251, "WIN1251"
+GB2312, "eucCN"
+EUC-JP, "eucJP"
+EUC-KR, "eucKR"
+EUC-TW, "eucTW"
+SHIFT_JIS, "sjis"
+TIS-620, "TIS620"
diff --git a/lib/gl/iconv_open-irix.h b/lib/gl/iconv_open-irix.h
new file mode 100644 (file)
index 0000000..520582e
--- /dev/null
@@ -0,0 +1,199 @@
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: gperf -m 10 ./iconv_open-irix.gperf  */
+/* Computed positions: -k'1,$' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 1 "./iconv_open-irix.gperf"
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+
+#define TOTAL_KEYWORDS 19
+#define MIN_WORD_LENGTH 5
+#define MAX_WORD_LENGTH 11
+#define MIN_HASH_VALUE 5
+#define MAX_HASH_VALUE 23
+/* maximum key range = 19, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+mapping_hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24,  8,  2,
+       5, 12, 11,  0, 10,  9,  8,  7, 24, 24,
+      24, 24, 24, 24, 24, 24, 24,  0, 24,  0,
+      24,  5, 24,  0, 24,  7, 24, 24, 24, 24,
+       7, 24,  1,  0,  8, 24, 24,  0, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+      24, 24, 24, 24, 24, 24
+    };
+  return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]];
+}
+
+struct stringpool_t
+  {
+    char stringpool_str5[sizeof("CP855")];
+    char stringpool_str6[sizeof("EUC-TW")];
+    char stringpool_str7[sizeof("EUC-KR")];
+    char stringpool_str8[sizeof("CP1251")];
+    char stringpool_str9[sizeof("SHIFT_JIS")];
+    char stringpool_str10[sizeof("ISO-8859-5")];
+    char stringpool_str11[sizeof("ISO-8859-15")];
+    char stringpool_str12[sizeof("ISO-8859-1")];
+    char stringpool_str13[sizeof("EUC-JP")];
+    char stringpool_str14[sizeof("KOI8-R")];
+    char stringpool_str15[sizeof("ISO-8859-2")];
+    char stringpool_str16[sizeof("GB2312")];
+    char stringpool_str17[sizeof("ISO-8859-9")];
+    char stringpool_str18[sizeof("ISO-8859-8")];
+    char stringpool_str19[sizeof("ISO-8859-7")];
+    char stringpool_str20[sizeof("ISO-8859-6")];
+    char stringpool_str21[sizeof("ISO-8859-4")];
+    char stringpool_str22[sizeof("ISO-8859-3")];
+    char stringpool_str23[sizeof("TIS-620")];
+  };
+static const struct stringpool_t stringpool_contents =
+  {
+    "CP855",
+    "EUC-TW",
+    "EUC-KR",
+    "CP1251",
+    "SHIFT_JIS",
+    "ISO-8859-5",
+    "ISO-8859-15",
+    "ISO-8859-1",
+    "EUC-JP",
+    "KOI8-R",
+    "ISO-8859-2",
+    "GB2312",
+    "ISO-8859-9",
+    "ISO-8859-8",
+    "ISO-8859-7",
+    "ISO-8859-6",
+    "ISO-8859-4",
+    "ISO-8859-3",
+    "TIS-620"
+  };
+#define stringpool ((const char *) &stringpool_contents)
+
+static const struct mapping mappings[] =
+  {
+    {-1}, {-1}, {-1}, {-1}, {-1},
+#line 24 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str5, "DOS855"},
+#line 29 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "eucTW"},
+#line 28 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "eucKR"},
+#line 25 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "WIN1251"},
+#line 30 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "sjis"},
+#line 17 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "ISO8859-5"},
+#line 22 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "ISO8859-15"},
+#line 13 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "ISO8859-1"},
+#line 27 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "eucJP"},
+#line 23 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "KOI8"},
+#line 14 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "ISO8859-2"},
+#line 26 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "eucCN"},
+#line 21 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "ISO8859-9"},
+#line 20 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, "ISO8859-8"},
+#line 19 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "ISO8859-7"},
+#line 18 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "ISO8859-6"},
+#line 16 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "ISO8859-4"},
+#line 15 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "ISO8859-3"},
+#line 31 "./iconv_open-irix.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "TIS620"}
+  };
+
+#ifdef __GNUC__
+__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct mapping *
+mapping_lookup (register const char *str, register unsigned int len)
+{
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = mapping_hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register int o = mappings[key].standard_name;
+          if (o >= 0)
+            {
+              register const char *s = o + stringpool;
+
+              if (*str == *s && !strcmp (str + 1, s + 1))
+                return &mappings[key];
+            }
+        }
+    }
+  return 0;
+}
diff --git a/lib/gl/iconv_open-osf.gperf b/lib/gl/iconv_open-osf.gperf
new file mode 100644 (file)
index 0000000..f468ff6
--- /dev/null
@@ -0,0 +1,50 @@
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+%struct-type
+%language=ANSI-C
+%define slot-name standard_name
+%define hash-function-name mapping_hash
+%define lookup-function-name mapping_lookup
+%readonly-tables
+%global-table
+%define word-array-name mappings
+%pic
+%%
+# On OSF/1 5.1, look in /usr/lib/nls/loc/iconv.
+ISO-8859-1, "ISO8859-1"
+ISO-8859-2, "ISO8859-2"
+ISO-8859-3, "ISO8859-3"
+ISO-8859-4, "ISO8859-4"
+ISO-8859-5, "ISO8859-5"
+ISO-8859-6, "ISO8859-6"
+ISO-8859-7, "ISO8859-7"
+ISO-8859-8, "ISO8859-8"
+ISO-8859-9, "ISO8859-9"
+ISO-8859-15, "ISO8859-15"
+CP437, "cp437"
+CP775, "cp775"
+CP850, "cp850"
+CP852, "cp852"
+CP855, "cp855"
+CP857, "cp857"
+CP861, "cp861"
+CP862, "cp862"
+CP865, "cp865"
+CP866, "cp866"
+CP869, "cp869"
+CP874, "cp874"
+CP949, "KSC5601"
+CP1250, "cp1250"
+CP1251, "cp1251"
+CP1252, "cp1252"
+CP1253, "cp1253"
+CP1254, "cp1254"
+CP1255, "cp1255"
+CP1256, "cp1256"
+CP1257, "cp1257"
+CP1258, "cp1258"
+EUC-JP, "eucJP"
+EUC-KR, "eucKR"
+EUC-TW, "eucTW"
+BIG5, "big5"
+SHIFT_JIS, "SJIS"
+TIS-620, "TACTIS"
diff --git a/lib/gl/iconv_open-osf.h b/lib/gl/iconv_open-osf.h
new file mode 100644 (file)
index 0000000..85e4c0f
--- /dev/null
@@ -0,0 +1,278 @@
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: gperf -m 10 ./iconv_open-osf.gperf  */
+/* Computed positions: -k'4,$' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 1 "./iconv_open-osf.gperf"
+struct mapping { int standard_name; const char vendor_name[10 + 1]; };
+
+#define TOTAL_KEYWORDS 38
+#define MIN_WORD_LENGTH 4
+#define MAX_WORD_LENGTH 11
+#define MIN_HASH_VALUE 6
+#define MAX_HASH_VALUE 47
+/* maximum key range = 42, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+mapping_hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48,  2, 29,
+      24, 34, 31,  0, 15, 14, 10, 13,  2, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48,  7, 48, 48, 48, 48, 48, 48,
+      11, 48,  2,  7, 48, 48, 48,  1, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+      48, 48, 48, 48, 48, 48, 48, 48, 48
+    };
+  return len + asso_values[(unsigned char)str[3]+3] + asso_values[(unsigned char)str[len - 1]];
+}
+
+struct stringpool_t
+  {
+    char stringpool_str6[sizeof("CP1255")];
+    char stringpool_str7[sizeof("CP775")];
+    char stringpool_str8[sizeof("CP1250")];
+    char stringpool_str9[sizeof("EUC-TW")];
+    char stringpool_str10[sizeof("EUC-KR")];
+    char stringpool_str11[sizeof("TIS-620")];
+    char stringpool_str12[sizeof("ISO-8859-5")];
+    char stringpool_str13[sizeof("ISO-8859-15")];
+    char stringpool_str14[sizeof("BIG5")];
+    char stringpool_str15[sizeof("CP855")];
+    char stringpool_str16[sizeof("CP1258")];
+    char stringpool_str17[sizeof("CP850")];
+    char stringpool_str18[sizeof("CP865")];
+    char stringpool_str19[sizeof("EUC-JP")];
+    char stringpool_str20[sizeof("CP1257")];
+    char stringpool_str21[sizeof("CP1256")];
+    char stringpool_str22[sizeof("ISO-8859-8")];
+    char stringpool_str23[sizeof("SHIFT_JIS")];
+    char stringpool_str25[sizeof("ISO-8859-9")];
+    char stringpool_str26[sizeof("ISO-8859-7")];
+    char stringpool_str27[sizeof("ISO-8859-6")];
+    char stringpool_str29[sizeof("CP857")];
+    char stringpool_str30[sizeof("CP1252")];
+    char stringpool_str31[sizeof("CP869")];
+    char stringpool_str32[sizeof("CP949")];
+    char stringpool_str33[sizeof("CP866")];
+    char stringpool_str34[sizeof("CP437")];
+    char stringpool_str35[sizeof("CP1251")];
+    char stringpool_str36[sizeof("ISO-8859-2")];
+    char stringpool_str37[sizeof("CP1254")];
+    char stringpool_str38[sizeof("CP874")];
+    char stringpool_str39[sizeof("CP852")];
+    char stringpool_str40[sizeof("CP1253")];
+    char stringpool_str41[sizeof("ISO-8859-1")];
+    char stringpool_str42[sizeof("CP862")];
+    char stringpool_str43[sizeof("ISO-8859-4")];
+    char stringpool_str46[sizeof("ISO-8859-3")];
+    char stringpool_str47[sizeof("CP861")];
+  };
+static const struct stringpool_t stringpool_contents =
+  {
+    "CP1255",
+    "CP775",
+    "CP1250",
+    "EUC-TW",
+    "EUC-KR",
+    "TIS-620",
+    "ISO-8859-5",
+    "ISO-8859-15",
+    "BIG5",
+    "CP855",
+    "CP1258",
+    "CP850",
+    "CP865",
+    "EUC-JP",
+    "CP1257",
+    "CP1256",
+    "ISO-8859-8",
+    "SHIFT_JIS",
+    "ISO-8859-9",
+    "ISO-8859-7",
+    "ISO-8859-6",
+    "CP857",
+    "CP1252",
+    "CP869",
+    "CP949",
+    "CP866",
+    "CP437",
+    "CP1251",
+    "ISO-8859-2",
+    "CP1254",
+    "CP874",
+    "CP852",
+    "CP1253",
+    "ISO-8859-1",
+    "CP862",
+    "ISO-8859-4",
+    "ISO-8859-3",
+    "CP861"
+  };
+#define stringpool ((const char *) &stringpool_contents)
+
+static const struct mapping mappings[] =
+  {
+    {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+#line 41 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str6, "cp1255"},
+#line 24 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str7, "cp775"},
+#line 36 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str8, "cp1250"},
+#line 47 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str9, "eucTW"},
+#line 46 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str10, "eucKR"},
+#line 50 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str11, "TACTIS"},
+#line 17 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str12, "ISO8859-5"},
+#line 22 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str13, "ISO8859-15"},
+#line 48 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str14, "big5"},
+#line 27 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str15, "cp855"},
+#line 44 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str16, "cp1258"},
+#line 25 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str17, "cp850"},
+#line 31 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str18, "cp865"},
+#line 45 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str19, "eucJP"},
+#line 43 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str20, "cp1257"},
+#line 42 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str21, "cp1256"},
+#line 20 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str22, "ISO8859-8"},
+#line 49 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str23, "SJIS"},
+    {-1},
+#line 21 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str25, "ISO8859-9"},
+#line 19 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str26, "ISO8859-7"},
+#line 18 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str27, "ISO8859-6"},
+    {-1},
+#line 28 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str29, "cp857"},
+#line 38 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str30, "cp1252"},
+#line 33 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str31, "cp869"},
+#line 35 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str32, "KSC5601"},
+#line 32 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str33, "cp866"},
+#line 23 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str34, "cp437"},
+#line 37 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str35, "cp1251"},
+#line 14 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str36, "ISO8859-2"},
+#line 40 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str37, "cp1254"},
+#line 34 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str38, "cp874"},
+#line 26 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str39, "cp852"},
+#line 39 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str40, "cp1253"},
+#line 13 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str41, "ISO8859-1"},
+#line 30 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str42, "cp862"},
+#line 16 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str43, "ISO8859-4"},
+    {-1}, {-1},
+#line 15 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str46, "ISO8859-3"},
+#line 29 "./iconv_open-osf.gperf"
+    {(int)(long)&((struct stringpool_t *)0)->stringpool_str47, "cp861"}
+  };
+
+#ifdef __GNUC__
+__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+const struct mapping *
+mapping_lookup (register const char *str, register unsigned int len)
+{
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = mapping_hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register int o = mappings[key].standard_name;
+          if (o >= 0)
+            {
+              register const char *s = o + stringpool;
+
+              if (*str == *s && !strcmp (str + 1, s + 1))
+                return &mappings[key];
+            }
+        }
+    }
+  return 0;
+}
diff --git a/lib/gl/iconv_open.c b/lib/gl/iconv_open.c
new file mode 100644 (file)
index 0000000..a699dde
--- /dev/null
@@ -0,0 +1,172 @@
+/* Character set conversion.
+   Copyright (C) 2007 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <iconv.h>
+
+#include <errno.h>
+#include <string.h>
+#include "c-ctype.h"
+#include "c-strcase.h"
+
+#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+
+/* Namespace cleanliness.  */
+#define mapping_lookup rpl_iconv_open_mapping_lookup
+
+/* The macro ICONV_FLAVOR is defined to one of these or undefined.  */
+
+#define ICONV_FLAVOR_AIX "iconv_open-aix.h"
+#define ICONV_FLAVOR_HPUX "iconv_open-hpux.h"
+#define ICONV_FLAVOR_IRIX "iconv_open-irix.h"
+#define ICONV_FLAVOR_OSF "iconv_open-osf.h"
+
+#ifdef ICONV_FLAVOR
+# include ICONV_FLAVOR
+#endif
+
+iconv_t
+rpl_iconv_open (const char *tocode, const char *fromcode)
+#undef iconv_open
+{
+  char fromcode_upper[32];
+  char tocode_upper[32];
+  char *fromcode_upper_end;
+  char *tocode_upper_end;
+
+#if REPLACE_ICONV_UTF
+  /* Special handling of conversion between UTF-8 and UTF-{16,32}{BE,LE}.
+     Do this here, before calling the real iconv_open(), because  OSF/1 5.1
+     iconv() to these encoding inserts a BOM, which is wrong.
+     We do not need to handle conversion between arbitrary encodings and
+     UTF-{16,32}{BE,LE}, because the 'striconveh' module implements two-step
+     conversion throough UTF-8.
+     The _ICONV_* constants are chosen to be disjoint from any iconv_t
+     returned by the system's iconv_open() functions.  Recall that iconv_t
+     is a scalar type.  */
+  if (c_toupper (fromcode[0]) == 'U'
+      && c_toupper (fromcode[1]) == 'T'
+      && c_toupper (fromcode[2]) == 'F'
+      && fromcode[3] == '-')
+    {
+      if (c_toupper (tocode[0]) == 'U'
+         && c_toupper (tocode[1]) == 'T'
+         && c_toupper (tocode[2]) == 'F'
+         && tocode[3] == '-')
+       {
+         if (strcmp (fromcode + 4, "8") == 0)
+           {
+             if (c_strcasecmp (tocode + 4, "16BE") == 0)
+               return _ICONV_UTF8_UTF16BE;
+             if (c_strcasecmp (tocode + 4, "16LE") == 0)
+               return _ICONV_UTF8_UTF16LE;
+             if (c_strcasecmp (tocode + 4, "32BE") == 0)
+               return _ICONV_UTF8_UTF32BE;
+             if (c_strcasecmp (tocode + 4, "32LE") == 0)
+               return _ICONV_UTF8_UTF32LE;
+           }
+         else if (strcmp (tocode + 4, "8") == 0)
+           {
+             if (c_strcasecmp (fromcode + 4, "16BE") == 0)
+               return _ICONV_UTF16BE_UTF8;
+             if (c_strcasecmp (fromcode + 4, "16LE") == 0)
+               return _ICONV_UTF16LE_UTF8;
+             if (c_strcasecmp (fromcode + 4, "32BE") == 0)
+               return _ICONV_UTF32BE_UTF8;
+             if (c_strcasecmp (fromcode + 4, "32LE") == 0)
+               return _ICONV_UTF32LE_UTF8;
+           }
+       }
+    }
+#endif
+
+  /* Do *not* add special support for 8-bit encodings like ASCII or ISO-8859-1
+     here.  This would lead to programs that work in some locales (such as the
+     "C" or "en_US" locales) but do not work in East Asian locales.  It is
+     better if programmers make their programs depend on GNU libiconv (except
+     on glibc systems), e.g. by using the AM_ICONV macro and documenting the
+     dependency in an INSTALL or DEPENDENCIES file.  */
+
+  /* Try with the original names first.
+     This covers the case when fromcode or tocode is a lowercase encoding name
+     that is understood by the system's iconv_open but not listed in our
+     mappings table.  */
+  {
+    iconv_t cd = iconv_open (tocode, fromcode);
+    if (cd != (iconv_t)(-1))
+      return cd;
+  }
+
+  /* Convert the encodings to upper case, because
+       1. in the arguments of iconv_open() on AIX, HP-UX, and OSF/1 the case
+         matters,
+       2. it makes searching in the table faster.  */
+  {
+    const char *p = fromcode;
+    char *q = fromcode_upper;
+    while ((*q = c_toupper (*p)) != '\0')
+      {
+       p++;
+       q++;
+       if (q == &fromcode_upper[SIZEOF (fromcode_upper)])
+         {
+           errno = EINVAL;
+           return (iconv_t)(-1);
+         }
+      }
+    fromcode_upper_end = q;
+  }
+
+  {
+    const char *p = tocode;
+    char *q = tocode_upper;
+    while ((*q = c_toupper (*p)) != '\0')
+      {
+       p++;
+       q++;
+       if (q == &tocode_upper[SIZEOF (tocode_upper)])
+         {
+           errno = EINVAL;
+           return (iconv_t)(-1);
+         }
+      }
+    tocode_upper_end = q;
+  }
+
+#ifdef ICONV_FLAVOR
+  /* Apply the mappings.  */
+  {
+    const struct mapping *m =
+      mapping_lookup (fromcode_upper, fromcode_upper_end - fromcode_upper);
+
+    fromcode = (m != NULL ? m->vendor_name : fromcode_upper);
+  }
+  {
+    const struct mapping *m =
+      mapping_lookup (tocode_upper, tocode_upper_end - tocode_upper);
+
+    tocode = (m != NULL ? m->vendor_name : tocode_upper);
+  }
+#else
+  fromcode = fromcode_upper;
+  tocode = tocode_upper;
+#endif
+
+  return iconv_open (tocode, fromcode);
+}
diff --git a/lib/gl/m4/gnulib-cache.m4 b/lib/gl/m4/gnulib-cache.m4
new file mode 100644 (file)
index 0000000..7a91421
--- /dev/null
@@ -0,0 +1,44 @@
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the specification of how gnulib-tool is used.
+# It acts as a cache: It is written and read by gnulib-tool.
+# In projects using CVS, this file is meant to be stored in CVS,
+# like the configure.ac and various Makefile.am files.
+
+
+# Specification in the form of a command-line invocation:
+#   gnulib-tool --import --dir=. --local-dir=lib/gl/override --lib=libgnu --source-base=lib/gl --m4-base=lib/gl/m4 --doc-base=doc --tests-base=lib/gltests --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=lgl --no-vc-files gettext-h lib-msvc-compat lib-symbol-versions lib-symbol-visibility stdint striconv strverscmp
+
+# Specification in the form of a few gnulib-tool.m4 macro invocations:
+gl_LOCAL_DIR([lib/gl/override])
+gl_MODULES([
+  gettext-h
+  lib-msvc-compat
+  lib-symbol-versions
+  lib-symbol-visibility
+  stdint
+  striconv
+  strverscmp
+])
+gl_AVOID([])
+gl_SOURCE_BASE([lib/gl])
+gl_M4_BASE([lib/gl/m4])
+gl_PO_BASE([])
+gl_DOC_BASE([doc])
+gl_TESTS_BASE([lib/gltests])
+gl_WITH_TESTS
+gl_LIB([libgnu])
+gl_LGPL([2])
+gl_MAKEFILE_NAME([])
+gl_LIBTOOL
+gl_MACRO_PREFIX([lgl])
+gl_PO_DOMAIN([])
+gl_VC_FILES([false])
diff --git a/lib/gl/m4/gnulib-comp.m4 b/lib/gl/m4/gnulib-comp.m4
new file mode 100644 (file)
index 0000000..71e8d00
--- /dev/null
@@ -0,0 +1,257 @@
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the compiled summary of the specification in
+# gnulib-cache.m4. It lists the computed macro invocations that need
+# to be invoked from configure.ac.
+# In projects using CVS, this file can be treated like other built files.
+
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Checks for programs", right after AC_PROG_CC, and certainly before
+# any checks for libraries, header files, types and library functions.
+AC_DEFUN([lgl_EARLY],
+[
+  m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
+  m4_pattern_allow([^gl_ES$])dnl a valid locale name
+  m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
+  m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+  AC_REQUIRE([AC_PROG_RANLIB])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+])
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([lgl_INIT],
+[
+  AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
+  gl_cond_libtool=true
+  m4_pushdef([AC_LIBOBJ], m4_defn([lgl_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([lgl_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([lgl_LIBSOURCES]))
+  m4_pushdef([lgl_LIBSOURCES_LIST], [])
+  m4_pushdef([lgl_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='lib/gl'
+  AC_SUBST([LIBINTL])
+  AC_SUBST([LTLIBINTL])
+  AM_ICONV
+  gl_ICONV_H
+  gl_FUNC_ICONV_OPEN
+  gl_LD_OUTPUT_DEF
+  gl_LD_VERSION_SCRIPT
+  gl_VISIBILITY
+  gl_MULTIARCH
+  AM_STDBOOL_H
+  gl_STDINT_H
+  if test $gl_cond_libtool = false; then
+    gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV"
+    gl_libdeps="$gl_libdeps $LIBICONV"
+  fi
+  gl_HEADER_STRING_H
+  gl_FUNC_STRVERSCMP
+  gl_STRING_MODULE_INDICATOR([strverscmp])
+  gl_WCHAR_H
+  m4_ifval(lgl_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([lgl_LIBSOURCES_DIR])[ ||
+      for gl_file in ]lgl_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([lgl_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([lgl_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([lgl_LIBSOURCES_DIR])
+  m4_popdef([lgl_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    lgl_libobjs=
+    lgl_ltlibobjs=
+    if test -n "$lgl_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $lgl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        lgl_libobjs="$lgl_libobjs $i.$ac_objext"
+        lgl_ltlibobjs="$lgl_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([lgl_LIBOBJS], [$lgl_libobjs])
+    AC_SUBST([lgl_LTLIBOBJS], [$lgl_ltlibobjs])
+  ])
+  gltests_libdeps=
+  gltests_ltlibdeps=
+  m4_pushdef([AC_LIBOBJ], m4_defn([lgltests_LIBOBJ]))
+  m4_pushdef([AC_REPLACE_FUNCS], m4_defn([lgltests_REPLACE_FUNCS]))
+  m4_pushdef([AC_LIBSOURCES], m4_defn([lgltests_LIBSOURCES]))
+  m4_pushdef([lgltests_LIBSOURCES_LIST], [])
+  m4_pushdef([lgltests_LIBSOURCES_DIR], [])
+  gl_COMMON
+  gl_source_base='lib/gltests'
+  gt_LOCALE_FR
+  gt_LOCALE_TR_UTF8
+  gt_TYPE_WCHAR_T
+  gt_TYPE_WINT_T
+  m4_ifval(lgltests_LIBSOURCES_LIST, [
+    m4_syscmd([test ! -d ]m4_defn([lgltests_LIBSOURCES_DIR])[ ||
+      for gl_file in ]lgltests_LIBSOURCES_LIST[ ; do
+        if test ! -r ]m4_defn([lgltests_LIBSOURCES_DIR])[/$gl_file ; then
+          echo "missing file ]m4_defn([lgltests_LIBSOURCES_DIR])[/$gl_file" >&2
+          exit 1
+        fi
+      done])dnl
+      m4_if(m4_sysval, [0], [],
+        [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+  ])
+  m4_popdef([lgltests_LIBSOURCES_DIR])
+  m4_popdef([lgltests_LIBSOURCES_LIST])
+  m4_popdef([AC_LIBSOURCES])
+  m4_popdef([AC_REPLACE_FUNCS])
+  m4_popdef([AC_LIBOBJ])
+  AC_CONFIG_COMMANDS_PRE([
+    lgltests_libobjs=
+    lgltests_ltlibobjs=
+    if test -n "$lgltests_LIBOBJS"; then
+      # Remove the extension.
+      sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $lgltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+        lgltests_libobjs="$lgltests_libobjs $i.$ac_objext"
+        lgltests_ltlibobjs="$lgltests_ltlibobjs $i.lo"
+      done
+    fi
+    AC_SUBST([lgltests_LIBOBJS], [$lgltests_libobjs])
+    AC_SUBST([lgltests_LTLIBOBJS], [$lgltests_ltlibobjs])
+  ])
+  LIBTESTS_LIBDEPS="$gltests_libdeps"
+  AC_SUBST([LIBTESTS_LIBDEPS])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into lgl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([lgl_LIBOBJ], [
+  AS_LITERAL_IF([$1], [lgl_LIBSOURCES([$1.c])])dnl
+  lgl_LIBOBJS="$lgl_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into lgl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([lgl_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [lgl_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([lgl_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([lgl_LIBSOURCES_DIR], [lib/gl])
+      m4_append([lgl_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into lgltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([lgltests_LIBOBJ], [
+  AS_LITERAL_IF([$1], [lgltests_LIBSOURCES([$1.c])])dnl
+  lgltests_LIBOBJS="$lgltests_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into lgltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([lgltests_REPLACE_FUNCS], [
+  m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+  AC_CHECK_FUNCS([$1], , [lgltests_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([lgltests_LIBSOURCES], [
+  m4_foreach([_gl_NAME], [$1], [
+    m4_if(_gl_NAME, [alloca.c], [], [
+      m4_define([lgltests_LIBSOURCES_DIR], [lib/gltests])
+      m4_append([lgltests_LIBSOURCES_LIST], _gl_NAME, [ ])
+    ])
+  ])
+])
+
+# This macro records the list of files which have been installed by
+# gnulib-tool and may be removed by future gnulib-tool invocations.
+AC_DEFUN([lgl_FILE_LIST], [
+  build-aux/config.rpath
+  build-aux/link-warning.h
+  lib/c-ctype.c
+  lib/c-ctype.h
+  lib/c-strcase.h
+  lib/c-strcasecmp.c
+  lib/c-strncasecmp.c
+  lib/gettext.h
+  lib/iconv.in.h
+  lib/iconv_open-aix.gperf
+  lib/iconv_open-hpux.gperf
+  lib/iconv_open-irix.gperf
+  lib/iconv_open-osf.gperf
+  lib/iconv_open.c
+  lib/stdbool.in.h
+  lib/stdint.in.h
+  lib/striconv.c
+  lib/striconv.h
+  lib/string.in.h
+  lib/strverscmp.c
+  lib/wchar.in.h
+  m4/00gnulib.m4
+  m4/codeset.m4
+  m4/extensions.m4
+  m4/gnulib-common.m4
+  m4/iconv.m4
+  m4/iconv_h.m4
+  m4/iconv_open.m4
+  m4/include_next.m4
+  m4/ld-output-def.m4
+  m4/ld-version-script.m4
+  m4/lib-ld.m4
+  m4/lib-link.m4
+  m4/lib-prefix.m4
+  m4/locale-fr.m4
+  m4/locale-tr.m4
+  m4/longlong.m4
+  m4/multiarch.m4
+  m4/stdbool.m4
+  m4/stdint.m4
+  m4/string_h.m4
+  m4/strverscmp.m4
+  m4/visibility.m4
+  m4/wchar.m4
+  m4/wchar_t.m4
+  m4/wint_t.m4
+  tests/test-c-ctype.c
+  tests/test-c-strcase.sh
+  tests/test-c-strcasecmp.c
+  tests/test-c-strncasecmp.c
+  tests/test-iconv.c
+  tests/test-stdbool.c
+  tests/test-stdint.c
+  tests/test-striconv.c
+  tests/test-string.c
+  tests/test-strverscmp.c
+  tests/test-wchar.c
+  tests=lib/dummy.c
+  tests=lib/intprops.h
+  tests=lib/verify.h
+])
diff --git a/lib/gl/m4/iconv_h.m4 b/lib/gl/m4/iconv_h.m4
new file mode 100644 (file)
index 0000000..bc05b05
--- /dev/null
@@ -0,0 +1,34 @@
+# iconv_h.m4 serial 4
+dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ICONV_H],
+[
+  AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+  gl_CHECK_NEXT_HEADERS([iconv.h])
+])
+
+dnl Unconditionally enables the replacement of <iconv.h>.
+AC_DEFUN([gl_REPLACE_ICONV_H],
+[
+  AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+  ICONV_H='iconv.h'
+])
+
+AC_DEFUN([gl_ICONV_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_ICONV_H_DEFAULTS],
+[
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  REPLACE_ICONV=0;      AC_SUBST([REPLACE_ICONV])
+  REPLACE_ICONV_OPEN=0; AC_SUBST([REPLACE_ICONV_OPEN])
+  REPLACE_ICONV_UTF=0;  AC_SUBST([REPLACE_ICONV_UTF])
+  ICONV_H='';           AC_SUBST([ICONV_H])
+])
diff --git a/lib/gl/m4/iconv_open.m4 b/lib/gl/m4/iconv_open.m4
new file mode 100644 (file)
index 0000000..c7b948e
--- /dev/null
@@ -0,0 +1,237 @@
+# iconv_open.m4 serial 5
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ICONV_OPEN],
+[
+  AC_REQUIRE([AM_ICONV])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+  if test "$am_cv_func_iconv" = yes; then
+    dnl Test whether iconv_open accepts standardized encoding names.
+    dnl We know that GNU libiconv and GNU libc do.
+    AC_EGREP_CPP([gnu_iconv], [
+      #include <iconv.h>
+      #if defined _LIBICONV_VERSION || defined __GLIBC__
+       gnu_iconv
+      #endif
+      ], [gl_func_iconv_gnu=yes], [gl_func_iconv_gnu=no])
+    if test $gl_func_iconv_gnu = no; then
+      iconv_flavor=
+      case "$host_os" in
+        aix*)  iconv_flavor=ICONV_FLAVOR_AIX ;;
+        irix*) iconv_flavor=ICONV_FLAVOR_IRIX ;;
+        hpux*) iconv_flavor=ICONV_FLAVOR_HPUX ;;
+        osf*)  iconv_flavor=ICONV_FLAVOR_OSF ;;
+      esac
+      if test -n "$iconv_flavor"; then
+        AC_DEFINE_UNQUOTED([ICONV_FLAVOR], [$iconv_flavor],
+          [Define to a symbolic name denoting the flavor of iconv_open()
+           implementation.])
+        gl_REPLACE_ICONV_OPEN
+      fi
+    fi
+  fi
+])
+
+AC_DEFUN([gl_REPLACE_ICONV_OPEN],
+[
+  gl_REPLACE_ICONV_H
+  REPLACE_ICONV_OPEN=1
+  AC_LIBOBJ([iconv_open])
+])
+
+AC_DEFUN([gl_FUNC_ICONV_OPEN_UTF],
+[
+  AC_REQUIRE([gl_FUNC_ICONV_OPEN])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+  if test "$am_cv_func_iconv" = yes; then
+    if test -n "$am_cv_proto_iconv_arg1"; then
+      ICONV_CONST="const"
+    else
+      ICONV_CONST=
+    fi
+    AC_SUBST([ICONV_CONST])
+    AC_CACHE_CHECK([whether iconv supports conversion between UTF-8 and UTF-{16,32}{BE,LE}],
+      [gl_cv_func_iconv_supports_utf],
+      [
+        save_LIBS="$LIBS"
+        LIBS="$LIBS $LIBICONV"
+        AC_TRY_RUN([
+#include <iconv.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define ASSERT(expr) if (!(expr)) return 1;
+int main ()
+{
+  /* Test conversion from UTF-8 to UTF-16BE with no errors.  */
+  {
+    static const char input[] =
+      "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+    static const char expected[] =
+      "\000J\000a\000p\000a\000n\000e\000s\000e\000 \000(\145\345\147\054\212\236\000)\000 \000[\330\065\335\015\330\065\335\036\330\065\335\055\000]";
+    iconv_t cd;
+    char buf[100];
+    const char *inptr;
+    size_t inbytesleft;
+    char *outptr;
+    size_t outbytesleft;
+    size_t res;
+    cd = iconv_open ("UTF-16BE", "UTF-8");
+    ASSERT (cd != (iconv_t)(-1));
+    inptr = input;
+    inbytesleft = sizeof (input) - 1;
+    outptr = buf;
+    outbytesleft = sizeof (buf);
+    res = iconv (cd,
+                (ICONV_CONST char **) &inptr, &inbytesleft,
+                &outptr, &outbytesleft);
+    ASSERT (res == 0 && inbytesleft == 0);
+    ASSERT (outptr == buf + (sizeof (expected) - 1));
+    ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+    ASSERT (iconv_close (cd) == 0);
+  }
+  /* Test conversion from UTF-8 to UTF-16LE with no errors.  */
+  {
+    static const char input[] =
+      "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+    static const char expected[] =
+      "J\000a\000p\000a\000n\000e\000s\000e\000 \000(\000\345\145\054\147\236\212)\000 \000[\000\065\330\015\335\065\330\036\335\065\330\055\335]\000";
+    iconv_t cd;
+    char buf[100];
+    const char *inptr;
+    size_t inbytesleft;
+    char *outptr;
+    size_t outbytesleft;
+    size_t res;
+    cd = iconv_open ("UTF-16LE", "UTF-8");
+    ASSERT (cd != (iconv_t)(-1));
+    inptr = input;
+    inbytesleft = sizeof (input) - 1;
+    outptr = buf;
+    outbytesleft = sizeof (buf);
+    res = iconv (cd,
+                (ICONV_CONST char **) &inptr, &inbytesleft,
+                &outptr, &outbytesleft);
+    ASSERT (res == 0 && inbytesleft == 0);
+    ASSERT (outptr == buf + (sizeof (expected) - 1));
+    ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+    ASSERT (iconv_close (cd) == 0);
+  }
+  /* Test conversion from UTF-8 to UTF-32BE with no errors.  */
+  {
+    static const char input[] =
+      "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+    static const char expected[] =
+      "\000\000\000J\000\000\000a\000\000\000p\000\000\000a\000\000\000n\000\000\000e\000\000\000s\000\000\000e\000\000\000 \000\000\000(\000\000\145\345\000\000\147\054\000\000\212\236\000\000\000)\000\000\000 \000\000\000[\000\001\325\015\000\001\325\036\000\001\325\055\000\000\000]";
+    iconv_t cd;
+    char buf[100];
+    const char *inptr;
+    size_t inbytesleft;
+    char *outptr;
+    size_t outbytesleft;
+    size_t res;
+    cd = iconv_open ("UTF-32BE", "UTF-8");
+    ASSERT (cd != (iconv_t)(-1));
+    inptr = input;
+    inbytesleft = sizeof (input) - 1;
+    outptr = buf;
+    outbytesleft = sizeof (buf);
+    res = iconv (cd,
+                (ICONV_CONST char **) &inptr, &inbytesleft,
+                &outptr, &outbytesleft);
+    ASSERT (res == 0 && inbytesleft == 0);
+    ASSERT (outptr == buf + (sizeof (expected) - 1));
+    ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+    ASSERT (iconv_close (cd) == 0);
+  }
+  /* Test conversion from UTF-8 to UTF-32LE with no errors.  */
+  {
+    static const char input[] =
+      "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+    static const char expected[] =
+      "J\000\000\000a\000\000\000p\000\000\000a\000\000\000n\000\000\000e\000\000\000s\000\000\000e\000\000\000 \000\000\000(\000\000\000\345\145\000\000\054\147\000\000\236\212\000\000)\000\000\000 \000\000\000[\000\000\000\015\325\001\000\036\325\001\000\055\325\001\000]\000\000\000";
+    iconv_t cd;
+    char buf[100];
+    const char *inptr;
+    size_t inbytesleft;
+    char *outptr;
+    size_t outbytesleft;
+    size_t res;
+    cd = iconv_open ("UTF-32LE", "UTF-8");
+    ASSERT (cd != (iconv_t)(-1));
+    inptr = input;
+    inbytesleft = sizeof (input) - 1;
+    outptr = buf;
+    outbytesleft = sizeof (buf);
+    res = iconv (cd,
+                (ICONV_CONST char **) &inptr, &inbytesleft,
+                &outptr, &outbytesleft);
+    ASSERT (res == 0 && inbytesleft == 0);
+    ASSERT (outptr == buf + (sizeof (expected) - 1));
+    ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+    ASSERT (iconv_close (cd) == 0);
+  }
+  /* Test conversion from UTF-16BE to UTF-8 with no errors.
+     This test fails on NetBSD 3.0.  */
+  {
+    static const char input[] =
+      "\000J\000a\000p\000a\000n\000e\000s\000e\000 \000(\145\345\147\054\212\236\000)\000 \000[\330\065\335\015\330\065\335\036\330\065\335\055\000]";
+    static const char expected[] =
+      "Japanese (\346\227\245\346\234\254\350\252\236) [\360\235\224\215\360\235\224\236\360\235\224\255]";
+    iconv_t cd;
+    char buf[100];
+    const char *inptr;
+    size_t inbytesleft;
+    char *outptr;
+    size_t outbytesleft;
+    size_t res;
+    cd = iconv_open ("UTF-8", "UTF-16BE");
+    ASSERT (cd != (iconv_t)(-1));
+    inptr = input;
+    inbytesleft = sizeof (input) - 1;
+    outptr = buf;
+    outbytesleft = sizeof (buf);
+    res = iconv (cd,
+                (ICONV_CONST char **) &inptr, &inbytesleft,
+                &outptr, &outbytesleft);
+    ASSERT (res == 0 && inbytesleft == 0);
+    ASSERT (outptr == buf + (sizeof (expected) - 1));
+    ASSERT (memcmp (buf, expected, sizeof (expected) - 1) == 0);
+    ASSERT (iconv_close (cd) == 0);
+  }
+  return 0;
+}], [gl_cv_func_iconv_supports_utf=yes], [gl_cv_func_iconv_supports_utf=no],
+          [
+           dnl We know that GNU libiconv, GNU libc, and Solaris >= 9 do.
+           dnl OSF/1 5.1 has these encodings, but inserts a BOM in the "to"
+           dnl direction.
+           gl_cv_func_iconv_supports_utf=no
+           if test $gl_func_iconv_gnu = yes; then
+             gl_cv_func_iconv_supports_utf=yes
+           else
+changequote(,)dnl
+             case "$host_os" in
+               solaris2.9 | solaris2.1[0-9]) gl_cv_func_iconv_supports_utf=yes ;;
+             esac
+changequote([,])dnl
+           fi
+          ])
+        LIBS="$save_LIBS"
+      ])
+    if test $gl_cv_func_iconv_supports_utf = no; then
+      REPLACE_ICONV_UTF=1
+      AC_DEFINE([REPLACE_ICONV_UTF], [1],
+        [Define if the iconv() functions are enhanced to handle the UTF-{16,32}{BE,LE} encodings.])
+      REPLACE_ICONV=1
+      gl_REPLACE_ICONV_OPEN
+      AC_LIBOBJ([iconv])
+      AC_LIBOBJ([iconv_close])
+    fi
+  fi
+])
diff --git a/lib/gl/m4/ld-output-def.m4 b/lib/gl/m4/ld-output-def.m4
new file mode 100644 (file)
index 0000000..1aa6a6f
--- /dev/null
@@ -0,0 +1,29 @@
+# ld-output-def.m4 serial 2
+dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# gl_LD_OUTPUT_DEF()
+# -------------
+# Check if linker supports -Wl,--output-def and define automake
+# conditional HAVE_LD_OUTPUT_DEF if it is.
+AC_DEFUN([gl_LD_OUTPUT_DEF],
+[
+  AC_CACHE_CHECK([if gcc/ld supports -Wl,--output-def],
+    [gl_cv_ld_output_def],
+    [if test "$enable_shared" = no; then
+       gl_cv_ld_output_def="not needed, shared libraries are disabled"
+     else
+       gl_ldflags_save=$LDFLAGS
+       LDFLAGS="-Wl,--output-def,conftest.def"
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+                   [gl_cv_ld_output_def=yes],
+                   [gl_cv_ld_output_def=no])
+       rm -f conftest.def
+       LDFLAGS="$gl_ldflags_save"
+     fi])
+  AM_CONDITIONAL([HAVE_LD_OUTPUT_DEF], test "x$gl_cv_ld_output_def" = "xyes")
+])
diff --git a/lib/gl/m4/ld-version-script.m4 b/lib/gl/m4/ld-version-script.m4
new file mode 100644 (file)
index 0000000..a97888f
--- /dev/null
@@ -0,0 +1,44 @@
+# ld-version-script.m4 serial 1
+dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# FIXME: The test below returns a false positive for mingw
+# cross-compiles, 'local:' statements does not reduce number of
+# exported symbols in a DLL.  Use --disable-ld-version-script to work
+# around the problem.
+
+# gl_LD_VERSION_SCRIPT
+# --------------------
+# Check if LD supports linker scripts, and define automake conditional
+# HAVE_LD_VERSION_SCRIPT if so.
+AC_DEFUN([gl_LD_VERSION_SCRIPT],
+[
+  AC_ARG_ENABLE([ld-version-script],
+    AS_HELP_STRING([--enable-ld-version-script],
+      [enable linker version script (default is enabled when possible)]),
+      [have_ld_version_script=$enableval], [])
+  if test -z "$have_ld_version_script"; then
+    AC_MSG_CHECKING([if LD -Wl,--version-script works])
+    save_LDFLAGS="$LDFLAGS"
+    LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
+    cat > conftest.map <<EOF
+VERS_1 {
+       global: sym;
+};
+
+VERS_2 {
+        global: sym;
+} VERS_1;
+EOF
+    AC_LINK_IFELSE(AC_LANG_PROGRAM([], []),
+                   [have_ld_version_script=yes], [have_ld_version_script=no])
+    rm -f conftest.map
+    LDFLAGS="$save_LDFLAGS"
+    AC_MSG_RESULT($have_ld_version_script)
+  fi
+  AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
+])
diff --git a/lib/gl/m4/locale-fr.m4 b/lib/gl/m4/locale-fr.m4
new file mode 100644 (file)
index 0000000..653a5bc
--- /dev/null
@@ -0,0 +1,185 @@
+# locale-fr.m4 serial 11
+dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a french locale with traditional encoding.
+AC_DEFUN([gt_LOCALE_FR],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
+     one byte long. This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the usual locale name.
+      if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_fr=fr_FR
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_fr=fr_FR.ISO-8859-1
+        else
+          # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
+          if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr=fr_FR.ISO8859-1
+          else
+            # Test for the HP-UX locale name.
+            if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_fr=fr_FR.iso88591
+            else
+              # Test for the Solaris 7 locale name.
+              if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_fr=fr
+              else
+                # None found.
+                gt_cv_locale_fr=none
+              fi
+            fi
+          fi
+        fi
+      fi
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_FR=$gt_cv_locale_fr
+  AC_SUBST([LOCALE_FR])
+])
+
+dnl Determine the name of a french locale with UTF-8 encoding.
+AC_DEFUN([gt_LOCALE_FR_UTF8],
+[
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check whether in the abbreviation of the second month, the second
+     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
+    return 1;
+#endif
+  /* Check whether the decimal separator is a comma.
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
+     are nl_langinfo(RADIXCHAR) are both ".".  */
+  if (localeconv () ->decimal_point[0] != ',') return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the usual locale name.
+      if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_fr_utf8=fr_FR
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_fr_utf8=fr_FR.UTF-8
+        else
+          # Test for the Solaris 7 locale name.
+          if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_fr_utf8=fr.UTF-8
+          else
+            # None found.
+            gt_cv_locale_fr_utf8=none
+          fi
+        fi
+      fi
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
+  AC_SUBST([LOCALE_FR_UTF8])
+])
diff --git a/lib/gl/m4/locale-tr.m4 b/lib/gl/m4/locale-tr.m4
new file mode 100644 (file)
index 0000000..6162f65
--- /dev/null
@@ -0,0 +1,97 @@
+# locale-tr.m4 serial 6
+dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a turkish locale with UTF-8 encoding.
+AC_DEFUN([gt_LOCALE_TR_UTF8],
+[
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a turkish Unicode locale], [gt_cv_locale_tr_utf8], [
+    AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  But BeOS does not
+     implement the Turkish upper-/lowercase mappings.  Therefore, let this
+     program return 1 on BeOS.  */
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
+     On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
+     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
+     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
+     some unit tests fail.  */
+#if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
+      return 1;
+  }
+#endif
+#ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+#endif
+  /* Check whether in the abbreviation of the eighth month, the second
+     character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is
+     two bytes long, with UTF-8 encoding.  */
+  t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19;
+  if (strftime (buf, sizeof (buf), "%b", &t) < 4
+      || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f)
+    return 1;
+  /* Check whether the upper-/lowercase mappings are as expected for
+     Turkish.  */
+  if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i'
+      || towupper(0x0131) != 'I' || towlower ('I') != 0x0131)
+    return 1;
+  return 0;
+}
+changequote([,])dnl
+      ])])
+    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+      # configure script would override the LC_ALL setting. Likewise for
+      # LC_CTYPE, which is also set at the beginning of the configure script.
+      # Test for the usual locale name.
+      if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+        gt_cv_locale_tr_utf8=tr_TR
+      else
+        # Test for the locale name with explicit encoding suffix.
+        if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_tr_utf8=tr_TR.UTF-8
+        else
+          # Test for the Solaris 7 locale name.
+          if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_tr_utf8=tr.UTF-8
+          else
+            # None found.
+            gt_cv_locale_tr_utf8=none
+          fi
+        fi
+      fi
+    else
+      gt_cv_locale_tr_utf8=none
+    fi
+    rm -fr conftest*
+  ])
+  LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8
+  AC_SUBST([LOCALE_TR_UTF8])
+])
diff --git a/lib/gl/m4/multiarch.m4 b/lib/gl/m4/multiarch.m4
new file mode 100644 (file)
index 0000000..ec377ba
--- /dev/null
@@ -0,0 +1,65 @@
+# multiarch.m4 serial 5
+dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Determine whether the compiler is or may be producing universal binaries.
+#
+# On MacOS X 10.5 and later systems, the user can create libraries and
+# executables that work on multiple system types--known as "fat" or
+# "universal" binaries--by specifying multiple '-arch' options to the
+# compiler but only a single '-arch' option to the preprocessor.  Like
+# this:
+#
+#     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+#                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+#                 CPP="gcc -E" CXXCPP="g++ -E"
+#
+# Detect this situation and set the macro AA_APPLE_UNIVERSAL_BUILD at the
+# beginning of config.h and set APPLE_UNIVERSAL_BUILD accordingly.
+
+AC_DEFUN_ONCE([gl_MULTIARCH],
+[
+  dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN.
+  gl_cv_c_multiarch=no
+  AC_COMPILE_IFELSE(
+    [AC_LANG_SOURCE(
+      [[#ifndef __APPLE_CC__
+         not a universal capable compiler
+        #endif
+        typedef int dummy;
+      ]])],
+    [
+     dnl Check for potential -arch flags.  It is not universal unless
+     dnl there are at least two -arch flags with different values.
+     arch=
+     prev=
+     for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+       if test -n "$prev"; then
+         case $word in
+           i?86 | x86_64 | ppc | ppc64)
+             if test -z "$arch" || test "$arch" = "$word"; then
+               arch="$word"
+             else
+               gl_cv_c_multiarch=yes
+             fi
+             ;;
+         esac
+         prev=
+       else
+         if test "x$word" = "x-arch"; then
+           prev=arch
+         fi
+       fi
+     done
+    ])
+  if test $gl_cv_c_multiarch = yes; then
+    AC_DEFINE([AA_APPLE_UNIVERSAL_BUILD], [1],
+      [Define if the compiler is building for multiple architectures of Apple platforms at once.])
+    APPLE_UNIVERSAL_BUILD=1
+  else
+    APPLE_UNIVERSAL_BUILD=0
+  fi
+  AC_SUBST([APPLE_UNIVERSAL_BUILD])
+])
diff --git a/lib/gl/m4/stdbool.m4 b/lib/gl/m4/stdbool.m4
new file mode 100644 (file)
index 0000000..57c804a
--- /dev/null
@@ -0,0 +1,115 @@
+# Check for stdbool.h that conforms to C99.
+
+dnl Copyright (C) 2002-2006, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdbool.h> if it is not supported.
+
+AC_DEFUN([AM_STDBOOL_H],
+[
+  AC_REQUIRE([AC_HEADER_STDBOOL])
+
+  # Define two additional variables used in the Makefile substitution.
+
+  if test "$ac_cv_header_stdbool_h" = yes; then
+    STDBOOL_H=''
+  else
+    STDBOOL_H='stdbool.h'
+  fi
+  AC_SUBST([STDBOOL_H])
+
+  if test "$ac_cv_type__Bool" = yes; then
+    HAVE__BOOL=1
+  else
+    HAVE__BOOL=0
+  fi
+  AC_SUBST([HAVE__BOOL])
+])
+
+# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
+AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
+
+# This macro is only needed in autoconf <= 2.59.  Newer versions of autoconf
+# have this macro built-in.
+
+AC_DEFUN([AC_HEADER_STDBOOL],
+  [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
+     [ac_cv_header_stdbool_h],
+     [AC_TRY_COMPILE(
+       [
+         #include <stdbool.h>
+         #ifndef bool
+          "error: bool is not defined"
+         #endif
+         #ifndef false
+          "error: false is not defined"
+         #endif
+         #if false
+          "error: false is not 0"
+         #endif
+         #ifndef true
+          "error: true is not defined"
+         #endif
+         #if true != 1
+          "error: true is not 1"
+         #endif
+         #ifndef __bool_true_false_are_defined
+          "error: __bool_true_false_are_defined is not defined"
+         #endif
+
+         struct s { _Bool s: 1; _Bool t; } s;
+
+         char a[true == 1 ? 1 : -1];
+         char b[false == 0 ? 1 : -1];
+         char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+         char d[(bool) 0.5 == true ? 1 : -1];
+         bool e = &s;
+         char f[(_Bool) 0.0 == false ? 1 : -1];
+         char g[true];
+         char h[sizeof (_Bool)];
+         char i[sizeof s.t];
+         enum { j = false, k = true, l = false * true, m = true * 256 };
+         _Bool n[m];
+         char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+         char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+         #if defined __xlc__ || defined __GNUC__
+          /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+             reported by James Lemley on 2005-10-05; see
+             http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+             This test is not quite right, since xlc is allowed to
+             reject this program, as the initializer for xlcbug is
+             not one of the forms that C requires support for.
+             However, doing the test right would require a run-time
+             test, and that would make cross-compilation harder.
+             Let us hope that IBM fixes the xlc bug, and also adds
+             support for this kind of constant expression.  In the
+             meantime, this test will reject xlc, which is OK, since
+             our stdbool.h substitute should suffice.  We also test
+             this with GCC, where it should work, to detect more
+             quickly whether someone messes up the test in the
+             future.  */
+          char digs[] = "0123456789";
+          int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+         #endif
+         /* Catch a bug in an HP-UX C compiler.  See
+            http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+            http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+          */
+         _Bool q = true;
+         _Bool *pq = &q;
+       ],
+       [
+         *pq |= q;
+         *pq |= ! q;
+         /* Refer to every declared value, to avoid compiler optimizations.  */
+         return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                 + !m + !n + !o + !p + !q + !pq);
+       ],
+       [ac_cv_header_stdbool_h=yes],
+       [ac_cv_header_stdbool_h=no])])
+   AC_CHECK_TYPES([_Bool])
+   if test $ac_cv_header_stdbool_h = yes; then
+     AC_DEFINE([HAVE_STDBOOL_H], [1], [Define to 1 if stdbool.h conforms to C99.])
+   fi])
diff --git a/lib/gl/m4/stdint.m4 b/lib/gl/m4/stdint.m4
new file mode 100644 (file)
index 0000000..a2e8bdd
--- /dev/null
@@ -0,0 +1,472 @@
+# stdint.m4 serial 34
+dnl Copyright (C) 2001-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert and Bruno Haible.
+dnl Test whether <stdint.h> is supported or must be substituted.
+
+AC_DEFUN([gl_STDINT_H],
+[
+  AC_PREREQ([2.59])dnl
+
+  dnl Check for long long int and unsigned long long int.
+  AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+  if test $ac_cv_type_long_long_int = yes; then
+    HAVE_LONG_LONG_INT=1
+  else
+    HAVE_LONG_LONG_INT=0
+  fi
+  AC_SUBST([HAVE_LONG_LONG_INT])
+  AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    HAVE_UNSIGNED_LONG_LONG_INT=1
+  else
+    HAVE_UNSIGNED_LONG_LONG_INT=0
+  fi
+  AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
+
+  dnl Check for <inttypes.h>.
+  dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
+  if test $ac_cv_header_inttypes_h = yes; then
+    HAVE_INTTYPES_H=1
+  else
+    HAVE_INTTYPES_H=0
+  fi
+  AC_SUBST([HAVE_INTTYPES_H])
+
+  dnl Check for <sys/types.h>.
+  dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
+  if test $ac_cv_header_sys_types_h = yes; then
+    HAVE_SYS_TYPES_H=1
+  else
+    HAVE_SYS_TYPES_H=0
+  fi
+  AC_SUBST([HAVE_SYS_TYPES_H])
+
+  gl_CHECK_NEXT_HEADERS([stdint.h])
+  if test $ac_cv_header_stdint_h = yes; then
+    HAVE_STDINT_H=1
+  else
+    HAVE_STDINT_H=0
+  fi
+  AC_SUBST([HAVE_STDINT_H])
+
+  dnl Now see whether we need a substitute <stdint.h>.
+  if test $ac_cv_header_stdint_h = yes; then
+    AC_CACHE_CHECK([whether stdint.h conforms to C99],
+      [gl_cv_header_working_stdint_h],
+      [gl_cv_header_working_stdint_h=no
+       AC_COMPILE_IFELSE([
+         AC_LANG_PROGRAM([[
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>.  */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+]
+gl_STDINT_INCLUDES
+[
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+struct s {
+  int check_PTRDIFF:
+      PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+      && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+      ? 1 : -1;
+  /* Detect bug in FreeBSD 6.0 / ia64.  */
+  int check_SIG_ATOMIC:
+      SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+      && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+      ? 1 : -1;
+  int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+  int check_WCHAR:
+      WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+      && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+      ? 1 : -1;
+  /* Detect bug in mingw.  */
+  int check_WINT:
+      WINT_MIN == TYPE_MINIMUM (wint_t)
+      && WINT_MAX == TYPE_MAXIMUM (wint_t)
+      ? 1 : -1;
+
+  /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others.  */
+  int check_UINT8_C:
+        (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+  int check_UINT16_C:
+        (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+  /* Detect bugs in OpenBSD 3.9 stdint.h.  */
+#ifdef UINT8_MAX
+  int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+  int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+  int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+  int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+  int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+  int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+  int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+  int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+  int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+  int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+  int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+  int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+  int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+  int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+  int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+         ]])],
+         [dnl Determine whether the various *_MIN, *_MAX macros are usable
+          dnl in preprocessor expression. We could do it by compiling a test
+          dnl program for each of these macros. It is faster to run a program
+          dnl that inspects the macro expansion.
+          dnl This detects a bug on HP-UX 11.23/ia64.
+          AC_RUN_IFELSE([
+            AC_LANG_PROGRAM([[
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+]
+gl_STDINT_INCLUDES
+[
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+  {
+#ifdef INT8_MAX
+    MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+    MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+    MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+    MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+    MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+    MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+    MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+    MVAL (UINT64_MAX),
+#endif
+    NULL
+  };
+]], [[
+  const char **mv;
+  for (mv = macro_values; *mv != NULL; mv++)
+    {
+      const char *value = *mv;
+      /* Test whether it looks like a cast expression.  */
+      if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+          || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+          || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+          || strncmp (value, "((int)"/*)*/, 6) == 0
+          || strncmp (value, "((signed short)"/*)*/, 15) == 0
+          || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+        return 1;
+    }
+  return 0;
+]])],
+              [gl_cv_header_working_stdint_h=yes],
+              [],
+              [dnl When cross-compiling, assume it works.
+               gl_cv_header_working_stdint_h=yes
+              ])
+         ])
+      ])
+  fi
+  if test "$gl_cv_header_working_stdint_h" = yes; then
+    STDINT_H=
+  else
+    dnl Check for <sys/inttypes.h>, and for
+    dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
+    AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
+    if test $ac_cv_header_sys_inttypes_h = yes; then
+      HAVE_SYS_INTTYPES_H=1
+    else
+      HAVE_SYS_INTTYPES_H=0
+    fi
+    AC_SUBST([HAVE_SYS_INTTYPES_H])
+    if test $ac_cv_header_sys_bitypes_h = yes; then
+      HAVE_SYS_BITYPES_H=1
+    else
+      HAVE_SYS_BITYPES_H=0
+    fi
+    AC_SUBST([HAVE_SYS_BITYPES_H])
+
+    dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
+    dnl character support).
+    AC_CHECK_HEADERS_ONCE([wchar.h])
+
+    gl_STDINT_TYPE_PROPERTIES
+    STDINT_H=stdint.h
+  fi
+  AC_SUBST([STDINT_H])
+])
+
+dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
+dnl Determine the size of each of the given types in bits.
+AC_DEFUN([gl_STDINT_BITSIZEOF],
+[
+  dnl Use a shell loop, to avoid bloating configure, and
+  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+  dnl   config.h.in,
+  dnl - extra AC_SUBST calls, so that the right substitutions are made.
+  m4_foreach_w([gltype], [$1],
+    [AH_TEMPLATE([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+       [Define to the number of bits in type ']gltype['.])])
+  for gltype in $1 ; do
+    AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
+      [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
+         [$2
+#include <limits.h>], [result=unknown])
+       eval gl_cv_bitsizeof_${gltype}=\$result
+      ])
+    eval result=\$gl_cv_bitsizeof_${gltype}
+    if test $result = unknown; then
+      dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
+      dnl do a syntax check even on unused #if conditions and give an error
+      dnl on valid C code like this:
+      dnl   #if 0
+      dnl   # if  > 32
+      dnl   # endif
+      dnl   #endif
+      result=0
+    fi
+    GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
+    eval BITSIZEOF_${GLTYPE}=\$result
+  done
+  m4_foreach_w([gltype], [$1],
+    [AC_SUBST([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
+dnl Determine the signedness of each of the given types.
+dnl Define HAVE_SIGNED_TYPE if type is signed.
+AC_DEFUN([gl_CHECK_TYPES_SIGNED],
+[
+  dnl Use a shell loop, to avoid bloating configure, and
+  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+  dnl   config.h.in,
+  dnl - extra AC_SUBST calls, so that the right substitutions are made.
+  m4_foreach_w([gltype], [$1],
+    [AH_TEMPLATE([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+       [Define to 1 if ']gltype[' is a signed integer type.])])
+  for gltype in $1 ; do
+    AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([$2[
+            int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
+         result=yes, result=no)
+       eval gl_cv_type_${gltype}_signed=\$result
+      ])
+    eval result=\$gl_cv_type_${gltype}_signed
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    if test "$result" = yes; then
+      AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1])
+      eval HAVE_SIGNED_${GLTYPE}=1
+    else
+      eval HAVE_SIGNED_${GLTYPE}=0
+    fi
+  done
+  m4_foreach_w([gltype], [$1],
+    [AC_SUBST([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
+dnl Determine the suffix to use for integer constants of the given types.
+dnl Define t_SUFFIX for each such type.
+AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
+[
+  dnl Use a shell loop, to avoid bloating configure, and
+  dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+  dnl   config.h.in,
+  dnl - extra AC_SUBST calls, so that the right substitutions are made.
+  m4_foreach_w([gltype], [$1],
+    [AH_TEMPLATE(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
+       [Define to l, ll, u, ul, ull, etc., as suitable for
+        constants of type ']gltype['.])])
+  for gltype in $1 ; do
+    AC_CACHE_CHECK([for $gltype integer literal suffix],
+      [gl_cv_type_${gltype}_suffix],
+      [eval gl_cv_type_${gltype}_suffix=no
+       eval result=\$gl_cv_type_${gltype}_signed
+       if test "$result" = yes; then
+         glsufu=
+       else
+         glsufu=u
+       fi
+       for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+         case $glsuf in
+           '')  gltype1='int';;
+           l)  gltype1='long int';;
+           ll) gltype1='long long int';;
+           i64)        gltype1='__int64';;
+           u)  gltype1='unsigned int';;
+           ul) gltype1='unsigned long int';;
+           ull)        gltype1='unsigned long long int';;
+           ui64)gltype1='unsigned __int64';;
+         esac
+         AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM([$2[
+              extern $gltype foo;
+              extern $gltype1 foo;]])],
+           [eval gl_cv_type_${gltype}_suffix=\$glsuf])
+         eval result=\$gl_cv_type_${gltype}_suffix
+         test "$result" != no && break
+       done])
+    GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+    eval result=\$gl_cv_type_${gltype}_suffix
+    test "$result" = no && result=
+    eval ${GLTYPE}_SUFFIX=\$result
+    AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
+  done
+  m4_foreach_w([gltype], [$1],
+    [AC_SUBST(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
+])
+
+dnl gl_STDINT_INCLUDES
+AC_DEFUN([gl_STDINT_INCLUDES],
+[[
+  /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+     included before <wchar.h>.  */
+  #include <stddef.h>
+  #include <signal.h>
+  #if HAVE_WCHAR_H
+  # include <stdio.h>
+  # include <time.h>
+  # include <wchar.h>
+  #endif
+]])
+
+dnl gl_STDINT_TYPE_PROPERTIES
+dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
+dnl of interest to stdint.in.h.
+AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
+[
+  AC_REQUIRE([gl_MULTIARCH])
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+    gl_STDINT_BITSIZEOF([ptrdiff_t size_t],
+      [gl_STDINT_INCLUDES])
+  fi
+  gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t],
+    [gl_STDINT_INCLUDES])
+  gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
+    [gl_STDINT_INCLUDES])
+  gl_cv_type_ptrdiff_t_signed=yes
+  gl_cv_type_size_t_signed=no
+  if test $APPLE_UNIVERSAL_BUILD = 0; then
+    gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t],
+      [gl_STDINT_INCLUDES])
+  fi
+  gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
+    [gl_STDINT_INCLUDES])
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+  AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
+
+# Hey Emacs!
+# Local Variables:
+# indent-tabs-mode: nil
+# End:
diff --git a/lib/gl/m4/strverscmp.m4 b/lib/gl/m4/strverscmp.m4
new file mode 100644 (file)
index 0000000..becce2b
--- /dev/null
@@ -0,0 +1,23 @@
+# strverscmp.m4 serial 7
+dnl Copyright (C) 2002, 2005-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRVERSCMP],
+[
+  dnl Persuade glibc <string.h> to declare strverscmp().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+  AC_REPLACE_FUNCS([strverscmp])
+  if test $ac_cv_func_strverscmp = no; then
+    gl_PREREQ_STRVERSCMP
+    HAVE_STRVERSCMP=0
+  fi
+])
+
+# Prerequisites of lib/strverscmp.c.
+AC_DEFUN([gl_PREREQ_STRVERSCMP], [
+  :
+])
diff --git a/lib/gl/m4/wchar.m4 b/lib/gl/m4/wchar.m4
new file mode 100644 (file)
index 0000000..2e52a82
--- /dev/null
@@ -0,0 +1,100 @@
+dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
+
+dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Eric Blake.
+
+# wchar.m4 serial 23
+
+AC_DEFUN([gl_WCHAR_H],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+  AC_CACHE_CHECK([whether <wchar.h> is standalone],
+    [gl_cv_header_wchar_h_standalone],
+    [AC_COMPILE_IFELSE([[#include <wchar.h>
+wchar_t w;]],
+      [gl_cv_header_wchar_h_standalone=yes],
+      [gl_cv_header_wchar_h_standalone=no])])
+
+  AC_REQUIRE([gt_TYPE_WINT_T])
+  if test $gt_cv_c_wint_t = yes; then
+    HAVE_WINT_T=1
+  else
+    HAVE_WINT_T=0
+  fi
+  AC_SUBST([HAVE_WINT_T])
+
+  if test $gl_cv_header_wchar_h_standalone != yes || test $gt_cv_c_wint_t != yes; then
+    WCHAR_H=wchar.h
+  fi
+
+  dnl Prepare for creating substitute <wchar.h>.
+  dnl Do it always: WCHAR_H may be empty here but can be set later.
+  dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
+  dnl character support).
+  AC_CHECK_HEADERS_ONCE([wchar.h])
+  if test $ac_cv_header_wchar_h = yes; then
+    HAVE_WCHAR_H=1
+  else
+    HAVE_WCHAR_H=0
+  fi
+  AC_SUBST([HAVE_WCHAR_H])
+  gl_CHECK_NEXT_HEADERS([wchar.h])
+])
+
+dnl Unconditionally enables the replacement of <wchar.h>.
+AC_DEFUN([gl_REPLACE_WCHAR_H],
+[
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+  WCHAR_H=wchar.h
+])
+
+AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_WCHAR_H_DEFAULTS],
+[
+  GNULIB_BTOWC=0;      AC_SUBST([GNULIB_BTOWC])
+  GNULIB_WCTOB=0;      AC_SUBST([GNULIB_WCTOB])
+  GNULIB_MBSINIT=0;    AC_SUBST([GNULIB_MBSINIT])
+  GNULIB_MBRTOWC=0;    AC_SUBST([GNULIB_MBRTOWC])
+  GNULIB_MBRLEN=0;     AC_SUBST([GNULIB_MBRLEN])
+  GNULIB_MBSRTOWCS=0;  AC_SUBST([GNULIB_MBSRTOWCS])
+  GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
+  GNULIB_WCRTOMB=0;    AC_SUBST([GNULIB_WCRTOMB])
+  GNULIB_WCSRTOMBS=0;  AC_SUBST([GNULIB_WCSRTOMBS])
+  GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
+  GNULIB_WCWIDTH=0;    AC_SUBST([GNULIB_WCWIDTH])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_BTOWC=1;         AC_SUBST([HAVE_BTOWC])
+  HAVE_MBSINIT=1;       AC_SUBST([HAVE_MBSINIT])
+  HAVE_MBRTOWC=1;       AC_SUBST([HAVE_MBRTOWC])
+  HAVE_MBRLEN=1;        AC_SUBST([HAVE_MBRLEN])
+  HAVE_MBSRTOWCS=1;     AC_SUBST([HAVE_MBSRTOWCS])
+  HAVE_MBSNRTOWCS=1;    AC_SUBST([HAVE_MBSNRTOWCS])
+  HAVE_WCRTOMB=1;       AC_SUBST([HAVE_WCRTOMB])
+  HAVE_WCSRTOMBS=1;     AC_SUBST([HAVE_WCSRTOMBS])
+  HAVE_WCSNRTOMBS=1;    AC_SUBST([HAVE_WCSNRTOMBS])
+  HAVE_DECL_WCTOB=1;    AC_SUBST([HAVE_DECL_WCTOB])
+  HAVE_DECL_WCWIDTH=1;  AC_SUBST([HAVE_DECL_WCWIDTH])
+  REPLACE_MBSTATE_T=0;  AC_SUBST([REPLACE_MBSTATE_T])
+  REPLACE_BTOWC=0;      AC_SUBST([REPLACE_BTOWC])
+  REPLACE_WCTOB=0;      AC_SUBST([REPLACE_WCTOB])
+  REPLACE_MBSINIT=0;    AC_SUBST([REPLACE_MBSINIT])
+  REPLACE_MBRTOWC=0;    AC_SUBST([REPLACE_MBRTOWC])
+  REPLACE_MBRLEN=0;     AC_SUBST([REPLACE_MBRLEN])
+  REPLACE_MBSRTOWCS=0;  AC_SUBST([REPLACE_MBSRTOWCS])
+  REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS])
+  REPLACE_WCRTOMB=0;    AC_SUBST([REPLACE_WCRTOMB])
+  REPLACE_WCSRTOMBS=0;  AC_SUBST([REPLACE_WCSRTOMBS])
+  REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
+  REPLACE_WCWIDTH=0;    AC_SUBST([REPLACE_WCWIDTH])
+  WCHAR_H='';           AC_SUBST([WCHAR_H])
+])
diff --git a/lib/gl/stdbool.in.h b/lib/gl/stdbool.in.h
new file mode 100644 (file)
index 0000000..45375b3
--- /dev/null
@@ -0,0 +1,119 @@
+/* Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
+   Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_STDBOOL_H
+#define _GL_STDBOOL_H
+
+/* ISO C 99 <stdbool.h> for platforms that lack it.  */
+
+/* Usage suggestions:
+
+   Programs that use <stdbool.h> should be aware of some limitations
+   and standards compliance issues.
+
+   Standards compliance:
+
+       - <stdbool.h> must be #included before 'bool', 'false', 'true'
+         can be used.
+
+       - You cannot assume that sizeof (bool) == 1.
+
+       - Programs should not undefine the macros bool, true, and false,
+         as C99 lists that as an "obsolescent feature".
+
+   Limitations of this substitute, when used in a C89 environment:
+
+       - <stdbool.h> must be #included before the '_Bool' type can be used.
+
+       - You cannot assume that _Bool is a typedef; it might be a macro.
+
+       - Bit-fields of type 'bool' are not supported.  Portable code
+         should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
+
+       - In C99, casts and automatic conversions to '_Bool' or 'bool' are
+         performed in such a way that every nonzero value gets converted
+         to 'true', and zero gets converted to 'false'.  This doesn't work
+         with this substitute.  With this substitute, only the values 0 and 1
+         give the expected result when converted to _Bool' or 'bool'.
+
+   Also, it is suggested that programs use 'bool' rather than '_Bool';
+   this isn't required, but 'bool' is more common.  */
+
+
+/* 7.16. Boolean type and values */
+
+/* BeOS <sys/socket.h> already #defines false 0, true 1.  We use the same
+   definitions below, but temporarily we have to #undef them.  */
+#if defined __BEOS__ && !defined __HAIKU__
+# include <OS.h> /* defines bool but not _Bool */
+# undef false
+# undef true
+#endif
+
+/* For the sake of symbolic names in gdb, we define true and false as
+   enum constants, not only as macros.
+   It is tempting to write
+      typedef enum { false = 0, true = 1 } _Bool;
+   so that gdb prints values of type 'bool' symbolically. But if we do
+   this, values of type '_Bool' may promote to 'int' or 'unsigned int'
+   (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+   (see ISO C 99 6.3.1.1.(2)).  So we add a negative value to the
+   enum; this ensures that '_Bool' promotes to 'int'.  */
+#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__)
+  /* A compiler known to have 'bool'.  */
+  /* If the compiler already has both 'bool' and '_Bool', we can assume they
+     are the same types.  */
+# if !@HAVE__BOOL@
+typedef bool _Bool;
+# endif
+#else
+# if !defined __GNUC__
+   /* If @HAVE__BOOL@:
+        Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
+        the built-in _Bool type is used.  See
+          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+        Similar bugs are likely with other compilers as well; this file
+        wouldn't be used if <stdbool.h> was working.
+        So we override the _Bool type.
+      If !@HAVE__BOOL@:
+        Need to define _Bool ourselves. As 'signed char' or as an enum type?
+        Use of a typedef, with SunPRO C, leads to a stupid
+          "warning: _Bool is a keyword in ISO C99".
+        Use of an enum type, with IRIX cc, leads to a stupid
+          "warning(1185): enumerated type mixed with another type".
+        Even the existence of an enum type, without a typedef,
+          "Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
+        The only benefit of the enum, debuggability, is not important
+        with these compilers.  So use 'signed char' and no enum.  */
+#  define _Bool signed char
+# else
+   /* With this compiler, trust the _Bool type if the compiler has it.  */
+#  if !@HAVE__BOOL@
+typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+#  endif
+# endif
+#endif
+#define bool _Bool
+
+/* The other macros must be usable in preprocessor directives.  */
+#define false 0
+#define true 1
+#define __bool_true_false_are_defined 1
+
+#endif /* _GL_STDBOOL_H */
diff --git a/lib/gl/stdint.in.h b/lib/gl/stdint.in.h
new file mode 100644 (file)
index 0000000..b63d431
--- /dev/null
@@ -0,0 +1,568 @@
+/* Copyright (C) 2001-2002, 2004-2009 Free Software Foundation, Inc.
+   Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+   This file is part of gnulib.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ */
+
+#ifndef _GL_STDINT_H
+
+/* When including a system file that in turn includes <inttypes.h>,
+   use the system <inttypes.h>, not our substitute.  This avoids
+   problems with (for example) VMS, whose <sys/bitypes.h> includes
+   <inttypes.h>.  */
+#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Get those types that are already defined in other system include
+   files, so that we can "#define int8_t signed char" below without
+   worrying about a later system include file containing a "typedef
+   signed char int8_t;" that will get messed up by our macro.  Our
+   macros should all be consistent with the system versions, except
+   for the "fast" types and macros, which we recommend against using
+   in public interfaces due to compiler differences.  */
+
+#if @HAVE_STDINT_H@
+# if defined __sgi && ! defined __c99
+   /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
+      with "This header file is to be used only for c99 mode compilations"
+      diagnostics.  */
+#  define __STDINT_H__
+# endif
+  /* Other systems may have an incomplete or buggy <stdint.h>.
+     Include it before <inttypes.h>, since any "#include <stdint.h>"
+     in <inttypes.h> would reinclude us, skipping our contents because
+     _GL_STDINT_H is defined.
+     The include_next requires a split double-inclusion guard.  */
+# if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+# endif
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#endif
+
+#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+#define _GL_STDINT_H
+
+/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
+   IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
+   AIX 5.2 <sys/types.h> isn't needed and causes troubles.
+   MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+   relies on the system <stdint.h> definitions, so include
+   <sys/types.h> after @NEXT_STDINT_H@.  */
+#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
+# include <sys/types.h>
+#endif
+
+/* Get LONG_MIN, LONG_MAX, ULONG_MAX.  */
+#include <limits.h>
+
+#if @HAVE_INTTYPES_H@
+  /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
+     int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
+     <inttypes.h> also defines intptr_t and uintptr_t.  */
+# include <inttypes.h>
+#elif @HAVE_SYS_INTTYPES_H@
+  /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+     the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
+# include <sys/inttypes.h>
+#endif
+
+#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
+  /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
+     int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
+     included by <sys/types.h>.  */
+# include <sys/bitypes.h>
+#endif
+
+#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Minimum and maximum values for a integer type under the usual assumption.
+   Return an unspecified value if BITS == 0, adding a check to pacify
+   picky compilers.  */
+
+#define _STDINT_MIN(signed, bits, zero) \
+  ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
+
+#define _STDINT_MAX(signed, bits, zero) \
+  ((signed) \
+   ? ~ _STDINT_MIN (signed, bits, zero) \
+   : /* The expression for the unsigned case.  The subtraction of (signed) \
+       is a nop in the unsigned case and avoids "signed integer overflow" \
+       warnings in the signed case.  */ \
+     ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
+
+/* 7.18.1.1. Exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+#undef int8_t
+#undef uint8_t
+typedef signed char gl_int8_t;
+typedef unsigned char gl_uint8_t;
+#define int8_t gl_int8_t
+#define uint8_t gl_uint8_t
+
+#undef int16_t
+#undef uint16_t
+typedef short int gl_int16_t;
+typedef unsigned short int gl_uint16_t;
+#define int16_t gl_int16_t
+#define uint16_t gl_uint16_t
+
+#undef int32_t
+#undef uint32_t
+typedef int gl_int32_t;
+typedef unsigned int gl_uint32_t;
+#define int32_t gl_int32_t
+#define uint32_t gl_uint32_t
+
+/* Do not undefine int64_t if gnulib is not being used with 64-bit
+   types, since otherwise it breaks platforms like Tandem/NSK.  */
+#if LONG_MAX >> 31 >> 31 == 1
+# undef int64_t
+typedef long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#elif defined _MSC_VER
+# undef int64_t
+typedef __int64 gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#elif @HAVE_LONG_LONG_INT@
+# undef int64_t
+typedef long long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+#endif
+
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# undef uint64_t
+typedef unsigned long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#elif defined _MSC_VER
+# undef uint64_t
+typedef unsigned __int64 gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# undef uint64_t
+typedef unsigned long long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+#endif
+
+/* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
+#define _UINT8_T
+#define _UINT32_T
+#define _UINT64_T
+
+
+/* 7.18.1.2. Minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+#undef int_least8_t
+#undef uint_least8_t
+#undef int_least16_t
+#undef uint_least16_t
+#undef int_least32_t
+#undef uint_least32_t
+#undef int_least64_t
+#undef uint_least64_t
+#define int_least8_t int8_t
+#define uint_least8_t uint8_t
+#define int_least16_t int16_t
+#define uint_least16_t uint16_t
+#define int_least32_t int32_t
+#define uint_least32_t uint32_t
+#ifdef GL_INT64_T
+# define int_least64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_least64_t uint64_t
+#endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+
+/* Note: Other <stdint.h> substitutes may define these types differently.
+   It is not recommended to use these types in public header files. */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  Assume that 'long int'
+   is fast enough for all narrower integers.  */
+
+#undef int_fast8_t
+#undef uint_fast8_t
+#undef int_fast16_t
+#undef uint_fast16_t
+#undef int_fast32_t
+#undef uint_fast32_t
+#undef int_fast64_t
+#undef uint_fast64_t
+typedef long int gl_int_fast8_t;
+typedef unsigned long int gl_uint_fast8_t;
+typedef long int gl_int_fast16_t;
+typedef unsigned long int gl_uint_fast16_t;
+typedef long int gl_int_fast32_t;
+typedef unsigned long int gl_uint_fast32_t;
+#define int_fast8_t gl_int_fast8_t
+#define uint_fast8_t gl_uint_fast8_t
+#define int_fast16_t gl_int_fast16_t
+#define uint_fast16_t gl_uint_fast16_t
+#define int_fast32_t gl_int_fast32_t
+#define uint_fast32_t gl_uint_fast32_t
+#ifdef GL_INT64_T
+# define int_fast64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_fast64_t uint64_t
+#endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+
+#undef intptr_t
+#undef uintptr_t
+typedef long int gl_intptr_t;
+typedef unsigned long int gl_uintptr_t;
+#define intptr_t gl_intptr_t
+#define uintptr_t gl_uintptr_t
+
+/* 7.18.1.5. Greatest-width integer types */
+
+/* Note: These types are compiler dependent. It may be unwise to use them in
+   public header files. */
+
+#undef intmax_t
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+typedef long long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#elif defined GL_INT64_T
+# define intmax_t int64_t
+#else
+typedef long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+#endif
+
+#undef uintmax_t
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+typedef unsigned long long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#elif defined GL_UINT64_T
+# define uintmax_t uint64_t
+#else
+typedef unsigned long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+#endif
+
+/* Verify that intmax_t and uintmax_t have the same size.  Too much code
+   breaks if this is not the case.  If this check fails, the reason is likely
+   to be found in the autoconf macros.  */
+typedef int _verify_intmax_size[2 * (sizeof (intmax_t) == sizeof (uintmax_t)) - 1];
+
+/* 7.18.2. Limits of specified-width integer types */
+
+#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+/* 7.18.2.1. Limits of exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits.  */
+
+#undef INT8_MIN
+#undef INT8_MAX
+#undef UINT8_MAX
+#define INT8_MIN  (~ INT8_MAX)
+#define INT8_MAX  127
+#define UINT8_MAX  255
+
+#undef INT16_MIN
+#undef INT16_MAX
+#undef UINT16_MAX
+#define INT16_MIN  (~ INT16_MAX)
+#define INT16_MAX  32767
+#define UINT16_MAX  65535
+
+#undef INT32_MIN
+#undef INT32_MAX
+#undef UINT32_MAX
+#define INT32_MIN  (~ INT32_MAX)
+#define INT32_MAX  2147483647
+#define UINT32_MAX  4294967295U
+
+#undef INT64_MIN
+#undef INT64_MAX
+#ifdef GL_INT64_T
+/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
+   evaluates the latter incorrectly in preprocessor expressions.  */
+# define INT64_MIN  (- INTMAX_C (1) << 63)
+# define INT64_MAX  INTMAX_C (9223372036854775807)
+#endif
+
+#undef UINT64_MAX
+#ifdef GL_UINT64_T
+# define UINT64_MAX  UINTMAX_C (18446744073709551615)
+#endif
+
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+   are the same as the corresponding N_t types.  */
+
+#undef INT_LEAST8_MIN
+#undef INT_LEAST8_MAX
+#undef UINT_LEAST8_MAX
+#define INT_LEAST8_MIN  INT8_MIN
+#define INT_LEAST8_MAX  INT8_MAX
+#define UINT_LEAST8_MAX  UINT8_MAX
+
+#undef INT_LEAST16_MIN
+#undef INT_LEAST16_MAX
+#undef UINT_LEAST16_MAX
+#define INT_LEAST16_MIN  INT16_MIN
+#define INT_LEAST16_MAX  INT16_MAX
+#define UINT_LEAST16_MAX  UINT16_MAX
+
+#undef INT_LEAST32_MIN
+#undef INT_LEAST32_MAX
+#undef UINT_LEAST32_MAX
+#define INT_LEAST32_MIN  INT32_MIN
+#define INT_LEAST32_MAX  INT32_MAX
+#define UINT_LEAST32_MAX  UINT32_MAX
+
+#undef INT_LEAST64_MIN
+#undef INT_LEAST64_MAX
+#ifdef GL_INT64_T
+# define INT_LEAST64_MIN  INT64_MIN
+# define INT_LEAST64_MAX  INT64_MAX
+#endif
+
+#undef UINT_LEAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_LEAST64_MAX  UINT64_MAX
+#endif
+
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+   are taken from the same list of types.  */
+
+#undef INT_FAST8_MIN
+#undef INT_FAST8_MAX
+#undef UINT_FAST8_MAX
+#define INT_FAST8_MIN  LONG_MIN
+#define INT_FAST8_MAX  LONG_MAX
+#define UINT_FAST8_MAX  ULONG_MAX
+
+#undef INT_FAST16_MIN
+#undef INT_FAST16_MAX
+#undef UINT_FAST16_MAX
+#define INT_FAST16_MIN  LONG_MIN
+#define INT_FAST16_MAX  LONG_MAX
+#define UINT_FAST16_MAX  ULONG_MAX
+
+#undef INT_FAST32_MIN
+#undef INT_FAST32_MAX
+#undef UINT_FAST32_MAX
+#define INT_FAST32_MIN  LONG_MIN
+#define INT_FAST32_MAX  LONG_MAX
+#define UINT_FAST32_MAX  ULONG_MAX
+
+#undef INT_FAST64_MIN
+#undef INT_FAST64_MAX
+#ifdef GL_INT64_T
+# define INT_FAST64_MIN  INT64_MIN
+# define INT_FAST64_MAX  INT64_MAX
+#endif
+
+#undef UINT_FAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_FAST64_MAX  UINT64_MAX
+#endif
+
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+#undef INTPTR_MIN
+#undef INTPTR_MAX
+#undef UINTPTR_MAX
+#define INTPTR_MIN  LONG_MIN
+#define INTPTR_MAX  LONG_MAX
+#define UINTPTR_MAX  ULONG_MAX
+
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+#undef INTMAX_MIN
+#undef INTMAX_MAX
+#ifdef INT64_MAX
+# define INTMAX_MIN  INT64_MIN
+# define INTMAX_MAX  INT64_MAX
+#else
+# define INTMAX_MIN  INT32_MIN
+# define INTMAX_MAX  INT32_MAX
+#endif
+
+#undef UINTMAX_MAX
+#ifdef UINT64_MAX
+# define UINTMAX_MAX  UINT64_MAX
+#else
+# define UINTMAX_MAX  UINT32_MAX
+#endif
+
+/* 7.18.3. Limits of other integer types */
+
+/* ptrdiff_t limits */
+#undef PTRDIFF_MIN
+#undef PTRDIFF_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+#  define PTRDIFF_MIN  _STDINT_MIN (1, 64, 0l)
+#  define PTRDIFF_MAX  _STDINT_MAX (1, 64, 0l)
+# else
+#  define PTRDIFF_MIN  _STDINT_MIN (1, 32, 0)
+#  define PTRDIFF_MAX  _STDINT_MAX (1, 32, 0)
+# endif
+#else
+# define PTRDIFF_MIN  \
+    _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+# define PTRDIFF_MAX  \
+    _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+#endif
+
+/* sig_atomic_t limits */
+#undef SIG_ATOMIC_MIN
+#undef SIG_ATOMIC_MAX
+#define SIG_ATOMIC_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+               0@SIG_ATOMIC_T_SUFFIX@)
+#define SIG_ATOMIC_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+               0@SIG_ATOMIC_T_SUFFIX@)
+
+
+/* size_t limit */
+#undef SIZE_MAX
+#if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+#  define SIZE_MAX  _STDINT_MAX (0, 64, 0ul)
+# else
+#  define SIZE_MAX  _STDINT_MAX (0, 32, 0ul)
+# endif
+#else
+# define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
+#endif
+
+/* wchar_t limits */
+/* Get WCHAR_MIN, WCHAR_MAX.
+   This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested
+   includes <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
+   <stdint.h> and assumes its types are already defined.  */
+#if ! (defined WCHAR_MIN && defined WCHAR_MAX)
+# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+/*  We don't need WCHAR_* in libidn, so to avoid problems with
+    missing wchar.h, don't include wchar.h here.  */
+# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+#endif
+#undef WCHAR_MIN
+#undef WCHAR_MAX
+#define WCHAR_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+#define WCHAR_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+
+/* wint_t limits */
+#undef WINT_MIN
+#undef WINT_MAX
+#define WINT_MIN  \
+   _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+#define WINT_MAX  \
+   _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+
+#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
+
+/* 7.18.4. Macros for integer constants */
+
+#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* 7.18.4.1. Macros for minimum-width integer constants */
+/* According to ISO C 99 Technical Corrigendum 1 */
+
+/* Here we assume a standard architecture where the hardware integer
+   types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
+
+#undef INT8_C
+#undef UINT8_C
+#define INT8_C(x) x
+#define UINT8_C(x) x
+
+#undef INT16_C
+#undef UINT16_C
+#define INT16_C(x) x
+#define UINT16_C(x) x
+
+#undef INT32_C
+#undef UINT32_C
+#define INT32_C(x) x
+#define UINT32_C(x) x ## U
+
+#undef INT64_C
+#undef UINT64_C
+#if LONG_MAX >> 31 >> 31 == 1
+# define INT64_C(x) x##L
+#elif defined _MSC_VER
+# define INT64_C(x) x##i64
+#elif @HAVE_LONG_LONG_INT@
+# define INT64_C(x) x##LL
+#endif
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# define UINT64_C(x) x##UL
+#elif defined _MSC_VER
+# define UINT64_C(x) x##ui64
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# define UINT64_C(x) x##ULL
+#endif
+
+/* 7.18.4.2. Macros for greatest-width integer constants */
+
+#undef INTMAX_C
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define INTMAX_C(x)   x##LL
+#elif defined GL_INT64_T
+# define INTMAX_C(x)   INT64_C(x)
+#else
+# define INTMAX_C(x)   x##L
+#endif
+
+#undef UINTMAX_C
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define UINTMAX_C(x)  x##ULL
+#elif defined GL_UINT64_T
+# define UINTMAX_C(x)  UINT64_C(x)
+#else
+# define UINTMAX_C(x)  x##UL
+#endif
+
+#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
+
+#endif /* _GL_STDINT_H */
+#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/lib/gl/striconv.c b/lib/gl/striconv.c
new file mode 100644 (file)
index 0000000..2c6c51f
--- /dev/null
@@ -0,0 +1,458 @@
+/* Charset conversion.
+   Copyright (C) 2001-2007 Free Software Foundation, Inc.
+   Written by Bruno Haible and Simon Josefsson.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include "striconv.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if HAVE_ICONV
+# include <iconv.h>
+/* Get MB_LEN_MAX, CHAR_BIT.  */
+# include <limits.h>
+#endif
+
+#include "c-strcase.h"
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+
+#if HAVE_ICONV
+
+int
+mem_cd_iconv (const char *src, size_t srclen, iconv_t cd,
+             char **resultp, size_t *lengthp)
+{
+# define tmpbufsize 4096
+  size_t length;
+  char *result;
+
+  /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug.  */
+# if defined _LIBICONV_VERSION \
+     || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+  /* Set to the initial state.  */
+  iconv (cd, NULL, NULL, NULL, NULL);
+# endif
+
+  /* Determine the length we need.  */
+  {
+    size_t count = 0;
+    /* The alignment is needed when converting e.g. to glibc's WCHAR_T or
+       libiconv's UCS-4-INTERNAL encoding.  */
+    union { unsigned int align; char buf[tmpbufsize]; } tmp;
+# define tmpbuf tmp.buf
+    const char *inptr = src;
+    size_t insize = srclen;
+
+    while (insize > 0)
+      {
+       char *outptr = tmpbuf;
+       size_t outsize = tmpbufsize;
+       size_t res = iconv (cd,
+                           (ICONV_CONST char **) &inptr, &insize,
+                           &outptr, &outsize);
+
+       if (res == (size_t)(-1))
+         {
+           if (errno == E2BIG)
+             ;
+           else if (errno == EINVAL)
+             break;
+           else
+             return -1;
+         }
+# if !defined _LIBICONV_VERSION && !defined __GLIBC__
+       /* Irix iconv() inserts a NUL byte if it cannot convert.
+          NetBSD iconv() inserts a question mark if it cannot convert.
+          Only GNU libiconv and GNU libc are known to prefer to fail rather
+          than doing a lossy conversion.  */
+       else if (res > 0)
+         {
+           errno = EILSEQ;
+           return -1;
+         }
+# endif
+       count += outptr - tmpbuf;
+      }
+    /* Avoid glibc-2.1 bug and Solaris 2.7 bug.  */
+# if defined _LIBICONV_VERSION \
+     || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+    {
+      char *outptr = tmpbuf;
+      size_t outsize = tmpbufsize;
+      size_t res = iconv (cd, NULL, NULL, &outptr, &outsize);
+
+      if (res == (size_t)(-1))
+       return -1;
+      count += outptr - tmpbuf;
+    }
+# endif
+    length = count;
+# undef tmpbuf
+  }
+
+  if (length == 0)
+    {
+      *lengthp = 0;
+      return 0;
+    }
+  if (*resultp != NULL && *lengthp >= length)
+    result = *resultp;
+  else
+    {
+      result = (char *) malloc (length);
+      if (result == NULL)
+       {
+         errno = ENOMEM;
+         return -1;
+       }
+    }
+
+  /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug.  */
+# if defined _LIBICONV_VERSION \
+     || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+  /* Return to the initial state.  */
+  iconv (cd, NULL, NULL, NULL, NULL);
+# endif
+
+  /* Do the conversion for real.  */
+  {
+    const char *inptr = src;
+    size_t insize = srclen;
+    char *outptr = result;
+    size_t outsize = length;
+
+    while (insize > 0)
+      {
+       size_t res = iconv (cd,
+                           (ICONV_CONST char **) &inptr, &insize,
+                           &outptr, &outsize);
+
+       if (res == (size_t)(-1))
+         {
+           if (errno == EINVAL)
+             break;
+           else
+             goto fail;
+         }
+# if !defined _LIBICONV_VERSION && !defined __GLIBC__
+       /* Irix iconv() inserts a NUL byte if it cannot convert.
+          NetBSD iconv() inserts a question mark if it cannot convert.
+          Only GNU libiconv and GNU libc are known to prefer to fail rather
+          than doing a lossy conversion.  */
+       else if (res > 0)
+         {
+           errno = EILSEQ;
+           goto fail;
+         }
+# endif
+      }
+    /* Avoid glibc-2.1 bug and Solaris 2.7 bug.  */
+# if defined _LIBICONV_VERSION \
+     || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+    {
+      size_t res = iconv (cd, NULL, NULL, &outptr, &outsize);
+
+      if (res == (size_t)(-1))
+       goto fail;
+    }
+# endif
+    if (outsize != 0)
+      abort ();
+  }
+
+  *resultp = result;
+  *lengthp = length;
+
+  return 0;
+
+ fail:
+  {
+    if (result != *resultp)
+      {
+       int saved_errno = errno;
+       free (result);
+       errno = saved_errno;
+      }
+    return -1;
+  }
+# undef tmpbufsize
+}
+
+char *
+str_cd_iconv (const char *src, iconv_t cd)
+{
+  /* For most encodings, a trailing NUL byte in the input will be converted
+     to a trailing NUL byte in the output.  But not for UTF-7.  So that this
+     function is usable for UTF-7, we have to exclude the NUL byte from the
+     conversion and add it by hand afterwards.  */
+# if !defined _LIBICONV_VERSION && !defined __GLIBC__
+  /* Irix iconv() inserts a NUL byte if it cannot convert.
+     NetBSD iconv() inserts a question mark if it cannot convert.
+     Only GNU libiconv and GNU libc are known to prefer to fail rather
+     than doing a lossy conversion.  For other iconv() implementations,
+     we have to look at the number of irreversible conversions returned;
+     but this information is lost when iconv() returns for an E2BIG reason.
+     Therefore we cannot use the second, faster algorithm.  */
+
+  char *result = NULL;
+  size_t length = 0;
+  int retval = mem_cd_iconv (src, strlen (src), cd, &result, &length);
+  char *final_result;
+
+  if (retval < 0)
+    {
+      if (result != NULL)
+       abort ();
+      return NULL;
+    }
+
+  /* Add the terminating NUL byte.  */
+  final_result =
+    (result != NULL ? realloc (result, length + 1) : malloc (length + 1));
+  if (final_result == NULL)
+    {
+      if (result != NULL)
+       free (result);
+      errno = ENOMEM;
+      return NULL;
+    }
+  final_result[length] = '\0';
+
+  return final_result;
+
+# else
+  /* This algorithm is likely faster than the one above.  But it may produce
+     iconv() returns for an E2BIG reason, when the output size guess is too
+     small.  Therefore it can only be used when we don't need the number of
+     irreversible conversions performed.  */
+  char *result;
+  size_t result_size;
+  size_t length;
+  const char *inptr = src;
+  size_t inbytes_remaining = strlen (src);
+
+  /* Make a guess for the worst-case output size, in order to avoid a
+     realloc.  It's OK if the guess is wrong as long as it is not zero and
+     doesn't lead to an integer overflow.  */
+  result_size = inbytes_remaining;
+  {
+    size_t approx_sqrt_SIZE_MAX = SIZE_MAX >> (sizeof (size_t) * CHAR_BIT / 2);
+    if (result_size <= approx_sqrt_SIZE_MAX / MB_LEN_MAX)
+      result_size *= MB_LEN_MAX;
+  }
+  result_size += 1; /* for the terminating NUL */
+
+  result = (char *) malloc (result_size);
+  if (result == NULL)
+    {
+      errno = ENOMEM;
+      return NULL;
+    }
+
+  /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug.  */
+# if defined _LIBICONV_VERSION \
+     || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+  /* Set to the initial state.  */
+  iconv (cd, NULL, NULL, NULL, NULL);
+# endif
+
+  /* Do the conversion.  */
+  {
+    char *outptr = result;
+    size_t outbytes_remaining = result_size - 1;
+
+    for (;;)
+      {
+       /* Here inptr + inbytes_remaining = src + strlen (src),
+               outptr + outbytes_remaining = result + result_size - 1.  */
+       size_t res = iconv (cd,
+                           (ICONV_CONST char **) &inptr, &inbytes_remaining,
+                           &outptr, &outbytes_remaining);
+
+       if (res == (size_t)(-1))
+         {
+           if (errno == EINVAL)
+             break;
+           else if (errno == E2BIG)
+             {
+               size_t used = outptr - result;
+               size_t newsize = result_size * 2;
+               char *newresult;
+
+               if (!(newsize > result_size))
+                 {
+                   errno = ENOMEM;
+                   goto failed;
+                 }
+               newresult = (char *) realloc (result, newsize);
+               if (newresult == NULL)
+                 {
+                   errno = ENOMEM;
+                   goto failed;
+                 }
+               result = newresult;
+               result_size = newsize;
+               outptr = result + used;
+               outbytes_remaining = result_size - 1 - used;
+             }
+           else
+             goto failed;
+         }
+       else
+         break;
+      }
+    /* Avoid glibc-2.1 bug and Solaris 2.7 bug.  */
+# if defined _LIBICONV_VERSION \
+     || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+    for (;;)
+      {
+       /* Here outptr + outbytes_remaining = result + result_size - 1.  */
+       size_t res = iconv (cd, NULL, NULL, &outptr, &outbytes_remaining);
+
+       if (res == (size_t)(-1))
+         {
+           if (errno == E2BIG)
+             {
+               size_t used = outptr - result;
+               size_t newsize = result_size * 2;
+               char *newresult;
+
+               if (!(newsize > result_size))
+                 {
+                   errno = ENOMEM;
+                   goto failed;
+                 }
+               newresult = (char *) realloc (result, newsize);
+               if (newresult == NULL)
+                 {
+                   errno = ENOMEM;
+                   goto failed;
+                 }
+               result = newresult;
+               result_size = newsize;
+               outptr = result + used;
+               outbytes_remaining = result_size - 1 - used;
+             }
+           else
+             goto failed;
+         }
+       else
+         break;
+      }
+# endif
+
+    /* Add the terminating NUL byte.  */
+    *outptr++ = '\0';
+
+    length = outptr - result;
+  }
+
+  /* Give away unused memory.  */
+  if (length < result_size)
+    {
+      char *smaller_result = (char *) realloc (result, length);
+
+      if (smaller_result != NULL)
+       result = smaller_result;
+    }
+
+  return result;
+
+ failed:
+  {
+    int saved_errno = errno;
+    free (result);
+    errno = saved_errno;
+    return NULL;
+  }
+
+# endif
+}
+
+#endif
+
+char *
+str_iconv (const char *src, const char *from_codeset, const char *to_codeset)
+{
+  if (*src == '\0' || c_strcasecmp (from_codeset, to_codeset) == 0)
+    {
+      char *result = strdup (src);
+
+      if (result == NULL)
+       errno = ENOMEM;
+      return result;
+    }
+  else
+    {
+#if HAVE_ICONV
+      iconv_t cd;
+      char *result;
+
+      /* Avoid glibc-2.1 bug with EUC-KR.  */
+# if (__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) && !defined _LIBICONV_VERSION
+      if (c_strcasecmp (from_codeset, "EUC-KR") == 0
+         || c_strcasecmp (to_codeset, "EUC-KR") == 0)
+       {
+         errno = EINVAL;
+         return NULL;
+       }
+# endif
+      cd = iconv_open (to_codeset, from_codeset);
+      if (cd == (iconv_t) -1)
+       return NULL;
+
+      result = str_cd_iconv (src, cd);
+
+      if (result == NULL)
+       {
+         /* Close cd, but preserve the errno from str_cd_iconv.  */
+         int saved_errno = errno;
+         iconv_close (cd);
+         errno = saved_errno;
+       }
+      else
+       {
+         if (iconv_close (cd) < 0)
+           {
+             /* Return NULL, but free the allocated memory, and while doing
+                that, preserve the errno from iconv_close.  */
+             int saved_errno = errno;
+             free (result);
+             errno = saved_errno;
+             return NULL;
+           }
+       }
+      return result;
+#else
+      /* This is a different error code than if iconv_open existed but didn't
+        support from_codeset and to_codeset, so that the caller can emit
+        an error message such as
+          "iconv() is not supported. Installing GNU libiconv and
+           then reinstalling this package would fix this."  */
+      errno = ENOSYS;
+      return NULL;
+#endif
+    }
+}
diff --git a/lib/gl/striconv.h b/lib/gl/striconv.h
new file mode 100644 (file)
index 0000000..3f1b107
--- /dev/null
@@ -0,0 +1,76 @@
+/* Charset conversion.
+   Copyright (C) 2001-2004, 2006-2007 Free Software Foundation, Inc.
+   Written by Bruno Haible and Simon Josefsson.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _STRICONV_H
+#define _STRICONV_H
+
+#include <stddef.h>
+#if HAVE_ICONV
+#include <iconv.h>
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if HAVE_ICONV
+
+/* Convert an entire string from one encoding to another, using iconv.
+   The original string is at [SRC,...,SRC+SRCLEN-1].
+   The conversion descriptor is passed as CD.
+   *RESULTP and *LENGTH should initially be a scratch buffer and its size,
+   or *RESULTP can initially be NULL.
+   May erase the contents of the memory at *RESULTP.
+   Return value: 0 if successful, otherwise -1 and errno set.
+   If successful: The resulting string is stored in *RESULTP and its length
+   in *LENGTHP.  *RESULTP is set to a freshly allocated memory block, or is
+   unchanged if no dynamic memory allocation was necessary.  */
+extern int mem_cd_iconv (const char *src, size_t srclen, iconv_t cd,
+                        char **resultp, size_t *lengthp);
+
+/* Convert an entire string from one encoding to another, using iconv.
+   The original string is the NUL-terminated string starting at SRC.
+   The conversion descriptor is passed as CD.  Both the "from" and the "to"
+   encoding must use a single NUL byte at the end of the string (i.e. not
+   UCS-2, UCS-4, UTF-16, UTF-32).
+   Allocate a malloced memory block for the result.
+   Return value: the freshly allocated resulting NUL-terminated string if
+   successful, otherwise NULL and errno set.  */
+extern char * str_cd_iconv (const char *src, iconv_t cd);
+
+#endif
+
+/* Convert an entire string from one encoding to another, using iconv.
+   The original string is the NUL-terminated string starting at SRC.
+   Both the "from" and the "to" encoding must use a single NUL byte at the
+   end of the string (i.e. not UCS-2, UCS-4, UTF-16, UTF-32).
+   Allocate a malloced memory block for the result.
+   Return value: the freshly allocated resulting NUL-terminated string if
+   successful, otherwise NULL and errno set.  */
+extern char * str_iconv (const char *src,
+                        const char *from_codeset, const char *to_codeset);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _STRICONV_H */
diff --git a/lib/gl/string.in.h b/lib/gl/string.in.h
new file mode 100644 (file)
index 0000000..0a6fb85
--- /dev/null
@@ -0,0 +1,605 @@
+/* A GNU-like <string.h>.
+
+   Copyright (C) 1995-1996, 2001-2008 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef _GL_STRING_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_STRING_H@
+
+#ifndef _GL_STRING_H
+#define _GL_STRING_H
+
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+#  define __attribute__(Spec) /* empty */
+# endif
+/* The attribute __pure__ was added in gcc 2.96.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
+#  define __pure__ /* empty */
+# endif
+#endif
+
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Return the first occurrence of NEEDLE in HAYSTACK.  */
+#if @GNULIB_MEMMEM@
+# if @REPLACE_MEMMEM@
+#  define memmem rpl_memmem
+# endif
+# if ! @HAVE_DECL_MEMMEM@ || @REPLACE_MEMMEM@
+extern void *memmem (void const *__haystack, size_t __haystack_len,
+                    void const *__needle, size_t __needle_len)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memmem
+# define memmem(a,al,b,bl) \
+    (GL_LINK_WARNING ("memmem is unportable and often quadratic - " \
+                      "use gnulib module memmem-simple for portability, " \
+                      "and module memmem for speed" ), \
+     memmem (a, al, b, bl))
+#endif
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+   last written byte.  */
+#if @GNULIB_MEMPCPY@
+# if ! @HAVE_MEMPCPY@
+extern void *mempcpy (void *restrict __dest, void const *restrict __src,
+                     size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mempcpy
+# define mempcpy(a,b,n) \
+    (GL_LINK_WARNING ("mempcpy is unportable - " \
+                      "use gnulib module mempcpy for portability"), \
+     mempcpy (a, b, n))
+#endif
+
+/* Search backwards through a block for a byte (specified as an int).  */
+#if @GNULIB_MEMRCHR@
+# if ! @HAVE_DECL_MEMRCHR@
+extern void *memrchr (void const *, int, size_t)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memrchr
+# define memrchr(a,b,c) \
+    (GL_LINK_WARNING ("memrchr is unportable - " \
+                      "use gnulib module memrchr for portability"), \
+     memrchr (a, b, c))
+#endif
+
+/* Find the first occurrence of C in S.  More efficient than
+   memchr(S,C,N), at the expense of undefined behavior if C does not
+   occur within N bytes.  */
+#if @GNULIB_RAWMEMCHR@
+# if ! @HAVE_RAWMEMCHR@
+extern void *rawmemchr (void const *__s, int __c_in)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rawmemchr
+# define rawmemchr(a,b) \
+    (GL_LINK_WARNING ("rawmemchr is unportable - " \
+                      "use gnulib module rawmemchr for portability"), \
+     rawmemchr (a, b))
+#endif
+
+/* Copy SRC to DST, returning the address of the terminating '\0' in DST.  */
+#if @GNULIB_STPCPY@
+# if ! @HAVE_STPCPY@
+extern char *stpcpy (char *restrict __dst, char const *restrict __src);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpcpy
+# define stpcpy(a,b) \
+    (GL_LINK_WARNING ("stpcpy is unportable - " \
+                      "use gnulib module stpcpy for portability"), \
+     stpcpy (a, b))
+#endif
+
+/* Copy no more than N bytes of SRC to DST, returning a pointer past the
+   last non-NUL byte written into DST.  */
+#if @GNULIB_STPNCPY@
+# if ! @HAVE_STPNCPY@
+#  define stpncpy gnu_stpncpy
+extern char *stpncpy (char *restrict __dst, char const *restrict __src,
+                     size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpncpy
+# define stpncpy(a,b,n) \
+    (GL_LINK_WARNING ("stpncpy is unportable - " \
+                      "use gnulib module stpncpy for portability"), \
+     stpncpy (a, b, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strchr
+# define strchr(s,c) \
+    (GL_LINK_WARNING ("strchr cannot work correctly on character strings " \
+                      "in some multibyte locales - " \
+                      "use mbschr if you care about internationalization"), \
+     strchr (s, c))
+#endif
+
+/* Find the first occurrence of C in S or the final NUL byte.  */
+#if @GNULIB_STRCHRNUL@
+# if ! @HAVE_STRCHRNUL@
+extern char *strchrnul (char const *__s, int __c_in)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strchrnul
+# define strchrnul(a,b) \
+    (GL_LINK_WARNING ("strchrnul is unportable - " \
+                      "use gnulib module strchrnul for portability"), \
+     strchrnul (a, b))
+#endif
+
+/* Duplicate S, returning an identical malloc'd string.  */
+#if @GNULIB_STRDUP@
+# if @REPLACE_STRDUP@
+#  undef strdup
+#  define strdup rpl_strdup
+# endif
+# if !(@HAVE_DECL_STRDUP@ || defined strdup) || @REPLACE_STRDUP@
+extern char *strdup (char const *__s);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strdup
+# define strdup(a) \
+    (GL_LINK_WARNING ("strdup is unportable - " \
+                      "use gnulib module strdup for portability"), \
+     strdup (a))
+#endif
+
+/* Return a newly allocated copy of at most N bytes of STRING.  */
+#if @GNULIB_STRNDUP@
+# if ! @HAVE_STRNDUP@
+#  undef strndup
+#  define strndup rpl_strndup
+# endif
+# if ! @HAVE_STRNDUP@ || ! @HAVE_DECL_STRNDUP@
+extern char *strndup (char const *__string, size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strndup
+# define strndup(a,n) \
+    (GL_LINK_WARNING ("strndup is unportable - " \
+                      "use gnulib module strndup for portability"), \
+     strndup (a, n))
+#endif
+
+/* Find the length (number of bytes) of STRING, but scan at most
+   MAXLEN bytes.  If no '\0' terminator is found in that many bytes,
+   return MAXLEN.  */
+#if @GNULIB_STRNLEN@
+# if ! @HAVE_DECL_STRNLEN@
+extern size_t strnlen (char const *__string, size_t __maxlen)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strnlen
+# define strnlen(a,n) \
+    (GL_LINK_WARNING ("strnlen is unportable - " \
+                      "use gnulib module strnlen for portability"), \
+     strnlen (a, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strcspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+# undef strcspn
+# define strcspn(s,a) \
+    (GL_LINK_WARNING ("strcspn cannot work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbscspn if you care about internationalization"), \
+     strcspn (s, a))
+#endif
+
+/* Find the first occurrence in S of any character in ACCEPT.  */
+#if @GNULIB_STRPBRK@
+# if ! @HAVE_STRPBRK@
+extern char *strpbrk (char const *__s, char const *__accept)
+  __attribute__ ((__pure__));
+# endif
+# if defined GNULIB_POSIXCHECK
+/* strpbrk() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it does not work with multibyte strings if the
+   locale encoding is GB18030 and one of the characters to be searched is a
+   digit.  */
+#  undef strpbrk
+#  define strpbrk(s,a) \
+     (GL_LINK_WARNING ("strpbrk cannot work correctly on character strings " \
+                       "in multibyte locales - " \
+                       "use mbspbrk if you care about internationalization"), \
+      strpbrk (s, a))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strpbrk
+# define strpbrk(s,a) \
+    (GL_LINK_WARNING ("strpbrk is unportable - " \
+                      "use gnulib module strpbrk for portability"), \
+     strpbrk (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strspn() assumes the second argument is a list of single-byte characters.
+   Even in this simple case, it cannot work with multibyte strings.  */
+# undef strspn
+# define strspn(s,a) \
+    (GL_LINK_WARNING ("strspn cannot work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbsspn if you care about internationalization"), \
+     strspn (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strrchr() does not work with multibyte strings if the locale encoding is
+   GB18030 and the character to be searched is a digit.  */
+# undef strrchr
+# define strrchr(s,c) \
+    (GL_LINK_WARNING ("strrchr cannot work correctly on character strings " \
+                      "in some multibyte locales - " \
+                      "use mbsrchr if you care about internationalization"), \
+     strrchr (s, c))
+#endif
+
+/* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP
+   to point to the next char after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of strtok() that is multithread-safe and supports
+   empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strtok_r().  */
+#if @GNULIB_STRSEP@
+# if ! @HAVE_STRSEP@
+extern char *strsep (char **restrict __stringp, char const *restrict __delim);
+# endif
+# if defined GNULIB_POSIXCHECK
+#  undef strsep
+#  define strsep(s,d) \
+     (GL_LINK_WARNING ("strsep cannot work correctly on character strings " \
+                       "in multibyte locales - " \
+                       "use mbssep if you care about internationalization"), \
+      strsep (s, d))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsep
+# define strsep(s,d) \
+    (GL_LINK_WARNING ("strsep is unportable - " \
+                      "use gnulib module strsep for portability"), \
+     strsep (s, d))
+#endif
+
+#if @GNULIB_STRSTR@
+# if @REPLACE_STRSTR@
+#  define strstr rpl_strstr
+char *strstr (const char *haystack, const char *needle)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strstr() does not work with multibyte strings if the locale encoding is
+   different from UTF-8:
+   POSIX says that it operates on "strings", and "string" in POSIX is defined
+   as a sequence of bytes, not of characters.  */
+# undef strstr
+# define strstr(a,b) \
+    (GL_LINK_WARNING ("strstr is quadratic on many systems, and cannot " \
+                      "work correctly on character strings in most "    \
+                      "multibyte locales - " \
+                      "use mbsstr if you care about internationalization, " \
+                      "or use strstr if you care about speed"), \
+     strstr (a, b))
+#endif
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
+   comparison.  */
+#if @GNULIB_STRCASESTR@
+# if @REPLACE_STRCASESTR@
+#  define strcasestr rpl_strcasestr
+# endif
+# if ! @HAVE_STRCASESTR@ || @REPLACE_STRCASESTR@
+extern char *strcasestr (const char *haystack, const char *needle)
+  __attribute__ ((__pure__));
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strcasestr() does not work with multibyte strings:
+   It is a glibc extension, and glibc implements it only for unibyte
+   locales.  */
+# undef strcasestr
+# define strcasestr(a,b) \
+    (GL_LINK_WARNING ("strcasestr does work correctly on character strings " \
+                      "in multibyte locales - " \
+                      "use mbscasestr if you care about " \
+                      "internationalization, or use c-strcasestr if you want " \
+                      "a locale independent function"), \
+     strcasestr (a, b))
+#endif
+
+/* Parse S into tokens separated by characters in DELIM.
+   If S is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+       char s[] = "-abc-=-def";
+       char *sp;
+       x = strtok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+       x = strtok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+       x = strtok_r(NULL, "=", &sp);   // x = NULL
+               // s = "abc\0-def\0"
+
+   This is a variant of strtok() that is multithread-safe.
+
+   For the POSIX documentation for this function, see:
+   http://www.opengroup.org/susv3xsh/strtok.html
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strsep().  */
+#if @GNULIB_STRTOK_R@
+# if ! @HAVE_DECL_STRTOK_R@
+extern char *strtok_r (char *restrict s, char const *restrict delim,
+                      char **restrict save_ptr);
+# endif
+# if defined GNULIB_POSIXCHECK
+#  undef strtok_r
+#  define strtok_r(s,d,p) \
+     (GL_LINK_WARNING ("strtok_r cannot work correctly on character strings " \
+                       "in multibyte locales - " \
+                       "use mbstok_r if you care about internationalization"), \
+      strtok_r (s, d, p))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtok_r
+# define strtok_r(s,d,p) \
+    (GL_LINK_WARNING ("strtok_r is unportable - " \
+                      "use gnulib module strtok_r for portability"), \
+     strtok_r (s, d, p))
+#endif
+
+
+/* The following functions are not specified by POSIX.  They are gnulib
+   extensions.  */
+
+#if @GNULIB_MBSLEN@
+/* Return the number of multibyte characters in the character string STRING.
+   This considers multibyte characters, unlike strlen, which counts bytes.  */
+extern size_t mbslen (const char *string);
+#endif
+
+#if @GNULIB_MBSNLEN@
+/* Return the number of multibyte characters in the character string starting
+   at STRING and ending at STRING + LEN.  */
+extern size_t mbsnlen (const char *string, size_t len);
+#endif
+
+#if @GNULIB_MBSCHR@
+/* Locate the first single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# define mbschr rpl_mbschr /* avoid collision with HP-UX function */
+extern char * mbschr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSRCHR@
+/* Locate the last single-byte character C in the character string STRING,
+   and return a pointer to it.  Return NULL if C is not found in STRING.
+   Unlike strrchr(), this function works correctly in multibyte locales with
+   encodings such as GB18030.  */
+# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */
+extern char * mbsrchr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSSTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK.  Return NULL if NEEDLE is not found in HAYSTACK.
+   Unlike strstr(), this function works correctly in multibyte locales with
+   encodings different from UTF-8.  */
+extern char * mbsstr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCASECMP@
+/* Compare the character strings S1 and S2, ignoring case, returning less than,
+   equal to or greater than zero if S1 is lexicographically less than, equal to
+   or greater than S2.
+   Note: This function may, in multibyte locales, return 0 for strings of
+   different lengths!
+   Unlike strcasecmp(), this function works correctly in multibyte locales.  */
+extern int mbscasecmp (const char *s1, const char *s2);
+#endif
+
+#if @GNULIB_MBSNCASECMP@
+/* Compare the initial segment of the character string S1 consisting of at most
+   N characters with the initial segment of the character string S2 consisting
+   of at most N characters, ignoring case, returning less than, equal to or
+   greater than zero if the initial segment of S1 is lexicographically less
+   than, equal to or greater than the initial segment of S2.
+   Note: This function may, in multibyte locales, return 0 for initial segments
+   of different lengths!
+   Unlike strncasecmp(), this function works correctly in multibyte locales.
+   But beware that N is not a byte count but a character count!  */
+extern int mbsncasecmp (const char *s1, const char *s2, size_t n);
+#endif
+
+#if @GNULIB_MBSPCASECMP@
+/* Compare the initial segment of the character string STRING consisting of
+   at most mbslen (PREFIX) characters with the character string PREFIX,
+   ignoring case, returning less than, equal to or greater than zero if this
+   initial segment is lexicographically less than, equal to or greater than
+   PREFIX.
+   Note: This function may, in multibyte locales, return 0 if STRING is of
+   smaller length than PREFIX!
+   Unlike strncasecmp(), this function works correctly in multibyte
+   locales.  */
+extern char * mbspcasecmp (const char *string, const char *prefix);
+#endif
+
+#if @GNULIB_MBSCASESTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+   string HAYSTACK, using case-insensitive comparison.
+   Note: This function may, in multibyte locales, return success even if
+   strlen (haystack) < strlen (needle) !
+   Unlike strcasestr(), this function works correctly in multibyte locales.  */
+extern char * mbscasestr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCSPN@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strcspn(), this function works correctly in multibyte locales.  */
+extern size_t mbscspn (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSPBRK@
+/* Find the first occurrence in the character string STRING of any character
+   in the character string ACCEPT.  Return the pointer to it, or NULL if none
+   exists.
+   Unlike strpbrk(), this function works correctly in multibyte locales.  */
+# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
+extern char * mbspbrk (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSSPN@
+/* Find the first occurrence in the character string STRING of any character
+   not in the character string REJECT.  Return the number of bytes from the
+   beginning of the string to this occurrence, or to the end of the string
+   if none exists.
+   Unlike strspn(), this function works correctly in multibyte locales.  */
+extern size_t mbsspn (const char *string, const char *reject);
+#endif
+
+#if @GNULIB_MBSSEP@
+/* Search the next delimiter (multibyte character listed in the character
+   string DELIM) starting at the character string *STRINGP.
+   If one is found, overwrite it with a NUL, and advance *STRINGP to point
+   to the next multibyte character after it.  Otherwise, set *STRINGP to NULL.
+   If *STRINGP was already NULL, nothing happens.
+   Return the old value of *STRINGP.
+
+   This is a variant of mbstok_r() that supports empty fields.
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbstok_r().  */
+extern char * mbssep (char **stringp, const char *delim);
+#endif
+
+#if @GNULIB_MBSTOK_R@
+/* Parse the character string STRING into tokens separated by characters in
+   the character string DELIM.
+   If STRING is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+       char s[] = "-abc-=-def";
+       char *sp;
+       x = mbstok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+       x = mbstok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+       x = mbstok_r(NULL, "=", &sp);   // x = NULL
+               // s = "abc\0-def\0"
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+
+   See also mbssep().  */
+extern char * mbstok_r (char *string, const char *delim, char **save_ptr);
+#endif
+
+/* Map any int, typically from errno, into an error message.  */
+#if @GNULIB_STRERROR@
+# if @REPLACE_STRERROR@
+#  undef strerror
+#  define strerror rpl_strerror
+extern char *strerror (int);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strerror
+# define strerror(e) \
+    (GL_LINK_WARNING ("strerror is unportable - " \
+                      "use gnulib module strerror to guarantee non-NULL result"), \
+     strerror (e))
+#endif
+
+#if @GNULIB_STRSIGNAL@
+# if @REPLACE_STRSIGNAL@
+#  define strsignal rpl_strsignal
+# endif
+# if ! @HAVE_DECL_STRSIGNAL@ || @REPLACE_STRSIGNAL@
+extern char *strsignal (int __sig);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsignal
+# define strsignal(a) \
+    (GL_LINK_WARNING ("strsignal is unportable - " \
+                      "use gnulib module strsignal for portability"), \
+     strsignal (a))
+#endif
+
+#if @GNULIB_STRVERSCMP@
+# if !@HAVE_STRVERSCMP@
+extern int strverscmp (const char *, const char *);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strverscmp
+# define strverscmp(a, b) \
+    (GL_LINK_WARNING ("strverscmp is unportable - " \
+                      "use gnulib module strverscmp for portability"), \
+     strverscmp (a, b))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STRING_H */
+#endif /* _GL_STRING_H */
diff --git a/lib/gl/strverscmp.c b/lib/gl/strverscmp.c
new file mode 100644 (file)
index 0000000..84b4ab8
--- /dev/null
@@ -0,0 +1,131 @@
+/* Compare strings while treating digits characters numerically.
+   Copyright (C) 1997, 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License along
+   with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include <string.h>
+#include <ctype.h>
+
+/* states: S_N: normal, S_I: comparing integral part, S_F: comparing
+           fractional parts, S_Z: idem but with leading Zeroes only */
+#define S_N    0x0
+#define S_I    0x4
+#define S_F    0x8
+#define S_Z    0xC
+
+/* result_type: CMP: return diff; LEN: compare using len_diff/diff */
+#define CMP    2
+#define LEN    3
+
+
+/* ISDIGIT differs from isdigit, as follows:
+   - Its arg may be any int or unsigned int; it need not be an unsigned char
+     or EOF.
+   - It's typically faster.
+   POSIX says that only '0' through '9' are digits.  Prefer ISDIGIT to
+   isdigit unless it's important to use the locale's definition
+   of `digit' even when the host does not conform to POSIX.  */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+#undef __strverscmp
+#undef strverscmp
+
+#ifndef weak_alias
+# define __strverscmp strverscmp
+#endif
+
+/* Compare S1 and S2 as strings holding indices/version numbers,
+   returning less than, equal to or greater than zero if S1 is less than,
+   equal to or greater than S2 (for more info, see the texinfo doc).
+*/
+
+int
+__strverscmp (const char *s1, const char *s2)
+{
+  const unsigned char *p1 = (const unsigned char *) s1;
+  const unsigned char *p2 = (const unsigned char *) s2;
+  unsigned char c1, c2;
+  int state;
+  int diff;
+
+  /* Symbol(s)    0       [1-9]   others  (padding)
+     Transition   (10) 0  (01) d  (00) x  (11) -   */
+  static const unsigned int next_state[] =
+  {
+      /* state    x    d    0    - */
+      /* S_N */  S_N, S_I, S_Z, S_N,
+      /* S_I */  S_N, S_I, S_I, S_I,
+      /* S_F */  S_N, S_F, S_F, S_F,
+      /* S_Z */  S_N, S_F, S_Z, S_Z
+  };
+
+  static const int result_type[] =
+  {
+      /* state   x/x  x/d  x/0  x/-  d/x  d/d  d/0  d/-
+                 0/x  0/d  0/0  0/-  -/x  -/d  -/0  -/- */
+
+      /* S_N */  CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
+                 CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
+      /* S_I */  CMP, -1,  -1,  CMP,  1,  LEN, LEN, CMP,
+                  1,  LEN, LEN, CMP, CMP, CMP, CMP, CMP,
+      /* S_F */  CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
+                 CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
+      /* S_Z */  CMP,  1,   1,  CMP, -1,  CMP, CMP, CMP,
+                 -1,  CMP, CMP, CMP
+  };
+
+  if (p1 == p2)
+    return 0;
+
+  c1 = *p1++;
+  c2 = *p2++;
+  /* Hint: '0' is a digit too.  */
+  state = S_N | ((c1 == '0') + (ISDIGIT (c1) != 0));
+
+  while ((diff = c1 - c2) == 0 && c1 != '\0')
+    {
+      state = next_state[state];
+      c1 = *p1++;
+      c2 = *p2++;
+      state |= (c1 == '0') + (ISDIGIT (c1) != 0);
+    }
+
+  state = result_type[state << 2 | ((c2 == '0') + (ISDIGIT (c2) != 0))];
+
+  switch (state)
+    {
+    case CMP:
+      return diff;
+
+    case LEN:
+      while (ISDIGIT (*p1++))
+       if (!ISDIGIT (*p2++))
+         return 1;
+
+      return ISDIGIT (*p2) ? -1 : diff;
+
+    default:
+      return state;
+    }
+}
+#ifdef weak_alias
+weak_alias (__strverscmp, strverscmp)
+#endif
diff --git a/lib/gl/wchar.in.h b/lib/gl/wchar.in.h
new file mode 100644 (file)
index 0000000..9f5b963
--- /dev/null
@@ -0,0 +1,310 @@
+/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
+
+   Copyright (C) 2007-2009 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation; either version 2.1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Eric Blake.  */
+
+/*
+ * ISO C 99 <wchar.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/wchar.h.html>
+ *
+ * For now, this just ensures proper prerequisite inclusion order and
+ * the declaration of wcwidth().
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_mbstate_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H
+/* Special invocation convention:
+   - Inside uClibc header files.
+   - On HP-UX 11.00 we have a sequence of nested includes
+     <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
+     once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
+     and once directly.  In both situations 'wint_t' is not yet defined,
+     therefore we cannot provide the function overrides; instead include only
+     the system's <wchar.h>.
+   - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
+     the latter includes <wchar.h>.  But here, we have no way to detect whether
+     <wctype.h> is completely included or is still being included.  */
+
+#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
+
+#else
+/* Normal invocation convention.  */
+
+#ifndef _GL_WCHAR_H
+
+#define _GL_ALREADY_INCLUDING_WCHAR_H
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+
+/* Include the original <wchar.h> if it exists.
+   Some builds of uClibc lack it.  */
+/* The include_next requires a split double-inclusion guard.  */
+#if @HAVE_WCHAR_H@
+# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
+#endif
+
+#undef _GL_ALREADY_INCLUDING_WCHAR_H
+
+#ifndef _GL_WCHAR_H
+#define _GL_WCHAR_H
+
+/* The definition of GL_LINK_WARNING is copied here.  */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define wint_t.  (Also done in wctype.in.h.)  */
+#if !@HAVE_WINT_T@ && !defined wint_t
+# define wint_t int
+# ifndef WEOF
+#  define WEOF -1
+# endif
+#endif
+
+
+/* Override mbstate_t if it is too small.
+   On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
+   implementing mbrtowc for encodings like UTF-8.  */
+#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
+typedef int rpl_mbstate_t;
+# undef mbstate_t
+# define mbstate_t rpl_mbstate_t
+# define GNULIB_defined_mbstate_t 1
+#endif
+
+
+/* Convert a single-byte character to a wide character.  */
+#if @GNULIB_BTOWC@
+# if @REPLACE_BTOWC@
+#  undef btowc
+#  define btowc rpl_btowc
+# endif
+# if !@HAVE_BTOWC@ || @REPLACE_BTOWC@
+extern wint_t btowc (int c);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef btowc
+# define btowc(c) \
+    (GL_LINK_WARNING ("btowc is unportable - " \
+                      "use gnulib module btowc for portability"), \
+     btowc (c))
+#endif
+
+
+/* Convert a wide character to a single-byte character.  */
+#if @GNULIB_WCTOB@
+# if @REPLACE_WCTOB@
+#  undef wctob
+#  define wctob rpl_wctob
+# endif
+# if (!defined wctob && !@HAVE_DECL_WCTOB@) || @REPLACE_WCTOB@
+/* wctob is provided by gnulib, or wctob exists but is not declared.  */
+extern int wctob (wint_t wc);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wctob
+# define wctob(w) \
+    (GL_LINK_WARNING ("wctob is unportable - " \
+                      "use gnulib module wctob for portability"), \
+     wctob (w))
+#endif
+
+
+/* Test whether *PS is in the initial state.  */
+#if @GNULIB_MBSINIT@
+# if @REPLACE_MBSINIT@
+#  undef mbsinit
+#  define mbsinit rpl_mbsinit
+# endif
+# if !@HAVE_MBSINIT@ || @REPLACE_MBSINIT@
+extern int mbsinit (const mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsinit
+# define mbsinit(p) \
+    (GL_LINK_WARNING ("mbsinit is unportable - " \
+                      "use gnulib module mbsinit for portability"), \
+     mbsinit (p))
+#endif
+
+
+/* Convert a multibyte character to a wide character.  */
+#if @GNULIB_MBRTOWC@
+# if @REPLACE_MBRTOWC@
+#  undef mbrtowc
+#  define mbrtowc rpl_mbrtowc
+# endif
+# if !@HAVE_MBRTOWC@ || @REPLACE_MBRTOWC@
+extern size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbrtowc
+# define mbrtowc(w,s,n,p) \
+    (GL_LINK_WARNING ("mbrtowc is unportable - " \
+                      "use gnulib module mbrtowc for portability"), \
+     mbrtowc (w, s, n, p))
+#endif
+
+
+/* Recognize a multibyte character.  */
+#if @GNULIB_MBRLEN@
+# if @REPLACE_MBRLEN@
+#  undef mbrlen
+#  define mbrlen rpl_mbrlen
+# endif
+# if !@HAVE_MBRLEN@ || @REPLACE_MBRLEN@
+extern size_t mbrlen (const char *s, size_t n, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbrlen
+# define mbrlen(s,n,p) \
+    (GL_LINK_WARNING ("mbrlen is unportable - " \
+                      "use gnulib module mbrlen for portability"), \
+     mbrlen (s, n, p))
+#endif
+
+
+/* Convert a string to a wide string.  */
+#if @GNULIB_MBSRTOWCS@
+# if @REPLACE_MBSRTOWCS@
+#  undef mbsrtowcs
+#  define mbsrtowcs rpl_mbsrtowcs
+# endif
+# if !@HAVE_MBSRTOWCS@ || @REPLACE_MBSRTOWCS@
+extern size_t mbsrtowcs (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsrtowcs
+# define mbsrtowcs(d,s,l,p) \
+    (GL_LINK_WARNING ("mbsrtowcs is unportable - " \
+                      "use gnulib module mbsrtowcs for portability"), \
+     mbsrtowcs (d, s, l, p))
+#endif
+
+
+/* Convert a string to a wide string.  */
+#if @GNULIB_MBSNRTOWCS@
+# if @REPLACE_MBSNRTOWCS@
+#  undef mbsnrtowcs
+#  define mbsnrtowcs rpl_mbsnrtowcs
+# endif
+# if !@HAVE_MBSNRTOWCS@ || @REPLACE_MBSNRTOWCS@
+extern size_t mbsnrtowcs (wchar_t *dest, const char **srcp, size_t srclen, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbsnrtowcs
+# define mbsnrtowcs(d,s,n,l,p) \
+    (GL_LINK_WARNING ("mbsnrtowcs is unportable - " \
+                      "use gnulib module mbsnrtowcs for portability"), \
+     mbsnrtowcs (d, s, n, l, p))
+#endif
+
+
+/* Convert a wide character to a multibyte character.  */
+#if @GNULIB_WCRTOMB@
+# if @REPLACE_WCRTOMB@
+#  undef wcrtomb
+#  define wcrtomb rpl_wcrtomb
+# endif
+# if !@HAVE_WCRTOMB@ || @REPLACE_WCRTOMB@
+extern size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcrtomb
+# define wcrtomb(s,w,p) \
+    (GL_LINK_WARNING ("wcrtomb is unportable - " \
+                      "use gnulib module wcrtomb for portability"), \
+     wcrtomb (s, w, p))
+#endif
+
+
+/* Convert a wide string to a string.  */
+#if @GNULIB_WCSRTOMBS@
+# if @REPLACE_WCSRTOMBS@
+#  undef wcsrtombs
+#  define wcsrtombs rpl_wcsrtombs
+# endif
+# if !@HAVE_WCSRTOMBS@ || @REPLACE_WCSRTOMBS@
+extern size_t wcsrtombs (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsrtombs
+# define wcsrtombs(d,s,l,p) \
+    (GL_LINK_WARNING ("wcsrtombs is unportable - " \
+                      "use gnulib module wcsrtombs for portability"), \
+     wcsrtombs (d, s, l, p))
+#endif
+
+
+/* Convert a wide string to a string.  */
+#if @GNULIB_WCSNRTOMBS@
+# if @REPLACE_WCSNRTOMBS@
+#  undef wcsnrtombs
+#  define wcsnrtombs rpl_wcsnrtombs
+# endif
+# if !@HAVE_WCSNRTOMBS@ || @REPLACE_WCSNRTOMBS@
+extern size_t wcsnrtombs (char *dest, const wchar_t **srcp, size_t srclen, size_t len, mbstate_t *ps);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsnrtombs
+# define wcsnrtombs(d,s,n,l,p) \
+    (GL_LINK_WARNING ("wcsnrtombs is unportable - " \
+                      "use gnulib module wcsnrtombs for portability"), \
+     wcsnrtombs (d, s, n, l, p))
+#endif
+
+
+/* Return the number of screen columns needed for WC.  */
+#if @GNULIB_WCWIDTH@
+# if @REPLACE_WCWIDTH@
+#  undef wcwidth
+#  define wcwidth rpl_wcwidth
+extern int wcwidth (wchar_t);
+# else
+#  if !defined wcwidth && !@HAVE_DECL_WCWIDTH@
+/* wcwidth exists but is not declared.  */
+extern int wcwidth (int /* actually wchar_t */);
+#  endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcwidth
+# define wcwidth(w) \
+    (GL_LINK_WARNING ("wcwidth is unportable - " \
+                      "use gnulib module wcwidth for portability"), \
+     wcwidth (w))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_WCHAR_H */
+#endif /* _GL_WCHAR_H */
+#endif
diff --git a/lib/gltests/Makefile.am b/lib/gltests/Makefile.am
new file mode 100644 (file)
index 0000000..fa50661
--- /dev/null
@@ -0,0 +1,156 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+
+AUTOMAKE_OPTIONS = 1.5 foreign
+
+SUBDIRS =
+TESTS =
+TESTS_ENVIRONMENT =
+noinst_PROGRAMS =
+check_PROGRAMS =
+noinst_HEADERS =
+noinst_LIBRARIES =
+check_LIBRARIES = libtests.a
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+AM_CPPFLAGS = \
+  -I. -I$(srcdir) \
+  -I../.. -I$(srcdir)/../.. \
+  -I../../lib/gl -I$(srcdir)/../../lib/gl
+
+LDADD = libtests.a ../../lib/gl/libgnu.la libtests.a $(LIBTESTS_LIBDEPS)
+
+libtests_a_SOURCES =
+libtests_a_LIBADD = $(lgltests_LIBOBJS)
+libtests_a_DEPENDENCIES = $(lgltests_LIBOBJS)
+EXTRA_libtests_a_SOURCES =
+AM_LIBTOOLFLAGS = --preserve-dup-deps
+
+## begin gnulib module c-ctype-tests
+
+TESTS += test-c-ctype
+check_PROGRAMS += test-c-ctype
+
+EXTRA_DIST += test-c-ctype.c
+
+## end   gnulib module c-ctype-tests
+
+## begin gnulib module c-strcase-tests
+
+TESTS += test-c-strcase.sh
+TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' LOCALE_TR_UTF8='@LOCALE_TR_UTF8@'
+check_PROGRAMS += test-c-strcasecmp test-c-strncasecmp
+EXTRA_DIST += test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c
+
+## end   gnulib module c-strcase-tests
+
+## begin gnulib module iconv-tests
+
+TESTS += test-iconv
+check_PROGRAMS += test-iconv
+test_iconv_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += test-iconv.c
+
+## end   gnulib module iconv-tests
+
+## begin gnulib module intprops
+
+
+EXTRA_DIST += intprops.h
+
+## end   gnulib module intprops
+
+## begin gnulib module stdbool-tests
+
+TESTS += test-stdbool
+check_PROGRAMS += test-stdbool
+
+EXTRA_DIST += test-stdbool.c
+
+## end   gnulib module stdbool-tests
+
+## begin gnulib module stdint-tests
+
+TESTS += test-stdint
+check_PROGRAMS += test-stdint
+
+EXTRA_DIST += test-stdint.c
+
+## end   gnulib module stdint-tests
+
+## begin gnulib module striconv-tests
+
+TESTS += test-striconv
+check_PROGRAMS += test-striconv
+test_striconv_LDADD = $(LDADD) @LIBICONV@
+
+EXTRA_DIST += test-striconv.c
+
+## end   gnulib module striconv-tests
+
+## begin gnulib module string-tests
+
+TESTS += test-string
+check_PROGRAMS += test-string
+
+EXTRA_DIST += test-string.c
+
+## end   gnulib module string-tests
+
+## begin gnulib module strverscmp-tests
+
+TESTS += test-strverscmp
+check_PROGRAMS += test-strverscmp
+EXTRA_DIST += test-strverscmp.c
+
+## end   gnulib module strverscmp-tests
+
+## begin gnulib module verify
+
+libtests_a_SOURCES += verify.h
+
+## end   gnulib module verify
+
+## begin gnulib module wchar-tests
+
+TESTS += test-wchar
+check_PROGRAMS += test-wchar
+
+EXTRA_DIST += test-wchar.c
+
+## end   gnulib module wchar-tests
+
+## begin gnulib module dummy
+
+libtests_a_SOURCES += dummy.c
+
+## end   gnulib module dummy
+
+# Clean up after Solaris cc.
+clean-local:
+       rm -rf SunWS_cache
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
diff --git a/lib/gltests/Makefile.in b/lib/gltests/Makefile.in
new file mode 100644 (file)
index 0000000..15593c4
--- /dev/null
@@ -0,0 +1,1204 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2009 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+TESTS = test-c-ctype$(EXEEXT) test-c-strcase.sh test-iconv$(EXEEXT) \
+       test-stdbool$(EXEEXT) test-stdint$(EXEEXT) \
+       test-striconv$(EXEEXT) test-string$(EXEEXT) \
+       test-strverscmp$(EXEEXT) test-wchar$(EXEEXT)
+noinst_PROGRAMS =
+check_PROGRAMS = test-c-ctype$(EXEEXT) test-c-strcasecmp$(EXEEXT) \
+       test-c-strncasecmp$(EXEEXT) test-iconv$(EXEEXT) \
+       test-stdbool$(EXEEXT) test-stdint$(EXEEXT) \
+       test-striconv$(EXEEXT) test-string$(EXEEXT) \
+       test-strverscmp$(EXEEXT) test-wchar$(EXEEXT)
+subdir = lib/gltests
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+libtests_a_AR = $(AR) $(ARFLAGS)
+am__DEPENDENCIES_1 =
+am_libtests_a_OBJECTS = dummy.$(OBJEXT)
+libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+PROGRAMS = $(noinst_PROGRAMS)
+test_c_ctype_SOURCES = test-c-ctype.c
+test_c_ctype_OBJECTS = test-c-ctype.$(OBJEXT)
+test_c_ctype_LDADD = $(LDADD)
+test_c_ctype_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \
+       libtests.a $(am__DEPENDENCIES_1)
+test_c_strcasecmp_SOURCES = test-c-strcasecmp.c
+test_c_strcasecmp_OBJECTS = test-c-strcasecmp.$(OBJEXT)
+test_c_strcasecmp_LDADD = $(LDADD)
+test_c_strcasecmp_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \
+       libtests.a $(am__DEPENDENCIES_1)
+test_c_strncasecmp_SOURCES = test-c-strncasecmp.c
+test_c_strncasecmp_OBJECTS = test-c-strncasecmp.$(OBJEXT)
+test_c_strncasecmp_LDADD = $(LDADD)
+test_c_strncasecmp_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \
+       libtests.a $(am__DEPENDENCIES_1)
+test_iconv_SOURCES = test-iconv.c
+test_iconv_OBJECTS = test-iconv.$(OBJEXT)
+am__DEPENDENCIES_2 = libtests.a ../../lib/gl/libgnu.la libtests.a \
+       $(am__DEPENDENCIES_1)
+test_iconv_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_stdbool_SOURCES = test-stdbool.c
+test_stdbool_OBJECTS = test-stdbool.$(OBJEXT)
+test_stdbool_LDADD = $(LDADD)
+test_stdbool_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \
+       libtests.a $(am__DEPENDENCIES_1)
+test_stdint_SOURCES = test-stdint.c
+test_stdint_OBJECTS = test-stdint.$(OBJEXT)
+test_stdint_LDADD = $(LDADD)
+test_stdint_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \
+       libtests.a $(am__DEPENDENCIES_1)
+test_striconv_SOURCES = test-striconv.c
+test_striconv_OBJECTS = test-striconv.$(OBJEXT)
+test_striconv_DEPENDENCIES = $(am__DEPENDENCIES_2)
+test_string_SOURCES = test-string.c
+test_string_OBJECTS = test-string.$(OBJEXT)
+test_string_LDADD = $(LDADD)
+test_string_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \
+       libtests.a $(am__DEPENDENCIES_1)
+test_strverscmp_SOURCES = test-strverscmp.c
+test_strverscmp_OBJECTS = test-strverscmp.$(OBJEXT)
+test_strverscmp_LDADD = $(LDADD)
+test_strverscmp_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la \
+       libtests.a $(am__DEPENDENCIES_1)
+test_wchar_SOURCES = test-wchar.c
+test_wchar_OBJECTS = test-wchar.$(OBJEXT)
+test_wchar_LDADD = $(LDADD)
+test_wchar_DEPENDENCIES = libtests.a ../../lib/gl/libgnu.la libtests.a \
+       $(am__DEPENDENCIES_1)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
+       test-c-ctype.c test-c-strcasecmp.c test-c-strncasecmp.c \
+       test-iconv.c test-stdbool.c test-stdint.c test-striconv.c \
+       test-string.c test-strverscmp.c test-wchar.c
+DIST_SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
+       test-c-ctype.c test-c-strcasecmp.c test-c-strncasecmp.c \
+       test-iconv.c test-stdbool.c test-stdint.c test-striconv.c \
+       test-string.c test-strverscmp.c test-wchar.c
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 foreign
+SUBDIRS = 
+TESTS_ENVIRONMENT = EXEEXT='@EXEEXT@' LOCALE_FR='@LOCALE_FR@' \
+       LOCALE_TR_UTF8='@LOCALE_TR_UTF8@'
+noinst_HEADERS = 
+noinst_LIBRARIES = 
+check_LIBRARIES = libtests.a
+EXTRA_DIST = test-c-ctype.c test-c-strcase.sh test-c-strcasecmp.c \
+       test-c-strncasecmp.c test-iconv.c intprops.h test-stdbool.c \
+       test-stdint.c test-striconv.c test-string.c test-strverscmp.c \
+       test-wchar.c
+BUILT_SOURCES = 
+SUFFIXES = 
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS = 
+CLEANFILES = 
+DISTCLEANFILES = 
+MAINTAINERCLEANFILES = 
+AM_CPPFLAGS = \
+  -I. -I$(srcdir) \
+  -I../.. -I$(srcdir)/../.. \
+  -I../../lib/gl -I$(srcdir)/../../lib/gl
+
+LDADD = libtests.a ../../lib/gl/libgnu.la libtests.a $(LIBTESTS_LIBDEPS)
+libtests_a_SOURCES = verify.h dummy.c
+libtests_a_LIBADD = $(lgltests_LIBOBJS)
+libtests_a_DEPENDENCIES = $(lgltests_LIBOBJS)
+EXTRA_libtests_a_SOURCES = 
+AM_LIBTOOLFLAGS = --preserve-dup-deps
+test_iconv_LDADD = $(LDADD) @LIBICONV@
+test_striconv_LDADD = $(LDADD) @LIBICONV@
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/gltests/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign lib/gltests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkLIBRARIES:
+       -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES)
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libtests.a: $(libtests_a_OBJECTS) $(libtests_a_DEPENDENCIES) 
+       -rm -f libtests.a
+       $(libtests_a_AR) libtests.a $(libtests_a_OBJECTS) $(libtests_a_LIBADD)
+       $(RANLIB) libtests.a
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+
+clean-noinstPROGRAMS:
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+test-c-ctype$(EXEEXT): $(test_c_ctype_OBJECTS) $(test_c_ctype_DEPENDENCIES) 
+       @rm -f test-c-ctype$(EXEEXT)
+       $(LINK) $(test_c_ctype_OBJECTS) $(test_c_ctype_LDADD) $(LIBS)
+test-c-strcasecmp$(EXEEXT): $(test_c_strcasecmp_OBJECTS) $(test_c_strcasecmp_DEPENDENCIES) 
+       @rm -f test-c-strcasecmp$(EXEEXT)
+       $(LINK) $(test_c_strcasecmp_OBJECTS) $(test_c_strcasecmp_LDADD) $(LIBS)
+test-c-strncasecmp$(EXEEXT): $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_DEPENDENCIES) 
+       @rm -f test-c-strncasecmp$(EXEEXT)
+       $(LINK) $(test_c_strncasecmp_OBJECTS) $(test_c_strncasecmp_LDADD) $(LIBS)
+test-iconv$(EXEEXT): $(test_iconv_OBJECTS) $(test_iconv_DEPENDENCIES) 
+       @rm -f test-iconv$(EXEEXT)
+       $(LINK) $(test_iconv_OBJECTS) $(test_iconv_LDADD) $(LIBS)
+test-stdbool$(EXEEXT): $(test_stdbool_OBJECTS) $(test_stdbool_DEPENDENCIES) 
+       @rm -f test-stdbool$(EXEEXT)
+       $(LINK) $(test_stdbool_OBJECTS) $(test_stdbool_LDADD) $(LIBS)
+test-stdint$(EXEEXT): $(test_stdint_OBJECTS) $(test_stdint_DEPENDENCIES) 
+       @rm -f test-stdint$(EXEEXT)
+       $(LINK) $(test_stdint_OBJECTS) $(test_stdint_LDADD) $(LIBS)
+test-striconv$(EXEEXT): $(test_striconv_OBJECTS) $(test_striconv_DEPENDENCIES) 
+       @rm -f test-striconv$(EXEEXT)
+       $(LINK) $(test_striconv_OBJECTS) $(test_striconv_LDADD) $(LIBS)
+test-string$(EXEEXT): $(test_string_OBJECTS) $(test_string_DEPENDENCIES) 
+       @rm -f test-string$(EXEEXT)
+       $(LINK) $(test_string_OBJECTS) $(test_string_LDADD) $(LIBS)
+test-strverscmp$(EXEEXT): $(test_strverscmp_OBJECTS) $(test_strverscmp_DEPENDENCIES) 
+       @rm -f test-strverscmp$(EXEEXT)
+       $(LINK) $(test_strverscmp_OBJECTS) $(test_strverscmp_LDADD) $(LIBS)
+test-wchar$(EXEEXT): $(test_wchar_OBJECTS) $(test_wchar_DEPENDENCIES) 
+       @rm -f test-wchar$(EXEEXT)
+       $(LINK) $(test_wchar_OBJECTS) $(test_wchar_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-ctype.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strcasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strncasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdbool.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdint.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-striconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-string.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strverscmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-wchar.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list=' $(TESTS) '; \
+       $(am__tty_colors); \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=XPASS; \
+             ;; \
+             *) \
+               col=$$grn; res=PASS; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xfail=`expr $$xfail + 1`; \
+               col=$$lgn; res=XFAIL; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=FAIL; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             col=$$blu; res=SKIP; \
+           fi; \
+           echo "$${col}$$res$${std}: $$tst"; \
+         done; \
+         if test "$$all" -eq 1; then \
+           tests="test"; \
+           All=""; \
+         else \
+           tests="tests"; \
+           All="All "; \
+         fi; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="$$All$$all $$tests passed"; \
+           else \
+             if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+             banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all $$tests failed"; \
+           else \
+             if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+             banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           if test "$$skip" -eq 1; then \
+             skipped="($$skip test was not run)"; \
+           else \
+             skipped="($$skip tests were not run)"; \
+           fi; \
+           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         if test "$$failed" -eq 0; then \
+           echo "$$grn$$dashes"; \
+         else \
+           echo "$$red$$dashes"; \
+         fi; \
+         echo "$$banner"; \
+         test -z "$$skipped" || echo "$$skipped"; \
+         test -z "$$report" || echo "$$report"; \
+         echo "$$dashes$$std"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+       -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+       clean-libtool clean-local clean-noinstLIBRARIES \
+       clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+       check-am ctags-recursive install install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-TESTS check-am clean \
+       clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+       clean-libtool clean-local clean-noinstLIBRARIES \
+       clean-noinstPROGRAMS ctags ctags-recursive distclean \
+       distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \
+       tags-recursive uninstall uninstall-am
+
+
+# Clean up after Solaris cc.
+clean-local:
+       rm -rf SunWS_cache
+
+mostlyclean-local: mostlyclean-generic
+       @for dir in '' $(MOSTLYCLEANDIRS); do \
+         if test -n "$$dir" && test -d $$dir; then \
+           echo "rmdir $$dir"; rmdir $$dir; \
+         fi; \
+       done; \
+       :
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/gltests/dummy.c b/lib/gltests/dummy.c
new file mode 100644 (file)
index 0000000..ccb5c26
--- /dev/null
@@ -0,0 +1,42 @@
+/* A dummy file, to prevent empty libraries from breaking builds.
+   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Some systems, reportedly OpenBSD and Mac OS X, refuse to create
+   libraries without any object files.  You might get an error like:
+
+   > ar cru .libs/libgl.a
+   > ar: no archive members specified
+
+   Compiling this file, and adding its object file to the library, will
+   prevent the library from being empty.  */
+
+/* Some systems, such as Solaris with cc 5.0, refuse to work with libraries
+   that don't export any symbol.  You might get an error like:
+
+   > cc ... libgnu.a
+   > ild: (bad file) garbled symbol table in archive ../gllib/libgnu.a
+
+   Compiling this file, and adding its object file to the library, will
+   prevent the library from exporting no symbols.  */
+
+#ifdef __sun
+/* This declaration ensures that the library will export at least 1 symbol.  */
+int gl_dummy_symbol;
+#else
+/* This declaration is solely to ensure that after preprocessing
+   this file is never empty.  */
+typedef int dummy;
+#endif
diff --git a/lib/gltests/intprops.h b/lib/gltests/intprops.h
new file mode 100644 (file)
index 0000000..002161e
--- /dev/null
@@ -0,0 +1,77 @@
+/* intprops.h -- properties of integer types
+
+   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert.  */
+
+#include <limits.h>
+
+/* The extra casts in the following macros work around compiler bugs,
+   e.g., in Cray C 5.0.3.0.  */
+
+/* True if the arithmetic type T is an integer type.  bool counts as
+   an integer.  */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+   complement, ones' complement, or signed magnitude representation,
+   respectively.  Much GNU code assumes two's complement, but some
+   people like to be portable to all possible C hosts.  */
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the arithmetic type T is signed.  */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T.  These
+   macros have undefined behavior if T is signed and has padding bits.
+   If this is a problem for you, please let us know how to fix it for
+   your host.  */
+#define TYPE_MINIMUM(t) \
+  ((t) (! TYPE_SIGNED (t) \
+       ? (t) 0 \
+       : TYPE_SIGNED_MAGNITUDE (t) \
+       ? ~ (t) 0 \
+       : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+  ((t) (! TYPE_SIGNED (t) \
+       ? (t) -1 \
+       : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+/* Return zero if T can be determined to be an unsigned type.
+   Otherwise, return 1.
+   When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a
+   tighter bound.  Otherwise, it overestimates the true bound by one byte
+   when applied to unsigned types of size 2, 4, 16, ... bytes.
+   The symbol signed_type_or_expr__ is private to this header file.  */
+#if __GNUC__ >= 2
+# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t))
+#else
+# define signed_type_or_expr__(t) 1
+#endif
+
+/* Bound on length of the string representing an integer type or expression T.
+   Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485;
+   add 1 for integer division truncation; add 1 more for a minus sign
+   if needed.  */
+#define INT_STRLEN_BOUND(t) \
+  ((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \
+   + signed_type_or_expr__ (t) + 1)
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+   including the terminating null.  */
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
diff --git a/lib/gltests/test-c-ctype.c b/lib/gltests/test-c-ctype.c
new file mode 100644 (file)
index 0000000..6d7fe1b
--- /dev/null
@@ -0,0 +1,398 @@
+/* Test of character handling in C locale.
+   Copyright (C) 2005, 2007-2008 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2005.  */
+
+#include <config.h>
+
+#include "c-ctype.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+  do                                                                        \
+    {                                                                       \
+      if (!(expr))                                                          \
+        {                                                                   \
+          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+          fflush (stderr);                                                  \
+          abort ();                                                         \
+        }                                                                   \
+    }                                                                       \
+  while (0)
+
+static void
+test_all (void)
+{
+  int c;
+
+  for (c = -0x80; c < 0x100; c++)
+    {
+      ASSERT (c_isascii (c) == (c >= 0 && c < 0x80));
+
+      switch (c)
+       {
+       case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+       case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+       case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+       case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+       case 'Y': case 'Z':
+       case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+       case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+       case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+       case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+       case 'y': case 'z':
+       case '0': case '1': case '2': case '3': case '4': case '5':
+       case '6': case '7': case '8': case '9':
+         ASSERT (c_isalnum (c) == 1);
+         break;
+       default:
+         ASSERT (c_isalnum (c) == 0);
+         break;
+       }
+
+      switch (c)
+       {
+       case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+       case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+       case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+       case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+       case 'Y': case 'Z':
+       case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+       case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+       case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+       case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+       case 'y': case 'z':
+         ASSERT (c_isalpha (c) == 1);
+         break;
+       default:
+         ASSERT (c_isalpha (c) == 0);
+         break;
+       }
+
+      switch (c)
+       {
+       case '\t': case ' ':
+         ASSERT (c_isblank (c) == 1);
+         break;
+       default:
+         ASSERT (c_isblank (c) == 0);
+         break;
+       }
+
+      ASSERT (c_iscntrl (c) == ((c >= 0 && c < 0x20) || c == 0x7f));
+
+      switch (c)
+       {
+       case '0': case '1': case '2': case '3': case '4': case '5':
+       case '6': case '7': case '8': case '9':
+         ASSERT (c_isdigit (c) == 1);
+         break;
+       default:
+         ASSERT (c_isdigit (c) == 0);
+         break;
+       }
+
+      switch (c)
+       {
+       case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+       case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+       case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+       case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+       case 'y': case 'z':
+         ASSERT (c_islower (c) == 1);
+         break;
+       default:
+         ASSERT (c_islower (c) == 0);
+         break;
+       }
+
+      ASSERT (c_isgraph (c) == ((c >= 0x20 && c < 0x7f) && c != ' '));
+
+      ASSERT (c_isprint (c) == (c >= 0x20 && c < 0x7f));
+
+      ASSERT (c_ispunct (c) == (c_isgraph (c) && !c_isalnum (c)));
+
+      switch (c)
+       {
+       case ' ': case '\t': case '\n': case '\v': case '\f': case '\r':
+         ASSERT (c_isspace (c) == 1);
+         break;
+       default:
+         ASSERT (c_isspace (c) == 0);
+         break;
+       }
+
+      switch (c)
+       {
+       case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+       case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+       case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+       case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+       case 'Y': case 'Z':
+         ASSERT (c_isupper (c) == 1);
+         break;
+       default:
+         ASSERT (c_isupper (c) == 0);
+         break;
+       }
+
+      switch (c)
+       {
+       case '0': case '1': case '2': case '3': case '4': case '5':
+       case '6': case '7': case '8': case '9':
+       case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+       case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+         ASSERT (c_isxdigit (c) == 1);
+         break;
+       default:
+         ASSERT (c_isxdigit (c) == 0);
+         break;
+       }
+
+      switch (c)
+       {
+       case 'A':
+         ASSERT (c_tolower (c) == 'a');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'B':
+         ASSERT (c_tolower (c) == 'b');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'C':
+         ASSERT (c_tolower (c) == 'c');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'D':
+         ASSERT (c_tolower (c) == 'd');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'E':
+         ASSERT (c_tolower (c) == 'e');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'F':
+         ASSERT (c_tolower (c) == 'f');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'G':
+         ASSERT (c_tolower (c) == 'g');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'H':
+         ASSERT (c_tolower (c) == 'h');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'I':
+         ASSERT (c_tolower (c) == 'i');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'J':
+         ASSERT (c_tolower (c) == 'j');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'K':
+         ASSERT (c_tolower (c) == 'k');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'L':
+         ASSERT (c_tolower (c) == 'l');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'M':
+         ASSERT (c_tolower (c) == 'm');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'N':
+         ASSERT (c_tolower (c) == 'n');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'O':
+         ASSERT (c_tolower (c) == 'o');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'P':
+         ASSERT (c_tolower (c) == 'p');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'Q':
+         ASSERT (c_tolower (c) == 'q');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'R':
+         ASSERT (c_tolower (c) == 'r');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'S':
+         ASSERT (c_tolower (c) == 's');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'T':
+         ASSERT (c_tolower (c) == 't');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'U':
+         ASSERT (c_tolower (c) == 'u');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'V':
+         ASSERT (c_tolower (c) == 'v');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'W':
+         ASSERT (c_tolower (c) == 'w');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'X':
+         ASSERT (c_tolower (c) == 'x');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'Y':
+         ASSERT (c_tolower (c) == 'y');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'Z':
+         ASSERT (c_tolower (c) == 'z');
+         ASSERT (c_toupper (c) == c);
+         break;
+       case 'a':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'A');
+         break;
+       case 'b':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'B');
+         break;
+       case 'c':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'C');
+         break;
+       case 'd':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'D');
+         break;
+       case 'e':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'E');
+         break;
+       case 'f':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'F');
+         break;
+       case 'g':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'G');
+         break;
+       case 'h':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'H');
+         break;
+       case 'i':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'I');
+         break;
+       case 'j':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'J');
+         break;
+       case 'k':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'K');
+         break;
+       case 'l':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'L');
+         break;
+       case 'm':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'M');
+         break;
+       case 'n':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'N');
+         break;
+       case 'o':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'O');
+         break;
+       case 'p':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'P');
+         break;
+       case 'q':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'Q');
+         break;
+       case 'r':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'R');
+         break;
+       case 's':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'S');
+         break;
+       case 't':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'T');
+         break;
+       case 'u':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'U');
+         break;
+       case 'v':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'V');
+         break;
+       case 'w':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'W');
+         break;
+       case 'x':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'X');
+         break;
+       case 'y':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'Y');
+         break;
+       case 'z':
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == 'Z');
+         break;
+       default:
+         ASSERT (c_tolower (c) == c);
+         ASSERT (c_toupper (c) == c);
+         break;
+       }
+    }
+}
+
+int
+main ()
+{
+  test_all ();
+
+  setlocale (LC_ALL, "de_DE");
+  test_all ();
+
+  setlocale (LC_ALL, "ja_JP.EUC-JP");
+  test_all ();
+
+  return 0;
+}
diff --git a/lib/gltests/test-c-strcase.sh b/lib/gltests/test-c-strcase.sh
new file mode 100755 (executable)
index 0000000..5fcf906
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Test in the C locale.
+./test-c-strcasecmp${EXEEXT} || exit 1
+./test-c-strncasecmp${EXEEXT} || exit 1
+
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: ${LOCALE_FR=fr_FR}
+if test $LOCALE_FR != none; then
+  LC_ALL=$LOCALE_FR ./test-c-strcasecmp${EXEEXT} locale || exit 1
+  LC_ALL=$LOCALE_FR ./test-c-strncasecmp${EXEEXT} locale || exit 1
+fi
+
+# Test in a Turkish UTF-8 locale.
+: ${LOCALE_TR_UTF8=tr_TR.UTF-8}
+if test $LOCALE_TR_UTF8 != none; then
+  LC_ALL=$LOCALE_TR_UTF8 ./test-c-strcasecmp${EXEEXT} locale || exit 1
+  LC_ALL=$LOCALE_TR_UTF8 ./test-c-strncasecmp${EXEEXT} locale || exit 1
+fi
+
+exit 0
diff --git a/lib/gltests/test-c-strcasecmp.c b/lib/gltests/test-c-strcasecmp.c
new file mode 100644 (file)
index 0000000..16244b9
--- /dev/null
@@ -0,0 +1,77 @@
+/* Test of case-insensitive string comparison function.
+   Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+#include "c-strcase.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+  do                                                                        \
+    {                                                                       \
+      if (!(expr))                                                          \
+        {                                                                   \
+          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+          fflush (stderr);                                                  \
+          abort ();                                                         \
+        }                                                                   \
+    }                                                                       \
+  while (0)
+
+int
+main (int argc, char *argv[])
+{
+  if (argc > 1)
+    {
+      /* configure should already have checked that the locale is supported.  */
+      if (setlocale (LC_ALL, "") == NULL)
+       return 1;
+    }
+
+  ASSERT (c_strcasecmp ("paragraph", "Paragraph") == 0);
+
+  ASSERT (c_strcasecmp ("paragrapH", "parAgRaph") == 0);
+
+  ASSERT (c_strcasecmp ("paragraph", "paraLyzed") < 0);
+  ASSERT (c_strcasecmp ("paraLyzed", "paragraph") > 0);
+
+  ASSERT (c_strcasecmp ("para", "paragraph") < 0);
+  ASSERT (c_strcasecmp ("paragraph", "para") > 0);
+
+  /* The following tests shows how c_strcasecmp() is different from
+     strcasecmp().  */
+
+  ASSERT (c_strcasecmp ("\311mile", "\351mile") < 0);
+  ASSERT (c_strcasecmp ("\351mile", "\311mile") > 0);
+
+  /* The following tests shows how c_strcasecmp() is different from
+     mbscasecmp().  */
+
+  ASSERT (c_strcasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R") > 0); /* özgür */
+  ASSERT (c_strcasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r") < 0); /* özgür */
+
+  /* This test shows how strings of different size cannot compare equal.  */
+  ASSERT (c_strcasecmp ("turkish", "TURK\304\260SH") < 0);
+  ASSERT (c_strcasecmp ("TURK\304\260SH", "turkish") > 0);
+
+  return 0;
+}
diff --git a/lib/gltests/test-c-strncasecmp.c b/lib/gltests/test-c-strncasecmp.c
new file mode 100644 (file)
index 0000000..7d6dbf5
--- /dev/null
@@ -0,0 +1,91 @@
+/* Test of case-insensitive string comparison function.
+   Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+#include "c-strcase.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+  do                                                                        \
+    {                                                                       \
+      if (!(expr))                                                          \
+        {                                                                   \
+          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+          fflush (stderr);                                                  \
+          abort ();                                                         \
+        }                                                                   \
+    }                                                                       \
+  while (0)
+
+int
+main (int argc, char *argv[])
+{
+  if (argc > 1)
+    {
+      /* configure should already have checked that the locale is supported.  */
+      if (setlocale (LC_ALL, "") == NULL)
+       return 1;
+    }
+
+  ASSERT (c_strncasecmp ("paragraph", "Paragraph", 1000000) == 0);
+  ASSERT (c_strncasecmp ("paragraph", "Paragraph", 9) == 0);
+
+  ASSERT (c_strncasecmp ("paragrapH", "parAgRaph", 1000000) == 0);
+  ASSERT (c_strncasecmp ("paragrapH", "parAgRaph", 9) == 0);
+
+  ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 10) < 0);
+  ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 9) < 0);
+  ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 5) < 0);
+  ASSERT (c_strncasecmp ("paragraph", "paraLyzed", 4) == 0);
+  ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 10) > 0);
+  ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 9) > 0);
+  ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 5) > 0);
+  ASSERT (c_strncasecmp ("paraLyzed", "paragraph", 4) == 0);
+
+  ASSERT (c_strncasecmp ("para", "paragraph", 10) < 0);
+  ASSERT (c_strncasecmp ("para", "paragraph", 9) < 0);
+  ASSERT (c_strncasecmp ("para", "paragraph", 5) < 0);
+  ASSERT (c_strncasecmp ("para", "paragraph", 4) == 0);
+  ASSERT (c_strncasecmp ("paragraph", "para", 10) > 0);
+  ASSERT (c_strncasecmp ("paragraph", "para", 9) > 0);
+  ASSERT (c_strncasecmp ("paragraph", "para", 5) > 0);
+  ASSERT (c_strncasecmp ("paragraph", "para", 4) == 0);
+
+  /* The following tests shows how c_strncasecmp() is different from
+     strncasecmp().  */
+
+  ASSERT (c_strncasecmp ("\311mily", "\351mile", 4) < 0);
+  ASSERT (c_strncasecmp ("\351mile", "\311mily", 4) > 0);
+
+  /* The following tests shows how c_strncasecmp() is different from
+     mbsncasecmp().  */
+
+  ASSERT (c_strncasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R", 99) > 0); /* özgür */
+  ASSERT (c_strncasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r", 99) < 0); /* özgür */
+
+  /* This test shows how strings of different size cannot compare equal.  */
+  ASSERT (c_strncasecmp ("turkish", "TURK\304\260SH", 7) < 0);
+  ASSERT (c_strncasecmp ("TURK\304\260SH", "turkish", 7) > 0);
+
+  return 0;
+}
diff --git a/lib/gltests/test-iconv.c b/lib/gltests/test-iconv.c
new file mode 100644 (file)
index 0000000..8bac176
--- /dev/null
@@ -0,0 +1,149 @@
+/* Test of character set conversion.
+   Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+#if HAVE_ICONV
+# include <iconv.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+  do                                                                        \
+    {                                                                       \
+      if (!(expr))                                                          \
+        {                                                                   \
+          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+          fflush (stderr);                                                  \
+          abort ();                                                         \
+        }                                                                   \
+    }                                                                       \
+  while (0)
+
+int
+main ()
+{
+#if HAVE_ICONV
+  /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+     and UTF-8.  */
+  iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+  iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8");
+
+  ASSERT (cd_88591_to_utf8 != (iconv_t)(-1));
+  ASSERT (cd_utf8_to_88591 != (iconv_t)(-1));
+
+  /* Test conversion from ISO-8859-1 to UTF-8 with no errors.  */
+  {
+    static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+    static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+    char buf[50];
+    const char *inptr = input;
+    size_t inbytesleft = strlen (input);
+    char *outptr = buf;
+    size_t outbytesleft = sizeof (buf);
+    size_t res = iconv (cd_88591_to_utf8,
+                       (ICONV_CONST char **) &inptr, &inbytesleft,
+                       &outptr, &outbytesleft);
+    ASSERT (res == 0 && inbytesleft == 0);
+    ASSERT (outptr == buf + strlen (expected));
+    ASSERT (memcmp (buf, expected, strlen (expected)) == 0);
+  }
+
+  /* Test conversion from ISO-8859-1 to UTF-8 with E2BIG.  */
+  {
+    static const char input[] = "\304";
+    static char buf[2] = { (char)0xDE, (char)0xAD };
+    const char *inptr = input;
+    size_t inbytesleft = 1;
+    char *outptr = buf;
+    size_t outbytesleft = 1;
+    size_t res = iconv (cd_88591_to_utf8,
+                       (ICONV_CONST char **) &inptr, &inbytesleft,
+                       &outptr, &outbytesleft);
+    ASSERT (res == (size_t)(-1) && errno == E2BIG);
+    ASSERT (inbytesleft == 1);
+    ASSERT (outbytesleft == 1);
+    ASSERT ((unsigned char) buf[1] == 0xAD);
+    ASSERT ((unsigned char) buf[0] == 0xDE);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with no errors.  */
+  {
+    static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+    static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+    char buf[50];
+    const char *inptr = input;
+    size_t inbytesleft = strlen (input);
+    char *outptr = buf;
+    size_t outbytesleft = sizeof (buf);
+    size_t res = iconv (cd_utf8_to_88591,
+                       (ICONV_CONST char **) &inptr, &inbytesleft,
+                       &outptr, &outbytesleft);
+    ASSERT (res == 0 && inbytesleft == 0);
+    ASSERT (outptr == buf + strlen (expected));
+    ASSERT (memcmp (buf, expected, strlen (expected)) == 0);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ.  */
+  {
+    static const char input[] = "\342\202\254"; /* EURO SIGN */
+    char buf[10];
+    const char *inptr = input;
+    size_t inbytesleft = strlen (input);
+    char *outptr = buf;
+    size_t outbytesleft = sizeof (buf);
+    size_t res = iconv (cd_utf8_to_88591,
+                       (ICONV_CONST char **) &inptr, &inbytesleft,
+                       &outptr, &outbytesleft);
+    if (res == (size_t)(-1))
+      {
+        ASSERT (errno == EILSEQ);
+       ASSERT (inbytesleft == strlen (input) && outptr == buf);
+      }
+    else
+      {
+       ASSERT (res == 1);
+       ASSERT (inbytesleft == 0);
+      }
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL.  */
+  {
+    static const char input[] = "\342";
+    char buf[10];
+    const char *inptr = input;
+    size_t inbytesleft = 1;
+    char *outptr = buf;
+    size_t outbytesleft = sizeof (buf);
+    size_t res = iconv (cd_utf8_to_88591,
+                       (ICONV_CONST char **) &inptr, &inbytesleft,
+                       &outptr, &outbytesleft);
+    ASSERT (res == (size_t)(-1) && errno == EINVAL);
+    ASSERT (inbytesleft == 1 && outptr == buf);
+  }
+
+  iconv_close (cd_88591_to_utf8);
+  iconv_close (cd_utf8_to_88591);
+#endif
+
+  return 0;
+}
diff --git a/lib/gltests/test-stdbool.c b/lib/gltests/test-stdbool.c
new file mode 100644 (file)
index 0000000..30d5321
--- /dev/null
@@ -0,0 +1,95 @@
+/* Test of <stdbool.h> substitute.
+   Copyright (C) 2002-2007 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+#include <stdbool.h>
+
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>.  */
+struct s { _Bool s: 1; _Bool t; } s;
+#endif
+
+char a[true == 1 ? 1 : -1];
+char b[false == 0 ? 1 : -1];
+char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>.  */
+char d[(bool) 0.5 == true ? 1 : -1];
+bool e = &s;
+#endif
+char f[(_Bool) 0.0 == false ? 1 : -1];
+char g[true];
+char h[sizeof (_Bool)];
+#if 0 /* See above.  */
+char i[sizeof s.t];
+#endif
+enum { j = false, k = true, l = false * true, m = true * 256 };
+_Bool n[m];
+char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>.  */
+#if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+    reported by James Lemley on 2005-10-05; see
+    http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+    This test is not quite right, since xlc is allowed to
+    reject this program, as the initializer for xlcbug is
+    not one of the forms that C requires support for.
+    However, doing the test right would require a run-time
+    test, and that would make cross-compilation harder.
+    Let us hope that IBM fixes the xlc bug, and also adds
+    support for this kind of constant expression.  In the
+    meantime, this test will reject xlc, which is OK, since
+    our stdbool.h substitute should suffice.  We also test
+    this with GCC, where it should work, to detect more
+    quickly whether someone messes up the test in the
+    future.  */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+#endif
+#endif
+/* Catch a bug in an HP-UX C compiler.  See
+   http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+   http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+_Bool q = true;
+_Bool *pq = &q;
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/lib/gltests/test-stdint.c b/lib/gltests/test-stdint.c
new file mode 100644 (file)
index 0000000..a2bf42a
--- /dev/null
@@ -0,0 +1,360 @@
+/* Test of <stdint.h> substitute.
+   Copyright (C) 2006-2008 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2006.  */
+
+#include <config.h>
+
+/* Whether to enable pedantic checks. */
+#define DO_PEDANTIC 0
+
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#include <stdint.h>
+
+#include "verify.h"
+#include "intprops.h"
+
+#if __GNUC__ >= 2 && DO_PEDANTIC
+# define verify_same_types(expr1,expr2)  \
+    extern void _verify_func(__LINE__) (__typeof__ (expr1) *); \
+    extern void _verify_func(__LINE__) (__typeof__ (expr2) *);
+# define _verify_func(line) _verify_func2(line)
+# define _verify_func2(line) verify_func_ ## line
+#else
+# define verify_same_types(expr1,expr2) extern void verify_func (int)
+#endif
+
+/* 7.18.1.1. Exact-width integer types */
+/* 7.18.2.1. Limits of exact-width integer types */
+
+int8_t a1[3] = { INT8_C (17), INT8_MIN, INT8_MAX };
+verify (TYPE_MINIMUM (int8_t) == INT8_MIN);
+verify (TYPE_MAXIMUM (int8_t) == INT8_MAX);
+verify_same_types (INT8_MIN, (int8_t) 0 + 0);
+verify_same_types (INT8_MAX, (int8_t) 0 + 0);
+
+int16_t a2[3] = { INT16_C (17), INT16_MIN, INT16_MAX };
+verify (TYPE_MINIMUM (int16_t) == INT16_MIN);
+verify (TYPE_MAXIMUM (int16_t) == INT16_MAX);
+verify_same_types (INT16_MIN, (int16_t) 0 + 0);
+verify_same_types (INT16_MAX, (int16_t) 0 + 0);
+
+int32_t a3[3] = { INT32_C (17), INT32_MIN, INT32_MAX };
+verify (TYPE_MINIMUM (int32_t) == INT32_MIN);
+verify (TYPE_MAXIMUM (int32_t) == INT32_MAX);
+verify_same_types (INT32_MIN, (int32_t) 0 + 0);
+verify_same_types (INT32_MAX, (int32_t) 0 + 0);
+
+#ifdef INT64_MAX
+int64_t a4[3] = { INT64_C (17), INT64_MIN, INT64_MAX };
+verify (TYPE_MINIMUM (int64_t) == INT64_MIN);
+verify (TYPE_MAXIMUM (int64_t) == INT64_MAX);
+verify_same_types (INT64_MIN, (int64_t) 0 + 0);
+verify_same_types (INT64_MAX, (int64_t) 0 + 0);
+#endif
+
+uint8_t b1[2] = { UINT8_C (17), UINT8_MAX };
+verify (TYPE_MAXIMUM (uint8_t) == UINT8_MAX);
+verify_same_types (UINT8_MAX, (uint8_t) 0 + 0);
+
+uint16_t b2[2] = { UINT16_C (17), UINT16_MAX };
+verify (TYPE_MAXIMUM (uint16_t) == UINT16_MAX);
+verify_same_types (UINT16_MAX, (uint16_t) 0 + 0);
+
+uint32_t b3[2] = { UINT32_C (17), UINT32_MAX };
+verify (TYPE_MAXIMUM (uint32_t) == UINT32_MAX);
+verify_same_types (UINT32_MAX, (uint32_t) 0 + 0);
+
+#ifdef UINT64_MAX
+uint64_t b4[2] = { UINT64_C (17), UINT64_MAX };
+verify (TYPE_MAXIMUM (uint64_t) == UINT64_MAX);
+verify_same_types (UINT64_MAX, (uint64_t) 0 + 0);
+#endif
+
+#if INT8_MIN && INT8_MAX && INT16_MIN && INT16_MAX && INT32_MIN && INT32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#if UINT8_MAX && UINT16_MAX && UINT32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+/* 7.18.1.2. Minimum-width integer types */
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+int_least8_t c1[3] = { 17, INT_LEAST8_MIN, INT_LEAST8_MAX };
+verify (TYPE_MINIMUM (int_least8_t) == INT_LEAST8_MIN);
+verify (TYPE_MAXIMUM (int_least8_t) == INT_LEAST8_MAX);
+verify_same_types (INT_LEAST8_MIN, (int_least8_t) 0 + 0);
+verify_same_types (INT_LEAST8_MAX, (int_least8_t) 0 + 0);
+
+int_least16_t c2[3] = { 17, INT_LEAST16_MIN, INT_LEAST16_MAX };
+verify (TYPE_MINIMUM (int_least16_t) == INT_LEAST16_MIN);
+verify (TYPE_MAXIMUM (int_least16_t) == INT_LEAST16_MAX);
+verify_same_types (INT_LEAST16_MIN, (int_least16_t) 0 + 0);
+verify_same_types (INT_LEAST16_MAX, (int_least16_t) 0 + 0);
+
+int_least32_t c3[3] = { 17, INT_LEAST32_MIN, INT_LEAST32_MAX };
+verify (TYPE_MINIMUM (int_least32_t) == INT_LEAST32_MIN);
+verify (TYPE_MAXIMUM (int_least32_t) == INT_LEAST32_MAX);
+verify_same_types (INT_LEAST32_MIN, (int_least32_t) 0 + 0);
+verify_same_types (INT_LEAST32_MAX, (int_least32_t) 0 + 0);
+
+#ifdef INT_LEAST64_MAX
+int_least64_t c4[3] = { 17, INT_LEAST64_MIN, INT_LEAST64_MAX };
+verify (TYPE_MINIMUM (int_least64_t) == INT_LEAST64_MIN);
+verify (TYPE_MAXIMUM (int_least64_t) == INT_LEAST64_MAX);
+verify_same_types (INT_LEAST64_MIN, (int_least64_t) 0 + 0);
+verify_same_types (INT_LEAST64_MAX, (int_least64_t) 0 + 0);
+#endif
+
+uint_least8_t d1[2] = { 17, UINT_LEAST8_MAX };
+verify (TYPE_MAXIMUM (uint_least8_t) == UINT_LEAST8_MAX);
+verify_same_types (UINT_LEAST8_MAX, (uint_least8_t) 0 + 0);
+
+uint_least16_t d2[2] = { 17, UINT_LEAST16_MAX };
+verify (TYPE_MAXIMUM (uint_least16_t) == UINT_LEAST16_MAX);
+verify_same_types (UINT_LEAST16_MAX, (uint_least16_t) 0 + 0);
+
+uint_least32_t d3[2] = { 17, UINT_LEAST32_MAX };
+verify (TYPE_MAXIMUM (uint_least32_t) == UINT_LEAST32_MAX);
+verify_same_types (UINT_LEAST32_MAX, (uint_least32_t) 0 + 0);
+
+#ifdef UINT_LEAST64_MAX
+uint_least64_t d4[2] = { 17, UINT_LEAST64_MAX };
+verify (TYPE_MAXIMUM (uint_least64_t) == UINT_LEAST64_MAX);
+verify_same_types (UINT_LEAST64_MAX, (uint_least64_t) 0 + 0);
+#endif
+
+#if INT_LEAST8_MIN && INT_LEAST8_MAX && INT_LEAST16_MIN && INT_LEAST16_MAX && INT_LEAST32_MIN && INT_LEAST32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#if UINT_LEAST8_MAX && UINT_LEAST16_MAX && UINT_LEAST32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+int_fast8_t e1[3] = { 17, INT_FAST8_MIN, INT_FAST8_MAX };
+verify (TYPE_MINIMUM (int_fast8_t) == INT_FAST8_MIN);
+verify (TYPE_MAXIMUM (int_fast8_t) == INT_FAST8_MAX);
+verify_same_types (INT_FAST8_MIN, (int_fast8_t) 0 + 0);
+verify_same_types (INT_FAST8_MAX, (int_fast8_t) 0 + 0);
+
+int_fast16_t e2[3] = { 17, INT_FAST16_MIN, INT_FAST16_MAX };
+verify (TYPE_MINIMUM (int_fast16_t) == INT_FAST16_MIN);
+verify (TYPE_MAXIMUM (int_fast16_t) == INT_FAST16_MAX);
+verify_same_types (INT_FAST16_MIN, (int_fast16_t) 0 + 0);
+verify_same_types (INT_FAST16_MAX, (int_fast16_t) 0 + 0);
+
+int_fast32_t e3[3] = { 17, INT_FAST32_MIN, INT_FAST32_MAX };
+verify (TYPE_MINIMUM (int_fast32_t) == INT_FAST32_MIN);
+verify (TYPE_MAXIMUM (int_fast32_t) == INT_FAST32_MAX);
+verify_same_types (INT_FAST32_MIN, (int_fast32_t) 0 + 0);
+verify_same_types (INT_FAST32_MAX, (int_fast32_t) 0 + 0);
+
+#ifdef INT_FAST64_MAX
+int_fast64_t e4[3] = { 17, INT_FAST64_MIN, INT_FAST64_MAX };
+verify (TYPE_MINIMUM (int_fast64_t) == INT_FAST64_MIN);
+verify (TYPE_MAXIMUM (int_fast64_t) == INT_FAST64_MAX);
+verify_same_types (INT_FAST64_MIN, (int_fast64_t) 0 + 0);
+verify_same_types (INT_FAST64_MAX, (int_fast64_t) 0 + 0);
+#endif
+
+uint_fast8_t f1[2] = { 17, UINT_FAST8_MAX };
+verify (TYPE_MAXIMUM (uint_fast8_t) == UINT_FAST8_MAX);
+verify_same_types (UINT_FAST8_MAX, (uint_fast8_t) 0 + 0);
+
+uint_fast16_t f2[2] = { 17, UINT_FAST16_MAX };
+verify (TYPE_MAXIMUM (uint_fast16_t) == UINT_FAST16_MAX);
+verify_same_types (UINT_FAST16_MAX, (uint_fast16_t) 0 + 0);
+
+uint_fast32_t f3[2] = { 17, UINT_FAST32_MAX };
+verify (TYPE_MAXIMUM (uint_fast32_t) == UINT_FAST32_MAX);
+verify_same_types (UINT_FAST32_MAX, (uint_fast32_t) 0 + 0);
+
+#ifdef UINT_FAST64_MAX
+uint_fast64_t f4[2] = { 17, UINT_FAST64_MAX };
+verify (TYPE_MAXIMUM (uint_fast64_t) == UINT_FAST64_MAX);
+verify_same_types (UINT_FAST64_MAX, (uint_fast64_t) 0 + 0);
+#endif
+
+#if INT_FAST8_MIN && INT_FAST8_MAX && INT_FAST16_MIN && INT_FAST16_MAX && INT_FAST32_MIN && INT_FAST32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#if UINT_FAST8_MAX && UINT_FAST16_MAX && UINT_FAST32_MAX
+/* ok */
+#else
+err or;
+#endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+intptr_t g[3] = { 17, INTPTR_MIN, INTPTR_MAX };
+verify (TYPE_MINIMUM (intptr_t) == INTPTR_MIN);
+verify (TYPE_MAXIMUM (intptr_t) == INTPTR_MAX);
+verify_same_types (INTPTR_MIN, (intptr_t) 0 + 0);
+verify_same_types (INTPTR_MAX, (intptr_t) 0 + 0);
+
+uintptr_t h[2] = { 17, UINTPTR_MAX };
+verify (TYPE_MAXIMUM (uintptr_t) == UINTPTR_MAX);
+verify_same_types (UINTPTR_MAX, (uintptr_t) 0 + 0);
+
+#if INTPTR_MIN && INTPTR_MAX && UINTPTR_MAX
+/* ok */
+#else
+err or;
+#endif
+
+/* 7.18.1.5. Greatest-width integer types */
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+intmax_t i[3] = { INTMAX_C (17), INTMAX_MIN, INTMAX_MAX };
+verify (TYPE_MINIMUM (intmax_t) == INTMAX_MIN);
+verify (TYPE_MAXIMUM (intmax_t) == INTMAX_MAX);
+verify_same_types (INTMAX_MIN, (intmax_t) 0 + 0);
+verify_same_types (INTMAX_MAX, (intmax_t) 0 + 0);
+
+uintmax_t j[2] = { UINTMAX_C (17), UINTMAX_MAX };
+verify (TYPE_MAXIMUM (uintmax_t) == UINTMAX_MAX);
+verify_same_types (UINTMAX_MAX, (uintmax_t) 0 + 0);
+
+/* As of 2007, Sun C and HP-UX 10.20 cc don't support 'long long' constants in
+   the preprocessor.  */
+#if !(defined __SUNPRO_C || (defined __hpux && !defined __GNUC__))
+#if INTMAX_MIN && INTMAX_MAX && UINTMAX_MAX
+/* ok */
+#else
+err or;
+#endif
+#endif
+
+/* 7.18.3. Limits of other integer types */
+
+#include <stddef.h>
+
+verify (TYPE_MINIMUM (ptrdiff_t) == PTRDIFF_MIN);
+verify (TYPE_MAXIMUM (ptrdiff_t) == PTRDIFF_MAX);
+verify_same_types (PTRDIFF_MIN, (ptrdiff_t) 0 + 0);
+verify_same_types (PTRDIFF_MAX, (ptrdiff_t) 0 + 0);
+
+#if PTRDIFF_MIN && PTRDIFF_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#include <signal.h>
+
+verify (TYPE_MINIMUM (sig_atomic_t) == SIG_ATOMIC_MIN);
+verify (TYPE_MAXIMUM (sig_atomic_t) == SIG_ATOMIC_MAX);
+verify_same_types (SIG_ATOMIC_MIN, (sig_atomic_t) 0 + 0);
+verify_same_types (SIG_ATOMIC_MAX, (sig_atomic_t) 0 + 0);
+
+#if SIG_ATOMIC_MIN != 17 && SIG_ATOMIC_MAX
+/* ok */
+#else
+err or;
+#endif
+
+verify (TYPE_MAXIMUM (size_t) == SIZE_MAX);
+verify_same_types (SIZE_MAX, (size_t) 0 + 0);
+
+#if SIZE_MAX
+/* ok */
+#else
+err or;
+#endif
+
+#if HAVE_WCHAR_T
+verify (TYPE_MINIMUM (wchar_t) == WCHAR_MIN);
+verify (TYPE_MAXIMUM (wchar_t) == WCHAR_MAX);
+verify_same_types (WCHAR_MIN, (wchar_t) 0 + 0);
+verify_same_types (WCHAR_MAX, (wchar_t) 0 + 0);
+
+# if WCHAR_MIN != 17 && WCHAR_MAX
+/* ok */
+# else
+err or;
+# endif
+#endif
+
+#if HAVE_WINT_T
+# include <wchar.h>
+
+verify (TYPE_MINIMUM (wint_t) == WINT_MIN);
+verify (TYPE_MAXIMUM (wint_t) == WINT_MAX);
+verify_same_types (WINT_MIN, (wint_t) 0 + 0);
+verify_same_types (WINT_MAX, (wint_t) 0 + 0);
+
+# if WINT_MIN != 17 && WINT_MAX
+/* ok */
+# else
+err or;
+# endif
+#endif
+
+/* 7.18.4. Macros for integer constants */
+
+verify (INT8_C (17) == 17);
+verify_same_types (INT8_C (17), (int_least8_t)0 + 0);
+verify (UINT8_C (17) == 17);
+verify_same_types (UINT8_C (17), (uint_least8_t)0 + 0);
+
+verify (INT16_C (17) == 17);
+verify_same_types (INT16_C (17), (int_least16_t)0 + 0);
+verify (UINT16_C (17) == 17);
+verify_same_types (UINT16_C (17), (uint_least16_t)0 + 0);
+
+verify (INT32_C (17) == 17);
+verify_same_types (INT32_C (17), (int_least32_t)0 + 0);
+verify (UINT32_C (17) == 17);
+verify_same_types (UINT32_C (17), (uint_least32_t)0 + 0);
+
+#ifdef INT64_C
+verify (INT64_C (17) == 17);
+verify_same_types (INT64_C (17), (int_least64_t)0 + 0);
+#endif
+#ifdef UINT64_C
+verify (UINT64_C (17) == 17);
+verify_same_types (UINT64_C (17), (uint_least64_t)0 + 0);
+#endif
+
+verify (INTMAX_C (17) == 17);
+verify_same_types (INTMAX_C (17), (intmax_t)0 + 0);
+verify (UINTMAX_C (17) == 17);
+verify_same_types (UINTMAX_C (17), (uintmax_t)0 + 0);
+
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/lib/gltests/test-striconv.c b/lib/gltests/test-striconv.c
new file mode 100644 (file)
index 0000000..f39f142
--- /dev/null
@@ -0,0 +1,191 @@
+/* Test of character set conversion.
+   Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+#include "striconv.h"
+
+#if HAVE_ICONV
+# include <iconv.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERT(expr) \
+  do                                                                        \
+    {                                                                       \
+      if (!(expr))                                                          \
+        {                                                                   \
+          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+          fflush (stderr);                                                  \
+          abort ();                                                         \
+        }                                                                   \
+    }                                                                       \
+  while (0)
+
+int
+main ()
+{
+#if HAVE_ICONV
+  /* Assume that iconv() supports at least the encodings ASCII, ISO-8859-1,
+     and UTF-8.  */
+  iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+  iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8");
+
+  ASSERT (cd_88591_to_utf8 != (iconv_t)(-1));
+  ASSERT (cd_utf8_to_88591 != (iconv_t)(-1));
+
+  /* ------------------------- Test mem_cd_iconv() ------------------------- */
+
+  /* Test conversion from ISO-8859-1 to UTF-8 with no errors.  */
+  {
+    static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+    static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+    char *result = NULL;
+    size_t length = 0;
+    int retval = mem_cd_iconv (input, strlen (input), cd_88591_to_utf8,
+                              &result, &length);
+    ASSERT (retval == 0);
+    ASSERT (length == strlen (expected));
+    ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+    free (result);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with no errors.  */
+  {
+    static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+    static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+    char *result = NULL;
+    size_t length = 0;
+    int retval = mem_cd_iconv (input, strlen (input), cd_utf8_to_88591,
+                              &result, &length);
+    ASSERT (retval == 0);
+    ASSERT (length == strlen (expected));
+    ASSERT (result != NULL && memcmp (result, expected, strlen (expected)) == 0);
+    free (result);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ.  */
+  {
+    static const char input[] = "\342\202\254"; /* EURO SIGN */
+    char *result = NULL;
+    size_t length = 0;
+    int retval = mem_cd_iconv (input, strlen (input), cd_utf8_to_88591,
+                              &result, &length);
+    ASSERT (retval == -1 && errno == EILSEQ);
+    ASSERT (result == NULL);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL.  */
+  {
+    static const char input[] = "\342";
+    char *result = NULL;
+    size_t length = 0;
+    int retval = mem_cd_iconv (input, strlen (input), cd_utf8_to_88591,
+                              &result, &length);
+    ASSERT (retval == 0);
+    ASSERT (length == 0);
+    free (result);
+  }
+
+  /* ------------------------- Test str_cd_iconv() ------------------------- */
+
+  /* Test conversion from ISO-8859-1 to UTF-8 with no errors.  */
+  {
+    static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+    static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+    char *result = str_cd_iconv (input, cd_88591_to_utf8);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, expected) == 0);
+    free (result);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with no errors.  */
+  {
+    static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+    static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+    char *result = str_cd_iconv (input, cd_utf8_to_88591);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, expected) == 0);
+    free (result);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ.  */
+  {
+    static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */
+    char *result = str_cd_iconv (input, cd_utf8_to_88591);
+    ASSERT (result == NULL && errno == EILSEQ);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL.  */
+  {
+    static const char input[] = "\342";
+    char *result = str_cd_iconv (input, cd_utf8_to_88591);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "") == 0);
+    free (result);
+  }
+
+  iconv_close (cd_88591_to_utf8);
+  iconv_close (cd_utf8_to_88591);
+
+  /* -------------------------- Test str_iconv() -------------------------- */
+
+  /* Test conversion from ISO-8859-1 to UTF-8 with no errors.  */
+  {
+    static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+    static const char expected[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+    char *result = str_iconv (input, "ISO-8859-1", "UTF-8");
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, expected) == 0);
+    free (result);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with no errors.  */
+  {
+    static const char input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
+    static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+    char *result = str_iconv (input, "UTF-8", "ISO-8859-1");
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, expected) == 0);
+    free (result);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ.  */
+  {
+    static const char input[] = "Costs: 27 \342\202\254"; /* EURO SIGN */
+    char *result = str_iconv (input, "UTF-8", "ISO-8859-1");
+    ASSERT (result == NULL && errno == EILSEQ);
+  }
+
+  /* Test conversion from UTF-8 to ISO-8859-1 with EINVAL.  */
+  {
+    static const char input[] = "\342";
+    char *result = str_iconv (input, "UTF-8", "ISO-8859-1");
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "") == 0);
+    free (result);
+  }
+
+#endif
+
+  return 0;
+}
diff --git a/lib/gltests/test-string.c b/lib/gltests/test-string.c
new file mode 100644 (file)
index 0000000..68014f5
--- /dev/null
@@ -0,0 +1,27 @@
+/* Test of <string.h> substitute.
+   Copyright (C) 2007 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+#include <string.h>
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/lib/gltests/test-strverscmp.c b/lib/gltests/test-strverscmp.c
new file mode 100644 (file)
index 0000000..04da20c
--- /dev/null
@@ -0,0 +1,56 @@
+/* Test of strverscmp() function.
+   Copyright (C) 2008 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* Written by Eric Blake <ebb9@byu.net>, 2008.  */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+  do                                                                        \
+    {                                                                       \
+      if (!(expr))                                                          \
+        {                                                                   \
+          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+          fflush (stderr);                                                  \
+          abort ();                                                         \
+        }                                                                   \
+    }                                                                       \
+  while (0)
+
+int
+main (int argc, char **argv)
+{
+  ASSERT (strverscmp ("", "") == 0);
+  ASSERT (strverscmp ("a", "a") == 0);
+  ASSERT (strverscmp ("a", "b") < 0);
+  ASSERT (strverscmp ("b", "a") > 0);
+  ASSERT (strverscmp ("000", "00") < 0);
+  ASSERT (strverscmp ("00", "000") > 0);
+  ASSERT (strverscmp ("a0", "a") > 0);
+  ASSERT (strverscmp ("00", "01") < 0);
+  ASSERT (strverscmp ("01", "010") < 0);
+  ASSERT (strverscmp ("010", "09") < 0);
+  ASSERT (strverscmp ("09", "0") < 0);
+  ASSERT (strverscmp ("9", "10") < 0);
+  ASSERT (strverscmp ("0a", "0") > 0);
+  return 0;
+}
diff --git a/lib/gltests/test-wchar.c b/lib/gltests/test-wchar.c
new file mode 100644 (file)
index 0000000..19da7d9
--- /dev/null
@@ -0,0 +1,31 @@
+/* Test of <wchar.h> substitute.
+   Copyright (C) 2007-2008 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
+
+#include <config.h>
+
+#include <wchar.h>
+
+/* Check that the types wchar_t and wint_t are defined.  */
+wchar_t a = 'c';
+wint_t b = 'x';
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/lib/gltests/verify.h b/lib/gltests/verify.h
new file mode 100644 (file)
index 0000000..fac53f6
--- /dev/null
@@ -0,0 +1,140 @@
+/* Compile-time assert-like macros.
+
+   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Written by Paul Eggert, Bruno Haible, and Jim Meyering.  */
+
+#ifndef VERIFY_H
+# define VERIFY_H 1
+
+/* Each of these macros verifies that its argument R is nonzero.  To
+   be portable, R should be an integer constant expression.  Unlike
+   assert (R), there is no run-time overhead.
+
+   There are two macros, since no single macro can be used in all
+   contexts in C.  verify_true (R) is for scalar contexts, including
+   integer constant expression contexts.  verify (R) is for declaration
+   contexts, e.g., the top level.
+
+   Symbols ending in "__" are private to this header.
+
+   The code below uses several ideas.
+
+   * The first step is ((R) ? 1 : -1).  Given an expression R, of
+     integral or boolean or floating-point type, this yields an
+     expression of integral type, whose value is later verified to be
+     constant and nonnegative.
+
+   * Next this expression W is wrapped in a type
+     struct verify_type__ { unsigned int verify_error_if_negative_size__: W; }.
+     If W is negative, this yields a compile-time error.  No compiler can
+     deal with a bit-field of negative size.
+
+     One might think that an array size check would have the same
+     effect, that is, that the type struct { unsigned int dummy[W]; }
+     would work as well.  However, inside a function, some compilers
+     (such as C++ compilers and GNU C) allow local parameters and
+     variables inside array size expressions.  With these compilers,
+     an array size check would not properly diagnose this misuse of
+     the verify macro:
+
+       void function (int n) { verify (n < 0); }
+
+   * For the verify macro, the struct verify_type__ will need to
+     somehow be embedded into a declaration.  To be portable, this
+     declaration must declare an object, a constant, a function, or a
+     typedef name.  If the declared entity uses the type directly,
+     such as in
+
+       struct dummy {...};
+       typedef struct {...} dummy;
+       extern struct {...} *dummy;
+       extern void dummy (struct {...} *);
+       extern struct {...} *dummy (void);
+
+     two uses of the verify macro would yield colliding declarations
+     if the entity names are not disambiguated.  A workaround is to
+     attach the current line number to the entity name:
+
+       #define GL_CONCAT0(x, y) x##y
+       #define GL_CONCAT(x, y) GL_CONCAT0 (x, y)
+       extern struct {...} * GL_CONCAT(dummy,__LINE__);
+
+     But this has the problem that two invocations of verify from
+     within the same macro would collide, since the __LINE__ value
+     would be the same for both invocations.
+
+     A solution is to use the sizeof operator.  It yields a number,
+     getting rid of the identity of the type.  Declarations like
+
+       extern int dummy [sizeof (struct {...})];
+       extern void dummy (int [sizeof (struct {...})]);
+       extern int (*dummy (void)) [sizeof (struct {...})];
+
+     can be repeated.
+
+   * Should the implementation use a named struct or an unnamed struct?
+     Which of the following alternatives can be used?
+
+       extern int dummy [sizeof (struct {...})];
+       extern int dummy [sizeof (struct verify_type__ {...})];
+       extern void dummy (int [sizeof (struct {...})]);
+       extern void dummy (int [sizeof (struct verify_type__ {...})]);
+       extern int (*dummy (void)) [sizeof (struct {...})];
+       extern int (*dummy (void)) [sizeof (struct verify_type__ {...})];
+
+     In the second and sixth case, the struct type is exported to the
+     outer scope; two such declarations therefore collide.  GCC warns
+     about the first, third, and fourth cases.  So the only remaining
+     possibility is the fifth case:
+
+       extern int (*dummy (void)) [sizeof (struct {...})];
+
+   * This implementation exploits the fact that GCC does not warn about
+     the last declaration mentioned above.  If a future version of GCC
+     introduces a warning for this, the problem could be worked around
+     by using code specialized to GCC, e.g.,:
+
+       #if 4 <= __GNUC__
+       # define verify(R) \
+          extern int (* verify_function__ (void)) \
+                     [__builtin_constant_p (R) && (R) ? 1 : -1]
+       #endif
+
+   * In C++, any struct definition inside sizeof is invalid.
+     Use a template type to work around the problem.  */
+
+
+/* Verify requirement R at compile-time, as an integer constant expression.
+   Return 1.  */
+
+# ifdef __cplusplus
+template <int w>
+  struct verify_type__ { unsigned int verify_error_if_negative_size__: w; };
+#  define verify_true(R) \
+     (!!sizeof (verify_type__<(R) ? 1 : -1>))
+# else
+#  define verify_true(R) \
+     (!!sizeof \
+      (struct { unsigned int verify_error_if_negative_size__: (R) ? 1 : -1; }))
+# endif
+
+/* Verify requirement R at compile-time, as a declaration without a
+   trailing ';'.  */
+
+# define verify(R) extern int (* verify_function__ (void)) [verify_true (R)]
+
+#endif
diff --git a/lib/gunibreak.h b/lib/gunibreak.h
new file mode 100644 (file)
index 0000000..4f401bc
--- /dev/null
@@ -0,0 +1,9353 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit gen-unicode-tables.pl and re-run.  */
+
+#ifndef BREAKTABLES_H
+#define BREAKTABLES_H
+
+#define G_UNICODE_DATA_VERSION "3.2"
+
+#define G_UNICODE_LAST_CHAR 0x10FFFF
+
+#define G_UNICODE_MAX_TABLE_INDEX 10000
+
+/* the last code point that should be looked up in break_property_table_part1 */
+#define G_UNICODE_LAST_CHAR_PART1 0x2FAFF
+
+static const gint8 break_property_data[][256] = {
+  { /* page 0, index 0 */
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_LINE_FEED, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_MANDATORY, G_UNICODE_BREAK_CARRIAGE_RETURN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_SPACE, G_UNICODE_BREAK_EXCLAMATION, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_QUOTATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_INFIX_SEPARATOR, G_UNICODE_BREAK_HYPHEN, 
+    G_UNICODE_BREAK_INFIX_SEPARATOR, G_UNICODE_BREAK_SYMBOL, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_INFIX_SEPARATOR, G_UNICODE_BREAK_INFIX_SEPARATOR, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_EXCLAMATION, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_POSTFIX, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_BEFORE, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 1, index 1 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 2, index 2 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_BEFORE, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_BEFORE, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 3, index 3 */
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 4, index 4 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 5, index 5 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_INFIX_SEPARATOR, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 6, index 6 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 7, index 7 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 9, index 8 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 10, index 9 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 11, index 10 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 12, index 11 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 13, index 12 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 14, index 13 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 15, index 14 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 16, index 15 */
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 17, index 16 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 18, index 17 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 19, index 18 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 20, index 19 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 22, index 20 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 23, index 21 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 24, index 22 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_BEFORE, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 30, index 23 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 31, index 24 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 32, index 25 */
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_NON_BREAKING_GLUE, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_ZERO_WIDTH_SPACE, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_BEFORE_AND_AFTER, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_QUOTATION, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_QUOTATION, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_INSEPARABLE, 
+    G_UNICODE_BREAK_INSEPARABLE, G_UNICODE_BREAK_INSEPARABLE, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_MANDATORY, 
+    G_UNICODE_BREAK_MANDATORY, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_POSTFIX, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_POSTFIX, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_POSTFIX, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_POSTFIX, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_QUOTATION, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AFTER, 
+    G_UNICODE_BREAK_NON_BREAKING_GLUE, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 33, index 26 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_POSTFIX, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_POSTFIX, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 34, index 27 */
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 35, index 28 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 36, index 29 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 37, index 30 */
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 38, index 31 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 39, index 32 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_QUOTATION, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_QUOTATION, 
+    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_EXCLAMATION, G_UNICODE_BREAK_EXCLAMATION, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 41, index 33 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 46, index 34 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 47, index 35 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 48, index 36 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
+  },
+  { /* page 49, index 37 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER
+  },
+  { /* page 50, index 38 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 51, index 39 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 77, index 40 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 159, index 41 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 164, index 42 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 215, index 43 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 250, index 44 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 251, index 45 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 253, index 46 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 254, index 47 */
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_EXCLAMATION, G_UNICODE_BREAK_EXCLAMATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NON_BREAKING_GLUE
+  },
+  { /* page 255, index 48 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_EXCLAMATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_EXCLAMATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_NON_STARTER, G_UNICODE_BREAK_NON_STARTER, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_CONTINGENT, G_UNICODE_BREAK_AMBIGUOUS, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 259, index 49 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 260, index 50 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 464, index 51 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 465, index 52 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 468, index 53 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 469, index 54 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 470, index 55 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+  },
+  { /* page 471, index 56 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC
+  },
+  { /* page 678, index 57 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 762, index 58 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 3584, index 59 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  }
+};
+
+/* U+0000 through U+2FAFF */
+static const gint16 break_property_table_part1[763] = {
+  0 /* page 0 */,
+  1 /* page 1 */,
+  2 /* page 2 */,
+  3 /* page 3 */,
+  4 /* page 4 */,
+  5 /* page 5 */,
+  6 /* page 6 */,
+  7 /* page 7 */,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  8 /* page 9 */,
+  9 /* page 10 */,
+  10 /* page 11 */,
+  11 /* page 12 */,
+  12 /* page 13 */,
+  13 /* page 14 */,
+  14 /* page 15 */,
+  15 /* page 16 */,
+  16 /* page 17 */,
+  17 /* page 18 */,
+  18 /* page 19 */,
+  19 /* page 20 */,
+  G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
+  20 /* page 22 */,
+  21 /* page 23 */,
+  22 /* page 24 */,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  23 /* page 30 */,
+  24 /* page 31 */,
+  25 /* page 32 */,
+  26 /* page 33 */,
+  27 /* page 34 */,
+  28 /* page 35 */,
+  29 /* page 36 */,
+  30 /* page 37 */,
+  31 /* page 38 */,
+  32 /* page 39 */,
+  G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
+  33 /* page 41 */,
+  G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  34 /* page 46 */,
+  35 /* page 47 */,
+  36 /* page 48 */,
+  37 /* page 49 */,
+  38 /* page 50 */,
+  39 /* page 51 */,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  40 /* page 77 */,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  41 /* page 159 */,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  42 /* page 164 */,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  43 /* page 215 */,
+  G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  44 /* page 250 */,
+  45 /* page 251 */,
+  G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
+  46 /* page 253 */,
+  47 /* page 254 */,
+  48 /* page 255 */,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  49 /* page 259 */,
+  50 /* page 260 */,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  51 /* page 464 */,
+  52 /* page 465 */,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  53 /* page 468 */,
+  54 /* page 469 */,
+  55 /* page 470 */,
+  56 /* page 471 */,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  57 /* page 678 */,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
+  58 /* page 762 */
+};
+
+/* U+E0000 through U+10FFFF */
+static const gint16 break_property_table_part2[768] = {
+  59 /* page 3584 */,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX
+};
+
+#endif /* BREAKTABLES_H */
diff --git a/lib/gunicomp.h b/lib/gunicomp.h
new file mode 100644 (file)
index 0000000..b5fa880
--- /dev/null
@@ -0,0 +1,661 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit gen-unicode-tables.pl and re-run.  */
+
+#define COMPOSE_FIRST_START 1
+#define COMPOSE_FIRST_SINGLE_START 147
+#define COMPOSE_SECOND_START 357
+#define COMPOSE_SECOND_SINGLE_START 388
+
+#define COMPOSE_TABLE_LAST 48
+
+static const guint16 compose_data[][256] = {
+  { /* page 0, index 0 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 148, 149, 0, 0, 1, 2, 3, 4, 5, 
+    150, 6, 7, 8, 151, 9, 10, 11, 12, 13, 14, 0, 15, 16, 17, 18, 19, 20, 21, 
+    22, 23, 0, 0, 0, 0, 0, 0, 24, 25, 26, 27, 28, 152, 29, 30, 31, 32, 33, 
+    34, 35, 36, 37, 38, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 153, 154, 
+    50, 155, 0, 0, 51, 0, 0, 0, 0, 156, 0, 0, 0, 0, 52, 53, 157, 0, 158, 0, 
+    0, 0, 54, 0, 0, 0, 0, 0, 55, 0, 159, 160, 56, 161, 0, 0, 57, 0, 0, 0, 0, 
+    162, 0, 0, 0, 0, 58, 59, 163, 0, 164, 0, 0, 0, 60, 0, 0, 0
+  },
+  { /* page 1, index 1 */
+    0, 0, 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 166, 0, 
+    0, 0, 0, 167, 168, 0, 0, 0, 0, 0, 0, 169, 170, 171, 172, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 
+    68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 70, 0, 0, 0, 0, 0, 0, 174, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0
+  },
+  { /* page 2, index 2 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 179, 180, 0, 0, 0, 0, 
+    181, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 3, index 3 */
+    357, 358, 359, 360, 361, 0, 362, 363, 364, 365, 366, 367, 368, 0, 0, 369, 
+    0, 370, 0, 371, 372, 0, 0, 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, 0, 0, 374, 
+    375, 376, 377, 378, 379, 0, 0, 0, 0, 380, 381, 0, 382, 383, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, 0, 0, 385, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 
+    72, 0, 73, 0, 74, 0, 0, 0, 0, 0, 75, 0, 184, 0, 0, 0, 76, 0, 0, 0, 77, 0, 
+    0, 185, 0, 186, 0, 0, 78, 0, 0, 0, 79, 0, 80, 0, 81, 0, 0, 0, 0, 0, 82, 
+    0, 83, 0, 0, 0, 84, 0, 0, 0, 85, 86, 87, 0, 0, 187, 0, 0, 0, 88, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 4, index 4 */
+    0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 189, 0, 90, 
+    91, 190, 92, 0, 191, 0, 0, 0, 192, 0, 0, 0, 0, 93, 0, 0, 0, 193, 0, 0, 0, 
+    194, 0, 195, 0, 0, 94, 0, 0, 196, 0, 95, 96, 197, 97, 0, 198, 0, 0, 0, 
+    199, 0, 0, 0, 0, 98, 0, 0, 0, 200, 0, 0, 0, 201, 0, 202, 0, 0, 0, 0, 0, 
+    0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 207, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 208, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 6, index 5 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    210, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 388, 389, 390, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, 
+    0, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 9, index 6 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 
+    216, 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 391, 
+    0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 11, index 7 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, 
+    101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 394, 395, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 396, 0, 0, 0, 0, 0, 0, 0, 102, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 12, index 8 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 
+    0, 0, 398, 0, 0, 0, 103, 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 
+    400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 13, index 9 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 0, 0, 0, 0, 0, 104, 
+    223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 403, 0, 0, 0, 0, 404, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 105, 0, 0, 224, 0, 0, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 16, index 10 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 30, index 11 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 226, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 229, 0, 0, 
+    0, 0, 0, 0, 230, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 107, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 233, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 235, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 31, index 12 */
+    108, 109, 236, 237, 238, 239, 240, 241, 110, 111, 242, 243, 244, 245, 
+    246, 247, 112, 113, 0, 0, 0, 0, 0, 0, 114, 115, 0, 0, 0, 0, 0, 0, 116, 
+    117, 248, 249, 250, 251, 252, 253, 118, 119, 254, 255, 256, 257, 258, 
+    259, 120, 121, 0, 0, 0, 0, 0, 0, 122, 123, 0, 0, 0, 0, 0, 0, 124, 125, 0, 
+    0, 0, 0, 0, 0, 126, 127, 0, 0, 0, 0, 0, 0, 128, 129, 0, 0, 0, 0, 0, 0, 0, 
+    130, 0, 0, 0, 0, 0, 0, 131, 132, 260, 261, 262, 263, 264, 265, 133, 134, 
+    266, 267, 268, 269, 270, 271, 272, 0, 0, 0, 273, 0, 0, 0, 0, 0, 0, 0, 
+    274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 275, 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 
+    0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 136, 0
+  },
+  { /* page 33, index 13 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    278, 0, 279, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 0, 282, 0, 
+    283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 34, index 14 */
+    0, 0, 0, 284, 0, 0, 0, 0, 285, 0, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 288, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 290, 
+    0, 291, 0, 0, 292, 0, 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 294, 0, 0, 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 297, 298, 0, 0, 299, 300, 0, 0, 301, 302, 303, 304, 0, 0, 0, 0, 
+    305, 306, 0, 0, 307, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 310, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 0, 0, 0, 0, 0, 312, 313, 0, 314, 
+    0, 0, 0, 0, 0, 0, 315, 316, 317, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 48, index 15 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, 
+    0, 0, 0, 320, 0, 321, 0, 322, 0, 323, 0, 324, 0, 325, 0, 326, 0, 327, 0, 
+    328, 0, 329, 0, 330, 0, 331, 0, 0, 332, 0, 333, 0, 334, 0, 0, 0, 0, 0, 0, 
+    137, 0, 0, 138, 0, 0, 139, 0, 0, 140, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 386, 387, 
+    0, 0, 335, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 0, 0, 337, 0, 338, 0, 339, 
+    0, 340, 0, 341, 0, 342, 0, 343, 0, 344, 0, 345, 0, 346, 0, 347, 0, 348, 
+    0, 0, 349, 0, 350, 0, 351, 0, 0, 0, 0, 0, 0, 142, 0, 0, 143, 0, 0, 144, 
+    0, 0, 145, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 352, 353, 354, 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, 0, 0
+  }
+};
+
+static const gint16 compose_table[COMPOSE_TABLE_LAST + 1] = {
+  0 /* page 0 */,
+  1 /* page 1 */,
+  2 /* page 2 */,
+  3 /* page 3 */,
+  4 /* page 4 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  5 /* page 6 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  6 /* page 9 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  7 /* page 11 */,
+  8 /* page 12 */,
+  9 /* page 13 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  10 /* page 16 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  11 /* page 30 */,
+  12 /* page 31 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  13 /* page 33 */,
+  14 /* page 34 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  15 /* page 48 */
+};
+
+static const guint16 compose_first_single[][2] = {
+ { 0x0338, 0x226e },
+ { 0x0338, 0x2260 },
+ { 0x0338, 0x226f },
+ { 0x0307, 0x1e1e },
+ { 0x0302, 0x0134 },
+ { 0x0307, 0x1e1f },
+ { 0x0304, 0x01de },
+ { 0x0301, 0x01fa },
+ { 0x0301, 0x1e08 },
+ { 0x0301, 0x1e2e },
+ { 0x0304, 0x022a },
+ { 0x0301, 0x01fe },
+ { 0x0304, 0x01df },
+ { 0x0301, 0x01fb },
+ { 0x0301, 0x1e09 },
+ { 0x0301, 0x1e2f },
+ { 0x0304, 0x022b },
+ { 0x0301, 0x01ff },
+ { 0x0307, 0x1e64 },
+ { 0x0307, 0x1e65 },
+ { 0x0307, 0x1e66 },
+ { 0x0307, 0x1e67 },
+ { 0x0301, 0x1e78 },
+ { 0x0301, 0x1e79 },
+ { 0x0308, 0x1e7a },
+ { 0x0308, 0x1e7b },
+ { 0x0307, 0x1e9b },
+ { 0x030c, 0x01ee },
+ { 0x0304, 0x01ec },
+ { 0x0304, 0x01ed },
+ { 0x0304, 0x01e0 },
+ { 0x0304, 0x01e1 },
+ { 0x0306, 0x1e1c },
+ { 0x0306, 0x1e1d },
+ { 0x0304, 0x0230 },
+ { 0x0304, 0x0231 },
+ { 0x030c, 0x01ef },
+ { 0x0314, 0x1fec },
+ { 0x0345, 0x1fb4 },
+ { 0x0345, 0x1fc4 },
+ { 0x0345, 0x1ff4 },
+ { 0x0308, 0x0407 },
+ { 0x0301, 0x0403 },
+ { 0x0308, 0x04de },
+ { 0x0301, 0x040c },
+ { 0x0308, 0x04e6 },
+ { 0x0308, 0x04f4 },
+ { 0x0308, 0x04f8 },
+ { 0x0308, 0x04ec },
+ { 0x0301, 0x0453 },
+ { 0x0308, 0x04df },
+ { 0x0301, 0x045c },
+ { 0x0308, 0x04e7 },
+ { 0x0308, 0x04f5 },
+ { 0x0308, 0x04f9 },
+ { 0x0308, 0x04ed },
+ { 0x0308, 0x0457 },
+ { 0x030f, 0x0476 },
+ { 0x030f, 0x0477 },
+ { 0x0308, 0x04da },
+ { 0x0308, 0x04db },
+ { 0x0308, 0x04ea },
+ { 0x0308, 0x04eb },
+ { 0x0654, 0x0624 },
+ { 0x0654, 0x0626 },
+ { 0x0654, 0x06c2 },
+ { 0x0654, 0x06d3 },
+ { 0x0654, 0x06c0 },
+ { 0x093c, 0x0929 },
+ { 0x093c, 0x0931 },
+ { 0x093c, 0x0934 },
+ { 0x0bd7, 0x0b94 },
+ { 0x0bbe, 0x0bcb },
+ { 0x0c56, 0x0c48 },
+ { 0x0cd5, 0x0cc0 },
+ { 0x0cd5, 0x0ccb },
+ { 0x0d3e, 0x0d4b },
+ { 0x0dca, 0x0ddd },
+ { 0x102e, 0x1026 },
+ { 0x0304, 0x1e38 },
+ { 0x0304, 0x1e39 },
+ { 0x0304, 0x1e5c },
+ { 0x0304, 0x1e5d },
+ { 0x0307, 0x1e68 },
+ { 0x0307, 0x1e69 },
+ { 0x0302, 0x1ec6 },
+ { 0x0302, 0x1ec7 },
+ { 0x0302, 0x1ed8 },
+ { 0x0302, 0x1ed9 },
+ { 0x0345, 0x1f82 },
+ { 0x0345, 0x1f83 },
+ { 0x0345, 0x1f84 },
+ { 0x0345, 0x1f85 },
+ { 0x0345, 0x1f86 },
+ { 0x0345, 0x1f87 },
+ { 0x0345, 0x1f8a },
+ { 0x0345, 0x1f8b },
+ { 0x0345, 0x1f8c },
+ { 0x0345, 0x1f8d },
+ { 0x0345, 0x1f8e },
+ { 0x0345, 0x1f8f },
+ { 0x0345, 0x1f92 },
+ { 0x0345, 0x1f93 },
+ { 0x0345, 0x1f94 },
+ { 0x0345, 0x1f95 },
+ { 0x0345, 0x1f96 },
+ { 0x0345, 0x1f97 },
+ { 0x0345, 0x1f9a },
+ { 0x0345, 0x1f9b },
+ { 0x0345, 0x1f9c },
+ { 0x0345, 0x1f9d },
+ { 0x0345, 0x1f9e },
+ { 0x0345, 0x1f9f },
+ { 0x0345, 0x1fa2 },
+ { 0x0345, 0x1fa3 },
+ { 0x0345, 0x1fa4 },
+ { 0x0345, 0x1fa5 },
+ { 0x0345, 0x1fa6 },
+ { 0x0345, 0x1fa7 },
+ { 0x0345, 0x1faa },
+ { 0x0345, 0x1fab },
+ { 0x0345, 0x1fac },
+ { 0x0345, 0x1fad },
+ { 0x0345, 0x1fae },
+ { 0x0345, 0x1faf },
+ { 0x0345, 0x1fb2 },
+ { 0x0345, 0x1fc2 },
+ { 0x0345, 0x1ff2 },
+ { 0x0345, 0x1fb7 },
+ { 0x0345, 0x1fc7 },
+ { 0x0345, 0x1ff7 },
+ { 0x0338, 0x219a },
+ { 0x0338, 0x219b },
+ { 0x0338, 0x21ae },
+ { 0x0338, 0x21cd },
+ { 0x0338, 0x21cf },
+ { 0x0338, 0x21ce },
+ { 0x0338, 0x2204 },
+ { 0x0338, 0x2209 },
+ { 0x0338, 0x220c },
+ { 0x0338, 0x2224 },
+ { 0x0338, 0x2226 },
+ { 0x0338, 0x2241 },
+ { 0x0338, 0x2244 },
+ { 0x0338, 0x2247 },
+ { 0x0338, 0x2249 },
+ { 0x0338, 0x226d },
+ { 0x0338, 0x2262 },
+ { 0x0338, 0x2270 },
+ { 0x0338, 0x2271 },
+ { 0x0338, 0x2274 },
+ { 0x0338, 0x2275 },
+ { 0x0338, 0x2278 },
+ { 0x0338, 0x2279 },
+ { 0x0338, 0x2280 },
+ { 0x0338, 0x2281 },
+ { 0x0338, 0x22e0 },
+ { 0x0338, 0x22e1 },
+ { 0x0338, 0x2284 },
+ { 0x0338, 0x2285 },
+ { 0x0338, 0x2288 },
+ { 0x0338, 0x2289 },
+ { 0x0338, 0x22e2 },
+ { 0x0338, 0x22e3 },
+ { 0x0338, 0x22ac },
+ { 0x0338, 0x22ad },
+ { 0x0338, 0x22ae },
+ { 0x0338, 0x22af },
+ { 0x0338, 0x22ea },
+ { 0x0338, 0x22eb },
+ { 0x0338, 0x22ec },
+ { 0x0338, 0x22ed },
+ { 0x3099, 0x3094 },
+ { 0x3099, 0x304c },
+ { 0x3099, 0x304e },
+ { 0x3099, 0x3050 },
+ { 0x3099, 0x3052 },
+ { 0x3099, 0x3054 },
+ { 0x3099, 0x3056 },
+ { 0x3099, 0x3058 },
+ { 0x3099, 0x305a },
+ { 0x3099, 0x305c },
+ { 0x3099, 0x305e },
+ { 0x3099, 0x3060 },
+ { 0x3099, 0x3062 },
+ { 0x3099, 0x3065 },
+ { 0x3099, 0x3067 },
+ { 0x3099, 0x3069 },
+ { 0x3099, 0x309e },
+ { 0x3099, 0x30f4 },
+ { 0x3099, 0x30ac },
+ { 0x3099, 0x30ae },
+ { 0x3099, 0x30b0 },
+ { 0x3099, 0x30b2 },
+ { 0x3099, 0x30b4 },
+ { 0x3099, 0x30b6 },
+ { 0x3099, 0x30b8 },
+ { 0x3099, 0x30ba },
+ { 0x3099, 0x30bc },
+ { 0x3099, 0x30be },
+ { 0x3099, 0x30c0 },
+ { 0x3099, 0x30c2 },
+ { 0x3099, 0x30c5 },
+ { 0x3099, 0x30c7 },
+ { 0x3099, 0x30c9 },
+ { 0x3099, 0x30f7 },
+ { 0x3099, 0x30f8 },
+ { 0x3099, 0x30f9 },
+ { 0x3099, 0x30fa },
+ { 0x3099, 0x30fe }
+};
+static const guint16 compose_second_single[][2] = {
+ { 0x0627, 0x0622 },
+ { 0x0627, 0x0623 },
+ { 0x0627, 0x0625 },
+ { 0x09c7, 0x09cb },
+ { 0x09c7, 0x09cc },
+ { 0x0b47, 0x0b4b },
+ { 0x0b47, 0x0b48 },
+ { 0x0b47, 0x0b4c },
+ { 0x0bc6, 0x0bca },
+ { 0x0bc6, 0x0bcc },
+ { 0x0cc6, 0x0cca },
+ { 0x0cc6, 0x0cc7 },
+ { 0x0cc6, 0x0cc8 },
+ { 0x0d46, 0x0d4a },
+ { 0x0d46, 0x0d4c },
+ { 0x0dd9, 0x0dda },
+ { 0x0dd9, 0x0ddc },
+ { 0x0dd9, 0x0dde }
+};
+static const guint16 compose_array[146][31] = {
+ { 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x0100, 0x0102, 0x0226, 0x00c4, 0x1ea2, 0x00c5,      0, 0x01cd, 0x0200, 0x0202,      0,      0,      0, 0x1ea0,      0, 0x1e00,      0,      0, 0x0104,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0, 0x1e02,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e04,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e06,      0,      0,      0,      0 },
+ {      0, 0x0106, 0x0108,      0,      0,      0, 0x010a,      0,      0,      0,      0, 0x010c,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x00c7,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0, 0x1e0a,      0,      0,      0,      0, 0x010e,      0,      0,      0,      0,      0, 0x1e0c,      0,      0,      0, 0x1e10,      0, 0x1e12,      0,      0, 0x1e0e,      0,      0,      0,      0 },
+ { 0x00c8, 0x00c9, 0x00ca, 0x1ebc, 0x0112, 0x0114, 0x0116, 0x00cb, 0x1eba,      0,      0, 0x011a, 0x0204, 0x0206,      0,      0,      0, 0x1eb8,      0,      0,      0, 0x0228, 0x0118, 0x1e18,      0, 0x1e1a,      0,      0,      0,      0,      0 },
+ {      0, 0x01f4, 0x011c,      0, 0x1e20, 0x011e, 0x0120,      0,      0,      0,      0, 0x01e6,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x0122,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0, 0x0124,      0,      0,      0, 0x1e22, 0x1e26,      0,      0,      0, 0x021e,      0,      0,      0,      0,      0, 0x1e24,      0,      0,      0, 0x1e28,      0,      0, 0x1e2a,      0,      0,      0,      0,      0,      0 },
+ { 0x00cc, 0x00cd, 0x00ce, 0x0128, 0x012a, 0x012c, 0x0130, 0x00cf, 0x1ec8,      0,      0, 0x01cf, 0x0208, 0x020a,      0,      0,      0, 0x1eca,      0,      0,      0,      0, 0x012e,      0,      0, 0x1e2c,      0,      0,      0,      0,      0 },
+ {      0, 0x1e30,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x01e8,      0,      0,      0,      0,      0, 0x1e32,      0,      0,      0, 0x0136,      0,      0,      0,      0, 0x1e34,      0,      0,      0,      0 },
+ {      0, 0x0139,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x013d,      0,      0,      0,      0,      0, 0x1e36,      0,      0,      0, 0x013b,      0, 0x1e3c,      0,      0, 0x1e3a,      0,      0,      0,      0 },
+ {      0, 0x1e3e,      0,      0,      0,      0, 0x1e40,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e42,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x01f8, 0x0143,      0, 0x00d1,      0,      0, 0x1e44,      0,      0,      0,      0, 0x0147,      0,      0,      0,      0,      0, 0x1e46,      0,      0,      0, 0x0145,      0, 0x1e4a,      0,      0, 0x1e48,      0,      0,      0,      0 },
+ { 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x014c, 0x014e, 0x022e, 0x00d6, 0x1ece,      0, 0x0150, 0x01d1, 0x020c, 0x020e,      0,      0, 0x01a0, 0x1ecc,      0,      0,      0,      0, 0x01ea,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x1e54,      0,      0,      0,      0, 0x1e56,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x0154,      0,      0,      0,      0, 0x1e58,      0,      0,      0,      0, 0x0158, 0x0210, 0x0212,      0,      0,      0, 0x1e5a,      0,      0,      0, 0x0156,      0,      0,      0,      0, 0x1e5e,      0,      0,      0,      0 },
+ {      0, 0x015a, 0x015c,      0,      0,      0, 0x1e60,      0,      0,      0,      0, 0x0160,      0,      0,      0,      0,      0, 0x1e62,      0,      0, 0x0218, 0x015e,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0, 0x1e6a,      0,      0,      0,      0, 0x0164,      0,      0,      0,      0,      0, 0x1e6c,      0,      0, 0x021a, 0x0162,      0, 0x1e70,      0,      0, 0x1e6e,      0,      0,      0,      0 },
+ { 0x00d9, 0x00da, 0x00db, 0x0168, 0x016a, 0x016c,      0, 0x00dc, 0x1ee6, 0x016e, 0x0170, 0x01d3, 0x0214, 0x0216,      0,      0, 0x01af, 0x1ee4, 0x1e72,      0,      0,      0, 0x0172, 0x1e76,      0, 0x1e74,      0,      0,      0,      0,      0 },
+ {      0,      0,      0, 0x1e7c,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e7e,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1e80, 0x1e82, 0x0174,      0,      0,      0, 0x1e86, 0x1e84,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e88,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0, 0x1e8a, 0x1e8c,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1ef2, 0x00dd, 0x0176, 0x1ef8, 0x0232,      0, 0x1e8e, 0x0178, 0x1ef6,      0,      0,      0,      0,      0,      0,      0,      0, 0x1ef4,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x0179, 0x1e90,      0,      0,      0, 0x017b,      0,      0,      0,      0, 0x017d,      0,      0,      0,      0,      0, 0x1e92,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e94,      0,      0,      0,      0 },
+ { 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x0101, 0x0103, 0x0227, 0x00e4, 0x1ea3, 0x00e5,      0, 0x01ce, 0x0201, 0x0203,      0,      0,      0, 0x1ea1,      0, 0x1e01,      0,      0, 0x0105,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0, 0x1e03,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e05,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e07,      0,      0,      0,      0 },
+ {      0, 0x0107, 0x0109,      0,      0,      0, 0x010b,      0,      0,      0,      0, 0x010d,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x00e7,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0, 0x1e0b,      0,      0,      0,      0, 0x010f,      0,      0,      0,      0,      0, 0x1e0d,      0,      0,      0, 0x1e11,      0, 0x1e13,      0,      0, 0x1e0f,      0,      0,      0,      0 },
+ { 0x00e8, 0x00e9, 0x00ea, 0x1ebd, 0x0113, 0x0115, 0x0117, 0x00eb, 0x1ebb,      0,      0, 0x011b, 0x0205, 0x0207,      0,      0,      0, 0x1eb9,      0,      0,      0, 0x0229, 0x0119, 0x1e19,      0, 0x1e1b,      0,      0,      0,      0,      0 },
+ {      0, 0x01f5, 0x011d,      0, 0x1e21, 0x011f, 0x0121,      0,      0,      0,      0, 0x01e7,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x0123,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0, 0x0125,      0,      0,      0, 0x1e23, 0x1e27,      0,      0,      0, 0x021f,      0,      0,      0,      0,      0, 0x1e25,      0,      0,      0, 0x1e29,      0,      0, 0x1e2b,      0, 0x1e96,      0,      0,      0,      0 },
+ { 0x00ec, 0x00ed, 0x00ee, 0x0129, 0x012b, 0x012d,      0, 0x00ef, 0x1ec9,      0,      0, 0x01d0, 0x0209, 0x020b,      0,      0,      0, 0x1ecb,      0,      0,      0,      0, 0x012f,      0,      0, 0x1e2d,      0,      0,      0,      0,      0 },
+ {      0,      0, 0x0135,      0,      0,      0,      0,      0,      0,      0,      0, 0x01f0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x1e31,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x01e9,      0,      0,      0,      0,      0, 0x1e33,      0,      0,      0, 0x0137,      0,      0,      0,      0, 0x1e35,      0,      0,      0,      0 },
+ {      0, 0x013a,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x013e,      0,      0,      0,      0,      0, 0x1e37,      0,      0,      0, 0x013c,      0, 0x1e3d,      0,      0, 0x1e3b,      0,      0,      0,      0 },
+ {      0, 0x1e3f,      0,      0,      0,      0, 0x1e41,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e43,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x01f9, 0x0144,      0, 0x00f1,      0,      0, 0x1e45,      0,      0,      0,      0, 0x0148,      0,      0,      0,      0,      0, 0x1e47,      0,      0,      0, 0x0146,      0, 0x1e4b,      0,      0, 0x1e49,      0,      0,      0,      0 },
+ { 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x014d, 0x014f, 0x022f, 0x00f6, 0x1ecf,      0, 0x0151, 0x01d2, 0x020d, 0x020f,      0,      0, 0x01a1, 0x1ecd,      0,      0,      0,      0, 0x01eb,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x1e55,      0,      0,      0,      0, 0x1e57,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x0155,      0,      0,      0,      0, 0x1e59,      0,      0,      0,      0, 0x0159, 0x0211, 0x0213,      0,      0,      0, 0x1e5b,      0,      0,      0, 0x0157,      0,      0,      0,      0, 0x1e5f,      0,      0,      0,      0 },
+ {      0, 0x015b, 0x015d,      0,      0,      0, 0x1e61,      0,      0,      0,      0, 0x0161,      0,      0,      0,      0,      0, 0x1e63,      0,      0, 0x0219, 0x015f,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0, 0x1e6b, 0x1e97,      0,      0,      0, 0x0165,      0,      0,      0,      0,      0, 0x1e6d,      0,      0, 0x021b, 0x0163,      0, 0x1e71,      0,      0, 0x1e6f,      0,      0,      0,      0 },
+ { 0x00f9, 0x00fa, 0x00fb, 0x0169, 0x016b, 0x016d,      0, 0x00fc, 0x1ee7, 0x016f, 0x0171, 0x01d4, 0x0215, 0x0217,      0,      0, 0x01b0, 0x1ee5, 0x1e73,      0,      0,      0, 0x0173, 0x1e77,      0, 0x1e75,      0,      0,      0,      0,      0 },
+ {      0,      0,      0, 0x1e7d,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e7f,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1e81, 0x1e83, 0x0175,      0,      0,      0, 0x1e87, 0x1e85,      0, 0x1e98,      0,      0,      0,      0,      0,      0,      0, 0x1e89,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0, 0x1e8b, 0x1e8d,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1ef3, 0x00fd, 0x0177, 0x1ef9, 0x0233,      0, 0x1e8f, 0x00ff, 0x1ef7, 0x1e99,      0,      0,      0,      0,      0,      0,      0, 0x1ef5,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x017a, 0x1e91,      0,      0,      0, 0x017c,      0,      0,      0,      0, 0x017e,      0,      0,      0,      0,      0, 0x1e93,      0,      0,      0,      0,      0,      0,      0,      0, 0x1e95,      0,      0,      0,      0 },
+ { 0x1fed, 0x0385,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fc1,      0,      0,      0 },
+ { 0x1ea6, 0x1ea4,      0, 0x1eaa,      0,      0,      0,      0, 0x1ea8,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x01fc,      0,      0, 0x01e2,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1ec0, 0x1ebe,      0, 0x1ec4,      0,      0,      0,      0, 0x1ec2,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1ed2, 0x1ed0,      0, 0x1ed6,      0,      0,      0,      0, 0x1ed4,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x1e4c,      0,      0, 0x022c,      0,      0, 0x1e4e,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x01db, 0x01d7,      0,      0, 0x01d5,      0,      0,      0,      0,      0,      0, 0x01d9,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1ea7, 0x1ea5,      0, 0x1eab,      0,      0,      0,      0, 0x1ea9,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x01fd,      0,      0, 0x01e3,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1ec1, 0x1ebf,      0, 0x1ec5,      0,      0,      0,      0, 0x1ec3,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1ed3, 0x1ed1,      0, 0x1ed7,      0,      0,      0,      0, 0x1ed5,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0, 0x1e4d,      0,      0, 0x022d,      0,      0, 0x1e4f,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x01dc, 0x01d8,      0,      0, 0x01d6,      0,      0,      0,      0,      0,      0, 0x01da,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1eb0, 0x1eae,      0, 0x1eb4,      0,      0,      0,      0, 0x1eb2,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1eb1, 0x1eaf,      0, 0x1eb5,      0,      0,      0,      0, 0x1eb3,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1e14, 0x1e16,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1e15, 0x1e17,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1e50, 0x1e52,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1e51, 0x1e53,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1edc, 0x1eda,      0, 0x1ee0,      0,      0,      0,      0, 0x1ede,      0,      0,      0,      0,      0,      0,      0,      0, 0x1ee2,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1edd, 0x1edb,      0, 0x1ee1,      0,      0,      0,      0, 0x1edf,      0,      0,      0,      0,      0,      0,      0,      0, 0x1ee3,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1eea, 0x1ee8,      0, 0x1eee,      0,      0,      0,      0, 0x1eec,      0,      0,      0,      0,      0,      0,      0,      0, 0x1ef0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1eeb, 0x1ee9,      0, 0x1eef,      0,      0,      0,      0, 0x1eed,      0,      0,      0,      0,      0,      0,      0,      0, 0x1ef1,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1fba, 0x0386,      0,      0, 0x1fb9, 0x1fb8,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f08, 0x1f09,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fbc,      0,      0 },
+ { 0x1fc8, 0x0388,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f18, 0x1f19,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1fca, 0x0389,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f28, 0x1f29,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fcc,      0,      0 },
+ { 0x1fda, 0x038a,      0,      0, 0x1fd9, 0x1fd8,      0, 0x03aa,      0,      0,      0,      0,      0,      0, 0x1f38, 0x1f39,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1ff8, 0x038c,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f48, 0x1f49,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1fea, 0x038e,      0,      0, 0x1fe9, 0x1fe8,      0, 0x03ab,      0,      0,      0,      0,      0,      0,      0, 0x1f59,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1ffa, 0x038f,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f68, 0x1f69,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1ffc,      0,      0 },
+ { 0x1f70, 0x03ac,      0,      0, 0x1fb1, 0x1fb0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f00, 0x1f01,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fb6, 0x1fb3,      0,      0 },
+ { 0x1f72, 0x03ad,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f10, 0x1f11,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f74, 0x03ae,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f20, 0x1f21,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fc6, 0x1fc3,      0,      0 },
+ { 0x1f76, 0x03af,      0,      0, 0x1fd1, 0x1fd0,      0, 0x03ca,      0,      0,      0,      0,      0,      0, 0x1f30, 0x1f31,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fd6,      0,      0,      0 },
+ { 0x1f78, 0x03cc,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f40, 0x1f41,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fe4, 0x1fe5,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f7a, 0x03cd,      0,      0, 0x1fe1, 0x1fe0,      0, 0x03cb,      0,      0,      0,      0,      0,      0, 0x1f50, 0x1f51,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fe6,      0,      0,      0 },
+ { 0x1f7c, 0x03ce,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f60, 0x1f61,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1ff6, 0x1ff3,      0,      0 },
+ { 0x1fd2, 0x0390,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fd7,      0,      0,      0 },
+ { 0x1fe2, 0x03b0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fe7,      0,      0,      0 },
+ {      0, 0x03d3,      0,      0,      0,      0,      0, 0x03d4,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0, 0x04d0,      0, 0x04d2,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x0400,      0,      0,      0,      0, 0x04d6,      0, 0x0401,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0, 0x04c1,      0, 0x04dc,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x040d,      0,      0,      0, 0x04e2, 0x0419,      0, 0x04e4,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0, 0x04ee, 0x040e,      0, 0x04f0,      0,      0, 0x04f2,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0, 0x04d1,      0, 0x04d3,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x0450,      0,      0,      0,      0, 0x04d7,      0, 0x0451,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0, 0x04c2,      0, 0x04dd,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x045d,      0,      0,      0, 0x04e3, 0x0439,      0, 0x04e5,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0, 0x04ef, 0x045e,      0, 0x04f1,      0,      0, 0x04f3,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0, 0x1eac,      0,      0, 0x1eb6,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ {      0,      0, 0x1ead,      0,      0, 0x1eb7,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f02, 0x1f04,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f06, 0x1f80,      0,      0 },
+ { 0x1f03, 0x1f05,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f07, 0x1f81,      0,      0 },
+ { 0x1f0a, 0x1f0c,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f0e, 0x1f88,      0,      0 },
+ { 0x1f0b, 0x1f0d,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f0f, 0x1f89,      0,      0 },
+ { 0x1f12, 0x1f14,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f13, 0x1f15,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f1a, 0x1f1c,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f1b, 0x1f1d,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f22, 0x1f24,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f26, 0x1f90,      0,      0 },
+ { 0x1f23, 0x1f25,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f27, 0x1f91,      0,      0 },
+ { 0x1f2a, 0x1f2c,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f2e, 0x1f98,      0,      0 },
+ { 0x1f2b, 0x1f2d,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f2f, 0x1f99,      0,      0 },
+ { 0x1f32, 0x1f34,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f36,      0,      0,      0 },
+ { 0x1f33, 0x1f35,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f37,      0,      0,      0 },
+ { 0x1f3a, 0x1f3c,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f3e,      0,      0,      0 },
+ { 0x1f3b, 0x1f3d,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f3f,      0,      0,      0 },
+ { 0x1f42, 0x1f44,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f43, 0x1f45,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f4a, 0x1f4c,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f4b, 0x1f4d,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0 },
+ { 0x1f52, 0x1f54,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f56,      0,      0,      0 },
+ { 0x1f53, 0x1f55,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f57,      0,      0,      0 },
+ { 0x1f5b, 0x1f5d,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f5f,      0,      0,      0 },
+ { 0x1f62, 0x1f64,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f66, 0x1fa0,      0,      0 },
+ { 0x1f63, 0x1f65,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f67, 0x1fa1,      0,      0 },
+ { 0x1f6a, 0x1f6c,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f6e, 0x1fa8,      0,      0 },
+ { 0x1f6b, 0x1f6d,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1f6f, 0x1fa9,      0,      0 },
+ { 0x1fcd, 0x1fce,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fcf,      0,      0,      0 },
+ { 0x1fdd, 0x1fde,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x1fdf,      0,      0,      0 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x3070, 0x3071 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x3073, 0x3074 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x3076, 0x3077 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x3079, 0x307a },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x307c, 0x307d },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x30d0, 0x30d1 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x30d3, 0x30d4 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x30d6, 0x30d7 },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x30d9, 0x30da },
+ {      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0,      0, 0x30dc, 0x30dd }
+};
diff --git a/lib/gunidecomp.h b/lib/gunidecomp.h
new file mode 100644 (file)
index 0000000..1c48c21
--- /dev/null
@@ -0,0 +1,10363 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit gen-unicode-tables.pl and re-run.  */
+
+#ifndef DECOMP_H
+#define DECOMP_H
+
+#define G_UNICODE_LAST_CHAR 0x10ffff
+
+#define G_UNICODE_MAX_TABLE_INDEX (0x110000 / 256)
+
+#define G_UNICODE_LAST_CHAR_PART1 0x2FAFF
+
+#define G_UNICODE_LAST_PAGE_PART1 762
+
+#define G_UNICODE_NOT_PRESENT_OFFSET 65535
+
+static const guchar cclass_data[][256] = {
+  { /* page 3, index 0 */
+    230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 
+    230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 
+    220, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 
+    220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 
+    220, 220, 220, 230, 230, 230, 230, 230, 230, 230, 230, 240, 230, 220, 
+    220, 220, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 
+    230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0
+  },
+  { /* page 4, index 1 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 5, index 2 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 
+    230, 230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 
+    228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, 
+    0, 24, 25, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 6, index 3 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, 230, 230, 220, 
+    230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 7, index 4 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 
+    220, 230, 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 9, index 5 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 10, index 6 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 11, index 7 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 12, index 8 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 13, index 9 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 14, index 10 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 15, index 11 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 
+    132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 130, 0, 230, 230, 9, 0, 
+    230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0
+  },
+  { /* page 16, index 12 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 23, index 13 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 24, index 14 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 32, index 15 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 
+    230, 230, 1, 1, 1, 230, 230, 0, 0, 0, 0, 230, 0, 0, 0, 1, 1, 230, 220, 
+    230, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 48, index 16 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 
+    224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 251, index 17 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 254, index 18 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  },
+  { /* page 465, index 19 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, 0, 0, 226, 216, 216, 216, 216, 216, 
+    0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 220, 220, 220, 0, 0, 
+    230, 230, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0
+  }
+};
+
+static const gint16 combining_class_table_part1[763] = {
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 /* page 3 */,
+  1 /* page 4 */,
+  2 /* page 5 */,
+  3 /* page 6 */,
+  4 /* page 7 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  5 /* page 9 */,
+  6 /* page 10 */,
+  7 /* page 11 */,
+  8 /* page 12 */,
+  9 /* page 13 */,
+  10 /* page 14 */,
+  11 /* page 15 */,
+  12 /* page 16 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  13 /* page 23 */,
+  14 /* page 24 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  15 /* page 32 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  16 /* page 48 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  17 /* page 251 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  18 /* page 254 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  19 /* page 465 */,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX
+};
+
+static const gint16 combining_class_table_part2[768] = {
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX,
+  0 + G_UNICODE_MAX_TABLE_INDEX
+};
+
+typedef struct
+{
+  gunichar ch;
+  guint16 canon_offset;
+  guint16 compat_offset;
+} decomposition;
+
+static const decomposition decomp_table[] =
+{
+  { 0x00a0, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x00a8, G_UNICODE_NOT_PRESENT_OFFSET, 2 },
+  { 0x00aa, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x00af, G_UNICODE_NOT_PRESENT_OFFSET, 8 },
+  { 0x00b2, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
+  { 0x00b3, G_UNICODE_NOT_PRESENT_OFFSET, 14 },
+  { 0x00b4, G_UNICODE_NOT_PRESENT_OFFSET, 16 },
+  { 0x00b5, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
+  { 0x00b8, G_UNICODE_NOT_PRESENT_OFFSET, 23 },
+  { 0x00b9, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
+  { 0x00ba, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x00bc, G_UNICODE_NOT_PRESENT_OFFSET, 31 },
+  { 0x00bd, G_UNICODE_NOT_PRESENT_OFFSET, 37 },
+  { 0x00be, G_UNICODE_NOT_PRESENT_OFFSET, 43 },
+  { 0x00c0, 49, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00c1, 53, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00c2, 57, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00c3, 61, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00c4, 65, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00c5, 69, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00c7, 73, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00c8, 77, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00c9, 81, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00ca, 85, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00cb, 89, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00cc, 93, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00cd, 97, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00ce, 101, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00cf, 105, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00d1, 109, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00d2, 113, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00d3, 117, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00d4, 121, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00d5, 125, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00d6, 129, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00d9, 133, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00da, 137, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00db, 141, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00dc, 145, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00dd, 149, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00e0, 153, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00e1, 157, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00e2, 161, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00e3, 165, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00e4, 169, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00e5, 173, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00e7, 177, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00e8, 181, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00e9, 185, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00ea, 189, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00eb, 193, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00ec, 197, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00ed, 201, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00ee, 205, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00ef, 209, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00f1, 213, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00f2, 217, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00f3, 221, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00f4, 225, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00f5, 229, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00f6, 233, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00f9, 237, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00fa, 241, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00fb, 245, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00fc, 249, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00fd, 253, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x00ff, 257, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0100, 261, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0101, 265, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0102, 269, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0103, 273, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0104, 277, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0105, 281, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0106, 285, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0107, 289, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0108, 293, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0109, 297, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x010a, 301, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x010b, 305, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x010c, 309, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x010d, 313, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x010e, 317, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x010f, 321, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0112, 325, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0113, 329, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0114, 333, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0115, 337, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0116, 341, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0117, 345, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0118, 349, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0119, 353, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x011a, 357, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x011b, 361, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x011c, 365, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x011d, 369, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x011e, 373, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x011f, 377, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0120, 381, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0121, 385, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0122, 389, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0123, 393, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0124, 397, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0125, 401, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0128, 405, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0129, 409, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x012a, 413, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x012b, 417, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x012c, 421, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x012d, 425, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x012e, 429, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x012f, 433, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0130, 437, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0132, G_UNICODE_NOT_PRESENT_OFFSET, 441 },
+  { 0x0133, G_UNICODE_NOT_PRESENT_OFFSET, 444 },
+  { 0x0134, 447, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0135, 451, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0136, 455, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0137, 459, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0139, 463, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x013a, 467, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x013b, 471, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x013c, 475, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x013d, 479, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x013e, 483, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x013f, G_UNICODE_NOT_PRESENT_OFFSET, 487 },
+  { 0x0140, G_UNICODE_NOT_PRESENT_OFFSET, 491 },
+  { 0x0143, 495, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0144, 499, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0145, 503, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0146, 507, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0147, 511, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0148, 515, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0149, G_UNICODE_NOT_PRESENT_OFFSET, 519 },
+  { 0x014c, 523, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x014d, 527, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x014e, 531, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x014f, 535, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0150, 539, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0151, 543, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0154, 547, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0155, 551, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0156, 555, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0157, 559, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0158, 563, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0159, 567, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x015a, 571, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x015b, 575, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x015c, 579, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x015d, 583, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x015e, 587, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x015f, 591, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0160, 595, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0161, 599, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0162, 603, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0163, 607, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0164, 611, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0165, 615, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0168, 619, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0169, 623, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x016a, 627, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x016b, 631, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x016c, 635, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x016d, 639, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x016e, 643, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x016f, 647, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0170, 651, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0171, 655, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0172, 659, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0173, 663, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0174, 667, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0175, 671, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0176, 675, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0177, 679, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0178, 683, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0179, 687, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x017a, 691, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x017b, 695, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x017c, 699, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x017d, 703, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x017e, 707, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x017f, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x01a0, 713, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01a1, 717, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01af, 721, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01b0, 725, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01c4, G_UNICODE_NOT_PRESENT_OFFSET, 729 },
+  { 0x01c5, G_UNICODE_NOT_PRESENT_OFFSET, 734 },
+  { 0x01c6, G_UNICODE_NOT_PRESENT_OFFSET, 739 },
+  { 0x01c7, G_UNICODE_NOT_PRESENT_OFFSET, 744 },
+  { 0x01c8, G_UNICODE_NOT_PRESENT_OFFSET, 747 },
+  { 0x01c9, G_UNICODE_NOT_PRESENT_OFFSET, 750 },
+  { 0x01ca, G_UNICODE_NOT_PRESENT_OFFSET, 753 },
+  { 0x01cb, G_UNICODE_NOT_PRESENT_OFFSET, 756 },
+  { 0x01cc, G_UNICODE_NOT_PRESENT_OFFSET, 759 },
+  { 0x01cd, 762, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01ce, 766, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01cf, 770, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d0, 774, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d1, 778, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d2, 782, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d3, 786, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d4, 790, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d5, 794, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d6, 800, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d7, 806, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d8, 812, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01d9, 818, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01da, 824, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01db, 830, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01dc, 836, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01de, 842, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01df, 848, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01e0, 854, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01e1, 860, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01e2, 866, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01e3, 871, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01e6, 876, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01e7, 880, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01e8, 884, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01e9, 888, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01ea, 892, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01eb, 896, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01ec, 900, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01ed, 906, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01ee, 912, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01ef, 917, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01f0, 922, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01f1, G_UNICODE_NOT_PRESENT_OFFSET, 926 },
+  { 0x01f2, G_UNICODE_NOT_PRESENT_OFFSET, 929 },
+  { 0x01f3, G_UNICODE_NOT_PRESENT_OFFSET, 932 },
+  { 0x01f4, 935, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01f5, 939, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01f8, 943, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01f9, 947, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01fa, 951, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01fb, 957, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01fc, 963, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01fd, 968, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01fe, 973, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x01ff, 978, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0200, 983, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0201, 987, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0202, 991, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0203, 995, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0204, 999, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0205, 1003, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0206, 1007, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0207, 1011, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0208, 1015, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0209, 1019, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x020a, 1023, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x020b, 1027, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x020c, 1031, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x020d, 1035, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x020e, 1039, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x020f, 1043, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0210, 1047, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0211, 1051, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0212, 1055, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0213, 1059, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0214, 1063, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0215, 1067, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0216, 1071, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0217, 1075, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0218, 1079, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0219, 1083, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x021a, 1087, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x021b, 1091, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x021e, 1095, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x021f, 1099, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0226, 1103, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0227, 1107, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0228, 1111, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0229, 1115, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x022a, 1119, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x022b, 1125, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x022c, 1131, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x022d, 1137, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x022e, 1143, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x022f, 1147, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0230, 1151, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0231, 1157, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0232, 1163, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0233, 1167, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x02b0, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x02b1, G_UNICODE_NOT_PRESENT_OFFSET, 1173 },
+  { 0x02b2, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x02b3, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x02b4, G_UNICODE_NOT_PRESENT_OFFSET, 1180 },
+  { 0x02b5, G_UNICODE_NOT_PRESENT_OFFSET, 1183 },
+  { 0x02b6, G_UNICODE_NOT_PRESENT_OFFSET, 1186 },
+  { 0x02b7, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x02b8, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x02d8, G_UNICODE_NOT_PRESENT_OFFSET, 1193 },
+  { 0x02d9, G_UNICODE_NOT_PRESENT_OFFSET, 1197 },
+  { 0x02da, G_UNICODE_NOT_PRESENT_OFFSET, 1201 },
+  { 0x02db, G_UNICODE_NOT_PRESENT_OFFSET, 1205 },
+  { 0x02dc, G_UNICODE_NOT_PRESENT_OFFSET, 1209 },
+  { 0x02dd, G_UNICODE_NOT_PRESENT_OFFSET, 1213 },
+  { 0x02e0, G_UNICODE_NOT_PRESENT_OFFSET, 1217 },
+  { 0x02e1, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x02e2, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x02e3, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x02e4, G_UNICODE_NOT_PRESENT_OFFSET, 1224 },
+  { 0x0340, 1227, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0341, 1230, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0343, 1233, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0344, 1236, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0374, 1241, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x037a, G_UNICODE_NOT_PRESENT_OFFSET, 1244 },
+  { 0x037e, 1248, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0384, G_UNICODE_NOT_PRESENT_OFFSET, 16 },
+  { 0x0385, 1250, 1255 },
+  { 0x0386, 1261, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0387, 1266, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0388, 1269, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0389, 1274, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x038a, 1279, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x038c, 1284, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x038e, 1289, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x038f, 1294, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0390, 1299, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03aa, 1306, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03ab, 1311, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03ac, 1316, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03ad, 1321, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03ae, 1326, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03af, 1331, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03b0, 1336, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03ca, 1343, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03cb, 1348, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03cc, 1353, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03cd, 1358, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03ce, 1363, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x03d0, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
+  { 0x03d1, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x03d2, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
+  { 0x03d3, 1377, 1289 },
+  { 0x03d4, 1382, 1311 },
+  { 0x03d5, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x03d6, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x03f0, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x03f1, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x03f2, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
+  { 0x03f4, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x03f5, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x0400, 1408, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0401, 1413, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0403, 1418, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0407, 1423, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x040c, 1428, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x040d, 1433, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x040e, 1438, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0419, 1443, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0439, 1448, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0450, 1453, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0451, 1458, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0453, 1463, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0457, 1468, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x045c, 1473, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x045d, 1478, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x045e, 1483, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0476, 1488, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0477, 1493, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04c1, 1498, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04c2, 1503, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04d0, 1508, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04d1, 1513, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04d2, 1518, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04d3, 1523, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04d6, 1528, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04d7, 1533, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04da, 1538, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04db, 1543, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04dc, 1548, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04dd, 1553, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04de, 1558, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04df, 1563, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04e2, 1568, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04e3, 1573, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04e4, 1578, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04e5, 1583, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04e6, 1588, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04e7, 1593, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04ea, 1598, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04eb, 1603, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04ec, 1608, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04ed, 1613, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04ee, 1618, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04ef, 1623, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04f0, 1628, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04f1, 1633, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04f2, 1638, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04f3, 1643, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04f4, 1648, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04f5, 1653, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04f8, 1658, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x04f9, 1663, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0587, G_UNICODE_NOT_PRESENT_OFFSET, 1668 },
+  { 0x0622, 1673, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0623, 1678, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0624, 1683, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0625, 1688, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0626, 1693, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0675, G_UNICODE_NOT_PRESENT_OFFSET, 1698 },
+  { 0x0676, G_UNICODE_NOT_PRESENT_OFFSET, 1703 },
+  { 0x0677, G_UNICODE_NOT_PRESENT_OFFSET, 1708 },
+  { 0x0678, G_UNICODE_NOT_PRESENT_OFFSET, 1713 },
+  { 0x06c0, 1718, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x06c2, 1723, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x06d3, 1728, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0929, 1733, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0931, 1740, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0934, 1747, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0958, 1754, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0959, 1761, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x095a, 1768, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x095b, 1775, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x095c, 1782, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x095d, 1789, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x095e, 1796, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x095f, 1803, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x09cb, 1810, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x09cc, 1817, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x09dc, 1824, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x09dd, 1831, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x09df, 1838, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0a33, 1845, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0a36, 1852, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0a59, 1859, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0a5a, 1866, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0a5b, 1873, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0a5e, 1880, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0b48, 1887, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0b4b, 1894, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0b4c, 1901, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0b5c, 1908, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0b5d, 1915, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0b94, 1922, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0bca, 1929, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0bcb, 1936, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0bcc, 1943, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0c48, 1950, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0cc0, 1957, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0cc7, 1964, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0cc8, 1971, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0cca, 1978, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0ccb, 1985, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0d4a, 1995, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0d4b, 2002, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0d4c, 2009, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0dda, 2016, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0ddc, 2023, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0ddd, 2030, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0dde, 2040, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0e33, G_UNICODE_NOT_PRESENT_OFFSET, 2047 },
+  { 0x0eb3, G_UNICODE_NOT_PRESENT_OFFSET, 2054 },
+  { 0x0edc, G_UNICODE_NOT_PRESENT_OFFSET, 2061 },
+  { 0x0edd, G_UNICODE_NOT_PRESENT_OFFSET, 2068 },
+  { 0x0f0c, G_UNICODE_NOT_PRESENT_OFFSET, 2075 },
+  { 0x0f43, 2079, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f4d, 2086, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f52, 2093, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f57, 2100, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f5c, 2107, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f69, 2114, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f73, 2121, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f75, 2128, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f76, 2135, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f77, G_UNICODE_NOT_PRESENT_OFFSET, 2142 },
+  { 0x0f78, 2152, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f79, G_UNICODE_NOT_PRESENT_OFFSET, 2159 },
+  { 0x0f81, 2169, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f93, 2176, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0f9d, 2183, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0fa2, 2190, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0fa7, 2197, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0fac, 2204, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x0fb9, 2211, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1026, 2218, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e00, 2225, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e01, 2229, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e02, 2233, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e03, 2237, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e04, 2241, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e05, 2245, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e06, 2249, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e07, 2253, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e08, 2257, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e09, 2263, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e0a, 2269, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e0b, 2273, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e0c, 2277, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e0d, 2281, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e0e, 2285, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e0f, 2289, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e10, 2293, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e11, 2297, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e12, 2301, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e13, 2305, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e14, 2309, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e15, 2315, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e16, 2321, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e17, 2327, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e18, 2333, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e19, 2337, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e1a, 2341, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e1b, 2345, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e1c, 2349, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e1d, 2355, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e1e, 2361, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e1f, 2365, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e20, 2369, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e21, 2373, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e22, 2377, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e23, 2381, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e24, 2385, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e25, 2389, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e26, 2393, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e27, 2397, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e28, 2401, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e29, 2405, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e2a, 2409, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e2b, 2413, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e2c, 2417, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e2d, 2421, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e2e, 2425, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e2f, 2431, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e30, 2437, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e31, 2441, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e32, 2445, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e33, 2449, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e34, 2453, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e35, 2457, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e36, 2461, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e37, 2465, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e38, 2469, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e39, 2475, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e3a, 2481, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e3b, 2485, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e3c, 2489, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e3d, 2493, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e3e, 2497, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e3f, 2501, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e40, 2505, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e41, 2509, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e42, 2513, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e43, 2517, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e44, 2521, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e45, 2525, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e46, 2529, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e47, 2533, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e48, 2537, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e49, 2541, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e4a, 2545, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e4b, 2549, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e4c, 2553, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e4d, 2559, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e4e, 2565, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e4f, 2571, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e50, 2577, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e51, 2583, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e52, 2589, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e53, 2595, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e54, 2601, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e55, 2605, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e56, 2609, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e57, 2613, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e58, 2617, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e59, 2621, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e5a, 2625, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e5b, 2629, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e5c, 2633, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e5d, 2639, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e5e, 2645, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e5f, 2649, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e60, 2653, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e61, 2657, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e62, 2661, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e63, 2665, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e64, 2669, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e65, 2675, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e66, 2681, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e67, 2687, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e68, 2693, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e69, 2699, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e6a, 2705, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e6b, 2709, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e6c, 2713, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e6d, 2717, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e6e, 2721, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e6f, 2725, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e70, 2729, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e71, 2733, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e72, 2737, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e73, 2741, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e74, 2745, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e75, 2749, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e76, 2753, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e77, 2757, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e78, 2761, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e79, 2767, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e7a, 2773, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e7b, 2779, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e7c, 2785, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e7d, 2789, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e7e, 2793, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e7f, 2797, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e80, 2801, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e81, 2805, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e82, 2809, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e83, 2813, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e84, 2817, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e85, 2821, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e86, 2825, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e87, 2829, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e88, 2833, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e89, 2837, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e8a, 2841, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e8b, 2845, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e8c, 2849, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e8d, 2853, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e8e, 2857, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e8f, 2861, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e90, 2865, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e91, 2869, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e92, 2873, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e93, 2877, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e94, 2881, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e95, 2885, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e96, 2889, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e97, 2893, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e98, 2897, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e99, 2901, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1e9a, G_UNICODE_NOT_PRESENT_OFFSET, 2905 },
+  { 0x1e9b, 2909, 2657 },
+  { 0x1ea0, 2914, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ea1, 2918, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ea2, 2922, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ea3, 2926, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ea4, 2930, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ea5, 2936, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ea6, 2942, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ea7, 2948, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ea8, 2954, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ea9, 2960, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eaa, 2966, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eab, 2972, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eac, 2978, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ead, 2984, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eae, 2990, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eaf, 2996, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb0, 3002, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb1, 3008, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb2, 3014, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb3, 3020, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb4, 3026, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb5, 3032, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb6, 3038, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb7, 3044, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb8, 3050, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eb9, 3054, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eba, 3058, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ebb, 3062, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ebc, 3066, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ebd, 3070, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ebe, 3074, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ebf, 3080, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec0, 3086, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec1, 3092, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec2, 3098, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec3, 3104, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec4, 3110, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec5, 3116, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec6, 3122, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec7, 3128, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec8, 3134, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ec9, 3138, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eca, 3142, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ecb, 3146, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ecc, 3150, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ecd, 3154, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ece, 3158, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ecf, 3162, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed0, 3166, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed1, 3172, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed2, 3178, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed3, 3184, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed4, 3190, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed5, 3196, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed6, 3202, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed7, 3208, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed8, 3214, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ed9, 3220, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eda, 3226, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1edb, 3232, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1edc, 3238, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1edd, 3244, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ede, 3250, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1edf, 3256, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee0, 3262, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee1, 3268, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee2, 3274, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee3, 3280, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee4, 3286, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee5, 3290, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee6, 3294, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee7, 3298, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee8, 3302, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ee9, 3308, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eea, 3314, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eeb, 3320, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eec, 3326, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eed, 3332, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eee, 3338, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1eef, 3344, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef0, 3350, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef1, 3356, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef2, 3362, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef3, 3366, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef4, 3370, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef5, 3374, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef6, 3378, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef7, 3382, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef8, 3386, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ef9, 3390, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f00, 3394, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f01, 3399, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f02, 3404, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f03, 3411, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f04, 3418, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f05, 3425, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f06, 3432, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f07, 3439, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f08, 3446, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f09, 3451, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f0a, 3456, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f0b, 3463, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f0c, 3470, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f0d, 3477, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f0e, 3484, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f0f, 3491, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f10, 3498, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f11, 3503, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f12, 3508, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f13, 3515, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f14, 3522, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f15, 3529, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f18, 3536, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f19, 3541, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f1a, 3546, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f1b, 3553, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f1c, 3560, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f1d, 3567, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f20, 3574, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f21, 3579, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f22, 3584, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f23, 3591, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f24, 3598, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f25, 3605, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f26, 3612, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f27, 3619, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f28, 3626, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f29, 3631, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f2a, 3636, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f2b, 3643, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f2c, 3650, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f2d, 3657, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f2e, 3664, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f2f, 3671, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f30, 3678, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f31, 3683, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f32, 3688, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f33, 3695, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f34, 3702, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f35, 3709, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f36, 3716, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f37, 3723, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f38, 3730, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f39, 3735, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f3a, 3740, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f3b, 3747, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f3c, 3754, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f3d, 3761, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f3e, 3768, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f3f, 3775, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f40, 3782, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f41, 3787, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f42, 3792, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f43, 3799, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f44, 3806, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f45, 3813, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f48, 3820, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f49, 3825, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f4a, 3830, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f4b, 3837, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f4c, 3844, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f4d, 3851, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f50, 3858, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f51, 3863, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f52, 3868, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f53, 3875, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f54, 3882, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f55, 3889, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f56, 3896, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f57, 3903, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f59, 3910, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f5b, 3915, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f5d, 3922, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f5f, 3929, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f60, 3936, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f61, 3941, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f62, 3946, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f63, 3953, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f64, 3960, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f65, 3967, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f66, 3974, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f67, 3981, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f68, 3988, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f69, 3993, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f6a, 3998, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f6b, 4005, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f6c, 4012, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f6d, 4019, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f6e, 4026, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f6f, 4033, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f70, 4040, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f71, 1316, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f72, 4045, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f73, 1321, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f74, 4050, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f75, 1326, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f76, 4055, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f77, 1331, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f78, 4060, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f79, 1353, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f7a, 4065, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f7b, 1358, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f7c, 4070, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f7d, 1363, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f80, 4075, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f81, 4082, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f82, 4089, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f83, 4098, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f84, 4107, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f85, 4116, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f86, 4125, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f87, 4134, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f88, 4143, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f89, 4150, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f8a, 4157, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f8b, 4166, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f8c, 4175, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f8d, 4184, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f8e, 4193, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f8f, 4202, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f90, 4211, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f91, 4218, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f92, 4225, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f93, 4234, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f94, 4243, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f95, 4252, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f96, 4261, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f97, 4270, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f98, 4279, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f99, 4286, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f9a, 4293, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f9b, 4302, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f9c, 4311, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f9d, 4320, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f9e, 4329, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1f9f, 4338, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa0, 4347, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa1, 4354, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa2, 4361, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa3, 4370, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa4, 4379, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa5, 4388, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa6, 4397, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa7, 4406, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa8, 4415, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fa9, 4422, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1faa, 4429, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fab, 4438, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fac, 4447, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fad, 4456, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fae, 4465, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1faf, 4474, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fb0, 4483, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fb1, 4488, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fb2, 4493, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fb3, 4500, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fb4, 4505, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fb6, 4512, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fb7, 4517, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fb8, 4524, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fb9, 4529, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fba, 4534, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fbb, 1261, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fbc, 4539, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fbd, G_UNICODE_NOT_PRESENT_OFFSET, 4544 },
+  { 0x1fbe, 4548, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fbf, G_UNICODE_NOT_PRESENT_OFFSET, 4544 },
+  { 0x1fc0, G_UNICODE_NOT_PRESENT_OFFSET, 4551 },
+  { 0x1fc1, 4555, 4560 },
+  { 0x1fc2, 4566, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fc3, 4573, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fc4, 4578, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fc6, 4585, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fc7, 4590, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fc8, 4597, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fc9, 1269, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fca, 4602, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fcb, 1274, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fcc, 4607, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fcd, 4612, 4618 },
+  { 0x1fce, 4624, 4630 },
+  { 0x1fcf, 4636, 4642 },
+  { 0x1fd0, 4648, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fd1, 4653, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fd2, 4658, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fd3, 1299, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fd6, 4665, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fd7, 4670, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fd8, 4677, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fd9, 4682, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fda, 4687, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fdb, 1279, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fdd, 4692, 4698 },
+  { 0x1fde, 4704, 4710 },
+  { 0x1fdf, 4716, 4722 },
+  { 0x1fe0, 4728, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fe1, 4733, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fe2, 4738, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fe3, 1336, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fe4, 4745, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fe5, 4750, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fe6, 4755, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fe7, 4760, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fe8, 4767, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fe9, 4772, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fea, 4777, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1feb, 1289, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fec, 4782, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1fed, 4787, 4792 },
+  { 0x1fee, 1250, 1255 },
+  { 0x1fef, 4798, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ff2, 4800, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ff3, 4807, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ff4, 4812, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ff6, 4819, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ff7, 4824, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ff8, 4831, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ff9, 1284, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ffa, 4836, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ffb, 1294, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ffc, 4841, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1ffd, 4846, 16 },
+  { 0x1ffe, G_UNICODE_NOT_PRESENT_OFFSET, 4849 },
+  { 0x2000, 4853, 0 },
+  { 0x2001, 4857, 0 },
+  { 0x2002, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2003, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2004, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2005, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2006, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2007, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2008, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2009, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x200a, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2011, G_UNICODE_NOT_PRESENT_OFFSET, 4861 },
+  { 0x2017, G_UNICODE_NOT_PRESENT_OFFSET, 4865 },
+  { 0x2024, G_UNICODE_NOT_PRESENT_OFFSET, 4869 },
+  { 0x2025, G_UNICODE_NOT_PRESENT_OFFSET, 4871 },
+  { 0x2026, G_UNICODE_NOT_PRESENT_OFFSET, 4874 },
+  { 0x202f, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2033, G_UNICODE_NOT_PRESENT_OFFSET, 4878 },
+  { 0x2034, G_UNICODE_NOT_PRESENT_OFFSET, 4885 },
+  { 0x2036, G_UNICODE_NOT_PRESENT_OFFSET, 4895 },
+  { 0x2037, G_UNICODE_NOT_PRESENT_OFFSET, 4902 },
+  { 0x203c, G_UNICODE_NOT_PRESENT_OFFSET, 4912 },
+  { 0x203e, G_UNICODE_NOT_PRESENT_OFFSET, 4915 },
+  { 0x2047, G_UNICODE_NOT_PRESENT_OFFSET, 4919 },
+  { 0x2048, G_UNICODE_NOT_PRESENT_OFFSET, 4922 },
+  { 0x2049, G_UNICODE_NOT_PRESENT_OFFSET, 4925 },
+  { 0x2057, G_UNICODE_NOT_PRESENT_OFFSET, 4928 },
+  { 0x205f, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x2070, G_UNICODE_NOT_PRESENT_OFFSET, 4941 },
+  { 0x2071, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x2074, G_UNICODE_NOT_PRESENT_OFFSET, 4945 },
+  { 0x2075, G_UNICODE_NOT_PRESENT_OFFSET, 4947 },
+  { 0x2076, G_UNICODE_NOT_PRESENT_OFFSET, 4949 },
+  { 0x2077, G_UNICODE_NOT_PRESENT_OFFSET, 4951 },
+  { 0x2078, G_UNICODE_NOT_PRESENT_OFFSET, 4953 },
+  { 0x2079, G_UNICODE_NOT_PRESENT_OFFSET, 4955 },
+  { 0x207a, G_UNICODE_NOT_PRESENT_OFFSET, 4957 },
+  { 0x207b, G_UNICODE_NOT_PRESENT_OFFSET, 4959 },
+  { 0x207c, G_UNICODE_NOT_PRESENT_OFFSET, 4963 },
+  { 0x207d, G_UNICODE_NOT_PRESENT_OFFSET, 4965 },
+  { 0x207e, G_UNICODE_NOT_PRESENT_OFFSET, 4967 },
+  { 0x207f, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x2080, G_UNICODE_NOT_PRESENT_OFFSET, 4941 },
+  { 0x2081, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
+  { 0x2082, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
+  { 0x2083, G_UNICODE_NOT_PRESENT_OFFSET, 14 },
+  { 0x2084, G_UNICODE_NOT_PRESENT_OFFSET, 4945 },
+  { 0x2085, G_UNICODE_NOT_PRESENT_OFFSET, 4947 },
+  { 0x2086, G_UNICODE_NOT_PRESENT_OFFSET, 4949 },
+  { 0x2087, G_UNICODE_NOT_PRESENT_OFFSET, 4951 },
+  { 0x2088, G_UNICODE_NOT_PRESENT_OFFSET, 4953 },
+  { 0x2089, G_UNICODE_NOT_PRESENT_OFFSET, 4955 },
+  { 0x208a, G_UNICODE_NOT_PRESENT_OFFSET, 4957 },
+  { 0x208b, G_UNICODE_NOT_PRESENT_OFFSET, 4959 },
+  { 0x208c, G_UNICODE_NOT_PRESENT_OFFSET, 4963 },
+  { 0x208d, G_UNICODE_NOT_PRESENT_OFFSET, 4965 },
+  { 0x208e, G_UNICODE_NOT_PRESENT_OFFSET, 4967 },
+  { 0x20a8, G_UNICODE_NOT_PRESENT_OFFSET, 4971 },
+  { 0x2100, G_UNICODE_NOT_PRESENT_OFFSET, 4974 },
+  { 0x2101, G_UNICODE_NOT_PRESENT_OFFSET, 4978 },
+  { 0x2102, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x2103, G_UNICODE_NOT_PRESENT_OFFSET, 4984 },
+  { 0x2105, G_UNICODE_NOT_PRESENT_OFFSET, 4988 },
+  { 0x2106, G_UNICODE_NOT_PRESENT_OFFSET, 4992 },
+  { 0x2107, G_UNICODE_NOT_PRESENT_OFFSET, 4996 },
+  { 0x2109, G_UNICODE_NOT_PRESENT_OFFSET, 4999 },
+  { 0x210a, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x210b, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x210c, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x210d, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x210e, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x210f, G_UNICODE_NOT_PRESENT_OFFSET, 5007 },
+  { 0x2110, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x2111, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x2112, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x2113, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x2115, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x2116, G_UNICODE_NOT_PRESENT_OFFSET, 5016 },
+  { 0x2119, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x211a, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x211b, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x211c, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x211d, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x2120, G_UNICODE_NOT_PRESENT_OFFSET, 5025 },
+  { 0x2121, G_UNICODE_NOT_PRESENT_OFFSET, 5028 },
+  { 0x2122, G_UNICODE_NOT_PRESENT_OFFSET, 5032 },
+  { 0x2124, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x2126, 5037, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2128, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x212a, 5040, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x212b, 69, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x212c, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x212d, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x212f, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x2130, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x2131, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x2133, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x2134, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x2135, G_UNICODE_NOT_PRESENT_OFFSET, 5052 },
+  { 0x2136, G_UNICODE_NOT_PRESENT_OFFSET, 5055 },
+  { 0x2137, G_UNICODE_NOT_PRESENT_OFFSET, 5058 },
+  { 0x2138, G_UNICODE_NOT_PRESENT_OFFSET, 5061 },
+  { 0x2139, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x213d, G_UNICODE_NOT_PRESENT_OFFSET, 5064 },
+  { 0x213e, G_UNICODE_NOT_PRESENT_OFFSET, 5067 },
+  { 0x213f, G_UNICODE_NOT_PRESENT_OFFSET, 5070 },
+  { 0x2140, G_UNICODE_NOT_PRESENT_OFFSET, 5073 },
+  { 0x2145, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x2146, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x2147, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x2148, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x2149, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x2153, G_UNICODE_NOT_PRESENT_OFFSET, 5081 },
+  { 0x2154, G_UNICODE_NOT_PRESENT_OFFSET, 5087 },
+  { 0x2155, G_UNICODE_NOT_PRESENT_OFFSET, 5093 },
+  { 0x2156, G_UNICODE_NOT_PRESENT_OFFSET, 5099 },
+  { 0x2157, G_UNICODE_NOT_PRESENT_OFFSET, 5105 },
+  { 0x2158, G_UNICODE_NOT_PRESENT_OFFSET, 5111 },
+  { 0x2159, G_UNICODE_NOT_PRESENT_OFFSET, 5117 },
+  { 0x215a, G_UNICODE_NOT_PRESENT_OFFSET, 5123 },
+  { 0x215b, G_UNICODE_NOT_PRESENT_OFFSET, 5129 },
+  { 0x215c, G_UNICODE_NOT_PRESENT_OFFSET, 5135 },
+  { 0x215d, G_UNICODE_NOT_PRESENT_OFFSET, 5141 },
+  { 0x215e, G_UNICODE_NOT_PRESENT_OFFSET, 5147 },
+  { 0x215f, G_UNICODE_NOT_PRESENT_OFFSET, 5153 },
+  { 0x2160, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x2161, G_UNICODE_NOT_PRESENT_OFFSET, 5158 },
+  { 0x2162, G_UNICODE_NOT_PRESENT_OFFSET, 5161 },
+  { 0x2163, G_UNICODE_NOT_PRESENT_OFFSET, 5165 },
+  { 0x2164, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x2165, G_UNICODE_NOT_PRESENT_OFFSET, 5170 },
+  { 0x2166, G_UNICODE_NOT_PRESENT_OFFSET, 5173 },
+  { 0x2167, G_UNICODE_NOT_PRESENT_OFFSET, 5177 },
+  { 0x2168, G_UNICODE_NOT_PRESENT_OFFSET, 5182 },
+  { 0x2169, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x216a, G_UNICODE_NOT_PRESENT_OFFSET, 5187 },
+  { 0x216b, G_UNICODE_NOT_PRESENT_OFFSET, 5190 },
+  { 0x216c, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x216d, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x216e, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x216f, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x2170, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x2171, G_UNICODE_NOT_PRESENT_OFFSET, 5194 },
+  { 0x2172, G_UNICODE_NOT_PRESENT_OFFSET, 5197 },
+  { 0x2173, G_UNICODE_NOT_PRESENT_OFFSET, 5201 },
+  { 0x2174, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x2175, G_UNICODE_NOT_PRESENT_OFFSET, 5206 },
+  { 0x2176, G_UNICODE_NOT_PRESENT_OFFSET, 5209 },
+  { 0x2177, G_UNICODE_NOT_PRESENT_OFFSET, 5213 },
+  { 0x2178, G_UNICODE_NOT_PRESENT_OFFSET, 5218 },
+  { 0x2179, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x217a, G_UNICODE_NOT_PRESENT_OFFSET, 5221 },
+  { 0x217b, G_UNICODE_NOT_PRESENT_OFFSET, 5224 },
+  { 0x217c, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x217d, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x217e, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x217f, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x219a, 5232, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x219b, 5238, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x21ae, 5244, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x21cd, 5250, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x21ce, 5256, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x21cf, 5262, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2204, 5268, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2209, 5274, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x220c, 5280, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2224, 5286, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2226, 5292, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x222c, G_UNICODE_NOT_PRESENT_OFFSET, 5298 },
+  { 0x222d, G_UNICODE_NOT_PRESENT_OFFSET, 5305 },
+  { 0x222f, G_UNICODE_NOT_PRESENT_OFFSET, 5315 },
+  { 0x2230, G_UNICODE_NOT_PRESENT_OFFSET, 5322 },
+  { 0x2241, 5332, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2244, 5338, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2247, 5344, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2249, 5350, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2260, 5356, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2262, 5360, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x226d, 5366, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x226e, 5372, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x226f, 5376, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2270, 5380, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2271, 5386, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2274, 5392, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2275, 5398, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2278, 5404, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2279, 5410, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2280, 5416, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2281, 5422, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2284, 5428, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2285, 5434, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2288, 5440, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2289, 5446, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22ac, 5452, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22ad, 5458, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22ae, 5464, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22af, 5470, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22e0, 5476, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22e1, 5482, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22e2, 5488, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22e3, 5494, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22ea, 5500, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22eb, 5506, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22ec, 5512, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x22ed, 5518, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2329, 5524, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x232a, 5528, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2460, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
+  { 0x2461, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
+  { 0x2462, G_UNICODE_NOT_PRESENT_OFFSET, 14 },
+  { 0x2463, G_UNICODE_NOT_PRESENT_OFFSET, 4945 },
+  { 0x2464, G_UNICODE_NOT_PRESENT_OFFSET, 4947 },
+  { 0x2465, G_UNICODE_NOT_PRESENT_OFFSET, 4949 },
+  { 0x2466, G_UNICODE_NOT_PRESENT_OFFSET, 4951 },
+  { 0x2467, G_UNICODE_NOT_PRESENT_OFFSET, 4953 },
+  { 0x2468, G_UNICODE_NOT_PRESENT_OFFSET, 4955 },
+  { 0x2469, G_UNICODE_NOT_PRESENT_OFFSET, 5532 },
+  { 0x246a, G_UNICODE_NOT_PRESENT_OFFSET, 5535 },
+  { 0x246b, G_UNICODE_NOT_PRESENT_OFFSET, 5538 },
+  { 0x246c, G_UNICODE_NOT_PRESENT_OFFSET, 5541 },
+  { 0x246d, G_UNICODE_NOT_PRESENT_OFFSET, 5544 },
+  { 0x246e, G_UNICODE_NOT_PRESENT_OFFSET, 5547 },
+  { 0x246f, G_UNICODE_NOT_PRESENT_OFFSET, 5550 },
+  { 0x2470, G_UNICODE_NOT_PRESENT_OFFSET, 5553 },
+  { 0x2471, G_UNICODE_NOT_PRESENT_OFFSET, 5556 },
+  { 0x2472, G_UNICODE_NOT_PRESENT_OFFSET, 5559 },
+  { 0x2473, G_UNICODE_NOT_PRESENT_OFFSET, 5562 },
+  { 0x2474, G_UNICODE_NOT_PRESENT_OFFSET, 5565 },
+  { 0x2475, G_UNICODE_NOT_PRESENT_OFFSET, 5569 },
+  { 0x2476, G_UNICODE_NOT_PRESENT_OFFSET, 5573 },
+  { 0x2477, G_UNICODE_NOT_PRESENT_OFFSET, 5577 },
+  { 0x2478, G_UNICODE_NOT_PRESENT_OFFSET, 5581 },
+  { 0x2479, G_UNICODE_NOT_PRESENT_OFFSET, 5585 },
+  { 0x247a, G_UNICODE_NOT_PRESENT_OFFSET, 5589 },
+  { 0x247b, G_UNICODE_NOT_PRESENT_OFFSET, 5593 },
+  { 0x247c, G_UNICODE_NOT_PRESENT_OFFSET, 5597 },
+  { 0x247d, G_UNICODE_NOT_PRESENT_OFFSET, 5601 },
+  { 0x247e, G_UNICODE_NOT_PRESENT_OFFSET, 5606 },
+  { 0x247f, G_UNICODE_NOT_PRESENT_OFFSET, 5611 },
+  { 0x2480, G_UNICODE_NOT_PRESENT_OFFSET, 5616 },
+  { 0x2481, G_UNICODE_NOT_PRESENT_OFFSET, 5621 },
+  { 0x2482, G_UNICODE_NOT_PRESENT_OFFSET, 5626 },
+  { 0x2483, G_UNICODE_NOT_PRESENT_OFFSET, 5631 },
+  { 0x2484, G_UNICODE_NOT_PRESENT_OFFSET, 5636 },
+  { 0x2485, G_UNICODE_NOT_PRESENT_OFFSET, 5641 },
+  { 0x2486, G_UNICODE_NOT_PRESENT_OFFSET, 5646 },
+  { 0x2487, G_UNICODE_NOT_PRESENT_OFFSET, 5651 },
+  { 0x2488, G_UNICODE_NOT_PRESENT_OFFSET, 5656 },
+  { 0x2489, G_UNICODE_NOT_PRESENT_OFFSET, 5659 },
+  { 0x248a, G_UNICODE_NOT_PRESENT_OFFSET, 5662 },
+  { 0x248b, G_UNICODE_NOT_PRESENT_OFFSET, 5665 },
+  { 0x248c, G_UNICODE_NOT_PRESENT_OFFSET, 5668 },
+  { 0x248d, G_UNICODE_NOT_PRESENT_OFFSET, 5671 },
+  { 0x248e, G_UNICODE_NOT_PRESENT_OFFSET, 5674 },
+  { 0x248f, G_UNICODE_NOT_PRESENT_OFFSET, 5677 },
+  { 0x2490, G_UNICODE_NOT_PRESENT_OFFSET, 5680 },
+  { 0x2491, G_UNICODE_NOT_PRESENT_OFFSET, 5683 },
+  { 0x2492, G_UNICODE_NOT_PRESENT_OFFSET, 5687 },
+  { 0x2493, G_UNICODE_NOT_PRESENT_OFFSET, 5691 },
+  { 0x2494, G_UNICODE_NOT_PRESENT_OFFSET, 5695 },
+  { 0x2495, G_UNICODE_NOT_PRESENT_OFFSET, 5699 },
+  { 0x2496, G_UNICODE_NOT_PRESENT_OFFSET, 5703 },
+  { 0x2497, G_UNICODE_NOT_PRESENT_OFFSET, 5707 },
+  { 0x2498, G_UNICODE_NOT_PRESENT_OFFSET, 5711 },
+  { 0x2499, G_UNICODE_NOT_PRESENT_OFFSET, 5715 },
+  { 0x249a, G_UNICODE_NOT_PRESENT_OFFSET, 5719 },
+  { 0x249b, G_UNICODE_NOT_PRESENT_OFFSET, 5723 },
+  { 0x249c, G_UNICODE_NOT_PRESENT_OFFSET, 5727 },
+  { 0x249d, G_UNICODE_NOT_PRESENT_OFFSET, 5731 },
+  { 0x249e, G_UNICODE_NOT_PRESENT_OFFSET, 5735 },
+  { 0x249f, G_UNICODE_NOT_PRESENT_OFFSET, 5739 },
+  { 0x24a0, G_UNICODE_NOT_PRESENT_OFFSET, 5743 },
+  { 0x24a1, G_UNICODE_NOT_PRESENT_OFFSET, 5747 },
+  { 0x24a2, G_UNICODE_NOT_PRESENT_OFFSET, 5751 },
+  { 0x24a3, G_UNICODE_NOT_PRESENT_OFFSET, 5755 },
+  { 0x24a4, G_UNICODE_NOT_PRESENT_OFFSET, 5759 },
+  { 0x24a5, G_UNICODE_NOT_PRESENT_OFFSET, 5763 },
+  { 0x24a6, G_UNICODE_NOT_PRESENT_OFFSET, 5767 },
+  { 0x24a7, G_UNICODE_NOT_PRESENT_OFFSET, 5771 },
+  { 0x24a8, G_UNICODE_NOT_PRESENT_OFFSET, 5775 },
+  { 0x24a9, G_UNICODE_NOT_PRESENT_OFFSET, 5779 },
+  { 0x24aa, G_UNICODE_NOT_PRESENT_OFFSET, 5783 },
+  { 0x24ab, G_UNICODE_NOT_PRESENT_OFFSET, 5787 },
+  { 0x24ac, G_UNICODE_NOT_PRESENT_OFFSET, 5791 },
+  { 0x24ad, G_UNICODE_NOT_PRESENT_OFFSET, 5795 },
+  { 0x24ae, G_UNICODE_NOT_PRESENT_OFFSET, 5799 },
+  { 0x24af, G_UNICODE_NOT_PRESENT_OFFSET, 5803 },
+  { 0x24b0, G_UNICODE_NOT_PRESENT_OFFSET, 5807 },
+  { 0x24b1, G_UNICODE_NOT_PRESENT_OFFSET, 5811 },
+  { 0x24b2, G_UNICODE_NOT_PRESENT_OFFSET, 5815 },
+  { 0x24b3, G_UNICODE_NOT_PRESENT_OFFSET, 5819 },
+  { 0x24b4, G_UNICODE_NOT_PRESENT_OFFSET, 5823 },
+  { 0x24b5, G_UNICODE_NOT_PRESENT_OFFSET, 5827 },
+  { 0x24b6, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x24b7, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x24b8, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x24b9, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x24ba, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x24bb, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x24bc, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x24bd, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x24be, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x24bf, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x24c0, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x24c1, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x24c2, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x24c3, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x24c4, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x24c5, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x24c6, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x24c7, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x24c8, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x24c9, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x24ca, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x24cb, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x24cc, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x24cd, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x24ce, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x24cf, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x24d0, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x24d1, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x24d2, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x24d3, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x24d4, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x24d5, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x24d6, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x24d7, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x24d8, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x24d9, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x24da, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x24db, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x24dc, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x24dd, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x24de, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x24df, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x24e0, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x24e1, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x24e2, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x24e3, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x24e4, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x24e5, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x24e6, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x24e7, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x24e8, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x24e9, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x24ea, G_UNICODE_NOT_PRESENT_OFFSET, 4941 },
+  { 0x2a0c, G_UNICODE_NOT_PRESENT_OFFSET, 5865 },
+  { 0x2a74, G_UNICODE_NOT_PRESENT_OFFSET, 5878 },
+  { 0x2a75, G_UNICODE_NOT_PRESENT_OFFSET, 5882 },
+  { 0x2a76, G_UNICODE_NOT_PRESENT_OFFSET, 5885 },
+  { 0x2adc, 5889, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2e9f, G_UNICODE_NOT_PRESENT_OFFSET, 5895 },
+  { 0x2ef3, G_UNICODE_NOT_PRESENT_OFFSET, 5899 },
+  { 0x2f00, G_UNICODE_NOT_PRESENT_OFFSET, 5903 },
+  { 0x2f01, G_UNICODE_NOT_PRESENT_OFFSET, 5907 },
+  { 0x2f02, G_UNICODE_NOT_PRESENT_OFFSET, 5911 },
+  { 0x2f03, G_UNICODE_NOT_PRESENT_OFFSET, 5915 },
+  { 0x2f04, G_UNICODE_NOT_PRESENT_OFFSET, 5919 },
+  { 0x2f05, G_UNICODE_NOT_PRESENT_OFFSET, 5923 },
+  { 0x2f06, G_UNICODE_NOT_PRESENT_OFFSET, 5927 },
+  { 0x2f07, G_UNICODE_NOT_PRESENT_OFFSET, 5931 },
+  { 0x2f08, G_UNICODE_NOT_PRESENT_OFFSET, 5935 },
+  { 0x2f09, G_UNICODE_NOT_PRESENT_OFFSET, 5939 },
+  { 0x2f0a, G_UNICODE_NOT_PRESENT_OFFSET, 5943 },
+  { 0x2f0b, G_UNICODE_NOT_PRESENT_OFFSET, 5947 },
+  { 0x2f0c, G_UNICODE_NOT_PRESENT_OFFSET, 5951 },
+  { 0x2f0d, G_UNICODE_NOT_PRESENT_OFFSET, 5955 },
+  { 0x2f0e, G_UNICODE_NOT_PRESENT_OFFSET, 5959 },
+  { 0x2f0f, G_UNICODE_NOT_PRESENT_OFFSET, 5963 },
+  { 0x2f10, G_UNICODE_NOT_PRESENT_OFFSET, 5967 },
+  { 0x2f11, G_UNICODE_NOT_PRESENT_OFFSET, 5971 },
+  { 0x2f12, G_UNICODE_NOT_PRESENT_OFFSET, 5975 },
+  { 0x2f13, G_UNICODE_NOT_PRESENT_OFFSET, 5979 },
+  { 0x2f14, G_UNICODE_NOT_PRESENT_OFFSET, 5983 },
+  { 0x2f15, G_UNICODE_NOT_PRESENT_OFFSET, 5987 },
+  { 0x2f16, G_UNICODE_NOT_PRESENT_OFFSET, 5991 },
+  { 0x2f17, G_UNICODE_NOT_PRESENT_OFFSET, 5995 },
+  { 0x2f18, G_UNICODE_NOT_PRESENT_OFFSET, 5999 },
+  { 0x2f19, G_UNICODE_NOT_PRESENT_OFFSET, 6003 },
+  { 0x2f1a, G_UNICODE_NOT_PRESENT_OFFSET, 6007 },
+  { 0x2f1b, G_UNICODE_NOT_PRESENT_OFFSET, 6011 },
+  { 0x2f1c, G_UNICODE_NOT_PRESENT_OFFSET, 6015 },
+  { 0x2f1d, G_UNICODE_NOT_PRESENT_OFFSET, 6019 },
+  { 0x2f1e, G_UNICODE_NOT_PRESENT_OFFSET, 6023 },
+  { 0x2f1f, G_UNICODE_NOT_PRESENT_OFFSET, 6027 },
+  { 0x2f20, G_UNICODE_NOT_PRESENT_OFFSET, 6031 },
+  { 0x2f21, G_UNICODE_NOT_PRESENT_OFFSET, 6035 },
+  { 0x2f22, G_UNICODE_NOT_PRESENT_OFFSET, 6039 },
+  { 0x2f23, G_UNICODE_NOT_PRESENT_OFFSET, 6043 },
+  { 0x2f24, G_UNICODE_NOT_PRESENT_OFFSET, 6047 },
+  { 0x2f25, G_UNICODE_NOT_PRESENT_OFFSET, 6051 },
+  { 0x2f26, G_UNICODE_NOT_PRESENT_OFFSET, 6055 },
+  { 0x2f27, G_UNICODE_NOT_PRESENT_OFFSET, 6059 },
+  { 0x2f28, G_UNICODE_NOT_PRESENT_OFFSET, 6063 },
+  { 0x2f29, G_UNICODE_NOT_PRESENT_OFFSET, 6067 },
+  { 0x2f2a, G_UNICODE_NOT_PRESENT_OFFSET, 6071 },
+  { 0x2f2b, G_UNICODE_NOT_PRESENT_OFFSET, 6075 },
+  { 0x2f2c, G_UNICODE_NOT_PRESENT_OFFSET, 6079 },
+  { 0x2f2d, G_UNICODE_NOT_PRESENT_OFFSET, 6083 },
+  { 0x2f2e, G_UNICODE_NOT_PRESENT_OFFSET, 6087 },
+  { 0x2f2f, G_UNICODE_NOT_PRESENT_OFFSET, 6091 },
+  { 0x2f30, G_UNICODE_NOT_PRESENT_OFFSET, 6095 },
+  { 0x2f31, G_UNICODE_NOT_PRESENT_OFFSET, 6099 },
+  { 0x2f32, G_UNICODE_NOT_PRESENT_OFFSET, 6103 },
+  { 0x2f33, G_UNICODE_NOT_PRESENT_OFFSET, 6107 },
+  { 0x2f34, G_UNICODE_NOT_PRESENT_OFFSET, 6111 },
+  { 0x2f35, G_UNICODE_NOT_PRESENT_OFFSET, 6115 },
+  { 0x2f36, G_UNICODE_NOT_PRESENT_OFFSET, 6119 },
+  { 0x2f37, G_UNICODE_NOT_PRESENT_OFFSET, 6123 },
+  { 0x2f38, G_UNICODE_NOT_PRESENT_OFFSET, 6127 },
+  { 0x2f39, G_UNICODE_NOT_PRESENT_OFFSET, 6131 },
+  { 0x2f3a, G_UNICODE_NOT_PRESENT_OFFSET, 6135 },
+  { 0x2f3b, G_UNICODE_NOT_PRESENT_OFFSET, 6139 },
+  { 0x2f3c, G_UNICODE_NOT_PRESENT_OFFSET, 6143 },
+  { 0x2f3d, G_UNICODE_NOT_PRESENT_OFFSET, 6147 },
+  { 0x2f3e, G_UNICODE_NOT_PRESENT_OFFSET, 6151 },
+  { 0x2f3f, G_UNICODE_NOT_PRESENT_OFFSET, 6155 },
+  { 0x2f40, G_UNICODE_NOT_PRESENT_OFFSET, 6159 },
+  { 0x2f41, G_UNICODE_NOT_PRESENT_OFFSET, 6163 },
+  { 0x2f42, G_UNICODE_NOT_PRESENT_OFFSET, 6167 },
+  { 0x2f43, G_UNICODE_NOT_PRESENT_OFFSET, 6171 },
+  { 0x2f44, G_UNICODE_NOT_PRESENT_OFFSET, 6175 },
+  { 0x2f45, G_UNICODE_NOT_PRESENT_OFFSET, 6179 },
+  { 0x2f46, G_UNICODE_NOT_PRESENT_OFFSET, 6183 },
+  { 0x2f47, G_UNICODE_NOT_PRESENT_OFFSET, 6187 },
+  { 0x2f48, G_UNICODE_NOT_PRESENT_OFFSET, 6191 },
+  { 0x2f49, G_UNICODE_NOT_PRESENT_OFFSET, 6195 },
+  { 0x2f4a, G_UNICODE_NOT_PRESENT_OFFSET, 6199 },
+  { 0x2f4b, G_UNICODE_NOT_PRESENT_OFFSET, 6203 },
+  { 0x2f4c, G_UNICODE_NOT_PRESENT_OFFSET, 6207 },
+  { 0x2f4d, G_UNICODE_NOT_PRESENT_OFFSET, 6211 },
+  { 0x2f4e, G_UNICODE_NOT_PRESENT_OFFSET, 6215 },
+  { 0x2f4f, G_UNICODE_NOT_PRESENT_OFFSET, 6219 },
+  { 0x2f50, G_UNICODE_NOT_PRESENT_OFFSET, 6223 },
+  { 0x2f51, G_UNICODE_NOT_PRESENT_OFFSET, 6227 },
+  { 0x2f52, G_UNICODE_NOT_PRESENT_OFFSET, 6231 },
+  { 0x2f53, G_UNICODE_NOT_PRESENT_OFFSET, 6235 },
+  { 0x2f54, G_UNICODE_NOT_PRESENT_OFFSET, 6239 },
+  { 0x2f55, G_UNICODE_NOT_PRESENT_OFFSET, 6243 },
+  { 0x2f56, G_UNICODE_NOT_PRESENT_OFFSET, 6247 },
+  { 0x2f57, G_UNICODE_NOT_PRESENT_OFFSET, 6251 },
+  { 0x2f58, G_UNICODE_NOT_PRESENT_OFFSET, 6255 },
+  { 0x2f59, G_UNICODE_NOT_PRESENT_OFFSET, 6259 },
+  { 0x2f5a, G_UNICODE_NOT_PRESENT_OFFSET, 6263 },
+  { 0x2f5b, G_UNICODE_NOT_PRESENT_OFFSET, 6267 },
+  { 0x2f5c, G_UNICODE_NOT_PRESENT_OFFSET, 6271 },
+  { 0x2f5d, G_UNICODE_NOT_PRESENT_OFFSET, 6275 },
+  { 0x2f5e, G_UNICODE_NOT_PRESENT_OFFSET, 6279 },
+  { 0x2f5f, G_UNICODE_NOT_PRESENT_OFFSET, 6283 },
+  { 0x2f60, G_UNICODE_NOT_PRESENT_OFFSET, 6287 },
+  { 0x2f61, G_UNICODE_NOT_PRESENT_OFFSET, 6291 },
+  { 0x2f62, G_UNICODE_NOT_PRESENT_OFFSET, 6295 },
+  { 0x2f63, G_UNICODE_NOT_PRESENT_OFFSET, 6299 },
+  { 0x2f64, G_UNICODE_NOT_PRESENT_OFFSET, 6303 },
+  { 0x2f65, G_UNICODE_NOT_PRESENT_OFFSET, 6307 },
+  { 0x2f66, G_UNICODE_NOT_PRESENT_OFFSET, 6311 },
+  { 0x2f67, G_UNICODE_NOT_PRESENT_OFFSET, 6315 },
+  { 0x2f68, G_UNICODE_NOT_PRESENT_OFFSET, 6319 },
+  { 0x2f69, G_UNICODE_NOT_PRESENT_OFFSET, 6323 },
+  { 0x2f6a, G_UNICODE_NOT_PRESENT_OFFSET, 6327 },
+  { 0x2f6b, G_UNICODE_NOT_PRESENT_OFFSET, 6331 },
+  { 0x2f6c, G_UNICODE_NOT_PRESENT_OFFSET, 6335 },
+  { 0x2f6d, G_UNICODE_NOT_PRESENT_OFFSET, 6339 },
+  { 0x2f6e, G_UNICODE_NOT_PRESENT_OFFSET, 6343 },
+  { 0x2f6f, G_UNICODE_NOT_PRESENT_OFFSET, 6347 },
+  { 0x2f70, G_UNICODE_NOT_PRESENT_OFFSET, 6351 },
+  { 0x2f71, G_UNICODE_NOT_PRESENT_OFFSET, 6355 },
+  { 0x2f72, G_UNICODE_NOT_PRESENT_OFFSET, 6359 },
+  { 0x2f73, G_UNICODE_NOT_PRESENT_OFFSET, 6363 },
+  { 0x2f74, G_UNICODE_NOT_PRESENT_OFFSET, 6367 },
+  { 0x2f75, G_UNICODE_NOT_PRESENT_OFFSET, 6371 },
+  { 0x2f76, G_UNICODE_NOT_PRESENT_OFFSET, 6375 },
+  { 0x2f77, G_UNICODE_NOT_PRESENT_OFFSET, 6379 },
+  { 0x2f78, G_UNICODE_NOT_PRESENT_OFFSET, 6383 },
+  { 0x2f79, G_UNICODE_NOT_PRESENT_OFFSET, 6387 },
+  { 0x2f7a, G_UNICODE_NOT_PRESENT_OFFSET, 6391 },
+  { 0x2f7b, G_UNICODE_NOT_PRESENT_OFFSET, 6395 },
+  { 0x2f7c, G_UNICODE_NOT_PRESENT_OFFSET, 6399 },
+  { 0x2f7d, G_UNICODE_NOT_PRESENT_OFFSET, 6403 },
+  { 0x2f7e, G_UNICODE_NOT_PRESENT_OFFSET, 6407 },
+  { 0x2f7f, G_UNICODE_NOT_PRESENT_OFFSET, 6411 },
+  { 0x2f80, G_UNICODE_NOT_PRESENT_OFFSET, 6415 },
+  { 0x2f81, G_UNICODE_NOT_PRESENT_OFFSET, 6419 },
+  { 0x2f82, G_UNICODE_NOT_PRESENT_OFFSET, 6423 },
+  { 0x2f83, G_UNICODE_NOT_PRESENT_OFFSET, 6427 },
+  { 0x2f84, G_UNICODE_NOT_PRESENT_OFFSET, 6431 },
+  { 0x2f85, G_UNICODE_NOT_PRESENT_OFFSET, 6435 },
+  { 0x2f86, G_UNICODE_NOT_PRESENT_OFFSET, 6439 },
+  { 0x2f87, G_UNICODE_NOT_PRESENT_OFFSET, 6443 },
+  { 0x2f88, G_UNICODE_NOT_PRESENT_OFFSET, 6447 },
+  { 0x2f89, G_UNICODE_NOT_PRESENT_OFFSET, 6451 },
+  { 0x2f8a, G_UNICODE_NOT_PRESENT_OFFSET, 6455 },
+  { 0x2f8b, G_UNICODE_NOT_PRESENT_OFFSET, 6459 },
+  { 0x2f8c, G_UNICODE_NOT_PRESENT_OFFSET, 6463 },
+  { 0x2f8d, G_UNICODE_NOT_PRESENT_OFFSET, 6467 },
+  { 0x2f8e, G_UNICODE_NOT_PRESENT_OFFSET, 6471 },
+  { 0x2f8f, G_UNICODE_NOT_PRESENT_OFFSET, 6475 },
+  { 0x2f90, G_UNICODE_NOT_PRESENT_OFFSET, 6479 },
+  { 0x2f91, G_UNICODE_NOT_PRESENT_OFFSET, 6483 },
+  { 0x2f92, G_UNICODE_NOT_PRESENT_OFFSET, 6487 },
+  { 0x2f93, G_UNICODE_NOT_PRESENT_OFFSET, 6491 },
+  { 0x2f94, G_UNICODE_NOT_PRESENT_OFFSET, 6495 },
+  { 0x2f95, G_UNICODE_NOT_PRESENT_OFFSET, 6499 },
+  { 0x2f96, G_UNICODE_NOT_PRESENT_OFFSET, 6503 },
+  { 0x2f97, G_UNICODE_NOT_PRESENT_OFFSET, 6507 },
+  { 0x2f98, G_UNICODE_NOT_PRESENT_OFFSET, 6511 },
+  { 0x2f99, G_UNICODE_NOT_PRESENT_OFFSET, 6515 },
+  { 0x2f9a, G_UNICODE_NOT_PRESENT_OFFSET, 6519 },
+  { 0x2f9b, G_UNICODE_NOT_PRESENT_OFFSET, 6523 },
+  { 0x2f9c, G_UNICODE_NOT_PRESENT_OFFSET, 6527 },
+  { 0x2f9d, G_UNICODE_NOT_PRESENT_OFFSET, 6531 },
+  { 0x2f9e, G_UNICODE_NOT_PRESENT_OFFSET, 6535 },
+  { 0x2f9f, G_UNICODE_NOT_PRESENT_OFFSET, 6539 },
+  { 0x2fa0, G_UNICODE_NOT_PRESENT_OFFSET, 6543 },
+  { 0x2fa1, G_UNICODE_NOT_PRESENT_OFFSET, 6547 },
+  { 0x2fa2, G_UNICODE_NOT_PRESENT_OFFSET, 6551 },
+  { 0x2fa3, G_UNICODE_NOT_PRESENT_OFFSET, 6555 },
+  { 0x2fa4, G_UNICODE_NOT_PRESENT_OFFSET, 6559 },
+  { 0x2fa5, G_UNICODE_NOT_PRESENT_OFFSET, 6563 },
+  { 0x2fa6, G_UNICODE_NOT_PRESENT_OFFSET, 6567 },
+  { 0x2fa7, G_UNICODE_NOT_PRESENT_OFFSET, 6571 },
+  { 0x2fa8, G_UNICODE_NOT_PRESENT_OFFSET, 6575 },
+  { 0x2fa9, G_UNICODE_NOT_PRESENT_OFFSET, 6579 },
+  { 0x2faa, G_UNICODE_NOT_PRESENT_OFFSET, 6583 },
+  { 0x2fab, G_UNICODE_NOT_PRESENT_OFFSET, 6587 },
+  { 0x2fac, G_UNICODE_NOT_PRESENT_OFFSET, 6591 },
+  { 0x2fad, G_UNICODE_NOT_PRESENT_OFFSET, 6595 },
+  { 0x2fae, G_UNICODE_NOT_PRESENT_OFFSET, 6599 },
+  { 0x2faf, G_UNICODE_NOT_PRESENT_OFFSET, 6603 },
+  { 0x2fb0, G_UNICODE_NOT_PRESENT_OFFSET, 6607 },
+  { 0x2fb1, G_UNICODE_NOT_PRESENT_OFFSET, 6611 },
+  { 0x2fb2, G_UNICODE_NOT_PRESENT_OFFSET, 6615 },
+  { 0x2fb3, G_UNICODE_NOT_PRESENT_OFFSET, 6619 },
+  { 0x2fb4, G_UNICODE_NOT_PRESENT_OFFSET, 6623 },
+  { 0x2fb5, G_UNICODE_NOT_PRESENT_OFFSET, 6627 },
+  { 0x2fb6, G_UNICODE_NOT_PRESENT_OFFSET, 6631 },
+  { 0x2fb7, G_UNICODE_NOT_PRESENT_OFFSET, 6635 },
+  { 0x2fb8, G_UNICODE_NOT_PRESENT_OFFSET, 6639 },
+  { 0x2fb9, G_UNICODE_NOT_PRESENT_OFFSET, 6643 },
+  { 0x2fba, G_UNICODE_NOT_PRESENT_OFFSET, 6647 },
+  { 0x2fbb, G_UNICODE_NOT_PRESENT_OFFSET, 6651 },
+  { 0x2fbc, G_UNICODE_NOT_PRESENT_OFFSET, 6655 },
+  { 0x2fbd, G_UNICODE_NOT_PRESENT_OFFSET, 6659 },
+  { 0x2fbe, G_UNICODE_NOT_PRESENT_OFFSET, 6663 },
+  { 0x2fbf, G_UNICODE_NOT_PRESENT_OFFSET, 6667 },
+  { 0x2fc0, G_UNICODE_NOT_PRESENT_OFFSET, 6671 },
+  { 0x2fc1, G_UNICODE_NOT_PRESENT_OFFSET, 6675 },
+  { 0x2fc2, G_UNICODE_NOT_PRESENT_OFFSET, 6679 },
+  { 0x2fc3, G_UNICODE_NOT_PRESENT_OFFSET, 6683 },
+  { 0x2fc4, G_UNICODE_NOT_PRESENT_OFFSET, 6687 },
+  { 0x2fc5, G_UNICODE_NOT_PRESENT_OFFSET, 6691 },
+  { 0x2fc6, G_UNICODE_NOT_PRESENT_OFFSET, 6695 },
+  { 0x2fc7, G_UNICODE_NOT_PRESENT_OFFSET, 6699 },
+  { 0x2fc8, G_UNICODE_NOT_PRESENT_OFFSET, 6703 },
+  { 0x2fc9, G_UNICODE_NOT_PRESENT_OFFSET, 6707 },
+  { 0x2fca, G_UNICODE_NOT_PRESENT_OFFSET, 6711 },
+  { 0x2fcb, G_UNICODE_NOT_PRESENT_OFFSET, 6715 },
+  { 0x2fcc, G_UNICODE_NOT_PRESENT_OFFSET, 6719 },
+  { 0x2fcd, G_UNICODE_NOT_PRESENT_OFFSET, 6723 },
+  { 0x2fce, G_UNICODE_NOT_PRESENT_OFFSET, 6727 },
+  { 0x2fcf, G_UNICODE_NOT_PRESENT_OFFSET, 6731 },
+  { 0x2fd0, G_UNICODE_NOT_PRESENT_OFFSET, 6735 },
+  { 0x2fd1, G_UNICODE_NOT_PRESENT_OFFSET, 6739 },
+  { 0x2fd2, G_UNICODE_NOT_PRESENT_OFFSET, 6743 },
+  { 0x2fd3, G_UNICODE_NOT_PRESENT_OFFSET, 6747 },
+  { 0x2fd4, G_UNICODE_NOT_PRESENT_OFFSET, 6751 },
+  { 0x2fd5, G_UNICODE_NOT_PRESENT_OFFSET, 6755 },
+  { 0x3000, G_UNICODE_NOT_PRESENT_OFFSET, 0 },
+  { 0x3036, G_UNICODE_NOT_PRESENT_OFFSET, 6759 },
+  { 0x3038, G_UNICODE_NOT_PRESENT_OFFSET, 5995 },
+  { 0x3039, G_UNICODE_NOT_PRESENT_OFFSET, 6763 },
+  { 0x303a, G_UNICODE_NOT_PRESENT_OFFSET, 6767 },
+  { 0x304c, 6771, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x304e, 6778, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3050, 6785, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3052, 6792, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3054, 6799, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3056, 6806, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3058, 6813, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x305a, 6820, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x305c, 6827, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x305e, 6834, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3060, 6841, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3062, 6848, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3065, 6855, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3067, 6862, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3069, 6869, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3070, 6876, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3071, 6883, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3073, 6890, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3074, 6897, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3076, 6904, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3077, 6911, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3079, 6918, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x307a, 6925, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x307c, 6932, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x307d, 6939, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x3094, 6946, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x309b, G_UNICODE_NOT_PRESENT_OFFSET, 6953 },
+  { 0x309c, G_UNICODE_NOT_PRESENT_OFFSET, 6958 },
+  { 0x309e, 6963, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x309f, G_UNICODE_NOT_PRESENT_OFFSET, 6970 },
+  { 0x30ac, 6977, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30ae, 6984, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30b0, 6991, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30b2, 6998, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30b4, 7005, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30b6, 7012, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30b8, 7019, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30ba, 7026, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30bc, 7033, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30be, 7040, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30c0, 7047, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30c2, 7054, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30c5, 7061, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30c7, 7068, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30c9, 7075, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30d0, 7082, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30d1, 7089, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30d3, 7096, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30d4, 7103, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30d6, 7110, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30d7, 7117, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30d9, 7124, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30da, 7131, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30dc, 7138, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30dd, 7145, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30f4, 7152, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30f7, 7159, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30f8, 7166, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30f9, 7173, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30fa, 7180, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30fe, 7187, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x30ff, G_UNICODE_NOT_PRESENT_OFFSET, 7194 },
+  { 0x3131, G_UNICODE_NOT_PRESENT_OFFSET, 7201 },
+  { 0x3132, G_UNICODE_NOT_PRESENT_OFFSET, 7205 },
+  { 0x3133, G_UNICODE_NOT_PRESENT_OFFSET, 7209 },
+  { 0x3134, G_UNICODE_NOT_PRESENT_OFFSET, 7213 },
+  { 0x3135, G_UNICODE_NOT_PRESENT_OFFSET, 7217 },
+  { 0x3136, G_UNICODE_NOT_PRESENT_OFFSET, 7221 },
+  { 0x3137, G_UNICODE_NOT_PRESENT_OFFSET, 7225 },
+  { 0x3138, G_UNICODE_NOT_PRESENT_OFFSET, 7229 },
+  { 0x3139, G_UNICODE_NOT_PRESENT_OFFSET, 7233 },
+  { 0x313a, G_UNICODE_NOT_PRESENT_OFFSET, 7237 },
+  { 0x313b, G_UNICODE_NOT_PRESENT_OFFSET, 7241 },
+  { 0x313c, G_UNICODE_NOT_PRESENT_OFFSET, 7245 },
+  { 0x313d, G_UNICODE_NOT_PRESENT_OFFSET, 7249 },
+  { 0x313e, G_UNICODE_NOT_PRESENT_OFFSET, 7253 },
+  { 0x313f, G_UNICODE_NOT_PRESENT_OFFSET, 7257 },
+  { 0x3140, G_UNICODE_NOT_PRESENT_OFFSET, 7261 },
+  { 0x3141, G_UNICODE_NOT_PRESENT_OFFSET, 7265 },
+  { 0x3142, G_UNICODE_NOT_PRESENT_OFFSET, 7269 },
+  { 0x3143, G_UNICODE_NOT_PRESENT_OFFSET, 7273 },
+  { 0x3144, G_UNICODE_NOT_PRESENT_OFFSET, 7277 },
+  { 0x3145, G_UNICODE_NOT_PRESENT_OFFSET, 7281 },
+  { 0x3146, G_UNICODE_NOT_PRESENT_OFFSET, 7285 },
+  { 0x3147, G_UNICODE_NOT_PRESENT_OFFSET, 7289 },
+  { 0x3148, G_UNICODE_NOT_PRESENT_OFFSET, 7293 },
+  { 0x3149, G_UNICODE_NOT_PRESENT_OFFSET, 7297 },
+  { 0x314a, G_UNICODE_NOT_PRESENT_OFFSET, 7301 },
+  { 0x314b, G_UNICODE_NOT_PRESENT_OFFSET, 7305 },
+  { 0x314c, G_UNICODE_NOT_PRESENT_OFFSET, 7309 },
+  { 0x314d, G_UNICODE_NOT_PRESENT_OFFSET, 7313 },
+  { 0x314e, G_UNICODE_NOT_PRESENT_OFFSET, 7317 },
+  { 0x314f, G_UNICODE_NOT_PRESENT_OFFSET, 7321 },
+  { 0x3150, G_UNICODE_NOT_PRESENT_OFFSET, 7325 },
+  { 0x3151, G_UNICODE_NOT_PRESENT_OFFSET, 7329 },
+  { 0x3152, G_UNICODE_NOT_PRESENT_OFFSET, 7333 },
+  { 0x3153, G_UNICODE_NOT_PRESENT_OFFSET, 7337 },
+  { 0x3154, G_UNICODE_NOT_PRESENT_OFFSET, 7341 },
+  { 0x3155, G_UNICODE_NOT_PRESENT_OFFSET, 7345 },
+  { 0x3156, G_UNICODE_NOT_PRESENT_OFFSET, 7349 },
+  { 0x3157, G_UNICODE_NOT_PRESENT_OFFSET, 7353 },
+  { 0x3158, G_UNICODE_NOT_PRESENT_OFFSET, 7357 },
+  { 0x3159, G_UNICODE_NOT_PRESENT_OFFSET, 7361 },
+  { 0x315a, G_UNICODE_NOT_PRESENT_OFFSET, 7365 },
+  { 0x315b, G_UNICODE_NOT_PRESENT_OFFSET, 7369 },
+  { 0x315c, G_UNICODE_NOT_PRESENT_OFFSET, 7373 },
+  { 0x315d, G_UNICODE_NOT_PRESENT_OFFSET, 7377 },
+  { 0x315e, G_UNICODE_NOT_PRESENT_OFFSET, 7381 },
+  { 0x315f, G_UNICODE_NOT_PRESENT_OFFSET, 7385 },
+  { 0x3160, G_UNICODE_NOT_PRESENT_OFFSET, 7389 },
+  { 0x3161, G_UNICODE_NOT_PRESENT_OFFSET, 7393 },
+  { 0x3162, G_UNICODE_NOT_PRESENT_OFFSET, 7397 },
+  { 0x3163, G_UNICODE_NOT_PRESENT_OFFSET, 7401 },
+  { 0x3164, G_UNICODE_NOT_PRESENT_OFFSET, 7405 },
+  { 0x3165, G_UNICODE_NOT_PRESENT_OFFSET, 7409 },
+  { 0x3166, G_UNICODE_NOT_PRESENT_OFFSET, 7413 },
+  { 0x3167, G_UNICODE_NOT_PRESENT_OFFSET, 7417 },
+  { 0x3168, G_UNICODE_NOT_PRESENT_OFFSET, 7421 },
+  { 0x3169, G_UNICODE_NOT_PRESENT_OFFSET, 7425 },
+  { 0x316a, G_UNICODE_NOT_PRESENT_OFFSET, 7429 },
+  { 0x316b, G_UNICODE_NOT_PRESENT_OFFSET, 7433 },
+  { 0x316c, G_UNICODE_NOT_PRESENT_OFFSET, 7437 },
+  { 0x316d, G_UNICODE_NOT_PRESENT_OFFSET, 7441 },
+  { 0x316e, G_UNICODE_NOT_PRESENT_OFFSET, 7445 },
+  { 0x316f, G_UNICODE_NOT_PRESENT_OFFSET, 7449 },
+  { 0x3170, G_UNICODE_NOT_PRESENT_OFFSET, 7453 },
+  { 0x3171, G_UNICODE_NOT_PRESENT_OFFSET, 7457 },
+  { 0x3172, G_UNICODE_NOT_PRESENT_OFFSET, 7461 },
+  { 0x3173, G_UNICODE_NOT_PRESENT_OFFSET, 7465 },
+  { 0x3174, G_UNICODE_NOT_PRESENT_OFFSET, 7469 },
+  { 0x3175, G_UNICODE_NOT_PRESENT_OFFSET, 7473 },
+  { 0x3176, G_UNICODE_NOT_PRESENT_OFFSET, 7477 },
+  { 0x3177, G_UNICODE_NOT_PRESENT_OFFSET, 7481 },
+  { 0x3178, G_UNICODE_NOT_PRESENT_OFFSET, 7485 },
+  { 0x3179, G_UNICODE_NOT_PRESENT_OFFSET, 7489 },
+  { 0x317a, G_UNICODE_NOT_PRESENT_OFFSET, 7493 },
+  { 0x317b, G_UNICODE_NOT_PRESENT_OFFSET, 7497 },
+  { 0x317c, G_UNICODE_NOT_PRESENT_OFFSET, 7501 },
+  { 0x317d, G_UNICODE_NOT_PRESENT_OFFSET, 7505 },
+  { 0x317e, G_UNICODE_NOT_PRESENT_OFFSET, 7509 },
+  { 0x317f, G_UNICODE_NOT_PRESENT_OFFSET, 7513 },
+  { 0x3180, G_UNICODE_NOT_PRESENT_OFFSET, 7517 },
+  { 0x3181, G_UNICODE_NOT_PRESENT_OFFSET, 7521 },
+  { 0x3182, G_UNICODE_NOT_PRESENT_OFFSET, 7525 },
+  { 0x3183, G_UNICODE_NOT_PRESENT_OFFSET, 7529 },
+  { 0x3184, G_UNICODE_NOT_PRESENT_OFFSET, 7533 },
+  { 0x3185, G_UNICODE_NOT_PRESENT_OFFSET, 7537 },
+  { 0x3186, G_UNICODE_NOT_PRESENT_OFFSET, 7541 },
+  { 0x3187, G_UNICODE_NOT_PRESENT_OFFSET, 7545 },
+  { 0x3188, G_UNICODE_NOT_PRESENT_OFFSET, 7549 },
+  { 0x3189, G_UNICODE_NOT_PRESENT_OFFSET, 7553 },
+  { 0x318a, G_UNICODE_NOT_PRESENT_OFFSET, 7557 },
+  { 0x318b, G_UNICODE_NOT_PRESENT_OFFSET, 7561 },
+  { 0x318c, G_UNICODE_NOT_PRESENT_OFFSET, 7565 },
+  { 0x318d, G_UNICODE_NOT_PRESENT_OFFSET, 7569 },
+  { 0x318e, G_UNICODE_NOT_PRESENT_OFFSET, 7573 },
+  { 0x3192, G_UNICODE_NOT_PRESENT_OFFSET, 5903 },
+  { 0x3193, G_UNICODE_NOT_PRESENT_OFFSET, 5927 },
+  { 0x3194, G_UNICODE_NOT_PRESENT_OFFSET, 7577 },
+  { 0x3195, G_UNICODE_NOT_PRESENT_OFFSET, 7581 },
+  { 0x3196, G_UNICODE_NOT_PRESENT_OFFSET, 7585 },
+  { 0x3197, G_UNICODE_NOT_PRESENT_OFFSET, 7589 },
+  { 0x3198, G_UNICODE_NOT_PRESENT_OFFSET, 7593 },
+  { 0x3199, G_UNICODE_NOT_PRESENT_OFFSET, 7597 },
+  { 0x319a, G_UNICODE_NOT_PRESENT_OFFSET, 5919 },
+  { 0x319b, G_UNICODE_NOT_PRESENT_OFFSET, 7601 },
+  { 0x319c, G_UNICODE_NOT_PRESENT_OFFSET, 7605 },
+  { 0x319d, G_UNICODE_NOT_PRESENT_OFFSET, 7609 },
+  { 0x319e, G_UNICODE_NOT_PRESENT_OFFSET, 7613 },
+  { 0x319f, G_UNICODE_NOT_PRESENT_OFFSET, 5935 },
+  { 0x3200, G_UNICODE_NOT_PRESENT_OFFSET, 7617 },
+  { 0x3201, G_UNICODE_NOT_PRESENT_OFFSET, 7623 },
+  { 0x3202, G_UNICODE_NOT_PRESENT_OFFSET, 7629 },
+  { 0x3203, G_UNICODE_NOT_PRESENT_OFFSET, 7635 },
+  { 0x3204, G_UNICODE_NOT_PRESENT_OFFSET, 7641 },
+  { 0x3205, G_UNICODE_NOT_PRESENT_OFFSET, 7647 },
+  { 0x3206, G_UNICODE_NOT_PRESENT_OFFSET, 7653 },
+  { 0x3207, G_UNICODE_NOT_PRESENT_OFFSET, 7659 },
+  { 0x3208, G_UNICODE_NOT_PRESENT_OFFSET, 7665 },
+  { 0x3209, G_UNICODE_NOT_PRESENT_OFFSET, 7671 },
+  { 0x320a, G_UNICODE_NOT_PRESENT_OFFSET, 7677 },
+  { 0x320b, G_UNICODE_NOT_PRESENT_OFFSET, 7683 },
+  { 0x320c, G_UNICODE_NOT_PRESENT_OFFSET, 7689 },
+  { 0x320d, G_UNICODE_NOT_PRESENT_OFFSET, 7695 },
+  { 0x320e, G_UNICODE_NOT_PRESENT_OFFSET, 7701 },
+  { 0x320f, G_UNICODE_NOT_PRESENT_OFFSET, 7710 },
+  { 0x3210, G_UNICODE_NOT_PRESENT_OFFSET, 7719 },
+  { 0x3211, G_UNICODE_NOT_PRESENT_OFFSET, 7728 },
+  { 0x3212, G_UNICODE_NOT_PRESENT_OFFSET, 7737 },
+  { 0x3213, G_UNICODE_NOT_PRESENT_OFFSET, 7746 },
+  { 0x3214, G_UNICODE_NOT_PRESENT_OFFSET, 7755 },
+  { 0x3215, G_UNICODE_NOT_PRESENT_OFFSET, 7764 },
+  { 0x3216, G_UNICODE_NOT_PRESENT_OFFSET, 7773 },
+  { 0x3217, G_UNICODE_NOT_PRESENT_OFFSET, 7782 },
+  { 0x3218, G_UNICODE_NOT_PRESENT_OFFSET, 7791 },
+  { 0x3219, G_UNICODE_NOT_PRESENT_OFFSET, 7800 },
+  { 0x321a, G_UNICODE_NOT_PRESENT_OFFSET, 7809 },
+  { 0x321b, G_UNICODE_NOT_PRESENT_OFFSET, 7818 },
+  { 0x321c, G_UNICODE_NOT_PRESENT_OFFSET, 7827 },
+  { 0x3220, G_UNICODE_NOT_PRESENT_OFFSET, 7836 },
+  { 0x3221, G_UNICODE_NOT_PRESENT_OFFSET, 7842 },
+  { 0x3222, G_UNICODE_NOT_PRESENT_OFFSET, 7848 },
+  { 0x3223, G_UNICODE_NOT_PRESENT_OFFSET, 7854 },
+  { 0x3224, G_UNICODE_NOT_PRESENT_OFFSET, 7860 },
+  { 0x3225, G_UNICODE_NOT_PRESENT_OFFSET, 7866 },
+  { 0x3226, G_UNICODE_NOT_PRESENT_OFFSET, 7872 },
+  { 0x3227, G_UNICODE_NOT_PRESENT_OFFSET, 7878 },
+  { 0x3228, G_UNICODE_NOT_PRESENT_OFFSET, 7884 },
+  { 0x3229, G_UNICODE_NOT_PRESENT_OFFSET, 7890 },
+  { 0x322a, G_UNICODE_NOT_PRESENT_OFFSET, 7896 },
+  { 0x322b, G_UNICODE_NOT_PRESENT_OFFSET, 7902 },
+  { 0x322c, G_UNICODE_NOT_PRESENT_OFFSET, 7908 },
+  { 0x322d, G_UNICODE_NOT_PRESENT_OFFSET, 7914 },
+  { 0x322e, G_UNICODE_NOT_PRESENT_OFFSET, 7920 },
+  { 0x322f, G_UNICODE_NOT_PRESENT_OFFSET, 7926 },
+  { 0x3230, G_UNICODE_NOT_PRESENT_OFFSET, 7932 },
+  { 0x3231, G_UNICODE_NOT_PRESENT_OFFSET, 7938 },
+  { 0x3232, G_UNICODE_NOT_PRESENT_OFFSET, 7944 },
+  { 0x3233, G_UNICODE_NOT_PRESENT_OFFSET, 7950 },
+  { 0x3234, G_UNICODE_NOT_PRESENT_OFFSET, 7956 },
+  { 0x3235, G_UNICODE_NOT_PRESENT_OFFSET, 7962 },
+  { 0x3236, G_UNICODE_NOT_PRESENT_OFFSET, 7968 },
+  { 0x3237, G_UNICODE_NOT_PRESENT_OFFSET, 7974 },
+  { 0x3238, G_UNICODE_NOT_PRESENT_OFFSET, 7980 },
+  { 0x3239, G_UNICODE_NOT_PRESENT_OFFSET, 7986 },
+  { 0x323a, G_UNICODE_NOT_PRESENT_OFFSET, 7992 },
+  { 0x323b, G_UNICODE_NOT_PRESENT_OFFSET, 7998 },
+  { 0x323c, G_UNICODE_NOT_PRESENT_OFFSET, 8004 },
+  { 0x323d, G_UNICODE_NOT_PRESENT_OFFSET, 8010 },
+  { 0x323e, G_UNICODE_NOT_PRESENT_OFFSET, 8016 },
+  { 0x323f, G_UNICODE_NOT_PRESENT_OFFSET, 8022 },
+  { 0x3240, G_UNICODE_NOT_PRESENT_OFFSET, 8028 },
+  { 0x3241, G_UNICODE_NOT_PRESENT_OFFSET, 8034 },
+  { 0x3242, G_UNICODE_NOT_PRESENT_OFFSET, 8040 },
+  { 0x3243, G_UNICODE_NOT_PRESENT_OFFSET, 8046 },
+  { 0x3251, G_UNICODE_NOT_PRESENT_OFFSET, 8052 },
+  { 0x3252, G_UNICODE_NOT_PRESENT_OFFSET, 8055 },
+  { 0x3253, G_UNICODE_NOT_PRESENT_OFFSET, 8058 },
+  { 0x3254, G_UNICODE_NOT_PRESENT_OFFSET, 8061 },
+  { 0x3255, G_UNICODE_NOT_PRESENT_OFFSET, 8064 },
+  { 0x3256, G_UNICODE_NOT_PRESENT_OFFSET, 8067 },
+  { 0x3257, G_UNICODE_NOT_PRESENT_OFFSET, 8070 },
+  { 0x3258, G_UNICODE_NOT_PRESENT_OFFSET, 8073 },
+  { 0x3259, G_UNICODE_NOT_PRESENT_OFFSET, 8076 },
+  { 0x325a, G_UNICODE_NOT_PRESENT_OFFSET, 8079 },
+  { 0x325b, G_UNICODE_NOT_PRESENT_OFFSET, 8082 },
+  { 0x325c, G_UNICODE_NOT_PRESENT_OFFSET, 8085 },
+  { 0x325d, G_UNICODE_NOT_PRESENT_OFFSET, 8088 },
+  { 0x325e, G_UNICODE_NOT_PRESENT_OFFSET, 8091 },
+  { 0x325f, G_UNICODE_NOT_PRESENT_OFFSET, 8094 },
+  { 0x3260, G_UNICODE_NOT_PRESENT_OFFSET, 7201 },
+  { 0x3261, G_UNICODE_NOT_PRESENT_OFFSET, 7213 },
+  { 0x3262, G_UNICODE_NOT_PRESENT_OFFSET, 7225 },
+  { 0x3263, G_UNICODE_NOT_PRESENT_OFFSET, 7233 },
+  { 0x3264, G_UNICODE_NOT_PRESENT_OFFSET, 7265 },
+  { 0x3265, G_UNICODE_NOT_PRESENT_OFFSET, 7269 },
+  { 0x3266, G_UNICODE_NOT_PRESENT_OFFSET, 7281 },
+  { 0x3267, G_UNICODE_NOT_PRESENT_OFFSET, 7289 },
+  { 0x3268, G_UNICODE_NOT_PRESENT_OFFSET, 7293 },
+  { 0x3269, G_UNICODE_NOT_PRESENT_OFFSET, 7301 },
+  { 0x326a, G_UNICODE_NOT_PRESENT_OFFSET, 7305 },
+  { 0x326b, G_UNICODE_NOT_PRESENT_OFFSET, 7309 },
+  { 0x326c, G_UNICODE_NOT_PRESENT_OFFSET, 7313 },
+  { 0x326d, G_UNICODE_NOT_PRESENT_OFFSET, 7317 },
+  { 0x326e, G_UNICODE_NOT_PRESENT_OFFSET, 8097 },
+  { 0x326f, G_UNICODE_NOT_PRESENT_OFFSET, 8104 },
+  { 0x3270, G_UNICODE_NOT_PRESENT_OFFSET, 8111 },
+  { 0x3271, G_UNICODE_NOT_PRESENT_OFFSET, 8118 },
+  { 0x3272, G_UNICODE_NOT_PRESENT_OFFSET, 8125 },
+  { 0x3273, G_UNICODE_NOT_PRESENT_OFFSET, 8132 },
+  { 0x3274, G_UNICODE_NOT_PRESENT_OFFSET, 8139 },
+  { 0x3275, G_UNICODE_NOT_PRESENT_OFFSET, 8146 },
+  { 0x3276, G_UNICODE_NOT_PRESENT_OFFSET, 8153 },
+  { 0x3277, G_UNICODE_NOT_PRESENT_OFFSET, 8160 },
+  { 0x3278, G_UNICODE_NOT_PRESENT_OFFSET, 8167 },
+  { 0x3279, G_UNICODE_NOT_PRESENT_OFFSET, 8174 },
+  { 0x327a, G_UNICODE_NOT_PRESENT_OFFSET, 8181 },
+  { 0x327b, G_UNICODE_NOT_PRESENT_OFFSET, 8188 },
+  { 0x3280, G_UNICODE_NOT_PRESENT_OFFSET, 5903 },
+  { 0x3281, G_UNICODE_NOT_PRESENT_OFFSET, 5927 },
+  { 0x3282, G_UNICODE_NOT_PRESENT_OFFSET, 7577 },
+  { 0x3283, G_UNICODE_NOT_PRESENT_OFFSET, 7581 },
+  { 0x3284, G_UNICODE_NOT_PRESENT_OFFSET, 8195 },
+  { 0x3285, G_UNICODE_NOT_PRESENT_OFFSET, 8199 },
+  { 0x3286, G_UNICODE_NOT_PRESENT_OFFSET, 8203 },
+  { 0x3287, G_UNICODE_NOT_PRESENT_OFFSET, 5947 },
+  { 0x3288, G_UNICODE_NOT_PRESENT_OFFSET, 8207 },
+  { 0x3289, G_UNICODE_NOT_PRESENT_OFFSET, 5995 },
+  { 0x328a, G_UNICODE_NOT_PRESENT_OFFSET, 6195 },
+  { 0x328b, G_UNICODE_NOT_PRESENT_OFFSET, 6243 },
+  { 0x328c, G_UNICODE_NOT_PRESENT_OFFSET, 6239 },
+  { 0x328d, G_UNICODE_NOT_PRESENT_OFFSET, 6199 },
+  { 0x328e, G_UNICODE_NOT_PRESENT_OFFSET, 6567 },
+  { 0x328f, G_UNICODE_NOT_PRESENT_OFFSET, 6027 },
+  { 0x3290, G_UNICODE_NOT_PRESENT_OFFSET, 6187 },
+  { 0x3291, G_UNICODE_NOT_PRESENT_OFFSET, 8211 },
+  { 0x3292, G_UNICODE_NOT_PRESENT_OFFSET, 8215 },
+  { 0x3293, G_UNICODE_NOT_PRESENT_OFFSET, 8219 },
+  { 0x3294, G_UNICODE_NOT_PRESENT_OFFSET, 8223 },
+  { 0x3295, G_UNICODE_NOT_PRESENT_OFFSET, 8227 },
+  { 0x3296, G_UNICODE_NOT_PRESENT_OFFSET, 8231 },
+  { 0x3297, G_UNICODE_NOT_PRESENT_OFFSET, 8235 },
+  { 0x3298, G_UNICODE_NOT_PRESENT_OFFSET, 8239 },
+  { 0x3299, G_UNICODE_NOT_PRESENT_OFFSET, 8243 },
+  { 0x329a, G_UNICODE_NOT_PRESENT_OFFSET, 8247 },
+  { 0x329b, G_UNICODE_NOT_PRESENT_OFFSET, 6051 },
+  { 0x329c, G_UNICODE_NOT_PRESENT_OFFSET, 8251 },
+  { 0x329d, G_UNICODE_NOT_PRESENT_OFFSET, 8255 },
+  { 0x329e, G_UNICODE_NOT_PRESENT_OFFSET, 8259 },
+  { 0x329f, G_UNICODE_NOT_PRESENT_OFFSET, 8263 },
+  { 0x32a0, G_UNICODE_NOT_PRESENT_OFFSET, 8267 },
+  { 0x32a1, G_UNICODE_NOT_PRESENT_OFFSET, 8271 },
+  { 0x32a2, G_UNICODE_NOT_PRESENT_OFFSET, 8275 },
+  { 0x32a3, G_UNICODE_NOT_PRESENT_OFFSET, 8279 },
+  { 0x32a4, G_UNICODE_NOT_PRESENT_OFFSET, 7585 },
+  { 0x32a5, G_UNICODE_NOT_PRESENT_OFFSET, 7589 },
+  { 0x32a6, G_UNICODE_NOT_PRESENT_OFFSET, 7593 },
+  { 0x32a7, G_UNICODE_NOT_PRESENT_OFFSET, 8283 },
+  { 0x32a8, G_UNICODE_NOT_PRESENT_OFFSET, 8287 },
+  { 0x32a9, G_UNICODE_NOT_PRESENT_OFFSET, 8291 },
+  { 0x32aa, G_UNICODE_NOT_PRESENT_OFFSET, 8295 },
+  { 0x32ab, G_UNICODE_NOT_PRESENT_OFFSET, 8299 },
+  { 0x32ac, G_UNICODE_NOT_PRESENT_OFFSET, 8303 },
+  { 0x32ad, G_UNICODE_NOT_PRESENT_OFFSET, 8307 },
+  { 0x32ae, G_UNICODE_NOT_PRESENT_OFFSET, 8311 },
+  { 0x32af, G_UNICODE_NOT_PRESENT_OFFSET, 8315 },
+  { 0x32b0, G_UNICODE_NOT_PRESENT_OFFSET, 8319 },
+  { 0x32b1, G_UNICODE_NOT_PRESENT_OFFSET, 8323 },
+  { 0x32b2, G_UNICODE_NOT_PRESENT_OFFSET, 8326 },
+  { 0x32b3, G_UNICODE_NOT_PRESENT_OFFSET, 8329 },
+  { 0x32b4, G_UNICODE_NOT_PRESENT_OFFSET, 8332 },
+  { 0x32b5, G_UNICODE_NOT_PRESENT_OFFSET, 8335 },
+  { 0x32b6, G_UNICODE_NOT_PRESENT_OFFSET, 8338 },
+  { 0x32b7, G_UNICODE_NOT_PRESENT_OFFSET, 8341 },
+  { 0x32b8, G_UNICODE_NOT_PRESENT_OFFSET, 8344 },
+  { 0x32b9, G_UNICODE_NOT_PRESENT_OFFSET, 8347 },
+  { 0x32ba, G_UNICODE_NOT_PRESENT_OFFSET, 8350 },
+  { 0x32bb, G_UNICODE_NOT_PRESENT_OFFSET, 8353 },
+  { 0x32bc, G_UNICODE_NOT_PRESENT_OFFSET, 8356 },
+  { 0x32bd, G_UNICODE_NOT_PRESENT_OFFSET, 8359 },
+  { 0x32be, G_UNICODE_NOT_PRESENT_OFFSET, 8362 },
+  { 0x32bf, G_UNICODE_NOT_PRESENT_OFFSET, 8365 },
+  { 0x32c0, G_UNICODE_NOT_PRESENT_OFFSET, 8368 },
+  { 0x32c1, G_UNICODE_NOT_PRESENT_OFFSET, 8373 },
+  { 0x32c2, G_UNICODE_NOT_PRESENT_OFFSET, 8378 },
+  { 0x32c3, G_UNICODE_NOT_PRESENT_OFFSET, 8383 },
+  { 0x32c4, G_UNICODE_NOT_PRESENT_OFFSET, 8388 },
+  { 0x32c5, G_UNICODE_NOT_PRESENT_OFFSET, 8393 },
+  { 0x32c6, G_UNICODE_NOT_PRESENT_OFFSET, 8398 },
+  { 0x32c7, G_UNICODE_NOT_PRESENT_OFFSET, 8403 },
+  { 0x32c8, G_UNICODE_NOT_PRESENT_OFFSET, 8408 },
+  { 0x32c9, G_UNICODE_NOT_PRESENT_OFFSET, 8413 },
+  { 0x32ca, G_UNICODE_NOT_PRESENT_OFFSET, 8419 },
+  { 0x32cb, G_UNICODE_NOT_PRESENT_OFFSET, 8425 },
+  { 0x32d0, G_UNICODE_NOT_PRESENT_OFFSET, 8431 },
+  { 0x32d1, G_UNICODE_NOT_PRESENT_OFFSET, 8435 },
+  { 0x32d2, G_UNICODE_NOT_PRESENT_OFFSET, 8439 },
+  { 0x32d3, G_UNICODE_NOT_PRESENT_OFFSET, 8443 },
+  { 0x32d4, G_UNICODE_NOT_PRESENT_OFFSET, 8447 },
+  { 0x32d5, G_UNICODE_NOT_PRESENT_OFFSET, 8451 },
+  { 0x32d6, G_UNICODE_NOT_PRESENT_OFFSET, 8455 },
+  { 0x32d7, G_UNICODE_NOT_PRESENT_OFFSET, 8459 },
+  { 0x32d8, G_UNICODE_NOT_PRESENT_OFFSET, 8463 },
+  { 0x32d9, G_UNICODE_NOT_PRESENT_OFFSET, 8467 },
+  { 0x32da, G_UNICODE_NOT_PRESENT_OFFSET, 8471 },
+  { 0x32db, G_UNICODE_NOT_PRESENT_OFFSET, 8475 },
+  { 0x32dc, G_UNICODE_NOT_PRESENT_OFFSET, 8479 },
+  { 0x32dd, G_UNICODE_NOT_PRESENT_OFFSET, 8483 },
+  { 0x32de, G_UNICODE_NOT_PRESENT_OFFSET, 8487 },
+  { 0x32df, G_UNICODE_NOT_PRESENT_OFFSET, 8491 },
+  { 0x32e0, G_UNICODE_NOT_PRESENT_OFFSET, 8495 },
+  { 0x32e1, G_UNICODE_NOT_PRESENT_OFFSET, 8499 },
+  { 0x32e2, G_UNICODE_NOT_PRESENT_OFFSET, 8503 },
+  { 0x32e3, G_UNICODE_NOT_PRESENT_OFFSET, 8507 },
+  { 0x32e4, G_UNICODE_NOT_PRESENT_OFFSET, 8511 },
+  { 0x32e5, G_UNICODE_NOT_PRESENT_OFFSET, 8515 },
+  { 0x32e6, G_UNICODE_NOT_PRESENT_OFFSET, 8519 },
+  { 0x32e7, G_UNICODE_NOT_PRESENT_OFFSET, 8523 },
+  { 0x32e8, G_UNICODE_NOT_PRESENT_OFFSET, 8527 },
+  { 0x32e9, G_UNICODE_NOT_PRESENT_OFFSET, 8531 },
+  { 0x32ea, G_UNICODE_NOT_PRESENT_OFFSET, 8535 },
+  { 0x32eb, G_UNICODE_NOT_PRESENT_OFFSET, 8539 },
+  { 0x32ec, G_UNICODE_NOT_PRESENT_OFFSET, 8543 },
+  { 0x32ed, G_UNICODE_NOT_PRESENT_OFFSET, 8547 },
+  { 0x32ee, G_UNICODE_NOT_PRESENT_OFFSET, 8551 },
+  { 0x32ef, G_UNICODE_NOT_PRESENT_OFFSET, 8555 },
+  { 0x32f0, G_UNICODE_NOT_PRESENT_OFFSET, 8559 },
+  { 0x32f1, G_UNICODE_NOT_PRESENT_OFFSET, 8563 },
+  { 0x32f2, G_UNICODE_NOT_PRESENT_OFFSET, 8567 },
+  { 0x32f3, G_UNICODE_NOT_PRESENT_OFFSET, 8571 },
+  { 0x32f4, G_UNICODE_NOT_PRESENT_OFFSET, 8575 },
+  { 0x32f5, G_UNICODE_NOT_PRESENT_OFFSET, 8579 },
+  { 0x32f6, G_UNICODE_NOT_PRESENT_OFFSET, 8583 },
+  { 0x32f7, G_UNICODE_NOT_PRESENT_OFFSET, 8587 },
+  { 0x32f8, G_UNICODE_NOT_PRESENT_OFFSET, 8591 },
+  { 0x32f9, G_UNICODE_NOT_PRESENT_OFFSET, 8595 },
+  { 0x32fa, G_UNICODE_NOT_PRESENT_OFFSET, 8599 },
+  { 0x32fb, G_UNICODE_NOT_PRESENT_OFFSET, 8603 },
+  { 0x32fc, G_UNICODE_NOT_PRESENT_OFFSET, 8607 },
+  { 0x32fd, G_UNICODE_NOT_PRESENT_OFFSET, 8611 },
+  { 0x32fe, G_UNICODE_NOT_PRESENT_OFFSET, 8615 },
+  { 0x3300, G_UNICODE_NOT_PRESENT_OFFSET, 8619 },
+  { 0x3301, G_UNICODE_NOT_PRESENT_OFFSET, 8635 },
+  { 0x3302, G_UNICODE_NOT_PRESENT_OFFSET, 8648 },
+  { 0x3303, G_UNICODE_NOT_PRESENT_OFFSET, 8664 },
+  { 0x3304, G_UNICODE_NOT_PRESENT_OFFSET, 8674 },
+  { 0x3305, G_UNICODE_NOT_PRESENT_OFFSET, 8690 },
+  { 0x3306, G_UNICODE_NOT_PRESENT_OFFSET, 8700 },
+  { 0x3307, G_UNICODE_NOT_PRESENT_OFFSET, 8710 },
+  { 0x3308, G_UNICODE_NOT_PRESENT_OFFSET, 8729 },
+  { 0x3309, G_UNICODE_NOT_PRESENT_OFFSET, 8742 },
+  { 0x330a, G_UNICODE_NOT_PRESENT_OFFSET, 8752 },
+  { 0x330b, G_UNICODE_NOT_PRESENT_OFFSET, 8762 },
+  { 0x330c, G_UNICODE_NOT_PRESENT_OFFSET, 8772 },
+  { 0x330d, G_UNICODE_NOT_PRESENT_OFFSET, 8785 },
+  { 0x330e, G_UNICODE_NOT_PRESENT_OFFSET, 8798 },
+  { 0x330f, G_UNICODE_NOT_PRESENT_OFFSET, 8811 },
+  { 0x3310, G_UNICODE_NOT_PRESENT_OFFSET, 8824 },
+  { 0x3311, G_UNICODE_NOT_PRESENT_OFFSET, 8837 },
+  { 0x3312, G_UNICODE_NOT_PRESENT_OFFSET, 8850 },
+  { 0x3313, G_UNICODE_NOT_PRESENT_OFFSET, 8863 },
+  { 0x3314, G_UNICODE_NOT_PRESENT_OFFSET, 8882 },
+  { 0x3315, G_UNICODE_NOT_PRESENT_OFFSET, 8889 },
+  { 0x3316, G_UNICODE_NOT_PRESENT_OFFSET, 8908 },
+  { 0x3317, G_UNICODE_NOT_PRESENT_OFFSET, 8927 },
+  { 0x3318, G_UNICODE_NOT_PRESENT_OFFSET, 8943 },
+  { 0x3319, G_UNICODE_NOT_PRESENT_OFFSET, 8956 },
+  { 0x331a, G_UNICODE_NOT_PRESENT_OFFSET, 8975 },
+  { 0x331b, G_UNICODE_NOT_PRESENT_OFFSET, 8994 },
+  { 0x331c, G_UNICODE_NOT_PRESENT_OFFSET, 9007 },
+  { 0x331d, G_UNICODE_NOT_PRESENT_OFFSET, 9017 },
+  { 0x331e, G_UNICODE_NOT_PRESENT_OFFSET, 9027 },
+  { 0x331f, G_UNICODE_NOT_PRESENT_OFFSET, 9040 },
+  { 0x3320, G_UNICODE_NOT_PRESENT_OFFSET, 9053 },
+  { 0x3321, G_UNICODE_NOT_PRESENT_OFFSET, 9069 },
+  { 0x3322, G_UNICODE_NOT_PRESENT_OFFSET, 9085 },
+  { 0x3323, G_UNICODE_NOT_PRESENT_OFFSET, 9095 },
+  { 0x3324, G_UNICODE_NOT_PRESENT_OFFSET, 9105 },
+  { 0x3325, G_UNICODE_NOT_PRESENT_OFFSET, 9118 },
+  { 0x3326, G_UNICODE_NOT_PRESENT_OFFSET, 9128 },
+  { 0x3327, G_UNICODE_NOT_PRESENT_OFFSET, 9138 },
+  { 0x3328, G_UNICODE_NOT_PRESENT_OFFSET, 9145 },
+  { 0x3329, G_UNICODE_NOT_PRESENT_OFFSET, 9152 },
+  { 0x332a, G_UNICODE_NOT_PRESENT_OFFSET, 9162 },
+  { 0x332b, G_UNICODE_NOT_PRESENT_OFFSET, 9172 },
+  { 0x332c, G_UNICODE_NOT_PRESENT_OFFSET, 9191 },
+  { 0x332d, G_UNICODE_NOT_PRESENT_OFFSET, 9204 },
+  { 0x332e, G_UNICODE_NOT_PRESENT_OFFSET, 9220 },
+  { 0x332f, G_UNICODE_NOT_PRESENT_OFFSET, 9239 },
+  { 0x3330, G_UNICODE_NOT_PRESENT_OFFSET, 9252 },
+  { 0x3331, G_UNICODE_NOT_PRESENT_OFFSET, 9262 },
+  { 0x3332, G_UNICODE_NOT_PRESENT_OFFSET, 9272 },
+  { 0x3333, G_UNICODE_NOT_PRESENT_OFFSET, 9291 },
+  { 0x3334, G_UNICODE_NOT_PRESENT_OFFSET, 9304 },
+  { 0x3335, G_UNICODE_NOT_PRESENT_OFFSET, 9323 },
+  { 0x3336, G_UNICODE_NOT_PRESENT_OFFSET, 9333 },
+  { 0x3337, G_UNICODE_NOT_PRESENT_OFFSET, 9349 },
+  { 0x3338, G_UNICODE_NOT_PRESENT_OFFSET, 9359 },
+  { 0x3339, G_UNICODE_NOT_PRESENT_OFFSET, 9372 },
+  { 0x333a, G_UNICODE_NOT_PRESENT_OFFSET, 9382 },
+  { 0x333b, G_UNICODE_NOT_PRESENT_OFFSET, 9395 },
+  { 0x333c, G_UNICODE_NOT_PRESENT_OFFSET, 9411 },
+  { 0x333d, G_UNICODE_NOT_PRESENT_OFFSET, 9424 },
+  { 0x333e, G_UNICODE_NOT_PRESENT_OFFSET, 9440 },
+  { 0x333f, G_UNICODE_NOT_PRESENT_OFFSET, 9453 },
+  { 0x3340, G_UNICODE_NOT_PRESENT_OFFSET, 9460 },
+  { 0x3341, G_UNICODE_NOT_PRESENT_OFFSET, 9476 },
+  { 0x3342, G_UNICODE_NOT_PRESENT_OFFSET, 9486 },
+  { 0x3343, G_UNICODE_NOT_PRESENT_OFFSET, 9496 },
+  { 0x3344, G_UNICODE_NOT_PRESENT_OFFSET, 9509 },
+  { 0x3345, G_UNICODE_NOT_PRESENT_OFFSET, 9519 },
+  { 0x3346, G_UNICODE_NOT_PRESENT_OFFSET, 9529 },
+  { 0x3347, G_UNICODE_NOT_PRESENT_OFFSET, 9539 },
+  { 0x3348, G_UNICODE_NOT_PRESENT_OFFSET, 9555 },
+  { 0x3349, G_UNICODE_NOT_PRESENT_OFFSET, 9568 },
+  { 0x334a, G_UNICODE_NOT_PRESENT_OFFSET, 9575 },
+  { 0x334b, G_UNICODE_NOT_PRESENT_OFFSET, 9594 },
+  { 0x334c, G_UNICODE_NOT_PRESENT_OFFSET, 9604 },
+  { 0x334d, G_UNICODE_NOT_PRESENT_OFFSET, 9620 },
+  { 0x334e, G_UNICODE_NOT_PRESENT_OFFSET, 9633 },
+  { 0x334f, G_UNICODE_NOT_PRESENT_OFFSET, 9646 },
+  { 0x3350, G_UNICODE_NOT_PRESENT_OFFSET, 9656 },
+  { 0x3351, G_UNICODE_NOT_PRESENT_OFFSET, 9666 },
+  { 0x3352, G_UNICODE_NOT_PRESENT_OFFSET, 9679 },
+  { 0x3353, G_UNICODE_NOT_PRESENT_OFFSET, 9686 },
+  { 0x3354, G_UNICODE_NOT_PRESENT_OFFSET, 9699 },
+  { 0x3355, G_UNICODE_NOT_PRESENT_OFFSET, 9715 },
+  { 0x3356, G_UNICODE_NOT_PRESENT_OFFSET, 9722 },
+  { 0x3357, G_UNICODE_NOT_PRESENT_OFFSET, 9741 },
+  { 0x3358, G_UNICODE_NOT_PRESENT_OFFSET, 9751 },
+  { 0x3359, G_UNICODE_NOT_PRESENT_OFFSET, 9756 },
+  { 0x335a, G_UNICODE_NOT_PRESENT_OFFSET, 9761 },
+  { 0x335b, G_UNICODE_NOT_PRESENT_OFFSET, 9766 },
+  { 0x335c, G_UNICODE_NOT_PRESENT_OFFSET, 9771 },
+  { 0x335d, G_UNICODE_NOT_PRESENT_OFFSET, 9776 },
+  { 0x335e, G_UNICODE_NOT_PRESENT_OFFSET, 9781 },
+  { 0x335f, G_UNICODE_NOT_PRESENT_OFFSET, 9786 },
+  { 0x3360, G_UNICODE_NOT_PRESENT_OFFSET, 9791 },
+  { 0x3361, G_UNICODE_NOT_PRESENT_OFFSET, 9796 },
+  { 0x3362, G_UNICODE_NOT_PRESENT_OFFSET, 9801 },
+  { 0x3363, G_UNICODE_NOT_PRESENT_OFFSET, 9807 },
+  { 0x3364, G_UNICODE_NOT_PRESENT_OFFSET, 9813 },
+  { 0x3365, G_UNICODE_NOT_PRESENT_OFFSET, 9819 },
+  { 0x3366, G_UNICODE_NOT_PRESENT_OFFSET, 9825 },
+  { 0x3367, G_UNICODE_NOT_PRESENT_OFFSET, 9831 },
+  { 0x3368, G_UNICODE_NOT_PRESENT_OFFSET, 9837 },
+  { 0x3369, G_UNICODE_NOT_PRESENT_OFFSET, 9843 },
+  { 0x336a, G_UNICODE_NOT_PRESENT_OFFSET, 9849 },
+  { 0x336b, G_UNICODE_NOT_PRESENT_OFFSET, 9855 },
+  { 0x336c, G_UNICODE_NOT_PRESENT_OFFSET, 9861 },
+  { 0x336d, G_UNICODE_NOT_PRESENT_OFFSET, 9867 },
+  { 0x336e, G_UNICODE_NOT_PRESENT_OFFSET, 9873 },
+  { 0x336f, G_UNICODE_NOT_PRESENT_OFFSET, 9879 },
+  { 0x3370, G_UNICODE_NOT_PRESENT_OFFSET, 9885 },
+  { 0x3371, G_UNICODE_NOT_PRESENT_OFFSET, 9891 },
+  { 0x3372, G_UNICODE_NOT_PRESENT_OFFSET, 9895 },
+  { 0x3373, G_UNICODE_NOT_PRESENT_OFFSET, 9898 },
+  { 0x3374, G_UNICODE_NOT_PRESENT_OFFSET, 9901 },
+  { 0x3375, G_UNICODE_NOT_PRESENT_OFFSET, 9905 },
+  { 0x3376, G_UNICODE_NOT_PRESENT_OFFSET, 9908 },
+  { 0x337b, G_UNICODE_NOT_PRESENT_OFFSET, 9911 },
+  { 0x337c, G_UNICODE_NOT_PRESENT_OFFSET, 9918 },
+  { 0x337d, G_UNICODE_NOT_PRESENT_OFFSET, 9925 },
+  { 0x337e, G_UNICODE_NOT_PRESENT_OFFSET, 9932 },
+  { 0x337f, G_UNICODE_NOT_PRESENT_OFFSET, 9939 },
+  { 0x3380, G_UNICODE_NOT_PRESENT_OFFSET, 9952 },
+  { 0x3381, G_UNICODE_NOT_PRESENT_OFFSET, 9955 },
+  { 0x3382, G_UNICODE_NOT_PRESENT_OFFSET, 9958 },
+  { 0x3383, G_UNICODE_NOT_PRESENT_OFFSET, 9962 },
+  { 0x3384, G_UNICODE_NOT_PRESENT_OFFSET, 9965 },
+  { 0x3385, G_UNICODE_NOT_PRESENT_OFFSET, 9968 },
+  { 0x3386, G_UNICODE_NOT_PRESENT_OFFSET, 9971 },
+  { 0x3387, G_UNICODE_NOT_PRESENT_OFFSET, 9974 },
+  { 0x3388, G_UNICODE_NOT_PRESENT_OFFSET, 9977 },
+  { 0x3389, G_UNICODE_NOT_PRESENT_OFFSET, 9981 },
+  { 0x338a, G_UNICODE_NOT_PRESENT_OFFSET, 9986 },
+  { 0x338b, G_UNICODE_NOT_PRESENT_OFFSET, 9989 },
+  { 0x338c, G_UNICODE_NOT_PRESENT_OFFSET, 9992 },
+  { 0x338d, G_UNICODE_NOT_PRESENT_OFFSET, 9996 },
+  { 0x338e, G_UNICODE_NOT_PRESENT_OFFSET, 10000 },
+  { 0x338f, G_UNICODE_NOT_PRESENT_OFFSET, 10003 },
+  { 0x3390, G_UNICODE_NOT_PRESENT_OFFSET, 10006 },
+  { 0x3391, G_UNICODE_NOT_PRESENT_OFFSET, 10009 },
+  { 0x3392, G_UNICODE_NOT_PRESENT_OFFSET, 10013 },
+  { 0x3393, G_UNICODE_NOT_PRESENT_OFFSET, 10017 },
+  { 0x3394, G_UNICODE_NOT_PRESENT_OFFSET, 10021 },
+  { 0x3395, G_UNICODE_NOT_PRESENT_OFFSET, 10025 },
+  { 0x3396, G_UNICODE_NOT_PRESENT_OFFSET, 10029 },
+  { 0x3397, G_UNICODE_NOT_PRESENT_OFFSET, 10032 },
+  { 0x3398, G_UNICODE_NOT_PRESENT_OFFSET, 10035 },
+  { 0x3399, G_UNICODE_NOT_PRESENT_OFFSET, 10038 },
+  { 0x339a, G_UNICODE_NOT_PRESENT_OFFSET, 10041 },
+  { 0x339b, G_UNICODE_NOT_PRESENT_OFFSET, 10044 },
+  { 0x339c, G_UNICODE_NOT_PRESENT_OFFSET, 10048 },
+  { 0x339d, G_UNICODE_NOT_PRESENT_OFFSET, 10051 },
+  { 0x339e, G_UNICODE_NOT_PRESENT_OFFSET, 10054 },
+  { 0x339f, G_UNICODE_NOT_PRESENT_OFFSET, 10057 },
+  { 0x33a0, G_UNICODE_NOT_PRESENT_OFFSET, 10061 },
+  { 0x33a1, G_UNICODE_NOT_PRESENT_OFFSET, 10065 },
+  { 0x33a2, G_UNICODE_NOT_PRESENT_OFFSET, 10068 },
+  { 0x33a3, G_UNICODE_NOT_PRESENT_OFFSET, 10072 },
+  { 0x33a4, G_UNICODE_NOT_PRESENT_OFFSET, 10076 },
+  { 0x33a5, G_UNICODE_NOT_PRESENT_OFFSET, 10080 },
+  { 0x33a6, G_UNICODE_NOT_PRESENT_OFFSET, 10083 },
+  { 0x33a7, G_UNICODE_NOT_PRESENT_OFFSET, 10087 },
+  { 0x33a8, G_UNICODE_NOT_PRESENT_OFFSET, 10093 },
+  { 0x33a9, G_UNICODE_NOT_PRESENT_OFFSET, 10100 },
+  { 0x33aa, G_UNICODE_NOT_PRESENT_OFFSET, 10103 },
+  { 0x33ab, G_UNICODE_NOT_PRESENT_OFFSET, 10107 },
+  { 0x33ac, G_UNICODE_NOT_PRESENT_OFFSET, 10111 },
+  { 0x33ad, G_UNICODE_NOT_PRESENT_OFFSET, 10115 },
+  { 0x33ae, G_UNICODE_NOT_PRESENT_OFFSET, 10119 },
+  { 0x33af, G_UNICODE_NOT_PRESENT_OFFSET, 10127 },
+  { 0x33b0, G_UNICODE_NOT_PRESENT_OFFSET, 10136 },
+  { 0x33b1, G_UNICODE_NOT_PRESENT_OFFSET, 10139 },
+  { 0x33b2, G_UNICODE_NOT_PRESENT_OFFSET, 10142 },
+  { 0x33b3, G_UNICODE_NOT_PRESENT_OFFSET, 10146 },
+  { 0x33b4, G_UNICODE_NOT_PRESENT_OFFSET, 10149 },
+  { 0x33b5, G_UNICODE_NOT_PRESENT_OFFSET, 10152 },
+  { 0x33b6, G_UNICODE_NOT_PRESENT_OFFSET, 10155 },
+  { 0x33b7, G_UNICODE_NOT_PRESENT_OFFSET, 10159 },
+  { 0x33b8, G_UNICODE_NOT_PRESENT_OFFSET, 10162 },
+  { 0x33b9, G_UNICODE_NOT_PRESENT_OFFSET, 10165 },
+  { 0x33ba, G_UNICODE_NOT_PRESENT_OFFSET, 10168 },
+  { 0x33bb, G_UNICODE_NOT_PRESENT_OFFSET, 10171 },
+  { 0x33bc, G_UNICODE_NOT_PRESENT_OFFSET, 10174 },
+  { 0x33bd, G_UNICODE_NOT_PRESENT_OFFSET, 10178 },
+  { 0x33be, G_UNICODE_NOT_PRESENT_OFFSET, 10181 },
+  { 0x33bf, G_UNICODE_NOT_PRESENT_OFFSET, 10184 },
+  { 0x33c0, G_UNICODE_NOT_PRESENT_OFFSET, 10187 },
+  { 0x33c1, G_UNICODE_NOT_PRESENT_OFFSET, 10191 },
+  { 0x33c2, G_UNICODE_NOT_PRESENT_OFFSET, 10195 },
+  { 0x33c3, G_UNICODE_NOT_PRESENT_OFFSET, 10200 },
+  { 0x33c4, G_UNICODE_NOT_PRESENT_OFFSET, 10203 },
+  { 0x33c5, G_UNICODE_NOT_PRESENT_OFFSET, 10206 },
+  { 0x33c6, G_UNICODE_NOT_PRESENT_OFFSET, 10209 },
+  { 0x33c7, G_UNICODE_NOT_PRESENT_OFFSET, 10216 },
+  { 0x33c8, G_UNICODE_NOT_PRESENT_OFFSET, 10220 },
+  { 0x33c9, G_UNICODE_NOT_PRESENT_OFFSET, 10223 },
+  { 0x33ca, G_UNICODE_NOT_PRESENT_OFFSET, 10226 },
+  { 0x33cb, G_UNICODE_NOT_PRESENT_OFFSET, 10229 },
+  { 0x33cc, G_UNICODE_NOT_PRESENT_OFFSET, 10232 },
+  { 0x33cd, G_UNICODE_NOT_PRESENT_OFFSET, 10235 },
+  { 0x33ce, G_UNICODE_NOT_PRESENT_OFFSET, 10238 },
+  { 0x33cf, G_UNICODE_NOT_PRESENT_OFFSET, 10241 },
+  { 0x33d0, G_UNICODE_NOT_PRESENT_OFFSET, 10244 },
+  { 0x33d1, G_UNICODE_NOT_PRESENT_OFFSET, 10247 },
+  { 0x33d2, G_UNICODE_NOT_PRESENT_OFFSET, 10250 },
+  { 0x33d3, G_UNICODE_NOT_PRESENT_OFFSET, 10254 },
+  { 0x33d4, G_UNICODE_NOT_PRESENT_OFFSET, 10257 },
+  { 0x33d5, G_UNICODE_NOT_PRESENT_OFFSET, 10260 },
+  { 0x33d6, G_UNICODE_NOT_PRESENT_OFFSET, 10264 },
+  { 0x33d7, G_UNICODE_NOT_PRESENT_OFFSET, 10268 },
+  { 0x33d8, G_UNICODE_NOT_PRESENT_OFFSET, 10271 },
+  { 0x33d9, G_UNICODE_NOT_PRESENT_OFFSET, 10276 },
+  { 0x33da, G_UNICODE_NOT_PRESENT_OFFSET, 10280 },
+  { 0x33db, G_UNICODE_NOT_PRESENT_OFFSET, 10283 },
+  { 0x33dc, G_UNICODE_NOT_PRESENT_OFFSET, 10286 },
+  { 0x33dd, G_UNICODE_NOT_PRESENT_OFFSET, 10289 },
+  { 0x33e0, G_UNICODE_NOT_PRESENT_OFFSET, 10292 },
+  { 0x33e1, G_UNICODE_NOT_PRESENT_OFFSET, 10297 },
+  { 0x33e2, G_UNICODE_NOT_PRESENT_OFFSET, 10302 },
+  { 0x33e3, G_UNICODE_NOT_PRESENT_OFFSET, 10307 },
+  { 0x33e4, G_UNICODE_NOT_PRESENT_OFFSET, 10312 },
+  { 0x33e5, G_UNICODE_NOT_PRESENT_OFFSET, 10317 },
+  { 0x33e6, G_UNICODE_NOT_PRESENT_OFFSET, 10322 },
+  { 0x33e7, G_UNICODE_NOT_PRESENT_OFFSET, 10327 },
+  { 0x33e8, G_UNICODE_NOT_PRESENT_OFFSET, 10332 },
+  { 0x33e9, G_UNICODE_NOT_PRESENT_OFFSET, 10337 },
+  { 0x33ea, G_UNICODE_NOT_PRESENT_OFFSET, 10343 },
+  { 0x33eb, G_UNICODE_NOT_PRESENT_OFFSET, 10349 },
+  { 0x33ec, G_UNICODE_NOT_PRESENT_OFFSET, 10355 },
+  { 0x33ed, G_UNICODE_NOT_PRESENT_OFFSET, 10361 },
+  { 0x33ee, G_UNICODE_NOT_PRESENT_OFFSET, 10367 },
+  { 0x33ef, G_UNICODE_NOT_PRESENT_OFFSET, 10373 },
+  { 0x33f0, G_UNICODE_NOT_PRESENT_OFFSET, 10379 },
+  { 0x33f1, G_UNICODE_NOT_PRESENT_OFFSET, 10385 },
+  { 0x33f2, G_UNICODE_NOT_PRESENT_OFFSET, 10391 },
+  { 0x33f3, G_UNICODE_NOT_PRESENT_OFFSET, 10397 },
+  { 0x33f4, G_UNICODE_NOT_PRESENT_OFFSET, 10403 },
+  { 0x33f5, G_UNICODE_NOT_PRESENT_OFFSET, 10409 },
+  { 0x33f6, G_UNICODE_NOT_PRESENT_OFFSET, 10415 },
+  { 0x33f7, G_UNICODE_NOT_PRESENT_OFFSET, 10421 },
+  { 0x33f8, G_UNICODE_NOT_PRESENT_OFFSET, 10427 },
+  { 0x33f9, G_UNICODE_NOT_PRESENT_OFFSET, 10433 },
+  { 0x33fa, G_UNICODE_NOT_PRESENT_OFFSET, 10439 },
+  { 0x33fb, G_UNICODE_NOT_PRESENT_OFFSET, 10445 },
+  { 0x33fc, G_UNICODE_NOT_PRESENT_OFFSET, 10451 },
+  { 0x33fd, G_UNICODE_NOT_PRESENT_OFFSET, 10457 },
+  { 0x33fe, G_UNICODE_NOT_PRESENT_OFFSET, 10463 },
+  { 0xf900, 10469, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf901, 10473, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf902, 6535, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf903, 10477, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf904, 10481, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf905, 10485, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf906, 10489, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf907, 6751, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf908, 6751, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf909, 10493, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf90a, 6567, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf90b, 10497, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf90c, 10501, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf90d, 10505, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf90e, 10509, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf90f, 10513, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf910, 10517, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf911, 10521, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf912, 10525, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf913, 10529, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf914, 10533, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf915, 10537, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf916, 10541, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf917, 10545, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf918, 10549, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf919, 10553, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf91a, 10557, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf91b, 10561, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf91c, 10565, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf91d, 10569, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf91e, 10573, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf91f, 10577, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf920, 10581, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf921, 10585, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf922, 10589, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf923, 10593, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf924, 10597, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf925, 10601, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf926, 10605, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf927, 10609, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf928, 10613, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf929, 10617, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf92a, 10621, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf92b, 10625, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf92c, 10629, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf92d, 10633, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf92e, 10637, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf92f, 10641, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf930, 10645, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf931, 10649, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf932, 10653, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf933, 10657, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf934, 6399, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf935, 10661, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf936, 10665, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf937, 10669, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf938, 10673, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf939, 10677, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf93a, 10681, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf93b, 10685, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf93c, 10689, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf93d, 10693, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf93e, 10697, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf93f, 10701, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf940, 6691, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf941, 10705, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf942, 10709, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf943, 10713, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf944, 10717, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf945, 10721, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf946, 10725, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf947, 10729, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf948, 10733, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf949, 10737, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf94a, 10741, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf94b, 10745, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf94c, 10749, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf94d, 10753, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf94e, 10757, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf94f, 10761, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf950, 10765, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf951, 10769, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf952, 10773, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf953, 10777, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf954, 10781, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf955, 10785, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf956, 10789, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf957, 10793, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf958, 10797, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf959, 10801, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf95a, 10805, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf95b, 10809, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf95c, 10533, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf95d, 10813, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf95e, 10817, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf95f, 10821, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf960, 10825, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf961, 10829, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf962, 10833, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf963, 10837, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf964, 10841, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf965, 10845, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf966, 10849, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf967, 10853, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf968, 10857, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf969, 10861, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf96a, 10865, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf96b, 10869, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf96c, 10873, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf96d, 10877, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf96e, 10881, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf96f, 10885, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf970, 10889, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf971, 6543, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf972, 10893, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf973, 10897, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf974, 10901, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf975, 10905, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf976, 10909, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf977, 10913, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf978, 10917, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf979, 10921, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf97a, 10925, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf97b, 10929, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf97c, 10933, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf97d, 10937, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf97e, 10941, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf97f, 10945, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf980, 10949, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf981, 6051, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf982, 10953, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf983, 10957, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf984, 10961, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf985, 10965, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf986, 10969, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf987, 10973, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf988, 10977, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf989, 10981, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf98a, 5975, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf98b, 10985, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf98c, 10989, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf98d, 10993, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf98e, 10997, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf98f, 11001, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf990, 11005, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf991, 11009, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf992, 11013, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf993, 11017, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf994, 11021, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf995, 11025, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf996, 11029, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf997, 11033, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf998, 11037, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf999, 11041, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf99a, 11045, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf99b, 11049, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf99c, 11053, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf99d, 11057, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf99e, 11061, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf99f, 11065, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a0, 11069, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a1, 10885, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a2, 11073, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a3, 11077, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a4, 11081, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a5, 11085, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a6, 11089, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a7, 11093, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a8, 11097, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9a9, 11101, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9aa, 10821, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ab, 11105, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ac, 11109, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ad, 11113, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ae, 11117, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9af, 11121, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b0, 11125, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b1, 11129, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b2, 11133, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b3, 11137, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b4, 11141, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b5, 11145, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b6, 11149, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b7, 11153, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b8, 11157, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9b9, 11161, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ba, 11165, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9bb, 11169, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9bc, 11173, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9bd, 11177, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9be, 11181, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9bf, 10533, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c0, 11185, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c1, 11189, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c2, 11193, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c3, 11197, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c4, 6747, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c5, 11201, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c6, 11205, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c7, 11209, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c8, 11213, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9c9, 11217, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ca, 11221, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9cb, 11225, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9cc, 11229, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9cd, 11233, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ce, 11237, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9cf, 11241, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d0, 11245, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d1, 8199, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d2, 11249, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d3, 11253, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d4, 11257, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d5, 11261, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d6, 11265, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d7, 11269, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d8, 11273, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9d9, 11277, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9da, 11281, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9db, 10829, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9dc, 11285, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9dd, 11289, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9de, 11293, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9df, 11297, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e0, 11301, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e1, 11305, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e2, 11309, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e3, 11313, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e4, 11317, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e5, 11321, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e6, 11325, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e7, 11329, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e8, 11333, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9e9, 6563, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ea, 11337, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9eb, 11341, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ec, 11345, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ed, 11349, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ee, 11353, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ef, 11357, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f0, 11361, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f1, 11365, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f2, 11369, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f3, 11373, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f4, 11377, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f5, 11381, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f6, 11385, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f7, 6367, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f8, 11389, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9f9, 11393, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9fa, 11397, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9fb, 11401, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9fc, 11405, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9fd, 11409, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9fe, 11413, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xf9ff, 11417, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa00, 11421, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa01, 11425, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa02, 11429, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa03, 11433, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa04, 11437, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa05, 11441, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa06, 11445, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa07, 11449, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa08, 6475, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa09, 11453, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa0a, 6487, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa0b, 11457, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa0c, 11461, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa0d, 11465, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa10, 11469, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa12, 11473, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa15, 11477, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa16, 11481, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa17, 11485, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa18, 11489, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa19, 11493, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa1a, 11497, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa1b, 11501, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa1c, 11505, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa1d, 11509, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa1e, 6395, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa20, 11513, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa22, 11517, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa25, 11521, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa26, 11525, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa2a, 11529, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa2b, 11533, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa2c, 11537, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa2d, 11541, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa30, 11545, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa31, 11549, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa32, 11553, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa33, 11557, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa34, 11561, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa35, 11565, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa36, 11569, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa37, 11573, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa38, 11577, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa39, 11581, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa3a, 11585, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa3b, 11589, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa3c, 6079, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa3d, 11593, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa3e, 11597, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa3f, 11601, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa40, 11605, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa41, 11609, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa42, 11613, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa43, 11617, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa44, 11621, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa45, 11625, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa46, 11629, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa47, 11633, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa48, 11637, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa49, 11641, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa4a, 11645, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa4b, 11649, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa4c, 8219, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa4d, 11653, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa4e, 11657, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa4f, 11661, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa50, 11665, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa51, 8235, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa52, 11669, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa53, 11673, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa54, 11677, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa55, 11681, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa56, 11685, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa57, 11029, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa58, 11689, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa59, 11693, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa5a, 11697, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa5b, 11701, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa5c, 11705, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa5d, 11709, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa5e, 11709, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa5f, 11713, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa60, 11717, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa61, 11721, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa62, 11725, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa63, 11729, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa64, 11733, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa65, 11737, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa66, 11741, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa67, 11521, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa68, 11745, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa69, 11749, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfa6a, 11753, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb00, G_UNICODE_NOT_PRESENT_OFFSET, 11757 },
+  { 0xfb01, G_UNICODE_NOT_PRESENT_OFFSET, 11760 },
+  { 0xfb02, G_UNICODE_NOT_PRESENT_OFFSET, 11763 },
+  { 0xfb03, G_UNICODE_NOT_PRESENT_OFFSET, 11766 },
+  { 0xfb04, G_UNICODE_NOT_PRESENT_OFFSET, 11770 },
+  { 0xfb05, G_UNICODE_NOT_PRESENT_OFFSET, 11774 },
+  { 0xfb06, G_UNICODE_NOT_PRESENT_OFFSET, 11774 },
+  { 0xfb13, G_UNICODE_NOT_PRESENT_OFFSET, 11777 },
+  { 0xfb14, G_UNICODE_NOT_PRESENT_OFFSET, 11782 },
+  { 0xfb15, G_UNICODE_NOT_PRESENT_OFFSET, 11787 },
+  { 0xfb16, G_UNICODE_NOT_PRESENT_OFFSET, 11792 },
+  { 0xfb17, G_UNICODE_NOT_PRESENT_OFFSET, 11797 },
+  { 0xfb1d, 11802, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb1f, 11807, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb20, G_UNICODE_NOT_PRESENT_OFFSET, 11812 },
+  { 0xfb21, G_UNICODE_NOT_PRESENT_OFFSET, 5052 },
+  { 0xfb22, G_UNICODE_NOT_PRESENT_OFFSET, 5061 },
+  { 0xfb23, G_UNICODE_NOT_PRESENT_OFFSET, 11815 },
+  { 0xfb24, G_UNICODE_NOT_PRESENT_OFFSET, 11818 },
+  { 0xfb25, G_UNICODE_NOT_PRESENT_OFFSET, 11821 },
+  { 0xfb26, G_UNICODE_NOT_PRESENT_OFFSET, 11824 },
+  { 0xfb27, G_UNICODE_NOT_PRESENT_OFFSET, 11827 },
+  { 0xfb28, G_UNICODE_NOT_PRESENT_OFFSET, 11830 },
+  { 0xfb29, G_UNICODE_NOT_PRESENT_OFFSET, 4957 },
+  { 0xfb2a, 11833, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb2b, 11838, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb2c, 11843, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb2d, 11850, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb2e, 11857, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb2f, 11862, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb30, 11867, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb31, 11872, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb32, 11877, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb33, 11882, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb34, 11887, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb35, 11892, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb36, 11897, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb38, 11902, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb39, 11907, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb3a, 11912, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb3b, 11917, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb3c, 11922, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb3e, 11927, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb40, 11932, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb41, 11937, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb43, 11942, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb44, 11947, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb46, 11952, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb47, 11957, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb48, 11962, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb49, 11967, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb4a, 11972, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb4b, 11977, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb4c, 11982, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb4d, 11987, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb4e, 11992, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0xfb4f, G_UNICODE_NOT_PRESENT_OFFSET, 11997 },
+  { 0xfb50, G_UNICODE_NOT_PRESENT_OFFSET, 12002 },
+  { 0xfb51, G_UNICODE_NOT_PRESENT_OFFSET, 12002 },
+  { 0xfb52, G_UNICODE_NOT_PRESENT_OFFSET, 12005 },
+  { 0xfb53, G_UNICODE_NOT_PRESENT_OFFSET, 12005 },
+  { 0xfb54, G_UNICODE_NOT_PRESENT_OFFSET, 12005 },
+  { 0xfb55, G_UNICODE_NOT_PRESENT_OFFSET, 12005 },
+  { 0xfb56, G_UNICODE_NOT_PRESENT_OFFSET, 12008 },
+  { 0xfb57, G_UNICODE_NOT_PRESENT_OFFSET, 12008 },
+  { 0xfb58, G_UNICODE_NOT_PRESENT_OFFSET, 12008 },
+  { 0xfb59, G_UNICODE_NOT_PRESENT_OFFSET, 12008 },
+  { 0xfb5a, G_UNICODE_NOT_PRESENT_OFFSET, 12011 },
+  { 0xfb5b, G_UNICODE_NOT_PRESENT_OFFSET, 12011 },
+  { 0xfb5c, G_UNICODE_NOT_PRESENT_OFFSET, 12011 },
+  { 0xfb5d, G_UNICODE_NOT_PRESENT_OFFSET, 12011 },
+  { 0xfb5e, G_UNICODE_NOT_PRESENT_OFFSET, 12014 },
+  { 0xfb5f, G_UNICODE_NOT_PRESENT_OFFSET, 12014 },
+  { 0xfb60, G_UNICODE_NOT_PRESENT_OFFSET, 12014 },
+  { 0xfb61, G_UNICODE_NOT_PRESENT_OFFSET, 12014 },
+  { 0xfb62, G_UNICODE_NOT_PRESENT_OFFSET, 12017 },
+  { 0xfb63, G_UNICODE_NOT_PRESENT_OFFSET, 12017 },
+  { 0xfb64, G_UNICODE_NOT_PRESENT_OFFSET, 12017 },
+  { 0xfb65, G_UNICODE_NOT_PRESENT_OFFSET, 12017 },
+  { 0xfb66, G_UNICODE_NOT_PRESENT_OFFSET, 12020 },
+  { 0xfb67, G_UNICODE_NOT_PRESENT_OFFSET, 12020 },
+  { 0xfb68, G_UNICODE_NOT_PRESENT_OFFSET, 12020 },
+  { 0xfb69, G_UNICODE_NOT_PRESENT_OFFSET, 12020 },
+  { 0xfb6a, G_UNICODE_NOT_PRESENT_OFFSET, 12023 },
+  { 0xfb6b, G_UNICODE_NOT_PRESENT_OFFSET, 12023 },
+  { 0xfb6c, G_UNICODE_NOT_PRESENT_OFFSET, 12023 },
+  { 0xfb6d, G_UNICODE_NOT_PRESENT_OFFSET, 12023 },
+  { 0xfb6e, G_UNICODE_NOT_PRESENT_OFFSET, 12026 },
+  { 0xfb6f, G_UNICODE_NOT_PRESENT_OFFSET, 12026 },
+  { 0xfb70, G_UNICODE_NOT_PRESENT_OFFSET, 12026 },
+  { 0xfb71, G_UNICODE_NOT_PRESENT_OFFSET, 12026 },
+  { 0xfb72, G_UNICODE_NOT_PRESENT_OFFSET, 12029 },
+  { 0xfb73, G_UNICODE_NOT_PRESENT_OFFSET, 12029 },
+  { 0xfb74, G_UNICODE_NOT_PRESENT_OFFSET, 12029 },
+  { 0xfb75, G_UNICODE_NOT_PRESENT_OFFSET, 12029 },
+  { 0xfb76, G_UNICODE_NOT_PRESENT_OFFSET, 12032 },
+  { 0xfb77, G_UNICODE_NOT_PRESENT_OFFSET, 12032 },
+  { 0xfb78, G_UNICODE_NOT_PRESENT_OFFSET, 12032 },
+  { 0xfb79, G_UNICODE_NOT_PRESENT_OFFSET, 12032 },
+  { 0xfb7a, G_UNICODE_NOT_PRESENT_OFFSET, 12035 },
+  { 0xfb7b, G_UNICODE_NOT_PRESENT_OFFSET, 12035 },
+  { 0xfb7c, G_UNICODE_NOT_PRESENT_OFFSET, 12035 },
+  { 0xfb7d, G_UNICODE_NOT_PRESENT_OFFSET, 12035 },
+  { 0xfb7e, G_UNICODE_NOT_PRESENT_OFFSET, 12038 },
+  { 0xfb7f, G_UNICODE_NOT_PRESENT_OFFSET, 12038 },
+  { 0xfb80, G_UNICODE_NOT_PRESENT_OFFSET, 12038 },
+  { 0xfb81, G_UNICODE_NOT_PRESENT_OFFSET, 12038 },
+  { 0xfb82, G_UNICODE_NOT_PRESENT_OFFSET, 12041 },
+  { 0xfb83, G_UNICODE_NOT_PRESENT_OFFSET, 12041 },
+  { 0xfb84, G_UNICODE_NOT_PRESENT_OFFSET, 12044 },
+  { 0xfb85, G_UNICODE_NOT_PRESENT_OFFSET, 12044 },
+  { 0xfb86, G_UNICODE_NOT_PRESENT_OFFSET, 12047 },
+  { 0xfb87, G_UNICODE_NOT_PRESENT_OFFSET, 12047 },
+  { 0xfb88, G_UNICODE_NOT_PRESENT_OFFSET, 12050 },
+  { 0xfb89, G_UNICODE_NOT_PRESENT_OFFSET, 12050 },
+  { 0xfb8a, G_UNICODE_NOT_PRESENT_OFFSET, 12053 },
+  { 0xfb8b, G_UNICODE_NOT_PRESENT_OFFSET, 12053 },
+  { 0xfb8c, G_UNICODE_NOT_PRESENT_OFFSET, 12056 },
+  { 0xfb8d, G_UNICODE_NOT_PRESENT_OFFSET, 12056 },
+  { 0xfb8e, G_UNICODE_NOT_PRESENT_OFFSET, 12059 },
+  { 0xfb8f, G_UNICODE_NOT_PRESENT_OFFSET, 12059 },
+  { 0xfb90, G_UNICODE_NOT_PRESENT_OFFSET, 12059 },
+  { 0xfb91, G_UNICODE_NOT_PRESENT_OFFSET, 12059 },
+  { 0xfb92, G_UNICODE_NOT_PRESENT_OFFSET, 12062 },
+  { 0xfb93, G_UNICODE_NOT_PRESENT_OFFSET, 12062 },
+  { 0xfb94, G_UNICODE_NOT_PRESENT_OFFSET, 12062 },
+  { 0xfb95, G_UNICODE_NOT_PRESENT_OFFSET, 12062 },
+  { 0xfb96, G_UNICODE_NOT_PRESENT_OFFSET, 12065 },
+  { 0xfb97, G_UNICODE_NOT_PRESENT_OFFSET, 12065 },
+  { 0xfb98, G_UNICODE_NOT_PRESENT_OFFSET, 12065 },
+  { 0xfb99, G_UNICODE_NOT_PRESENT_OFFSET, 12065 },
+  { 0xfb9a, G_UNICODE_NOT_PRESENT_OFFSET, 12068 },
+  { 0xfb9b, G_UNICODE_NOT_PRESENT_OFFSET, 12068 },
+  { 0xfb9c, G_UNICODE_NOT_PRESENT_OFFSET, 12068 },
+  { 0xfb9d, G_UNICODE_NOT_PRESENT_OFFSET, 12068 },
+  { 0xfb9e, G_UNICODE_NOT_PRESENT_OFFSET, 12071 },
+  { 0xfb9f, G_UNICODE_NOT_PRESENT_OFFSET, 12071 },
+  { 0xfba0, G_UNICODE_NOT_PRESENT_OFFSET, 12074 },
+  { 0xfba1, G_UNICODE_NOT_PRESENT_OFFSET, 12074 },
+  { 0xfba2, G_UNICODE_NOT_PRESENT_OFFSET, 12074 },
+  { 0xfba3, G_UNICODE_NOT_PRESENT_OFFSET, 12074 },
+  { 0xfba4, G_UNICODE_NOT_PRESENT_OFFSET, 1718 },
+  { 0xfba5, G_UNICODE_NOT_PRESENT_OFFSET, 1718 },
+  { 0xfba6, G_UNICODE_NOT_PRESENT_OFFSET, 12077 },
+  { 0xfba7, G_UNICODE_NOT_PRESENT_OFFSET, 12077 },
+  { 0xfba8, G_UNICODE_NOT_PRESENT_OFFSET, 12077 },
+  { 0xfba9, G_UNICODE_NOT_PRESENT_OFFSET, 12077 },
+  { 0xfbaa, G_UNICODE_NOT_PRESENT_OFFSET, 12080 },
+  { 0xfbab, G_UNICODE_NOT_PRESENT_OFFSET, 12080 },
+  { 0xfbac, G_UNICODE_NOT_PRESENT_OFFSET, 12080 },
+  { 0xfbad, G_UNICODE_NOT_PRESENT_OFFSET, 12080 },
+  { 0xfbae, G_UNICODE_NOT_PRESENT_OFFSET, 12083 },
+  { 0xfbaf, G_UNICODE_NOT_PRESENT_OFFSET, 12083 },
+  { 0xfbb0, G_UNICODE_NOT_PRESENT_OFFSET, 1728 },
+  { 0xfbb1, G_UNICODE_NOT_PRESENT_OFFSET, 1728 },
+  { 0xfbd3, G_UNICODE_NOT_PRESENT_OFFSET, 12086 },
+  { 0xfbd4, G_UNICODE_NOT_PRESENT_OFFSET, 12086 },
+  { 0xfbd5, G_UNICODE_NOT_PRESENT_OFFSET, 12086 },
+  { 0xfbd6, G_UNICODE_NOT_PRESENT_OFFSET, 12086 },
+  { 0xfbd7, G_UNICODE_NOT_PRESENT_OFFSET, 12089 },
+  { 0xfbd8, G_UNICODE_NOT_PRESENT_OFFSET, 12089 },
+  { 0xfbd9, G_UNICODE_NOT_PRESENT_OFFSET, 12092 },
+  { 0xfbda, G_UNICODE_NOT_PRESENT_OFFSET, 12092 },
+  { 0xfbdb, G_UNICODE_NOT_PRESENT_OFFSET, 12095 },
+  { 0xfbdc, G_UNICODE_NOT_PRESENT_OFFSET, 12095 },
+  { 0xfbdd, G_UNICODE_NOT_PRESENT_OFFSET, 1708 },
+  { 0xfbde, G_UNICODE_NOT_PRESENT_OFFSET, 12098 },
+  { 0xfbdf, G_UNICODE_NOT_PRESENT_OFFSET, 12098 },
+  { 0xfbe0, G_UNICODE_NOT_PRESENT_OFFSET, 12101 },
+  { 0xfbe1, G_UNICODE_NOT_PRESENT_OFFSET, 12101 },
+  { 0xfbe2, G_UNICODE_NOT_PRESENT_OFFSET, 12104 },
+  { 0xfbe3, G_UNICODE_NOT_PRESENT_OFFSET, 12104 },
+  { 0xfbe4, G_UNICODE_NOT_PRESENT_OFFSET, 12107 },
+  { 0xfbe5, G_UNICODE_NOT_PRESENT_OFFSET, 12107 },
+  { 0xfbe6, G_UNICODE_NOT_PRESENT_OFFSET, 12107 },
+  { 0xfbe7, G_UNICODE_NOT_PRESENT_OFFSET, 12107 },
+  { 0xfbe8, G_UNICODE_NOT_PRESENT_OFFSET, 12110 },
+  { 0xfbe9, G_UNICODE_NOT_PRESENT_OFFSET, 12110 },
+  { 0xfbea, G_UNICODE_NOT_PRESENT_OFFSET, 12113 },
+  { 0xfbeb, G_UNICODE_NOT_PRESENT_OFFSET, 12113 },
+  { 0xfbec, G_UNICODE_NOT_PRESENT_OFFSET, 12120 },
+  { 0xfbed, G_UNICODE_NOT_PRESENT_OFFSET, 12120 },
+  { 0xfbee, G_UNICODE_NOT_PRESENT_OFFSET, 12127 },
+  { 0xfbef, G_UNICODE_NOT_PRESENT_OFFSET, 12127 },
+  { 0xfbf0, G_UNICODE_NOT_PRESENT_OFFSET, 12134 },
+  { 0xfbf1, G_UNICODE_NOT_PRESENT_OFFSET, 12134 },
+  { 0xfbf2, G_UNICODE_NOT_PRESENT_OFFSET, 12141 },
+  { 0xfbf3, G_UNICODE_NOT_PRESENT_OFFSET, 12141 },
+  { 0xfbf4, G_UNICODE_NOT_PRESENT_OFFSET, 12148 },
+  { 0xfbf5, G_UNICODE_NOT_PRESENT_OFFSET, 12148 },
+  { 0xfbf6, G_UNICODE_NOT_PRESENT_OFFSET, 12155 },
+  { 0xfbf7, G_UNICODE_NOT_PRESENT_OFFSET, 12155 },
+  { 0xfbf8, G_UNICODE_NOT_PRESENT_OFFSET, 12155 },
+  { 0xfbf9, G_UNICODE_NOT_PRESENT_OFFSET, 12162 },
+  { 0xfbfa, G_UNICODE_NOT_PRESENT_OFFSET, 12162 },
+  { 0xfbfb, G_UNICODE_NOT_PRESENT_OFFSET, 12162 },
+  { 0xfbfc, G_UNICODE_NOT_PRESENT_OFFSET, 12169 },
+  { 0xfbfd, G_UNICODE_NOT_PRESENT_OFFSET, 12169 },
+  { 0xfbfe, G_UNICODE_NOT_PRESENT_OFFSET, 12169 },
+  { 0xfbff, G_UNICODE_NOT_PRESENT_OFFSET, 12169 },
+  { 0xfc00, G_UNICODE_NOT_PRESENT_OFFSET, 12172 },
+  { 0xfc01, G_UNICODE_NOT_PRESENT_OFFSET, 12179 },
+  { 0xfc02, G_UNICODE_NOT_PRESENT_OFFSET, 12186 },
+  { 0xfc03, G_UNICODE_NOT_PRESENT_OFFSET, 12162 },
+  { 0xfc04, G_UNICODE_NOT_PRESENT_OFFSET, 12193 },
+  { 0xfc05, G_UNICODE_NOT_PRESENT_OFFSET, 12200 },
+  { 0xfc06, G_UNICODE_NOT_PRESENT_OFFSET, 12205 },
+  { 0xfc07, G_UNICODE_NOT_PRESENT_OFFSET, 12210 },
+  { 0xfc08, G_UNICODE_NOT_PRESENT_OFFSET, 12215 },
+  { 0xfc09, G_UNICODE_NOT_PRESENT_OFFSET, 12220 },
+  { 0xfc0a, G_UNICODE_NOT_PRESENT_OFFSET, 12225 },
+  { 0xfc0b, G_UNICODE_NOT_PRESENT_OFFSET, 12230 },
+  { 0xfc0c, G_UNICODE_NOT_PRESENT_OFFSET, 12235 },
+  { 0xfc0d, G_UNICODE_NOT_PRESENT_OFFSET, 12240 },
+  { 0xfc0e, G_UNICODE_NOT_PRESENT_OFFSET, 12245 },
+  { 0xfc0f, G_UNICODE_NOT_PRESENT_OFFSET, 12250 },
+  { 0xfc10, G_UNICODE_NOT_PRESENT_OFFSET, 12255 },
+  { 0xfc11, G_UNICODE_NOT_PRESENT_OFFSET, 12260 },
+  { 0xfc12, G_UNICODE_NOT_PRESENT_OFFSET, 12265 },
+  { 0xfc13, G_UNICODE_NOT_PRESENT_OFFSET, 12270 },
+  { 0xfc14, G_UNICODE_NOT_PRESENT_OFFSET, 12275 },
+  { 0xfc15, G_UNICODE_NOT_PRESENT_OFFSET, 12280 },
+  { 0xfc16, G_UNICODE_NOT_PRESENT_OFFSET, 12285 },
+  { 0xfc17, G_UNICODE_NOT_PRESENT_OFFSET, 12290 },
+  { 0xfc18, G_UNICODE_NOT_PRESENT_OFFSET, 12295 },
+  { 0xfc19, G_UNICODE_NOT_PRESENT_OFFSET, 12300 },
+  { 0xfc1a, G_UNICODE_NOT_PRESENT_OFFSET, 12305 },
+  { 0xfc1b, G_UNICODE_NOT_PRESENT_OFFSET, 12310 },
+  { 0xfc1c, G_UNICODE_NOT_PRESENT_OFFSET, 12315 },
+  { 0xfc1d, G_UNICODE_NOT_PRESENT_OFFSET, 12320 },
+  { 0xfc1e, G_UNICODE_NOT_PRESENT_OFFSET, 12325 },
+  { 0xfc1f, G_UNICODE_NOT_PRESENT_OFFSET, 12330 },
+  { 0xfc20, G_UNICODE_NOT_PRESENT_OFFSET, 12335 },
+  { 0xfc21, G_UNICODE_NOT_PRESENT_OFFSET, 12340 },
+  { 0xfc22, G_UNICODE_NOT_PRESENT_OFFSET, 12345 },
+  { 0xfc23, G_UNICODE_NOT_PRESENT_OFFSET, 12350 },
+  { 0xfc24, G_UNICODE_NOT_PRESENT_OFFSET, 12355 },
+  { 0xfc25, G_UNICODE_NOT_PRESENT_OFFSET, 12360 },
+  { 0xfc26, G_UNICODE_NOT_PRESENT_OFFSET, 12365 },
+  { 0xfc27, G_UNICODE_NOT_PRESENT_OFFSET, 12370 },
+  { 0xfc28, G_UNICODE_NOT_PRESENT_OFFSET, 12375 },
+  { 0xfc29, G_UNICODE_NOT_PRESENT_OFFSET, 12380 },
+  { 0xfc2a, G_UNICODE_NOT_PRESENT_OFFSET, 12385 },
+  { 0xfc2b, G_UNICODE_NOT_PRESENT_OFFSET, 12390 },
+  { 0xfc2c, G_UNICODE_NOT_PRESENT_OFFSET, 12395 },
+  { 0xfc2d, G_UNICODE_NOT_PRESENT_OFFSET, 12400 },
+  { 0xfc2e, G_UNICODE_NOT_PRESENT_OFFSET, 12405 },
+  { 0xfc2f, G_UNICODE_NOT_PRESENT_OFFSET, 12410 },
+  { 0xfc30, G_UNICODE_NOT_PRESENT_OFFSET, 12415 },
+  { 0xfc31, G_UNICODE_NOT_PRESENT_OFFSET, 12420 },
+  { 0xfc32, G_UNICODE_NOT_PRESENT_OFFSET, 12425 },
+  { 0xfc33, G_UNICODE_NOT_PRESENT_OFFSET, 12430 },
+  { 0xfc34, G_UNICODE_NOT_PRESENT_OFFSET, 12435 },
+  { 0xfc35, G_UNICODE_NOT_PRESENT_OFFSET, 12440 },
+  { 0xfc36, G_UNICODE_NOT_PRESENT_OFFSET, 12445 },
+  { 0xfc37, G_UNICODE_NOT_PRESENT_OFFSET, 12450 },
+  { 0xfc38, G_UNICODE_NOT_PRESENT_OFFSET, 12455 },
+  { 0xfc39, G_UNICODE_NOT_PRESENT_OFFSET, 12460 },
+  { 0xfc3a, G_UNICODE_NOT_PRESENT_OFFSET, 12465 },
+  { 0xfc3b, G_UNICODE_NOT_PRESENT_OFFSET, 12470 },
+  { 0xfc3c, G_UNICODE_NOT_PRESENT_OFFSET, 12475 },
+  { 0xfc3d, G_UNICODE_NOT_PRESENT_OFFSET, 12480 },
+  { 0xfc3e, G_UNICODE_NOT_PRESENT_OFFSET, 12485 },
+  { 0xfc3f, G_UNICODE_NOT_PRESENT_OFFSET, 12490 },
+  { 0xfc40, G_UNICODE_NOT_PRESENT_OFFSET, 12495 },
+  { 0xfc41, G_UNICODE_NOT_PRESENT_OFFSET, 12500 },
+  { 0xfc42, G_UNICODE_NOT_PRESENT_OFFSET, 12505 },
+  { 0xfc43, G_UNICODE_NOT_PRESENT_OFFSET, 12510 },
+  { 0xfc44, G_UNICODE_NOT_PRESENT_OFFSET, 12515 },
+  { 0xfc45, G_UNICODE_NOT_PRESENT_OFFSET, 12520 },
+  { 0xfc46, G_UNICODE_NOT_PRESENT_OFFSET, 12525 },
+  { 0xfc47, G_UNICODE_NOT_PRESENT_OFFSET, 12530 },
+  { 0xfc48, G_UNICODE_NOT_PRESENT_OFFSET, 12535 },
+  { 0xfc49, G_UNICODE_NOT_PRESENT_OFFSET, 12540 },
+  { 0xfc4a, G_UNICODE_NOT_PRESENT_OFFSET, 12545 },
+  { 0xfc4b, G_UNICODE_NOT_PRESENT_OFFSET, 12550 },
+  { 0xfc4c, G_UNICODE_NOT_PRESENT_OFFSET, 12555 },
+  { 0xfc4d, G_UNICODE_NOT_PRESENT_OFFSET, 12560 },
+  { 0xfc4e, G_UNICODE_NOT_PRESENT_OFFSET, 12565 },
+  { 0xfc4f, G_UNICODE_NOT_PRESENT_OFFSET, 12570 },
+  { 0xfc50, G_UNICODE_NOT_PRESENT_OFFSET, 12575 },
+  { 0xfc51, G_UNICODE_NOT_PRESENT_OFFSET, 12580 },
+  { 0xfc52, G_UNICODE_NOT_PRESENT_OFFSET, 12585 },
+  { 0xfc53, G_UNICODE_NOT_PRESENT_OFFSET, 12590 },
+  { 0xfc54, G_UNICODE_NOT_PRESENT_OFFSET, 12595 },
+  { 0xfc55, G_UNICODE_NOT_PRESENT_OFFSET, 12600 },
+  { 0xfc56, G_UNICODE_NOT_PRESENT_OFFSET, 12605 },
+  { 0xfc57, G_UNICODE_NOT_PRESENT_OFFSET, 12610 },
+  { 0xfc58, G_UNICODE_NOT_PRESENT_OFFSET, 12615 },
+  { 0xfc59, G_UNICODE_NOT_PRESENT_OFFSET, 12620 },
+  { 0xfc5a, G_UNICODE_NOT_PRESENT_OFFSET, 12625 },
+  { 0xfc5b, G_UNICODE_NOT_PRESENT_OFFSET, 12630 },
+  { 0xfc5c, G_UNICODE_NOT_PRESENT_OFFSET, 12635 },
+  { 0xfc5d, G_UNICODE_NOT_PRESENT_OFFSET, 12640 },
+  { 0xfc5e, G_UNICODE_NOT_PRESENT_OFFSET, 12645 },
+  { 0xfc5f, G_UNICODE_NOT_PRESENT_OFFSET, 12651 },
+  { 0xfc60, G_UNICODE_NOT_PRESENT_OFFSET, 12657 },
+  { 0xfc61, G_UNICODE_NOT_PRESENT_OFFSET, 12663 },
+  { 0xfc62, G_UNICODE_NOT_PRESENT_OFFSET, 12669 },
+  { 0xfc63, G_UNICODE_NOT_PRESENT_OFFSET, 12675 },
+  { 0xfc64, G_UNICODE_NOT_PRESENT_OFFSET, 12681 },
+  { 0xfc65, G_UNICODE_NOT_PRESENT_OFFSET, 12688 },
+  { 0xfc66, G_UNICODE_NOT_PRESENT_OFFSET, 12186 },
+  { 0xfc67, G_UNICODE_NOT_PRESENT_OFFSET, 12695 },
+  { 0xfc68, G_UNICODE_NOT_PRESENT_OFFSET, 12162 },
+  { 0xfc69, G_UNICODE_NOT_PRESENT_OFFSET, 12193 },
+  { 0xfc6a, G_UNICODE_NOT_PRESENT_OFFSET, 12702 },
+  { 0xfc6b, G_UNICODE_NOT_PRESENT_OFFSET, 12707 },
+  { 0xfc6c, G_UNICODE_NOT_PRESENT_OFFSET, 12215 },
+  { 0xfc6d, G_UNICODE_NOT_PRESENT_OFFSET, 12712 },
+  { 0xfc6e, G_UNICODE_NOT_PRESENT_OFFSET, 12220 },
+  { 0xfc6f, G_UNICODE_NOT_PRESENT_OFFSET, 12225 },
+  { 0xfc70, G_UNICODE_NOT_PRESENT_OFFSET, 12717 },
+  { 0xfc71, G_UNICODE_NOT_PRESENT_OFFSET, 12722 },
+  { 0xfc72, G_UNICODE_NOT_PRESENT_OFFSET, 12245 },
+  { 0xfc73, G_UNICODE_NOT_PRESENT_OFFSET, 12727 },
+  { 0xfc74, G_UNICODE_NOT_PRESENT_OFFSET, 12250 },
+  { 0xfc75, G_UNICODE_NOT_PRESENT_OFFSET, 12255 },
+  { 0xfc76, G_UNICODE_NOT_PRESENT_OFFSET, 12732 },
+  { 0xfc77, G_UNICODE_NOT_PRESENT_OFFSET, 12737 },
+  { 0xfc78, G_UNICODE_NOT_PRESENT_OFFSET, 12265 },
+  { 0xfc79, G_UNICODE_NOT_PRESENT_OFFSET, 12742 },
+  { 0xfc7a, G_UNICODE_NOT_PRESENT_OFFSET, 12270 },
+  { 0xfc7b, G_UNICODE_NOT_PRESENT_OFFSET, 12275 },
+  { 0xfc7c, G_UNICODE_NOT_PRESENT_OFFSET, 12420 },
+  { 0xfc7d, G_UNICODE_NOT_PRESENT_OFFSET, 12425 },
+  { 0xfc7e, G_UNICODE_NOT_PRESENT_OFFSET, 12440 },
+  { 0xfc7f, G_UNICODE_NOT_PRESENT_OFFSET, 12445 },
+  { 0xfc80, G_UNICODE_NOT_PRESENT_OFFSET, 12450 },
+  { 0xfc81, G_UNICODE_NOT_PRESENT_OFFSET, 12470 },
+  { 0xfc82, G_UNICODE_NOT_PRESENT_OFFSET, 12475 },
+  { 0xfc83, G_UNICODE_NOT_PRESENT_OFFSET, 12480 },
+  { 0xfc84, G_UNICODE_NOT_PRESENT_OFFSET, 12485 },
+  { 0xfc85, G_UNICODE_NOT_PRESENT_OFFSET, 12505 },
+  { 0xfc86, G_UNICODE_NOT_PRESENT_OFFSET, 12510 },
+  { 0xfc87, G_UNICODE_NOT_PRESENT_OFFSET, 12515 },
+  { 0xfc88, G_UNICODE_NOT_PRESENT_OFFSET, 12747 },
+  { 0xfc89, G_UNICODE_NOT_PRESENT_OFFSET, 12535 },
+  { 0xfc8a, G_UNICODE_NOT_PRESENT_OFFSET, 12752 },
+  { 0xfc8b, G_UNICODE_NOT_PRESENT_OFFSET, 12757 },
+  { 0xfc8c, G_UNICODE_NOT_PRESENT_OFFSET, 12565 },
+  { 0xfc8d, G_UNICODE_NOT_PRESENT_OFFSET, 12762 },
+  { 0xfc8e, G_UNICODE_NOT_PRESENT_OFFSET, 12570 },
+  { 0xfc8f, G_UNICODE_NOT_PRESENT_OFFSET, 12575 },
+  { 0xfc90, G_UNICODE_NOT_PRESENT_OFFSET, 12640 },
+  { 0xfc91, G_UNICODE_NOT_PRESENT_OFFSET, 12767 },
+  { 0xfc92, G_UNICODE_NOT_PRESENT_OFFSET, 12772 },
+  { 0xfc93, G_UNICODE_NOT_PRESENT_OFFSET, 12615 },
+  { 0xfc94, G_UNICODE_NOT_PRESENT_OFFSET, 12777 },
+  { 0xfc95, G_UNICODE_NOT_PRESENT_OFFSET, 12620 },
+  { 0xfc96, G_UNICODE_NOT_PRESENT_OFFSET, 12625 },
+  { 0xfc97, G_UNICODE_NOT_PRESENT_OFFSET, 12172 },
+  { 0xfc98, G_UNICODE_NOT_PRESENT_OFFSET, 12179 },
+  { 0xfc99, G_UNICODE_NOT_PRESENT_OFFSET, 12782 },
+  { 0xfc9a, G_UNICODE_NOT_PRESENT_OFFSET, 12186 },
+  { 0xfc9b, G_UNICODE_NOT_PRESENT_OFFSET, 12789 },
+  { 0xfc9c, G_UNICODE_NOT_PRESENT_OFFSET, 12200 },
+  { 0xfc9d, G_UNICODE_NOT_PRESENT_OFFSET, 12205 },
+  { 0xfc9e, G_UNICODE_NOT_PRESENT_OFFSET, 12210 },
+  { 0xfc9f, G_UNICODE_NOT_PRESENT_OFFSET, 12215 },
+  { 0xfca0, G_UNICODE_NOT_PRESENT_OFFSET, 12796 },
+  { 0xfca1, G_UNICODE_NOT_PRESENT_OFFSET, 12230 },
+  { 0xfca2, G_UNICODE_NOT_PRESENT_OFFSET, 12235 },
+  { 0xfca3, G_UNICODE_NOT_PRESENT_OFFSET, 12240 },
+  { 0xfca4, G_UNICODE_NOT_PRESENT_OFFSET, 12245 },
+  { 0xfca5, G_UNICODE_NOT_PRESENT_OFFSET, 12801 },
+  { 0xfca6, G_UNICODE_NOT_PRESENT_OFFSET, 12265 },
+  { 0xfca7, G_UNICODE_NOT_PRESENT_OFFSET, 12280 },
+  { 0xfca8, G_UNICODE_NOT_PRESENT_OFFSET, 12285 },
+  { 0xfca9, G_UNICODE_NOT_PRESENT_OFFSET, 12290 },
+  { 0xfcaa, G_UNICODE_NOT_PRESENT_OFFSET, 12295 },
+  { 0xfcab, G_UNICODE_NOT_PRESENT_OFFSET, 12300 },
+  { 0xfcac, G_UNICODE_NOT_PRESENT_OFFSET, 12310 },
+  { 0xfcad, G_UNICODE_NOT_PRESENT_OFFSET, 12315 },
+  { 0xfcae, G_UNICODE_NOT_PRESENT_OFFSET, 12320 },
+  { 0xfcaf, G_UNICODE_NOT_PRESENT_OFFSET, 12325 },
+  { 0xfcb0, G_UNICODE_NOT_PRESENT_OFFSET, 12330 },
+  { 0xfcb1, G_UNICODE_NOT_PRESENT_OFFSET, 12335 },
+  { 0xfcb2, G_UNICODE_NOT_PRESENT_OFFSET, 12806 },
+  { 0xfcb3, G_UNICODE_NOT_PRESENT_OFFSET, 12340 },
+  { 0xfcb4, G_UNICODE_NOT_PRESENT_OFFSET, 12345 },
+  { 0xfcb5, G_UNICODE_NOT_PRESENT_OFFSET, 12350 },
+  { 0xfcb6, G_UNICODE_NOT_PRESENT_OFFSET, 12355 },
+  { 0xfcb7, G_UNICODE_NOT_PRESENT_OFFSET, 12360 },
+  { 0xfcb8, G_UNICODE_NOT_PRESENT_OFFSET, 12365 },
+  { 0xfcb9, G_UNICODE_NOT_PRESENT_OFFSET, 12375 },
+  { 0xfcba, G_UNICODE_NOT_PRESENT_OFFSET, 12380 },
+  { 0xfcbb, G_UNICODE_NOT_PRESENT_OFFSET, 12385 },
+  { 0xfcbc, G_UNICODE_NOT_PRESENT_OFFSET, 12390 },
+  { 0xfcbd, G_UNICODE_NOT_PRESENT_OFFSET, 12395 },
+  { 0xfcbe, G_UNICODE_NOT_PRESENT_OFFSET, 12400 },
+  { 0xfcbf, G_UNICODE_NOT_PRESENT_OFFSET, 12405 },
+  { 0xfcc0, G_UNICODE_NOT_PRESENT_OFFSET, 12410 },
+  { 0xfcc1, G_UNICODE_NOT_PRESENT_OFFSET, 12415 },
+  { 0xfcc2, G_UNICODE_NOT_PRESENT_OFFSET, 12430 },
+  { 0xfcc3, G_UNICODE_NOT_PRESENT_OFFSET, 12435 },
+  { 0xfcc4, G_UNICODE_NOT_PRESENT_OFFSET, 12455 },
+  { 0xfcc5, G_UNICODE_NOT_PRESENT_OFFSET, 12460 },
+  { 0xfcc6, G_UNICODE_NOT_PRESENT_OFFSET, 12465 },
+  { 0xfcc7, G_UNICODE_NOT_PRESENT_OFFSET, 12470 },
+  { 0xfcc8, G_UNICODE_NOT_PRESENT_OFFSET, 12475 },
+  { 0xfcc9, G_UNICODE_NOT_PRESENT_OFFSET, 12490 },
+  { 0xfcca, G_UNICODE_NOT_PRESENT_OFFSET, 12495 },
+  { 0xfccb, G_UNICODE_NOT_PRESENT_OFFSET, 12500 },
+  { 0xfccc, G_UNICODE_NOT_PRESENT_OFFSET, 12505 },
+  { 0xfccd, G_UNICODE_NOT_PRESENT_OFFSET, 12811 },
+  { 0xfcce, G_UNICODE_NOT_PRESENT_OFFSET, 12520 },
+  { 0xfccf, G_UNICODE_NOT_PRESENT_OFFSET, 12525 },
+  { 0xfcd0, G_UNICODE_NOT_PRESENT_OFFSET, 12530 },
+  { 0xfcd1, G_UNICODE_NOT_PRESENT_OFFSET, 12535 },
+  { 0xfcd2, G_UNICODE_NOT_PRESENT_OFFSET, 12550 },
+  { 0xfcd3, G_UNICODE_NOT_PRESENT_OFFSET, 12555 },
+  { 0xfcd4, G_UNICODE_NOT_PRESENT_OFFSET, 12560 },
+  { 0xfcd5, G_UNICODE_NOT_PRESENT_OFFSET, 12565 },
+  { 0xfcd6, G_UNICODE_NOT_PRESENT_OFFSET, 12816 },
+  { 0xfcd7, G_UNICODE_NOT_PRESENT_OFFSET, 12580 },
+  { 0xfcd8, G_UNICODE_NOT_PRESENT_OFFSET, 12585 },
+  { 0xfcd9, G_UNICODE_NOT_PRESENT_OFFSET, 12821 },
+  { 0xfcda, G_UNICODE_NOT_PRESENT_OFFSET, 12600 },
+  { 0xfcdb, G_UNICODE_NOT_PRESENT_OFFSET, 12605 },
+  { 0xfcdc, G_UNICODE_NOT_PRESENT_OFFSET, 12610 },
+  { 0xfcdd, G_UNICODE_NOT_PRESENT_OFFSET, 12615 },
+  { 0xfcde, G_UNICODE_NOT_PRESENT_OFFSET, 12826 },
+  { 0xfcdf, G_UNICODE_NOT_PRESENT_OFFSET, 12186 },
+  { 0xfce0, G_UNICODE_NOT_PRESENT_OFFSET, 12789 },
+  { 0xfce1, G_UNICODE_NOT_PRESENT_OFFSET, 12215 },
+  { 0xfce2, G_UNICODE_NOT_PRESENT_OFFSET, 12796 },
+  { 0xfce3, G_UNICODE_NOT_PRESENT_OFFSET, 12245 },
+  { 0xfce4, G_UNICODE_NOT_PRESENT_OFFSET, 12801 },
+  { 0xfce5, G_UNICODE_NOT_PRESENT_OFFSET, 12265 },
+  { 0xfce6, G_UNICODE_NOT_PRESENT_OFFSET, 12831 },
+  { 0xfce7, G_UNICODE_NOT_PRESENT_OFFSET, 12330 },
+  { 0xfce8, G_UNICODE_NOT_PRESENT_OFFSET, 12836 },
+  { 0xfce9, G_UNICODE_NOT_PRESENT_OFFSET, 12841 },
+  { 0xfcea, G_UNICODE_NOT_PRESENT_OFFSET, 12846 },
+  { 0xfceb, G_UNICODE_NOT_PRESENT_OFFSET, 12470 },
+  { 0xfcec, G_UNICODE_NOT_PRESENT_OFFSET, 12475 },
+  { 0xfced, G_UNICODE_NOT_PRESENT_OFFSET, 12505 },
+  { 0xfcee, G_UNICODE_NOT_PRESENT_OFFSET, 12565 },
+  { 0xfcef, G_UNICODE_NOT_PRESENT_OFFSET, 12816 },
+  { 0xfcf0, G_UNICODE_NOT_PRESENT_OFFSET, 12615 },
+  { 0xfcf1, G_UNICODE_NOT_PRESENT_OFFSET, 12826 },
+  { 0xfcf2, G_UNICODE_NOT_PRESENT_OFFSET, 12851 },
+  { 0xfcf3, G_UNICODE_NOT_PRESENT_OFFSET, 12858 },
+  { 0xfcf4, G_UNICODE_NOT_PRESENT_OFFSET, 12865 },
+  { 0xfcf5, G_UNICODE_NOT_PRESENT_OFFSET, 12872 },
+  { 0xfcf6, G_UNICODE_NOT_PRESENT_OFFSET, 12877 },
+  { 0xfcf7, G_UNICODE_NOT_PRESENT_OFFSET, 12882 },
+  { 0xfcf8, G_UNICODE_NOT_PRESENT_OFFSET, 12887 },
+  { 0xfcf9, G_UNICODE_NOT_PRESENT_OFFSET, 12892 },
+  { 0xfcfa, G_UNICODE_NOT_PRESENT_OFFSET, 12897 },
+  { 0xfcfb, G_UNICODE_NOT_PRESENT_OFFSET, 12902 },
+  { 0xfcfc, G_UNICODE_NOT_PRESENT_OFFSET, 12907 },
+  { 0xfcfd, G_UNICODE_NOT_PRESENT_OFFSET, 12912 },
+  { 0xfcfe, G_UNICODE_NOT_PRESENT_OFFSET, 12917 },
+  { 0xfcff, G_UNICODE_NOT_PRESENT_OFFSET, 12922 },
+  { 0xfd00, G_UNICODE_NOT_PRESENT_OFFSET, 12927 },
+  { 0xfd01, G_UNICODE_NOT_PRESENT_OFFSET, 12932 },
+  { 0xfd02, G_UNICODE_NOT_PRESENT_OFFSET, 12937 },
+  { 0xfd03, G_UNICODE_NOT_PRESENT_OFFSET, 12942 },
+  { 0xfd04, G_UNICODE_NOT_PRESENT_OFFSET, 12947 },
+  { 0xfd05, G_UNICODE_NOT_PRESENT_OFFSET, 12952 },
+  { 0xfd06, G_UNICODE_NOT_PRESENT_OFFSET, 12957 },
+  { 0xfd07, G_UNICODE_NOT_PRESENT_OFFSET, 12962 },
+  { 0xfd08, G_UNICODE_NOT_PRESENT_OFFSET, 12967 },
+  { 0xfd09, G_UNICODE_NOT_PRESENT_OFFSET, 12972 },
+  { 0xfd0a, G_UNICODE_NOT_PRESENT_OFFSET, 12977 },
+  { 0xfd0b, G_UNICODE_NOT_PRESENT_OFFSET, 12982 },
+  { 0xfd0c, G_UNICODE_NOT_PRESENT_OFFSET, 12841 },
+  { 0xfd0d, G_UNICODE_NOT_PRESENT_OFFSET, 12987 },
+  { 0xfd0e, G_UNICODE_NOT_PRESENT_OFFSET, 12992 },
+  { 0xfd0f, G_UNICODE_NOT_PRESENT_OFFSET, 12997 },
+  { 0xfd10, G_UNICODE_NOT_PRESENT_OFFSET, 13002 },
+  { 0xfd11, G_UNICODE_NOT_PRESENT_OFFSET, 12872 },
+  { 0xfd12, G_UNICODE_NOT_PRESENT_OFFSET, 12877 },
+  { 0xfd13, G_UNICODE_NOT_PRESENT_OFFSET, 12882 },
+  { 0xfd14, G_UNICODE_NOT_PRESENT_OFFSET, 12887 },
+  { 0xfd15, G_UNICODE_NOT_PRESENT_OFFSET, 12892 },
+  { 0xfd16, G_UNICODE_NOT_PRESENT_OFFSET, 12897 },
+  { 0xfd17, G_UNICODE_NOT_PRESENT_OFFSET, 12902 },
+  { 0xfd18, G_UNICODE_NOT_PRESENT_OFFSET, 12907 },
+  { 0xfd19, G_UNICODE_NOT_PRESENT_OFFSET, 12912 },
+  { 0xfd1a, G_UNICODE_NOT_PRESENT_OFFSET, 12917 },
+  { 0xfd1b, G_UNICODE_NOT_PRESENT_OFFSET, 12922 },
+  { 0xfd1c, G_UNICODE_NOT_PRESENT_OFFSET, 12927 },
+  { 0xfd1d, G_UNICODE_NOT_PRESENT_OFFSET, 12932 },
+  { 0xfd1e, G_UNICODE_NOT_PRESENT_OFFSET, 12937 },
+  { 0xfd1f, G_UNICODE_NOT_PRESENT_OFFSET, 12942 },
+  { 0xfd20, G_UNICODE_NOT_PRESENT_OFFSET, 12947 },
+  { 0xfd21, G_UNICODE_NOT_PRESENT_OFFSET, 12952 },
+  { 0xfd22, G_UNICODE_NOT_PRESENT_OFFSET, 12957 },
+  { 0xfd23, G_UNICODE_NOT_PRESENT_OFFSET, 12962 },
+  { 0xfd24, G_UNICODE_NOT_PRESENT_OFFSET, 12967 },
+  { 0xfd25, G_UNICODE_NOT_PRESENT_OFFSET, 12972 },
+  { 0xfd26, G_UNICODE_NOT_PRESENT_OFFSET, 12977 },
+  { 0xfd27, G_UNICODE_NOT_PRESENT_OFFSET, 12982 },
+  { 0xfd28, G_UNICODE_NOT_PRESENT_OFFSET, 12841 },
+  { 0xfd29, G_UNICODE_NOT_PRESENT_OFFSET, 12987 },
+  { 0xfd2a, G_UNICODE_NOT_PRESENT_OFFSET, 12992 },
+  { 0xfd2b, G_UNICODE_NOT_PRESENT_OFFSET, 12997 },
+  { 0xfd2c, G_UNICODE_NOT_PRESENT_OFFSET, 13002 },
+  { 0xfd2d, G_UNICODE_NOT_PRESENT_OFFSET, 12972 },
+  { 0xfd2e, G_UNICODE_NOT_PRESENT_OFFSET, 12977 },
+  { 0xfd2f, G_UNICODE_NOT_PRESENT_OFFSET, 12982 },
+  { 0xfd30, G_UNICODE_NOT_PRESENT_OFFSET, 12841 },
+  { 0xfd31, G_UNICODE_NOT_PRESENT_OFFSET, 12836 },
+  { 0xfd32, G_UNICODE_NOT_PRESENT_OFFSET, 12846 },
+  { 0xfd33, G_UNICODE_NOT_PRESENT_OFFSET, 12370 },
+  { 0xfd34, G_UNICODE_NOT_PRESENT_OFFSET, 12315 },
+  { 0xfd35, G_UNICODE_NOT_PRESENT_OFFSET, 12320 },
+  { 0xfd36, G_UNICODE_NOT_PRESENT_OFFSET, 12325 },
+  { 0xfd37, G_UNICODE_NOT_PRESENT_OFFSET, 12972 },
+  { 0xfd38, G_UNICODE_NOT_PRESENT_OFFSET, 12977 },
+  { 0xfd39, G_UNICODE_NOT_PRESENT_OFFSET, 12982 },
+  { 0xfd3a, G_UNICODE_NOT_PRESENT_OFFSET, 12370 },
+  { 0xfd3b, G_UNICODE_NOT_PRESENT_OFFSET, 12375 },
+  { 0xfd3c, G_UNICODE_NOT_PRESENT_OFFSET, 13007 },
+  { 0xfd3d, G_UNICODE_NOT_PRESENT_OFFSET, 13007 },
+  { 0xfd50, G_UNICODE_NOT_PRESENT_OFFSET, 13012 },
+  { 0xfd51, G_UNICODE_NOT_PRESENT_OFFSET, 13019 },
+  { 0xfd52, G_UNICODE_NOT_PRESENT_OFFSET, 13019 },
+  { 0xfd53, G_UNICODE_NOT_PRESENT_OFFSET, 13026 },
+  { 0xfd54, G_UNICODE_NOT_PRESENT_OFFSET, 13033 },
+  { 0xfd55, G_UNICODE_NOT_PRESENT_OFFSET, 13040 },
+  { 0xfd56, G_UNICODE_NOT_PRESENT_OFFSET, 13047 },
+  { 0xfd57, G_UNICODE_NOT_PRESENT_OFFSET, 13054 },
+  { 0xfd58, G_UNICODE_NOT_PRESENT_OFFSET, 13061 },
+  { 0xfd59, G_UNICODE_NOT_PRESENT_OFFSET, 13061 },
+  { 0xfd5a, G_UNICODE_NOT_PRESENT_OFFSET, 13068 },
+  { 0xfd5b, G_UNICODE_NOT_PRESENT_OFFSET, 13075 },
+  { 0xfd5c, G_UNICODE_NOT_PRESENT_OFFSET, 13082 },
+  { 0xfd5d, G_UNICODE_NOT_PRESENT_OFFSET, 13089 },
+  { 0xfd5e, G_UNICODE_NOT_PRESENT_OFFSET, 13096 },
+  { 0xfd5f, G_UNICODE_NOT_PRESENT_OFFSET, 13103 },
+  { 0xfd60, G_UNICODE_NOT_PRESENT_OFFSET, 13103 },
+  { 0xfd61, G_UNICODE_NOT_PRESENT_OFFSET, 13110 },
+  { 0xfd62, G_UNICODE_NOT_PRESENT_OFFSET, 13117 },
+  { 0xfd63, G_UNICODE_NOT_PRESENT_OFFSET, 13117 },
+  { 0xfd64, G_UNICODE_NOT_PRESENT_OFFSET, 13124 },
+  { 0xfd65, G_UNICODE_NOT_PRESENT_OFFSET, 13124 },
+  { 0xfd66, G_UNICODE_NOT_PRESENT_OFFSET, 13131 },
+  { 0xfd67, G_UNICODE_NOT_PRESENT_OFFSET, 13138 },
+  { 0xfd68, G_UNICODE_NOT_PRESENT_OFFSET, 13138 },
+  { 0xfd69, G_UNICODE_NOT_PRESENT_OFFSET, 13145 },
+  { 0xfd6a, G_UNICODE_NOT_PRESENT_OFFSET, 13152 },
+  { 0xfd6b, G_UNICODE_NOT_PRESENT_OFFSET, 13152 },
+  { 0xfd6c, G_UNICODE_NOT_PRESENT_OFFSET, 13159 },
+  { 0xfd6d, G_UNICODE_NOT_PRESENT_OFFSET, 13159 },
+  { 0xfd6e, G_UNICODE_NOT_PRESENT_OFFSET, 13166 },
+  { 0xfd6f, G_UNICODE_NOT_PRESENT_OFFSET, 13173 },
+  { 0xfd70, G_UNICODE_NOT_PRESENT_OFFSET, 13173 },
+  { 0xfd71, G_UNICODE_NOT_PRESENT_OFFSET, 13180 },
+  { 0xfd72, G_UNICODE_NOT_PRESENT_OFFSET, 13180 },
+  { 0xfd73, G_UNICODE_NOT_PRESENT_OFFSET, 13187 },
+  { 0xfd74, G_UNICODE_NOT_PRESENT_OFFSET, 13194 },
+  { 0xfd75, G_UNICODE_NOT_PRESENT_OFFSET, 13201 },
+  { 0xfd76, G_UNICODE_NOT_PRESENT_OFFSET, 13208 },
+  { 0xfd77, G_UNICODE_NOT_PRESENT_OFFSET, 13208 },
+  { 0xfd78, G_UNICODE_NOT_PRESENT_OFFSET, 13215 },
+  { 0xfd79, G_UNICODE_NOT_PRESENT_OFFSET, 13222 },
+  { 0xfd7a, G_UNICODE_NOT_PRESENT_OFFSET, 13229 },
+  { 0xfd7b, G_UNICODE_NOT_PRESENT_OFFSET, 13236 },
+  { 0xfd7c, G_UNICODE_NOT_PRESENT_OFFSET, 13243 },
+  { 0xfd7d, G_UNICODE_NOT_PRESENT_OFFSET, 13243 },
+  { 0xfd7e, G_UNICODE_NOT_PRESENT_OFFSET, 13250 },
+  { 0xfd7f, G_UNICODE_NOT_PRESENT_OFFSET, 13257 },
+  { 0xfd80, G_UNICODE_NOT_PRESENT_OFFSET, 13264 },
+  { 0xfd81, G_UNICODE_NOT_PRESENT_OFFSET, 13271 },
+  { 0xfd82, G_UNICODE_NOT_PRESENT_OFFSET, 13278 },
+  { 0xfd83, G_UNICODE_NOT_PRESENT_OFFSET, 13285 },
+  { 0xfd84, G_UNICODE_NOT_PRESENT_OFFSET, 13285 },
+  { 0xfd85, G_UNICODE_NOT_PRESENT_OFFSET, 13292 },
+  { 0xfd86, G_UNICODE_NOT_PRESENT_OFFSET, 13292 },
+  { 0xfd87, G_UNICODE_NOT_PRESENT_OFFSET, 13299 },
+  { 0xfd88, G_UNICODE_NOT_PRESENT_OFFSET, 13299 },
+  { 0xfd89, G_UNICODE_NOT_PRESENT_OFFSET, 13306 },
+  { 0xfd8a, G_UNICODE_NOT_PRESENT_OFFSET, 13313 },
+  { 0xfd8b, G_UNICODE_NOT_PRESENT_OFFSET, 13320 },
+  { 0xfd8c, G_UNICODE_NOT_PRESENT_OFFSET, 13327 },
+  { 0xfd8d, G_UNICODE_NOT_PRESENT_OFFSET, 13334 },
+  { 0xfd8e, G_UNICODE_NOT_PRESENT_OFFSET, 13341 },
+  { 0xfd8f, G_UNICODE_NOT_PRESENT_OFFSET, 13348 },
+  { 0xfd92, G_UNICODE_NOT_PRESENT_OFFSET, 13355 },
+  { 0xfd93, G_UNICODE_NOT_PRESENT_OFFSET, 13362 },
+  { 0xfd94, G_UNICODE_NOT_PRESENT_OFFSET, 13369 },
+  { 0xfd95, G_UNICODE_NOT_PRESENT_OFFSET, 13376 },
+  { 0xfd96, G_UNICODE_NOT_PRESENT_OFFSET, 13383 },
+  { 0xfd97, G_UNICODE_NOT_PRESENT_OFFSET, 13390 },
+  { 0xfd98, G_UNICODE_NOT_PRESENT_OFFSET, 13390 },
+  { 0xfd99, G_UNICODE_NOT_PRESENT_OFFSET, 13397 },
+  { 0xfd9a, G_UNICODE_NOT_PRESENT_OFFSET, 13404 },
+  { 0xfd9b, G_UNICODE_NOT_PRESENT_OFFSET, 13411 },
+  { 0xfd9c, G_UNICODE_NOT_PRESENT_OFFSET, 13418 },
+  { 0xfd9d, G_UNICODE_NOT_PRESENT_OFFSET, 13418 },
+  { 0xfd9e, G_UNICODE_NOT_PRESENT_OFFSET, 13425 },
+  { 0xfd9f, G_UNICODE_NOT_PRESENT_OFFSET, 13432 },
+  { 0xfda0, G_UNICODE_NOT_PRESENT_OFFSET, 13439 },
+  { 0xfda1, G_UNICODE_NOT_PRESENT_OFFSET, 13446 },
+  { 0xfda2, G_UNICODE_NOT_PRESENT_OFFSET, 13453 },
+  { 0xfda3, G_UNICODE_NOT_PRESENT_OFFSET, 13460 },
+  { 0xfda4, G_UNICODE_NOT_PRESENT_OFFSET, 13467 },
+  { 0xfda5, G_UNICODE_NOT_PRESENT_OFFSET, 13474 },
+  { 0xfda6, G_UNICODE_NOT_PRESENT_OFFSET, 13481 },
+  { 0xfda7, G_UNICODE_NOT_PRESENT_OFFSET, 13488 },
+  { 0xfda8, G_UNICODE_NOT_PRESENT_OFFSET, 13495 },
+  { 0xfda9, G_UNICODE_NOT_PRESENT_OFFSET, 13502 },
+  { 0xfdaa, G_UNICODE_NOT_PRESENT_OFFSET, 13509 },
+  { 0xfdab, G_UNICODE_NOT_PRESENT_OFFSET, 13516 },
+  { 0xfdac, G_UNICODE_NOT_PRESENT_OFFSET, 13523 },
+  { 0xfdad, G_UNICODE_NOT_PRESENT_OFFSET, 13530 },
+  { 0xfdae, G_UNICODE_NOT_PRESENT_OFFSET, 13537 },
+  { 0xfdaf, G_UNICODE_NOT_PRESENT_OFFSET, 13544 },
+  { 0xfdb0, G_UNICODE_NOT_PRESENT_OFFSET, 13551 },
+  { 0xfdb1, G_UNICODE_NOT_PRESENT_OFFSET, 13558 },
+  { 0xfdb2, G_UNICODE_NOT_PRESENT_OFFSET, 13565 },
+  { 0xfdb3, G_UNICODE_NOT_PRESENT_OFFSET, 13572 },
+  { 0xfdb4, G_UNICODE_NOT_PRESENT_OFFSET, 13250 },
+  { 0xfdb5, G_UNICODE_NOT_PRESENT_OFFSET, 13264 },
+  { 0xfdb6, G_UNICODE_NOT_PRESENT_OFFSET, 13579 },
+  { 0xfdb7, G_UNICODE_NOT_PRESENT_OFFSET, 13586 },
+  { 0xfdb8, G_UNICODE_NOT_PRESENT_OFFSET, 13593 },
+  { 0xfdb9, G_UNICODE_NOT_PRESENT_OFFSET, 13600 },
+  { 0xfdba, G_UNICODE_NOT_PRESENT_OFFSET, 13607 },
+  { 0xfdbb, G_UNICODE_NOT_PRESENT_OFFSET, 13614 },
+  { 0xfdbc, G_UNICODE_NOT_PRESENT_OFFSET, 13607 },
+  { 0xfdbd, G_UNICODE_NOT_PRESENT_OFFSET, 13593 },
+  { 0xfdbe, G_UNICODE_NOT_PRESENT_OFFSET, 13621 },
+  { 0xfdbf, G_UNICODE_NOT_PRESENT_OFFSET, 13628 },
+  { 0xfdc0, G_UNICODE_NOT_PRESENT_OFFSET, 13635 },
+  { 0xfdc1, G_UNICODE_NOT_PRESENT_OFFSET, 13642 },
+  { 0xfdc2, G_UNICODE_NOT_PRESENT_OFFSET, 13649 },
+  { 0xfdc3, G_UNICODE_NOT_PRESENT_OFFSET, 13614 },
+  { 0xfdc4, G_UNICODE_NOT_PRESENT_OFFSET, 13201 },
+  { 0xfdc5, G_UNICODE_NOT_PRESENT_OFFSET, 13131 },
+  { 0xfdc6, G_UNICODE_NOT_PRESENT_OFFSET, 13656 },
+  { 0xfdc7, G_UNICODE_NOT_PRESENT_OFFSET, 13663 },
+  { 0xfdf0, G_UNICODE_NOT_PRESENT_OFFSET, 13670 },
+  { 0xfdf1, G_UNICODE_NOT_PRESENT_OFFSET, 13677 },
+  { 0xfdf2, G_UNICODE_NOT_PRESENT_OFFSET, 13684 },
+  { 0xfdf3, G_UNICODE_NOT_PRESENT_OFFSET, 13693 },
+  { 0xfdf4, G_UNICODE_NOT_PRESENT_OFFSET, 13702 },
+  { 0xfdf5, G_UNICODE_NOT_PRESENT_OFFSET, 13711 },
+  { 0xfdf6, G_UNICODE_NOT_PRESENT_OFFSET, 13720 },
+  { 0xfdf7, G_UNICODE_NOT_PRESENT_OFFSET, 13729 },
+  { 0xfdf8, G_UNICODE_NOT_PRESENT_OFFSET, 13738 },
+  { 0xfdf9, G_UNICODE_NOT_PRESENT_OFFSET, 13747 },
+  { 0xfdfa, G_UNICODE_NOT_PRESENT_OFFSET, 13754 },
+  { 0xfdfb, G_UNICODE_NOT_PRESENT_OFFSET, 13788 },
+  { 0xfdfc, G_UNICODE_NOT_PRESENT_OFFSET, 13804 },
+  { 0xfe30, G_UNICODE_NOT_PRESENT_OFFSET, 4871 },
+  { 0xfe31, G_UNICODE_NOT_PRESENT_OFFSET, 13813 },
+  { 0xfe32, G_UNICODE_NOT_PRESENT_OFFSET, 13817 },
+  { 0xfe33, G_UNICODE_NOT_PRESENT_OFFSET, 13821 },
+  { 0xfe34, G_UNICODE_NOT_PRESENT_OFFSET, 13821 },
+  { 0xfe35, G_UNICODE_NOT_PRESENT_OFFSET, 4965 },
+  { 0xfe36, G_UNICODE_NOT_PRESENT_OFFSET, 4967 },
+  { 0xfe37, G_UNICODE_NOT_PRESENT_OFFSET, 13823 },
+  { 0xfe38, G_UNICODE_NOT_PRESENT_OFFSET, 13825 },
+  { 0xfe39, G_UNICODE_NOT_PRESENT_OFFSET, 13827 },
+  { 0xfe3a, G_UNICODE_NOT_PRESENT_OFFSET, 13831 },
+  { 0xfe3b, G_UNICODE_NOT_PRESENT_OFFSET, 13835 },
+  { 0xfe3c, G_UNICODE_NOT_PRESENT_OFFSET, 13839 },
+  { 0xfe3d, G_UNICODE_NOT_PRESENT_OFFSET, 13843 },
+  { 0xfe3e, G_UNICODE_NOT_PRESENT_OFFSET, 13847 },
+  { 0xfe3f, G_UNICODE_NOT_PRESENT_OFFSET, 5524 },
+  { 0xfe40, G_UNICODE_NOT_PRESENT_OFFSET, 5528 },
+  { 0xfe41, G_UNICODE_NOT_PRESENT_OFFSET, 13851 },
+  { 0xfe42, G_UNICODE_NOT_PRESENT_OFFSET, 13855 },
+  { 0xfe43, G_UNICODE_NOT_PRESENT_OFFSET, 13859 },
+  { 0xfe44, G_UNICODE_NOT_PRESENT_OFFSET, 13863 },
+  { 0xfe49, G_UNICODE_NOT_PRESENT_OFFSET, 4915 },
+  { 0xfe4a, G_UNICODE_NOT_PRESENT_OFFSET, 4915 },
+  { 0xfe4b, G_UNICODE_NOT_PRESENT_OFFSET, 4915 },
+  { 0xfe4c, G_UNICODE_NOT_PRESENT_OFFSET, 4915 },
+  { 0xfe4d, G_UNICODE_NOT_PRESENT_OFFSET, 13821 },
+  { 0xfe4e, G_UNICODE_NOT_PRESENT_OFFSET, 13821 },
+  { 0xfe4f, G_UNICODE_NOT_PRESENT_OFFSET, 13821 },
+  { 0xfe50, G_UNICODE_NOT_PRESENT_OFFSET, 13867 },
+  { 0xfe51, G_UNICODE_NOT_PRESENT_OFFSET, 13869 },
+  { 0xfe52, G_UNICODE_NOT_PRESENT_OFFSET, 4869 },
+  { 0xfe54, G_UNICODE_NOT_PRESENT_OFFSET, 1248 },
+  { 0xfe55, G_UNICODE_NOT_PRESENT_OFFSET, 13873 },
+  { 0xfe56, G_UNICODE_NOT_PRESENT_OFFSET, 13875 },
+  { 0xfe57, G_UNICODE_NOT_PRESENT_OFFSET, 13877 },
+  { 0xfe58, G_UNICODE_NOT_PRESENT_OFFSET, 13813 },
+  { 0xfe59, G_UNICODE_NOT_PRESENT_OFFSET, 4965 },
+  { 0xfe5a, G_UNICODE_NOT_PRESENT_OFFSET, 4967 },
+  { 0xfe5b, G_UNICODE_NOT_PRESENT_OFFSET, 13823 },
+  { 0xfe5c, G_UNICODE_NOT_PRESENT_OFFSET, 13825 },
+  { 0xfe5d, G_UNICODE_NOT_PRESENT_OFFSET, 13827 },
+  { 0xfe5e, G_UNICODE_NOT_PRESENT_OFFSET, 13831 },
+  { 0xfe5f, G_UNICODE_NOT_PRESENT_OFFSET, 13879 },
+  { 0xfe60, G_UNICODE_NOT_PRESENT_OFFSET, 13881 },
+  { 0xfe61, G_UNICODE_NOT_PRESENT_OFFSET, 13883 },
+  { 0xfe62, G_UNICODE_NOT_PRESENT_OFFSET, 4957 },
+  { 0xfe63, G_UNICODE_NOT_PRESENT_OFFSET, 13885 },
+  { 0xfe64, G_UNICODE_NOT_PRESENT_OFFSET, 13887 },
+  { 0xfe65, G_UNICODE_NOT_PRESENT_OFFSET, 13889 },
+  { 0xfe66, G_UNICODE_NOT_PRESENT_OFFSET, 4963 },
+  { 0xfe68, G_UNICODE_NOT_PRESENT_OFFSET, 13891 },
+  { 0xfe69, G_UNICODE_NOT_PRESENT_OFFSET, 13893 },
+  { 0xfe6a, G_UNICODE_NOT_PRESENT_OFFSET, 13895 },
+  { 0xfe6b, G_UNICODE_NOT_PRESENT_OFFSET, 13897 },
+  { 0xfe70, G_UNICODE_NOT_PRESENT_OFFSET, 13899 },
+  { 0xfe71, G_UNICODE_NOT_PRESENT_OFFSET, 13903 },
+  { 0xfe72, G_UNICODE_NOT_PRESENT_OFFSET, 13908 },
+  { 0xfe74, G_UNICODE_NOT_PRESENT_OFFSET, 13912 },
+  { 0xfe76, G_UNICODE_NOT_PRESENT_OFFSET, 13916 },
+  { 0xfe77, G_UNICODE_NOT_PRESENT_OFFSET, 13920 },
+  { 0xfe78, G_UNICODE_NOT_PRESENT_OFFSET, 13925 },
+  { 0xfe79, G_UNICODE_NOT_PRESENT_OFFSET, 13929 },
+  { 0xfe7a, G_UNICODE_NOT_PRESENT_OFFSET, 13934 },
+  { 0xfe7b, G_UNICODE_NOT_PRESENT_OFFSET, 13938 },
+  { 0xfe7c, G_UNICODE_NOT_PRESENT_OFFSET, 13943 },
+  { 0xfe7d, G_UNICODE_NOT_PRESENT_OFFSET, 13947 },
+  { 0xfe7e, G_UNICODE_NOT_PRESENT_OFFSET, 13952 },
+  { 0xfe7f, G_UNICODE_NOT_PRESENT_OFFSET, 13956 },
+  { 0xfe80, G_UNICODE_NOT_PRESENT_OFFSET, 13961 },
+  { 0xfe81, G_UNICODE_NOT_PRESENT_OFFSET, 1673 },
+  { 0xfe82, G_UNICODE_NOT_PRESENT_OFFSET, 1673 },
+  { 0xfe83, G_UNICODE_NOT_PRESENT_OFFSET, 1678 },
+  { 0xfe84, G_UNICODE_NOT_PRESENT_OFFSET, 1678 },
+  { 0xfe85, G_UNICODE_NOT_PRESENT_OFFSET, 1683 },
+  { 0xfe86, G_UNICODE_NOT_PRESENT_OFFSET, 1683 },
+  { 0xfe87, G_UNICODE_NOT_PRESENT_OFFSET, 1688 },
+  { 0xfe88, G_UNICODE_NOT_PRESENT_OFFSET, 1688 },
+  { 0xfe89, G_UNICODE_NOT_PRESENT_OFFSET, 1693 },
+  { 0xfe8a, G_UNICODE_NOT_PRESENT_OFFSET, 1693 },
+  { 0xfe8b, G_UNICODE_NOT_PRESENT_OFFSET, 1693 },
+  { 0xfe8c, G_UNICODE_NOT_PRESENT_OFFSET, 1693 },
+  { 0xfe8d, G_UNICODE_NOT_PRESENT_OFFSET, 13964 },
+  { 0xfe8e, G_UNICODE_NOT_PRESENT_OFFSET, 13964 },
+  { 0xfe8f, G_UNICODE_NOT_PRESENT_OFFSET, 13967 },
+  { 0xfe90, G_UNICODE_NOT_PRESENT_OFFSET, 13967 },
+  { 0xfe91, G_UNICODE_NOT_PRESENT_OFFSET, 13967 },
+  { 0xfe92, G_UNICODE_NOT_PRESENT_OFFSET, 13967 },
+  { 0xfe93, G_UNICODE_NOT_PRESENT_OFFSET, 13970 },
+  { 0xfe94, G_UNICODE_NOT_PRESENT_OFFSET, 13970 },
+  { 0xfe95, G_UNICODE_NOT_PRESENT_OFFSET, 13973 },
+  { 0xfe96, G_UNICODE_NOT_PRESENT_OFFSET, 13973 },
+  { 0xfe97, G_UNICODE_NOT_PRESENT_OFFSET, 13973 },
+  { 0xfe98, G_UNICODE_NOT_PRESENT_OFFSET, 13973 },
+  { 0xfe99, G_UNICODE_NOT_PRESENT_OFFSET, 13976 },
+  { 0xfe9a, G_UNICODE_NOT_PRESENT_OFFSET, 13976 },
+  { 0xfe9b, G_UNICODE_NOT_PRESENT_OFFSET, 13976 },
+  { 0xfe9c, G_UNICODE_NOT_PRESENT_OFFSET, 13976 },
+  { 0xfe9d, G_UNICODE_NOT_PRESENT_OFFSET, 13979 },
+  { 0xfe9e, G_UNICODE_NOT_PRESENT_OFFSET, 13979 },
+  { 0xfe9f, G_UNICODE_NOT_PRESENT_OFFSET, 13979 },
+  { 0xfea0, G_UNICODE_NOT_PRESENT_OFFSET, 13979 },
+  { 0xfea1, G_UNICODE_NOT_PRESENT_OFFSET, 13982 },
+  { 0xfea2, G_UNICODE_NOT_PRESENT_OFFSET, 13982 },
+  { 0xfea3, G_UNICODE_NOT_PRESENT_OFFSET, 13982 },
+  { 0xfea4, G_UNICODE_NOT_PRESENT_OFFSET, 13982 },
+  { 0xfea5, G_UNICODE_NOT_PRESENT_OFFSET, 13985 },
+  { 0xfea6, G_UNICODE_NOT_PRESENT_OFFSET, 13985 },
+  { 0xfea7, G_UNICODE_NOT_PRESENT_OFFSET, 13985 },
+  { 0xfea8, G_UNICODE_NOT_PRESENT_OFFSET, 13985 },
+  { 0xfea9, G_UNICODE_NOT_PRESENT_OFFSET, 13988 },
+  { 0xfeaa, G_UNICODE_NOT_PRESENT_OFFSET, 13988 },
+  { 0xfeab, G_UNICODE_NOT_PRESENT_OFFSET, 13991 },
+  { 0xfeac, G_UNICODE_NOT_PRESENT_OFFSET, 13991 },
+  { 0xfead, G_UNICODE_NOT_PRESENT_OFFSET, 13994 },
+  { 0xfeae, G_UNICODE_NOT_PRESENT_OFFSET, 13994 },
+  { 0xfeaf, G_UNICODE_NOT_PRESENT_OFFSET, 13997 },
+  { 0xfeb0, G_UNICODE_NOT_PRESENT_OFFSET, 13997 },
+  { 0xfeb1, G_UNICODE_NOT_PRESENT_OFFSET, 14000 },
+  { 0xfeb2, G_UNICODE_NOT_PRESENT_OFFSET, 14000 },
+  { 0xfeb3, G_UNICODE_NOT_PRESENT_OFFSET, 14000 },
+  { 0xfeb4, G_UNICODE_NOT_PRESENT_OFFSET, 14000 },
+  { 0xfeb5, G_UNICODE_NOT_PRESENT_OFFSET, 14003 },
+  { 0xfeb6, G_UNICODE_NOT_PRESENT_OFFSET, 14003 },
+  { 0xfeb7, G_UNICODE_NOT_PRESENT_OFFSET, 14003 },
+  { 0xfeb8, G_UNICODE_NOT_PRESENT_OFFSET, 14003 },
+  { 0xfeb9, G_UNICODE_NOT_PRESENT_OFFSET, 14006 },
+  { 0xfeba, G_UNICODE_NOT_PRESENT_OFFSET, 14006 },
+  { 0xfebb, G_UNICODE_NOT_PRESENT_OFFSET, 14006 },
+  { 0xfebc, G_UNICODE_NOT_PRESENT_OFFSET, 14006 },
+  { 0xfebd, G_UNICODE_NOT_PRESENT_OFFSET, 14009 },
+  { 0xfebe, G_UNICODE_NOT_PRESENT_OFFSET, 14009 },
+  { 0xfebf, G_UNICODE_NOT_PRESENT_OFFSET, 14009 },
+  { 0xfec0, G_UNICODE_NOT_PRESENT_OFFSET, 14009 },
+  { 0xfec1, G_UNICODE_NOT_PRESENT_OFFSET, 14012 },
+  { 0xfec2, G_UNICODE_NOT_PRESENT_OFFSET, 14012 },
+  { 0xfec3, G_UNICODE_NOT_PRESENT_OFFSET, 14012 },
+  { 0xfec4, G_UNICODE_NOT_PRESENT_OFFSET, 14012 },
+  { 0xfec5, G_UNICODE_NOT_PRESENT_OFFSET, 14015 },
+  { 0xfec6, G_UNICODE_NOT_PRESENT_OFFSET, 14015 },
+  { 0xfec7, G_UNICODE_NOT_PRESENT_OFFSET, 14015 },
+  { 0xfec8, G_UNICODE_NOT_PRESENT_OFFSET, 14015 },
+  { 0xfec9, G_UNICODE_NOT_PRESENT_OFFSET, 14018 },
+  { 0xfeca, G_UNICODE_NOT_PRESENT_OFFSET, 14018 },
+  { 0xfecb, G_UNICODE_NOT_PRESENT_OFFSET, 14018 },
+  { 0xfecc, G_UNICODE_NOT_PRESENT_OFFSET, 14018 },
+  { 0xfecd, G_UNICODE_NOT_PRESENT_OFFSET, 14021 },
+  { 0xfece, G_UNICODE_NOT_PRESENT_OFFSET, 14021 },
+  { 0xfecf, G_UNICODE_NOT_PRESENT_OFFSET, 14021 },
+  { 0xfed0, G_UNICODE_NOT_PRESENT_OFFSET, 14021 },
+  { 0xfed1, G_UNICODE_NOT_PRESENT_OFFSET, 14024 },
+  { 0xfed2, G_UNICODE_NOT_PRESENT_OFFSET, 14024 },
+  { 0xfed3, G_UNICODE_NOT_PRESENT_OFFSET, 14024 },
+  { 0xfed4, G_UNICODE_NOT_PRESENT_OFFSET, 14024 },
+  { 0xfed5, G_UNICODE_NOT_PRESENT_OFFSET, 14027 },
+  { 0xfed6, G_UNICODE_NOT_PRESENT_OFFSET, 14027 },
+  { 0xfed7, G_UNICODE_NOT_PRESENT_OFFSET, 14027 },
+  { 0xfed8, G_UNICODE_NOT_PRESENT_OFFSET, 14027 },
+  { 0xfed9, G_UNICODE_NOT_PRESENT_OFFSET, 14030 },
+  { 0xfeda, G_UNICODE_NOT_PRESENT_OFFSET, 14030 },
+  { 0xfedb, G_UNICODE_NOT_PRESENT_OFFSET, 14030 },
+  { 0xfedc, G_UNICODE_NOT_PRESENT_OFFSET, 14030 },
+  { 0xfedd, G_UNICODE_NOT_PRESENT_OFFSET, 14033 },
+  { 0xfede, G_UNICODE_NOT_PRESENT_OFFSET, 14033 },
+  { 0xfedf, G_UNICODE_NOT_PRESENT_OFFSET, 14033 },
+  { 0xfee0, G_UNICODE_NOT_PRESENT_OFFSET, 14033 },
+  { 0xfee1, G_UNICODE_NOT_PRESENT_OFFSET, 14036 },
+  { 0xfee2, G_UNICODE_NOT_PRESENT_OFFSET, 14036 },
+  { 0xfee3, G_UNICODE_NOT_PRESENT_OFFSET, 14036 },
+  { 0xfee4, G_UNICODE_NOT_PRESENT_OFFSET, 14036 },
+  { 0xfee5, G_UNICODE_NOT_PRESENT_OFFSET, 14039 },
+  { 0xfee6, G_UNICODE_NOT_PRESENT_OFFSET, 14039 },
+  { 0xfee7, G_UNICODE_NOT_PRESENT_OFFSET, 14039 },
+  { 0xfee8, G_UNICODE_NOT_PRESENT_OFFSET, 14039 },
+  { 0xfee9, G_UNICODE_NOT_PRESENT_OFFSET, 14042 },
+  { 0xfeea, G_UNICODE_NOT_PRESENT_OFFSET, 14042 },
+  { 0xfeeb, G_UNICODE_NOT_PRESENT_OFFSET, 14042 },
+  { 0xfeec, G_UNICODE_NOT_PRESENT_OFFSET, 14042 },
+  { 0xfeed, G_UNICODE_NOT_PRESENT_OFFSET, 14045 },
+  { 0xfeee, G_UNICODE_NOT_PRESENT_OFFSET, 14045 },
+  { 0xfeef, G_UNICODE_NOT_PRESENT_OFFSET, 12110 },
+  { 0xfef0, G_UNICODE_NOT_PRESENT_OFFSET, 12110 },
+  { 0xfef1, G_UNICODE_NOT_PRESENT_OFFSET, 14048 },
+  { 0xfef2, G_UNICODE_NOT_PRESENT_OFFSET, 14048 },
+  { 0xfef3, G_UNICODE_NOT_PRESENT_OFFSET, 14048 },
+  { 0xfef4, G_UNICODE_NOT_PRESENT_OFFSET, 14048 },
+  { 0xfef5, G_UNICODE_NOT_PRESENT_OFFSET, 14051 },
+  { 0xfef6, G_UNICODE_NOT_PRESENT_OFFSET, 14051 },
+  { 0xfef7, G_UNICODE_NOT_PRESENT_OFFSET, 14058 },
+  { 0xfef8, G_UNICODE_NOT_PRESENT_OFFSET, 14058 },
+  { 0xfef9, G_UNICODE_NOT_PRESENT_OFFSET, 14065 },
+  { 0xfefa, G_UNICODE_NOT_PRESENT_OFFSET, 14065 },
+  { 0xfefb, G_UNICODE_NOT_PRESENT_OFFSET, 14072 },
+  { 0xfefc, G_UNICODE_NOT_PRESENT_OFFSET, 14072 },
+  { 0xff01, G_UNICODE_NOT_PRESENT_OFFSET, 13877 },
+  { 0xff02, G_UNICODE_NOT_PRESENT_OFFSET, 14077 },
+  { 0xff03, G_UNICODE_NOT_PRESENT_OFFSET, 13879 },
+  { 0xff04, G_UNICODE_NOT_PRESENT_OFFSET, 13893 },
+  { 0xff05, G_UNICODE_NOT_PRESENT_OFFSET, 13895 },
+  { 0xff06, G_UNICODE_NOT_PRESENT_OFFSET, 13881 },
+  { 0xff07, G_UNICODE_NOT_PRESENT_OFFSET, 14079 },
+  { 0xff08, G_UNICODE_NOT_PRESENT_OFFSET, 4965 },
+  { 0xff09, G_UNICODE_NOT_PRESENT_OFFSET, 4967 },
+  { 0xff0a, G_UNICODE_NOT_PRESENT_OFFSET, 13883 },
+  { 0xff0b, G_UNICODE_NOT_PRESENT_OFFSET, 4957 },
+  { 0xff0c, G_UNICODE_NOT_PRESENT_OFFSET, 13867 },
+  { 0xff0d, G_UNICODE_NOT_PRESENT_OFFSET, 13885 },
+  { 0xff0e, G_UNICODE_NOT_PRESENT_OFFSET, 4869 },
+  { 0xff0f, G_UNICODE_NOT_PRESENT_OFFSET, 14081 },
+  { 0xff10, G_UNICODE_NOT_PRESENT_OFFSET, 4941 },
+  { 0xff11, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
+  { 0xff12, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
+  { 0xff13, G_UNICODE_NOT_PRESENT_OFFSET, 14 },
+  { 0xff14, G_UNICODE_NOT_PRESENT_OFFSET, 4945 },
+  { 0xff15, G_UNICODE_NOT_PRESENT_OFFSET, 4947 },
+  { 0xff16, G_UNICODE_NOT_PRESENT_OFFSET, 4949 },
+  { 0xff17, G_UNICODE_NOT_PRESENT_OFFSET, 4951 },
+  { 0xff18, G_UNICODE_NOT_PRESENT_OFFSET, 4953 },
+  { 0xff19, G_UNICODE_NOT_PRESENT_OFFSET, 4955 },
+  { 0xff1a, G_UNICODE_NOT_PRESENT_OFFSET, 13873 },
+  { 0xff1b, G_UNICODE_NOT_PRESENT_OFFSET, 1248 },
+  { 0xff1c, G_UNICODE_NOT_PRESENT_OFFSET, 13887 },
+  { 0xff1d, G_UNICODE_NOT_PRESENT_OFFSET, 4963 },
+  { 0xff1e, G_UNICODE_NOT_PRESENT_OFFSET, 13889 },
+  { 0xff1f, G_UNICODE_NOT_PRESENT_OFFSET, 13875 },
+  { 0xff20, G_UNICODE_NOT_PRESENT_OFFSET, 13897 },
+  { 0xff21, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0xff22, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0xff23, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0xff24, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0xff25, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0xff26, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0xff27, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0xff28, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0xff29, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0xff2a, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0xff2b, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0xff2c, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0xff2d, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0xff2e, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0xff2f, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0xff30, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0xff31, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0xff32, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0xff33, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0xff34, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0xff35, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0xff36, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0xff37, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0xff38, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0xff39, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0xff3a, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0xff3b, G_UNICODE_NOT_PRESENT_OFFSET, 14083 },
+  { 0xff3c, G_UNICODE_NOT_PRESENT_OFFSET, 13891 },
+  { 0xff3d, G_UNICODE_NOT_PRESENT_OFFSET, 14085 },
+  { 0xff3e, G_UNICODE_NOT_PRESENT_OFFSET, 14087 },
+  { 0xff3f, G_UNICODE_NOT_PRESENT_OFFSET, 13821 },
+  { 0xff40, G_UNICODE_NOT_PRESENT_OFFSET, 4798 },
+  { 0xff41, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0xff42, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0xff43, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0xff44, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0xff45, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0xff46, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0xff47, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0xff48, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0xff49, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0xff4a, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0xff4b, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0xff4c, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0xff4d, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0xff4e, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0xff4f, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0xff50, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0xff51, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0xff52, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0xff53, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0xff54, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0xff55, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0xff56, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0xff57, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0xff58, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0xff59, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0xff5a, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0xff5b, G_UNICODE_NOT_PRESENT_OFFSET, 13823 },
+  { 0xff5c, G_UNICODE_NOT_PRESENT_OFFSET, 14089 },
+  { 0xff5d, G_UNICODE_NOT_PRESENT_OFFSET, 13825 },
+  { 0xff5e, G_UNICODE_NOT_PRESENT_OFFSET, 14091 },
+  { 0xff5f, G_UNICODE_NOT_PRESENT_OFFSET, 14093 },
+  { 0xff60, G_UNICODE_NOT_PRESENT_OFFSET, 14097 },
+  { 0xff61, G_UNICODE_NOT_PRESENT_OFFSET, 14101 },
+  { 0xff62, G_UNICODE_NOT_PRESENT_OFFSET, 13851 },
+  { 0xff63, G_UNICODE_NOT_PRESENT_OFFSET, 13855 },
+  { 0xff64, G_UNICODE_NOT_PRESENT_OFFSET, 13869 },
+  { 0xff65, G_UNICODE_NOT_PRESENT_OFFSET, 14105 },
+  { 0xff66, G_UNICODE_NOT_PRESENT_OFFSET, 8615 },
+  { 0xff67, G_UNICODE_NOT_PRESENT_OFFSET, 14109 },
+  { 0xff68, G_UNICODE_NOT_PRESENT_OFFSET, 14113 },
+  { 0xff69, G_UNICODE_NOT_PRESENT_OFFSET, 14117 },
+  { 0xff6a, G_UNICODE_NOT_PRESENT_OFFSET, 14121 },
+  { 0xff6b, G_UNICODE_NOT_PRESENT_OFFSET, 14125 },
+  { 0xff6c, G_UNICODE_NOT_PRESENT_OFFSET, 14129 },
+  { 0xff6d, G_UNICODE_NOT_PRESENT_OFFSET, 14133 },
+  { 0xff6e, G_UNICODE_NOT_PRESENT_OFFSET, 14137 },
+  { 0xff6f, G_UNICODE_NOT_PRESENT_OFFSET, 14141 },
+  { 0xff70, G_UNICODE_NOT_PRESENT_OFFSET, 14145 },
+  { 0xff71, G_UNICODE_NOT_PRESENT_OFFSET, 8431 },
+  { 0xff72, G_UNICODE_NOT_PRESENT_OFFSET, 8435 },
+  { 0xff73, G_UNICODE_NOT_PRESENT_OFFSET, 8439 },
+  { 0xff74, G_UNICODE_NOT_PRESENT_OFFSET, 8443 },
+  { 0xff75, G_UNICODE_NOT_PRESENT_OFFSET, 8447 },
+  { 0xff76, G_UNICODE_NOT_PRESENT_OFFSET, 8451 },
+  { 0xff77, G_UNICODE_NOT_PRESENT_OFFSET, 8455 },
+  { 0xff78, G_UNICODE_NOT_PRESENT_OFFSET, 8459 },
+  { 0xff79, G_UNICODE_NOT_PRESENT_OFFSET, 8463 },
+  { 0xff7a, G_UNICODE_NOT_PRESENT_OFFSET, 8467 },
+  { 0xff7b, G_UNICODE_NOT_PRESENT_OFFSET, 8471 },
+  { 0xff7c, G_UNICODE_NOT_PRESENT_OFFSET, 8475 },
+  { 0xff7d, G_UNICODE_NOT_PRESENT_OFFSET, 8479 },
+  { 0xff7e, G_UNICODE_NOT_PRESENT_OFFSET, 8483 },
+  { 0xff7f, G_UNICODE_NOT_PRESENT_OFFSET, 8487 },
+  { 0xff80, G_UNICODE_NOT_PRESENT_OFFSET, 8491 },
+  { 0xff81, G_UNICODE_NOT_PRESENT_OFFSET, 8495 },
+  { 0xff82, G_UNICODE_NOT_PRESENT_OFFSET, 8499 },
+  { 0xff83, G_UNICODE_NOT_PRESENT_OFFSET, 8503 },
+  { 0xff84, G_UNICODE_NOT_PRESENT_OFFSET, 8507 },
+  { 0xff85, G_UNICODE_NOT_PRESENT_OFFSET, 8511 },
+  { 0xff86, G_UNICODE_NOT_PRESENT_OFFSET, 8515 },
+  { 0xff87, G_UNICODE_NOT_PRESENT_OFFSET, 8519 },
+  { 0xff88, G_UNICODE_NOT_PRESENT_OFFSET, 8523 },
+  { 0xff89, G_UNICODE_NOT_PRESENT_OFFSET, 8527 },
+  { 0xff8a, G_UNICODE_NOT_PRESENT_OFFSET, 8531 },
+  { 0xff8b, G_UNICODE_NOT_PRESENT_OFFSET, 8535 },
+  { 0xff8c, G_UNICODE_NOT_PRESENT_OFFSET, 8539 },
+  { 0xff8d, G_UNICODE_NOT_PRESENT_OFFSET, 8543 },
+  { 0xff8e, G_UNICODE_NOT_PRESENT_OFFSET, 8547 },
+  { 0xff8f, G_UNICODE_NOT_PRESENT_OFFSET, 8551 },
+  { 0xff90, G_UNICODE_NOT_PRESENT_OFFSET, 8555 },
+  { 0xff91, G_UNICODE_NOT_PRESENT_OFFSET, 8559 },
+  { 0xff92, G_UNICODE_NOT_PRESENT_OFFSET, 8563 },
+  { 0xff93, G_UNICODE_NOT_PRESENT_OFFSET, 8567 },
+  { 0xff94, G_UNICODE_NOT_PRESENT_OFFSET, 8571 },
+  { 0xff95, G_UNICODE_NOT_PRESENT_OFFSET, 8575 },
+  { 0xff96, G_UNICODE_NOT_PRESENT_OFFSET, 8579 },
+  { 0xff97, G_UNICODE_NOT_PRESENT_OFFSET, 8583 },
+  { 0xff98, G_UNICODE_NOT_PRESENT_OFFSET, 8587 },
+  { 0xff99, G_UNICODE_NOT_PRESENT_OFFSET, 8591 },
+  { 0xff9a, G_UNICODE_NOT_PRESENT_OFFSET, 8595 },
+  { 0xff9b, G_UNICODE_NOT_PRESENT_OFFSET, 8599 },
+  { 0xff9c, G_UNICODE_NOT_PRESENT_OFFSET, 8603 },
+  { 0xff9d, G_UNICODE_NOT_PRESENT_OFFSET, 14149 },
+  { 0xff9e, G_UNICODE_NOT_PRESENT_OFFSET, 14153 },
+  { 0xff9f, G_UNICODE_NOT_PRESENT_OFFSET, 14157 },
+  { 0xffa0, G_UNICODE_NOT_PRESENT_OFFSET, 7405 },
+  { 0xffa1, G_UNICODE_NOT_PRESENT_OFFSET, 7201 },
+  { 0xffa2, G_UNICODE_NOT_PRESENT_OFFSET, 7205 },
+  { 0xffa3, G_UNICODE_NOT_PRESENT_OFFSET, 7209 },
+  { 0xffa4, G_UNICODE_NOT_PRESENT_OFFSET, 7213 },
+  { 0xffa5, G_UNICODE_NOT_PRESENT_OFFSET, 7217 },
+  { 0xffa6, G_UNICODE_NOT_PRESENT_OFFSET, 7221 },
+  { 0xffa7, G_UNICODE_NOT_PRESENT_OFFSET, 7225 },
+  { 0xffa8, G_UNICODE_NOT_PRESENT_OFFSET, 7229 },
+  { 0xffa9, G_UNICODE_NOT_PRESENT_OFFSET, 7233 },
+  { 0xffaa, G_UNICODE_NOT_PRESENT_OFFSET, 7237 },
+  { 0xffab, G_UNICODE_NOT_PRESENT_OFFSET, 7241 },
+  { 0xffac, G_UNICODE_NOT_PRESENT_OFFSET, 7245 },
+  { 0xffad, G_UNICODE_NOT_PRESENT_OFFSET, 7249 },
+  { 0xffae, G_UNICODE_NOT_PRESENT_OFFSET, 7253 },
+  { 0xffaf, G_UNICODE_NOT_PRESENT_OFFSET, 7257 },
+  { 0xffb0, G_UNICODE_NOT_PRESENT_OFFSET, 7261 },
+  { 0xffb1, G_UNICODE_NOT_PRESENT_OFFSET, 7265 },
+  { 0xffb2, G_UNICODE_NOT_PRESENT_OFFSET, 7269 },
+  { 0xffb3, G_UNICODE_NOT_PRESENT_OFFSET, 7273 },
+  { 0xffb4, G_UNICODE_NOT_PRESENT_OFFSET, 7277 },
+  { 0xffb5, G_UNICODE_NOT_PRESENT_OFFSET, 7281 },
+  { 0xffb6, G_UNICODE_NOT_PRESENT_OFFSET, 7285 },
+  { 0xffb7, G_UNICODE_NOT_PRESENT_OFFSET, 7289 },
+  { 0xffb8, G_UNICODE_NOT_PRESENT_OFFSET, 7293 },
+  { 0xffb9, G_UNICODE_NOT_PRESENT_OFFSET, 7297 },
+  { 0xffba, G_UNICODE_NOT_PRESENT_OFFSET, 7301 },
+  { 0xffbb, G_UNICODE_NOT_PRESENT_OFFSET, 7305 },
+  { 0xffbc, G_UNICODE_NOT_PRESENT_OFFSET, 7309 },
+  { 0xffbd, G_UNICODE_NOT_PRESENT_OFFSET, 7313 },
+  { 0xffbe, G_UNICODE_NOT_PRESENT_OFFSET, 7317 },
+  { 0xffc2, G_UNICODE_NOT_PRESENT_OFFSET, 7321 },
+  { 0xffc3, G_UNICODE_NOT_PRESENT_OFFSET, 7325 },
+  { 0xffc4, G_UNICODE_NOT_PRESENT_OFFSET, 7329 },
+  { 0xffc5, G_UNICODE_NOT_PRESENT_OFFSET, 7333 },
+  { 0xffc6, G_UNICODE_NOT_PRESENT_OFFSET, 7337 },
+  { 0xffc7, G_UNICODE_NOT_PRESENT_OFFSET, 7341 },
+  { 0xffca, G_UNICODE_NOT_PRESENT_OFFSET, 7345 },
+  { 0xffcb, G_UNICODE_NOT_PRESENT_OFFSET, 7349 },
+  { 0xffcc, G_UNICODE_NOT_PRESENT_OFFSET, 7353 },
+  { 0xffcd, G_UNICODE_NOT_PRESENT_OFFSET, 7357 },
+  { 0xffce, G_UNICODE_NOT_PRESENT_OFFSET, 7361 },
+  { 0xffcf, G_UNICODE_NOT_PRESENT_OFFSET, 7365 },
+  { 0xffd2, G_UNICODE_NOT_PRESENT_OFFSET, 7369 },
+  { 0xffd3, G_UNICODE_NOT_PRESENT_OFFSET, 7373 },
+  { 0xffd4, G_UNICODE_NOT_PRESENT_OFFSET, 7377 },
+  { 0xffd5, G_UNICODE_NOT_PRESENT_OFFSET, 7381 },
+  { 0xffd6, G_UNICODE_NOT_PRESENT_OFFSET, 7385 },
+  { 0xffd7, G_UNICODE_NOT_PRESENT_OFFSET, 7389 },
+  { 0xffda, G_UNICODE_NOT_PRESENT_OFFSET, 7393 },
+  { 0xffdb, G_UNICODE_NOT_PRESENT_OFFSET, 7397 },
+  { 0xffdc, G_UNICODE_NOT_PRESENT_OFFSET, 7401 },
+  { 0xffe0, G_UNICODE_NOT_PRESENT_OFFSET, 14161 },
+  { 0xffe1, G_UNICODE_NOT_PRESENT_OFFSET, 14164 },
+  { 0xffe2, G_UNICODE_NOT_PRESENT_OFFSET, 14167 },
+  { 0xffe3, G_UNICODE_NOT_PRESENT_OFFSET, 8 },
+  { 0xffe4, G_UNICODE_NOT_PRESENT_OFFSET, 14170 },
+  { 0xffe5, G_UNICODE_NOT_PRESENT_OFFSET, 14173 },
+  { 0xffe6, G_UNICODE_NOT_PRESENT_OFFSET, 14176 },
+  { 0xffe8, G_UNICODE_NOT_PRESENT_OFFSET, 14180 },
+  { 0xffe9, G_UNICODE_NOT_PRESENT_OFFSET, 14184 },
+  { 0xffea, G_UNICODE_NOT_PRESENT_OFFSET, 14188 },
+  { 0xffeb, G_UNICODE_NOT_PRESENT_OFFSET, 14192 },
+  { 0xffec, G_UNICODE_NOT_PRESENT_OFFSET, 14196 },
+  { 0xffed, G_UNICODE_NOT_PRESENT_OFFSET, 14200 },
+  { 0xffee, G_UNICODE_NOT_PRESENT_OFFSET, 14204 },
+  { 0x1d15e, 14208, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d15f, 14217, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d160, 14226, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d161, 14239, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d162, 14252, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d163, 14265, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d164, 14278, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1bb, 14291, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1bc, 14300, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1bd, 14309, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1be, 14322, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1bf, 14335, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1c0, 14348, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d400, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d401, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d402, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d403, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d404, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d405, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d406, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d407, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d408, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d409, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d40a, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d40b, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d40c, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d40d, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d40e, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d40f, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d410, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d411, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d412, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d413, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d414, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d415, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d416, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d417, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d418, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d419, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d41a, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d41b, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d41c, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d41d, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d41e, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d41f, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d420, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d421, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d422, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d423, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d424, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d425, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d426, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d427, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d428, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d429, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d42a, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d42b, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d42c, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d42d, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d42e, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d42f, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d430, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d431, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d432, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d433, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d434, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d435, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d436, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d437, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d438, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d439, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d43a, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d43b, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d43c, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d43d, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d43e, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d43f, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d440, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d441, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d442, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d443, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d444, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d445, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d446, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d447, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d448, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d449, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d44a, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d44b, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d44c, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d44d, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d44e, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d44f, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d450, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d451, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d452, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d453, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d454, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d456, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d457, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d458, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d459, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d45a, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d45b, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d45c, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d45d, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d45e, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d45f, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d460, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d461, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d462, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d463, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d464, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d465, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d466, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d467, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d468, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d469, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d46a, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d46b, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d46c, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d46d, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d46e, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d46f, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d470, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d471, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d472, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d473, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d474, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d475, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d476, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d477, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d478, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d479, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d47a, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d47b, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d47c, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d47d, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d47e, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d47f, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d480, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d481, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d482, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d483, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d484, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d485, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d486, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d487, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d488, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d489, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d48a, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d48b, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d48c, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d48d, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d48e, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d48f, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d490, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d491, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d492, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d493, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d494, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d495, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d496, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d497, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d498, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d499, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d49a, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d49b, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d49c, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d49e, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d49f, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d4a2, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d4a5, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d4a6, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d4a9, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d4aa, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d4ab, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d4ac, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d4ae, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d4af, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d4b0, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d4b1, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d4b2, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d4b3, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d4b4, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d4b5, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d4b6, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d4b7, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d4b8, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d4b9, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d4bb, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d4bd, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d4be, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d4bf, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d4c0, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d4c2, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d4c3, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d4c5, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d4c6, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d4c7, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d4c8, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d4c9, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d4ca, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d4cb, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d4cc, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d4cd, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d4ce, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d4cf, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d4d0, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d4d1, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d4d2, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d4d3, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d4d4, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d4d5, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d4d6, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d4d7, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d4d8, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d4d9, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d4da, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d4db, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d4dc, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d4dd, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d4de, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d4df, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d4e0, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d4e1, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d4e2, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d4e3, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d4e4, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d4e5, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d4e6, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d4e7, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d4e8, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d4e9, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d4ea, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d4eb, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d4ec, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d4ed, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d4ee, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d4ef, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d4f0, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d4f1, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d4f2, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d4f3, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d4f4, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d4f5, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d4f6, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d4f7, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d4f8, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d4f9, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d4fa, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d4fb, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d4fc, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d4fd, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d4fe, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d4ff, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d500, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d501, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d502, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d503, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d504, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d505, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d507, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d508, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d509, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d50a, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d50d, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d50e, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d50f, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d510, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d511, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d512, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d513, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d514, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d516, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d517, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d518, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d519, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d51a, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d51b, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d51c, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d51e, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d51f, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d520, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d521, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d522, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d523, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d524, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d525, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d526, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d527, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d528, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d529, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d52a, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d52b, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d52c, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d52d, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d52e, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d52f, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d530, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d531, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d532, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d533, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d534, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d535, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d536, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d537, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d538, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d539, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d53b, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d53c, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d53d, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d53e, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d540, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d541, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d542, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d543, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d544, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d546, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d54a, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d54b, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d54c, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d54d, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d54e, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d54f, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d550, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d552, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d553, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d554, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d555, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d556, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d557, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d558, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d559, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d55a, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d55b, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d55c, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d55d, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d55e, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d55f, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d560, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d561, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d562, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d563, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d564, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d565, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d566, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d567, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d568, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d569, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d56a, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d56b, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d56c, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d56d, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d56e, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d56f, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d570, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d571, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d572, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d573, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d574, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d575, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d576, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d577, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d578, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d579, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d57a, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d57b, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d57c, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d57d, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d57e, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d57f, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d580, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d581, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d582, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d583, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d584, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d585, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d586, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d587, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d588, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d589, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d58a, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d58b, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d58c, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d58d, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d58e, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d58f, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d590, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d591, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d592, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d593, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d594, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d595, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d596, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d597, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d598, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d599, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d59a, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d59b, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d59c, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d59d, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d59e, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d59f, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d5a0, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d5a1, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d5a2, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d5a3, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d5a4, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d5a5, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d5a6, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d5a7, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d5a8, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d5a9, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d5aa, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d5ab, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d5ac, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d5ad, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d5ae, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d5af, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d5b0, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d5b1, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d5b2, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d5b3, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d5b4, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d5b5, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d5b6, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d5b7, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d5b8, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d5b9, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d5ba, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d5bb, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d5bc, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d5bd, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d5be, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d5bf, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d5c0, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d5c1, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d5c2, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d5c3, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d5c4, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d5c5, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d5c6, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d5c7, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d5c8, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d5c9, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d5ca, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d5cb, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d5cc, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d5cd, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d5ce, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d5cf, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d5d0, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d5d1, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d5d2, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d5d3, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d5d4, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d5d5, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d5d6, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d5d7, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d5d8, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d5d9, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d5da, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d5db, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d5dc, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d5dd, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d5de, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d5df, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d5e0, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d5e1, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d5e2, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d5e3, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d5e4, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d5e5, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d5e6, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d5e7, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d5e8, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d5e9, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d5ea, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d5eb, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d5ec, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d5ed, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d5ee, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d5ef, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d5f0, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d5f1, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d5f2, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d5f3, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d5f4, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d5f5, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d5f6, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d5f7, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d5f8, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d5f9, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d5fa, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d5fb, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d5fc, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d5fd, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d5fe, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d5ff, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d600, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d601, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d602, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d603, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d604, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d605, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d606, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d607, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d608, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d609, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d60a, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d60b, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d60c, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d60d, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d60e, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d60f, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d610, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d611, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d612, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d613, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d614, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d615, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d616, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d617, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d618, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d619, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d61a, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d61b, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d61c, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d61d, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d61e, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d61f, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d620, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d621, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d622, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d623, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d624, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d625, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d626, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d627, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d628, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d629, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d62a, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d62b, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d62c, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d62d, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d62e, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d62f, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d630, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d631, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d632, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d633, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d634, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d635, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d636, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d637, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d638, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d639, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d63a, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d63b, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d63c, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d63d, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d63e, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d63f, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d640, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d641, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d642, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d643, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d644, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d645, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d646, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d647, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d648, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d649, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d64a, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d64b, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d64c, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d64d, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d64e, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d64f, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d650, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d651, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d652, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d653, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d654, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d655, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d656, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d657, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d658, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d659, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d65a, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d65b, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d65c, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d65d, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d65e, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d65f, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d660, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d661, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d662, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d663, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d664, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d665, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d666, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d667, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d668, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d669, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d66a, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d66b, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d66c, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d66d, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d66e, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d66f, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d670, G_UNICODE_NOT_PRESENT_OFFSET, 5831 },
+  { 0x1d671, G_UNICODE_NOT_PRESENT_OFFSET, 5042 },
+  { 0x1d672, G_UNICODE_NOT_PRESENT_OFFSET, 4982 },
+  { 0x1d673, G_UNICODE_NOT_PRESENT_OFFSET, 5077 },
+  { 0x1d674, G_UNICODE_NOT_PRESENT_OFFSET, 5046 },
+  { 0x1d675, G_UNICODE_NOT_PRESENT_OFFSET, 5048 },
+  { 0x1d676, G_UNICODE_NOT_PRESENT_OFFSET, 5833 },
+  { 0x1d677, G_UNICODE_NOT_PRESENT_OFFSET, 5005 },
+  { 0x1d678, G_UNICODE_NOT_PRESENT_OFFSET, 5010 },
+  { 0x1d679, G_UNICODE_NOT_PRESENT_OFFSET, 5835 },
+  { 0x1d67a, G_UNICODE_NOT_PRESENT_OFFSET, 5040 },
+  { 0x1d67b, G_UNICODE_NOT_PRESENT_OFFSET, 5012 },
+  { 0x1d67c, G_UNICODE_NOT_PRESENT_OFFSET, 5050 },
+  { 0x1d67d, G_UNICODE_NOT_PRESENT_OFFSET, 5014 },
+  { 0x1d67e, G_UNICODE_NOT_PRESENT_OFFSET, 5837 },
+  { 0x1d67f, G_UNICODE_NOT_PRESENT_OFFSET, 5019 },
+  { 0x1d680, G_UNICODE_NOT_PRESENT_OFFSET, 5021 },
+  { 0x1d681, G_UNICODE_NOT_PRESENT_OFFSET, 5023 },
+  { 0x1d682, G_UNICODE_NOT_PRESENT_OFFSET, 5839 },
+  { 0x1d683, G_UNICODE_NOT_PRESENT_OFFSET, 5841 },
+  { 0x1d684, G_UNICODE_NOT_PRESENT_OFFSET, 5843 },
+  { 0x1d685, G_UNICODE_NOT_PRESENT_OFFSET, 5168 },
+  { 0x1d686, G_UNICODE_NOT_PRESENT_OFFSET, 5845 },
+  { 0x1d687, G_UNICODE_NOT_PRESENT_OFFSET, 5185 },
+  { 0x1d688, G_UNICODE_NOT_PRESENT_OFFSET, 5847 },
+  { 0x1d689, G_UNICODE_NOT_PRESENT_OFFSET, 5035 },
+  { 0x1d68a, G_UNICODE_NOT_PRESENT_OFFSET, 6 },
+  { 0x1d68b, G_UNICODE_NOT_PRESENT_OFFSET, 5849 },
+  { 0x1d68c, G_UNICODE_NOT_PRESENT_OFFSET, 5228 },
+  { 0x1d68d, G_UNICODE_NOT_PRESENT_OFFSET, 5079 },
+  { 0x1d68e, G_UNICODE_NOT_PRESENT_OFFSET, 5044 },
+  { 0x1d68f, G_UNICODE_NOT_PRESENT_OFFSET, 5851 },
+  { 0x1d690, G_UNICODE_NOT_PRESENT_OFFSET, 5003 },
+  { 0x1d691, G_UNICODE_NOT_PRESENT_OFFSET, 1171 },
+  { 0x1d692, G_UNICODE_NOT_PRESENT_OFFSET, 4943 },
+  { 0x1d693, G_UNICODE_NOT_PRESENT_OFFSET, 1176 },
+  { 0x1d694, G_UNICODE_NOT_PRESENT_OFFSET, 5853 },
+  { 0x1d695, G_UNICODE_NOT_PRESENT_OFFSET, 1220 },
+  { 0x1d696, G_UNICODE_NOT_PRESENT_OFFSET, 5230 },
+  { 0x1d697, G_UNICODE_NOT_PRESENT_OFFSET, 4969 },
+  { 0x1d698, G_UNICODE_NOT_PRESENT_OFFSET, 29 },
+  { 0x1d699, G_UNICODE_NOT_PRESENT_OFFSET, 5855 },
+  { 0x1d69a, G_UNICODE_NOT_PRESENT_OFFSET, 5857 },
+  { 0x1d69b, G_UNICODE_NOT_PRESENT_OFFSET, 1178 },
+  { 0x1d69c, G_UNICODE_NOT_PRESENT_OFFSET, 711 },
+  { 0x1d69d, G_UNICODE_NOT_PRESENT_OFFSET, 5859 },
+  { 0x1d69e, G_UNICODE_NOT_PRESENT_OFFSET, 5861 },
+  { 0x1d69f, G_UNICODE_NOT_PRESENT_OFFSET, 5204 },
+  { 0x1d6a0, G_UNICODE_NOT_PRESENT_OFFSET, 1189 },
+  { 0x1d6a1, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
+  { 0x1d6a2, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
+  { 0x1d6a3, G_UNICODE_NOT_PRESENT_OFFSET, 5863 },
+  { 0x1d6a8, G_UNICODE_NOT_PRESENT_OFFSET, 14361 },
+  { 0x1d6a9, G_UNICODE_NOT_PRESENT_OFFSET, 14364 },
+  { 0x1d6aa, G_UNICODE_NOT_PRESENT_OFFSET, 5067 },
+  { 0x1d6ab, G_UNICODE_NOT_PRESENT_OFFSET, 14367 },
+  { 0x1d6ac, G_UNICODE_NOT_PRESENT_OFFSET, 14370 },
+  { 0x1d6ad, G_UNICODE_NOT_PRESENT_OFFSET, 14373 },
+  { 0x1d6ae, G_UNICODE_NOT_PRESENT_OFFSET, 14376 },
+  { 0x1d6af, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d6b0, G_UNICODE_NOT_PRESENT_OFFSET, 14379 },
+  { 0x1d6b1, G_UNICODE_NOT_PRESENT_OFFSET, 14382 },
+  { 0x1d6b2, G_UNICODE_NOT_PRESENT_OFFSET, 14385 },
+  { 0x1d6b3, G_UNICODE_NOT_PRESENT_OFFSET, 14388 },
+  { 0x1d6b4, G_UNICODE_NOT_PRESENT_OFFSET, 14391 },
+  { 0x1d6b5, G_UNICODE_NOT_PRESENT_OFFSET, 14394 },
+  { 0x1d6b6, G_UNICODE_NOT_PRESENT_OFFSET, 14397 },
+  { 0x1d6b7, G_UNICODE_NOT_PRESENT_OFFSET, 5070 },
+  { 0x1d6b8, G_UNICODE_NOT_PRESENT_OFFSET, 14400 },
+  { 0x1d6b9, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d6ba, G_UNICODE_NOT_PRESENT_OFFSET, 14403 },
+  { 0x1d6bb, G_UNICODE_NOT_PRESENT_OFFSET, 14406 },
+  { 0x1d6bc, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
+  { 0x1d6bd, G_UNICODE_NOT_PRESENT_OFFSET, 14409 },
+  { 0x1d6be, G_UNICODE_NOT_PRESENT_OFFSET, 14412 },
+  { 0x1d6bf, G_UNICODE_NOT_PRESENT_OFFSET, 14415 },
+  { 0x1d6c0, G_UNICODE_NOT_PRESENT_OFFSET, 5037 },
+  { 0x1d6c1, G_UNICODE_NOT_PRESENT_OFFSET, 14418 },
+  { 0x1d6c2, G_UNICODE_NOT_PRESENT_OFFSET, 14422 },
+  { 0x1d6c3, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
+  { 0x1d6c4, G_UNICODE_NOT_PRESENT_OFFSET, 5064 },
+  { 0x1d6c5, G_UNICODE_NOT_PRESENT_OFFSET, 14425 },
+  { 0x1d6c6, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d6c7, G_UNICODE_NOT_PRESENT_OFFSET, 14428 },
+  { 0x1d6c8, G_UNICODE_NOT_PRESENT_OFFSET, 14431 },
+  { 0x1d6c9, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d6ca, G_UNICODE_NOT_PRESENT_OFFSET, 4548 },
+  { 0x1d6cb, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d6cc, G_UNICODE_NOT_PRESENT_OFFSET, 14434 },
+  { 0x1d6cd, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
+  { 0x1d6ce, G_UNICODE_NOT_PRESENT_OFFSET, 14437 },
+  { 0x1d6cf, G_UNICODE_NOT_PRESENT_OFFSET, 14440 },
+  { 0x1d6d0, G_UNICODE_NOT_PRESENT_OFFSET, 14443 },
+  { 0x1d6d1, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d6d2, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d6d3, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
+  { 0x1d6d4, G_UNICODE_NOT_PRESENT_OFFSET, 14446 },
+  { 0x1d6d5, G_UNICODE_NOT_PRESENT_OFFSET, 14449 },
+  { 0x1d6d6, G_UNICODE_NOT_PRESENT_OFFSET, 14452 },
+  { 0x1d6d7, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d6d8, G_UNICODE_NOT_PRESENT_OFFSET, 14455 },
+  { 0x1d6d9, G_UNICODE_NOT_PRESENT_OFFSET, 14458 },
+  { 0x1d6da, G_UNICODE_NOT_PRESENT_OFFSET, 14461 },
+  { 0x1d6db, G_UNICODE_NOT_PRESENT_OFFSET, 14464 },
+  { 0x1d6dc, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d6dd, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d6de, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d6df, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d6e0, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d6e1, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d6e2, G_UNICODE_NOT_PRESENT_OFFSET, 14361 },
+  { 0x1d6e3, G_UNICODE_NOT_PRESENT_OFFSET, 14364 },
+  { 0x1d6e4, G_UNICODE_NOT_PRESENT_OFFSET, 5067 },
+  { 0x1d6e5, G_UNICODE_NOT_PRESENT_OFFSET, 14367 },
+  { 0x1d6e6, G_UNICODE_NOT_PRESENT_OFFSET, 14370 },
+  { 0x1d6e7, G_UNICODE_NOT_PRESENT_OFFSET, 14373 },
+  { 0x1d6e8, G_UNICODE_NOT_PRESENT_OFFSET, 14376 },
+  { 0x1d6e9, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d6ea, G_UNICODE_NOT_PRESENT_OFFSET, 14379 },
+  { 0x1d6eb, G_UNICODE_NOT_PRESENT_OFFSET, 14382 },
+  { 0x1d6ec, G_UNICODE_NOT_PRESENT_OFFSET, 14385 },
+  { 0x1d6ed, G_UNICODE_NOT_PRESENT_OFFSET, 14388 },
+  { 0x1d6ee, G_UNICODE_NOT_PRESENT_OFFSET, 14391 },
+  { 0x1d6ef, G_UNICODE_NOT_PRESENT_OFFSET, 14394 },
+  { 0x1d6f0, G_UNICODE_NOT_PRESENT_OFFSET, 14397 },
+  { 0x1d6f1, G_UNICODE_NOT_PRESENT_OFFSET, 5070 },
+  { 0x1d6f2, G_UNICODE_NOT_PRESENT_OFFSET, 14400 },
+  { 0x1d6f3, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d6f4, G_UNICODE_NOT_PRESENT_OFFSET, 14403 },
+  { 0x1d6f5, G_UNICODE_NOT_PRESENT_OFFSET, 14406 },
+  { 0x1d6f6, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
+  { 0x1d6f7, G_UNICODE_NOT_PRESENT_OFFSET, 14409 },
+  { 0x1d6f8, G_UNICODE_NOT_PRESENT_OFFSET, 14412 },
+  { 0x1d6f9, G_UNICODE_NOT_PRESENT_OFFSET, 14415 },
+  { 0x1d6fa, G_UNICODE_NOT_PRESENT_OFFSET, 5037 },
+  { 0x1d6fb, G_UNICODE_NOT_PRESENT_OFFSET, 14418 },
+  { 0x1d6fc, G_UNICODE_NOT_PRESENT_OFFSET, 14422 },
+  { 0x1d6fd, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
+  { 0x1d6fe, G_UNICODE_NOT_PRESENT_OFFSET, 5064 },
+  { 0x1d6ff, G_UNICODE_NOT_PRESENT_OFFSET, 14425 },
+  { 0x1d700, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d701, G_UNICODE_NOT_PRESENT_OFFSET, 14428 },
+  { 0x1d702, G_UNICODE_NOT_PRESENT_OFFSET, 14431 },
+  { 0x1d703, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d704, G_UNICODE_NOT_PRESENT_OFFSET, 4548 },
+  { 0x1d705, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d706, G_UNICODE_NOT_PRESENT_OFFSET, 14434 },
+  { 0x1d707, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
+  { 0x1d708, G_UNICODE_NOT_PRESENT_OFFSET, 14437 },
+  { 0x1d709, G_UNICODE_NOT_PRESENT_OFFSET, 14440 },
+  { 0x1d70a, G_UNICODE_NOT_PRESENT_OFFSET, 14443 },
+  { 0x1d70b, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d70c, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d70d, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
+  { 0x1d70e, G_UNICODE_NOT_PRESENT_OFFSET, 14446 },
+  { 0x1d70f, G_UNICODE_NOT_PRESENT_OFFSET, 14449 },
+  { 0x1d710, G_UNICODE_NOT_PRESENT_OFFSET, 14452 },
+  { 0x1d711, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d712, G_UNICODE_NOT_PRESENT_OFFSET, 14455 },
+  { 0x1d713, G_UNICODE_NOT_PRESENT_OFFSET, 14458 },
+  { 0x1d714, G_UNICODE_NOT_PRESENT_OFFSET, 14461 },
+  { 0x1d715, G_UNICODE_NOT_PRESENT_OFFSET, 14464 },
+  { 0x1d716, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d717, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d718, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d719, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d71a, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d71b, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d71c, G_UNICODE_NOT_PRESENT_OFFSET, 14361 },
+  { 0x1d71d, G_UNICODE_NOT_PRESENT_OFFSET, 14364 },
+  { 0x1d71e, G_UNICODE_NOT_PRESENT_OFFSET, 5067 },
+  { 0x1d71f, G_UNICODE_NOT_PRESENT_OFFSET, 14367 },
+  { 0x1d720, G_UNICODE_NOT_PRESENT_OFFSET, 14370 },
+  { 0x1d721, G_UNICODE_NOT_PRESENT_OFFSET, 14373 },
+  { 0x1d722, G_UNICODE_NOT_PRESENT_OFFSET, 14376 },
+  { 0x1d723, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d724, G_UNICODE_NOT_PRESENT_OFFSET, 14379 },
+  { 0x1d725, G_UNICODE_NOT_PRESENT_OFFSET, 14382 },
+  { 0x1d726, G_UNICODE_NOT_PRESENT_OFFSET, 14385 },
+  { 0x1d727, G_UNICODE_NOT_PRESENT_OFFSET, 14388 },
+  { 0x1d728, G_UNICODE_NOT_PRESENT_OFFSET, 14391 },
+  { 0x1d729, G_UNICODE_NOT_PRESENT_OFFSET, 14394 },
+  { 0x1d72a, G_UNICODE_NOT_PRESENT_OFFSET, 14397 },
+  { 0x1d72b, G_UNICODE_NOT_PRESENT_OFFSET, 5070 },
+  { 0x1d72c, G_UNICODE_NOT_PRESENT_OFFSET, 14400 },
+  { 0x1d72d, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d72e, G_UNICODE_NOT_PRESENT_OFFSET, 14403 },
+  { 0x1d72f, G_UNICODE_NOT_PRESENT_OFFSET, 14406 },
+  { 0x1d730, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
+  { 0x1d731, G_UNICODE_NOT_PRESENT_OFFSET, 14409 },
+  { 0x1d732, G_UNICODE_NOT_PRESENT_OFFSET, 14412 },
+  { 0x1d733, G_UNICODE_NOT_PRESENT_OFFSET, 14415 },
+  { 0x1d734, G_UNICODE_NOT_PRESENT_OFFSET, 5037 },
+  { 0x1d735, G_UNICODE_NOT_PRESENT_OFFSET, 14418 },
+  { 0x1d736, G_UNICODE_NOT_PRESENT_OFFSET, 14422 },
+  { 0x1d737, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
+  { 0x1d738, G_UNICODE_NOT_PRESENT_OFFSET, 5064 },
+  { 0x1d739, G_UNICODE_NOT_PRESENT_OFFSET, 14425 },
+  { 0x1d73a, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d73b, G_UNICODE_NOT_PRESENT_OFFSET, 14428 },
+  { 0x1d73c, G_UNICODE_NOT_PRESENT_OFFSET, 14431 },
+  { 0x1d73d, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d73e, G_UNICODE_NOT_PRESENT_OFFSET, 4548 },
+  { 0x1d73f, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d740, G_UNICODE_NOT_PRESENT_OFFSET, 14434 },
+  { 0x1d741, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
+  { 0x1d742, G_UNICODE_NOT_PRESENT_OFFSET, 14437 },
+  { 0x1d743, G_UNICODE_NOT_PRESENT_OFFSET, 14440 },
+  { 0x1d744, G_UNICODE_NOT_PRESENT_OFFSET, 14443 },
+  { 0x1d745, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d746, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d747, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
+  { 0x1d748, G_UNICODE_NOT_PRESENT_OFFSET, 14446 },
+  { 0x1d749, G_UNICODE_NOT_PRESENT_OFFSET, 14449 },
+  { 0x1d74a, G_UNICODE_NOT_PRESENT_OFFSET, 14452 },
+  { 0x1d74b, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d74c, G_UNICODE_NOT_PRESENT_OFFSET, 14455 },
+  { 0x1d74d, G_UNICODE_NOT_PRESENT_OFFSET, 14458 },
+  { 0x1d74e, G_UNICODE_NOT_PRESENT_OFFSET, 14461 },
+  { 0x1d74f, G_UNICODE_NOT_PRESENT_OFFSET, 14464 },
+  { 0x1d750, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d751, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d752, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d753, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d754, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d755, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d756, G_UNICODE_NOT_PRESENT_OFFSET, 14361 },
+  { 0x1d757, G_UNICODE_NOT_PRESENT_OFFSET, 14364 },
+  { 0x1d758, G_UNICODE_NOT_PRESENT_OFFSET, 5067 },
+  { 0x1d759, G_UNICODE_NOT_PRESENT_OFFSET, 14367 },
+  { 0x1d75a, G_UNICODE_NOT_PRESENT_OFFSET, 14370 },
+  { 0x1d75b, G_UNICODE_NOT_PRESENT_OFFSET, 14373 },
+  { 0x1d75c, G_UNICODE_NOT_PRESENT_OFFSET, 14376 },
+  { 0x1d75d, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d75e, G_UNICODE_NOT_PRESENT_OFFSET, 14379 },
+  { 0x1d75f, G_UNICODE_NOT_PRESENT_OFFSET, 14382 },
+  { 0x1d760, G_UNICODE_NOT_PRESENT_OFFSET, 14385 },
+  { 0x1d761, G_UNICODE_NOT_PRESENT_OFFSET, 14388 },
+  { 0x1d762, G_UNICODE_NOT_PRESENT_OFFSET, 14391 },
+  { 0x1d763, G_UNICODE_NOT_PRESENT_OFFSET, 14394 },
+  { 0x1d764, G_UNICODE_NOT_PRESENT_OFFSET, 14397 },
+  { 0x1d765, G_UNICODE_NOT_PRESENT_OFFSET, 5070 },
+  { 0x1d766, G_UNICODE_NOT_PRESENT_OFFSET, 14400 },
+  { 0x1d767, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d768, G_UNICODE_NOT_PRESENT_OFFSET, 14403 },
+  { 0x1d769, G_UNICODE_NOT_PRESENT_OFFSET, 14406 },
+  { 0x1d76a, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
+  { 0x1d76b, G_UNICODE_NOT_PRESENT_OFFSET, 14409 },
+  { 0x1d76c, G_UNICODE_NOT_PRESENT_OFFSET, 14412 },
+  { 0x1d76d, G_UNICODE_NOT_PRESENT_OFFSET, 14415 },
+  { 0x1d76e, G_UNICODE_NOT_PRESENT_OFFSET, 5037 },
+  { 0x1d76f, G_UNICODE_NOT_PRESENT_OFFSET, 14418 },
+  { 0x1d770, G_UNICODE_NOT_PRESENT_OFFSET, 14422 },
+  { 0x1d771, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
+  { 0x1d772, G_UNICODE_NOT_PRESENT_OFFSET, 5064 },
+  { 0x1d773, G_UNICODE_NOT_PRESENT_OFFSET, 14425 },
+  { 0x1d774, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d775, G_UNICODE_NOT_PRESENT_OFFSET, 14428 },
+  { 0x1d776, G_UNICODE_NOT_PRESENT_OFFSET, 14431 },
+  { 0x1d777, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d778, G_UNICODE_NOT_PRESENT_OFFSET, 4548 },
+  { 0x1d779, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d77a, G_UNICODE_NOT_PRESENT_OFFSET, 14434 },
+  { 0x1d77b, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
+  { 0x1d77c, G_UNICODE_NOT_PRESENT_OFFSET, 14437 },
+  { 0x1d77d, G_UNICODE_NOT_PRESENT_OFFSET, 14440 },
+  { 0x1d77e, G_UNICODE_NOT_PRESENT_OFFSET, 14443 },
+  { 0x1d77f, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d780, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d781, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
+  { 0x1d782, G_UNICODE_NOT_PRESENT_OFFSET, 14446 },
+  { 0x1d783, G_UNICODE_NOT_PRESENT_OFFSET, 14449 },
+  { 0x1d784, G_UNICODE_NOT_PRESENT_OFFSET, 14452 },
+  { 0x1d785, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d786, G_UNICODE_NOT_PRESENT_OFFSET, 14455 },
+  { 0x1d787, G_UNICODE_NOT_PRESENT_OFFSET, 14458 },
+  { 0x1d788, G_UNICODE_NOT_PRESENT_OFFSET, 14461 },
+  { 0x1d789, G_UNICODE_NOT_PRESENT_OFFSET, 14464 },
+  { 0x1d78a, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d78b, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d78c, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d78d, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d78e, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d78f, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d790, G_UNICODE_NOT_PRESENT_OFFSET, 14361 },
+  { 0x1d791, G_UNICODE_NOT_PRESENT_OFFSET, 14364 },
+  { 0x1d792, G_UNICODE_NOT_PRESENT_OFFSET, 5067 },
+  { 0x1d793, G_UNICODE_NOT_PRESENT_OFFSET, 14367 },
+  { 0x1d794, G_UNICODE_NOT_PRESENT_OFFSET, 14370 },
+  { 0x1d795, G_UNICODE_NOT_PRESENT_OFFSET, 14373 },
+  { 0x1d796, G_UNICODE_NOT_PRESENT_OFFSET, 14376 },
+  { 0x1d797, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d798, G_UNICODE_NOT_PRESENT_OFFSET, 14379 },
+  { 0x1d799, G_UNICODE_NOT_PRESENT_OFFSET, 14382 },
+  { 0x1d79a, G_UNICODE_NOT_PRESENT_OFFSET, 14385 },
+  { 0x1d79b, G_UNICODE_NOT_PRESENT_OFFSET, 14388 },
+  { 0x1d79c, G_UNICODE_NOT_PRESENT_OFFSET, 14391 },
+  { 0x1d79d, G_UNICODE_NOT_PRESENT_OFFSET, 14394 },
+  { 0x1d79e, G_UNICODE_NOT_PRESENT_OFFSET, 14397 },
+  { 0x1d79f, G_UNICODE_NOT_PRESENT_OFFSET, 5070 },
+  { 0x1d7a0, G_UNICODE_NOT_PRESENT_OFFSET, 14400 },
+  { 0x1d7a1, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
+  { 0x1d7a2, G_UNICODE_NOT_PRESENT_OFFSET, 14403 },
+  { 0x1d7a3, G_UNICODE_NOT_PRESENT_OFFSET, 14406 },
+  { 0x1d7a4, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
+  { 0x1d7a5, G_UNICODE_NOT_PRESENT_OFFSET, 14409 },
+  { 0x1d7a6, G_UNICODE_NOT_PRESENT_OFFSET, 14412 },
+  { 0x1d7a7, G_UNICODE_NOT_PRESENT_OFFSET, 14415 },
+  { 0x1d7a8, G_UNICODE_NOT_PRESENT_OFFSET, 5037 },
+  { 0x1d7a9, G_UNICODE_NOT_PRESENT_OFFSET, 14418 },
+  { 0x1d7aa, G_UNICODE_NOT_PRESENT_OFFSET, 14422 },
+  { 0x1d7ab, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
+  { 0x1d7ac, G_UNICODE_NOT_PRESENT_OFFSET, 5064 },
+  { 0x1d7ad, G_UNICODE_NOT_PRESENT_OFFSET, 14425 },
+  { 0x1d7ae, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d7af, G_UNICODE_NOT_PRESENT_OFFSET, 14428 },
+  { 0x1d7b0, G_UNICODE_NOT_PRESENT_OFFSET, 14431 },
+  { 0x1d7b1, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d7b2, G_UNICODE_NOT_PRESENT_OFFSET, 4548 },
+  { 0x1d7b3, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d7b4, G_UNICODE_NOT_PRESENT_OFFSET, 14434 },
+  { 0x1d7b5, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
+  { 0x1d7b6, G_UNICODE_NOT_PRESENT_OFFSET, 14437 },
+  { 0x1d7b7, G_UNICODE_NOT_PRESENT_OFFSET, 14440 },
+  { 0x1d7b8, G_UNICODE_NOT_PRESENT_OFFSET, 14443 },
+  { 0x1d7b9, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d7ba, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d7bb, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
+  { 0x1d7bc, G_UNICODE_NOT_PRESENT_OFFSET, 14446 },
+  { 0x1d7bd, G_UNICODE_NOT_PRESENT_OFFSET, 14449 },
+  { 0x1d7be, G_UNICODE_NOT_PRESENT_OFFSET, 14452 },
+  { 0x1d7bf, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d7c0, G_UNICODE_NOT_PRESENT_OFFSET, 14455 },
+  { 0x1d7c1, G_UNICODE_NOT_PRESENT_OFFSET, 14458 },
+  { 0x1d7c2, G_UNICODE_NOT_PRESENT_OFFSET, 14461 },
+  { 0x1d7c3, G_UNICODE_NOT_PRESENT_OFFSET, 14464 },
+  { 0x1d7c4, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
+  { 0x1d7c5, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
+  { 0x1d7c6, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
+  { 0x1d7c7, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
+  { 0x1d7c8, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
+  { 0x1d7c9, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
+  { 0x1d7ce, G_UNICODE_NOT_PRESENT_OFFSET, 4941 },
+  { 0x1d7cf, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
+  { 0x1d7d0, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
+  { 0x1d7d1, G_UNICODE_NOT_PRESENT_OFFSET, 14 },
+  { 0x1d7d2, G_UNICODE_NOT_PRESENT_OFFSET, 4945 },
+  { 0x1d7d3, G_UNICODE_NOT_PRESENT_OFFSET, 4947 },
+  { 0x1d7d4, G_UNICODE_NOT_PRESENT_OFFSET, 4949 },
+  { 0x1d7d5, G_UNICODE_NOT_PRESENT_OFFSET, 4951 },
+  { 0x1d7d6, G_UNICODE_NOT_PRESENT_OFFSET, 4953 },
+  { 0x1d7d7, G_UNICODE_NOT_PRESENT_OFFSET, 4955 },
+  { 0x1d7d8, G_UNICODE_NOT_PRESENT_OFFSET, 4941 },
+  { 0x1d7d9, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
+  { 0x1d7da, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
+  { 0x1d7db, G_UNICODE_NOT_PRESENT_OFFSET, 14 },
+  { 0x1d7dc, G_UNICODE_NOT_PRESENT_OFFSET, 4945 },
+  { 0x1d7dd, G_UNICODE_NOT_PRESENT_OFFSET, 4947 },
+  { 0x1d7de, G_UNICODE_NOT_PRESENT_OFFSET, 4949 },
+  { 0x1d7df, G_UNICODE_NOT_PRESENT_OFFSET, 4951 },
+  { 0x1d7e0, G_UNICODE_NOT_PRESENT_OFFSET, 4953 },
+  { 0x1d7e1, G_UNICODE_NOT_PRESENT_OFFSET, 4955 },
+  { 0x1d7e2, G_UNICODE_NOT_PRESENT_OFFSET, 4941 },
+  { 0x1d7e3, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
+  { 0x1d7e4, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
+  { 0x1d7e5, G_UNICODE_NOT_PRESENT_OFFSET, 14 },
+  { 0x1d7e6, G_UNICODE_NOT_PRESENT_OFFSET, 4945 },
+  { 0x1d7e7, G_UNICODE_NOT_PRESENT_OFFSET, 4947 },
+  { 0x1d7e8, G_UNICODE_NOT_PRESENT_OFFSET, 4949 },
+  { 0x1d7e9, G_UNICODE_NOT_PRESENT_OFFSET, 4951 },
+  { 0x1d7ea, G_UNICODE_NOT_PRESENT_OFFSET, 4953 },
+  { 0x1d7eb, G_UNICODE_NOT_PRESENT_OFFSET, 4955 },
+  { 0x1d7ec, G_UNICODE_NOT_PRESENT_OFFSET, 4941 },
+  { 0x1d7ed, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
+  { 0x1d7ee, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
+  { 0x1d7ef, G_UNICODE_NOT_PRESENT_OFFSET, 14 },
+  { 0x1d7f0, G_UNICODE_NOT_PRESENT_OFFSET, 4945 },
+  { 0x1d7f1, G_UNICODE_NOT_PRESENT_OFFSET, 4947 },
+  { 0x1d7f2, G_UNICODE_NOT_PRESENT_OFFSET, 4949 },
+  { 0x1d7f3, G_UNICODE_NOT_PRESENT_OFFSET, 4951 },
+  { 0x1d7f4, G_UNICODE_NOT_PRESENT_OFFSET, 4953 },
+  { 0x1d7f5, G_UNICODE_NOT_PRESENT_OFFSET, 4955 },
+  { 0x1d7f6, G_UNICODE_NOT_PRESENT_OFFSET, 4941 },
+  { 0x1d7f7, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
+  { 0x1d7f8, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
+  { 0x1d7f9, G_UNICODE_NOT_PRESENT_OFFSET, 14 },
+  { 0x1d7fa, G_UNICODE_NOT_PRESENT_OFFSET, 4945 },
+  { 0x1d7fb, G_UNICODE_NOT_PRESENT_OFFSET, 4947 },
+  { 0x1d7fc, G_UNICODE_NOT_PRESENT_OFFSET, 4949 },
+  { 0x1d7fd, G_UNICODE_NOT_PRESENT_OFFSET, 4951 },
+  { 0x1d7fe, G_UNICODE_NOT_PRESENT_OFFSET, 4953 },
+  { 0x1d7ff, G_UNICODE_NOT_PRESENT_OFFSET, 4955 },
+  { 0x2f800, 14468, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f801, 14472, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f802, 14476, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f803, 14480, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f804, 14485, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f805, 11545, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f806, 14489, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f807, 14493, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f808, 14497, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f809, 14501, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80a, 11549, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80b, 14505, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80c, 14509, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80d, 14513, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80e, 11553, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80f, 14518, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f810, 14522, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f811, 14526, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f812, 14530, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f813, 14535, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f814, 14539, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f815, 14543, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f816, 14547, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f817, 14552, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f818, 14556, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f819, 14560, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81a, 14564, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81b, 14568, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81c, 14572, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81d, 5967, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81e, 14577, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81f, 14581, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f820, 14585, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f821, 14589, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f822, 14593, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f823, 14597, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f824, 14601, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f825, 14605, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f826, 11557, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f827, 11561, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f828, 14609, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f829, 14613, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82a, 14617, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82b, 10837, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82c, 14621, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82d, 11565, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82e, 14625, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82f, 14629, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f830, 14633, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f831, 14637, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f832, 14637, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f833, 14637, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f834, 14641, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f835, 14646, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f836, 14650, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f837, 14654, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f838, 14658, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f839, 14663, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83a, 14667, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83b, 14671, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83c, 14675, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83d, 14679, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83e, 14683, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83f, 14687, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f840, 14691, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f841, 14695, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f842, 14699, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f843, 14703, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f844, 14707, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f845, 14711, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f846, 14711, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f847, 14715, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f848, 14719, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f849, 14723, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84a, 14727, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84b, 14731, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84c, 11573, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84d, 14735, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84e, 14739, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84f, 14743, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f850, 11421, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f851, 14747, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f852, 14751, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f853, 14755, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f854, 14759, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f855, 14763, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f856, 14767, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f857, 14771, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f858, 14775, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f859, 14779, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85a, 14784, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85b, 14788, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85c, 14792, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85d, 14796, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85e, 14800, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85f, 14804, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f860, 14808, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f861, 14813, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f862, 14818, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f863, 14822, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f864, 14826, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f865, 14830, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f866, 14834, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f867, 14838, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f868, 14842, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f869, 14847, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86a, 14851, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86b, 14851, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86c, 14855, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86d, 14860, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86e, 14864, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86f, 10821, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f870, 14868, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f871, 14872, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f872, 14877, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f873, 14881, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f874, 14885, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f875, 6071, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f876, 14889, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f877, 14893, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f878, 6079, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f879, 14897, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87a, 14901, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87b, 14905, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87c, 14910, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87d, 14914, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87e, 14919, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87f, 14923, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f880, 14927, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f881, 14931, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f882, 14935, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f883, 14939, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f884, 14943, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f885, 14947, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f886, 14951, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f887, 14955, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f888, 14959, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f889, 14963, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88a, 14968, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88b, 14972, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88c, 14976, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88d, 14980, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88e, 10613, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88f, 14984, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f890, 6119, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f891, 14989, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f892, 14989, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f893, 14994, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f894, 14998, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f895, 14998, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f896, 15002, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f897, 15006, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f898, 15011, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f899, 15016, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89a, 15020, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89b, 15024, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89c, 15028, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89d, 15032, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89e, 15036, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89f, 15040, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a0, 15044, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a1, 15048, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a2, 15052, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a3, 11593, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a4, 15056, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a5, 15061, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a6, 15065, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a7, 15069, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a8, 15073, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a9, 15069, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8aa, 15077, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ab, 11601, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ac, 15081, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ad, 15085, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ae, 15089, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8af, 15093, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b0, 11605, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b1, 10505, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b2, 15097, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b3, 15101, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b4, 15105, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b5, 15109, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b6, 15113, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b7, 15117, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b8, 15121, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b9, 15126, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ba, 15130, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8bb, 15134, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8bc, 15138, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8bd, 15142, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8be, 15146, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8bf, 15151, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c0, 15155, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c1, 15159, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c2, 15163, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c3, 15167, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c4, 15171, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c5, 15175, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c6, 15179, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c7, 15183, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c8, 11609, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c9, 15187, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ca, 15191, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8cb, 15196, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8cc, 15200, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8cd, 15204, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ce, 15208, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8cf, 11617, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d0, 15212, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d1, 15216, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d2, 15220, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d3, 15224, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d4, 15228, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d5, 15232, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d6, 15236, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d7, 15240, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d8, 10617, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d9, 15244, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8da, 15248, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8db, 15252, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8dc, 15256, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8dd, 15260, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8de, 15265, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8df, 15269, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e0, 15273, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e1, 15277, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e2, 11621, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e3, 15281, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e4, 15286, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e5, 15290, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e6, 15294, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e7, 15298, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e8, 15302, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e9, 15306, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ea, 15310, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8eb, 15314, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ec, 15318, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ed, 15323, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ee, 15327, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ef, 15331, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f0, 15335, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f1, 15340, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f2, 15344, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f3, 15348, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f4, 15352, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f5, 10889, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f6, 15356, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f7, 15360, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f8, 15365, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f9, 15370, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fa, 15375, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fb, 15379, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fc, 15384, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fd, 15388, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fe, 15392, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ff, 15396, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f900, 15400, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f901, 11625, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f902, 11221, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f903, 15404, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f904, 15408, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f905, 15412, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f906, 15416, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f907, 15421, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f908, 15425, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f909, 15429, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90a, 15433, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90b, 15437, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90c, 15441, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90d, 15445, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90e, 15450, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90f, 15454, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f910, 15458, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f911, 15463, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f912, 15468, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f913, 15472, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f914, 15476, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f915, 15480, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f916, 15484, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f917, 15488, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f918, 15492, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f919, 15496, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91a, 15500, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91b, 15504, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91c, 15509, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91d, 15513, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91e, 15518, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91f, 15522, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f920, 15526, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f921, 15530, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f922, 15534, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f923, 15538, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f924, 15543, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f925, 15547, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f926, 15551, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f927, 15556, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f928, 15561, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f929, 15565, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92a, 15569, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92b, 15573, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92c, 15577, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92d, 15577, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92e, 15581, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92f, 15585, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f930, 15589, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f931, 15593, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f932, 15597, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f933, 15601, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f934, 15605, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f935, 15609, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f936, 15614, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f937, 15618, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f938, 10833, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f939, 15623, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93a, 15628, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93b, 15632, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93c, 15637, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93d, 15642, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93e, 15647, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93f, 15651, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f940, 15655, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f941, 15659, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f942, 15664, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f943, 15669, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f944, 15674, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f945, 15679, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f946, 15683, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f947, 15683, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f948, 15687, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f949, 15691, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94a, 15695, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94b, 15699, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94c, 15703, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94d, 15707, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94e, 15712, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94f, 10685, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f950, 15716, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f951, 15720, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f952, 15724, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f953, 11665, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f954, 15729, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f955, 15734, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f956, 11501, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f957, 15739, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f958, 15743, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f959, 11677, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95a, 15747, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95b, 15751, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95c, 15755, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95d, 15760, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95e, 15760, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95f, 15765, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f960, 15769, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f961, 15773, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f962, 15778, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f963, 15782, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f964, 15786, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f965, 15790, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f966, 15795, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f967, 15799, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f968, 15803, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f969, 15807, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96a, 15811, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96b, 15815, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96c, 15820, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96d, 15824, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96e, 15828, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96f, 15832, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f970, 15836, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f971, 15840, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f972, 15844, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f973, 15849, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f974, 15854, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f975, 15858, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f976, 15863, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f977, 15867, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f978, 15872, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f979, 15876, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97a, 11701, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97b, 15880, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97c, 15885, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97d, 15890, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97e, 15894, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97f, 15899, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f980, 15903, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f981, 15908, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f982, 15912, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f983, 15916, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f984, 15920, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f985, 15924, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f986, 15928, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f987, 15932, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f988, 15937, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f989, 15942, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98a, 15947, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98b, 14994, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98c, 15952, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98d, 15956, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98e, 15960, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98f, 15964, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f990, 15968, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f991, 15972, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f992, 15976, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f993, 15980, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f994, 15984, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f995, 15988, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f996, 15992, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f997, 15996, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f998, 10901, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f999, 16001, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99a, 16005, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99b, 16009, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99c, 16013, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99d, 16017, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99e, 16021, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99f, 11713, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a0, 16025, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a1, 16029, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a2, 16033, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a3, 16037, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a4, 16041, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a5, 16046, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a6, 16051, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a7, 16056, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a8, 16060, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a9, 16064, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9aa, 16068, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ab, 16072, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ac, 16077, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ad, 16081, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ae, 16086, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9af, 16090, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b0, 16094, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b1, 16099, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b2, 16104, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b3, 16108, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b4, 10665, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b5, 16112, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b6, 16116, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b7, 16120, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b8, 16124, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b9, 16128, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ba, 16132, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9bb, 16136, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9bc, 16140, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9bd, 16144, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9be, 16148, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9bf, 16152, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c0, 16156, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c1, 16160, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c2, 16164, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c3, 16168, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c4, 6479, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c5, 16172, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c6, 16177, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c7, 16181, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c8, 16185, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c9, 16189, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ca, 16193, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9cb, 16197, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9cc, 16202, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9cd, 16207, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ce, 16211, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9cf, 16215, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d0, 16219, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d1, 16223, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d2, 6507, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d3, 16227, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d4, 16232, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d5, 16236, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d6, 16240, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d7, 16244, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d8, 16248, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d9, 16253, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9da, 16258, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9db, 16262, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9dc, 16266, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9dd, 16270, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9de, 16275, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9df, 16279, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e0, 16283, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e1, 16288, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e2, 16293, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e3, 16297, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e4, 16301, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e5, 16305, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e6, 16310, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e7, 16314, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e8, 16318, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e9, 16322, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ea, 16326, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9eb, 16330, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ec, 16334, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ed, 16338, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ee, 16343, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ef, 16347, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f0, 16351, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f1, 16355, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f2, 16360, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f3, 16364, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f4, 16368, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f5, 16372, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f6, 16376, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f7, 16381, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f8, 16386, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f9, 16390, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9fa, 16394, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9fb, 16398, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9fc, 16403, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9fd, 16407, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9fe, 16412, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ff, 16412, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa00, 16416, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa01, 16420, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa02, 16425, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa03, 16429, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa04, 16433, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa05, 16437, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa06, 16441, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa07, 16445, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa08, 16449, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa09, 16453, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0a, 16458, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0b, 16462, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0c, 16466, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0d, 16470, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0e, 16474, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0f, 16478, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa10, 16482, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa11, 16487, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa12, 16491, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa13, 16496, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa14, 16501, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa15, 6699, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa16, 16506, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa17, 6715, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa18, 16510, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa19, 16514, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa1a, 16518, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa1b, 16522, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa1c, 6735, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa1d, 16526, G_UNICODE_NOT_PRESENT_OFFSET }
+};
+
+static const gchar decomp_expansion_string[] = 
+  "\x20\0" /* offset 0 */
+  "\x20\xcc\x88\0" /* offset 2 */
+  "\x61\0" /* offset 6 */
+  "\x20\xcc\x84\0" /* offset 8 */
+  "\x32\0" /* offset 12 */
+  "\x33\0" /* offset 14 */
+  "\x20\xcc\x81\0" /* offset 16 */
+  "\xce\xbc\0" /* offset 20 */
+  "\x20\xcc\xa7\0" /* offset 23 */
+  "\x31\0" /* offset 27 */
+  "\x6f\0" /* offset 29 */
+  "\x31\xe2\x81\x84\x34\0" /* offset 31 */
+  "\x31\xe2\x81\x84\x32\0" /* offset 37 */
+  "\x33\xe2\x81\x84\x34\0" /* offset 43 */
+  "\x41\xcc\x80\0" /* offset 49 */
+  "\x41\xcc\x81\0" /* offset 53 */
+  "\x41\xcc\x82\0" /* offset 57 */
+  "\x41\xcc\x83\0" /* offset 61 */
+  "\x41\xcc\x88\0" /* offset 65 */
+  "\x41\xcc\x8a\0" /* offset 69 */
+  "\x43\xcc\xa7\0" /* offset 73 */
+  "\x45\xcc\x80\0" /* offset 77 */
+  "\x45\xcc\x81\0" /* offset 81 */
+  "\x45\xcc\x82\0" /* offset 85 */
+  "\x45\xcc\x88\0" /* offset 89 */
+  "\x49\xcc\x80\0" /* offset 93 */
+  "\x49\xcc\x81\0" /* offset 97 */
+  "\x49\xcc\x82\0" /* offset 101 */
+  "\x49\xcc\x88\0" /* offset 105 */
+  "\x4e\xcc\x83\0" /* offset 109 */
+  "\x4f\xcc\x80\0" /* offset 113 */
+  "\x4f\xcc\x81\0" /* offset 117 */
+  "\x4f\xcc\x82\0" /* offset 121 */
+  "\x4f\xcc\x83\0" /* offset 125 */
+  "\x4f\xcc\x88\0" /* offset 129 */
+  "\x55\xcc\x80\0" /* offset 133 */
+  "\x55\xcc\x81\0" /* offset 137 */
+  "\x55\xcc\x82\0" /* offset 141 */
+  "\x55\xcc\x88\0" /* offset 145 */
+  "\x59\xcc\x81\0" /* offset 149 */
+  "\x61\xcc\x80\0" /* offset 153 */
+  "\x61\xcc\x81\0" /* offset 157 */
+  "\x61\xcc\x82\0" /* offset 161 */
+  "\x61\xcc\x83\0" /* offset 165 */
+  "\x61\xcc\x88\0" /* offset 169 */
+  "\x61\xcc\x8a\0" /* offset 173 */
+  "\x63\xcc\xa7\0" /* offset 177 */
+  "\x65\xcc\x80\0" /* offset 181 */
+  "\x65\xcc\x81\0" /* offset 185 */
+  "\x65\xcc\x82\0" /* offset 189 */
+  "\x65\xcc\x88\0" /* offset 193 */
+  "\x69\xcc\x80\0" /* offset 197 */
+  "\x69\xcc\x81\0" /* offset 201 */
+  "\x69\xcc\x82\0" /* offset 205 */
+  "\x69\xcc\x88\0" /* offset 209 */
+  "\x6e\xcc\x83\0" /* offset 213 */
+  "\x6f\xcc\x80\0" /* offset 217 */
+  "\x6f\xcc\x81\0" /* offset 221 */
+  "\x6f\xcc\x82\0" /* offset 225 */
+  "\x6f\xcc\x83\0" /* offset 229 */
+  "\x6f\xcc\x88\0" /* offset 233 */
+  "\x75\xcc\x80\0" /* offset 237 */
+  "\x75\xcc\x81\0" /* offset 241 */
+  "\x75\xcc\x82\0" /* offset 245 */
+  "\x75\xcc\x88\0" /* offset 249 */
+  "\x79\xcc\x81\0" /* offset 253 */
+  "\x79\xcc\x88\0" /* offset 257 */
+  "\x41\xcc\x84\0" /* offset 261 */
+  "\x61\xcc\x84\0" /* offset 265 */
+  "\x41\xcc\x86\0" /* offset 269 */
+  "\x61\xcc\x86\0" /* offset 273 */
+  "\x41\xcc\xa8\0" /* offset 277 */
+  "\x61\xcc\xa8\0" /* offset 281 */
+  "\x43\xcc\x81\0" /* offset 285 */
+  "\x63\xcc\x81\0" /* offset 289 */
+  "\x43\xcc\x82\0" /* offset 293 */
+  "\x63\xcc\x82\0" /* offset 297 */
+  "\x43\xcc\x87\0" /* offset 301 */
+  "\x63\xcc\x87\0" /* offset 305 */
+  "\x43\xcc\x8c\0" /* offset 309 */
+  "\x63\xcc\x8c\0" /* offset 313 */
+  "\x44\xcc\x8c\0" /* offset 317 */
+  "\x64\xcc\x8c\0" /* offset 321 */
+  "\x45\xcc\x84\0" /* offset 325 */
+  "\x65\xcc\x84\0" /* offset 329 */
+  "\x45\xcc\x86\0" /* offset 333 */
+  "\x65\xcc\x86\0" /* offset 337 */
+  "\x45\xcc\x87\0" /* offset 341 */
+  "\x65\xcc\x87\0" /* offset 345 */
+  "\x45\xcc\xa8\0" /* offset 349 */
+  "\x65\xcc\xa8\0" /* offset 353 */
+  "\x45\xcc\x8c\0" /* offset 357 */
+  "\x65\xcc\x8c\0" /* offset 361 */
+  "\x47\xcc\x82\0" /* offset 365 */
+  "\x67\xcc\x82\0" /* offset 369 */
+  "\x47\xcc\x86\0" /* offset 373 */
+  "\x67\xcc\x86\0" /* offset 377 */
+  "\x47\xcc\x87\0" /* offset 381 */
+  "\x67\xcc\x87\0" /* offset 385 */
+  "\x47\xcc\xa7\0" /* offset 389 */
+  "\x67\xcc\xa7\0" /* offset 393 */
+  "\x48\xcc\x82\0" /* offset 397 */
+  "\x68\xcc\x82\0" /* offset 401 */
+  "\x49\xcc\x83\0" /* offset 405 */
+  "\x69\xcc\x83\0" /* offset 409 */
+  "\x49\xcc\x84\0" /* offset 413 */
+  "\x69\xcc\x84\0" /* offset 417 */
+  "\x49\xcc\x86\0" /* offset 421 */
+  "\x69\xcc\x86\0" /* offset 425 */
+  "\x49\xcc\xa8\0" /* offset 429 */
+  "\x69\xcc\xa8\0" /* offset 433 */
+  "\x49\xcc\x87\0" /* offset 437 */
+  "\x49\x4a\0" /* offset 441 */
+  "\x69\x6a\0" /* offset 444 */
+  "\x4a\xcc\x82\0" /* offset 447 */
+  "\x6a\xcc\x82\0" /* offset 451 */
+  "\x4b\xcc\xa7\0" /* offset 455 */
+  "\x6b\xcc\xa7\0" /* offset 459 */
+  "\x4c\xcc\x81\0" /* offset 463 */
+  "\x6c\xcc\x81\0" /* offset 467 */
+  "\x4c\xcc\xa7\0" /* offset 471 */
+  "\x6c\xcc\xa7\0" /* offset 475 */
+  "\x4c\xcc\x8c\0" /* offset 479 */
+  "\x6c\xcc\x8c\0" /* offset 483 */
+  "\x4c\xc2\xb7\0" /* offset 487 */
+  "\x6c\xc2\xb7\0" /* offset 491 */
+  "\x4e\xcc\x81\0" /* offset 495 */
+  "\x6e\xcc\x81\0" /* offset 499 */
+  "\x4e\xcc\xa7\0" /* offset 503 */
+  "\x6e\xcc\xa7\0" /* offset 507 */
+  "\x4e\xcc\x8c\0" /* offset 511 */
+  "\x6e\xcc\x8c\0" /* offset 515 */
+  "\xca\xbc\x6e\0" /* offset 519 */
+  "\x4f\xcc\x84\0" /* offset 523 */
+  "\x6f\xcc\x84\0" /* offset 527 */
+  "\x4f\xcc\x86\0" /* offset 531 */
+  "\x6f\xcc\x86\0" /* offset 535 */
+  "\x4f\xcc\x8b\0" /* offset 539 */
+  "\x6f\xcc\x8b\0" /* offset 543 */
+  "\x52\xcc\x81\0" /* offset 547 */
+  "\x72\xcc\x81\0" /* offset 551 */
+  "\x52\xcc\xa7\0" /* offset 555 */
+  "\x72\xcc\xa7\0" /* offset 559 */
+  "\x52\xcc\x8c\0" /* offset 563 */
+  "\x72\xcc\x8c\0" /* offset 567 */
+  "\x53\xcc\x81\0" /* offset 571 */
+  "\x73\xcc\x81\0" /* offset 575 */
+  "\x53\xcc\x82\0" /* offset 579 */
+  "\x73\xcc\x82\0" /* offset 583 */
+  "\x53\xcc\xa7\0" /* offset 587 */
+  "\x73\xcc\xa7\0" /* offset 591 */
+  "\x53\xcc\x8c\0" /* offset 595 */
+  "\x73\xcc\x8c\0" /* offset 599 */
+  "\x54\xcc\xa7\0" /* offset 603 */
+  "\x74\xcc\xa7\0" /* offset 607 */
+  "\x54\xcc\x8c\0" /* offset 611 */
+  "\x74\xcc\x8c\0" /* offset 615 */
+  "\x55\xcc\x83\0" /* offset 619 */
+  "\x75\xcc\x83\0" /* offset 623 */
+  "\x55\xcc\x84\0" /* offset 627 */
+  "\x75\xcc\x84\0" /* offset 631 */
+  "\x55\xcc\x86\0" /* offset 635 */
+  "\x75\xcc\x86\0" /* offset 639 */
+  "\x55\xcc\x8a\0" /* offset 643 */
+  "\x75\xcc\x8a\0" /* offset 647 */
+  "\x55\xcc\x8b\0" /* offset 651 */
+  "\x75\xcc\x8b\0" /* offset 655 */
+  "\x55\xcc\xa8\0" /* offset 659 */
+  "\x75\xcc\xa8\0" /* offset 663 */
+  "\x57\xcc\x82\0" /* offset 667 */
+  "\x77\xcc\x82\0" /* offset 671 */
+  "\x59\xcc\x82\0" /* offset 675 */
+  "\x79\xcc\x82\0" /* offset 679 */
+  "\x59\xcc\x88\0" /* offset 683 */
+  "\x5a\xcc\x81\0" /* offset 687 */
+  "\x7a\xcc\x81\0" /* offset 691 */
+  "\x5a\xcc\x87\0" /* offset 695 */
+  "\x7a\xcc\x87\0" /* offset 699 */
+  "\x5a\xcc\x8c\0" /* offset 703 */
+  "\x7a\xcc\x8c\0" /* offset 707 */
+  "\x73\0" /* offset 711 */
+  "\x4f\xcc\x9b\0" /* offset 713 */
+  "\x6f\xcc\x9b\0" /* offset 717 */
+  "\x55\xcc\x9b\0" /* offset 721 */
+  "\x75\xcc\x9b\0" /* offset 725 */
+  "\x44\x5a\xcc\x8c\0" /* offset 729 */
+  "\x44\x7a\xcc\x8c\0" /* offset 734 */
+  "\x64\x7a\xcc\x8c\0" /* offset 739 */
+  "\x4c\x4a\0" /* offset 744 */
+  "\x4c\x6a\0" /* offset 747 */
+  "\x6c\x6a\0" /* offset 750 */
+  "\x4e\x4a\0" /* offset 753 */
+  "\x4e\x6a\0" /* offset 756 */
+  "\x6e\x6a\0" /* offset 759 */
+  "\x41\xcc\x8c\0" /* offset 762 */
+  "\x61\xcc\x8c\0" /* offset 766 */
+  "\x49\xcc\x8c\0" /* offset 770 */
+  "\x69\xcc\x8c\0" /* offset 774 */
+  "\x4f\xcc\x8c\0" /* offset 778 */
+  "\x6f\xcc\x8c\0" /* offset 782 */
+  "\x55\xcc\x8c\0" /* offset 786 */
+  "\x75\xcc\x8c\0" /* offset 790 */
+  "\x55\xcc\x88\xcc\x84\0" /* offset 794 */
+  "\x75\xcc\x88\xcc\x84\0" /* offset 800 */
+  "\x55\xcc\x88\xcc\x81\0" /* offset 806 */
+  "\x75\xcc\x88\xcc\x81\0" /* offset 812 */
+  "\x55\xcc\x88\xcc\x8c\0" /* offset 818 */
+  "\x75\xcc\x88\xcc\x8c\0" /* offset 824 */
+  "\x55\xcc\x88\xcc\x80\0" /* offset 830 */
+  "\x75\xcc\x88\xcc\x80\0" /* offset 836 */
+  "\x41\xcc\x88\xcc\x84\0" /* offset 842 */
+  "\x61\xcc\x88\xcc\x84\0" /* offset 848 */
+  "\x41\xcc\x87\xcc\x84\0" /* offset 854 */
+  "\x61\xcc\x87\xcc\x84\0" /* offset 860 */
+  "\xc3\x86\xcc\x84\0" /* offset 866 */
+  "\xc3\xa6\xcc\x84\0" /* offset 871 */
+  "\x47\xcc\x8c\0" /* offset 876 */
+  "\x67\xcc\x8c\0" /* offset 880 */
+  "\x4b\xcc\x8c\0" /* offset 884 */
+  "\x6b\xcc\x8c\0" /* offset 888 */
+  "\x4f\xcc\xa8\0" /* offset 892 */
+  "\x6f\xcc\xa8\0" /* offset 896 */
+  "\x4f\xcc\xa8\xcc\x84\0" /* offset 900 */
+  "\x6f\xcc\xa8\xcc\x84\0" /* offset 906 */
+  "\xc6\xb7\xcc\x8c\0" /* offset 912 */
+  "\xca\x92\xcc\x8c\0" /* offset 917 */
+  "\x6a\xcc\x8c\0" /* offset 922 */
+  "\x44\x5a\0" /* offset 926 */
+  "\x44\x7a\0" /* offset 929 */
+  "\x64\x7a\0" /* offset 932 */
+  "\x47\xcc\x81\0" /* offset 935 */
+  "\x67\xcc\x81\0" /* offset 939 */
+  "\x4e\xcc\x80\0" /* offset 943 */
+  "\x6e\xcc\x80\0" /* offset 947 */
+  "\x41\xcc\x8a\xcc\x81\0" /* offset 951 */
+  "\x61\xcc\x8a\xcc\x81\0" /* offset 957 */
+  "\xc3\x86\xcc\x81\0" /* offset 963 */
+  "\xc3\xa6\xcc\x81\0" /* offset 968 */
+  "\xc3\x98\xcc\x81\0" /* offset 973 */
+  "\xc3\xb8\xcc\x81\0" /* offset 978 */
+  "\x41\xcc\x8f\0" /* offset 983 */
+  "\x61\xcc\x8f\0" /* offset 987 */
+  "\x41\xcc\x91\0" /* offset 991 */
+  "\x61\xcc\x91\0" /* offset 995 */
+  "\x45\xcc\x8f\0" /* offset 999 */
+  "\x65\xcc\x8f\0" /* offset 1003 */
+  "\x45\xcc\x91\0" /* offset 1007 */
+  "\x65\xcc\x91\0" /* offset 1011 */
+  "\x49\xcc\x8f\0" /* offset 1015 */
+  "\x69\xcc\x8f\0" /* offset 1019 */
+  "\x49\xcc\x91\0" /* offset 1023 */
+  "\x69\xcc\x91\0" /* offset 1027 */
+  "\x4f\xcc\x8f\0" /* offset 1031 */
+  "\x6f\xcc\x8f\0" /* offset 1035 */
+  "\x4f\xcc\x91\0" /* offset 1039 */
+  "\x6f\xcc\x91\0" /* offset 1043 */
+  "\x52\xcc\x8f\0" /* offset 1047 */
+  "\x72\xcc\x8f\0" /* offset 1051 */
+  "\x52\xcc\x91\0" /* offset 1055 */
+  "\x72\xcc\x91\0" /* offset 1059 */
+  "\x55\xcc\x8f\0" /* offset 1063 */
+  "\x75\xcc\x8f\0" /* offset 1067 */
+  "\x55\xcc\x91\0" /* offset 1071 */
+  "\x75\xcc\x91\0" /* offset 1075 */
+  "\x53\xcc\xa6\0" /* offset 1079 */
+  "\x73\xcc\xa6\0" /* offset 1083 */
+  "\x54\xcc\xa6\0" /* offset 1087 */
+  "\x74\xcc\xa6\0" /* offset 1091 */
+  "\x48\xcc\x8c\0" /* offset 1095 */
+  "\x68\xcc\x8c\0" /* offset 1099 */
+  "\x41\xcc\x87\0" /* offset 1103 */
+  "\x61\xcc\x87\0" /* offset 1107 */
+  "\x45\xcc\xa7\0" /* offset 1111 */
+  "\x65\xcc\xa7\0" /* offset 1115 */
+  "\x4f\xcc\x88\xcc\x84\0" /* offset 1119 */
+  "\x6f\xcc\x88\xcc\x84\0" /* offset 1125 */
+  "\x4f\xcc\x83\xcc\x84\0" /* offset 1131 */
+  "\x6f\xcc\x83\xcc\x84\0" /* offset 1137 */
+  "\x4f\xcc\x87\0" /* offset 1143 */
+  "\x6f\xcc\x87\0" /* offset 1147 */
+  "\x4f\xcc\x87\xcc\x84\0" /* offset 1151 */
+  "\x6f\xcc\x87\xcc\x84\0" /* offset 1157 */
+  "\x59\xcc\x84\0" /* offset 1163 */
+  "\x79\xcc\x84\0" /* offset 1167 */
+  "\x68\0" /* offset 1171 */
+  "\xc9\xa6\0" /* offset 1173 */
+  "\x6a\0" /* offset 1176 */
+  "\x72\0" /* offset 1178 */
+  "\xc9\xb9\0" /* offset 1180 */
+  "\xc9\xbb\0" /* offset 1183 */
+  "\xca\x81\0" /* offset 1186 */
+  "\x77\0" /* offset 1189 */
+  "\x79\0" /* offset 1191 */
+  "\x20\xcc\x86\0" /* offset 1193 */
+  "\x20\xcc\x87\0" /* offset 1197 */
+  "\x20\xcc\x8a\0" /* offset 1201 */
+  "\x20\xcc\xa8\0" /* offset 1205 */
+  "\x20\xcc\x83\0" /* offset 1209 */
+  "\x20\xcc\x8b\0" /* offset 1213 */
+  "\xc9\xa3\0" /* offset 1217 */
+  "\x6c\0" /* offset 1220 */
+  "\x78\0" /* offset 1222 */
+  "\xca\x95\0" /* offset 1224 */
+  "\xcc\x80\0" /* offset 1227 */
+  "\xcc\x81\0" /* offset 1230 */
+  "\xcc\x93\0" /* offset 1233 */
+  "\xcc\x88\xcc\x81\0" /* offset 1236 */
+  "\xca\xb9\0" /* offset 1241 */
+  "\x20\xcd\x85\0" /* offset 1244 */
+  "\x3b\0" /* offset 1248 */
+  "\xc2\xa8\xcc\x81\0" /* offset 1250 */
+  "\x20\xcc\x88\xcc\x81\0" /* offset 1255 */
+  "\xce\x91\xcc\x81\0" /* offset 1261 */
+  "\xc2\xb7\0" /* offset 1266 */
+  "\xce\x95\xcc\x81\0" /* offset 1269 */
+  "\xce\x97\xcc\x81\0" /* offset 1274 */
+  "\xce\x99\xcc\x81\0" /* offset 1279 */
+  "\xce\x9f\xcc\x81\0" /* offset 1284 */
+  "\xce\xa5\xcc\x81\0" /* offset 1289 */
+  "\xce\xa9\xcc\x81\0" /* offset 1294 */
+  "\xce\xb9\xcc\x88\xcc\x81\0" /* offset 1299 */
+  "\xce\x99\xcc\x88\0" /* offset 1306 */
+  "\xce\xa5\xcc\x88\0" /* offset 1311 */
+  "\xce\xb1\xcc\x81\0" /* offset 1316 */
+  "\xce\xb5\xcc\x81\0" /* offset 1321 */
+  "\xce\xb7\xcc\x81\0" /* offset 1326 */
+  "\xce\xb9\xcc\x81\0" /* offset 1331 */
+  "\xcf\x85\xcc\x88\xcc\x81\0" /* offset 1336 */
+  "\xce\xb9\xcc\x88\0" /* offset 1343 */
+  "\xcf\x85\xcc\x88\0" /* offset 1348 */
+  "\xce\xbf\xcc\x81\0" /* offset 1353 */
+  "\xcf\x85\xcc\x81\0" /* offset 1358 */
+  "\xcf\x89\xcc\x81\0" /* offset 1363 */
+  "\xce\xb2\0" /* offset 1368 */
+  "\xce\xb8\0" /* offset 1371 */
+  "\xce\xa5\0" /* offset 1374 */
+  "\xcf\x92\xcc\x81\0" /* offset 1377 */
+  "\xcf\x92\xcc\x88\0" /* offset 1382 */
+  "\xcf\x86\0" /* offset 1387 */
+  "\xcf\x80\0" /* offset 1390 */
+  "\xce\xba\0" /* offset 1393 */
+  "\xcf\x81\0" /* offset 1396 */
+  "\xcf\x82\0" /* offset 1399 */
+  "\xce\x98\0" /* offset 1402 */
+  "\xce\xb5\0" /* offset 1405 */
+  "\xd0\x95\xcc\x80\0" /* offset 1408 */
+  "\xd0\x95\xcc\x88\0" /* offset 1413 */
+  "\xd0\x93\xcc\x81\0" /* offset 1418 */
+  "\xd0\x86\xcc\x88\0" /* offset 1423 */
+  "\xd0\x9a\xcc\x81\0" /* offset 1428 */
+  "\xd0\x98\xcc\x80\0" /* offset 1433 */
+  "\xd0\xa3\xcc\x86\0" /* offset 1438 */
+  "\xd0\x98\xcc\x86\0" /* offset 1443 */
+  "\xd0\xb8\xcc\x86\0" /* offset 1448 */
+  "\xd0\xb5\xcc\x80\0" /* offset 1453 */
+  "\xd0\xb5\xcc\x88\0" /* offset 1458 */
+  "\xd0\xb3\xcc\x81\0" /* offset 1463 */
+  "\xd1\x96\xcc\x88\0" /* offset 1468 */
+  "\xd0\xba\xcc\x81\0" /* offset 1473 */
+  "\xd0\xb8\xcc\x80\0" /* offset 1478 */
+  "\xd1\x83\xcc\x86\0" /* offset 1483 */
+  "\xd1\xb4\xcc\x8f\0" /* offset 1488 */
+  "\xd1\xb5\xcc\x8f\0" /* offset 1493 */
+  "\xd0\x96\xcc\x86\0" /* offset 1498 */
+  "\xd0\xb6\xcc\x86\0" /* offset 1503 */
+  "\xd0\x90\xcc\x86\0" /* offset 1508 */
+  "\xd0\xb0\xcc\x86\0" /* offset 1513 */
+  "\xd0\x90\xcc\x88\0" /* offset 1518 */
+  "\xd0\xb0\xcc\x88\0" /* offset 1523 */
+  "\xd0\x95\xcc\x86\0" /* offset 1528 */
+  "\xd0\xb5\xcc\x86\0" /* offset 1533 */
+  "\xd3\x98\xcc\x88\0" /* offset 1538 */
+  "\xd3\x99\xcc\x88\0" /* offset 1543 */
+  "\xd0\x96\xcc\x88\0" /* offset 1548 */
+  "\xd0\xb6\xcc\x88\0" /* offset 1553 */
+  "\xd0\x97\xcc\x88\0" /* offset 1558 */
+  "\xd0\xb7\xcc\x88\0" /* offset 1563 */
+  "\xd0\x98\xcc\x84\0" /* offset 1568 */
+  "\xd0\xb8\xcc\x84\0" /* offset 1573 */
+  "\xd0\x98\xcc\x88\0" /* offset 1578 */
+  "\xd0\xb8\xcc\x88\0" /* offset 1583 */
+  "\xd0\x9e\xcc\x88\0" /* offset 1588 */
+  "\xd0\xbe\xcc\x88\0" /* offset 1593 */
+  "\xd3\xa8\xcc\x88\0" /* offset 1598 */
+  "\xd3\xa9\xcc\x88\0" /* offset 1603 */
+  "\xd0\xad\xcc\x88\0" /* offset 1608 */
+  "\xd1\x8d\xcc\x88\0" /* offset 1613 */
+  "\xd0\xa3\xcc\x84\0" /* offset 1618 */
+  "\xd1\x83\xcc\x84\0" /* offset 1623 */
+  "\xd0\xa3\xcc\x88\0" /* offset 1628 */
+  "\xd1\x83\xcc\x88\0" /* offset 1633 */
+  "\xd0\xa3\xcc\x8b\0" /* offset 1638 */
+  "\xd1\x83\xcc\x8b\0" /* offset 1643 */
+  "\xd0\xa7\xcc\x88\0" /* offset 1648 */
+  "\xd1\x87\xcc\x88\0" /* offset 1653 */
+  "\xd0\xab\xcc\x88\0" /* offset 1658 */
+  "\xd1\x8b\xcc\x88\0" /* offset 1663 */
+  "\xd5\xa5\xd6\x82\0" /* offset 1668 */
+  "\xd8\xa7\xd9\x93\0" /* offset 1673 */
+  "\xd8\xa7\xd9\x94\0" /* offset 1678 */
+  "\xd9\x88\xd9\x94\0" /* offset 1683 */
+  "\xd8\xa7\xd9\x95\0" /* offset 1688 */
+  "\xd9\x8a\xd9\x94\0" /* offset 1693 */
+  "\xd8\xa7\xd9\xb4\0" /* offset 1698 */
+  "\xd9\x88\xd9\xb4\0" /* offset 1703 */
+  "\xdb\x87\xd9\xb4\0" /* offset 1708 */
+  "\xd9\x8a\xd9\xb4\0" /* offset 1713 */
+  "\xdb\x95\xd9\x94\0" /* offset 1718 */
+  "\xdb\x81\xd9\x94\0" /* offset 1723 */
+  "\xdb\x92\xd9\x94\0" /* offset 1728 */
+  "\xe0\xa4\xa8\xe0\xa4\xbc\0" /* offset 1733 */
+  "\xe0\xa4\xb0\xe0\xa4\xbc\0" /* offset 1740 */
+  "\xe0\xa4\xb3\xe0\xa4\xbc\0" /* offset 1747 */
+  "\xe0\xa4\x95\xe0\xa4\xbc\0" /* offset 1754 */
+  "\xe0\xa4\x96\xe0\xa4\xbc\0" /* offset 1761 */
+  "\xe0\xa4\x97\xe0\xa4\xbc\0" /* offset 1768 */
+  "\xe0\xa4\x9c\xe0\xa4\xbc\0" /* offset 1775 */
+  "\xe0\xa4\xa1\xe0\xa4\xbc\0" /* offset 1782 */
+  "\xe0\xa4\xa2\xe0\xa4\xbc\0" /* offset 1789 */
+  "\xe0\xa4\xab\xe0\xa4\xbc\0" /* offset 1796 */
+  "\xe0\xa4\xaf\xe0\xa4\xbc\0" /* offset 1803 */
+  "\xe0\xa7\x87\xe0\xa6\xbe\0" /* offset 1810 */
+  "\xe0\xa7\x87\xe0\xa7\x97\0" /* offset 1817 */
+  "\xe0\xa6\xa1\xe0\xa6\xbc\0" /* offset 1824 */
+  "\xe0\xa6\xa2\xe0\xa6\xbc\0" /* offset 1831 */
+  "\xe0\xa6\xaf\xe0\xa6\xbc\0" /* offset 1838 */
+  "\xe0\xa8\xb2\xe0\xa8\xbc\0" /* offset 1845 */
+  "\xe0\xa8\xb8\xe0\xa8\xbc\0" /* offset 1852 */
+  "\xe0\xa8\x96\xe0\xa8\xbc\0" /* offset 1859 */
+  "\xe0\xa8\x97\xe0\xa8\xbc\0" /* offset 1866 */
+  "\xe0\xa8\x9c\xe0\xa8\xbc\0" /* offset 1873 */
+  "\xe0\xa8\xab\xe0\xa8\xbc\0" /* offset 1880 */
+  "\xe0\xad\x87\xe0\xad\x96\0" /* offset 1887 */
+  "\xe0\xad\x87\xe0\xac\xbe\0" /* offset 1894 */
+  "\xe0\xad\x87\xe0\xad\x97\0" /* offset 1901 */
+  "\xe0\xac\xa1\xe0\xac\xbc\0" /* offset 1908 */
+  "\xe0\xac\xa2\xe0\xac\xbc\0" /* offset 1915 */
+  "\xe0\xae\x92\xe0\xaf\x97\0" /* offset 1922 */
+  "\xe0\xaf\x86\xe0\xae\xbe\0" /* offset 1929 */
+  "\xe0\xaf\x87\xe0\xae\xbe\0" /* offset 1936 */
+  "\xe0\xaf\x86\xe0\xaf\x97\0" /* offset 1943 */
+  "\xe0\xb1\x86\xe0\xb1\x96\0" /* offset 1950 */
+  "\xe0\xb2\xbf\xe0\xb3\x95\0" /* offset 1957 */
+  "\xe0\xb3\x86\xe0\xb3\x95\0" /* offset 1964 */
+  "\xe0\xb3\x86\xe0\xb3\x96\0" /* offset 1971 */
+  "\xe0\xb3\x86\xe0\xb3\x82\0" /* offset 1978 */
+  "\xe0\xb3\x86\xe0\xb3\x82\xe0\xb3\x95\0" /* offset 1985 */
+  "\xe0\xb5\x86\xe0\xb4\xbe\0" /* offset 1995 */
+  "\xe0\xb5\x87\xe0\xb4\xbe\0" /* offset 2002 */
+  "\xe0\xb5\x86\xe0\xb5\x97\0" /* offset 2009 */
+  "\xe0\xb7\x99\xe0\xb7\x8a\0" /* offset 2016 */
+  "\xe0\xb7\x99\xe0\xb7\x8f\0" /* offset 2023 */
+  "\xe0\xb7\x99\xe0\xb7\x8f\xe0\xb7\x8a\0" /* offset 2030 */
+  "\xe0\xb7\x99\xe0\xb7\x9f\0" /* offset 2040 */
+  "\xe0\xb9\x8d\xe0\xb8\xb2\0" /* offset 2047 */
+  "\xe0\xbb\x8d\xe0\xba\xb2\0" /* offset 2054 */
+  "\xe0\xba\xab\xe0\xba\x99\0" /* offset 2061 */
+  "\xe0\xba\xab\xe0\xba\xa1\0" /* offset 2068 */
+  "\xe0\xbc\x8b\0" /* offset 2075 */
+  "\xe0\xbd\x82\xe0\xbe\xb7\0" /* offset 2079 */
+  "\xe0\xbd\x8c\xe0\xbe\xb7\0" /* offset 2086 */
+  "\xe0\xbd\x91\xe0\xbe\xb7\0" /* offset 2093 */
+  "\xe0\xbd\x96\xe0\xbe\xb7\0" /* offset 2100 */
+  "\xe0\xbd\x9b\xe0\xbe\xb7\0" /* offset 2107 */
+  "\xe0\xbd\x80\xe0\xbe\xb5\0" /* offset 2114 */
+  "\xe0\xbd\xb1\xe0\xbd\xb2\0" /* offset 2121 */
+  "\xe0\xbd\xb1\xe0\xbd\xb4\0" /* offset 2128 */
+  "\xe0\xbe\xb2\xe0\xbe\x80\0" /* offset 2135 */
+  "\xe0\xbe\xb2\xe0\xbd\xb1\xe0\xbe\x80\0" /* offset 2142 */
+  "\xe0\xbe\xb3\xe0\xbe\x80\0" /* offset 2152 */
+  "\xe0\xbe\xb3\xe0\xbd\xb1\xe0\xbe\x80\0" /* offset 2159 */
+  "\xe0\xbd\xb1\xe0\xbe\x80\0" /* offset 2169 */
+  "\xe0\xbe\x92\xe0\xbe\xb7\0" /* offset 2176 */
+  "\xe0\xbe\x9c\xe0\xbe\xb7\0" /* offset 2183 */
+  "\xe0\xbe\xa1\xe0\xbe\xb7\0" /* offset 2190 */
+  "\xe0\xbe\xa6\xe0\xbe\xb7\0" /* offset 2197 */
+  "\xe0\xbe\xab\xe0\xbe\xb7\0" /* offset 2204 */
+  "\xe0\xbe\x90\xe0\xbe\xb5\0" /* offset 2211 */
+  "\xe1\x80\xa5\xe1\x80\xae\0" /* offset 2218 */
+  "\x41\xcc\xa5\0" /* offset 2225 */
+  "\x61\xcc\xa5\0" /* offset 2229 */
+  "\x42\xcc\x87\0" /* offset 2233 */
+  "\x62\xcc\x87\0" /* offset 2237 */
+  "\x42\xcc\xa3\0" /* offset 2241 */
+  "\x62\xcc\xa3\0" /* offset 2245 */
+  "\x42\xcc\xb1\0" /* offset 2249 */
+  "\x62\xcc\xb1\0" /* offset 2253 */
+  "\x43\xcc\xa7\xcc\x81\0" /* offset 2257 */
+  "\x63\xcc\xa7\xcc\x81\0" /* offset 2263 */
+  "\x44\xcc\x87\0" /* offset 2269 */
+  "\x64\xcc\x87\0" /* offset 2273 */
+  "\x44\xcc\xa3\0" /* offset 2277 */
+  "\x64\xcc\xa3\0" /* offset 2281 */
+  "\x44\xcc\xb1\0" /* offset 2285 */
+  "\x64\xcc\xb1\0" /* offset 2289 */
+  "\x44\xcc\xa7\0" /* offset 2293 */
+  "\x64\xcc\xa7\0" /* offset 2297 */
+  "\x44\xcc\xad\0" /* offset 2301 */
+  "\x64\xcc\xad\0" /* offset 2305 */
+  "\x45\xcc\x84\xcc\x80\0" /* offset 2309 */
+  "\x65\xcc\x84\xcc\x80\0" /* offset 2315 */
+  "\x45\xcc\x84\xcc\x81\0" /* offset 2321 */
+  "\x65\xcc\x84\xcc\x81\0" /* offset 2327 */
+  "\x45\xcc\xad\0" /* offset 2333 */
+  "\x65\xcc\xad\0" /* offset 2337 */
+  "\x45\xcc\xb0\0" /* offset 2341 */
+  "\x65\xcc\xb0\0" /* offset 2345 */
+  "\x45\xcc\xa7\xcc\x86\0" /* offset 2349 */
+  "\x65\xcc\xa7\xcc\x86\0" /* offset 2355 */
+  "\x46\xcc\x87\0" /* offset 2361 */
+  "\x66\xcc\x87\0" /* offset 2365 */
+  "\x47\xcc\x84\0" /* offset 2369 */
+  "\x67\xcc\x84\0" /* offset 2373 */
+  "\x48\xcc\x87\0" /* offset 2377 */
+  "\x68\xcc\x87\0" /* offset 2381 */
+  "\x48\xcc\xa3\0" /* offset 2385 */
+  "\x68\xcc\xa3\0" /* offset 2389 */
+  "\x48\xcc\x88\0" /* offset 2393 */
+  "\x68\xcc\x88\0" /* offset 2397 */
+  "\x48\xcc\xa7\0" /* offset 2401 */
+  "\x68\xcc\xa7\0" /* offset 2405 */
+  "\x48\xcc\xae\0" /* offset 2409 */
+  "\x68\xcc\xae\0" /* offset 2413 */
+  "\x49\xcc\xb0\0" /* offset 2417 */
+  "\x69\xcc\xb0\0" /* offset 2421 */
+  "\x49\xcc\x88\xcc\x81\0" /* offset 2425 */
+  "\x69\xcc\x88\xcc\x81\0" /* offset 2431 */
+  "\x4b\xcc\x81\0" /* offset 2437 */
+  "\x6b\xcc\x81\0" /* offset 2441 */
+  "\x4b\xcc\xa3\0" /* offset 2445 */
+  "\x6b\xcc\xa3\0" /* offset 2449 */
+  "\x4b\xcc\xb1\0" /* offset 2453 */
+  "\x6b\xcc\xb1\0" /* offset 2457 */
+  "\x4c\xcc\xa3\0" /* offset 2461 */
+  "\x6c\xcc\xa3\0" /* offset 2465 */
+  "\x4c\xcc\xa3\xcc\x84\0" /* offset 2469 */
+  "\x6c\xcc\xa3\xcc\x84\0" /* offset 2475 */
+  "\x4c\xcc\xb1\0" /* offset 2481 */
+  "\x6c\xcc\xb1\0" /* offset 2485 */
+  "\x4c\xcc\xad\0" /* offset 2489 */
+  "\x6c\xcc\xad\0" /* offset 2493 */
+  "\x4d\xcc\x81\0" /* offset 2497 */
+  "\x6d\xcc\x81\0" /* offset 2501 */
+  "\x4d\xcc\x87\0" /* offset 2505 */
+  "\x6d\xcc\x87\0" /* offset 2509 */
+  "\x4d\xcc\xa3\0" /* offset 2513 */
+  "\x6d\xcc\xa3\0" /* offset 2517 */
+  "\x4e\xcc\x87\0" /* offset 2521 */
+  "\x6e\xcc\x87\0" /* offset 2525 */
+  "\x4e\xcc\xa3\0" /* offset 2529 */
+  "\x6e\xcc\xa3\0" /* offset 2533 */
+  "\x4e\xcc\xb1\0" /* offset 2537 */
+  "\x6e\xcc\xb1\0" /* offset 2541 */
+  "\x4e\xcc\xad\0" /* offset 2545 */
+  "\x6e\xcc\xad\0" /* offset 2549 */
+  "\x4f\xcc\x83\xcc\x81\0" /* offset 2553 */
+  "\x6f\xcc\x83\xcc\x81\0" /* offset 2559 */
+  "\x4f\xcc\x83\xcc\x88\0" /* offset 2565 */
+  "\x6f\xcc\x83\xcc\x88\0" /* offset 2571 */
+  "\x4f\xcc\x84\xcc\x80\0" /* offset 2577 */
+  "\x6f\xcc\x84\xcc\x80\0" /* offset 2583 */
+  "\x4f\xcc\x84\xcc\x81\0" /* offset 2589 */
+  "\x6f\xcc\x84\xcc\x81\0" /* offset 2595 */
+  "\x50\xcc\x81\0" /* offset 2601 */
+  "\x70\xcc\x81\0" /* offset 2605 */
+  "\x50\xcc\x87\0" /* offset 2609 */
+  "\x70\xcc\x87\0" /* offset 2613 */
+  "\x52\xcc\x87\0" /* offset 2617 */
+  "\x72\xcc\x87\0" /* offset 2621 */
+  "\x52\xcc\xa3\0" /* offset 2625 */
+  "\x72\xcc\xa3\0" /* offset 2629 */
+  "\x52\xcc\xa3\xcc\x84\0" /* offset 2633 */
+  "\x72\xcc\xa3\xcc\x84\0" /* offset 2639 */
+  "\x52\xcc\xb1\0" /* offset 2645 */
+  "\x72\xcc\xb1\0" /* offset 2649 */
+  "\x53\xcc\x87\0" /* offset 2653 */
+  "\x73\xcc\x87\0" /* offset 2657 */
+  "\x53\xcc\xa3\0" /* offset 2661 */
+  "\x73\xcc\xa3\0" /* offset 2665 */
+  "\x53\xcc\x81\xcc\x87\0" /* offset 2669 */
+  "\x73\xcc\x81\xcc\x87\0" /* offset 2675 */
+  "\x53\xcc\x8c\xcc\x87\0" /* offset 2681 */
+  "\x73\xcc\x8c\xcc\x87\0" /* offset 2687 */
+  "\x53\xcc\xa3\xcc\x87\0" /* offset 2693 */
+  "\x73\xcc\xa3\xcc\x87\0" /* offset 2699 */
+  "\x54\xcc\x87\0" /* offset 2705 */
+  "\x74\xcc\x87\0" /* offset 2709 */
+  "\x54\xcc\xa3\0" /* offset 2713 */
+  "\x74\xcc\xa3\0" /* offset 2717 */
+  "\x54\xcc\xb1\0" /* offset 2721 */
+  "\x74\xcc\xb1\0" /* offset 2725 */
+  "\x54\xcc\xad\0" /* offset 2729 */
+  "\x74\xcc\xad\0" /* offset 2733 */
+  "\x55\xcc\xa4\0" /* offset 2737 */
+  "\x75\xcc\xa4\0" /* offset 2741 */
+  "\x55\xcc\xb0\0" /* offset 2745 */
+  "\x75\xcc\xb0\0" /* offset 2749 */
+  "\x55\xcc\xad\0" /* offset 2753 */
+  "\x75\xcc\xad\0" /* offset 2757 */
+  "\x55\xcc\x83\xcc\x81\0" /* offset 2761 */
+  "\x75\xcc\x83\xcc\x81\0" /* offset 2767 */
+  "\x55\xcc\x84\xcc\x88\0" /* offset 2773 */
+  "\x75\xcc\x84\xcc\x88\0" /* offset 2779 */
+  "\x56\xcc\x83\0" /* offset 2785 */
+  "\x76\xcc\x83\0" /* offset 2789 */
+  "\x56\xcc\xa3\0" /* offset 2793 */
+  "\x76\xcc\xa3\0" /* offset 2797 */
+  "\x57\xcc\x80\0" /* offset 2801 */
+  "\x77\xcc\x80\0" /* offset 2805 */
+  "\x57\xcc\x81\0" /* offset 2809 */
+  "\x77\xcc\x81\0" /* offset 2813 */
+  "\x57\xcc\x88\0" /* offset 2817 */
+  "\x77\xcc\x88\0" /* offset 2821 */
+  "\x57\xcc\x87\0" /* offset 2825 */
+  "\x77\xcc\x87\0" /* offset 2829 */
+  "\x57\xcc\xa3\0" /* offset 2833 */
+  "\x77\xcc\xa3\0" /* offset 2837 */
+  "\x58\xcc\x87\0" /* offset 2841 */
+  "\x78\xcc\x87\0" /* offset 2845 */
+  "\x58\xcc\x88\0" /* offset 2849 */
+  "\x78\xcc\x88\0" /* offset 2853 */
+  "\x59\xcc\x87\0" /* offset 2857 */
+  "\x79\xcc\x87\0" /* offset 2861 */
+  "\x5a\xcc\x82\0" /* offset 2865 */
+  "\x7a\xcc\x82\0" /* offset 2869 */
+  "\x5a\xcc\xa3\0" /* offset 2873 */
+  "\x7a\xcc\xa3\0" /* offset 2877 */
+  "\x5a\xcc\xb1\0" /* offset 2881 */
+  "\x7a\xcc\xb1\0" /* offset 2885 */
+  "\x68\xcc\xb1\0" /* offset 2889 */
+  "\x74\xcc\x88\0" /* offset 2893 */
+  "\x77\xcc\x8a\0" /* offset 2897 */
+  "\x79\xcc\x8a\0" /* offset 2901 */
+  "\x61\xca\xbe\0" /* offset 2905 */
+  "\xc5\xbf\xcc\x87\0" /* offset 2909 */
+  "\x41\xcc\xa3\0" /* offset 2914 */
+  "\x61\xcc\xa3\0" /* offset 2918 */
+  "\x41\xcc\x89\0" /* offset 2922 */
+  "\x61\xcc\x89\0" /* offset 2926 */
+  "\x41\xcc\x82\xcc\x81\0" /* offset 2930 */
+  "\x61\xcc\x82\xcc\x81\0" /* offset 2936 */
+  "\x41\xcc\x82\xcc\x80\0" /* offset 2942 */
+  "\x61\xcc\x82\xcc\x80\0" /* offset 2948 */
+  "\x41\xcc\x82\xcc\x89\0" /* offset 2954 */
+  "\x61\xcc\x82\xcc\x89\0" /* offset 2960 */
+  "\x41\xcc\x82\xcc\x83\0" /* offset 2966 */
+  "\x61\xcc\x82\xcc\x83\0" /* offset 2972 */
+  "\x41\xcc\xa3\xcc\x82\0" /* offset 2978 */
+  "\x61\xcc\xa3\xcc\x82\0" /* offset 2984 */
+  "\x41\xcc\x86\xcc\x81\0" /* offset 2990 */
+  "\x61\xcc\x86\xcc\x81\0" /* offset 2996 */
+  "\x41\xcc\x86\xcc\x80\0" /* offset 3002 */
+  "\x61\xcc\x86\xcc\x80\0" /* offset 3008 */
+  "\x41\xcc\x86\xcc\x89\0" /* offset 3014 */
+  "\x61\xcc\x86\xcc\x89\0" /* offset 3020 */
+  "\x41\xcc\x86\xcc\x83\0" /* offset 3026 */
+  "\x61\xcc\x86\xcc\x83\0" /* offset 3032 */
+  "\x41\xcc\xa3\xcc\x86\0" /* offset 3038 */
+  "\x61\xcc\xa3\xcc\x86\0" /* offset 3044 */
+  "\x45\xcc\xa3\0" /* offset 3050 */
+  "\x65\xcc\xa3\0" /* offset 3054 */
+  "\x45\xcc\x89\0" /* offset 3058 */
+  "\x65\xcc\x89\0" /* offset 3062 */
+  "\x45\xcc\x83\0" /* offset 3066 */
+  "\x65\xcc\x83\0" /* offset 3070 */
+  "\x45\xcc\x82\xcc\x81\0" /* offset 3074 */
+  "\x65\xcc\x82\xcc\x81\0" /* offset 3080 */
+  "\x45\xcc\x82\xcc\x80\0" /* offset 3086 */
+  "\x65\xcc\x82\xcc\x80\0" /* offset 3092 */
+  "\x45\xcc\x82\xcc\x89\0" /* offset 3098 */
+  "\x65\xcc\x82\xcc\x89\0" /* offset 3104 */
+  "\x45\xcc\x82\xcc\x83\0" /* offset 3110 */
+  "\x65\xcc\x82\xcc\x83\0" /* offset 3116 */
+  "\x45\xcc\xa3\xcc\x82\0" /* offset 3122 */
+  "\x65\xcc\xa3\xcc\x82\0" /* offset 3128 */
+  "\x49\xcc\x89\0" /* offset 3134 */
+  "\x69\xcc\x89\0" /* offset 3138 */
+  "\x49\xcc\xa3\0" /* offset 3142 */
+  "\x69\xcc\xa3\0" /* offset 3146 */
+  "\x4f\xcc\xa3\0" /* offset 3150 */
+  "\x6f\xcc\xa3\0" /* offset 3154 */
+  "\x4f\xcc\x89\0" /* offset 3158 */
+  "\x6f\xcc\x89\0" /* offset 3162 */
+  "\x4f\xcc\x82\xcc\x81\0" /* offset 3166 */
+  "\x6f\xcc\x82\xcc\x81\0" /* offset 3172 */
+  "\x4f\xcc\x82\xcc\x80\0" /* offset 3178 */
+  "\x6f\xcc\x82\xcc\x80\0" /* offset 3184 */
+  "\x4f\xcc\x82\xcc\x89\0" /* offset 3190 */
+  "\x6f\xcc\x82\xcc\x89\0" /* offset 3196 */
+  "\x4f\xcc\x82\xcc\x83\0" /* offset 3202 */
+  "\x6f\xcc\x82\xcc\x83\0" /* offset 3208 */
+  "\x4f\xcc\xa3\xcc\x82\0" /* offset 3214 */
+  "\x6f\xcc\xa3\xcc\x82\0" /* offset 3220 */
+  "\x4f\xcc\x9b\xcc\x81\0" /* offset 3226 */
+  "\x6f\xcc\x9b\xcc\x81\0" /* offset 3232 */
+  "\x4f\xcc\x9b\xcc\x80\0" /* offset 3238 */
+  "\x6f\xcc\x9b\xcc\x80\0" /* offset 3244 */
+  "\x4f\xcc\x9b\xcc\x89\0" /* offset 3250 */
+  "\x6f\xcc\x9b\xcc\x89\0" /* offset 3256 */
+  "\x4f\xcc\x9b\xcc\x83\0" /* offset 3262 */
+  "\x6f\xcc\x9b\xcc\x83\0" /* offset 3268 */
+  "\x4f\xcc\x9b\xcc\xa3\0" /* offset 3274 */
+  "\x6f\xcc\x9b\xcc\xa3\0" /* offset 3280 */
+  "\x55\xcc\xa3\0" /* offset 3286 */
+  "\x75\xcc\xa3\0" /* offset 3290 */
+  "\x55\xcc\x89\0" /* offset 3294 */
+  "\x75\xcc\x89\0" /* offset 3298 */
+  "\x55\xcc\x9b\xcc\x81\0" /* offset 3302 */
+  "\x75\xcc\x9b\xcc\x81\0" /* offset 3308 */
+  "\x55\xcc\x9b\xcc\x80\0" /* offset 3314 */
+  "\x75\xcc\x9b\xcc\x80\0" /* offset 3320 */
+  "\x55\xcc\x9b\xcc\x89\0" /* offset 3326 */
+  "\x75\xcc\x9b\xcc\x89\0" /* offset 3332 */
+  "\x55\xcc\x9b\xcc\x83\0" /* offset 3338 */
+  "\x75\xcc\x9b\xcc\x83\0" /* offset 3344 */
+  "\x55\xcc\x9b\xcc\xa3\0" /* offset 3350 */
+  "\x75\xcc\x9b\xcc\xa3\0" /* offset 3356 */
+  "\x59\xcc\x80\0" /* offset 3362 */
+  "\x79\xcc\x80\0" /* offset 3366 */
+  "\x59\xcc\xa3\0" /* offset 3370 */
+  "\x79\xcc\xa3\0" /* offset 3374 */
+  "\x59\xcc\x89\0" /* offset 3378 */
+  "\x79\xcc\x89\0" /* offset 3382 */
+  "\x59\xcc\x83\0" /* offset 3386 */
+  "\x79\xcc\x83\0" /* offset 3390 */
+  "\xce\xb1\xcc\x93\0" /* offset 3394 */
+  "\xce\xb1\xcc\x94\0" /* offset 3399 */
+  "\xce\xb1\xcc\x93\xcc\x80\0" /* offset 3404 */
+  "\xce\xb1\xcc\x94\xcc\x80\0" /* offset 3411 */
+  "\xce\xb1\xcc\x93\xcc\x81\0" /* offset 3418 */
+  "\xce\xb1\xcc\x94\xcc\x81\0" /* offset 3425 */
+  "\xce\xb1\xcc\x93\xcd\x82\0" /* offset 3432 */
+  "\xce\xb1\xcc\x94\xcd\x82\0" /* offset 3439 */
+  "\xce\x91\xcc\x93\0" /* offset 3446 */
+  "\xce\x91\xcc\x94\0" /* offset 3451 */
+  "\xce\x91\xcc\x93\xcc\x80\0" /* offset 3456 */
+  "\xce\x91\xcc\x94\xcc\x80\0" /* offset 3463 */
+  "\xce\x91\xcc\x93\xcc\x81\0" /* offset 3470 */
+  "\xce\x91\xcc\x94\xcc\x81\0" /* offset 3477 */
+  "\xce\x91\xcc\x93\xcd\x82\0" /* offset 3484 */
+  "\xce\x91\xcc\x94\xcd\x82\0" /* offset 3491 */
+  "\xce\xb5\xcc\x93\0" /* offset 3498 */
+  "\xce\xb5\xcc\x94\0" /* offset 3503 */
+  "\xce\xb5\xcc\x93\xcc\x80\0" /* offset 3508 */
+  "\xce\xb5\xcc\x94\xcc\x80\0" /* offset 3515 */
+  "\xce\xb5\xcc\x93\xcc\x81\0" /* offset 3522 */
+  "\xce\xb5\xcc\x94\xcc\x81\0" /* offset 3529 */
+  "\xce\x95\xcc\x93\0" /* offset 3536 */
+  "\xce\x95\xcc\x94\0" /* offset 3541 */
+  "\xce\x95\xcc\x93\xcc\x80\0" /* offset 3546 */
+  "\xce\x95\xcc\x94\xcc\x80\0" /* offset 3553 */
+  "\xce\x95\xcc\x93\xcc\x81\0" /* offset 3560 */
+  "\xce\x95\xcc\x94\xcc\x81\0" /* offset 3567 */
+  "\xce\xb7\xcc\x93\0" /* offset 3574 */
+  "\xce\xb7\xcc\x94\0" /* offset 3579 */
+  "\xce\xb7\xcc\x93\xcc\x80\0" /* offset 3584 */
+  "\xce\xb7\xcc\x94\xcc\x80\0" /* offset 3591 */
+  "\xce\xb7\xcc\x93\xcc\x81\0" /* offset 3598 */
+  "\xce\xb7\xcc\x94\xcc\x81\0" /* offset 3605 */
+  "\xce\xb7\xcc\x93\xcd\x82\0" /* offset 3612 */
+  "\xce\xb7\xcc\x94\xcd\x82\0" /* offset 3619 */
+  "\xce\x97\xcc\x93\0" /* offset 3626 */
+  "\xce\x97\xcc\x94\0" /* offset 3631 */
+  "\xce\x97\xcc\x93\xcc\x80\0" /* offset 3636 */
+  "\xce\x97\xcc\x94\xcc\x80\0" /* offset 3643 */
+  "\xce\x97\xcc\x93\xcc\x81\0" /* offset 3650 */
+  "\xce\x97\xcc\x94\xcc\x81\0" /* offset 3657 */
+  "\xce\x97\xcc\x93\xcd\x82\0" /* offset 3664 */
+  "\xce\x97\xcc\x94\xcd\x82\0" /* offset 3671 */
+  "\xce\xb9\xcc\x93\0" /* offset 3678 */
+  "\xce\xb9\xcc\x94\0" /* offset 3683 */
+  "\xce\xb9\xcc\x93\xcc\x80\0" /* offset 3688 */
+  "\xce\xb9\xcc\x94\xcc\x80\0" /* offset 3695 */
+  "\xce\xb9\xcc\x93\xcc\x81\0" /* offset 3702 */
+  "\xce\xb9\xcc\x94\xcc\x81\0" /* offset 3709 */
+  "\xce\xb9\xcc\x93\xcd\x82\0" /* offset 3716 */
+  "\xce\xb9\xcc\x94\xcd\x82\0" /* offset 3723 */
+  "\xce\x99\xcc\x93\0" /* offset 3730 */
+  "\xce\x99\xcc\x94\0" /* offset 3735 */
+  "\xce\x99\xcc\x93\xcc\x80\0" /* offset 3740 */
+  "\xce\x99\xcc\x94\xcc\x80\0" /* offset 3747 */
+  "\xce\x99\xcc\x93\xcc\x81\0" /* offset 3754 */
+  "\xce\x99\xcc\x94\xcc\x81\0" /* offset 3761 */
+  "\xce\x99\xcc\x93\xcd\x82\0" /* offset 3768 */
+  "\xce\x99\xcc\x94\xcd\x82\0" /* offset 3775 */
+  "\xce\xbf\xcc\x93\0" /* offset 3782 */
+  "\xce\xbf\xcc\x94\0" /* offset 3787 */
+  "\xce\xbf\xcc\x93\xcc\x80\0" /* offset 3792 */
+  "\xce\xbf\xcc\x94\xcc\x80\0" /* offset 3799 */
+  "\xce\xbf\xcc\x93\xcc\x81\0" /* offset 3806 */
+  "\xce\xbf\xcc\x94\xcc\x81\0" /* offset 3813 */
+  "\xce\x9f\xcc\x93\0" /* offset 3820 */
+  "\xce\x9f\xcc\x94\0" /* offset 3825 */
+  "\xce\x9f\xcc\x93\xcc\x80\0" /* offset 3830 */
+  "\xce\x9f\xcc\x94\xcc\x80\0" /* offset 3837 */
+  "\xce\x9f\xcc\x93\xcc\x81\0" /* offset 3844 */
+  "\xce\x9f\xcc\x94\xcc\x81\0" /* offset 3851 */
+  "\xcf\x85\xcc\x93\0" /* offset 3858 */
+  "\xcf\x85\xcc\x94\0" /* offset 3863 */
+  "\xcf\x85\xcc\x93\xcc\x80\0" /* offset 3868 */
+  "\xcf\x85\xcc\x94\xcc\x80\0" /* offset 3875 */
+  "\xcf\x85\xcc\x93\xcc\x81\0" /* offset 3882 */
+  "\xcf\x85\xcc\x94\xcc\x81\0" /* offset 3889 */
+  "\xcf\x85\xcc\x93\xcd\x82\0" /* offset 3896 */
+  "\xcf\x85\xcc\x94\xcd\x82\0" /* offset 3903 */
+  "\xce\xa5\xcc\x94\0" /* offset 3910 */
+  "\xce\xa5\xcc\x94\xcc\x80\0" /* offset 3915 */
+  "\xce\xa5\xcc\x94\xcc\x81\0" /* offset 3922 */
+  "\xce\xa5\xcc\x94\xcd\x82\0" /* offset 3929 */
+  "\xcf\x89\xcc\x93\0" /* offset 3936 */
+  "\xcf\x89\xcc\x94\0" /* offset 3941 */
+  "\xcf\x89\xcc\x93\xcc\x80\0" /* offset 3946 */
+  "\xcf\x89\xcc\x94\xcc\x80\0" /* offset 3953 */
+  "\xcf\x89\xcc\x93\xcc\x81\0" /* offset 3960 */
+  "\xcf\x89\xcc\x94\xcc\x81\0" /* offset 3967 */
+  "\xcf\x89\xcc\x93\xcd\x82\0" /* offset 3974 */
+  "\xcf\x89\xcc\x94\xcd\x82\0" /* offset 3981 */
+  "\xce\xa9\xcc\x93\0" /* offset 3988 */
+  "\xce\xa9\xcc\x94\0" /* offset 3993 */
+  "\xce\xa9\xcc\x93\xcc\x80\0" /* offset 3998 */
+  "\xce\xa9\xcc\x94\xcc\x80\0" /* offset 4005 */
+  "\xce\xa9\xcc\x93\xcc\x81\0" /* offset 4012 */
+  "\xce\xa9\xcc\x94\xcc\x81\0" /* offset 4019 */
+  "\xce\xa9\xcc\x93\xcd\x82\0" /* offset 4026 */
+  "\xce\xa9\xcc\x94\xcd\x82\0" /* offset 4033 */
+  "\xce\xb1\xcc\x80\0" /* offset 4040 */
+  "\xce\xb5\xcc\x80\0" /* offset 4045 */
+  "\xce\xb7\xcc\x80\0" /* offset 4050 */
+  "\xce\xb9\xcc\x80\0" /* offset 4055 */
+  "\xce\xbf\xcc\x80\0" /* offset 4060 */
+  "\xcf\x85\xcc\x80\0" /* offset 4065 */
+  "\xcf\x89\xcc\x80\0" /* offset 4070 */
+  "\xce\xb1\xcc\x93\xcd\x85\0" /* offset 4075 */
+  "\xce\xb1\xcc\x94\xcd\x85\0" /* offset 4082 */
+  "\xce\xb1\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4089 */
+  "\xce\xb1\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4098 */
+  "\xce\xb1\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4107 */
+  "\xce\xb1\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4116 */
+  "\xce\xb1\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4125 */
+  "\xce\xb1\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4134 */
+  "\xce\x91\xcc\x93\xcd\x85\0" /* offset 4143 */
+  "\xce\x91\xcc\x94\xcd\x85\0" /* offset 4150 */
+  "\xce\x91\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4157 */
+  "\xce\x91\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4166 */
+  "\xce\x91\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4175 */
+  "\xce\x91\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4184 */
+  "\xce\x91\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4193 */
+  "\xce\x91\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4202 */
+  "\xce\xb7\xcc\x93\xcd\x85\0" /* offset 4211 */
+  "\xce\xb7\xcc\x94\xcd\x85\0" /* offset 4218 */
+  "\xce\xb7\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4225 */
+  "\xce\xb7\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4234 */
+  "\xce\xb7\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4243 */
+  "\xce\xb7\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4252 */
+  "\xce\xb7\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4261 */
+  "\xce\xb7\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4270 */
+  "\xce\x97\xcc\x93\xcd\x85\0" /* offset 4279 */
+  "\xce\x97\xcc\x94\xcd\x85\0" /* offset 4286 */
+  "\xce\x97\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4293 */
+  "\xce\x97\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4302 */
+  "\xce\x97\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4311 */
+  "\xce\x97\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4320 */
+  "\xce\x97\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4329 */
+  "\xce\x97\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4338 */
+  "\xcf\x89\xcc\x93\xcd\x85\0" /* offset 4347 */
+  "\xcf\x89\xcc\x94\xcd\x85\0" /* offset 4354 */
+  "\xcf\x89\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4361 */
+  "\xcf\x89\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4370 */
+  "\xcf\x89\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4379 */
+  "\xcf\x89\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4388 */
+  "\xcf\x89\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4397 */
+  "\xcf\x89\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4406 */
+  "\xce\xa9\xcc\x93\xcd\x85\0" /* offset 4415 */
+  "\xce\xa9\xcc\x94\xcd\x85\0" /* offset 4422 */
+  "\xce\xa9\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4429 */
+  "\xce\xa9\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4438 */
+  "\xce\xa9\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4447 */
+  "\xce\xa9\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4456 */
+  "\xce\xa9\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4465 */
+  "\xce\xa9\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4474 */
+  "\xce\xb1\xcc\x86\0" /* offset 4483 */
+  "\xce\xb1\xcc\x84\0" /* offset 4488 */
+  "\xce\xb1\xcc\x80\xcd\x85\0" /* offset 4493 */
+  "\xce\xb1\xcd\x85\0" /* offset 4500 */
+  "\xce\xb1\xcc\x81\xcd\x85\0" /* offset 4505 */
+  "\xce\xb1\xcd\x82\0" /* offset 4512 */
+  "\xce\xb1\xcd\x82\xcd\x85\0" /* offset 4517 */
+  "\xce\x91\xcc\x86\0" /* offset 4524 */
+  "\xce\x91\xcc\x84\0" /* offset 4529 */
+  "\xce\x91\xcc\x80\0" /* offset 4534 */
+  "\xce\x91\xcd\x85\0" /* offset 4539 */
+  "\x20\xcc\x93\0" /* offset 4544 */
+  "\xce\xb9\0" /* offset 4548 */
+  "\x20\xcd\x82\0" /* offset 4551 */
+  "\xc2\xa8\xcd\x82\0" /* offset 4555 */
+  "\x20\xcc\x88\xcd\x82\0" /* offset 4560 */
+  "\xce\xb7\xcc\x80\xcd\x85\0" /* offset 4566 */
+  "\xce\xb7\xcd\x85\0" /* offset 4573 */
+  "\xce\xb7\xcc\x81\xcd\x85\0" /* offset 4578 */
+  "\xce\xb7\xcd\x82\0" /* offset 4585 */
+  "\xce\xb7\xcd\x82\xcd\x85\0" /* offset 4590 */
+  "\xce\x95\xcc\x80\0" /* offset 4597 */
+  "\xce\x97\xcc\x80\0" /* offset 4602 */
+  "\xce\x97\xcd\x85\0" /* offset 4607 */
+  "\xe1\xbe\xbf\xcc\x80\0" /* offset 4612 */
+  "\x20\xcc\x93\xcc\x80\0" /* offset 4618 */
+  "\xe1\xbe\xbf\xcc\x81\0" /* offset 4624 */
+  "\x20\xcc\x93\xcc\x81\0" /* offset 4630 */
+  "\xe1\xbe\xbf\xcd\x82\0" /* offset 4636 */
+  "\x20\xcc\x93\xcd\x82\0" /* offset 4642 */
+  "\xce\xb9\xcc\x86\0" /* offset 4648 */
+  "\xce\xb9\xcc\x84\0" /* offset 4653 */
+  "\xce\xb9\xcc\x88\xcc\x80\0" /* offset 4658 */
+  "\xce\xb9\xcd\x82\0" /* offset 4665 */
+  "\xce\xb9\xcc\x88\xcd\x82\0" /* offset 4670 */
+  "\xce\x99\xcc\x86\0" /* offset 4677 */
+  "\xce\x99\xcc\x84\0" /* offset 4682 */
+  "\xce\x99\xcc\x80\0" /* offset 4687 */
+  "\xe1\xbf\xbe\xcc\x80\0" /* offset 4692 */
+  "\x20\xcc\x94\xcc\x80\0" /* offset 4698 */
+  "\xe1\xbf\xbe\xcc\x81\0" /* offset 4704 */
+  "\x20\xcc\x94\xcc\x81\0" /* offset 4710 */
+  "\xe1\xbf\xbe\xcd\x82\0" /* offset 4716 */
+  "\x20\xcc\x94\xcd\x82\0" /* offset 4722 */
+  "\xcf\x85\xcc\x86\0" /* offset 4728 */
+  "\xcf\x85\xcc\x84\0" /* offset 4733 */
+  "\xcf\x85\xcc\x88\xcc\x80\0" /* offset 4738 */
+  "\xcf\x81\xcc\x93\0" /* offset 4745 */
+  "\xcf\x81\xcc\x94\0" /* offset 4750 */
+  "\xcf\x85\xcd\x82\0" /* offset 4755 */
+  "\xcf\x85\xcc\x88\xcd\x82\0" /* offset 4760 */
+  "\xce\xa5\xcc\x86\0" /* offset 4767 */
+  "\xce\xa5\xcc\x84\0" /* offset 4772 */
+  "\xce\xa5\xcc\x80\0" /* offset 4777 */
+  "\xce\xa1\xcc\x94\0" /* offset 4782 */
+  "\xc2\xa8\xcc\x80\0" /* offset 4787 */
+  "\x20\xcc\x88\xcc\x80\0" /* offset 4792 */
+  "\x60\0" /* offset 4798 */
+  "\xcf\x89\xcc\x80\xcd\x85\0" /* offset 4800 */
+  "\xcf\x89\xcd\x85\0" /* offset 4807 */
+  "\xcf\x89\xcc\x81\xcd\x85\0" /* offset 4812 */
+  "\xcf\x89\xcd\x82\0" /* offset 4819 */
+  "\xcf\x89\xcd\x82\xcd\x85\0" /* offset 4824 */
+  "\xce\x9f\xcc\x80\0" /* offset 4831 */
+  "\xce\xa9\xcc\x80\0" /* offset 4836 */
+  "\xce\xa9\xcd\x85\0" /* offset 4841 */
+  "\xc2\xb4\0" /* offset 4846 */
+  "\x20\xcc\x94\0" /* offset 4849 */
+  "\xe2\x80\x82\0" /* offset 4853 */
+  "\xe2\x80\x83\0" /* offset 4857 */
+  "\xe2\x80\x90\0" /* offset 4861 */
+  "\x20\xcc\xb3\0" /* offset 4865 */
+  "\x2e\0" /* offset 4869 */
+  "\x2e\x2e\0" /* offset 4871 */
+  "\x2e\x2e\x2e\0" /* offset 4874 */
+  "\xe2\x80\xb2\xe2\x80\xb2\0" /* offset 4878 */
+  "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\0" /* offset 4885 */
+  "\xe2\x80\xb5\xe2\x80\xb5\0" /* offset 4895 */
+  "\xe2\x80\xb5\xe2\x80\xb5\xe2\x80\xb5\0" /* offset 4902 */
+  "\x21\x21\0" /* offset 4912 */
+  "\x20\xcc\x85\0" /* offset 4915 */
+  "\x3f\x3f\0" /* offset 4919 */
+  "\x3f\x21\0" /* offset 4922 */
+  "\x21\x3f\0" /* offset 4925 */
+  "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\0" /* offset 4928 */
+  "\x30\0" /* offset 4941 */
+  "\x69\0" /* offset 4943 */
+  "\x34\0" /* offset 4945 */
+  "\x35\0" /* offset 4947 */
+  "\x36\0" /* offset 4949 */
+  "\x37\0" /* offset 4951 */
+  "\x38\0" /* offset 4953 */
+  "\x39\0" /* offset 4955 */
+  "\x2b\0" /* offset 4957 */
+  "\xe2\x88\x92\0" /* offset 4959 */
+  "\x3d\0" /* offset 4963 */
+  "\x28\0" /* offset 4965 */
+  "\x29\0" /* offset 4967 */
+  "\x6e\0" /* offset 4969 */
+  "\x52\x73\0" /* offset 4971 */
+  "\x61\x2f\x63\0" /* offset 4974 */
+  "\x61\x2f\x73\0" /* offset 4978 */
+  "\x43\0" /* offset 4982 */
+  "\xc2\xb0\x43\0" /* offset 4984 */
+  "\x63\x2f\x6f\0" /* offset 4988 */
+  "\x63\x2f\x75\0" /* offset 4992 */
+  "\xc6\x90\0" /* offset 4996 */
+  "\xc2\xb0\x46\0" /* offset 4999 */
+  "\x67\0" /* offset 5003 */
+  "\x48\0" /* offset 5005 */
+  "\xc4\xa7\0" /* offset 5007 */
+  "\x49\0" /* offset 5010 */
+  "\x4c\0" /* offset 5012 */
+  "\x4e\0" /* offset 5014 */
+  "\x4e\x6f\0" /* offset 5016 */
+  "\x50\0" /* offset 5019 */
+  "\x51\0" /* offset 5021 */
+  "\x52\0" /* offset 5023 */
+  "\x53\x4d\0" /* offset 5025 */
+  "\x54\x45\x4c\0" /* offset 5028 */
+  "\x54\x4d\0" /* offset 5032 */
+  "\x5a\0" /* offset 5035 */
+  "\xce\xa9\0" /* offset 5037 */
+  "\x4b\0" /* offset 5040 */
+  "\x42\0" /* offset 5042 */
+  "\x65\0" /* offset 5044 */
+  "\x45\0" /* offset 5046 */
+  "\x46\0" /* offset 5048 */
+  "\x4d\0" /* offset 5050 */
+  "\xd7\x90\0" /* offset 5052 */
+  "\xd7\x91\0" /* offset 5055 */
+  "\xd7\x92\0" /* offset 5058 */
+  "\xd7\x93\0" /* offset 5061 */
+  "\xce\xb3\0" /* offset 5064 */
+  "\xce\x93\0" /* offset 5067 */
+  "\xce\xa0\0" /* offset 5070 */
+  "\xe2\x88\x91\0" /* offset 5073 */
+  "\x44\0" /* offset 5077 */
+  "\x64\0" /* offset 5079 */
+  "\x31\xe2\x81\x84\x33\0" /* offset 5081 */
+  "\x32\xe2\x81\x84\x33\0" /* offset 5087 */
+  "\x31\xe2\x81\x84\x35\0" /* offset 5093 */
+  "\x32\xe2\x81\x84\x35\0" /* offset 5099 */
+  "\x33\xe2\x81\x84\x35\0" /* offset 5105 */
+  "\x34\xe2\x81\x84\x35\0" /* offset 5111 */
+  "\x31\xe2\x81\x84\x36\0" /* offset 5117 */
+  "\x35\xe2\x81\x84\x36\0" /* offset 5123 */
+  "\x31\xe2\x81\x84\x38\0" /* offset 5129 */
+  "\x33\xe2\x81\x84\x38\0" /* offset 5135 */
+  "\x35\xe2\x81\x84\x38\0" /* offset 5141 */
+  "\x37\xe2\x81\x84\x38\0" /* offset 5147 */
+  "\x31\xe2\x81\x84\0" /* offset 5153 */
+  "\x49\x49\0" /* offset 5158 */
+  "\x49\x49\x49\0" /* offset 5161 */
+  "\x49\x56\0" /* offset 5165 */
+  "\x56\0" /* offset 5168 */
+  "\x56\x49\0" /* offset 5170 */
+  "\x56\x49\x49\0" /* offset 5173 */
+  "\x56\x49\x49\x49\0" /* offset 5177 */
+  "\x49\x58\0" /* offset 5182 */
+  "\x58\0" /* offset 5185 */
+  "\x58\x49\0" /* offset 5187 */
+  "\x58\x49\x49\0" /* offset 5190 */
+  "\x69\x69\0" /* offset 5194 */
+  "\x69\x69\x69\0" /* offset 5197 */
+  "\x69\x76\0" /* offset 5201 */
+  "\x76\0" /* offset 5204 */
+  "\x76\x69\0" /* offset 5206 */
+  "\x76\x69\x69\0" /* offset 5209 */
+  "\x76\x69\x69\x69\0" /* offset 5213 */
+  "\x69\x78\0" /* offset 5218 */
+  "\x78\x69\0" /* offset 5221 */
+  "\x78\x69\x69\0" /* offset 5224 */
+  "\x63\0" /* offset 5228 */
+  "\x6d\0" /* offset 5230 */
+  "\xe2\x86\x90\xcc\xb8\0" /* offset 5232 */
+  "\xe2\x86\x92\xcc\xb8\0" /* offset 5238 */
+  "\xe2\x86\x94\xcc\xb8\0" /* offset 5244 */
+  "\xe2\x87\x90\xcc\xb8\0" /* offset 5250 */
+  "\xe2\x87\x94\xcc\xb8\0" /* offset 5256 */
+  "\xe2\x87\x92\xcc\xb8\0" /* offset 5262 */
+  "\xe2\x88\x83\xcc\xb8\0" /* offset 5268 */
+  "\xe2\x88\x88\xcc\xb8\0" /* offset 5274 */
+  "\xe2\x88\x8b\xcc\xb8\0" /* offset 5280 */
+  "\xe2\x88\xa3\xcc\xb8\0" /* offset 5286 */
+  "\xe2\x88\xa5\xcc\xb8\0" /* offset 5292 */
+  "\xe2\x88\xab\xe2\x88\xab\0" /* offset 5298 */
+  "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\0" /* offset 5305 */
+  "\xe2\x88\xae\xe2\x88\xae\0" /* offset 5315 */
+  "\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\0" /* offset 5322 */
+  "\xe2\x88\xbc\xcc\xb8\0" /* offset 5332 */
+  "\xe2\x89\x83\xcc\xb8\0" /* offset 5338 */
+  "\xe2\x89\x85\xcc\xb8\0" /* offset 5344 */
+  "\xe2\x89\x88\xcc\xb8\0" /* offset 5350 */
+  "\x3d\xcc\xb8\0" /* offset 5356 */
+  "\xe2\x89\xa1\xcc\xb8\0" /* offset 5360 */
+  "\xe2\x89\x8d\xcc\xb8\0" /* offset 5366 */
+  "\x3c\xcc\xb8\0" /* offset 5372 */
+  "\x3e\xcc\xb8\0" /* offset 5376 */
+  "\xe2\x89\xa4\xcc\xb8\0" /* offset 5380 */
+  "\xe2\x89\xa5\xcc\xb8\0" /* offset 5386 */
+  "\xe2\x89\xb2\xcc\xb8\0" /* offset 5392 */
+  "\xe2\x89\xb3\xcc\xb8\0" /* offset 5398 */
+  "\xe2\x89\xb6\xcc\xb8\0" /* offset 5404 */
+  "\xe2\x89\xb7\xcc\xb8\0" /* offset 5410 */
+  "\xe2\x89\xba\xcc\xb8\0" /* offset 5416 */
+  "\xe2\x89\xbb\xcc\xb8\0" /* offset 5422 */
+  "\xe2\x8a\x82\xcc\xb8\0" /* offset 5428 */
+  "\xe2\x8a\x83\xcc\xb8\0" /* offset 5434 */
+  "\xe2\x8a\x86\xcc\xb8\0" /* offset 5440 */
+  "\xe2\x8a\x87\xcc\xb8\0" /* offset 5446 */
+  "\xe2\x8a\xa2\xcc\xb8\0" /* offset 5452 */
+  "\xe2\x8a\xa8\xcc\xb8\0" /* offset 5458 */
+  "\xe2\x8a\xa9\xcc\xb8\0" /* offset 5464 */
+  "\xe2\x8a\xab\xcc\xb8\0" /* offset 5470 */
+  "\xe2\x89\xbc\xcc\xb8\0" /* offset 5476 */
+  "\xe2\x89\xbd\xcc\xb8\0" /* offset 5482 */
+  "\xe2\x8a\x91\xcc\xb8\0" /* offset 5488 */
+  "\xe2\x8a\x92\xcc\xb8\0" /* offset 5494 */
+  "\xe2\x8a\xb2\xcc\xb8\0" /* offset 5500 */
+  "\xe2\x8a\xb3\xcc\xb8\0" /* offset 5506 */
+  "\xe2\x8a\xb4\xcc\xb8\0" /* offset 5512 */
+  "\xe2\x8a\xb5\xcc\xb8\0" /* offset 5518 */
+  "\xe3\x80\x88\0" /* offset 5524 */
+  "\xe3\x80\x89\0" /* offset 5528 */
+  "\x31\x30\0" /* offset 5532 */
+  "\x31\x31\0" /* offset 5535 */
+  "\x31\x32\0" /* offset 5538 */
+  "\x31\x33\0" /* offset 5541 */
+  "\x31\x34\0" /* offset 5544 */
+  "\x31\x35\0" /* offset 5547 */
+  "\x31\x36\0" /* offset 5550 */
+  "\x31\x37\0" /* offset 5553 */
+  "\x31\x38\0" /* offset 5556 */
+  "\x31\x39\0" /* offset 5559 */
+  "\x32\x30\0" /* offset 5562 */
+  "\x28\x31\x29\0" /* offset 5565 */
+  "\x28\x32\x29\0" /* offset 5569 */
+  "\x28\x33\x29\0" /* offset 5573 */
+  "\x28\x34\x29\0" /* offset 5577 */
+  "\x28\x35\x29\0" /* offset 5581 */
+  "\x28\x36\x29\0" /* offset 5585 */
+  "\x28\x37\x29\0" /* offset 5589 */
+  "\x28\x38\x29\0" /* offset 5593 */
+  "\x28\x39\x29\0" /* offset 5597 */
+  "\x28\x31\x30\x29\0" /* offset 5601 */
+  "\x28\x31\x31\x29\0" /* offset 5606 */
+  "\x28\x31\x32\x29\0" /* offset 5611 */
+  "\x28\x31\x33\x29\0" /* offset 5616 */
+  "\x28\x31\x34\x29\0" /* offset 5621 */
+  "\x28\x31\x35\x29\0" /* offset 5626 */
+  "\x28\x31\x36\x29\0" /* offset 5631 */
+  "\x28\x31\x37\x29\0" /* offset 5636 */
+  "\x28\x31\x38\x29\0" /* offset 5641 */
+  "\x28\x31\x39\x29\0" /* offset 5646 */
+  "\x28\x32\x30\x29\0" /* offset 5651 */
+  "\x31\x2e\0" /* offset 5656 */
+  "\x32\x2e\0" /* offset 5659 */
+  "\x33\x2e\0" /* offset 5662 */
+  "\x34\x2e\0" /* offset 5665 */
+  "\x35\x2e\0" /* offset 5668 */
+  "\x36\x2e\0" /* offset 5671 */
+  "\x37\x2e\0" /* offset 5674 */
+  "\x38\x2e\0" /* offset 5677 */
+  "\x39\x2e\0" /* offset 5680 */
+  "\x31\x30\x2e\0" /* offset 5683 */
+  "\x31\x31\x2e\0" /* offset 5687 */
+  "\x31\x32\x2e\0" /* offset 5691 */
+  "\x31\x33\x2e\0" /* offset 5695 */
+  "\x31\x34\x2e\0" /* offset 5699 */
+  "\x31\x35\x2e\0" /* offset 5703 */
+  "\x31\x36\x2e\0" /* offset 5707 */
+  "\x31\x37\x2e\0" /* offset 5711 */
+  "\x31\x38\x2e\0" /* offset 5715 */
+  "\x31\x39\x2e\0" /* offset 5719 */
+  "\x32\x30\x2e\0" /* offset 5723 */
+  "\x28\x61\x29\0" /* offset 5727 */
+  "\x28\x62\x29\0" /* offset 5731 */
+  "\x28\x63\x29\0" /* offset 5735 */
+  "\x28\x64\x29\0" /* offset 5739 */
+  "\x28\x65\x29\0" /* offset 5743 */
+  "\x28\x66\x29\0" /* offset 5747 */
+  "\x28\x67\x29\0" /* offset 5751 */
+  "\x28\x68\x29\0" /* offset 5755 */
+  "\x28\x69\x29\0" /* offset 5759 */
+  "\x28\x6a\x29\0" /* offset 5763 */
+  "\x28\x6b\x29\0" /* offset 5767 */
+  "\x28\x6c\x29\0" /* offset 5771 */
+  "\x28\x6d\x29\0" /* offset 5775 */
+  "\x28\x6e\x29\0" /* offset 5779 */
+  "\x28\x6f\x29\0" /* offset 5783 */
+  "\x28\x70\x29\0" /* offset 5787 */
+  "\x28\x71\x29\0" /* offset 5791 */
+  "\x28\x72\x29\0" /* offset 5795 */
+  "\x28\x73\x29\0" /* offset 5799 */
+  "\x28\x74\x29\0" /* offset 5803 */
+  "\x28\x75\x29\0" /* offset 5807 */
+  "\x28\x76\x29\0" /* offset 5811 */
+  "\x28\x77\x29\0" /* offset 5815 */
+  "\x28\x78\x29\0" /* offset 5819 */
+  "\x28\x79\x29\0" /* offset 5823 */
+  "\x28\x7a\x29\0" /* offset 5827 */
+  "\x41\0" /* offset 5831 */
+  "\x47\0" /* offset 5833 */
+  "\x4a\0" /* offset 5835 */
+  "\x4f\0" /* offset 5837 */
+  "\x53\0" /* offset 5839 */
+  "\x54\0" /* offset 5841 */
+  "\x55\0" /* offset 5843 */
+  "\x57\0" /* offset 5845 */
+  "\x59\0" /* offset 5847 */
+  "\x62\0" /* offset 5849 */
+  "\x66\0" /* offset 5851 */
+  "\x6b\0" /* offset 5853 */
+  "\x70\0" /* offset 5855 */
+  "\x71\0" /* offset 5857 */
+  "\x74\0" /* offset 5859 */
+  "\x75\0" /* offset 5861 */
+  "\x7a\0" /* offset 5863 */
+  "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\0" /* offset 5865 */
+  "\x3a\x3a\x3d\0" /* offset 5878 */
+  "\x3d\x3d\0" /* offset 5882 */
+  "\x3d\x3d\x3d\0" /* offset 5885 */
+  "\xe2\xab\x9d\xcc\xb8\0" /* offset 5889 */
+  "\xe6\xaf\x8d\0" /* offset 5895 */
+  "\xe9\xbe\x9f\0" /* offset 5899 */
+  "\xe4\xb8\x80\0" /* offset 5903 */
+  "\xe4\xb8\xa8\0" /* offset 5907 */
+  "\xe4\xb8\xb6\0" /* offset 5911 */
+  "\xe4\xb8\xbf\0" /* offset 5915 */
+  "\xe4\xb9\x99\0" /* offset 5919 */
+  "\xe4\xba\x85\0" /* offset 5923 */
+  "\xe4\xba\x8c\0" /* offset 5927 */
+  "\xe4\xba\xa0\0" /* offset 5931 */
+  "\xe4\xba\xba\0" /* offset 5935 */
+  "\xe5\x84\xbf\0" /* offset 5939 */
+  "\xe5\x85\xa5\0" /* offset 5943 */
+  "\xe5\x85\xab\0" /* offset 5947 */
+  "\xe5\x86\x82\0" /* offset 5951 */
+  "\xe5\x86\x96\0" /* offset 5955 */
+  "\xe5\x86\xab\0" /* offset 5959 */
+  "\xe5\x87\xa0\0" /* offset 5963 */
+  "\xe5\x87\xb5\0" /* offset 5967 */
+  "\xe5\x88\x80\0" /* offset 5971 */
+  "\xe5\x8a\x9b\0" /* offset 5975 */
+  "\xe5\x8b\xb9\0" /* offset 5979 */
+  "\xe5\x8c\x95\0" /* offset 5983 */
+  "\xe5\x8c\x9a\0" /* offset 5987 */
+  "\xe5\x8c\xb8\0" /* offset 5991 */
+  "\xe5\x8d\x81\0" /* offset 5995 */
+  "\xe5\x8d\x9c\0" /* offset 5999 */
+  "\xe5\x8d\xa9\0" /* offset 6003 */
+  "\xe5\x8e\x82\0" /* offset 6007 */
+  "\xe5\x8e\xb6\0" /* offset 6011 */
+  "\xe5\x8f\x88\0" /* offset 6015 */
+  "\xe5\x8f\xa3\0" /* offset 6019 */
+  "\xe5\x9b\x97\0" /* offset 6023 */
+  "\xe5\x9c\x9f\0" /* offset 6027 */
+  "\xe5\xa3\xab\0" /* offset 6031 */
+  "\xe5\xa4\x82\0" /* offset 6035 */
+  "\xe5\xa4\x8a\0" /* offset 6039 */
+  "\xe5\xa4\x95\0" /* offset 6043 */
+  "\xe5\xa4\xa7\0" /* offset 6047 */
+  "\xe5\xa5\xb3\0" /* offset 6051 */
+  "\xe5\xad\x90\0" /* offset 6055 */
+  "\xe5\xae\x80\0" /* offset 6059 */
+  "\xe5\xaf\xb8\0" /* offset 6063 */
+  "\xe5\xb0\x8f\0" /* offset 6067 */
+  "\xe5\xb0\xa2\0" /* offset 6071 */
+  "\xe5\xb0\xb8\0" /* offset 6075 */
+  "\xe5\xb1\xae\0" /* offset 6079 */
+  "\xe5\xb1\xb1\0" /* offset 6083 */
+  "\xe5\xb7\x9b\0" /* offset 6087 */
+  "\xe5\xb7\xa5\0" /* offset 6091 */
+  "\xe5\xb7\xb1\0" /* offset 6095 */
+  "\xe5\xb7\xbe\0" /* offset 6099 */
+  "\xe5\xb9\xb2\0" /* offset 6103 */
+  "\xe5\xb9\xba\0" /* offset 6107 */
+  "\xe5\xb9\xbf\0" /* offset 6111 */
+  "\xe5\xbb\xb4\0" /* offset 6115 */
+  "\xe5\xbb\xbe\0" /* offset 6119 */
+  "\xe5\xbc\x8b\0" /* offset 6123 */
+  "\xe5\xbc\x93\0" /* offset 6127 */
+  "\xe5\xbd\x90\0" /* offset 6131 */
+  "\xe5\xbd\xa1\0" /* offset 6135 */
+  "\xe5\xbd\xb3\0" /* offset 6139 */
+  "\xe5\xbf\x83\0" /* offset 6143 */
+  "\xe6\x88\x88\0" /* offset 6147 */
+  "\xe6\x88\xb6\0" /* offset 6151 */
+  "\xe6\x89\x8b\0" /* offset 6155 */
+  "\xe6\x94\xaf\0" /* offset 6159 */
+  "\xe6\x94\xb4\0" /* offset 6163 */
+  "\xe6\x96\x87\0" /* offset 6167 */
+  "\xe6\x96\x97\0" /* offset 6171 */
+  "\xe6\x96\xa4\0" /* offset 6175 */
+  "\xe6\x96\xb9\0" /* offset 6179 */
+  "\xe6\x97\xa0\0" /* offset 6183 */
+  "\xe6\x97\xa5\0" /* offset 6187 */
+  "\xe6\x9b\xb0\0" /* offset 6191 */
+  "\xe6\x9c\x88\0" /* offset 6195 */
+  "\xe6\x9c\xa8\0" /* offset 6199 */
+  "\xe6\xac\xa0\0" /* offset 6203 */
+  "\xe6\xad\xa2\0" /* offset 6207 */
+  "\xe6\xad\xb9\0" /* offset 6211 */
+  "\xe6\xae\xb3\0" /* offset 6215 */
+  "\xe6\xaf\x8b\0" /* offset 6219 */
+  "\xe6\xaf\x94\0" /* offset 6223 */
+  "\xe6\xaf\x9b\0" /* offset 6227 */
+  "\xe6\xb0\x8f\0" /* offset 6231 */
+  "\xe6\xb0\x94\0" /* offset 6235 */
+  "\xe6\xb0\xb4\0" /* offset 6239 */
+  "\xe7\x81\xab\0" /* offset 6243 */
+  "\xe7\x88\xaa\0" /* offset 6247 */
+  "\xe7\x88\xb6\0" /* offset 6251 */
+  "\xe7\x88\xbb\0" /* offset 6255 */
+  "\xe7\x88\xbf\0" /* offset 6259 */
+  "\xe7\x89\x87\0" /* offset 6263 */
+  "\xe7\x89\x99\0" /* offset 6267 */
+  "\xe7\x89\x9b\0" /* offset 6271 */
+  "\xe7\x8a\xac\0" /* offset 6275 */
+  "\xe7\x8e\x84\0" /* offset 6279 */
+  "\xe7\x8e\x89\0" /* offset 6283 */
+  "\xe7\x93\x9c\0" /* offset 6287 */
+  "\xe7\x93\xa6\0" /* offset 6291 */
+  "\xe7\x94\x98\0" /* offset 6295 */
+  "\xe7\x94\x9f\0" /* offset 6299 */
+  "\xe7\x94\xa8\0" /* offset 6303 */
+  "\xe7\x94\xb0\0" /* offset 6307 */
+  "\xe7\x96\x8b\0" /* offset 6311 */
+  "\xe7\x96\x92\0" /* offset 6315 */
+  "\xe7\x99\xb6\0" /* offset 6319 */
+  "\xe7\x99\xbd\0" /* offset 6323 */
+  "\xe7\x9a\xae\0" /* offset 6327 */
+  "\xe7\x9a\xbf\0" /* offset 6331 */
+  "\xe7\x9b\xae\0" /* offset 6335 */
+  "\xe7\x9f\x9b\0" /* offset 6339 */
+  "\xe7\x9f\xa2\0" /* offset 6343 */
+  "\xe7\x9f\xb3\0" /* offset 6347 */
+  "\xe7\xa4\xba\0" /* offset 6351 */
+  "\xe7\xa6\xb8\0" /* offset 6355 */
+  "\xe7\xa6\xbe\0" /* offset 6359 */
+  "\xe7\xa9\xb4\0" /* offset 6363 */
+  "\xe7\xab\x8b\0" /* offset 6367 */
+  "\xe7\xab\xb9\0" /* offset 6371 */
+  "\xe7\xb1\xb3\0" /* offset 6375 */
+  "\xe7\xb3\xb8\0" /* offset 6379 */
+  "\xe7\xbc\xb6\0" /* offset 6383 */
+  "\xe7\xbd\x91\0" /* offset 6387 */
+  "\xe7\xbe\x8a\0" /* offset 6391 */
+  "\xe7\xbe\xbd\0" /* offset 6395 */
+  "\xe8\x80\x81\0" /* offset 6399 */
+  "\xe8\x80\x8c\0" /* offset 6403 */
+  "\xe8\x80\x92\0" /* offset 6407 */
+  "\xe8\x80\xb3\0" /* offset 6411 */
+  "\xe8\x81\xbf\0" /* offset 6415 */
+  "\xe8\x82\x89\0" /* offset 6419 */
+  "\xe8\x87\xa3\0" /* offset 6423 */
+  "\xe8\x87\xaa\0" /* offset 6427 */
+  "\xe8\x87\xb3\0" /* offset 6431 */
+  "\xe8\x87\xbc\0" /* offset 6435 */
+  "\xe8\x88\x8c\0" /* offset 6439 */
+  "\xe8\x88\x9b\0" /* offset 6443 */
+  "\xe8\x88\x9f\0" /* offset 6447 */
+  "\xe8\x89\xae\0" /* offset 6451 */
+  "\xe8\x89\xb2\0" /* offset 6455 */
+  "\xe8\x89\xb8\0" /* offset 6459 */
+  "\xe8\x99\x8d\0" /* offset 6463 */
+  "\xe8\x99\xab\0" /* offset 6467 */
+  "\xe8\xa1\x80\0" /* offset 6471 */
+  "\xe8\xa1\x8c\0" /* offset 6475 */
+  "\xe8\xa1\xa3\0" /* offset 6479 */
+  "\xe8\xa5\xbe\0" /* offset 6483 */
+  "\xe8\xa6\x8b\0" /* offset 6487 */
+  "\xe8\xa7\x92\0" /* offset 6491 */
+  "\xe8\xa8\x80\0" /* offset 6495 */
+  "\xe8\xb0\xb7\0" /* offset 6499 */
+  "\xe8\xb1\x86\0" /* offset 6503 */
+  "\xe8\xb1\x95\0" /* offset 6507 */
+  "\xe8\xb1\xb8\0" /* offset 6511 */
+  "\xe8\xb2\x9d\0" /* offset 6515 */
+  "\xe8\xb5\xa4\0" /* offset 6519 */
+  "\xe8\xb5\xb0\0" /* offset 6523 */
+  "\xe8\xb6\xb3\0" /* offset 6527 */
+  "\xe8\xba\xab\0" /* offset 6531 */
+  "\xe8\xbb\x8a\0" /* offset 6535 */
+  "\xe8\xbe\x9b\0" /* offset 6539 */
+  "\xe8\xbe\xb0\0" /* offset 6543 */
+  "\xe8\xbe\xb5\0" /* offset 6547 */
+  "\xe9\x82\x91\0" /* offset 6551 */
+  "\xe9\x85\x89\0" /* offset 6555 */
+  "\xe9\x87\x86\0" /* offset 6559 */
+  "\xe9\x87\x8c\0" /* offset 6563 */
+  "\xe9\x87\x91\0" /* offset 6567 */
+  "\xe9\x95\xb7\0" /* offset 6571 */
+  "\xe9\x96\x80\0" /* offset 6575 */
+  "\xe9\x98\x9c\0" /* offset 6579 */
+  "\xe9\x9a\xb6\0" /* offset 6583 */
+  "\xe9\x9a\xb9\0" /* offset 6587 */
+  "\xe9\x9b\xa8\0" /* offset 6591 */
+  "\xe9\x9d\x91\0" /* offset 6595 */
+  "\xe9\x9d\x9e\0" /* offset 6599 */
+  "\xe9\x9d\xa2\0" /* offset 6603 */
+  "\xe9\x9d\xa9\0" /* offset 6607 */
+  "\xe9\x9f\x8b\0" /* offset 6611 */
+  "\xe9\x9f\xad\0" /* offset 6615 */
+  "\xe9\x9f\xb3\0" /* offset 6619 */
+  "\xe9\xa0\x81\0" /* offset 6623 */
+  "\xe9\xa2\xa8\0" /* offset 6627 */
+  "\xe9\xa3\x9b\0" /* offset 6631 */
+  "\xe9\xa3\x9f\0" /* offset 6635 */
+  "\xe9\xa6\x96\0" /* offset 6639 */
+  "\xe9\xa6\x99\0" /* offset 6643 */
+  "\xe9\xa6\xac\0" /* offset 6647 */
+  "\xe9\xaa\xa8\0" /* offset 6651 */
+  "\xe9\xab\x98\0" /* offset 6655 */
+  "\xe9\xab\x9f\0" /* offset 6659 */
+  "\xe9\xac\xa5\0" /* offset 6663 */
+  "\xe9\xac\xaf\0" /* offset 6667 */
+  "\xe9\xac\xb2\0" /* offset 6671 */
+  "\xe9\xac\xbc\0" /* offset 6675 */
+  "\xe9\xad\x9a\0" /* offset 6679 */
+  "\xe9\xb3\xa5\0" /* offset 6683 */
+  "\xe9\xb9\xb5\0" /* offset 6687 */
+  "\xe9\xb9\xbf\0" /* offset 6691 */
+  "\xe9\xba\xa5\0" /* offset 6695 */
+  "\xe9\xba\xbb\0" /* offset 6699 */
+  "\xe9\xbb\x83\0" /* offset 6703 */
+  "\xe9\xbb\x8d\0" /* offset 6707 */
+  "\xe9\xbb\x91\0" /* offset 6711 */
+  "\xe9\xbb\xb9\0" /* offset 6715 */
+  "\xe9\xbb\xbd\0" /* offset 6719 */
+  "\xe9\xbc\x8e\0" /* offset 6723 */
+  "\xe9\xbc\x93\0" /* offset 6727 */
+  "\xe9\xbc\xa0\0" /* offset 6731 */
+  "\xe9\xbc\xbb\0" /* offset 6735 */
+  "\xe9\xbd\x8a\0" /* offset 6739 */
+  "\xe9\xbd\x92\0" /* offset 6743 */
+  "\xe9\xbe\x8d\0" /* offset 6747 */
+  "\xe9\xbe\x9c\0" /* offset 6751 */
+  "\xe9\xbe\xa0\0" /* offset 6755 */
+  "\xe3\x80\x92\0" /* offset 6759 */
+  "\xe5\x8d\x84\0" /* offset 6763 */
+  "\xe5\x8d\x85\0" /* offset 6767 */
+  "\xe3\x81\x8b\xe3\x82\x99\0" /* offset 6771 */
+  "\xe3\x81\x8d\xe3\x82\x99\0" /* offset 6778 */
+  "\xe3\x81\x8f\xe3\x82\x99\0" /* offset 6785 */
+  "\xe3\x81\x91\xe3\x82\x99\0" /* offset 6792 */
+  "\xe3\x81\x93\xe3\x82\x99\0" /* offset 6799 */
+  "\xe3\x81\x95\xe3\x82\x99\0" /* offset 6806 */
+  "\xe3\x81\x97\xe3\x82\x99\0" /* offset 6813 */
+  "\xe3\x81\x99\xe3\x82\x99\0" /* offset 6820 */
+  "\xe3\x81\x9b\xe3\x82\x99\0" /* offset 6827 */
+  "\xe3\x81\x9d\xe3\x82\x99\0" /* offset 6834 */
+  "\xe3\x81\x9f\xe3\x82\x99\0" /* offset 6841 */
+  "\xe3\x81\xa1\xe3\x82\x99\0" /* offset 6848 */
+  "\xe3\x81\xa4\xe3\x82\x99\0" /* offset 6855 */
+  "\xe3\x81\xa6\xe3\x82\x99\0" /* offset 6862 */
+  "\xe3\x81\xa8\xe3\x82\x99\0" /* offset 6869 */
+  "\xe3\x81\xaf\xe3\x82\x99\0" /* offset 6876 */
+  "\xe3\x81\xaf\xe3\x82\x9a\0" /* offset 6883 */
+  "\xe3\x81\xb2\xe3\x82\x99\0" /* offset 6890 */
+  "\xe3\x81\xb2\xe3\x82\x9a\0" /* offset 6897 */
+  "\xe3\x81\xb5\xe3\x82\x99\0" /* offset 6904 */
+  "\xe3\x81\xb5\xe3\x82\x9a\0" /* offset 6911 */
+  "\xe3\x81\xb8\xe3\x82\x99\0" /* offset 6918 */
+  "\xe3\x81\xb8\xe3\x82\x9a\0" /* offset 6925 */
+  "\xe3\x81\xbb\xe3\x82\x99\0" /* offset 6932 */
+  "\xe3\x81\xbb\xe3\x82\x9a\0" /* offset 6939 */
+  "\xe3\x81\x86\xe3\x82\x99\0" /* offset 6946 */
+  "\x20\xe3\x82\x99\0" /* offset 6953 */
+  "\x20\xe3\x82\x9a\0" /* offset 6958 */
+  "\xe3\x82\x9d\xe3\x82\x99\0" /* offset 6963 */
+  "\xe3\x82\x88\xe3\x82\x8a\0" /* offset 6970 */
+  "\xe3\x82\xab\xe3\x82\x99\0" /* offset 6977 */
+  "\xe3\x82\xad\xe3\x82\x99\0" /* offset 6984 */
+  "\xe3\x82\xaf\xe3\x82\x99\0" /* offset 6991 */
+  "\xe3\x82\xb1\xe3\x82\x99\0" /* offset 6998 */
+  "\xe3\x82\xb3\xe3\x82\x99\0" /* offset 7005 */
+  "\xe3\x82\xb5\xe3\x82\x99\0" /* offset 7012 */
+  "\xe3\x82\xb7\xe3\x82\x99\0" /* offset 7019 */
+  "\xe3\x82\xb9\xe3\x82\x99\0" /* offset 7026 */
+  "\xe3\x82\xbb\xe3\x82\x99\0" /* offset 7033 */
+  "\xe3\x82\xbd\xe3\x82\x99\0" /* offset 7040 */
+  "\xe3\x82\xbf\xe3\x82\x99\0" /* offset 7047 */
+  "\xe3\x83\x81\xe3\x82\x99\0" /* offset 7054 */
+  "\xe3\x83\x84\xe3\x82\x99\0" /* offset 7061 */
+  "\xe3\x83\x86\xe3\x82\x99\0" /* offset 7068 */
+  "\xe3\x83\x88\xe3\x82\x99\0" /* offset 7075 */
+  "\xe3\x83\x8f\xe3\x82\x99\0" /* offset 7082 */
+  "\xe3\x83\x8f\xe3\x82\x9a\0" /* offset 7089 */
+  "\xe3\x83\x92\xe3\x82\x99\0" /* offset 7096 */
+  "\xe3\x83\x92\xe3\x82\x9a\0" /* offset 7103 */
+  "\xe3\x83\x95\xe3\x82\x99\0" /* offset 7110 */
+  "\xe3\x83\x95\xe3\x82\x9a\0" /* offset 7117 */
+  "\xe3\x83\x98\xe3\x82\x99\0" /* offset 7124 */
+  "\xe3\x83\x98\xe3\x82\x9a\0" /* offset 7131 */
+  "\xe3\x83\x9b\xe3\x82\x99\0" /* offset 7138 */
+  "\xe3\x83\x9b\xe3\x82\x9a\0" /* offset 7145 */
+  "\xe3\x82\xa6\xe3\x82\x99\0" /* offset 7152 */
+  "\xe3\x83\xaf\xe3\x82\x99\0" /* offset 7159 */
+  "\xe3\x83\xb0\xe3\x82\x99\0" /* offset 7166 */
+  "\xe3\x83\xb1\xe3\x82\x99\0" /* offset 7173 */
+  "\xe3\x83\xb2\xe3\x82\x99\0" /* offset 7180 */
+  "\xe3\x83\xbd\xe3\x82\x99\0" /* offset 7187 */
+  "\xe3\x82\xb3\xe3\x83\x88\0" /* offset 7194 */
+  "\xe1\x84\x80\0" /* offset 7201 */
+  "\xe1\x84\x81\0" /* offset 7205 */
+  "\xe1\x86\xaa\0" /* offset 7209 */
+  "\xe1\x84\x82\0" /* offset 7213 */
+  "\xe1\x86\xac\0" /* offset 7217 */
+  "\xe1\x86\xad\0" /* offset 7221 */
+  "\xe1\x84\x83\0" /* offset 7225 */
+  "\xe1\x84\x84\0" /* offset 7229 */
+  "\xe1\x84\x85\0" /* offset 7233 */
+  "\xe1\x86\xb0\0" /* offset 7237 */
+  "\xe1\x86\xb1\0" /* offset 7241 */
+  "\xe1\x86\xb2\0" /* offset 7245 */
+  "\xe1\x86\xb3\0" /* offset 7249 */
+  "\xe1\x86\xb4\0" /* offset 7253 */
+  "\xe1\x86\xb5\0" /* offset 7257 */
+  "\xe1\x84\x9a\0" /* offset 7261 */
+  "\xe1\x84\x86\0" /* offset 7265 */
+  "\xe1\x84\x87\0" /* offset 7269 */
+  "\xe1\x84\x88\0" /* offset 7273 */
+  "\xe1\x84\xa1\0" /* offset 7277 */
+  "\xe1\x84\x89\0" /* offset 7281 */
+  "\xe1\x84\x8a\0" /* offset 7285 */
+  "\xe1\x84\x8b\0" /* offset 7289 */
+  "\xe1\x84\x8c\0" /* offset 7293 */
+  "\xe1\x84\x8d\0" /* offset 7297 */
+  "\xe1\x84\x8e\0" /* offset 7301 */
+  "\xe1\x84\x8f\0" /* offset 7305 */
+  "\xe1\x84\x90\0" /* offset 7309 */
+  "\xe1\x84\x91\0" /* offset 7313 */
+  "\xe1\x84\x92\0" /* offset 7317 */
+  "\xe1\x85\xa1\0" /* offset 7321 */
+  "\xe1\x85\xa2\0" /* offset 7325 */
+  "\xe1\x85\xa3\0" /* offset 7329 */
+  "\xe1\x85\xa4\0" /* offset 7333 */
+  "\xe1\x85\xa5\0" /* offset 7337 */
+  "\xe1\x85\xa6\0" /* offset 7341 */
+  "\xe1\x85\xa7\0" /* offset 7345 */
+  "\xe1\x85\xa8\0" /* offset 7349 */
+  "\xe1\x85\xa9\0" /* offset 7353 */
+  "\xe1\x85\xaa\0" /* offset 7357 */
+  "\xe1\x85\xab\0" /* offset 7361 */
+  "\xe1\x85\xac\0" /* offset 7365 */
+  "\xe1\x85\xad\0" /* offset 7369 */
+  "\xe1\x85\xae\0" /* offset 7373 */
+  "\xe1\x85\xaf\0" /* offset 7377 */
+  "\xe1\x85\xb0\0" /* offset 7381 */
+  "\xe1\x85\xb1\0" /* offset 7385 */
+  "\xe1\x85\xb2\0" /* offset 7389 */
+  "\xe1\x85\xb3\0" /* offset 7393 */
+  "\xe1\x85\xb4\0" /* offset 7397 */
+  "\xe1\x85\xb5\0" /* offset 7401 */
+  "\xe1\x85\xa0\0" /* offset 7405 */
+  "\xe1\x84\x94\0" /* offset 7409 */
+  "\xe1\x84\x95\0" /* offset 7413 */
+  "\xe1\x87\x87\0" /* offset 7417 */
+  "\xe1\x87\x88\0" /* offset 7421 */
+  "\xe1\x87\x8c\0" /* offset 7425 */
+  "\xe1\x87\x8e\0" /* offset 7429 */
+  "\xe1\x87\x93\0" /* offset 7433 */
+  "\xe1\x87\x97\0" /* offset 7437 */
+  "\xe1\x87\x99\0" /* offset 7441 */
+  "\xe1\x84\x9c\0" /* offset 7445 */
+  "\xe1\x87\x9d\0" /* offset 7449 */
+  "\xe1\x87\x9f\0" /* offset 7453 */
+  "\xe1\x84\x9d\0" /* offset 7457 */
+  "\xe1\x84\x9e\0" /* offset 7461 */
+  "\xe1\x84\xa0\0" /* offset 7465 */
+  "\xe1\x84\xa2\0" /* offset 7469 */
+  "\xe1\x84\xa3\0" /* offset 7473 */
+  "\xe1\x84\xa7\0" /* offset 7477 */
+  "\xe1\x84\xa9\0" /* offset 7481 */
+  "\xe1\x84\xab\0" /* offset 7485 */
+  "\xe1\x84\xac\0" /* offset 7489 */
+  "\xe1\x84\xad\0" /* offset 7493 */
+  "\xe1\x84\xae\0" /* offset 7497 */
+  "\xe1\x84\xaf\0" /* offset 7501 */
+  "\xe1\x84\xb2\0" /* offset 7505 */
+  "\xe1\x84\xb6\0" /* offset 7509 */
+  "\xe1\x85\x80\0" /* offset 7513 */
+  "\xe1\x85\x87\0" /* offset 7517 */
+  "\xe1\x85\x8c\0" /* offset 7521 */
+  "\xe1\x87\xb1\0" /* offset 7525 */
+  "\xe1\x87\xb2\0" /* offset 7529 */
+  "\xe1\x85\x97\0" /* offset 7533 */
+  "\xe1\x85\x98\0" /* offset 7537 */
+  "\xe1\x85\x99\0" /* offset 7541 */
+  "\xe1\x86\x84\0" /* offset 7545 */
+  "\xe1\x86\x85\0" /* offset 7549 */
+  "\xe1\x86\x88\0" /* offset 7553 */
+  "\xe1\x86\x91\0" /* offset 7557 */
+  "\xe1\x86\x92\0" /* offset 7561 */
+  "\xe1\x86\x94\0" /* offset 7565 */
+  "\xe1\x86\x9e\0" /* offset 7569 */
+  "\xe1\x86\xa1\0" /* offset 7573 */
+  "\xe4\xb8\x89\0" /* offset 7577 */
+  "\xe5\x9b\x9b\0" /* offset 7581 */
+  "\xe4\xb8\x8a\0" /* offset 7585 */
+  "\xe4\xb8\xad\0" /* offset 7589 */
+  "\xe4\xb8\x8b\0" /* offset 7593 */
+  "\xe7\x94\xb2\0" /* offset 7597 */
+  "\xe4\xb8\x99\0" /* offset 7601 */
+  "\xe4\xb8\x81\0" /* offset 7605 */
+  "\xe5\xa4\xa9\0" /* offset 7609 */
+  "\xe5\x9c\xb0\0" /* offset 7613 */
+  "\x28\xe1\x84\x80\x29\0" /* offset 7617 */
+  "\x28\xe1\x84\x82\x29\0" /* offset 7623 */
+  "\x28\xe1\x84\x83\x29\0" /* offset 7629 */
+  "\x28\xe1\x84\x85\x29\0" /* offset 7635 */
+  "\x28\xe1\x84\x86\x29\0" /* offset 7641 */
+  "\x28\xe1\x84\x87\x29\0" /* offset 7647 */
+  "\x28\xe1\x84\x89\x29\0" /* offset 7653 */
+  "\x28\xe1\x84\x8b\x29\0" /* offset 7659 */
+  "\x28\xe1\x84\x8c\x29\0" /* offset 7665 */
+  "\x28\xe1\x84\x8e\x29\0" /* offset 7671 */
+  "\x28\xe1\x84\x8f\x29\0" /* offset 7677 */
+  "\x28\xe1\x84\x90\x29\0" /* offset 7683 */
+  "\x28\xe1\x84\x91\x29\0" /* offset 7689 */
+  "\x28\xe1\x84\x92\x29\0" /* offset 7695 */
+  "\x28\xe1\x84\x80\xe1\x85\xa1\x29\0" /* offset 7701 */
+  "\x28\xe1\x84\x82\xe1\x85\xa1\x29\0" /* offset 7710 */
+  "\x28\xe1\x84\x83\xe1\x85\xa1\x29\0" /* offset 7719 */
+  "\x28\xe1\x84\x85\xe1\x85\xa1\x29\0" /* offset 7728 */
+  "\x28\xe1\x84\x86\xe1\x85\xa1\x29\0" /* offset 7737 */
+  "\x28\xe1\x84\x87\xe1\x85\xa1\x29\0" /* offset 7746 */
+  "\x28\xe1\x84\x89\xe1\x85\xa1\x29\0" /* offset 7755 */
+  "\x28\xe1\x84\x8b\xe1\x85\xa1\x29\0" /* offset 7764 */
+  "\x28\xe1\x84\x8c\xe1\x85\xa1\x29\0" /* offset 7773 */
+  "\x28\xe1\x84\x8e\xe1\x85\xa1\x29\0" /* offset 7782 */
+  "\x28\xe1\x84\x8f\xe1\x85\xa1\x29\0" /* offset 7791 */
+  "\x28\xe1\x84\x90\xe1\x85\xa1\x29\0" /* offset 7800 */
+  "\x28\xe1\x84\x91\xe1\x85\xa1\x29\0" /* offset 7809 */
+  "\x28\xe1\x84\x92\xe1\x85\xa1\x29\0" /* offset 7818 */
+  "\x28\xe1\x84\x8c\xe1\x85\xae\x29\0" /* offset 7827 */
+  "\x28\xe4\xb8\x80\x29\0" /* offset 7836 */
+  "\x28\xe4\xba\x8c\x29\0" /* offset 7842 */
+  "\x28\xe4\xb8\x89\x29\0" /* offset 7848 */
+  "\x28\xe5\x9b\x9b\x29\0" /* offset 7854 */
+  "\x28\xe4\xba\x94\x29\0" /* offset 7860 */
+  "\x28\xe5\x85\xad\x29\0" /* offset 7866 */
+  "\x28\xe4\xb8\x83\x29\0" /* offset 7872 */
+  "\x28\xe5\x85\xab\x29\0" /* offset 7878 */
+  "\x28\xe4\xb9\x9d\x29\0" /* offset 7884 */
+  "\x28\xe5\x8d\x81\x29\0" /* offset 7890 */
+  "\x28\xe6\x9c\x88\x29\0" /* offset 7896 */
+  "\x28\xe7\x81\xab\x29\0" /* offset 7902 */
+  "\x28\xe6\xb0\xb4\x29\0" /* offset 7908 */
+  "\x28\xe6\x9c\xa8\x29\0" /* offset 7914 */
+  "\x28\xe9\x87\x91\x29\0" /* offset 7920 */
+  "\x28\xe5\x9c\x9f\x29\0" /* offset 7926 */
+  "\x28\xe6\x97\xa5\x29\0" /* offset 7932 */
+  "\x28\xe6\xa0\xaa\x29\0" /* offset 7938 */
+  "\x28\xe6\x9c\x89\x29\0" /* offset 7944 */
+  "\x28\xe7\xa4\xbe\x29\0" /* offset 7950 */
+  "\x28\xe5\x90\x8d\x29\0" /* offset 7956 */
+  "\x28\xe7\x89\xb9\x29\0" /* offset 7962 */
+  "\x28\xe8\xb2\xa1\x29\0" /* offset 7968 */
+  "\x28\xe7\xa5\x9d\x29\0" /* offset 7974 */
+  "\x28\xe5\x8a\xb4\x29\0" /* offset 7980 */
+  "\x28\xe4\xbb\xa3\x29\0" /* offset 7986 */
+  "\x28\xe5\x91\xbc\x29\0" /* offset 7992 */
+  "\x28\xe5\xad\xa6\x29\0" /* offset 7998 */
+  "\x28\xe7\x9b\xa3\x29\0" /* offset 8004 */
+  "\x28\xe4\xbc\x81\x29\0" /* offset 8010 */
+  "\x28\xe8\xb3\x87\x29\0" /* offset 8016 */
+  "\x28\xe5\x8d\x94\x29\0" /* offset 8022 */
+  "\x28\xe7\xa5\xad\x29\0" /* offset 8028 */
+  "\x28\xe4\xbc\x91\x29\0" /* offset 8034 */
+  "\x28\xe8\x87\xaa\x29\0" /* offset 8040 */
+  "\x28\xe8\x87\xb3\x29\0" /* offset 8046 */
+  "\x32\x31\0" /* offset 8052 */
+  "\x32\x32\0" /* offset 8055 */
+  "\x32\x33\0" /* offset 8058 */
+  "\x32\x34\0" /* offset 8061 */
+  "\x32\x35\0" /* offset 8064 */
+  "\x32\x36\0" /* offset 8067 */
+  "\x32\x37\0" /* offset 8070 */
+  "\x32\x38\0" /* offset 8073 */
+  "\x32\x39\0" /* offset 8076 */
+  "\x33\x30\0" /* offset 8079 */
+  "\x33\x31\0" /* offset 8082 */
+  "\x33\x32\0" /* offset 8085 */
+  "\x33\x33\0" /* offset 8088 */
+  "\x33\x34\0" /* offset 8091 */
+  "\x33\x35\0" /* offset 8094 */
+  "\xe1\x84\x80\xe1\x85\xa1\0" /* offset 8097 */
+  "\xe1\x84\x82\xe1\x85\xa1\0" /* offset 8104 */
+  "\xe1\x84\x83\xe1\x85\xa1\0" /* offset 8111 */
+  "\xe1\x84\x85\xe1\x85\xa1\0" /* offset 8118 */
+  "\xe1\x84\x86\xe1\x85\xa1\0" /* offset 8125 */
+  "\xe1\x84\x87\xe1\x85\xa1\0" /* offset 8132 */
+  "\xe1\x84\x89\xe1\x85\xa1\0" /* offset 8139 */
+  "\xe1\x84\x8b\xe1\x85\xa1\0" /* offset 8146 */
+  "\xe1\x84\x8c\xe1\x85\xa1\0" /* offset 8153 */
+  "\xe1\x84\x8e\xe1\x85\xa1\0" /* offset 8160 */
+  "\xe1\x84\x8f\xe1\x85\xa1\0" /* offset 8167 */
+  "\xe1\x84\x90\xe1\x85\xa1\0" /* offset 8174 */
+  "\xe1\x84\x91\xe1\x85\xa1\0" /* offset 8181 */
+  "\xe1\x84\x92\xe1\x85\xa1\0" /* offset 8188 */
+  "\xe4\xba\x94\0" /* offset 8195 */
+  "\xe5\x85\xad\0" /* offset 8199 */
+  "\xe4\xb8\x83\0" /* offset 8203 */
+  "\xe4\xb9\x9d\0" /* offset 8207 */
+  "\xe6\xa0\xaa\0" /* offset 8211 */
+  "\xe6\x9c\x89\0" /* offset 8215 */
+  "\xe7\xa4\xbe\0" /* offset 8219 */
+  "\xe5\x90\x8d\0" /* offset 8223 */
+  "\xe7\x89\xb9\0" /* offset 8227 */
+  "\xe8\xb2\xa1\0" /* offset 8231 */
+  "\xe7\xa5\x9d\0" /* offset 8235 */
+  "\xe5\x8a\xb4\0" /* offset 8239 */
+  "\xe7\xa7\x98\0" /* offset 8243 */
+  "\xe7\x94\xb7\0" /* offset 8247 */
+  "\xe9\x81\xa9\0" /* offset 8251 */
+  "\xe5\x84\xaa\0" /* offset 8255 */
+  "\xe5\x8d\xb0\0" /* offset 8259 */
+  "\xe6\xb3\xa8\0" /* offset 8263 */
+  "\xe9\xa0\x85\0" /* offset 8267 */
+  "\xe4\xbc\x91\0" /* offset 8271 */
+  "\xe5\x86\x99\0" /* offset 8275 */
+  "\xe6\xad\xa3\0" /* offset 8279 */
+  "\xe5\xb7\xa6\0" /* offset 8283 */
+  "\xe5\x8f\xb3\0" /* offset 8287 */
+  "\xe5\x8c\xbb\0" /* offset 8291 */
+  "\xe5\xae\x97\0" /* offset 8295 */
+  "\xe5\xad\xa6\0" /* offset 8299 */
+  "\xe7\x9b\xa3\0" /* offset 8303 */
+  "\xe4\xbc\x81\0" /* offset 8307 */
+  "\xe8\xb3\x87\0" /* offset 8311 */
+  "\xe5\x8d\x94\0" /* offset 8315 */
+  "\xe5\xa4\x9c\0" /* offset 8319 */
+  "\x33\x36\0" /* offset 8323 */
+  "\x33\x37\0" /* offset 8326 */
+  "\x33\x38\0" /* offset 8329 */
+  "\x33\x39\0" /* offset 8332 */
+  "\x34\x30\0" /* offset 8335 */
+  "\x34\x31\0" /* offset 8338 */
+  "\x34\x32\0" /* offset 8341 */
+  "\x34\x33\0" /* offset 8344 */
+  "\x34\x34\0" /* offset 8347 */
+  "\x34\x35\0" /* offset 8350 */
+  "\x34\x36\0" /* offset 8353 */
+  "\x34\x37\0" /* offset 8356 */
+  "\x34\x38\0" /* offset 8359 */
+  "\x34\x39\0" /* offset 8362 */
+  "\x35\x30\0" /* offset 8365 */
+  "\x31\xe6\x9c\x88\0" /* offset 8368 */
+  "\x32\xe6\x9c\x88\0" /* offset 8373 */
+  "\x33\xe6\x9c\x88\0" /* offset 8378 */
+  "\x34\xe6\x9c\x88\0" /* offset 8383 */
+  "\x35\xe6\x9c\x88\0" /* offset 8388 */
+  "\x36\xe6\x9c\x88\0" /* offset 8393 */
+  "\x37\xe6\x9c\x88\0" /* offset 8398 */
+  "\x38\xe6\x9c\x88\0" /* offset 8403 */
+  "\x39\xe6\x9c\x88\0" /* offset 8408 */
+  "\x31\x30\xe6\x9c\x88\0" /* offset 8413 */
+  "\x31\x31\xe6\x9c\x88\0" /* offset 8419 */
+  "\x31\x32\xe6\x9c\x88\0" /* offset 8425 */
+  "\xe3\x82\xa2\0" /* offset 8431 */
+  "\xe3\x82\xa4\0" /* offset 8435 */
+  "\xe3\x82\xa6\0" /* offset 8439 */
+  "\xe3\x82\xa8\0" /* offset 8443 */
+  "\xe3\x82\xaa\0" /* offset 8447 */
+  "\xe3\x82\xab\0" /* offset 8451 */
+  "\xe3\x82\xad\0" /* offset 8455 */
+  "\xe3\x82\xaf\0" /* offset 8459 */
+  "\xe3\x82\xb1\0" /* offset 8463 */
+  "\xe3\x82\xb3\0" /* offset 8467 */
+  "\xe3\x82\xb5\0" /* offset 8471 */
+  "\xe3\x82\xb7\0" /* offset 8475 */
+  "\xe3\x82\xb9\0" /* offset 8479 */
+  "\xe3\x82\xbb\0" /* offset 8483 */
+  "\xe3\x82\xbd\0" /* offset 8487 */
+  "\xe3\x82\xbf\0" /* offset 8491 */
+  "\xe3\x83\x81\0" /* offset 8495 */
+  "\xe3\x83\x84\0" /* offset 8499 */
+  "\xe3\x83\x86\0" /* offset 8503 */
+  "\xe3\x83\x88\0" /* offset 8507 */
+  "\xe3\x83\x8a\0" /* offset 8511 */
+  "\xe3\x83\x8b\0" /* offset 8515 */
+  "\xe3\x83\x8c\0" /* offset 8519 */
+  "\xe3\x83\x8d\0" /* offset 8523 */
+  "\xe3\x83\x8e\0" /* offset 8527 */
+  "\xe3\x83\x8f\0" /* offset 8531 */
+  "\xe3\x83\x92\0" /* offset 8535 */
+  "\xe3\x83\x95\0" /* offset 8539 */
+  "\xe3\x83\x98\0" /* offset 8543 */
+  "\xe3\x83\x9b\0" /* offset 8547 */
+  "\xe3\x83\x9e\0" /* offset 8551 */
+  "\xe3\x83\x9f\0" /* offset 8555 */
+  "\xe3\x83\xa0\0" /* offset 8559 */
+  "\xe3\x83\xa1\0" /* offset 8563 */
+  "\xe3\x83\xa2\0" /* offset 8567 */
+  "\xe3\x83\xa4\0" /* offset 8571 */
+  "\xe3\x83\xa6\0" /* offset 8575 */
+  "\xe3\x83\xa8\0" /* offset 8579 */
+  "\xe3\x83\xa9\0" /* offset 8583 */
+  "\xe3\x83\xaa\0" /* offset 8587 */
+  "\xe3\x83\xab\0" /* offset 8591 */
+  "\xe3\x83\xac\0" /* offset 8595 */
+  "\xe3\x83\xad\0" /* offset 8599 */
+  "\xe3\x83\xaf\0" /* offset 8603 */
+  "\xe3\x83\xb0\0" /* offset 8607 */
+  "\xe3\x83\xb1\0" /* offset 8611 */
+  "\xe3\x83\xb2\0" /* offset 8615 */
+  "\xe3\x82\xa2\xe3\x83\x8f\xe3\x82\x9a\xe3\x83\xbc\xe3\x83\x88\0" /* offset 8619 */
+  "\xe3\x82\xa2\xe3\x83\xab\xe3\x83\x95\xe3\x82\xa1\0" /* offset 8635 */
+  "\xe3\x82\xa2\xe3\x83\xb3\xe3\x83\x98\xe3\x82\x9a\xe3\x82\xa2\0" /* offset 8648 */
+  "\xe3\x82\xa2\xe3\x83\xbc\xe3\x83\xab\0" /* offset 8664 */
+  "\xe3\x82\xa4\xe3\x83\x8b\xe3\x83\xb3\xe3\x82\xaf\xe3\x82\x99\0" /* offset 8674 */
+  "\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x81\0" /* offset 8690 */
+  "\xe3\x82\xa6\xe3\x82\xa9\xe3\x83\xb3\0" /* offset 8700 */
+  "\xe3\x82\xa8\xe3\x82\xb9\xe3\x82\xaf\xe3\x83\xbc\xe3\x83\x88\xe3\x82\x99\0" /* offset 8710 */
+  "\xe3\x82\xa8\xe3\x83\xbc\xe3\x82\xab\xe3\x83\xbc\0" /* offset 8729 */
+  "\xe3\x82\xaa\xe3\x83\xb3\xe3\x82\xb9\0" /* offset 8742 */
+  "\xe3\x82\xaa\xe3\x83\xbc\xe3\x83\xa0\0" /* offset 8752 */
+  "\xe3\x82\xab\xe3\x82\xa4\xe3\x83\xaa\0" /* offset 8762 */
+  "\xe3\x82\xab\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x88\0" /* offset 8772 */
+  "\xe3\x82\xab\xe3\x83\xad\xe3\x83\xaa\xe3\x83\xbc\0" /* offset 8785 */
+  "\xe3\x82\xab\xe3\x82\x99\xe3\x83\xad\xe3\x83\xb3\0" /* offset 8798 */
+  "\xe3\x82\xab\xe3\x82\x99\xe3\x83\xb3\xe3\x83\x9e\0" /* offset 8811 */
+  "\xe3\x82\xad\xe3\x82\x99\xe3\x82\xab\xe3\x82\x99\0" /* offset 8824 */
+  "\xe3\x82\xad\xe3\x82\x99\xe3\x83\x8b\xe3\x83\xbc\0" /* offset 8837 */
+  "\xe3\x82\xad\xe3\x83\xa5\xe3\x83\xaa\xe3\x83\xbc\0" /* offset 8850 */
+  "\xe3\x82\xad\xe3\x82\x99\xe3\x83\xab\xe3\x82\xbf\xe3\x82\x99\xe3\x83\xbc\0" /* offset 8863 */
+  "\xe3\x82\xad\xe3\x83\xad\0" /* offset 8882 */
+  "\xe3\x82\xad\xe3\x83\xad\xe3\x82\xaf\xe3\x82\x99\xe3\x83\xa9\xe3\x83\xa0\0" /* offset 8889 */
+  "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab\0" /* offset 8908 */
+  "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88\0" /* offset 8927 */
+  "\xe3\x82\xaf\xe3\x82\x99\xe3\x83\xa9\xe3\x83\xa0\0" /* offset 8943 */
+  "\xe3\x82\xaf\xe3\x82\x99\xe3\x83\xa9\xe3\x83\xa0\xe3\x83\x88\xe3\x83\xb3\0" /* offset 8956 */
+  "\xe3\x82\xaf\xe3\x83\xab\xe3\x82\xbb\xe3\x82\x99\xe3\x82\xa4\xe3\x83\xad\0" /* offset 8975 */
+  "\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xbc\xe3\x83\x8d\0" /* offset 8994 */
+  "\xe3\x82\xb1\xe3\x83\xbc\xe3\x82\xb9\0" /* offset 9007 */
+  "\xe3\x82\xb3\xe3\x83\xab\xe3\x83\x8a\0" /* offset 9017 */
+  "\xe3\x82\xb3\xe3\x83\xbc\xe3\x83\x9b\xe3\x82\x9a\0" /* offset 9027 */
+  "\xe3\x82\xb5\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xab\0" /* offset 9040 */
+  "\xe3\x82\xb5\xe3\x83\xb3\xe3\x83\x81\xe3\x83\xbc\xe3\x83\xa0\0" /* offset 9053 */
+  "\xe3\x82\xb7\xe3\x83\xaa\xe3\x83\xb3\xe3\x82\xaf\xe3\x82\x99\0" /* offset 9069 */
+  "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x81\0" /* offset 9085 */
+  "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88\0" /* offset 9095 */
+  "\xe3\x82\xbf\xe3\x82\x99\xe3\x83\xbc\xe3\x82\xb9\0" /* offset 9105 */
+  "\xe3\x83\x86\xe3\x82\x99\xe3\x82\xb7\0" /* offset 9118 */
+  "\xe3\x83\x88\xe3\x82\x99\xe3\x83\xab\0" /* offset 9128 */
+  "\xe3\x83\x88\xe3\x83\xb3\0" /* offset 9138 */
+  "\xe3\x83\x8a\xe3\x83\x8e\0" /* offset 9145 */
+  "\xe3\x83\x8e\xe3\x83\x83\xe3\x83\x88\0" /* offset 9152 */
+  "\xe3\x83\x8f\xe3\x82\xa4\xe3\x83\x84\0" /* offset 9162 */
+  "\xe3\x83\x8f\xe3\x82\x9a\xe3\x83\xbc\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88\0" /* offset 9172 */
+  "\xe3\x83\x8f\xe3\x82\x9a\xe3\x83\xbc\xe3\x83\x84\0" /* offset 9191 */
+  "\xe3\x83\x8f\xe3\x82\x99\xe3\x83\xbc\xe3\x83\xac\xe3\x83\xab\0" /* offset 9204 */
+  "\xe3\x83\x92\xe3\x82\x9a\xe3\x82\xa2\xe3\x82\xb9\xe3\x83\x88\xe3\x83\xab\0" /* offset 9220 */
+  "\xe3\x83\x92\xe3\x82\x9a\xe3\x82\xaf\xe3\x83\xab\0" /* offset 9239 */
+  "\xe3\x83\x92\xe3\x82\x9a\xe3\x82\xb3\0" /* offset 9252 */
+  "\xe3\x83\x92\xe3\x82\x99\xe3\x83\xab\0" /* offset 9262 */
+  "\xe3\x83\x95\xe3\x82\xa1\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x88\xe3\x82\x99\0" /* offset 9272 */
+  "\xe3\x83\x95\xe3\x82\xa3\xe3\x83\xbc\xe3\x83\x88\0" /* offset 9291 */
+  "\xe3\x83\x95\xe3\x82\x99\xe3\x83\x83\xe3\x82\xb7\xe3\x82\xa7\xe3\x83\xab\0" /* offset 9304 */
+  "\xe3\x83\x95\xe3\x83\xa9\xe3\x83\xb3\0" /* offset 9323 */
+  "\xe3\x83\x98\xe3\x82\xaf\xe3\x82\xbf\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9333 */
+  "\xe3\x83\x98\xe3\x82\x9a\xe3\x82\xbd\0" /* offset 9349 */
+  "\xe3\x83\x98\xe3\x82\x9a\xe3\x83\x8b\xe3\x83\x92\0" /* offset 9359 */
+  "\xe3\x83\x98\xe3\x83\xab\xe3\x83\x84\0" /* offset 9372 */
+  "\xe3\x83\x98\xe3\x82\x9a\xe3\x83\xb3\xe3\x82\xb9\0" /* offset 9382 */
+  "\xe3\x83\x98\xe3\x82\x9a\xe3\x83\xbc\xe3\x82\xb7\xe3\x82\x99\0" /* offset 9395 */
+  "\xe3\x83\x98\xe3\x82\x99\xe3\x83\xbc\xe3\x82\xbf\0" /* offset 9411 */
+  "\xe3\x83\x9b\xe3\x82\x9a\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0" /* offset 9424 */
+  "\xe3\x83\x9b\xe3\x82\x99\xe3\x83\xab\xe3\x83\x88\0" /* offset 9440 */
+  "\xe3\x83\x9b\xe3\x83\xb3\0" /* offset 9453 */
+  "\xe3\x83\x9b\xe3\x82\x9a\xe3\x83\xb3\xe3\x83\x88\xe3\x82\x99\0" /* offset 9460 */
+  "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9476 */
+  "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xb3\0" /* offset 9486 */
+  "\xe3\x83\x9e\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xad\0" /* offset 9496 */
+  "\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xab\0" /* offset 9509 */
+  "\xe3\x83\x9e\xe3\x83\x83\xe3\x83\x8f\0" /* offset 9519 */
+  "\xe3\x83\x9e\xe3\x83\xab\xe3\x82\xaf\0" /* offset 9529 */
+  "\xe3\x83\x9e\xe3\x83\xb3\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0" /* offset 9539 */
+  "\xe3\x83\x9f\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xb3\0" /* offset 9555 */
+  "\xe3\x83\x9f\xe3\x83\xaa\0" /* offset 9568 */
+  "\xe3\x83\x9f\xe3\x83\xaa\xe3\x83\x8f\xe3\x82\x99\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9575 */
+  "\xe3\x83\xa1\xe3\x82\xab\xe3\x82\x99\0" /* offset 9594 */
+  "\xe3\x83\xa1\xe3\x82\xab\xe3\x82\x99\xe3\x83\x88\xe3\x83\xb3\0" /* offset 9604 */
+  "\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab\0" /* offset 9620 */
+  "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\x88\xe3\x82\x99\0" /* offset 9633 */
+  "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9646 */
+  "\xe3\x83\xa6\xe3\x82\xa2\xe3\x83\xb3\0" /* offset 9656 */
+  "\xe3\x83\xaa\xe3\x83\x83\xe3\x83\x88\xe3\x83\xab\0" /* offset 9666 */
+  "\xe3\x83\xaa\xe3\x83\xa9\0" /* offset 9679 */
+  "\xe3\x83\xab\xe3\x83\x92\xe3\x82\x9a\xe3\x83\xbc\0" /* offset 9686 */
+  "\xe3\x83\xab\xe3\x83\xbc\xe3\x83\x95\xe3\x82\x99\xe3\x83\xab\0" /* offset 9699 */
+  "\xe3\x83\xac\xe3\x83\xa0\0" /* offset 9715 */
+  "\xe3\x83\xac\xe3\x83\xb3\xe3\x83\x88\xe3\x82\xb1\xe3\x82\x99\xe3\x83\xb3\0" /* offset 9722 */
+  "\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88\0" /* offset 9741 */
+  "\x30\xe7\x82\xb9\0" /* offset 9751 */
+  "\x31\xe7\x82\xb9\0" /* offset 9756 */
+  "\x32\xe7\x82\xb9\0" /* offset 9761 */
+  "\x33\xe7\x82\xb9\0" /* offset 9766 */
+  "\x34\xe7\x82\xb9\0" /* offset 9771 */
+  "\x35\xe7\x82\xb9\0" /* offset 9776 */
+  "\x36\xe7\x82\xb9\0" /* offset 9781 */
+  "\x37\xe7\x82\xb9\0" /* offset 9786 */
+  "\x38\xe7\x82\xb9\0" /* offset 9791 */
+  "\x39\xe7\x82\xb9\0" /* offset 9796 */
+  "\x31\x30\xe7\x82\xb9\0" /* offset 9801 */
+  "\x31\x31\xe7\x82\xb9\0" /* offset 9807 */
+  "\x31\x32\xe7\x82\xb9\0" /* offset 9813 */
+  "\x31\x33\xe7\x82\xb9\0" /* offset 9819 */
+  "\x31\x34\xe7\x82\xb9\0" /* offset 9825 */
+  "\x31\x35\xe7\x82\xb9\0" /* offset 9831 */
+  "\x31\x36\xe7\x82\xb9\0" /* offset 9837 */
+  "\x31\x37\xe7\x82\xb9\0" /* offset 9843 */
+  "\x31\x38\xe7\x82\xb9\0" /* offset 9849 */
+  "\x31\x39\xe7\x82\xb9\0" /* offset 9855 */
+  "\x32\x30\xe7\x82\xb9\0" /* offset 9861 */
+  "\x32\x31\xe7\x82\xb9\0" /* offset 9867 */
+  "\x32\x32\xe7\x82\xb9\0" /* offset 9873 */
+  "\x32\x33\xe7\x82\xb9\0" /* offset 9879 */
+  "\x32\x34\xe7\x82\xb9\0" /* offset 9885 */
+  "\x68\x50\x61\0" /* offset 9891 */
+  "\x64\x61\0" /* offset 9895 */
+  "\x41\x55\0" /* offset 9898 */
+  "\x62\x61\x72\0" /* offset 9901 */
+  "\x6f\x56\0" /* offset 9905 */
+  "\x70\x63\0" /* offset 9908 */
+  "\xe5\xb9\xb3\xe6\x88\x90\0" /* offset 9911 */
+  "\xe6\x98\xad\xe5\x92\x8c\0" /* offset 9918 */
+  "\xe5\xa4\xa7\xe6\xad\xa3\0" /* offset 9925 */
+  "\xe6\x98\x8e\xe6\xb2\xbb\0" /* offset 9932 */
+  "\xe6\xa0\xaa\xe5\xbc\x8f\xe4\xbc\x9a\xe7\xa4\xbe\0" /* offset 9939 */
+  "\x70\x41\0" /* offset 9952 */
+  "\x6e\x41\0" /* offset 9955 */
+  "\xce\xbc\x41\0" /* offset 9958 */
+  "\x6d\x41\0" /* offset 9962 */
+  "\x6b\x41\0" /* offset 9965 */
+  "\x4b\x42\0" /* offset 9968 */
+  "\x4d\x42\0" /* offset 9971 */
+  "\x47\x42\0" /* offset 9974 */
+  "\x63\x61\x6c\0" /* offset 9977 */
+  "\x6b\x63\x61\x6c\0" /* offset 9981 */
+  "\x70\x46\0" /* offset 9986 */
+  "\x6e\x46\0" /* offset 9989 */
+  "\xce\xbc\x46\0" /* offset 9992 */
+  "\xce\xbc\x67\0" /* offset 9996 */
+  "\x6d\x67\0" /* offset 10000 */
+  "\x6b\x67\0" /* offset 10003 */
+  "\x48\x7a\0" /* offset 10006 */
+  "\x6b\x48\x7a\0" /* offset 10009 */
+  "\x4d\x48\x7a\0" /* offset 10013 */
+  "\x47\x48\x7a\0" /* offset 10017 */
+  "\x54\x48\x7a\0" /* offset 10021 */
+  "\xce\xbc\x6c\0" /* offset 10025 */
+  "\x6d\x6c\0" /* offset 10029 */
+  "\x64\x6c\0" /* offset 10032 */
+  "\x6b\x6c\0" /* offset 10035 */
+  "\x66\x6d\0" /* offset 10038 */
+  "\x6e\x6d\0" /* offset 10041 */
+  "\xce\xbc\x6d\0" /* offset 10044 */
+  "\x6d\x6d\0" /* offset 10048 */
+  "\x63\x6d\0" /* offset 10051 */
+  "\x6b\x6d\0" /* offset 10054 */
+  "\x6d\x6d\x32\0" /* offset 10057 */
+  "\x63\x6d\x32\0" /* offset 10061 */
+  "\x6d\x32\0" /* offset 10065 */
+  "\x6b\x6d\x32\0" /* offset 10068 */
+  "\x6d\x6d\x33\0" /* offset 10072 */
+  "\x63\x6d\x33\0" /* offset 10076 */
+  "\x6d\x33\0" /* offset 10080 */
+  "\x6b\x6d\x33\0" /* offset 10083 */
+  "\x6d\xe2\x88\x95\x73\0" /* offset 10087 */
+  "\x6d\xe2\x88\x95\x73\x32\0" /* offset 10093 */
+  "\x50\x61\0" /* offset 10100 */
+  "\x6b\x50\x61\0" /* offset 10103 */
+  "\x4d\x50\x61\0" /* offset 10107 */
+  "\x47\x50\x61\0" /* offset 10111 */
+  "\x72\x61\x64\0" /* offset 10115 */
+  "\x72\x61\x64\xe2\x88\x95\x73\0" /* offset 10119 */
+  "\x72\x61\x64\xe2\x88\x95\x73\x32\0" /* offset 10127 */
+  "\x70\x73\0" /* offset 10136 */
+  "\x6e\x73\0" /* offset 10139 */
+  "\xce\xbc\x73\0" /* offset 10142 */
+  "\x6d\x73\0" /* offset 10146 */
+  "\x70\x56\0" /* offset 10149 */
+  "\x6e\x56\0" /* offset 10152 */
+  "\xce\xbc\x56\0" /* offset 10155 */
+  "\x6d\x56\0" /* offset 10159 */
+  "\x6b\x56\0" /* offset 10162 */
+  "\x4d\x56\0" /* offset 10165 */
+  "\x70\x57\0" /* offset 10168 */
+  "\x6e\x57\0" /* offset 10171 */
+  "\xce\xbc\x57\0" /* offset 10174 */
+  "\x6d\x57\0" /* offset 10178 */
+  "\x6b\x57\0" /* offset 10181 */
+  "\x4d\x57\0" /* offset 10184 */
+  "\x6b\xce\xa9\0" /* offset 10187 */
+  "\x4d\xce\xa9\0" /* offset 10191 */
+  "\x61\x2e\x6d\x2e\0" /* offset 10195 */
+  "\x42\x71\0" /* offset 10200 */
+  "\x63\x63\0" /* offset 10203 */
+  "\x63\x64\0" /* offset 10206 */
+  "\x43\xe2\x88\x95\x6b\x67\0" /* offset 10209 */
+  "\x43\x6f\x2e\0" /* offset 10216 */
+  "\x64\x42\0" /* offset 10220 */
+  "\x47\x79\0" /* offset 10223 */
+  "\x68\x61\0" /* offset 10226 */
+  "\x48\x50\0" /* offset 10229 */
+  "\x69\x6e\0" /* offset 10232 */
+  "\x4b\x4b\0" /* offset 10235 */
+  "\x4b\x4d\0" /* offset 10238 */
+  "\x6b\x74\0" /* offset 10241 */
+  "\x6c\x6d\0" /* offset 10244 */
+  "\x6c\x6e\0" /* offset 10247 */
+  "\x6c\x6f\x67\0" /* offset 10250 */
+  "\x6c\x78\0" /* offset 10254 */
+  "\x6d\x62\0" /* offset 10257 */
+  "\x6d\x69\x6c\0" /* offset 10260 */
+  "\x6d\x6f\x6c\0" /* offset 10264 */
+  "\x50\x48\0" /* offset 10268 */
+  "\x70\x2e\x6d\x2e\0" /* offset 10271 */
+  "\x50\x50\x4d\0" /* offset 10276 */
+  "\x50\x52\0" /* offset 10280 */
+  "\x73\x72\0" /* offset 10283 */
+  "\x53\x76\0" /* offset 10286 */
+  "\x57\x62\0" /* offset 10289 */
+  "\x31\xe6\x97\xa5\0" /* offset 10292 */
+  "\x32\xe6\x97\xa5\0" /* offset 10297 */
+  "\x33\xe6\x97\xa5\0" /* offset 10302 */
+  "\x34\xe6\x97\xa5\0" /* offset 10307 */
+  "\x35\xe6\x97\xa5\0" /* offset 10312 */
+  "\x36\xe6\x97\xa5\0" /* offset 10317 */
+  "\x37\xe6\x97\xa5\0" /* offset 10322 */
+  "\x38\xe6\x97\xa5\0" /* offset 10327 */
+  "\x39\xe6\x97\xa5\0" /* offset 10332 */
+  "\x31\x30\xe6\x97\xa5\0" /* offset 10337 */
+  "\x31\x31\xe6\x97\xa5\0" /* offset 10343 */
+  "\x31\x32\xe6\x97\xa5\0" /* offset 10349 */
+  "\x31\x33\xe6\x97\xa5\0" /* offset 10355 */
+  "\x31\x34\xe6\x97\xa5\0" /* offset 10361 */
+  "\x31\x35\xe6\x97\xa5\0" /* offset 10367 */
+  "\x31\x36\xe6\x97\xa5\0" /* offset 10373 */
+  "\x31\x37\xe6\x97\xa5\0" /* offset 10379 */
+  "\x31\x38\xe6\x97\xa5\0" /* offset 10385 */
+  "\x31\x39\xe6\x97\xa5\0" /* offset 10391 */
+  "\x32\x30\xe6\x97\xa5\0" /* offset 10397 */
+  "\x32\x31\xe6\x97\xa5\0" /* offset 10403 */
+  "\x32\x32\xe6\x97\xa5\0" /* offset 10409 */
+  "\x32\x33\xe6\x97\xa5\0" /* offset 10415 */
+  "\x32\x34\xe6\x97\xa5\0" /* offset 10421 */
+  "\x32\x35\xe6\x97\xa5\0" /* offset 10427 */
+  "\x32\x36\xe6\x97\xa5\0" /* offset 10433 */
+  "\x32\x37\xe6\x97\xa5\0" /* offset 10439 */
+  "\x32\x38\xe6\x97\xa5\0" /* offset 10445 */
+  "\x32\x39\xe6\x97\xa5\0" /* offset 10451 */
+  "\x33\x30\xe6\x97\xa5\0" /* offset 10457 */
+  "\x33\x31\xe6\x97\xa5\0" /* offset 10463 */
+  "\xe8\xb1\x88\0" /* offset 10469 */
+  "\xe6\x9b\xb4\0" /* offset 10473 */
+  "\xe8\xb3\x88\0" /* offset 10477 */
+  "\xe6\xbb\x91\0" /* offset 10481 */
+  "\xe4\xb8\xb2\0" /* offset 10485 */
+  "\xe5\x8f\xa5\0" /* offset 10489 */
+  "\xe5\xa5\x91\0" /* offset 10493 */
+  "\xe5\x96\x87\0" /* offset 10497 */
+  "\xe5\xa5\x88\0" /* offset 10501 */
+  "\xe6\x87\xb6\0" /* offset 10505 */
+  "\xe7\x99\xa9\0" /* offset 10509 */
+  "\xe7\xbe\x85\0" /* offset 10513 */
+  "\xe8\x98\xbf\0" /* offset 10517 */
+  "\xe8\x9e\xba\0" /* offset 10521 */
+  "\xe8\xa3\xb8\0" /* offset 10525 */
+  "\xe9\x82\x8f\0" /* offset 10529 */
+  "\xe6\xa8\x82\0" /* offset 10533 */
+  "\xe6\xb4\x9b\0" /* offset 10537 */
+  "\xe7\x83\x99\0" /* offset 10541 */
+  "\xe7\x8f\x9e\0" /* offset 10545 */
+  "\xe8\x90\xbd\0" /* offset 10549 */
+  "\xe9\x85\xaa\0" /* offset 10553 */
+  "\xe9\xa7\xb1\0" /* offset 10557 */
+  "\xe4\xba\x82\0" /* offset 10561 */
+  "\xe5\x8d\xb5\0" /* offset 10565 */
+  "\xe6\xac\x84\0" /* offset 10569 */
+  "\xe7\x88\x9b\0" /* offset 10573 */
+  "\xe8\x98\xad\0" /* offset 10577 */
+  "\xe9\xb8\x9e\0" /* offset 10581 */
+  "\xe5\xb5\x90\0" /* offset 10585 */
+  "\xe6\xbf\xab\0" /* offset 10589 */
+  "\xe8\x97\x8d\0" /* offset 10593 */
+  "\xe8\xa5\xa4\0" /* offset 10597 */
+  "\xe6\x8b\x89\0" /* offset 10601 */
+  "\xe8\x87\x98\0" /* offset 10605 */
+  "\xe8\xa0\x9f\0" /* offset 10609 */
+  "\xe5\xbb\x8a\0" /* offset 10613 */
+  "\xe6\x9c\x97\0" /* offset 10617 */
+  "\xe6\xb5\xaa\0" /* offset 10621 */
+  "\xe7\x8b\xbc\0" /* offset 10625 */
+  "\xe9\x83\x8e\0" /* offset 10629 */
+  "\xe4\xbe\x86\0" /* offset 10633 */
+  "\xe5\x86\xb7\0" /* offset 10637 */
+  "\xe5\x8b\x9e\0" /* offset 10641 */
+  "\xe6\x93\x84\0" /* offset 10645 */
+  "\xe6\xab\x93\0" /* offset 10649 */
+  "\xe7\x88\x90\0" /* offset 10653 */
+  "\xe7\x9b\xa7\0" /* offset 10657 */
+  "\xe8\x98\x86\0" /* offset 10661 */
+  "\xe8\x99\x9c\0" /* offset 10665 */
+  "\xe8\xb7\xaf\0" /* offset 10669 */
+  "\xe9\x9c\xb2\0" /* offset 10673 */
+  "\xe9\xad\xaf\0" /* offset 10677 */
+  "\xe9\xb7\xba\0" /* offset 10681 */
+  "\xe7\xa2\x8c\0" /* offset 10685 */
+  "\xe7\xa5\xbf\0" /* offset 10689 */
+  "\xe7\xb6\xa0\0" /* offset 10693 */
+  "\xe8\x8f\x89\0" /* offset 10697 */
+  "\xe9\x8c\x84\0" /* offset 10701 */
+  "\xe8\xab\x96\0" /* offset 10705 */
+  "\xe5\xa3\x9f\0" /* offset 10709 */
+  "\xe5\xbc\x84\0" /* offset 10713 */
+  "\xe7\xb1\xa0\0" /* offset 10717 */
+  "\xe8\x81\xbe\0" /* offset 10721 */
+  "\xe7\x89\xa2\0" /* offset 10725 */
+  "\xe7\xa3\x8a\0" /* offset 10729 */
+  "\xe8\xb3\x82\0" /* offset 10733 */
+  "\xe9\x9b\xb7\0" /* offset 10737 */
+  "\xe5\xa3\x98\0" /* offset 10741 */
+  "\xe5\xb1\xa2\0" /* offset 10745 */
+  "\xe6\xa8\x93\0" /* offset 10749 */
+  "\xe6\xb7\x9a\0" /* offset 10753 */
+  "\xe6\xbc\x8f\0" /* offset 10757 */
+  "\xe7\xb4\xaf\0" /* offset 10761 */
+  "\xe7\xb8\xb7\0" /* offset 10765 */
+  "\xe9\x99\x8b\0" /* offset 10769 */
+  "\xe5\x8b\x92\0" /* offset 10773 */
+  "\xe8\x82\x8b\0" /* offset 10777 */
+  "\xe5\x87\x9c\0" /* offset 10781 */
+  "\xe5\x87\x8c\0" /* offset 10785 */
+  "\xe7\xa8\x9c\0" /* offset 10789 */
+  "\xe7\xb6\xbe\0" /* offset 10793 */
+  "\xe8\x8f\xb1\0" /* offset 10797 */
+  "\xe9\x99\xb5\0" /* offset 10801 */
+  "\xe8\xae\x80\0" /* offset 10805 */
+  "\xe6\x8b\x8f\0" /* offset 10809 */
+  "\xe8\xab\xbe\0" /* offset 10813 */
+  "\xe4\xb8\xb9\0" /* offset 10817 */
+  "\xe5\xaf\xa7\0" /* offset 10821 */
+  "\xe6\x80\x92\0" /* offset 10825 */
+  "\xe7\x8e\x87\0" /* offset 10829 */
+  "\xe7\x95\xb0\0" /* offset 10833 */
+  "\xe5\x8c\x97\0" /* offset 10837 */
+  "\xe7\xa3\xbb\0" /* offset 10841 */
+  "\xe4\xbe\xbf\0" /* offset 10845 */
+  "\xe5\xbe\xa9\0" /* offset 10849 */
+  "\xe4\xb8\x8d\0" /* offset 10853 */
+  "\xe6\xb3\x8c\0" /* offset 10857 */
+  "\xe6\x95\xb8\0" /* offset 10861 */
+  "\xe7\xb4\xa2\0" /* offset 10865 */
+  "\xe5\x8f\x83\0" /* offset 10869 */
+  "\xe5\xa1\x9e\0" /* offset 10873 */
+  "\xe7\x9c\x81\0" /* offset 10877 */
+  "\xe8\x91\x89\0" /* offset 10881 */
+  "\xe8\xaa\xaa\0" /* offset 10885 */
+  "\xe6\xae\xba\0" /* offset 10889 */
+  "\xe6\xb2\x88\0" /* offset 10893 */
+  "\xe6\x8b\xbe\0" /* offset 10897 */
+  "\xe8\x8b\xa5\0" /* offset 10901 */
+  "\xe6\x8e\xa0\0" /* offset 10905 */
+  "\xe7\x95\xa5\0" /* offset 10909 */
+  "\xe4\xba\xae\0" /* offset 10913 */
+  "\xe5\x85\xa9\0" /* offset 10917 */
+  "\xe5\x87\x89\0" /* offset 10921 */
+  "\xe6\xa2\x81\0" /* offset 10925 */
+  "\xe7\xb3\xa7\0" /* offset 10929 */
+  "\xe8\x89\xaf\0" /* offset 10933 */
+  "\xe8\xab\x92\0" /* offset 10937 */
+  "\xe9\x87\x8f\0" /* offset 10941 */
+  "\xe5\x8b\xb5\0" /* offset 10945 */
+  "\xe5\x91\x82\0" /* offset 10949 */
+  "\xe5\xbb\xac\0" /* offset 10953 */
+  "\xe6\x97\x85\0" /* offset 10957 */
+  "\xe6\xbf\xbe\0" /* offset 10961 */
+  "\xe7\xa4\xaa\0" /* offset 10965 */
+  "\xe9\x96\xad\0" /* offset 10969 */
+  "\xe9\xa9\xaa\0" /* offset 10973 */
+  "\xe9\xba\x97\0" /* offset 10977 */
+  "\xe9\xbb\x8e\0" /* offset 10981 */
+  "\xe6\x9b\x86\0" /* offset 10985 */
+  "\xe6\xad\xb7\0" /* offset 10989 */
+  "\xe8\xbd\xa2\0" /* offset 10993 */
+  "\xe5\xb9\xb4\0" /* offset 10997 */
+  "\xe6\x86\x90\0" /* offset 11001 */
+  "\xe6\x88\x80\0" /* offset 11005 */
+  "\xe6\x92\x9a\0" /* offset 11009 */
+  "\xe6\xbc\xa3\0" /* offset 11013 */
+  "\xe7\x85\x89\0" /* offset 11017 */
+  "\xe7\x92\x89\0" /* offset 11021 */
+  "\xe7\xa7\x8a\0" /* offset 11025 */
+  "\xe7\xb7\xb4\0" /* offset 11029 */
+  "\xe8\x81\xaf\0" /* offset 11033 */
+  "\xe8\xbc\xa6\0" /* offset 11037 */
+  "\xe8\x93\xae\0" /* offset 11041 */
+  "\xe9\x80\xa3\0" /* offset 11045 */
+  "\xe9\x8d\x8a\0" /* offset 11049 */
+  "\xe5\x88\x97\0" /* offset 11053 */
+  "\xe5\x8a\xa3\0" /* offset 11057 */
+  "\xe5\x92\xbd\0" /* offset 11061 */
+  "\xe7\x83\x88\0" /* offset 11065 */
+  "\xe8\xa3\x82\0" /* offset 11069 */
+  "\xe5\xbb\x89\0" /* offset 11073 */
+  "\xe5\xbf\xb5\0" /* offset 11077 */
+  "\xe6\x8d\xbb\0" /* offset 11081 */
+  "\xe6\xae\xae\0" /* offset 11085 */
+  "\xe7\xb0\xbe\0" /* offset 11089 */
+  "\xe7\x8d\xb5\0" /* offset 11093 */
+  "\xe4\xbb\xa4\0" /* offset 11097 */
+  "\xe5\x9b\xb9\0" /* offset 11101 */
+  "\xe5\xb6\xba\0" /* offset 11105 */
+  "\xe6\x80\x9c\0" /* offset 11109 */
+  "\xe7\x8e\xb2\0" /* offset 11113 */
+  "\xe7\x91\xa9\0" /* offset 11117 */
+  "\xe7\xbe\x9a\0" /* offset 11121 */
+  "\xe8\x81\x86\0" /* offset 11125 */
+  "\xe9\x88\xb4\0" /* offset 11129 */
+  "\xe9\x9b\xb6\0" /* offset 11133 */
+  "\xe9\x9d\x88\0" /* offset 11137 */
+  "\xe9\xa0\x98\0" /* offset 11141 */
+  "\xe4\xbe\x8b\0" /* offset 11145 */
+  "\xe7\xa6\xae\0" /* offset 11149 */
+  "\xe9\x86\xb4\0" /* offset 11153 */
+  "\xe9\x9a\xb8\0" /* offset 11157 */
+  "\xe6\x83\xa1\0" /* offset 11161 */
+  "\xe4\xba\x86\0" /* offset 11165 */
+  "\xe5\x83\x9a\0" /* offset 11169 */
+  "\xe5\xaf\xae\0" /* offset 11173 */
+  "\xe5\xb0\xbf\0" /* offset 11177 */
+  "\xe6\x96\x99\0" /* offset 11181 */
+  "\xe7\x87\x8e\0" /* offset 11185 */
+  "\xe7\x99\x82\0" /* offset 11189 */
+  "\xe8\x93\xbc\0" /* offset 11193 */
+  "\xe9\x81\xbc\0" /* offset 11197 */
+  "\xe6\x9a\x88\0" /* offset 11201 */
+  "\xe9\x98\xae\0" /* offset 11205 */
+  "\xe5\x8a\x89\0" /* offset 11209 */
+  "\xe6\x9d\xbb\0" /* offset 11213 */
+  "\xe6\x9f\xb3\0" /* offset 11217 */
+  "\xe6\xb5\x81\0" /* offset 11221 */
+  "\xe6\xba\x9c\0" /* offset 11225 */
+  "\xe7\x90\x89\0" /* offset 11229 */
+  "\xe7\x95\x99\0" /* offset 11233 */
+  "\xe7\xa1\xab\0" /* offset 11237 */
+  "\xe7\xb4\x90\0" /* offset 11241 */
+  "\xe9\xa1\x9e\0" /* offset 11245 */
+  "\xe6\x88\xae\0" /* offset 11249 */
+  "\xe9\x99\xb8\0" /* offset 11253 */
+  "\xe5\x80\xab\0" /* offset 11257 */
+  "\xe5\xb4\x99\0" /* offset 11261 */
+  "\xe6\xb7\xaa\0" /* offset 11265 */
+  "\xe8\xbc\xaa\0" /* offset 11269 */
+  "\xe5\xbe\x8b\0" /* offset 11273 */
+  "\xe6\x85\x84\0" /* offset 11277 */
+  "\xe6\xa0\x97\0" /* offset 11281 */
+  "\xe9\x9a\x86\0" /* offset 11285 */
+  "\xe5\x88\xa9\0" /* offset 11289 */
+  "\xe5\x90\x8f\0" /* offset 11293 */
+  "\xe5\xb1\xa5\0" /* offset 11297 */
+  "\xe6\x98\x93\0" /* offset 11301 */
+  "\xe6\x9d\x8e\0" /* offset 11305 */
+  "\xe6\xa2\xa8\0" /* offset 11309 */
+  "\xe6\xb3\xa5\0" /* offset 11313 */
+  "\xe7\x90\x86\0" /* offset 11317 */
+  "\xe7\x97\xa2\0" /* offset 11321 */
+  "\xe7\xbd\xb9\0" /* offset 11325 */
+  "\xe8\xa3\x8f\0" /* offset 11329 */
+  "\xe8\xa3\xa1\0" /* offset 11333 */
+  "\xe9\x9b\xa2\0" /* offset 11337 */
+  "\xe5\x8c\xbf\0" /* offset 11341 */
+  "\xe6\xba\xba\0" /* offset 11345 */
+  "\xe5\x90\x9d\0" /* offset 11349 */
+  "\xe7\x87\x90\0" /* offset 11353 */
+  "\xe7\x92\x98\0" /* offset 11357 */
+  "\xe8\x97\xba\0" /* offset 11361 */
+  "\xe9\x9a\xa3\0" /* offset 11365 */
+  "\xe9\xb1\x97\0" /* offset 11369 */
+  "\xe9\xba\x9f\0" /* offset 11373 */
+  "\xe6\x9e\x97\0" /* offset 11377 */
+  "\xe6\xb7\x8b\0" /* offset 11381 */
+  "\xe8\x87\xa8\0" /* offset 11385 */
+  "\xe7\xac\xa0\0" /* offset 11389 */
+  "\xe7\xb2\x92\0" /* offset 11393 */
+  "\xe7\x8b\x80\0" /* offset 11397 */
+  "\xe7\x82\x99\0" /* offset 11401 */
+  "\xe8\xad\x98\0" /* offset 11405 */
+  "\xe4\xbb\x80\0" /* offset 11409 */
+  "\xe8\x8c\xb6\0" /* offset 11413 */
+  "\xe5\x88\xba\0" /* offset 11417 */
+  "\xe5\x88\x87\0" /* offset 11421 */
+  "\xe5\xba\xa6\0" /* offset 11425 */
+  "\xe6\x8b\x93\0" /* offset 11429 */
+  "\xe7\xb3\x96\0" /* offset 11433 */
+  "\xe5\xae\x85\0" /* offset 11437 */
+  "\xe6\xb4\x9e\0" /* offset 11441 */
+  "\xe6\x9a\xb4\0" /* offset 11445 */
+  "\xe8\xbc\xbb\0" /* offset 11449 */
+  "\xe9\x99\x8d\0" /* offset 11453 */
+  "\xe5\xbb\x93\0" /* offset 11457 */
+  "\xe5\x85\x80\0" /* offset 11461 */
+  "\xe5\x97\x80\0" /* offset 11465 */
+  "\xe5\xa1\x9a\0" /* offset 11469 */
+  "\xe6\x99\xb4\0" /* offset 11473 */
+  "\xe5\x87\x9e\0" /* offset 11477 */
+  "\xe7\x8c\xaa\0" /* offset 11481 */
+  "\xe7\x9b\x8a\0" /* offset 11485 */
+  "\xe7\xa4\xbc\0" /* offset 11489 */
+  "\xe7\xa5\x9e\0" /* offset 11493 */
+  "\xe7\xa5\xa5\0" /* offset 11497 */
+  "\xe7\xa6\x8f\0" /* offset 11501 */
+  "\xe9\x9d\x96\0" /* offset 11505 */
+  "\xe7\xb2\xbe\0" /* offset 11509 */
+  "\xe8\x98\x92\0" /* offset 11513 */
+  "\xe8\xab\xb8\0" /* offset 11517 */
+  "\xe9\x80\xb8\0" /* offset 11521 */
+  "\xe9\x83\xbd\0" /* offset 11525 */
+  "\xe9\xa3\xaf\0" /* offset 11529 */
+  "\xe9\xa3\xbc\0" /* offset 11533 */
+  "\xe9\xa4\xa8\0" /* offset 11537 */
+  "\xe9\xb6\xb4\0" /* offset 11541 */
+  "\xe4\xbe\xae\0" /* offset 11545 */
+  "\xe5\x83\xa7\0" /* offset 11549 */
+  "\xe5\x85\x8d\0" /* offset 11553 */
+  "\xe5\x8b\x89\0" /* offset 11557 */
+  "\xe5\x8b\xa4\0" /* offset 11561 */
+  "\xe5\x8d\x91\0" /* offset 11565 */
+  "\xe5\x96\x9d\0" /* offset 11569 */
+  "\xe5\x98\x86\0" /* offset 11573 */
+  "\xe5\x99\xa8\0" /* offset 11577 */
+  "\xe5\xa1\x80\0" /* offset 11581 */
+  "\xe5\xa2\xa8\0" /* offset 11585 */
+  "\xe5\xb1\xa4\0" /* offset 11589 */
+  "\xe6\x82\x94\0" /* offset 11593 */
+  "\xe6\x85\xa8\0" /* offset 11597 */
+  "\xe6\x86\x8e\0" /* offset 11601 */
+  "\xe6\x87\xb2\0" /* offset 11605 */
+  "\xe6\x95\x8f\0" /* offset 11609 */
+  "\xe6\x97\xa2\0" /* offset 11613 */
+  "\xe6\x9a\x91\0" /* offset 11617 */
+  "\xe6\xa2\x85\0" /* offset 11621 */
+  "\xe6\xb5\xb7\0" /* offset 11625 */
+  "\xe6\xb8\x9a\0" /* offset 11629 */
+  "\xe6\xbc\xa2\0" /* offset 11633 */
+  "\xe7\x85\xae\0" /* offset 11637 */
+  "\xe7\x88\xab\0" /* offset 11641 */
+  "\xe7\x90\xa2\0" /* offset 11645 */
+  "\xe7\xa2\x91\0" /* offset 11649 */
+  "\xe7\xa5\x89\0" /* offset 11653 */
+  "\xe7\xa5\x88\0" /* offset 11657 */
+  "\xe7\xa5\x90\0" /* offset 11661 */
+  "\xe7\xa5\x96\0" /* offset 11665 */
+  "\xe7\xa6\x8d\0" /* offset 11669 */
+  "\xe7\xa6\x8e\0" /* offset 11673 */
+  "\xe7\xa9\x80\0" /* offset 11677 */
+  "\xe7\xaa\x81\0" /* offset 11681 */
+  "\xe7\xaf\x80\0" /* offset 11685 */
+  "\xe7\xb8\x89\0" /* offset 11689 */
+  "\xe7\xb9\x81\0" /* offset 11693 */
+  "\xe7\xbd\xb2\0" /* offset 11697 */
+  "\xe8\x80\x85\0" /* offset 11701 */
+  "\xe8\x87\xad\0" /* offset 11705 */
+  "\xe8\x89\xb9\0" /* offset 11709 */
+  "\xe8\x91\x97\0" /* offset 11713 */
+  "\xe8\xa4\x90\0" /* offset 11717 */
+  "\xe8\xa6\x96\0" /* offset 11721 */
+  "\xe8\xac\x81\0" /* offset 11725 */
+  "\xe8\xac\xb9\0" /* offset 11729 */
+  "\xe8\xb3\x93\0" /* offset 11733 */
+  "\xe8\xb4\x88\0" /* offset 11737 */
+  "\xe8\xbe\xb6\0" /* offset 11741 */
+  "\xe9\x9b\xa3\0" /* offset 11745 */
+  "\xe9\x9f\xbf\0" /* offset 11749 */
+  "\xe9\xa0\xbb\0" /* offset 11753 */
+  "\x66\x66\0" /* offset 11757 */
+  "\x66\x69\0" /* offset 11760 */
+  "\x66\x6c\0" /* offset 11763 */
+  "\x66\x66\x69\0" /* offset 11766 */
+  "\x66\x66\x6c\0" /* offset 11770 */
+  "\x73\x74\0" /* offset 11774 */
+  "\xd5\xb4\xd5\xb6\0" /* offset 11777 */
+  "\xd5\xb4\xd5\xa5\0" /* offset 11782 */
+  "\xd5\xb4\xd5\xab\0" /* offset 11787 */
+  "\xd5\xbe\xd5\xb6\0" /* offset 11792 */
+  "\xd5\xb4\xd5\xad\0" /* offset 11797 */
+  "\xd7\x99\xd6\xb4\0" /* offset 11802 */
+  "\xd7\xb2\xd6\xb7\0" /* offset 11807 */
+  "\xd7\xa2\0" /* offset 11812 */
+  "\xd7\x94\0" /* offset 11815 */
+  "\xd7\x9b\0" /* offset 11818 */
+  "\xd7\x9c\0" /* offset 11821 */
+  "\xd7\x9d\0" /* offset 11824 */
+  "\xd7\xa8\0" /* offset 11827 */
+  "\xd7\xaa\0" /* offset 11830 */
+  "\xd7\xa9\xd7\x81\0" /* offset 11833 */
+  "\xd7\xa9\xd7\x82\0" /* offset 11838 */
+  "\xd7\xa9\xd6\xbc\xd7\x81\0" /* offset 11843 */
+  "\xd7\xa9\xd6\xbc\xd7\x82\0" /* offset 11850 */
+  "\xd7\x90\xd6\xb7\0" /* offset 11857 */
+  "\xd7\x90\xd6\xb8\0" /* offset 11862 */
+  "\xd7\x90\xd6\xbc\0" /* offset 11867 */
+  "\xd7\x91\xd6\xbc\0" /* offset 11872 */
+  "\xd7\x92\xd6\xbc\0" /* offset 11877 */
+  "\xd7\x93\xd6\xbc\0" /* offset 11882 */
+  "\xd7\x94\xd6\xbc\0" /* offset 11887 */
+  "\xd7\x95\xd6\xbc\0" /* offset 11892 */
+  "\xd7\x96\xd6\xbc\0" /* offset 11897 */
+  "\xd7\x98\xd6\xbc\0" /* offset 11902 */
+  "\xd7\x99\xd6\xbc\0" /* offset 11907 */
+  "\xd7\x9a\xd6\xbc\0" /* offset 11912 */
+  "\xd7\x9b\xd6\xbc\0" /* offset 11917 */
+  "\xd7\x9c\xd6\xbc\0" /* offset 11922 */
+  "\xd7\x9e\xd6\xbc\0" /* offset 11927 */
+  "\xd7\xa0\xd6\xbc\0" /* offset 11932 */
+  "\xd7\xa1\xd6\xbc\0" /* offset 11937 */
+  "\xd7\xa3\xd6\xbc\0" /* offset 11942 */
+  "\xd7\xa4\xd6\xbc\0" /* offset 11947 */
+  "\xd7\xa6\xd6\xbc\0" /* offset 11952 */
+  "\xd7\xa7\xd6\xbc\0" /* offset 11957 */
+  "\xd7\xa8\xd6\xbc\0" /* offset 11962 */
+  "\xd7\xa9\xd6\xbc\0" /* offset 11967 */
+  "\xd7\xaa\xd6\xbc\0" /* offset 11972 */
+  "\xd7\x95\xd6\xb9\0" /* offset 11977 */
+  "\xd7\x91\xd6\xbf\0" /* offset 11982 */
+  "\xd7\x9b\xd6\xbf\0" /* offset 11987 */
+  "\xd7\xa4\xd6\xbf\0" /* offset 11992 */
+  "\xd7\x90\xd7\x9c\0" /* offset 11997 */
+  "\xd9\xb1\0" /* offset 12002 */
+  "\xd9\xbb\0" /* offset 12005 */
+  "\xd9\xbe\0" /* offset 12008 */
+  "\xda\x80\0" /* offset 12011 */
+  "\xd9\xba\0" /* offset 12014 */
+  "\xd9\xbf\0" /* offset 12017 */
+  "\xd9\xb9\0" /* offset 12020 */
+  "\xda\xa4\0" /* offset 12023 */
+  "\xda\xa6\0" /* offset 12026 */
+  "\xda\x84\0" /* offset 12029 */
+  "\xda\x83\0" /* offset 12032 */
+  "\xda\x86\0" /* offset 12035 */
+  "\xda\x87\0" /* offset 12038 */
+  "\xda\x8d\0" /* offset 12041 */
+  "\xda\x8c\0" /* offset 12044 */
+  "\xda\x8e\0" /* offset 12047 */
+  "\xda\x88\0" /* offset 12050 */
+  "\xda\x98\0" /* offset 12053 */
+  "\xda\x91\0" /* offset 12056 */
+  "\xda\xa9\0" /* offset 12059 */
+  "\xda\xaf\0" /* offset 12062 */
+  "\xda\xb3\0" /* offset 12065 */
+  "\xda\xb1\0" /* offset 12068 */
+  "\xda\xba\0" /* offset 12071 */
+  "\xda\xbb\0" /* offset 12074 */
+  "\xdb\x81\0" /* offset 12077 */
+  "\xda\xbe\0" /* offset 12080 */
+  "\xdb\x92\0" /* offset 12083 */
+  "\xda\xad\0" /* offset 12086 */
+  "\xdb\x87\0" /* offset 12089 */
+  "\xdb\x86\0" /* offset 12092 */
+  "\xdb\x88\0" /* offset 12095 */
+  "\xdb\x8b\0" /* offset 12098 */
+  "\xdb\x85\0" /* offset 12101 */
+  "\xdb\x89\0" /* offset 12104 */
+  "\xdb\x90\0" /* offset 12107 */
+  "\xd9\x89\0" /* offset 12110 */
+  "\xd9\x8a\xd9\x94\xd8\xa7\0" /* offset 12113 */
+  "\xd9\x8a\xd9\x94\xdb\x95\0" /* offset 12120 */
+  "\xd9\x8a\xd9\x94\xd9\x88\0" /* offset 12127 */
+  "\xd9\x8a\xd9\x94\xdb\x87\0" /* offset 12134 */
+  "\xd9\x8a\xd9\x94\xdb\x86\0" /* offset 12141 */
+  "\xd9\x8a\xd9\x94\xdb\x88\0" /* offset 12148 */
+  "\xd9\x8a\xd9\x94\xdb\x90\0" /* offset 12155 */
+  "\xd9\x8a\xd9\x94\xd9\x89\0" /* offset 12162 */
+  "\xdb\x8c\0" /* offset 12169 */
+  "\xd9\x8a\xd9\x94\xd8\xac\0" /* offset 12172 */
+  "\xd9\x8a\xd9\x94\xd8\xad\0" /* offset 12179 */
+  "\xd9\x8a\xd9\x94\xd9\x85\0" /* offset 12186 */
+  "\xd9\x8a\xd9\x94\xd9\x8a\0" /* offset 12193 */
+  "\xd8\xa8\xd8\xac\0" /* offset 12200 */
+  "\xd8\xa8\xd8\xad\0" /* offset 12205 */
+  "\xd8\xa8\xd8\xae\0" /* offset 12210 */
+  "\xd8\xa8\xd9\x85\0" /* offset 12215 */
+  "\xd8\xa8\xd9\x89\0" /* offset 12220 */
+  "\xd8\xa8\xd9\x8a\0" /* offset 12225 */
+  "\xd8\xaa\xd8\xac\0" /* offset 12230 */
+  "\xd8\xaa\xd8\xad\0" /* offset 12235 */
+  "\xd8\xaa\xd8\xae\0" /* offset 12240 */
+  "\xd8\xaa\xd9\x85\0" /* offset 12245 */
+  "\xd8\xaa\xd9\x89\0" /* offset 12250 */
+  "\xd8\xaa\xd9\x8a\0" /* offset 12255 */
+  "\xd8\xab\xd8\xac\0" /* offset 12260 */
+  "\xd8\xab\xd9\x85\0" /* offset 12265 */
+  "\xd8\xab\xd9\x89\0" /* offset 12270 */
+  "\xd8\xab\xd9\x8a\0" /* offset 12275 */
+  "\xd8\xac\xd8\xad\0" /* offset 12280 */
+  "\xd8\xac\xd9\x85\0" /* offset 12285 */
+  "\xd8\xad\xd8\xac\0" /* offset 12290 */
+  "\xd8\xad\xd9\x85\0" /* offset 12295 */
+  "\xd8\xae\xd8\xac\0" /* offset 12300 */
+  "\xd8\xae\xd8\xad\0" /* offset 12305 */
+  "\xd8\xae\xd9\x85\0" /* offset 12310 */
+  "\xd8\xb3\xd8\xac\0" /* offset 12315 */
+  "\xd8\xb3\xd8\xad\0" /* offset 12320 */
+  "\xd8\xb3\xd8\xae\0" /* offset 12325 */
+  "\xd8\xb3\xd9\x85\0" /* offset 12330 */
+  "\xd8\xb5\xd8\xad\0" /* offset 12335 */
+  "\xd8\xb5\xd9\x85\0" /* offset 12340 */
+  "\xd8\xb6\xd8\xac\0" /* offset 12345 */
+  "\xd8\xb6\xd8\xad\0" /* offset 12350 */
+  "\xd8\xb6\xd8\xae\0" /* offset 12355 */
+  "\xd8\xb6\xd9\x85\0" /* offset 12360 */
+  "\xd8\xb7\xd8\xad\0" /* offset 12365 */
+  "\xd8\xb7\xd9\x85\0" /* offset 12370 */
+  "\xd8\xb8\xd9\x85\0" /* offset 12375 */
+  "\xd8\xb9\xd8\xac\0" /* offset 12380 */
+  "\xd8\xb9\xd9\x85\0" /* offset 12385 */
+  "\xd8\xba\xd8\xac\0" /* offset 12390 */
+  "\xd8\xba\xd9\x85\0" /* offset 12395 */
+  "\xd9\x81\xd8\xac\0" /* offset 12400 */
+  "\xd9\x81\xd8\xad\0" /* offset 12405 */
+  "\xd9\x81\xd8\xae\0" /* offset 12410 */
+  "\xd9\x81\xd9\x85\0" /* offset 12415 */
+  "\xd9\x81\xd9\x89\0" /* offset 12420 */
+  "\xd9\x81\xd9\x8a\0" /* offset 12425 */
+  "\xd9\x82\xd8\xad\0" /* offset 12430 */
+  "\xd9\x82\xd9\x85\0" /* offset 12435 */
+  "\xd9\x82\xd9\x89\0" /* offset 12440 */
+  "\xd9\x82\xd9\x8a\0" /* offset 12445 */
+  "\xd9\x83\xd8\xa7\0" /* offset 12450 */
+  "\xd9\x83\xd8\xac\0" /* offset 12455 */
+  "\xd9\x83\xd8\xad\0" /* offset 12460 */
+  "\xd9\x83\xd8\xae\0" /* offset 12465 */
+  "\xd9\x83\xd9\x84\0" /* offset 12470 */
+  "\xd9\x83\xd9\x85\0" /* offset 12475 */
+  "\xd9\x83\xd9\x89\0" /* offset 12480 */
+  "\xd9\x83\xd9\x8a\0" /* offset 12485 */
+  "\xd9\x84\xd8\xac\0" /* offset 12490 */
+  "\xd9\x84\xd8\xad\0" /* offset 12495 */
+  "\xd9\x84\xd8\xae\0" /* offset 12500 */
+  "\xd9\x84\xd9\x85\0" /* offset 12505 */
+  "\xd9\x84\xd9\x89\0" /* offset 12510 */
+  "\xd9\x84\xd9\x8a\0" /* offset 12515 */
+  "\xd9\x85\xd8\xac\0" /* offset 12520 */
+  "\xd9\x85\xd8\xad\0" /* offset 12525 */
+  "\xd9\x85\xd8\xae\0" /* offset 12530 */
+  "\xd9\x85\xd9\x85\0" /* offset 12535 */
+  "\xd9\x85\xd9\x89\0" /* offset 12540 */
+  "\xd9\x85\xd9\x8a\0" /* offset 12545 */
+  "\xd9\x86\xd8\xac\0" /* offset 12550 */
+  "\xd9\x86\xd8\xad\0" /* offset 12555 */
+  "\xd9\x86\xd8\xae\0" /* offset 12560 */
+  "\xd9\x86\xd9\x85\0" /* offset 12565 */
+  "\xd9\x86\xd9\x89\0" /* offset 12570 */
+  "\xd9\x86\xd9\x8a\0" /* offset 12575 */
+  "\xd9\x87\xd8\xac\0" /* offset 12580 */
+  "\xd9\x87\xd9\x85\0" /* offset 12585 */
+  "\xd9\x87\xd9\x89\0" /* offset 12590 */
+  "\xd9\x87\xd9\x8a\0" /* offset 12595 */
+  "\xd9\x8a\xd8\xac\0" /* offset 12600 */
+  "\xd9\x8a\xd8\xad\0" /* offset 12605 */
+  "\xd9\x8a\xd8\xae\0" /* offset 12610 */
+  "\xd9\x8a\xd9\x85\0" /* offset 12615 */
+  "\xd9\x8a\xd9\x89\0" /* offset 12620 */
+  "\xd9\x8a\xd9\x8a\0" /* offset 12625 */
+  "\xd8\xb0\xd9\xb0\0" /* offset 12630 */
+  "\xd8\xb1\xd9\xb0\0" /* offset 12635 */
+  "\xd9\x89\xd9\xb0\0" /* offset 12640 */
+  "\x20\xd9\x8c\xd9\x91\0" /* offset 12645 */
+  "\x20\xd9\x8d\xd9\x91\0" /* offset 12651 */
+  "\x20\xd9\x8e\xd9\x91\0" /* offset 12657 */
+  "\x20\xd9\x8f\xd9\x91\0" /* offset 12663 */
+  "\x20\xd9\x90\xd9\x91\0" /* offset 12669 */
+  "\x20\xd9\x91\xd9\xb0\0" /* offset 12675 */
+  "\xd9\x8a\xd9\x94\xd8\xb1\0" /* offset 12681 */
+  "\xd9\x8a\xd9\x94\xd8\xb2\0" /* offset 12688 */
+  "\xd9\x8a\xd9\x94\xd9\x86\0" /* offset 12695 */
+  "\xd8\xa8\xd8\xb1\0" /* offset 12702 */
+  "\xd8\xa8\xd8\xb2\0" /* offset 12707 */
+  "\xd8\xa8\xd9\x86\0" /* offset 12712 */
+  "\xd8\xaa\xd8\xb1\0" /* offset 12717 */
+  "\xd8\xaa\xd8\xb2\0" /* offset 12722 */
+  "\xd8\xaa\xd9\x86\0" /* offset 12727 */
+  "\xd8\xab\xd8\xb1\0" /* offset 12732 */
+  "\xd8\xab\xd8\xb2\0" /* offset 12737 */
+  "\xd8\xab\xd9\x86\0" /* offset 12742 */
+  "\xd9\x85\xd8\xa7\0" /* offset 12747 */
+  "\xd9\x86\xd8\xb1\0" /* offset 12752 */
+  "\xd9\x86\xd8\xb2\0" /* offset 12757 */
+  "\xd9\x86\xd9\x86\0" /* offset 12762 */
+  "\xd9\x8a\xd8\xb1\0" /* offset 12767 */
+  "\xd9\x8a\xd8\xb2\0" /* offset 12772 */
+  "\xd9\x8a\xd9\x86\0" /* offset 12777 */
+  "\xd9\x8a\xd9\x94\xd8\xae\0" /* offset 12782 */
+  "\xd9\x8a\xd9\x94\xd9\x87\0" /* offset 12789 */
+  "\xd8\xa8\xd9\x87\0" /* offset 12796 */
+  "\xd8\xaa\xd9\x87\0" /* offset 12801 */
+  "\xd8\xb5\xd8\xae\0" /* offset 12806 */
+  "\xd9\x84\xd9\x87\0" /* offset 12811 */
+  "\xd9\x86\xd9\x87\0" /* offset 12816 */
+  "\xd9\x87\xd9\xb0\0" /* offset 12821 */
+  "\xd9\x8a\xd9\x87\0" /* offset 12826 */
+  "\xd8\xab\xd9\x87\0" /* offset 12831 */
+  "\xd8\xb3\xd9\x87\0" /* offset 12836 */
+  "\xd8\xb4\xd9\x85\0" /* offset 12841 */
+  "\xd8\xb4\xd9\x87\0" /* offset 12846 */
+  "\xd9\x80\xd9\x8e\xd9\x91\0" /* offset 12851 */
+  "\xd9\x80\xd9\x8f\xd9\x91\0" /* offset 12858 */
+  "\xd9\x80\xd9\x90\xd9\x91\0" /* offset 12865 */
+  "\xd8\xb7\xd9\x89\0" /* offset 12872 */
+  "\xd8\xb7\xd9\x8a\0" /* offset 12877 */
+  "\xd8\xb9\xd9\x89\0" /* offset 12882 */
+  "\xd8\xb9\xd9\x8a\0" /* offset 12887 */
+  "\xd8\xba\xd9\x89\0" /* offset 12892 */
+  "\xd8\xba\xd9\x8a\0" /* offset 12897 */
+  "\xd8\xb3\xd9\x89\0" /* offset 12902 */
+  "\xd8\xb3\xd9\x8a\0" /* offset 12907 */
+  "\xd8\xb4\xd9\x89\0" /* offset 12912 */
+  "\xd8\xb4\xd9\x8a\0" /* offset 12917 */
+  "\xd8\xad\xd9\x89\0" /* offset 12922 */
+  "\xd8\xad\xd9\x8a\0" /* offset 12927 */
+  "\xd8\xac\xd9\x89\0" /* offset 12932 */
+  "\xd8\xac\xd9\x8a\0" /* offset 12937 */
+  "\xd8\xae\xd9\x89\0" /* offset 12942 */
+  "\xd8\xae\xd9\x8a\0" /* offset 12947 */
+  "\xd8\xb5\xd9\x89\0" /* offset 12952 */
+  "\xd8\xb5\xd9\x8a\0" /* offset 12957 */
+  "\xd8\xb6\xd9\x89\0" /* offset 12962 */
+  "\xd8\xb6\xd9\x8a\0" /* offset 12967 */
+  "\xd8\xb4\xd8\xac\0" /* offset 12972 */
+  "\xd8\xb4\xd8\xad\0" /* offset 12977 */
+  "\xd8\xb4\xd8\xae\0" /* offset 12982 */
+  "\xd8\xb4\xd8\xb1\0" /* offset 12987 */
+  "\xd8\xb3\xd8\xb1\0" /* offset 12992 */
+  "\xd8\xb5\xd8\xb1\0" /* offset 12997 */
+  "\xd8\xb6\xd8\xb1\0" /* offset 13002 */
+  "\xd8\xa7\xd9\x8b\0" /* offset 13007 */
+  "\xd8\xaa\xd8\xac\xd9\x85\0" /* offset 13012 */
+  "\xd8\xaa\xd8\xad\xd8\xac\0" /* offset 13019 */
+  "\xd8\xaa\xd8\xad\xd9\x85\0" /* offset 13026 */
+  "\xd8\xaa\xd8\xae\xd9\x85\0" /* offset 13033 */
+  "\xd8\xaa\xd9\x85\xd8\xac\0" /* offset 13040 */
+  "\xd8\xaa\xd9\x85\xd8\xad\0" /* offset 13047 */
+  "\xd8\xaa\xd9\x85\xd8\xae\0" /* offset 13054 */
+  "\xd8\xac\xd9\x85\xd8\xad\0" /* offset 13061 */
+  "\xd8\xad\xd9\x85\xd9\x8a\0" /* offset 13068 */
+  "\xd8\xad\xd9\x85\xd9\x89\0" /* offset 13075 */
+  "\xd8\xb3\xd8\xad\xd8\xac\0" /* offset 13082 */
+  "\xd8\xb3\xd8\xac\xd8\xad\0" /* offset 13089 */
+  "\xd8\xb3\xd8\xac\xd9\x89\0" /* offset 13096 */
+  "\xd8\xb3\xd9\x85\xd8\xad\0" /* offset 13103 */
+  "\xd8\xb3\xd9\x85\xd8\xac\0" /* offset 13110 */
+  "\xd8\xb3\xd9\x85\xd9\x85\0" /* offset 13117 */
+  "\xd8\xb5\xd8\xad\xd8\xad\0" /* offset 13124 */
+  "\xd8\xb5\xd9\x85\xd9\x85\0" /* offset 13131 */
+  "\xd8\xb4\xd8\xad\xd9\x85\0" /* offset 13138 */
+  "\xd8\xb4\xd8\xac\xd9\x8a\0" /* offset 13145 */
+  "\xd8\xb4\xd9\x85\xd8\xae\0" /* offset 13152 */
+  "\xd8\xb4\xd9\x85\xd9\x85\0" /* offset 13159 */
+  "\xd8\xb6\xd8\xad\xd9\x89\0" /* offset 13166 */
+  "\xd8\xb6\xd8\xae\xd9\x85\0" /* offset 13173 */
+  "\xd8\xb7\xd9\x85\xd8\xad\0" /* offset 13180 */
+  "\xd8\xb7\xd9\x85\xd9\x85\0" /* offset 13187 */
+  "\xd8\xb7\xd9\x85\xd9\x8a\0" /* offset 13194 */
+  "\xd8\xb9\xd8\xac\xd9\x85\0" /* offset 13201 */
+  "\xd8\xb9\xd9\x85\xd9\x85\0" /* offset 13208 */
+  "\xd8\xb9\xd9\x85\xd9\x89\0" /* offset 13215 */
+  "\xd8\xba\xd9\x85\xd9\x85\0" /* offset 13222 */
+  "\xd8\xba\xd9\x85\xd9\x8a\0" /* offset 13229 */
+  "\xd8\xba\xd9\x85\xd9\x89\0" /* offset 13236 */
+  "\xd9\x81\xd8\xae\xd9\x85\0" /* offset 13243 */
+  "\xd9\x82\xd9\x85\xd8\xad\0" /* offset 13250 */
+  "\xd9\x82\xd9\x85\xd9\x85\0" /* offset 13257 */
+  "\xd9\x84\xd8\xad\xd9\x85\0" /* offset 13264 */
+  "\xd9\x84\xd8\xad\xd9\x8a\0" /* offset 13271 */
+  "\xd9\x84\xd8\xad\xd9\x89\0" /* offset 13278 */
+  "\xd9\x84\xd8\xac\xd8\xac\0" /* offset 13285 */
+  "\xd9\x84\xd8\xae\xd9\x85\0" /* offset 13292 */
+  "\xd9\x84\xd9\x85\xd8\xad\0" /* offset 13299 */
+  "\xd9\x85\xd8\xad\xd8\xac\0" /* offset 13306 */
+  "\xd9\x85\xd8\xad\xd9\x85\0" /* offset 13313 */
+  "\xd9\x85\xd8\xad\xd9\x8a\0" /* offset 13320 */
+  "\xd9\x85\xd8\xac\xd8\xad\0" /* offset 13327 */
+  "\xd9\x85\xd8\xac\xd9\x85\0" /* offset 13334 */
+  "\xd9\x85\xd8\xae\xd8\xac\0" /* offset 13341 */
+  "\xd9\x85\xd8\xae\xd9\x85\0" /* offset 13348 */
+  "\xd9\x85\xd8\xac\xd8\xae\0" /* offset 13355 */
+  "\xd9\x87\xd9\x85\xd8\xac\0" /* offset 13362 */
+  "\xd9\x87\xd9\x85\xd9\x85\0" /* offset 13369 */
+  "\xd9\x86\xd8\xad\xd9\x85\0" /* offset 13376 */
+  "\xd9\x86\xd8\xad\xd9\x89\0" /* offset 13383 */
+  "\xd9\x86\xd8\xac\xd9\x85\0" /* offset 13390 */
+  "\xd9\x86\xd8\xac\xd9\x89\0" /* offset 13397 */
+  "\xd9\x86\xd9\x85\xd9\x8a\0" /* offset 13404 */
+  "\xd9\x86\xd9\x85\xd9\x89\0" /* offset 13411 */
+  "\xd9\x8a\xd9\x85\xd9\x85\0" /* offset 13418 */
+  "\xd8\xa8\xd8\xae\xd9\x8a\0" /* offset 13425 */
+  "\xd8\xaa\xd8\xac\xd9\x8a\0" /* offset 13432 */
+  "\xd8\xaa\xd8\xac\xd9\x89\0" /* offset 13439 */
+  "\xd8\xaa\xd8\xae\xd9\x8a\0" /* offset 13446 */
+  "\xd8\xaa\xd8\xae\xd9\x89\0" /* offset 13453 */
+  "\xd8\xaa\xd9\x85\xd9\x8a\0" /* offset 13460 */
+  "\xd8\xaa\xd9\x85\xd9\x89\0" /* offset 13467 */
+  "\xd8\xac\xd9\x85\xd9\x8a\0" /* offset 13474 */
+  "\xd8\xac\xd8\xad\xd9\x89\0" /* offset 13481 */
+  "\xd8\xac\xd9\x85\xd9\x89\0" /* offset 13488 */
+  "\xd8\xb3\xd8\xae\xd9\x89\0" /* offset 13495 */
+  "\xd8\xb5\xd8\xad\xd9\x8a\0" /* offset 13502 */
+  "\xd8\xb4\xd8\xad\xd9\x8a\0" /* offset 13509 */
+  "\xd8\xb6\xd8\xad\xd9\x8a\0" /* offset 13516 */
+  "\xd9\x84\xd8\xac\xd9\x8a\0" /* offset 13523 */
+  "\xd9\x84\xd9\x85\xd9\x8a\0" /* offset 13530 */
+  "\xd9\x8a\xd8\xad\xd9\x8a\0" /* offset 13537 */
+  "\xd9\x8a\xd8\xac\xd9\x8a\0" /* offset 13544 */
+  "\xd9\x8a\xd9\x85\xd9\x8a\0" /* offset 13551 */
+  "\xd9\x85\xd9\x85\xd9\x8a\0" /* offset 13558 */
+  "\xd9\x82\xd9\x85\xd9\x8a\0" /* offset 13565 */
+  "\xd9\x86\xd8\xad\xd9\x8a\0" /* offset 13572 */
+  "\xd8\xb9\xd9\x85\xd9\x8a\0" /* offset 13579 */
+  "\xd9\x83\xd9\x85\xd9\x8a\0" /* offset 13586 */
+  "\xd9\x86\xd8\xac\xd8\xad\0" /* offset 13593 */
+  "\xd9\x85\xd8\xae\xd9\x8a\0" /* offset 13600 */
+  "\xd9\x84\xd8\xac\xd9\x85\0" /* offset 13607 */
+  "\xd9\x83\xd9\x85\xd9\x85\0" /* offset 13614 */
+  "\xd8\xac\xd8\xad\xd9\x8a\0" /* offset 13621 */
+  "\xd8\xad\xd8\xac\xd9\x8a\0" /* offset 13628 */
+  "\xd9\x85\xd8\xac\xd9\x8a\0" /* offset 13635 */
+  "\xd9\x81\xd9\x85\xd9\x8a\0" /* offset 13642 */
+  "\xd8\xa8\xd8\xad\xd9\x8a\0" /* offset 13649 */
+  "\xd8\xb3\xd8\xae\xd9\x8a\0" /* offset 13656 */
+  "\xd9\x86\xd8\xac\xd9\x8a\0" /* offset 13663 */
+  "\xd8\xb5\xd9\x84\xdb\x92\0" /* offset 13670 */
+  "\xd9\x82\xd9\x84\xdb\x92\0" /* offset 13677 */
+  "\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\0" /* offset 13684 */
+  "\xd8\xa7\xd9\x83\xd8\xa8\xd8\xb1\0" /* offset 13693 */
+  "\xd9\x85\xd8\xad\xd9\x85\xd8\xaf\0" /* offset 13702 */
+  "\xd8\xb5\xd9\x84\xd8\xb9\xd9\x85\0" /* offset 13711 */
+  "\xd8\xb1\xd8\xb3\xd9\x88\xd9\x84\0" /* offset 13720 */
+  "\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\0" /* offset 13729 */
+  "\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 13738 */
+  "\xd8\xb5\xd9\x84\xd9\x89\0" /* offset 13747 */
+  "\xd8\xb5\xd9\x84\xd9\x89\x20\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\x20\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\x20\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 13754 */
+  "\xd8\xac\xd9\x84\x20\xd8\xac\xd9\x84\xd8\xa7\xd9\x84\xd9\x87\0" /* offset 13788 */
+  "\xd8\xb1\xdb\x8c\xd8\xa7\xd9\x84\0" /* offset 13804 */
+  "\xe2\x80\x94\0" /* offset 13813 */
+  "\xe2\x80\x93\0" /* offset 13817 */
+  "\x5f\0" /* offset 13821 */
+  "\x7b\0" /* offset 13823 */
+  "\x7d\0" /* offset 13825 */
+  "\xe3\x80\x94\0" /* offset 13827 */
+  "\xe3\x80\x95\0" /* offset 13831 */
+  "\xe3\x80\x90\0" /* offset 13835 */
+  "\xe3\x80\x91\0" /* offset 13839 */
+  "\xe3\x80\x8a\0" /* offset 13843 */
+  "\xe3\x80\x8b\0" /* offset 13847 */
+  "\xe3\x80\x8c\0" /* offset 13851 */
+  "\xe3\x80\x8d\0" /* offset 13855 */
+  "\xe3\x80\x8e\0" /* offset 13859 */
+  "\xe3\x80\x8f\0" /* offset 13863 */
+  "\x2c\0" /* offset 13867 */
+  "\xe3\x80\x81\0" /* offset 13869 */
+  "\x3a\0" /* offset 13873 */
+  "\x3f\0" /* offset 13875 */
+  "\x21\0" /* offset 13877 */
+  "\x23\0" /* offset 13879 */
+  "\x26\0" /* offset 13881 */
+  "\x2a\0" /* offset 13883 */
+  "\x2d\0" /* offset 13885 */
+  "\x3c\0" /* offset 13887 */
+  "\x3e\0" /* offset 13889 */
+  "\x5c\0" /* offset 13891 */
+  "\x24\0" /* offset 13893 */
+  "\x25\0" /* offset 13895 */
+  "\x40\0" /* offset 13897 */
+  "\x20\xd9\x8b\0" /* offset 13899 */
+  "\xd9\x80\xd9\x8b\0" /* offset 13903 */
+  "\x20\xd9\x8c\0" /* offset 13908 */
+  "\x20\xd9\x8d\0" /* offset 13912 */
+  "\x20\xd9\x8e\0" /* offset 13916 */
+  "\xd9\x80\xd9\x8e\0" /* offset 13920 */
+  "\x20\xd9\x8f\0" /* offset 13925 */
+  "\xd9\x80\xd9\x8f\0" /* offset 13929 */
+  "\x20\xd9\x90\0" /* offset 13934 */
+  "\xd9\x80\xd9\x90\0" /* offset 13938 */
+  "\x20\xd9\x91\0" /* offset 13943 */
+  "\xd9\x80\xd9\x91\0" /* offset 13947 */
+  "\x20\xd9\x92\0" /* offset 13952 */
+  "\xd9\x80\xd9\x92\0" /* offset 13956 */
+  "\xd8\xa1\0" /* offset 13961 */
+  "\xd8\xa7\0" /* offset 13964 */
+  "\xd8\xa8\0" /* offset 13967 */
+  "\xd8\xa9\0" /* offset 13970 */
+  "\xd8\xaa\0" /* offset 13973 */
+  "\xd8\xab\0" /* offset 13976 */
+  "\xd8\xac\0" /* offset 13979 */
+  "\xd8\xad\0" /* offset 13982 */
+  "\xd8\xae\0" /* offset 13985 */
+  "\xd8\xaf\0" /* offset 13988 */
+  "\xd8\xb0\0" /* offset 13991 */
+  "\xd8\xb1\0" /* offset 13994 */
+  "\xd8\xb2\0" /* offset 13997 */
+  "\xd8\xb3\0" /* offset 14000 */
+  "\xd8\xb4\0" /* offset 14003 */
+  "\xd8\xb5\0" /* offset 14006 */
+  "\xd8\xb6\0" /* offset 14009 */
+  "\xd8\xb7\0" /* offset 14012 */
+  "\xd8\xb8\0" /* offset 14015 */
+  "\xd8\xb9\0" /* offset 14018 */
+  "\xd8\xba\0" /* offset 14021 */
+  "\xd9\x81\0" /* offset 14024 */
+  "\xd9\x82\0" /* offset 14027 */
+  "\xd9\x83\0" /* offset 14030 */
+  "\xd9\x84\0" /* offset 14033 */
+  "\xd9\x85\0" /* offset 14036 */
+  "\xd9\x86\0" /* offset 14039 */
+  "\xd9\x87\0" /* offset 14042 */
+  "\xd9\x88\0" /* offset 14045 */
+  "\xd9\x8a\0" /* offset 14048 */
+  "\xd9\x84\xd8\xa7\xd9\x93\0" /* offset 14051 */
+  "\xd9\x84\xd8\xa7\xd9\x94\0" /* offset 14058 */
+  "\xd9\x84\xd8\xa7\xd9\x95\0" /* offset 14065 */
+  "\xd9\x84\xd8\xa7\0" /* offset 14072 */
+  "\x22\0" /* offset 14077 */
+  "\x27\0" /* offset 14079 */
+  "\x2f\0" /* offset 14081 */
+  "\x5b\0" /* offset 14083 */
+  "\x5d\0" /* offset 14085 */
+  "\x5e\0" /* offset 14087 */
+  "\x7c\0" /* offset 14089 */
+  "\x7e\0" /* offset 14091 */
+  "\xe2\xa6\x85\0" /* offset 14093 */
+  "\xe2\xa6\x86\0" /* offset 14097 */
+  "\xe3\x80\x82\0" /* offset 14101 */
+  "\xe3\x83\xbb\0" /* offset 14105 */
+  "\xe3\x82\xa1\0" /* offset 14109 */
+  "\xe3\x82\xa3\0" /* offset 14113 */
+  "\xe3\x82\xa5\0" /* offset 14117 */
+  "\xe3\x82\xa7\0" /* offset 14121 */
+  "\xe3\x82\xa9\0" /* offset 14125 */
+  "\xe3\x83\xa3\0" /* offset 14129 */
+  "\xe3\x83\xa5\0" /* offset 14133 */
+  "\xe3\x83\xa7\0" /* offset 14137 */
+  "\xe3\x83\x83\0" /* offset 14141 */
+  "\xe3\x83\xbc\0" /* offset 14145 */
+  "\xe3\x83\xb3\0" /* offset 14149 */
+  "\xe3\x82\x99\0" /* offset 14153 */
+  "\xe3\x82\x9a\0" /* offset 14157 */
+  "\xc2\xa2\0" /* offset 14161 */
+  "\xc2\xa3\0" /* offset 14164 */
+  "\xc2\xac\0" /* offset 14167 */
+  "\xc2\xa6\0" /* offset 14170 */
+  "\xc2\xa5\0" /* offset 14173 */
+  "\xe2\x82\xa9\0" /* offset 14176 */
+  "\xe2\x94\x82\0" /* offset 14180 */
+  "\xe2\x86\x90\0" /* offset 14184 */
+  "\xe2\x86\x91\0" /* offset 14188 */
+  "\xe2\x86\x92\0" /* offset 14192 */
+  "\xe2\x86\x93\0" /* offset 14196 */
+  "\xe2\x96\xa0\0" /* offset 14200 */
+  "\xe2\x97\x8b\0" /* offset 14204 */
+  "\xf0\x9d\x85\x97\xf0\x9d\x85\xa5\0" /* offset 14208 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\0" /* offset 14217 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 14226 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 14239 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb0\0" /* offset 14252 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb1\0" /* offset 14265 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb2\0" /* offset 14278 */
+  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\0" /* offset 14291 */
+  "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\0" /* offset 14300 */
+  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 14309 */
+  "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 14322 */
+  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 14335 */
+  "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 14348 */
+  "\xce\x91\0" /* offset 14361 */
+  "\xce\x92\0" /* offset 14364 */
+  "\xce\x94\0" /* offset 14367 */
+  "\xce\x95\0" /* offset 14370 */
+  "\xce\x96\0" /* offset 14373 */
+  "\xce\x97\0" /* offset 14376 */
+  "\xce\x99\0" /* offset 14379 */
+  "\xce\x9a\0" /* offset 14382 */
+  "\xce\x9b\0" /* offset 14385 */
+  "\xce\x9c\0" /* offset 14388 */
+  "\xce\x9d\0" /* offset 14391 */
+  "\xce\x9e\0" /* offset 14394 */
+  "\xce\x9f\0" /* offset 14397 */
+  "\xce\xa1\0" /* offset 14400 */
+  "\xce\xa3\0" /* offset 14403 */
+  "\xce\xa4\0" /* offset 14406 */
+  "\xce\xa6\0" /* offset 14409 */
+  "\xce\xa7\0" /* offset 14412 */
+  "\xce\xa8\0" /* offset 14415 */
+  "\xe2\x88\x87\0" /* offset 14418 */
+  "\xce\xb1\0" /* offset 14422 */
+  "\xce\xb4\0" /* offset 14425 */
+  "\xce\xb6\0" /* offset 14428 */
+  "\xce\xb7\0" /* offset 14431 */
+  "\xce\xbb\0" /* offset 14434 */
+  "\xce\xbd\0" /* offset 14437 */
+  "\xce\xbe\0" /* offset 14440 */
+  "\xce\xbf\0" /* offset 14443 */
+  "\xcf\x83\0" /* offset 14446 */
+  "\xcf\x84\0" /* offset 14449 */
+  "\xcf\x85\0" /* offset 14452 */
+  "\xcf\x87\0" /* offset 14455 */
+  "\xcf\x88\0" /* offset 14458 */
+  "\xcf\x89\0" /* offset 14461 */
+  "\xe2\x88\x82\0" /* offset 14464 */
+  "\xe4\xb8\xbd\0" /* offset 14468 */
+  "\xe4\xb8\xb8\0" /* offset 14472 */
+  "\xe4\xb9\x81\0" /* offset 14476 */
+  "\xf0\xa0\x84\xa2\0" /* offset 14480 */
+  "\xe4\xbd\xa0\0" /* offset 14485 */
+  "\xe4\xbe\xbb\0" /* offset 14489 */
+  "\xe5\x80\x82\0" /* offset 14493 */
+  "\xe5\x81\xba\0" /* offset 14497 */
+  "\xe5\x82\x99\0" /* offset 14501 */
+  "\xe5\x83\x8f\0" /* offset 14505 */
+  "\xe3\x92\x9e\0" /* offset 14509 */
+  "\xf0\xa0\x98\xba\0" /* offset 14513 */
+  "\xe5\x85\x94\0" /* offset 14518 */
+  "\xe5\x85\xa4\0" /* offset 14522 */
+  "\xe5\x85\xb7\0" /* offset 14526 */
+  "\xf0\xa0\x94\x9c\0" /* offset 14530 */
+  "\xe3\x92\xb9\0" /* offset 14535 */
+  "\xe5\x85\xa7\0" /* offset 14539 */
+  "\xe5\x86\x8d\0" /* offset 14543 */
+  "\xf0\xa0\x95\x8b\0" /* offset 14547 */
+  "\xe5\x86\x97\0" /* offset 14552 */
+  "\xe5\x86\xa4\0" /* offset 14556 */
+  "\xe4\xbb\x8c\0" /* offset 14560 */
+  "\xe5\x86\xac\0" /* offset 14564 */
+  "\xe5\x86\xb5\0" /* offset 14568 */
+  "\xf0\xa9\x87\x9f\0" /* offset 14572 */
+  "\xe5\x88\x83\0" /* offset 14577 */
+  "\xe3\x93\x9f\0" /* offset 14581 */
+  "\xe5\x88\xbb\0" /* offset 14585 */
+  "\xe5\x89\x86\0" /* offset 14589 */
+  "\xe5\x89\xb2\0" /* offset 14593 */
+  "\xe5\x89\xb7\0" /* offset 14597 */
+  "\xe3\x94\x95\0" /* offset 14601 */
+  "\xe5\x8b\x87\0" /* offset 14605 */
+  "\xe5\x8b\xba\0" /* offset 14609 */
+  "\xe5\x8c\x85\0" /* offset 14613 */
+  "\xe5\x8c\x86\0" /* offset 14617 */
+  "\xe5\x8d\x89\0" /* offset 14621 */
+  "\xe5\x8d\x9a\0" /* offset 14625 */
+  "\xe5\x8d\xb3\0" /* offset 14629 */
+  "\xe5\x8d\xbd\0" /* offset 14633 */
+  "\xe5\x8d\xbf\0" /* offset 14637 */
+  "\xf0\xa0\xa8\xac\0" /* offset 14641 */
+  "\xe7\x81\xb0\0" /* offset 14646 */
+  "\xe5\x8f\x8a\0" /* offset 14650 */
+  "\xe5\x8f\x9f\0" /* offset 14654 */
+  "\xf0\xa0\xad\xa3\0" /* offset 14658 */
+  "\xe5\x8f\xab\0" /* offset 14663 */
+  "\xe5\x8f\xb1\0" /* offset 14667 */
+  "\xe5\x90\x86\0" /* offset 14671 */
+  "\xe5\x92\x9e\0" /* offset 14675 */
+  "\xe5\x90\xb8\0" /* offset 14679 */
+  "\xe5\x91\x88\0" /* offset 14683 */
+  "\xe5\x91\xa8\0" /* offset 14687 */
+  "\xe5\x92\xa2\0" /* offset 14691 */
+  "\xe5\x93\xb6\0" /* offset 14695 */
+  "\xe5\x94\x90\0" /* offset 14699 */
+  "\xe5\x95\x93\0" /* offset 14703 */
+  "\xe5\x95\xa3\0" /* offset 14707 */
+  "\xe5\x96\x84\0" /* offset 14711 */
+  "\xe5\x96\x99\0" /* offset 14715 */
+  "\xe5\x96\xab\0" /* offset 14719 */
+  "\xe5\x96\xb3\0" /* offset 14723 */
+  "\xe5\x97\x82\0" /* offset 14727 */
+  "\xe5\x9c\x96\0" /* offset 14731 */
+  "\xe5\x9c\x97\0" /* offset 14735 */
+  "\xe5\x99\x91\0" /* offset 14739 */
+  "\xe5\x99\xb4\0" /* offset 14743 */
+  "\xe5\xa3\xae\0" /* offset 14747 */
+  "\xe5\x9f\x8e\0" /* offset 14751 */
+  "\xe5\x9f\xb4\0" /* offset 14755 */
+  "\xe5\xa0\x8d\0" /* offset 14759 */
+  "\xe5\x9e\x8b\0" /* offset 14763 */
+  "\xe5\xa0\xb2\0" /* offset 14767 */
+  "\xe5\xa0\xb1\0" /* offset 14771 */
+  "\xe5\xa2\xac\0" /* offset 14775 */
+  "\xf0\xa1\x93\xa4\0" /* offset 14779 */
+  "\xe5\xa3\xb2\0" /* offset 14784 */
+  "\xe5\xa3\xb7\0" /* offset 14788 */
+  "\xe5\xa4\x86\0" /* offset 14792 */
+  "\xe5\xa4\x9a\0" /* offset 14796 */
+  "\xe5\xa4\xa2\0" /* offset 14800 */
+  "\xe5\xa5\xa2\0" /* offset 14804 */
+  "\xf0\xa1\x9a\xa8\0" /* offset 14808 */
+  "\xf0\xa1\x9b\xaa\0" /* offset 14813 */
+  "\xe5\xa7\xac\0" /* offset 14818 */
+  "\xe5\xa8\x9b\0" /* offset 14822 */
+  "\xe5\xa8\xa7\0" /* offset 14826 */
+  "\xe5\xa7\x98\0" /* offset 14830 */
+  "\xe5\xa9\xa6\0" /* offset 14834 */
+  "\xe3\x9b\xae\0" /* offset 14838 */
+  "\xf0\xa1\x8d\xaa\0" /* offset 14842 */
+  "\xe5\xac\x88\0" /* offset 14847 */
+  "\xe5\xac\xbe\0" /* offset 14851 */
+  "\xf0\xa1\xa7\x88\0" /* offset 14855 */
+  "\xe5\xaf\x83\0" /* offset 14860 */
+  "\xe5\xaf\x98\0" /* offset 14864 */
+  "\xe5\xaf\xb3\0" /* offset 14868 */
+  "\xf0\xa1\xac\x98\0" /* offset 14872 */
+  "\xe5\xaf\xbf\0" /* offset 14877 */
+  "\xe5\xb0\x86\0" /* offset 14881 */
+  "\xe5\xbc\xb3\0" /* offset 14885 */
+  "\xe3\x9e\x81\0" /* offset 14889 */
+  "\xe5\xb1\xa0\0" /* offset 14893 */
+  "\xe5\xb3\x80\0" /* offset 14897 */
+  "\xe5\xb2\x8d\0" /* offset 14901 */
+  "\xf0\xa1\xb7\xa4\0" /* offset 14905 */
+  "\xe5\xb5\x83\0" /* offset 14910 */
+  "\xf0\xa1\xb7\xa6\0" /* offset 14914 */
+  "\xe5\xb5\xae\0" /* offset 14919 */
+  "\xe5\xb5\xab\0" /* offset 14923 */
+  "\xe5\xb5\xbc\0" /* offset 14927 */
+  "\xe5\xb7\xa1\0" /* offset 14931 */
+  "\xe5\xb7\xa2\0" /* offset 14935 */
+  "\xe3\xa0\xaf\0" /* offset 14939 */
+  "\xe5\xb7\xbd\0" /* offset 14943 */
+  "\xe5\xb8\xa8\0" /* offset 14947 */
+  "\xe5\xb8\xbd\0" /* offset 14951 */
+  "\xe5\xb9\xa9\0" /* offset 14955 */
+  "\xe3\xa1\xa2\0" /* offset 14959 */
+  "\xf0\xa2\x86\x83\0" /* offset 14963 */
+  "\xe3\xa1\xbc\0" /* offset 14968 */
+  "\xe5\xba\xb0\0" /* offset 14972 */
+  "\xe5\xba\xb3\0" /* offset 14976 */
+  "\xe5\xba\xb6\0" /* offset 14980 */
+  "\xf0\xaa\x8e\x92\0" /* offset 14984 */
+  "\xf0\xa2\x8c\xb1\0" /* offset 14989 */
+  "\xe8\x88\x81\0" /* offset 14994 */
+  "\xe5\xbc\xa2\0" /* offset 14998 */
+  "\xe3\xa3\x87\0" /* offset 15002 */
+  "\xf0\xa3\x8a\xb8\0" /* offset 15006 */
+  "\xf0\xa6\x87\x9a\0" /* offset 15011 */
+  "\xe5\xbd\xa2\0" /* offset 15016 */
+  "\xe5\xbd\xab\0" /* offset 15020 */
+  "\xe3\xa3\xa3\0" /* offset 15024 */
+  "\xe5\xbe\x9a\0" /* offset 15028 */
+  "\xe5\xbf\x8d\0" /* offset 15032 */
+  "\xe5\xbf\x97\0" /* offset 15036 */
+  "\xe5\xbf\xb9\0" /* offset 15040 */
+  "\xe6\x82\x81\0" /* offset 15044 */
+  "\xe3\xa4\xba\0" /* offset 15048 */
+  "\xe3\xa4\x9c\0" /* offset 15052 */
+  "\xf0\xa2\x9b\x94\0" /* offset 15056 */
+  "\xe6\x83\x87\0" /* offset 15061 */
+  "\xe6\x85\x88\0" /* offset 15065 */
+  "\xe6\x85\x8c\0" /* offset 15069 */
+  "\xe6\x85\x8e\0" /* offset 15073 */
+  "\xe6\x85\xba\0" /* offset 15077 */
+  "\xe6\x86\xb2\0" /* offset 15081 */
+  "\xe6\x86\xa4\0" /* offset 15085 */
+  "\xe6\x86\xaf\0" /* offset 15089 */
+  "\xe6\x87\x9e\0" /* offset 15093 */
+  "\xe6\x88\x90\0" /* offset 15097 */
+  "\xe6\x88\x9b\0" /* offset 15101 */
+  "\xe6\x89\x9d\0" /* offset 15105 */
+  "\xe6\x8a\xb1\0" /* offset 15109 */
+  "\xe6\x8b\x94\0" /* offset 15113 */
+  "\xe6\x8d\x90\0" /* offset 15117 */
+  "\xf0\xa2\xac\x8c\0" /* offset 15121 */
+  "\xe6\x8c\xbd\0" /* offset 15126 */
+  "\xe6\x8b\xbc\0" /* offset 15130 */
+  "\xe6\x8d\xa8\0" /* offset 15134 */
+  "\xe6\x8e\x83\0" /* offset 15138 */
+  "\xe6\x8f\xa4\0" /* offset 15142 */
+  "\xf0\xa2\xaf\xb1\0" /* offset 15146 */
+  "\xe6\x90\xa2\0" /* offset 15151 */
+  "\xe6\x8f\x85\0" /* offset 15155 */
+  "\xe6\x8e\xa9\0" /* offset 15159 */
+  "\xe3\xa8\xae\0" /* offset 15163 */
+  "\xe6\x91\xa9\0" /* offset 15167 */
+  "\xe6\x91\xbe\0" /* offset 15171 */
+  "\xe6\x92\x9d\0" /* offset 15175 */
+  "\xe6\x91\xb7\0" /* offset 15179 */
+  "\xe3\xa9\xac\0" /* offset 15183 */
+  "\xe6\x95\xac\0" /* offset 15187 */
+  "\xf0\xa3\x80\x8a\0" /* offset 15191 */
+  "\xe6\x97\xa3\0" /* offset 15196 */
+  "\xe6\x9b\xb8\0" /* offset 15200 */
+  "\xe6\x99\x89\0" /* offset 15204 */
+  "\xe3\xac\x99\0" /* offset 15208 */
+  "\xe3\xac\x88\0" /* offset 15212 */
+  "\xe3\xab\xa4\0" /* offset 15216 */
+  "\xe5\x86\x92\0" /* offset 15220 */
+  "\xe5\x86\x95\0" /* offset 15224 */
+  "\xe6\x9c\x80\0" /* offset 15228 */
+  "\xe6\x9a\x9c\0" /* offset 15232 */
+  "\xe8\x82\xad\0" /* offset 15236 */
+  "\xe4\x8f\x99\0" /* offset 15240 */
+  "\xe6\x9c\x9b\0" /* offset 15244 */
+  "\xe6\x9c\xa1\0" /* offset 15248 */
+  "\xe6\x9d\x9e\0" /* offset 15252 */
+  "\xe6\x9d\x93\0" /* offset 15256 */
+  "\xf0\xa3\x8f\x83\0" /* offset 15260 */
+  "\xe3\xad\x89\0" /* offset 15265 */
+  "\xe6\x9f\xba\0" /* offset 15269 */
+  "\xe6\x9e\x85\0" /* offset 15273 */
+  "\xe6\xa1\x92\0" /* offset 15277 */
+  "\xf0\xa3\x91\xad\0" /* offset 15281 */
+  "\xe6\xa2\x8e\0" /* offset 15286 */
+  "\xe6\xa0\x9f\0" /* offset 15290 */
+  "\xe6\xa4\x94\0" /* offset 15294 */
+  "\xe3\xae\x9d\0" /* offset 15298 */
+  "\xe6\xa5\x82\0" /* offset 15302 */
+  "\xe6\xa6\xa3\0" /* offset 15306 */
+  "\xe6\xa7\xaa\0" /* offset 15310 */
+  "\xe6\xaa\xa8\0" /* offset 15314 */
+  "\xf0\xa3\x9a\xa3\0" /* offset 15318 */
+  "\xe6\xab\x9b\0" /* offset 15323 */
+  "\xe3\xb0\x98\0" /* offset 15327 */
+  "\xe6\xac\xa1\0" /* offset 15331 */
+  "\xf0\xa3\xa2\xa7\0" /* offset 15335 */
+  "\xe6\xad\x94\0" /* offset 15340 */
+  "\xe3\xb1\x8e\0" /* offset 15344 */
+  "\xe6\xad\xb2\0" /* offset 15348 */
+  "\xe6\xae\x9f\0" /* offset 15352 */
+  "\xe6\xae\xbb\0" /* offset 15356 */
+  "\xf0\xa3\xaa\x8d\0" /* offset 15360 */
+  "\xf0\xa1\xb4\x8b\0" /* offset 15365 */
+  "\xf0\xa3\xab\xba\0" /* offset 15370 */
+  "\xe6\xb1\x8e\0" /* offset 15375 */
+  "\xf0\xa3\xb2\xbc\0" /* offset 15379 */
+  "\xe6\xb2\xbf\0" /* offset 15384 */
+  "\xe6\xb3\x8d\0" /* offset 15388 */
+  "\xe6\xb1\xa7\0" /* offset 15392 */
+  "\xe6\xb4\x96\0" /* offset 15396 */
+  "\xe6\xb4\xbe\0" /* offset 15400 */
+  "\xe6\xb5\xa9\0" /* offset 15404 */
+  "\xe6\xb5\xb8\0" /* offset 15408 */
+  "\xe6\xb6\x85\0" /* offset 15412 */
+  "\xf0\xa3\xb4\x9e\0" /* offset 15416 */
+  "\xe6\xb4\xb4\0" /* offset 15421 */
+  "\xe6\xb8\xaf\0" /* offset 15425 */
+  "\xe6\xb9\xae\0" /* offset 15429 */
+  "\xe3\xb4\xb3\0" /* offset 15433 */
+  "\xe6\xbb\x8b\0" /* offset 15437 */
+  "\xe6\xbb\x87\0" /* offset 15441 */
+  "\xf0\xa3\xbb\x91\0" /* offset 15445 */
+  "\xe6\xb7\xb9\0" /* offset 15450 */
+  "\xe6\xbd\xae\0" /* offset 15454 */
+  "\xf0\xa3\xbd\x9e\0" /* offset 15458 */
+  "\xf0\xa3\xbe\x8e\0" /* offset 15463 */
+  "\xe6\xbf\x86\0" /* offset 15468 */
+  "\xe7\x80\xb9\0" /* offset 15472 */
+  "\xe7\x80\x9e\0" /* offset 15476 */
+  "\xe7\x80\x9b\0" /* offset 15480 */
+  "\xe3\xb6\x96\0" /* offset 15484 */
+  "\xe7\x81\x8a\0" /* offset 15488 */
+  "\xe7\x81\xbd\0" /* offset 15492 */
+  "\xe7\x81\xb7\0" /* offset 15496 */
+  "\xe7\x82\xad\0" /* offset 15500 */
+  "\xf0\xa0\x94\xa5\0" /* offset 15504 */
+  "\xe7\x85\x85\0" /* offset 15509 */
+  "\xf0\xa4\x89\xa3\0" /* offset 15513 */
+  "\xe7\x86\x9c\0" /* offset 15518 */
+  "\xe4\x8e\xab\0" /* offset 15522 */
+  "\xe7\x88\xa8\0" /* offset 15526 */
+  "\xe7\x88\xb5\0" /* offset 15530 */
+  "\xe7\x89\x90\0" /* offset 15534 */
+  "\xf0\xa4\x98\x88\0" /* offset 15538 */
+  "\xe7\x8a\x80\0" /* offset 15543 */
+  "\xe7\x8a\x95\0" /* offset 15547 */
+  "\xf0\xa4\x9c\xb5\0" /* offset 15551 */
+  "\xf0\xa4\xa0\x94\0" /* offset 15556 */
+  "\xe7\x8d\xba\0" /* offset 15561 */
+  "\xe7\x8e\x8b\0" /* offset 15565 */
+  "\xe3\xba\xac\0" /* offset 15569 */
+  "\xe7\x8e\xa5\0" /* offset 15573 */
+  "\xe3\xba\xb8\0" /* offset 15577 */
+  "\xe7\x91\x87\0" /* offset 15581 */
+  "\xe7\x91\x9c\0" /* offset 15585 */
+  "\xe7\x91\xb1\0" /* offset 15589 */
+  "\xe7\x92\x85\0" /* offset 15593 */
+  "\xe7\x93\x8a\0" /* offset 15597 */
+  "\xe3\xbc\x9b\0" /* offset 15601 */
+  "\xe7\x94\xa4\0" /* offset 15605 */
+  "\xf0\xa4\xb0\xb6\0" /* offset 15609 */
+  "\xe7\x94\xbe\0" /* offset 15614 */
+  "\xf0\xa4\xb2\x92\0" /* offset 15618 */
+  "\xf0\xa2\x86\x9f\0" /* offset 15623 */
+  "\xe7\x98\x90\0" /* offset 15628 */
+  "\xf0\xa4\xbe\xa1\0" /* offset 15632 */
+  "\xf0\xa4\xbe\xb8\0" /* offset 15637 */
+  "\xf0\xa5\x81\x84\0" /* offset 15642 */
+  "\xe3\xbf\xbc\0" /* offset 15647 */
+  "\xe4\x80\x88\0" /* offset 15651 */
+  "\xe7\x9b\xb4\0" /* offset 15655 */
+  "\xf0\xa5\x83\xb3\0" /* offset 15659 */
+  "\xf0\xa5\x83\xb2\0" /* offset 15664 */
+  "\xf0\xa5\x84\x99\0" /* offset 15669 */
+  "\xf0\xa5\x84\xb3\0" /* offset 15674 */
+  "\xe7\x9c\x9e\0" /* offset 15679 */
+  "\xe7\x9c\x9f\0" /* offset 15683 */
+  "\xe7\x9d\x8a\0" /* offset 15687 */
+  "\xe4\x80\xb9\0" /* offset 15691 */
+  "\xe7\x9e\x8b\0" /* offset 15695 */
+  "\xe4\x81\x86\0" /* offset 15699 */
+  "\xe4\x82\x96\0" /* offset 15703 */
+  "\xf0\xa5\x90\x9d\0" /* offset 15707 */
+  "\xe7\xa1\x8e\0" /* offset 15712 */
+  "\xe7\xa3\x8c\0" /* offset 15716 */
+  "\xe4\x83\xa3\0" /* offset 15720 */
+  "\xf0\xa5\x98\xa6\0" /* offset 15724 */
+  "\xf0\xa5\x9a\x9a\0" /* offset 15729 */
+  "\xf0\xa5\x9b\x85\0" /* offset 15734 */
+  "\xe7\xa7\xab\0" /* offset 15739 */
+  "\xe4\x84\xaf\0" /* offset 15743 */
+  "\xe7\xa9\x8a\0" /* offset 15747 */
+  "\xe7\xa9\x8f\0" /* offset 15751 */
+  "\xf0\xa5\xa5\xbc\0" /* offset 15755 */
+  "\xf0\xa5\xaa\xa7\0" /* offset 15760 */
+  "\xe7\xaa\xae\0" /* offset 15765 */
+  "\xe4\x88\x82\0" /* offset 15769 */
+  "\xf0\xa5\xae\xab\0" /* offset 15773 */
+  "\xe7\xaf\x86\0" /* offset 15778 */
+  "\xe7\xaf\x89\0" /* offset 15782 */
+  "\xe4\x88\xa7\0" /* offset 15786 */
+  "\xf0\xa5\xb2\x80\0" /* offset 15790 */
+  "\xe7\xb3\x92\0" /* offset 15795 */
+  "\xe4\x8a\xa0\0" /* offset 15799 */
+  "\xe7\xb3\xa8\0" /* offset 15803 */
+  "\xe7\xb3\xa3\0" /* offset 15807 */
+  "\xe7\xb4\x80\0" /* offset 15811 */
+  "\xf0\xa5\xbe\x86\0" /* offset 15815 */
+  "\xe7\xb5\xa3\0" /* offset 15820 */
+  "\xe4\x8c\x81\0" /* offset 15824 */
+  "\xe7\xb7\x87\0" /* offset 15828 */
+  "\xe7\xb8\x82\0" /* offset 15832 */
+  "\xe7\xb9\x85\0" /* offset 15836 */
+  "\xe4\x8c\xb4\0" /* offset 15840 */
+  "\xf0\xa6\x88\xa8\0" /* offset 15844 */
+  "\xf0\xa6\x89\x87\0" /* offset 15849 */
+  "\xe4\x8d\x99\0" /* offset 15854 */
+  "\xf0\xa6\x8b\x99\0" /* offset 15858 */
+  "\xe7\xbd\xba\0" /* offset 15863 */
+  "\xf0\xa6\x8c\xbe\0" /* offset 15867 */
+  "\xe7\xbe\x95\0" /* offset 15872 */
+  "\xe7\xbf\xba\0" /* offset 15876 */
+  "\xf0\xa6\x93\x9a\0" /* offset 15880 */
+  "\xf0\xa6\x94\xa3\0" /* offset 15885 */
+  "\xe8\x81\xa0\0" /* offset 15890 */
+  "\xf0\xa6\x96\xa8\0" /* offset 15894 */
+  "\xe8\x81\xb0\0" /* offset 15899 */
+  "\xf0\xa3\x8d\x9f\0" /* offset 15903 */
+  "\xe4\x8f\x95\0" /* offset 15908 */
+  "\xe8\x82\xb2\0" /* offset 15912 */
+  "\xe8\x84\x83\0" /* offset 15916 */
+  "\xe4\x90\x8b\0" /* offset 15920 */
+  "\xe8\x84\xbe\0" /* offset 15924 */
+  "\xe5\xaa\xb5\0" /* offset 15928 */
+  "\xf0\xa6\x9e\xa7\0" /* offset 15932 */
+  "\xf0\xa6\x9e\xb5\0" /* offset 15937 */
+  "\xf0\xa3\x8e\x93\0" /* offset 15942 */
+  "\xf0\xa3\x8e\x9c\0" /* offset 15947 */
+  "\xe8\x88\x84\0" /* offset 15952 */
+  "\xe8\xbe\x9e\0" /* offset 15956 */
+  "\xe4\x91\xab\0" /* offset 15960 */
+  "\xe8\x8a\x91\0" /* offset 15964 */
+  "\xe8\x8a\x8b\0" /* offset 15968 */
+  "\xe8\x8a\x9d\0" /* offset 15972 */
+  "\xe5\x8a\xb3\0" /* offset 15976 */
+  "\xe8\x8a\xb1\0" /* offset 15980 */
+  "\xe8\x8a\xb3\0" /* offset 15984 */
+  "\xe8\x8a\xbd\0" /* offset 15988 */
+  "\xe8\x8b\xa6\0" /* offset 15992 */
+  "\xf0\xa6\xac\xbc\0" /* offset 15996 */
+  "\xe8\x8c\x9d\0" /* offset 16001 */
+  "\xe8\x8d\xa3\0" /* offset 16005 */
+  "\xe8\x8e\xad\0" /* offset 16009 */
+  "\xe8\x8c\xa3\0" /* offset 16013 */
+  "\xe8\x8e\xbd\0" /* offset 16017 */
+  "\xe8\x8f\xa7\0" /* offset 16021 */
+  "\xe8\x8d\x93\0" /* offset 16025 */
+  "\xe8\x8f\x8a\0" /* offset 16029 */
+  "\xe8\x8f\x8c\0" /* offset 16033 */
+  "\xe8\x8f\x9c\0" /* offset 16037 */
+  "\xf0\xa6\xb0\xb6\0" /* offset 16041 */
+  "\xf0\xa6\xb5\xab\0" /* offset 16046 */
+  "\xf0\xa6\xb3\x95\0" /* offset 16051 */
+  "\xe4\x94\xab\0" /* offset 16056 */
+  "\xe8\x93\xb1\0" /* offset 16060 */
+  "\xe8\x93\xb3\0" /* offset 16064 */
+  "\xe8\x94\x96\0" /* offset 16068 */
+  "\xf0\xa7\x8f\x8a\0" /* offset 16072 */
+  "\xe8\x95\xa4\0" /* offset 16077 */
+  "\xf0\xa6\xbc\xac\0" /* offset 16081 */
+  "\xe4\x95\x9d\0" /* offset 16086 */
+  "\xe4\x95\xa1\0" /* offset 16090 */
+  "\xf0\xa6\xbe\xb1\0" /* offset 16094 */
+  "\xf0\xa7\x83\x92\0" /* offset 16099 */
+  "\xe4\x95\xab\0" /* offset 16104 */
+  "\xe8\x99\x90\0" /* offset 16108 */
+  "\xe8\x99\xa7\0" /* offset 16112 */
+  "\xe8\x99\xa9\0" /* offset 16116 */
+  "\xe8\x9a\xa9\0" /* offset 16120 */
+  "\xe8\x9a\x88\0" /* offset 16124 */
+  "\xe8\x9c\x8e\0" /* offset 16128 */
+  "\xe8\x9b\xa2\0" /* offset 16132 */
+  "\xe8\x9d\xb9\0" /* offset 16136 */
+  "\xe8\x9c\xa8\0" /* offset 16140 */
+  "\xe8\x9d\xab\0" /* offset 16144 */
+  "\xe8\x9e\x86\0" /* offset 16148 */
+  "\xe4\xb5\x97\0" /* offset 16152 */
+  "\xe8\x9f\xa1\0" /* offset 16156 */
+  "\xe8\xa0\x81\0" /* offset 16160 */
+  "\xe4\x97\xb9\0" /* offset 16164 */
+  "\xe8\xa1\xa0\0" /* offset 16168 */
+  "\xf0\xa7\x99\xa7\0" /* offset 16172 */
+  "\xe8\xa3\x97\0" /* offset 16177 */
+  "\xe8\xa3\x9e\0" /* offset 16181 */
+  "\xe4\x98\xb5\0" /* offset 16185 */
+  "\xe8\xa3\xba\0" /* offset 16189 */
+  "\xe3\x92\xbb\0" /* offset 16193 */
+  "\xf0\xa7\xa2\xae\0" /* offset 16197 */
+  "\xf0\xa7\xa5\xa6\0" /* offset 16202 */
+  "\xe4\x9a\xbe\0" /* offset 16207 */
+  "\xe4\x9b\x87\0" /* offset 16211 */
+  "\xe8\xaa\xa0\0" /* offset 16215 */
+  "\xe8\xab\xad\0" /* offset 16219 */
+  "\xe8\xae\x8a\0" /* offset 16223 */
+  "\xf0\xa7\xb2\xa8\0" /* offset 16227 */
+  "\xe8\xb2\xab\0" /* offset 16232 */
+  "\xe8\xb3\x81\0" /* offset 16236 */
+  "\xe8\xb4\x9b\0" /* offset 16240 */
+  "\xe8\xb5\xb7\0" /* offset 16244 */
+  "\xf0\xa7\xbc\xaf\0" /* offset 16248 */
+  "\xf0\xa0\xa0\x84\0" /* offset 16253 */
+  "\xe8\xb7\x8b\0" /* offset 16258 */
+  "\xe8\xb6\xbc\0" /* offset 16262 */
+  "\xe8\xb7\xb0\0" /* offset 16266 */
+  "\xf0\xa0\xa3\x9e\0" /* offset 16270 */
+  "\xe8\xbb\x94\0" /* offset 16275 */
+  "\xe8\xbc\xb8\0" /* offset 16279 */
+  "\xf0\xa8\x97\x92\0" /* offset 16283 */
+  "\xf0\xa8\x97\xad\0" /* offset 16288 */
+  "\xe9\x82\x94\0" /* offset 16293 */
+  "\xe9\x83\xb1\0" /* offset 16297 */
+  "\xe9\x84\x91\0" /* offset 16301 */
+  "\xf0\xa8\x9c\xae\0" /* offset 16305 */
+  "\xe9\x84\x9b\0" /* offset 16310 */
+  "\xe9\x88\xb8\0" /* offset 16314 */
+  "\xe9\x8b\x97\0" /* offset 16318 */
+  "\xe9\x8b\x98\0" /* offset 16322 */
+  "\xe9\x89\xbc\0" /* offset 16326 */
+  "\xe9\x8f\xb9\0" /* offset 16330 */
+  "\xe9\x90\x95\0" /* offset 16334 */
+  "\xf0\xa8\xaf\xba\0" /* offset 16338 */
+  "\xe9\x96\x8b\0" /* offset 16343 */
+  "\xe4\xa6\x95\0" /* offset 16347 */
+  "\xe9\x96\xb7\0" /* offset 16351 */
+  "\xf0\xa8\xb5\xb7\0" /* offset 16355 */
+  "\xe4\xa7\xa6\0" /* offset 16360 */
+  "\xe9\x9b\x83\0" /* offset 16364 */
+  "\xe5\xb6\xb2\0" /* offset 16368 */
+  "\xe9\x9c\xa3\0" /* offset 16372 */
+  "\xf0\xa9\x85\x85\0" /* offset 16376 */
+  "\xf0\xa9\x88\x9a\0" /* offset 16381 */
+  "\xe4\xa9\xae\0" /* offset 16386 */
+  "\xe4\xa9\xb6\0" /* offset 16390 */
+  "\xe9\x9f\xa0\0" /* offset 16394 */
+  "\xf0\xa9\x90\x8a\0" /* offset 16398 */
+  "\xe4\xaa\xb2\0" /* offset 16403 */
+  "\xf0\xa9\x92\x96\0" /* offset 16407 */
+  "\xe9\xa0\x8b\0" /* offset 16412 */
+  "\xe9\xa0\xa9\0" /* offset 16416 */
+  "\xf0\xa9\x96\xb6\0" /* offset 16420 */
+  "\xe9\xa3\xa2\0" /* offset 16425 */
+  "\xe4\xac\xb3\0" /* offset 16429 */
+  "\xe9\xa4\xa9\0" /* offset 16433 */
+  "\xe9\xa6\xa7\0" /* offset 16437 */
+  "\xe9\xa7\x82\0" /* offset 16441 */
+  "\xe9\xa7\xbe\0" /* offset 16445 */
+  "\xe4\xaf\x8e\0" /* offset 16449 */
+  "\xf0\xa9\xac\xb0\0" /* offset 16453 */
+  "\xe9\xac\x92\0" /* offset 16458 */
+  "\xe9\xb1\x80\0" /* offset 16462 */
+  "\xe9\xb3\xbd\0" /* offset 16466 */
+  "\xe4\xb3\x8e\0" /* offset 16470 */
+  "\xe4\xb3\xad\0" /* offset 16474 */
+  "\xe9\xb5\xa7\0" /* offset 16478 */
+  "\xf0\xaa\x83\x8e\0" /* offset 16482 */
+  "\xe4\xb3\xb8\0" /* offset 16487 */
+  "\xf0\xaa\x84\x85\0" /* offset 16491 */
+  "\xf0\xaa\x88\x8e\0" /* offset 16496 */
+  "\xf0\xaa\x8a\x91\0" /* offset 16501 */
+  "\xe4\xb5\x96\0" /* offset 16506 */
+  "\xe9\xbb\xbe\0" /* offset 16510 */
+  "\xe9\xbc\x85\0" /* offset 16514 */
+  "\xe9\xbc\x8f\0" /* offset 16518 */
+  "\xe9\xbc\x96\0" /* offset 16522 */
+  "\xf0\xaa\x98\x80\0" /* offset 16526 */;
+
+#endif /* DECOMP_H */
diff --git a/lib/idn-free.c b/lib/idn-free.c
new file mode 100644 (file)
index 0000000..892716c
--- /dev/null
@@ -0,0 +1,48 @@
+/* idn-free.c --- Invoke the `free' function releasing memory
+ *                allocated by libidn functions.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#include <config.h>
+
+/* Get specification. */
+#include "idn-free.h"
+
+/* Get free. */
+#include <stdlib.h>
+
+/**
+ * idn_free:
+ * @ptr: memory region to deallocate, or %NULL.
+ *
+ * Deallocates memory region by calling free().  If @ptr is %NULL no
+ * operation is performed.
+ *
+ * Normally applications de-allocate strings allocated by libidn by
+ * calling free() directly.  Under Windows, different parts of the
+ * same application may use different heap memory, and then it is
+ * important to deallocate memory allocated within the same module
+ * that allocated it.  This function makes that possible.
+ **/
+void
+idn_free (void *ptr)
+{
+  free (ptr);
+}
diff --git a/lib/idn-free.h b/lib/idn-free.h
new file mode 100644 (file)
index 0000000..3edd263
--- /dev/null
@@ -0,0 +1,58 @@
+/* idn-free.h --- Invoke the `free' function releasing memory
+ *                allocated by libidn functions.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef IDN_FREE_H
+# define IDN_FREE_H
+
+# ifndef IDNAPI
+#  if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY
+#   define IDNAPI __attribute__((__visibility__("default")))
+#  elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllexport)
+#  elif defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllimport)
+#  else
+#   define IDNAPI
+#  endif
+# endif
+
+/* I don't recommend using this interface in general.  Use `free'.
+ *
+ * I'm told Microsoft Windows may use one set of `malloc' and `free'
+ * in a library, and another incompatible set in a statically compiled
+ * application that link to the library, thus creating problems if the
+ * application would invoke `free' on a pointer pointing to memory
+ * allocated by the library.  This motivated adding this function.
+ *
+ * The theory of isolating all memory allocations and de-allocations
+ * within a code package (library) sounds good, to simplify hunting
+ * down memory allocation related problems, but I'm not sure if it is
+ * worth enough to motivate recommending this interface over calling
+ * `free' directly, though.
+ *
+ * See the manual section 'Memory handling under Windows' for more
+ * information.
+ */
+
+extern void IDNAPI idn_free (void *ptr);
+
+#endif /* IDN_FREE_H */
diff --git a/lib/idna.c b/lib/idna.c
new file mode 100644 (file)
index 0000000..0f70f73
--- /dev/null
@@ -0,0 +1,850 @@
+/* idna.c --- Convert to or from IDN strings.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <stringprep.h>
+#include <punycode.h>
+
+#include "idna.h"
+
+/* Get c_strcasecmp. */
+#include <c-strcase.h>
+
+#define DOTP(c) ((c) == 0x002E || (c) == 0x3002 ||     \
+                (c) == 0xFF0E || (c) == 0xFF61)
+
+/* Core functions */
+
+/**
+ * idna_to_ascii_4i - convert Unicode domain name label to text
+ * @in: input array with unicode code points.
+ * @inlen: length of input array with unicode code points.
+ * @out: output zero terminated string that must have room for at
+ *       least 63 characters plus the terminating zero.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * The ToASCII operation takes a sequence of Unicode code points that
+ * make up one domain label and transforms it into a sequence of code
+ * points in the ASCII range (0..7F). If ToASCII succeeds, the
+ * original sequence and the resulting sequence are equivalent labels.
+ *
+ * It is important to note that the ToASCII operation can fail. ToASCII
+ * fails if any step of it fails. If any step of the ToASCII operation
+ * fails on any label in a domain name, that domain name MUST NOT be used
+ * as an internationalized domain name. The method for deadling with this
+ * failure is application-specific.
+ *
+ * The inputs to ToASCII are a sequence of code points, the AllowUnassigned
+ * flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a
+ * sequence of ASCII code points or a failure condition.
+ *
+ * ToASCII never alters a sequence of code points that are all in the ASCII
+ * range to begin with (although it could fail). Applying the ToASCII
+ * operation multiple times has exactly the same effect as applying it just
+ * once.
+ *
+ * Return value: Returns 0 on success, or an #Idna_rc error code.
+ */
+int
+idna_to_ascii_4i (const uint32_t * in, size_t inlen, char *out, int flags)
+{
+  size_t len, outlen;
+  uint32_t *src;               /* XXX don't need to copy data? */
+  int rc;
+
+  /*
+   * ToASCII consists of the following steps:
+   *
+   * 1. If all code points in the sequence are in the ASCII range (0..7F)
+   * then skip to step 3.
+   */
+
+  {
+    size_t i;
+    int inasciirange;
+
+    inasciirange = 1;
+    for (i = 0; i < inlen; i++)
+      if (in[i] > 0x7F)
+       inasciirange = 0;
+    if (inasciirange)
+      {
+       src = malloc (sizeof (in[0]) * (inlen + 1));
+       if (src == NULL)
+         return IDNA_MALLOC_ERROR;
+
+       memcpy (src, in, sizeof (in[0]) * inlen);
+       src[inlen] = 0;
+
+       goto step3;
+      }
+  }
+
+  /*
+   * 2. Perform the steps specified in [NAMEPREP] and fail if there is
+   * an error. The AllowUnassigned flag is used in [NAMEPREP].
+   */
+
+  {
+    char *p;
+
+    p = stringprep_ucs4_to_utf8 (in, (ssize_t) inlen, NULL, NULL);
+    if (p == NULL)
+      return IDNA_MALLOC_ERROR;
+
+    len = strlen (p);
+    do
+      {
+       char *newp;
+
+       len = 2 * len + 10;     /* XXX better guess? */
+       newp = realloc (p, len);
+       if (newp == NULL)
+         {
+           free (p);
+           return IDNA_MALLOC_ERROR;
+         }
+       p = newp;
+
+       if (flags & IDNA_ALLOW_UNASSIGNED)
+         rc = stringprep_nameprep (p, len);
+       else
+         rc = stringprep_nameprep_no_unassigned (p, len);
+      }
+    while (rc == STRINGPREP_TOO_SMALL_BUFFER);
+
+    if (rc != STRINGPREP_OK)
+      {
+       free (p);
+       return IDNA_STRINGPREP_ERROR;
+      }
+
+    src = stringprep_utf8_to_ucs4 (p, -1, NULL);
+
+    free (p);
+  }
+
+step3:
+  /*
+   * 3. If the UseSTD3ASCIIRules flag is set, then perform these checks:
+   *
+   * (a) Verify the absence of non-LDH ASCII code points; that is,
+   * the absence of 0..2C, 2E..2F, 3A..40, 5B..60, and 7B..7F.
+   *
+   * (b) Verify the absence of leading and trailing hyphen-minus;
+   * that is, the absence of U+002D at the beginning and end of
+   * the sequence.
+   */
+
+  if (flags & IDNA_USE_STD3_ASCII_RULES)
+    {
+      size_t i;
+
+      for (i = 0; src[i]; i++)
+       if (src[i] <= 0x2C || src[i] == 0x2E || src[i] == 0x2F ||
+           (src[i] >= 0x3A && src[i] <= 0x40) ||
+           (src[i] >= 0x5B && src[i] <= 0x60) ||
+           (src[i] >= 0x7B && src[i] <= 0x7F))
+         {
+           free (src);
+           return IDNA_CONTAINS_NON_LDH;
+         }
+
+      if (src[0] == 0x002D || (i > 0 && src[i - 1] == 0x002D))
+       {
+         free (src);
+         return IDNA_CONTAINS_MINUS;
+       }
+    }
+
+  /*
+   * 4. If all code points in the sequence are in the ASCII range
+   * (0..7F), then skip to step 8.
+   */
+
+  {
+    size_t i;
+    int inasciirange;
+
+    inasciirange = 1;
+    for (i = 0; src[i]; i++)
+      {
+       if (src[i] > 0x7F)
+         inasciirange = 0;
+       /* copy string to output buffer if we are about to skip to step8 */
+       if (i < 64)
+         out[i] = src[i];
+      }
+    if (i < 64)
+      out[i] = '\0';
+    if (inasciirange)
+      goto step8;
+  }
+
+  /*
+   * 5. Verify that the sequence does NOT begin with the ACE prefix.
+   *
+   */
+
+  {
+    size_t i;
+    int match;
+
+    match = 1;
+    for (i = 0; match && i < strlen (IDNA_ACE_PREFIX); i++)
+      if (((uint32_t) IDNA_ACE_PREFIX[i] & 0xFF) != src[i])
+       match = 0;
+    if (match)
+      {
+       free (src);
+       return IDNA_CONTAINS_ACE_PREFIX;
+      }
+  }
+
+  /*
+   * 6. Encode the sequence using the encoding algorithm in [PUNYCODE]
+   * and fail if there is an error.
+   */
+  for (len = 0; src[len]; len++)
+    ;
+  src[len] = '\0';
+  outlen = 63 - strlen (IDNA_ACE_PREFIX);
+  rc = punycode_encode (len, src, NULL,
+                       &outlen, &out[strlen (IDNA_ACE_PREFIX)]);
+  if (rc != PUNYCODE_SUCCESS)
+    {
+      free (src);
+      return IDNA_PUNYCODE_ERROR;
+    }
+  out[strlen (IDNA_ACE_PREFIX) + outlen] = '\0';
+
+  /*
+   * 7. Prepend the ACE prefix.
+   */
+
+  memcpy (out, IDNA_ACE_PREFIX, strlen (IDNA_ACE_PREFIX));
+
+  /*
+   * 8. Verify that the number of code points is in the range 1 to 63
+   * inclusive (0 is excluded).
+   */
+
+step8:
+  free (src);
+  if (strlen (out) < 1 || strlen (out) > 63)
+    return IDNA_INVALID_LENGTH;
+
+  return IDNA_SUCCESS;
+}
+
+/* ToUnicode().  May realloc() utf8in.  Will free utf8in unconditionally. */
+static int
+idna_to_unicode_internal (char *utf8in,
+                         uint32_t * out, size_t * outlen, int flags)
+{
+  int rc;
+  char tmpout[64];
+  size_t utf8len = strlen (utf8in) + 1;
+  size_t addlen = 0;
+
+  /*
+   * ToUnicode consists of the following steps:
+   *
+   * 1. If the sequence contains any code points outside the ASCII range
+   * (0..7F) then proceed to step 2, otherwise skip to step 3.
+   */
+
+  {
+    size_t i;
+    int inasciirange;
+
+    inasciirange = 1;
+    for (i = 0; utf8in[i]; i++)
+      if (utf8in[i] & ~0x7F)
+       inasciirange = 0;
+    if (inasciirange)
+      goto step3;
+  }
+
+  /*
+   * 2. Perform the steps specified in [NAMEPREP] and fail if there is an
+   * error. (If step 3 of ToASCII is also performed here, it will not
+   * affect the overall behavior of ToUnicode, but it is not
+   * necessary.) The AllowUnassigned flag is used in [NAMEPREP].
+   */
+  do
+    {
+      char *newp = realloc (utf8in, utf8len + addlen);
+      if (newp == NULL)
+       {
+         free (utf8in);
+         return IDNA_MALLOC_ERROR;
+       }
+      utf8in = newp;
+      if (flags & IDNA_ALLOW_UNASSIGNED)
+       rc = stringprep_nameprep (utf8in, utf8len + addlen);
+      else
+       rc = stringprep_nameprep_no_unassigned (utf8in, utf8len + addlen);
+      addlen += 1;
+    }
+  while (rc == STRINGPREP_TOO_SMALL_BUFFER);
+
+  if (rc != STRINGPREP_OK)
+    {
+      free (utf8in);
+      return IDNA_STRINGPREP_ERROR;
+    }
+
+  /* 3. Verify that the sequence begins with the ACE prefix, and save a
+   * copy of the sequence.
+   */
+
+step3:
+  if (memcmp (IDNA_ACE_PREFIX, utf8in, strlen (IDNA_ACE_PREFIX)) != 0)
+    {
+      free (utf8in);
+      return IDNA_NO_ACE_PREFIX;
+    }
+
+  /* 4. Remove the ACE prefix.
+   */
+
+  memmove (utf8in, &utf8in[strlen (IDNA_ACE_PREFIX)],
+          strlen (utf8in) - strlen (IDNA_ACE_PREFIX) + 1);
+
+  /* 5. Decode the sequence using the decoding algorithm in [PUNYCODE]
+   * and fail if there is an error. Save a copy of the result of
+   * this step.
+   */
+
+  (*outlen)--;                 /* reserve one for the zero */
+
+  rc = punycode_decode (strlen (utf8in), utf8in, outlen, out, NULL);
+  if (rc != PUNYCODE_SUCCESS)
+    {
+      free (utf8in);
+      return IDNA_PUNYCODE_ERROR;
+    }
+
+  out[*outlen] = 0;            /* add zero */
+
+  /* 6. Apply ToASCII.
+   */
+
+  rc = idna_to_ascii_4i (out, *outlen, tmpout, flags);
+  if (rc != IDNA_SUCCESS)
+    {
+      free (utf8in);
+      return rc;
+    }
+
+  /* 7. Verify that the result of step 6 matches the saved copy from
+   * step 3, using a case-insensitive ASCII comparison.
+   */
+
+  if (c_strcasecmp (utf8in, tmpout + strlen (IDNA_ACE_PREFIX)) != 0)
+    {
+      free (utf8in);
+      return IDNA_ROUNDTRIP_VERIFY_ERROR;
+    }
+
+  /* 8. Return the saved copy from step 5.
+   */
+
+  free (utf8in);
+  return IDNA_SUCCESS;
+}
+
+/**
+ * idna_to_unicode_44i - convert domain name label to Unicode
+ * @in: input array with unicode code points.
+ * @inlen: length of input array with unicode code points.
+ * @out: output array with unicode code points.
+ * @outlen: on input, maximum size of output array with unicode code points,
+ *          on exit, actual size of output array with unicode code points.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * The ToUnicode operation takes a sequence of Unicode code points
+ * that make up one domain label and returns a sequence of Unicode
+ * code points. If the input sequence is a label in ACE form, then the
+ * result is an equivalent internationalized label that is not in ACE
+ * form, otherwise the original sequence is returned unaltered.
+ *
+ * ToUnicode never fails. If any step fails, then the original input
+ * sequence is returned immediately in that step.
+ *
+ * The Punycode decoder can never output more code points than it
+ * inputs, but Nameprep can, and therefore ToUnicode can.  Note that
+ * the number of octets needed to represent a sequence of code points
+ * depends on the particular character encoding used.
+ *
+ * The inputs to ToUnicode are a sequence of code points, the
+ * AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of
+ * ToUnicode is always a sequence of Unicode code points.
+ *
+ * Return value: Returns #Idna_rc error condition, but it must only be
+ *   used for debugging purposes.  The output buffer is always
+ *   guaranteed to contain the correct data according to the
+ *   specification (sans malloc induced errors).  NB!  This means that
+ *   you normally ignore the return code from this function, as
+ *   checking it means breaking the standard.
+ */
+int
+idna_to_unicode_44i (const uint32_t * in, size_t inlen,
+                    uint32_t * out, size_t * outlen, int flags)
+{
+  int rc;
+  size_t outlensave = *outlen;
+  char *p;
+
+  p = stringprep_ucs4_to_utf8 (in, (ssize_t) inlen, NULL, NULL);
+  if (p == NULL)
+    return IDNA_MALLOC_ERROR;
+
+  rc = idna_to_unicode_internal (p, out, outlen, flags);
+  if (rc != IDNA_SUCCESS)
+    {
+      memcpy (out, in, sizeof (in[0]) * (inlen < outlensave ?
+                                        inlen : outlensave));
+      *outlen = inlen;
+    }
+
+  /* p is freed in idna_to_unicode_internal.  */
+
+  return rc;
+}
+
+/* Wrappers that handle several labels */
+
+/**
+ * idna_to_ascii_4z - convert Unicode domain name to text
+ * @input: zero terminated input Unicode string.
+ * @output: pointer to newly allocated output string.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * Convert UCS-4 domain name to ASCII string.  The domain name may
+ * contain several labels, separated by dots.  The output buffer must
+ * be deallocated by the caller.
+ *
+ * Return value: Returns %IDNA_SUCCESS on success, or error code.
+ **/
+int
+idna_to_ascii_4z (const uint32_t * input, char **output, int flags)
+{
+  const uint32_t *start = input;
+  const uint32_t *end = input;
+  char buf[64];
+  char *out = NULL;
+  int rc;
+
+  /* 1) Whenever dots are used as label separators, the following
+     characters MUST be recognized as dots: U+002E (full stop),
+     U+3002 (ideographic full stop), U+FF0E (fullwidth full stop),
+     U+FF61 (halfwidth ideographic full stop). */
+
+  if (input[0] == 0)
+    {
+      /* Handle implicit zero-length root label. */
+      *output = malloc (1);
+      if (!*output)
+       return IDNA_MALLOC_ERROR;
+      strcpy (*output, "");
+      return IDNA_SUCCESS;
+    }
+
+  if (DOTP (input[0]) && input[1] == 0)
+    {
+      /* Handle explicit zero-length root label. */
+      *output = malloc (2);
+      if (!*output)
+       return IDNA_MALLOC_ERROR;
+      strcpy (*output, ".");
+      return IDNA_SUCCESS;
+    }
+
+  *output = NULL;
+  do
+    {
+      end = start;
+
+      for (; *end && !DOTP (*end); end++)
+       ;
+
+      if (*end == '\0' && start == end)
+       {
+         /* Handle explicit zero-length root label. */
+         buf[0] = '\0';
+       }
+      else
+       {
+         rc = idna_to_ascii_4i (start, (size_t) (end - start), buf, flags);
+         if (rc != IDNA_SUCCESS)
+           return rc;
+       }
+
+      if (out)
+       {
+         char *newp = realloc (out, strlen (out) + 1 + strlen (buf) + 1);
+         if (!newp)
+           {
+             free (out);
+             return IDNA_MALLOC_ERROR;
+           }
+         out = newp;
+         strcat (out, ".");
+         strcat (out, buf);
+       }
+      else
+       {
+         out = (char *) malloc (strlen (buf) + 1);
+         if (!out)
+           return IDNA_MALLOC_ERROR;
+         strcpy (out, buf);
+       }
+
+      start = end + 1;
+    }
+  while (*end);
+
+  *output = out;
+
+  return IDNA_SUCCESS;
+}
+
+/**
+ * idna_to_ascii_8z - convert Unicode domain name to text
+ * @input: zero terminated input UTF-8 string.
+ * @output: pointer to newly allocated output string.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * Convert UTF-8 domain name to ASCII string.  The domain name may
+ * contain several labels, separated by dots.  The output buffer must
+ * be deallocated by the caller.
+ *
+ * Return value: Returns %IDNA_SUCCESS on success, or error code.
+ **/
+int
+idna_to_ascii_8z (const char *input, char **output, int flags)
+{
+  uint32_t *ucs4;
+  size_t ucs4len;
+  int rc;
+
+  ucs4 = stringprep_utf8_to_ucs4 (input, -1, &ucs4len);
+  if (!ucs4)
+    return IDNA_ICONV_ERROR;
+
+  rc = idna_to_ascii_4z (ucs4, output, flags);
+
+  free (ucs4);
+
+  return rc;
+
+}
+
+/**
+ * idna_to_ascii_lz - convert Unicode domain name to text
+ * @input: zero terminated input string encoded in the current locale's
+ *   character set.
+ * @output: pointer to newly allocated output string.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * Convert domain name in the locale's encoding to ASCII string.  The
+ * domain name may contain several labels, separated by dots.  The
+ * output buffer must be deallocated by the caller.
+ *
+ * Return value: Returns %IDNA_SUCCESS on success, or error code.
+ **/
+int
+idna_to_ascii_lz (const char *input, char **output, int flags)
+{
+  char *utf8;
+  int rc;
+
+  utf8 = stringprep_locale_to_utf8 (input);
+  if (!utf8)
+    return IDNA_ICONV_ERROR;
+
+  rc = idna_to_ascii_8z (utf8, output, flags);
+
+  free (utf8);
+
+  return rc;
+}
+
+/**
+ * idna_to_unicode_4z4z - convert domain name to Unicode
+ * @input: zero-terminated Unicode string.
+ * @output: pointer to newly allocated output Unicode string.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * Convert possibly ACE encoded domain name in UCS-4 format into a
+ * UCS-4 string.  The domain name may contain several labels,
+ * separated by dots.  The output buffer must be deallocated by the
+ * caller.
+ *
+ * Return value: Returns %IDNA_SUCCESS on success, or error code.
+ **/
+int
+idna_to_unicode_4z4z (const uint32_t * input, uint32_t ** output, int flags)
+{
+  const uint32_t *start = input;
+  const uint32_t *end = input;
+  uint32_t *buf;
+  size_t buflen;
+  uint32_t *out = NULL;
+  size_t outlen = 0;
+  int rc;
+
+  *output = NULL;
+
+  do
+    {
+      end = start;
+
+      for (; *end && !DOTP (*end); end++)
+       ;
+
+      buflen = (size_t) (end - start);
+      buf = malloc (sizeof (buf[0]) * (buflen + 1));
+      if (!buf)
+       return IDNA_MALLOC_ERROR;
+
+      rc = idna_to_unicode_44i (start, (size_t) (end - start),
+                               buf, &buflen, flags);
+      /* don't check rc as per specification! */
+
+      if (out)
+       {
+         uint32_t *newp = realloc (out,
+                                   sizeof (out[0])
+                                   * (outlen + 1 + buflen + 1));
+         if (!newp)
+           {
+             free (buf);
+             free (out);
+             return IDNA_MALLOC_ERROR;
+           }
+         out = newp;
+         out[outlen++] = 0x002E;       /* '.' (full stop) */
+         memcpy (out + outlen, buf, sizeof (buf[0]) * buflen);
+         outlen += buflen;
+         out[outlen] = 0x0;
+         free (buf);
+       }
+      else
+       {
+         out = buf;
+         outlen = buflen;
+         out[outlen] = 0x0;
+       }
+
+      start = end + 1;
+    }
+  while (*end);
+
+  *output = out;
+
+  return IDNA_SUCCESS;
+}
+
+/**
+ * idna_to_unicode_8z4z - convert domain name to Unicode
+ * @input: zero-terminated UTF-8 string.
+ * @output: pointer to newly allocated output Unicode string.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * Convert possibly ACE encoded domain name in UTF-8 format into a
+ * UCS-4 string.  The domain name may contain several labels,
+ * separated by dots.  The output buffer must be deallocated by the
+ * caller.
+ *
+ * Return value: Returns %IDNA_SUCCESS on success, or error code.
+ **/
+int
+idna_to_unicode_8z4z (const char *input, uint32_t ** output, int flags)
+{
+  uint32_t *ucs4;
+  size_t ucs4len;
+  int rc;
+
+  ucs4 = stringprep_utf8_to_ucs4 (input, -1, &ucs4len);
+  if (!ucs4)
+    return IDNA_ICONV_ERROR;
+
+  rc = idna_to_unicode_4z4z (ucs4, output, flags);
+  free (ucs4);
+
+  return rc;
+}
+
+/**
+ * idna_to_unicode_8z8z - convert domain name to Unicode
+ * @input: zero-terminated UTF-8 string.
+ * @output: pointer to newly allocated output UTF-8 string.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * Convert possibly ACE encoded domain name in UTF-8 format into a
+ * UTF-8 string.  The domain name may contain several labels,
+ * separated by dots.  The output buffer must be deallocated by the
+ * caller.
+ *
+ * Return value: Returns %IDNA_SUCCESS on success, or error code.
+ **/
+int
+idna_to_unicode_8z8z (const char *input, char **output, int flags)
+{
+  uint32_t *ucs4;
+  int rc;
+
+  rc = idna_to_unicode_8z4z (input, &ucs4, flags);
+  *output = stringprep_ucs4_to_utf8 (ucs4, -1, NULL, NULL);
+  free (ucs4);
+
+  if (!*output)
+    return IDNA_ICONV_ERROR;
+
+  return rc;
+}
+
+/**
+ * idna_to_unicode_8zlz - convert domain name to Unicode
+ * @input: zero-terminated UTF-8 string.
+ * @output: pointer to newly allocated output string encoded in the
+ *   current locale's character set.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * Convert possibly ACE encoded domain name in UTF-8 format into a
+ * string encoded in the current locale's character set.  The domain
+ * name may contain several labels, separated by dots.  The output
+ * buffer must be deallocated by the caller.
+ *
+ * Return value: Returns %IDNA_SUCCESS on success, or error code.
+ **/
+int
+idna_to_unicode_8zlz (const char *input, char **output, int flags)
+{
+  char *utf8;
+  int rc;
+
+  rc = idna_to_unicode_8z8z (input, &utf8, flags);
+  *output = stringprep_utf8_to_locale (utf8);
+  free (utf8);
+
+  if (!*output)
+    return IDNA_ICONV_ERROR;
+
+  return rc;
+}
+
+/**
+ * idna_to_unicode_lzlz - convert domain name to Unicode
+ * @input: zero-terminated string encoded in the current locale's
+ *   character set.
+ * @output: pointer to newly allocated output string encoded in the
+ *   current locale's character set.
+ * @flags: an #Idna_flags value, e.g., %IDNA_ALLOW_UNASSIGNED or
+ *   %IDNA_USE_STD3_ASCII_RULES.
+ *
+ * Convert possibly ACE encoded domain name in the locale's character
+ * set into a string encoded in the current locale's character set.
+ * The domain name may contain several labels, separated by dots.  The
+ * output buffer must be deallocated by the caller.
+ *
+ * Return value: Returns %IDNA_SUCCESS on success, or error code.
+ **/
+int
+idna_to_unicode_lzlz (const char *input, char **output, int flags)
+{
+  char *utf8;
+  int rc;
+
+  utf8 = stringprep_locale_to_utf8 (input);
+  if (!utf8)
+    return IDNA_ICONV_ERROR;
+
+  rc = idna_to_unicode_8zlz (utf8, output, flags);
+  free (utf8);
+
+  return rc;
+}
+
+/**
+ * IDNA_ACE_PREFIX
+ *
+ * The IANA allocated prefix to use for IDNA. "xn--"
+ */
+
+/**
+ * Idna_rc:
+ * @IDNA_SUCCESS: Successful operation.  This value is guaranteed to
+ *   always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * @IDNA_STRINGPREP_ERROR:  Error during string preparation.
+ * @IDNA_PUNYCODE_ERROR: Error during punycode operation.
+ * @IDNA_CONTAINS_NON_LDH: For IDNA_USE_STD3_ASCII_RULES, indicate that
+ *   the string contains non-LDH ASCII characters.
+ * @IDNA_CONTAINS_MINUS: For IDNA_USE_STD3_ASCII_RULES, indicate that
+ *   the string contains a leading or trailing hyphen-minus (U+002D).
+ * @IDNA_INVALID_LENGTH: The final output string is not within the
+ *   (inclusive) range 1 to 63 characters.
+ * @IDNA_NO_ACE_PREFIX: The string does not contain the ACE prefix
+ *   (for ToUnicode).
+ * @IDNA_ROUNDTRIP_VERIFY_ERROR: The ToASCII operation on output
+ *   string does not equal the input.
+ * @IDNA_CONTAINS_ACE_PREFIX: The input contains the ACE prefix (for
+ *   ToASCII).
+ * @IDNA_ICONV_ERROR: Could not convert string in locale encoding.
+ * @IDNA_MALLOC_ERROR: Could not allocate buffer (this is typically a
+ *   fatal error).
+ * @IDNA_DLOPEN_ERROR: Could not dlopen the libcidn DSO (only used
+ *   internally in libc).
+ *
+ * Enumerated return codes of idna_to_ascii_4i(),
+ * idna_to_unicode_44i() functions (and functions derived from those
+ * functions).  The value 0 is guaranteed to always correspond to
+ * success.
+ */
+
+
+/**
+ * Idna_flags:
+ * @IDNA_ALLOW_UNASSIGNED: Don't reject strings containing unassigned
+ *   Unicode code points.
+ * @IDNA_USE_STD3_ASCII_RULES: Validate strings according to STD3
+ *   rules (i.e., normal host name rules).
+ *
+ * Flags to pass to idna_to_ascii_4i(), idna_to_unicode_44i() etc.
+ */
diff --git a/lib/idna.h b/lib/idna.h
new file mode 100644 (file)
index 0000000..93412ac
--- /dev/null
@@ -0,0 +1,115 @@
+/* idna.h --- Declarations for Internationalized Domain Name in Applications.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef IDNA_H
+# define IDNA_H
+
+# ifndef IDNAPI
+#  if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY
+#   define IDNAPI __attribute__((__visibility__("default")))
+#  elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllexport)
+#  elif defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllimport)
+#  else
+#   define IDNAPI
+#  endif
+# endif
+
+# include <stddef.h>           /* size_t */
+# include <idn-int.h>          /* uint32_t */
+
+# ifdef __cplusplus
+extern "C"
+{
+# endif
+
+  /* Error codes. */
+  typedef enum
+  {
+    IDNA_SUCCESS = 0,
+    IDNA_STRINGPREP_ERROR = 1,
+    IDNA_PUNYCODE_ERROR = 2,
+    IDNA_CONTAINS_NON_LDH = 3,
+    /* Workaround typo in earlier versions. */
+    IDNA_CONTAINS_LDH = IDNA_CONTAINS_NON_LDH,
+    IDNA_CONTAINS_MINUS = 4,
+    IDNA_INVALID_LENGTH = 5,
+    IDNA_NO_ACE_PREFIX = 6,
+    IDNA_ROUNDTRIP_VERIFY_ERROR = 7,
+    IDNA_CONTAINS_ACE_PREFIX = 8,
+    IDNA_ICONV_ERROR = 9,
+    /* Internal errors. */
+    IDNA_MALLOC_ERROR = 201,
+    IDNA_DLOPEN_ERROR = 202
+  } Idna_rc;
+
+  /* IDNA flags */
+  typedef enum
+  {
+    IDNA_ALLOW_UNASSIGNED = 0x0001,
+    IDNA_USE_STD3_ASCII_RULES = 0x0002
+  } Idna_flags;
+
+# ifndef IDNA_ACE_PREFIX
+#  define IDNA_ACE_PREFIX "xn--"
+# endif
+
+  extern IDNAPI const char *idna_strerror (Idna_rc rc);
+
+  /* Core functions */
+  extern IDNAPI int idna_to_ascii_4i (const uint32_t * in, size_t inlen,
+                                     char *out, int flags);
+  extern IDNAPI int idna_to_unicode_44i (const uint32_t * in, size_t inlen,
+                                        uint32_t * out, size_t * outlen,
+                                        int flags);
+
+  /* Wrappers that handle several labels */
+
+  extern IDNAPI int idna_to_ascii_4z (const uint32_t * input,
+                                     char **output, int flags);
+
+  extern IDNAPI int idna_to_ascii_8z (const char *input, char **output,
+                                     int flags);
+
+  extern IDNAPI int idna_to_ascii_lz (const char *input, char **output,
+                                     int flags);
+
+  extern IDNAPI int idna_to_unicode_4z4z (const uint32_t * input,
+                                         uint32_t ** output, int flags);
+
+  extern IDNAPI int idna_to_unicode_8z4z (const char *input,
+                                         uint32_t ** output, int flags);
+
+  extern IDNAPI int idna_to_unicode_8z8z (const char *input,
+                                         char **output, int flags);
+
+  extern IDNAPI int idna_to_unicode_8zlz (const char *input,
+                                         char **output, int flags);
+
+  extern IDNAPI int idna_to_unicode_lzlz (const char *input,
+                                         char **output, int flags);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif                         /* IDNA_H */
diff --git a/lib/libidn.map b/lib/libidn.map
new file mode 100644 (file)
index 0000000..d393696
--- /dev/null
@@ -0,0 +1,100 @@
+# Copyright (C) 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# GNU Libidn is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# GNU Libidn is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GNU Libidn; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+LIBIDN_1.0 {
+  global:
+    idn_free;
+    idna_strerror;
+    idna_to_ascii_4i;
+    idna_to_ascii_4z;
+    idna_to_ascii_8z;
+    idna_to_ascii_lz;
+    idna_to_unicode_44i;
+    idna_to_unicode_4z4z;
+    idna_to_unicode_8z4z;
+    idna_to_unicode_8z8z;
+    idna_to_unicode_8zlz;
+    idna_to_unicode_lzlz;
+    pr29_4;
+    pr29_4z;
+    pr29_8z;
+    pr29_strerror;
+    punycode_decode;
+    punycode_encode;
+    punycode_strerror;
+    stringprep;
+    stringprep_4i;
+    stringprep_4zi;
+    stringprep_check_version;
+    stringprep_convert;
+    stringprep_iscsi;
+    stringprep_iscsi_prohibit;
+    stringprep_kerberos5;
+    stringprep_locale_charset;
+    stringprep_locale_to_utf8;
+    stringprep_nameprep;
+    stringprep_plain;
+    stringprep_profile;
+    stringprep_profiles;
+    stringprep_rfc3454_A_1;
+    stringprep_rfc3454_B_1;
+    stringprep_rfc3454_B_2;
+    stringprep_rfc3454_B_3;
+    stringprep_rfc3454_C_1_1;
+    stringprep_rfc3454_C_1_2;
+    stringprep_rfc3454_C_2_1;
+    stringprep_rfc3454_C_2_2;
+    stringprep_rfc3454_C_3;
+    stringprep_rfc3454_C_4;
+    stringprep_rfc3454_C_5;
+    stringprep_rfc3454_C_6;
+    stringprep_rfc3454_C_7;
+    stringprep_rfc3454_C_8;
+    stringprep_rfc3454_C_9;
+    stringprep_rfc3454_D_1;
+    stringprep_rfc3454_D_2;
+    stringprep_saslprep;
+    stringprep_saslprep_space_map;
+    stringprep_strerror;
+    stringprep_trace;
+    stringprep_ucs4_nfkc_normalize;
+    stringprep_ucs4_to_utf8;
+    stringprep_unichar_to_utf8;
+    stringprep_utf8_nfkc_normalize;
+    stringprep_utf8_to_locale;
+    stringprep_utf8_to_ucs4;
+    stringprep_utf8_to_unichar;
+    stringprep_xmpp_nodeprep;
+    stringprep_xmpp_nodeprep_prohibit;
+    stringprep_xmpp_resourceprep;
+    tld_check_4;
+    tld_check_4t;
+    tld_check_4tz;
+    tld_check_4z;
+    tld_check_8z;
+    tld_check_lz;
+    tld_default_table;
+    tld_get_4;
+    tld_get_4z;
+    tld_get_table;
+    tld_get_z;
+    tld_strerror;
+
+  local:
+    *;
+};
diff --git a/lib/nfkc.c b/lib/nfkc.c
new file mode 100644 (file)
index 0000000..ce67b75
--- /dev/null
@@ -0,0 +1,1046 @@
+/* nfkc.c --- Unicode normalization utilities.
+ * Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "stringprep.h"
+
+/* This file contains functions from GLIB, including gutf8.c and
+ * gunidecomp.c, all licensed under LGPL and copyright hold by:
+ *
+ *  Copyright (C) 1999, 2000 Tom Tromey
+ *  Copyright 2000 Red Hat, Inc.
+ */
+
+/* Hacks to make syncing with GLIB code easier. */
+#define gboolean int
+#define gchar char
+#define guchar unsigned char
+#define glong long
+#define gint int
+#define guint unsigned int
+#define gushort unsigned short
+#define gint16 int16_t
+#define guint16 uint16_t
+#define gunichar uint32_t
+#define gsize size_t
+#define gssize ssize_t
+#define g_malloc malloc
+#define g_free free
+#define g_new(struct_type, n_structs)                                  \
+  ((struct_type *) g_malloc (((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
+#  if defined (__GNUC__) && !defined (__STRICT_ANSI__) && !defined (__cplusplus)
+#    define G_STMT_START       (void)(
+#    define G_STMT_END         )
+#  else
+#    if (defined (sun) || defined (__sun__))
+#      define G_STMT_START     if (1)
+#      define G_STMT_END       else (void)0
+#    else
+#      define G_STMT_START     do
+#      define G_STMT_END       while (0)
+#    endif
+#  endif
+#define g_return_val_if_fail(expr,val)         G_STMT_START{ (void)0; }G_STMT_END
+#define G_N_ELEMENTS(arr)              (sizeof (arr) / sizeof ((arr)[0]))
+#define TRUE 1
+#define FALSE 0
+
+/* Code from GLIB gunicode.h starts here. */
+
+typedef enum
+{
+  G_NORMALIZE_DEFAULT,
+  G_NORMALIZE_NFD = G_NORMALIZE_DEFAULT,
+  G_NORMALIZE_DEFAULT_COMPOSE,
+  G_NORMALIZE_NFC = G_NORMALIZE_DEFAULT_COMPOSE,
+  G_NORMALIZE_ALL,
+  G_NORMALIZE_NFKD = G_NORMALIZE_ALL,
+  G_NORMALIZE_ALL_COMPOSE,
+  G_NORMALIZE_NFKC = G_NORMALIZE_ALL_COMPOSE
+}
+GNormalizeMode;
+
+/* Code from GLIB gutf8.c starts here. */
+
+#define UTF8_COMPUTE(Char, Mask, Len)          \
+  if (Char < 128)                              \
+    {                                          \
+      Len = 1;                                 \
+      Mask = 0x7f;                             \
+    }                                          \
+  else if ((Char & 0xe0) == 0xc0)              \
+    {                                          \
+      Len = 2;                                 \
+      Mask = 0x1f;                             \
+    }                                          \
+  else if ((Char & 0xf0) == 0xe0)              \
+    {                                          \
+      Len = 3;                                 \
+      Mask = 0x0f;                             \
+    }                                          \
+  else if ((Char & 0xf8) == 0xf0)              \
+    {                                          \
+      Len = 4;                                 \
+      Mask = 0x07;                             \
+    }                                          \
+  else if ((Char & 0xfc) == 0xf8)              \
+    {                                          \
+      Len = 5;                                 \
+      Mask = 0x03;                             \
+    }                                          \
+  else if ((Char & 0xfe) == 0xfc)              \
+    {                                          \
+      Len = 6;                                 \
+      Mask = 0x01;                             \
+    }                                          \
+  else                                         \
+    Len = -1;
+
+#define UTF8_LENGTH(Char)                      \
+  ((Char) < 0x80 ? 1 :                         \
+   ((Char) < 0x800 ? 2 :                       \
+    ((Char) < 0x10000 ? 3 :                    \
+     ((Char) < 0x200000 ? 4 :                  \
+      ((Char) < 0x4000000 ? 5 : 6)))))
+
+
+#define UTF8_GET(Result, Chars, Count, Mask, Len)      \
+  (Result) = (Chars)[0] & (Mask);                      \
+  for ((Count) = 1; (Count) < (Len); ++(Count))                \
+    {                                                  \
+      if (((Chars)[(Count)] & 0xc0) != 0x80)           \
+       {                                               \
+         (Result) = -1;                                \
+         break;                                        \
+       }                                               \
+      (Result) <<= 6;                                  \
+      (Result) |= ((Chars)[(Count)] & 0x3f);           \
+    }
+
+static const gchar utf8_skip_data[256] = {
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  1, 1, 1, 1, 1, 1, 1,
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+  2, 2, 2, 2, 2, 2, 2,
+  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5,
+  5, 5, 5, 6, 6, 1, 1
+};
+
+static const gchar *const g_utf8_skip = utf8_skip_data;
+
+#define g_utf8_next_char(p) ((p) + g_utf8_skip[*(const guchar *)(p)])
+
+/*
+ * g_utf8_strlen:
+ * @p: pointer to the start of a UTF-8 encoded string.
+ * @max: the maximum number of bytes to examine. If @max
+ *       is less than 0, then the string is assumed to be
+ *       nul-terminated. If @max is 0, @p will not be examined and
+ *       may be %NULL.
+ *
+ * Returns the length of the string in characters.
+ *
+ * Return value: the length of the string in characters
+ **/
+static glong
+g_utf8_strlen (const gchar * p, gssize max)
+{
+  glong len = 0;
+  const gchar *start = p;
+  g_return_val_if_fail (p != NULL || max == 0, 0);
+
+  if (max < 0)
+    {
+      while (*p)
+       {
+         p = g_utf8_next_char (p);
+         ++len;
+       }
+    }
+  else
+    {
+      if (max == 0 || !*p)
+       return 0;
+
+      p = g_utf8_next_char (p);
+
+      while (p - start < max && *p)
+       {
+         ++len;
+         p = g_utf8_next_char (p);
+       }
+
+      /* only do the last len increment if we got a complete
+       * char (don't count partial chars)
+       */
+      if (p - start == max)
+       ++len;
+    }
+
+  return len;
+}
+
+/*
+ * g_utf8_get_char:
+ * @p: a pointer to Unicode character encoded as UTF-8
+ *
+ * Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
+ * If @p does not point to a valid UTF-8 encoded character, results are
+ * undefined. If you are not sure that the bytes are complete
+ * valid Unicode characters, you should use g_utf8_get_char_validated()
+ * instead.
+ *
+ * Return value: the resulting character
+ **/
+static gunichar
+g_utf8_get_char (const gchar * p)
+{
+  int i, mask = 0, len;
+  gunichar result;
+  unsigned char c = (unsigned char) *p;
+
+  UTF8_COMPUTE (c, mask, len);
+  if (len == -1)
+    return (gunichar) - 1;
+  UTF8_GET (result, p, i, mask, len);
+
+  return result;
+}
+
+/*
+ * g_unichar_to_utf8:
+ * @c: a ISO10646 character code
+ * @outbuf: output buffer, must have at least 6 bytes of space.
+ *       If %NULL, the length will be computed and returned
+ *       and nothing will be written to @outbuf.
+ *
+ * Converts a single character to UTF-8.
+ *
+ * Return value: number of bytes written
+ **/
+static int
+g_unichar_to_utf8 (gunichar c, gchar * outbuf)
+{
+  guint len = 0;
+  int first;
+
+  if (c < 0x80)
+    {
+      first = 0;
+      len = 1;
+    }
+  else if (c < 0x800)
+    {
+      first = 0xc0;
+      len = 2;
+    }
+  else if (c < 0x10000)
+    {
+      first = 0xe0;
+      len = 3;
+    }
+  else if (c < 0x200000)
+    {
+      first = 0xf0;
+      len = 4;
+    }
+  else if (c < 0x4000000)
+    {
+      first = 0xf8;
+      len = 5;
+    }
+  else
+    {
+      first = 0xfc;
+      len = 6;
+    }
+
+  if (outbuf)
+    {
+      guint i;
+      for (i = len - 1; i > 0; --i)
+       {
+         outbuf[i] = (c & 0x3f) | 0x80;
+         c >>= 6;
+       }
+      outbuf[0] = c | first;
+    }
+
+  return len;
+}
+
+/*
+ * g_utf8_to_ucs4_fast:
+ * @str: a UTF-8 encoded string
+ * @len: the maximum length of @str to use. If @len < 0, then
+ *       the string is nul-terminated.
+ * @items_written: location to store the number of characters in the
+ *                 result, or %NULL.
+ *
+ * Convert a string from UTF-8 to a 32-bit fixed width
+ * representation as UCS-4, assuming valid UTF-8 input.
+ * This function is roughly twice as fast as g_utf8_to_ucs4()
+ * but does no error checking on the input.
+ *
+ * Return value: a pointer to a newly allocated UCS-4 string.
+ *               This value must be freed with g_free().
+ **/
+static gunichar *
+g_utf8_to_ucs4_fast (const gchar * str, glong len, glong * items_written)
+{
+  gint j, charlen;
+  gunichar *result;
+  gint n_chars, i;
+  const gchar *p;
+
+  g_return_val_if_fail (str != NULL, NULL);
+
+  p = str;
+  n_chars = 0;
+  if (len < 0)
+    {
+      while (*p)
+       {
+         p = g_utf8_next_char (p);
+         ++n_chars;
+       }
+    }
+  else
+    {
+      while (p < str + len && *p)
+       {
+         p = g_utf8_next_char (p);
+         ++n_chars;
+       }
+    }
+
+  result = g_new (gunichar, n_chars + 1);
+  if (!result)
+    return NULL;
+
+  p = str;
+  for (i = 0; i < n_chars; i++)
+    {
+      gunichar wc = ((const unsigned char *) p)[0];
+
+      if (wc < 0x80)
+       {
+         result[i] = wc;
+         p++;
+       }
+      else
+       {
+         if (wc < 0xe0)
+           {
+             charlen = 2;
+             wc &= 0x1f;
+           }
+         else if (wc < 0xf0)
+           {
+             charlen = 3;
+             wc &= 0x0f;
+           }
+         else if (wc < 0xf8)
+           {
+             charlen = 4;
+             wc &= 0x07;
+           }
+         else if (wc < 0xfc)
+           {
+             charlen = 5;
+             wc &= 0x03;
+           }
+         else
+           {
+             charlen = 6;
+             wc &= 0x01;
+           }
+
+         for (j = 1; j < charlen; j++)
+           {
+             wc <<= 6;
+             wc |= ((const unsigned char *) p)[j] & 0x3f;
+           }
+
+         result[i] = wc;
+         p += charlen;
+       }
+    }
+  result[i] = 0;
+
+  if (items_written)
+    *items_written = i;
+
+  return result;
+}
+
+/*
+ * g_ucs4_to_utf8:
+ * @str: a UCS-4 encoded string
+ * @len: the maximum length of @str to use. If @len < 0, then
+ *       the string is terminated with a 0 character.
+ * @items_read: location to store number of characters read read, or %NULL.
+ * @items_written: location to store number of bytes written or %NULL.
+ *                 The value here stored does not include the trailing 0
+ *                 byte.
+ * @error: location to store the error occuring, or %NULL to ignore
+ *         errors. Any of the errors in #GConvertError other than
+ *         %G_CONVERT_ERROR_NO_CONVERSION may occur.
+ *
+ * Convert a string from a 32-bit fixed width representation as UCS-4.
+ * to UTF-8. The result will be terminated with a 0 byte.
+ *
+ * Return value: a pointer to a newly allocated UTF-8 string.
+ *               This value must be freed with g_free(). If an
+ *               error occurs, %NULL will be returned and
+ *               @error set.
+ **/
+static gchar *
+g_ucs4_to_utf8 (const gunichar * str,
+               glong len,
+               glong * items_read, glong * items_written)
+{
+  gint result_length;
+  gchar *result = NULL;
+  gchar *p;
+  gint i;
+
+  result_length = 0;
+  for (i = 0; len < 0 || i < len; i++)
+    {
+      if (!str[i])
+       break;
+
+      if (str[i] >= 0x80000000)
+       {
+         if (items_read)
+           *items_read = i;
+
+         goto err_out;
+       }
+
+      result_length += UTF8_LENGTH (str[i]);
+    }
+
+  result = g_malloc (result_length + 1);
+  if (!result)
+    return NULL;
+  p = result;
+
+  i = 0;
+  while (p < result + result_length)
+    p += g_unichar_to_utf8 (str[i++], p);
+
+  *p = '\0';
+
+  if (items_written)
+    *items_written = p - result;
+
+err_out:
+  if (items_read)
+    *items_read = i;
+
+  return result;
+}
+
+/* Code from GLIB gunidecomp.c starts here. */
+
+#include "gunidecomp.h"
+#include "gunicomp.h"
+
+#define CC_PART1(Page, Char) \
+  ((combining_class_table_part1[Page] >= G_UNICODE_MAX_TABLE_INDEX) \
+   ? (combining_class_table_part1[Page] - G_UNICODE_MAX_TABLE_INDEX) \
+   : (cclass_data[combining_class_table_part1[Page]][Char]))
+
+#define CC_PART2(Page, Char) \
+  ((combining_class_table_part2[Page] >= G_UNICODE_MAX_TABLE_INDEX) \
+   ? (combining_class_table_part2[Page] - G_UNICODE_MAX_TABLE_INDEX) \
+   : (cclass_data[combining_class_table_part2[Page]][Char]))
+
+#define COMBINING_CLASS(Char) \
+  (((Char) <= G_UNICODE_LAST_CHAR_PART1) \
+   ? CC_PART1 ((Char) >> 8, (Char) & 0xff) \
+   : (((Char) >= 0xe0000 && (Char) <= G_UNICODE_LAST_CHAR) \
+      ? CC_PART2 (((Char) - 0xe0000) >> 8, (Char) & 0xff) \
+      : 0))
+
+/* constants for hangul syllable [de]composition */
+#define SBase 0xAC00
+#define LBase 0x1100
+#define VBase 0x1161
+#define TBase 0x11A7
+#define LCount 19
+#define VCount 21
+#define TCount 28
+#define NCount (VCount * TCount)
+#define SCount (LCount * NCount)
+
+/*
+ * g_unicode_canonical_ordering:
+ * @string: a UCS-4 encoded string.
+ * @len: the maximum length of @string to use.
+ *
+ * Computes the canonical ordering of a string in-place.
+ * This rearranges decomposed characters in the string
+ * according to their combining classes.  See the Unicode
+ * manual for more information.
+ **/
+static void
+g_unicode_canonical_ordering (gunichar * string, gsize len)
+{
+  gsize i;
+  int swap = 1;
+
+  while (swap)
+    {
+      int last;
+      swap = 0;
+      last = COMBINING_CLASS (string[0]);
+      for (i = 0; i < len - 1; ++i)
+       {
+         int next = COMBINING_CLASS (string[i + 1]);
+         if (next != 0 && last > next)
+           {
+             gsize j;
+             /* Percolate item leftward through string.  */
+             for (j = i + 1; j > 0; --j)
+               {
+                 gunichar t;
+                 if (COMBINING_CLASS (string[j - 1]) <= next)
+                   break;
+                 t = string[j];
+                 string[j] = string[j - 1];
+                 string[j - 1] = t;
+                 swap = 1;
+               }
+             /* We're re-entering the loop looking at the old
+                character again.  */
+             next = last;
+           }
+         last = next;
+       }
+    }
+}
+
+/* http://www.unicode.org/unicode/reports/tr15/#Hangul
+ * r should be null or have sufficient space. Calling with r == NULL will
+ * only calculate the result_len; however, a buffer with space for three
+ * characters will always be big enough. */
+static void
+decompose_hangul (gunichar s, gunichar * r, gsize * result_len)
+{
+  gint SIndex = s - SBase;
+
+  /* not a hangul syllable */
+  if (SIndex < 0 || SIndex >= SCount)
+    {
+      if (r)
+       r[0] = s;
+      *result_len = 1;
+    }
+  else
+    {
+      gunichar L = LBase + SIndex / NCount;
+      gunichar V = VBase + (SIndex % NCount) / TCount;
+      gunichar T = TBase + SIndex % TCount;
+
+      if (r)
+       {
+         r[0] = L;
+         r[1] = V;
+       }
+
+      if (T != TBase)
+       {
+         if (r)
+           r[2] = T;
+         *result_len = 3;
+       }
+      else
+       *result_len = 2;
+    }
+}
+
+/* returns a pointer to a null-terminated UTF-8 string */
+static const gchar *
+find_decomposition (gunichar ch, gboolean compat)
+{
+  int start = 0;
+  int end = G_N_ELEMENTS (decomp_table);
+
+  if (ch >= decomp_table[start].ch && ch <= decomp_table[end - 1].ch)
+    {
+      while (TRUE)
+       {
+         int half = (start + end) / 2;
+         if (ch == decomp_table[half].ch)
+           {
+             int offset;
+
+             if (compat)
+               {
+                 offset = decomp_table[half].compat_offset;
+                 if (offset == G_UNICODE_NOT_PRESENT_OFFSET)
+                   offset = decomp_table[half].canon_offset;
+               }
+             else
+               {
+                 offset = decomp_table[half].canon_offset;
+                 if (offset == G_UNICODE_NOT_PRESENT_OFFSET)
+                   return NULL;
+               }
+
+             return &(decomp_expansion_string[offset]);
+           }
+         else if (half == start)
+           break;
+         else if (ch > decomp_table[half].ch)
+           start = half;
+         else
+           end = half;
+       }
+    }
+
+  return NULL;
+}
+
+/* L,V => LV and LV,T => LVT  */
+static gboolean
+combine_hangul (gunichar a, gunichar b, gunichar * result)
+{
+  gint LIndex = a - LBase;
+  gint SIndex = a - SBase;
+
+  gint VIndex = b - VBase;
+  gint TIndex = b - TBase;
+
+  if (0 <= LIndex && LIndex < LCount && 0 <= VIndex && VIndex < VCount)
+    {
+      *result = SBase + (LIndex * VCount + VIndex) * TCount;
+      return TRUE;
+    }
+  else if (0 <= SIndex && SIndex < SCount && (SIndex % TCount) == 0
+          && 0 <= TIndex && TIndex <= TCount)
+    {
+      *result = a + TIndex;
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
+#define CI(Page, Char) \
+  ((compose_table[Page] >= G_UNICODE_MAX_TABLE_INDEX) \
+   ? (compose_table[Page] - G_UNICODE_MAX_TABLE_INDEX) \
+   : (compose_data[compose_table[Page]][Char]))
+
+#define COMPOSE_INDEX(Char) \
+     ((((Char) >> 8) > (COMPOSE_TABLE_LAST)) ? 0 : CI((Char) >> 8, (Char) & 0xff))
+
+static gboolean
+combine (gunichar a, gunichar b, gunichar * result)
+{
+  gushort index_a, index_b;
+
+  if (combine_hangul (a, b, result))
+    return TRUE;
+
+  index_a = COMPOSE_INDEX (a);
+
+  if (index_a >= COMPOSE_FIRST_SINGLE_START && index_a < COMPOSE_SECOND_START)
+    {
+      if (b == compose_first_single[index_a - COMPOSE_FIRST_SINGLE_START][0])
+       {
+         *result =
+           compose_first_single[index_a - COMPOSE_FIRST_SINGLE_START][1];
+         return TRUE;
+       }
+      else
+       return FALSE;
+    }
+
+  index_b = COMPOSE_INDEX (b);
+
+  if (index_b >= COMPOSE_SECOND_SINGLE_START)
+    {
+      if (a ==
+         compose_second_single[index_b - COMPOSE_SECOND_SINGLE_START][0])
+       {
+         *result =
+           compose_second_single[index_b - COMPOSE_SECOND_SINGLE_START][1];
+         return TRUE;
+       }
+      else
+       return FALSE;
+    }
+
+  if (index_a >= COMPOSE_FIRST_START && index_a < COMPOSE_FIRST_SINGLE_START
+      && index_b >= COMPOSE_SECOND_START
+      && index_b < COMPOSE_SECOND_SINGLE_START)
+    {
+      gunichar res =
+       compose_array[index_a - COMPOSE_FIRST_START][index_b -
+                                                    COMPOSE_SECOND_START];
+
+      if (res)
+       {
+         *result = res;
+         return TRUE;
+       }
+    }
+
+  return FALSE;
+}
+
+static gunichar *
+_g_utf8_normalize_wc (const gchar * str, gssize max_len, GNormalizeMode mode)
+{
+  gsize n_wc;
+  gunichar *wc_buffer;
+  const char *p;
+  gsize last_start;
+  gboolean do_compat = (mode == G_NORMALIZE_NFKC || mode == G_NORMALIZE_NFKD);
+  gboolean do_compose = (mode == G_NORMALIZE_NFC || mode == G_NORMALIZE_NFKC);
+
+  n_wc = 0;
+  p = str;
+  while ((max_len < 0 || p < str + max_len) && *p)
+    {
+      const gchar *decomp;
+      gunichar wc = g_utf8_get_char (p);
+
+      if (wc >= 0xac00 && wc <= 0xd7af)
+       {
+         gsize result_len;
+         decompose_hangul (wc, NULL, &result_len);
+         n_wc += result_len;
+       }
+      else
+       {
+         decomp = find_decomposition (wc, do_compat);
+
+         if (decomp)
+           n_wc += g_utf8_strlen (decomp, -1);
+         else
+           n_wc++;
+       }
+
+      p = g_utf8_next_char (p);
+    }
+
+  wc_buffer = g_new (gunichar, n_wc + 1);
+  if (!wc_buffer)
+    return NULL;
+
+  last_start = 0;
+  n_wc = 0;
+  p = str;
+  while ((max_len < 0 || p < str + max_len) && *p)
+    {
+      gunichar wc = g_utf8_get_char (p);
+      const gchar *decomp;
+      int cc;
+      gsize old_n_wc = n_wc;
+
+      if (wc >= 0xac00 && wc <= 0xd7af)
+       {
+         gsize result_len;
+         decompose_hangul (wc, wc_buffer + n_wc, &result_len);
+         n_wc += result_len;
+       }
+      else
+       {
+         decomp = find_decomposition (wc, do_compat);
+
+         if (decomp)
+           {
+             const char *pd;
+             for (pd = decomp; *pd != '\0'; pd = g_utf8_next_char (pd))
+               wc_buffer[n_wc++] = g_utf8_get_char (pd);
+           }
+         else
+           wc_buffer[n_wc++] = wc;
+       }
+
+      if (n_wc > 0)
+       {
+         cc = COMBINING_CLASS (wc_buffer[old_n_wc]);
+
+         if (cc == 0)
+           {
+             g_unicode_canonical_ordering (wc_buffer + last_start,
+                                           n_wc - last_start);
+             last_start = old_n_wc;
+           }
+       }
+
+      p = g_utf8_next_char (p);
+    }
+
+  if (n_wc > 0)
+    {
+      g_unicode_canonical_ordering (wc_buffer + last_start,
+                                   n_wc - last_start);
+      last_start = n_wc;
+    }
+
+  wc_buffer[n_wc] = 0;
+
+  /* All decomposed and reordered */
+
+  if (do_compose && n_wc > 0)
+    {
+      gsize i, j;
+      int last_cc = 0;
+      last_start = 0;
+
+      for (i = 0; i < n_wc; i++)
+       {
+         int cc = COMBINING_CLASS (wc_buffer[i]);
+
+         if (i > 0 &&
+             (last_cc == 0 || last_cc != cc) &&
+             combine (wc_buffer[last_start], wc_buffer[i],
+                      &wc_buffer[last_start]))
+           {
+             for (j = i + 1; j < n_wc; j++)
+               wc_buffer[j - 1] = wc_buffer[j];
+             n_wc--;
+             i--;
+
+             if (i == last_start)
+               last_cc = 0;
+             else
+               last_cc = COMBINING_CLASS (wc_buffer[i - 1]);
+
+             continue;
+           }
+
+         if (cc == 0)
+           last_start = i;
+
+         last_cc = cc;
+       }
+    }
+
+  wc_buffer[n_wc] = 0;
+
+  return wc_buffer;
+}
+
+/*
+ * g_utf8_normalize:
+ * @str: a UTF-8 encoded string.
+ * @len: length of @str, in bytes, or -1 if @str is nul-terminated.
+ * @mode: the type of normalization to perform.
+ *
+ * Converts a string into canonical form, standardizing
+ * such issues as whether a character with an accent
+ * is represented as a base character and combining
+ * accent or as a single precomposed character. You
+ * should generally call g_utf8_normalize() before
+ * comparing two Unicode strings.
+ *
+ * The normalization mode %G_NORMALIZE_DEFAULT only
+ * standardizes differences that do not affect the
+ * text content, such as the above-mentioned accent
+ * representation. %G_NORMALIZE_ALL also standardizes
+ * the "compatibility" characters in Unicode, such
+ * as SUPERSCRIPT THREE to the standard forms
+ * (in this case DIGIT THREE). Formatting information
+ * may be lost but for most text operations such
+ * characters should be considered the same.
+ * For example, g_utf8_collate() normalizes
+ * with %G_NORMALIZE_ALL as its first step.
+ *
+ * %G_NORMALIZE_DEFAULT_COMPOSE and %G_NORMALIZE_ALL_COMPOSE
+ * are like %G_NORMALIZE_DEFAULT and %G_NORMALIZE_ALL,
+ * but returned a result with composed forms rather
+ * than a maximally decomposed form. This is often
+ * useful if you intend to convert the string to
+ * a legacy encoding or pass it to a system with
+ * less capable Unicode handling.
+ *
+ * Return value: a newly allocated string, that is the
+ *   normalized form of @str.
+ **/
+static gchar *
+g_utf8_normalize (const gchar * str, gssize len, GNormalizeMode mode)
+{
+  gunichar *result_wc = _g_utf8_normalize_wc (str, len, mode);
+  gchar *result;
+
+  result = g_ucs4_to_utf8 (result_wc, -1, NULL, NULL);
+  g_free (result_wc);
+
+  return result;
+}
+
+/* Public Libidn API starts here. */
+
+/**
+ * stringprep_utf8_to_unichar - convert UTF-8 to Unicode code point
+ * @p: a pointer to Unicode character encoded as UTF-8
+ *
+ * Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
+ * If @p does not point to a valid UTF-8 encoded character, results are
+ * undefined.
+ *
+ * Return value: the resulting character.
+ **/
+uint32_t
+stringprep_utf8_to_unichar (const char *p)
+{
+  return g_utf8_get_char (p);
+}
+
+/**
+ * stringprep_unichar_to_utf8 - convert Unicode code point to UTF-8
+ * @c: a ISO10646 character code
+ * @outbuf: output buffer, must have at least 6 bytes of space.
+ *       If %NULL, the length will be computed and returned
+ *       and nothing will be written to @outbuf.
+ *
+ * Converts a single character to UTF-8.
+ *
+ * Return value: number of bytes written.
+ **/
+int
+stringprep_unichar_to_utf8 (uint32_t c, char *outbuf)
+{
+  return g_unichar_to_utf8 (c, outbuf);
+}
+
+/**
+ * stringprep_utf8_to_ucs4 - convert UTF-8 string to UCS-4
+ * @str: a UTF-8 encoded string
+ * @len: the maximum length of @str to use. If @len < 0, then
+ *       the string is nul-terminated.
+ * @items_written: location to store the number of characters in the
+ *                 result, or %NULL.
+ *
+ * Convert a string from UTF-8 to a 32-bit fixed width
+ * representation as UCS-4, assuming valid UTF-8 input.
+ * This function does no error checking on the input.
+ *
+ * Return value: a pointer to a newly allocated UCS-4 string.
+ *               This value must be deallocated by the caller.
+ **/
+uint32_t *
+stringprep_utf8_to_ucs4 (const char *str, ssize_t len, size_t * items_written)
+{
+  return g_utf8_to_ucs4_fast (str, (glong) len, (glong *) items_written);
+}
+
+/**
+ * stringprep_ucs4_to_utf8 - convert UCS-4 string to UTF-8
+ * @str: a UCS-4 encoded string
+ * @len: the maximum length of @str to use. If @len < 0, then
+ *       the string is terminated with a 0 character.
+ * @items_read: location to store number of characters read read, or %NULL.
+ * @items_written: location to store number of bytes written or %NULL.
+ *                 The value here stored does not include the trailing 0
+ *                 byte.
+ *
+ * Convert a string from a 32-bit fixed width representation as UCS-4.
+ * to UTF-8. The result will be terminated with a 0 byte.
+ *
+ * Return value: a pointer to a newly allocated UTF-8 string.
+ *               This value must be deallocated by the caller.
+ *               If an error occurs, %NULL will be returned and @error
+ *               set.
+ **/
+char *
+stringprep_ucs4_to_utf8 (const uint32_t * str, ssize_t len,
+                        size_t * items_read, size_t * items_written)
+{
+  return g_ucs4_to_utf8 (str, len, (glong *) items_read,
+                        (glong *) items_written);
+}
+
+/**
+ * stringprep_utf8_nfkc_normalize - normalize Unicode string
+ * @str: a UTF-8 encoded string.
+ * @len: length of @str, in bytes, or -1 if @str is nul-terminated.
+ *
+ * Converts a string into canonical form, standardizing
+ * such issues as whether a character with an accent
+ * is represented as a base character and combining
+ * accent or as a single precomposed character.
+ *
+ * The normalization mode is NFKC (ALL COMPOSE).  It standardizes
+ * differences that do not affect the text content, such as the
+ * above-mentioned accent representation. It standardizes the
+ * "compatibility" characters in Unicode, such as SUPERSCRIPT THREE to
+ * the standard forms (in this case DIGIT THREE). Formatting
+ * information may be lost but for most text operations such
+ * characters should be considered the same. It returns a result with
+ * composed forms rather than a maximally decomposed form.
+ *
+ * Return value: a newly allocated string, that is the
+ *   NFKC normalized form of @str.
+ **/
+char *
+stringprep_utf8_nfkc_normalize (const char *str, ssize_t len)
+{
+  return g_utf8_normalize (str, len, G_NORMALIZE_NFKC);
+}
+
+/**
+ * stringprep_ucs4_nfkc_normalize - normalize Unicode string
+ * @str: a Unicode string.
+ * @len: length of @str array, or -1 if @str is nul-terminated.
+ *
+ * Converts UCS4 string into UTF-8 and runs
+ * stringprep_utf8_nfkc_normalize().
+ *
+ * Return value: a newly allocated Unicode string, that is the NFKC
+ *   normalized form of @str.
+ **/
+uint32_t *
+stringprep_ucs4_nfkc_normalize (uint32_t * str, ssize_t len)
+{
+  char *p;
+  uint32_t *result_wc;
+
+  p = stringprep_ucs4_to_utf8 (str, len, 0, 0);
+  result_wc = _g_utf8_normalize_wc (p, -1, G_NORMALIZE_NFKC);
+  free (p);
+
+  return result_wc;
+}
diff --git a/lib/pr29.c b/lib/pr29.c
new file mode 100644 (file)
index 0000000..c932e48
--- /dev/null
@@ -0,0 +1,1332 @@
+/* pr29.h --- Detect strings that are non-idempotent under NFKC in Unicode 3.2.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson.
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#include <config.h>
+
+#include "pr29.h"
+
+/* Get stringprep_utf8_to_ucs4. */
+#include <stringprep.h>
+
+/*
+ * The tables used in this file was extracted by Simon Josefsson from
+ * pr-29.html and DerivedCombiningClass-3.2.0.txt, as published by
+ * Unicode Inc., for the GNU Libidn project.
+ *
+ */
+
+/* These are the characters with non-zero combination class, extracted
+   from DerivedCombiningClass-3.2.0.txt. */
+static uint32_t nzcc[] = {
+  /* 1 # Mn   [5] COMBINING TILDE OVERLAY..
+   *                    ..COMBINING LONG SOLIDUS OVERLAY */
+  0x0334,
+  0x0335,
+  0x0336,
+  0x0337,
+  0x0338,
+  /* 1 # Mn   [2] COMBINING LONG VERTICAL LINE OVERLAY..
+   *                    ..COMBINING SHORT VERTICAL LINE OVERLAY */
+  0x20D2,
+  0x20D3,
+  /* 1 # Mn   [3] COMBINING RING OVERLAY..
+   *                    ..COMBINING ANTICLOCKWISE RING OVERLAY */
+  0x20D8,
+  0x20D9,
+  0x20DA,
+  /* 1 # Mn   [2] COMBINING REVERSE SOLIDUS OVERLAY..
+   *                    ..COMBINING DOUBLE VERTICAL STROKE OVERLAY */
+  0x20E5,
+  0x20E6,
+  /* 1 # Mn       COMBINING LEFTWARDS ARROW OVERLAY */
+  0x20EA,
+  /* 1 # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..
+   *                    ..MUSICAL SYMBOL COMBINING TREMOLO-3 */
+  0x1D167,
+  0x1D168,
+  0x1D169,
+  /* 7 # Mn       DEVANAGARI SIGN NUKTA */
+  0x093C,
+  /* 7 # Mn       BENGALI SIGN NUKTA */
+  0x09BC,
+  /* 7 # Mn       GURMUKHI SIGN NUKTA */
+  0x0A3C,
+  /* 7 # Mn       GUJARATI SIGN NUKTA */
+  0x0ABC,
+  /* 7 # Mn       ORIYA SIGN NUKTA */
+  0x0B3C,
+  /* 7 # Mn       MYANMAR SIGN DOT BELOW */
+  0x1037,
+  /* 8 # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..
+   *                    ..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+  0x3099,
+  0x309A,
+  /* 9 # Mn       DEVANAGARI SIGN VIRAMA */
+  0x094D,
+  /* 9 # Mn       BENGALI SIGN VIRAMA */
+  0x09CD,
+  /* 9 # Mn       GURMUKHI SIGN VIRAMA */
+  0x0A4D,
+  /* 9 # Mn       GUJARATI SIGN VIRAMA */
+  0x0ACD,
+  /* 9 # Mn       ORIYA SIGN VIRAMA */
+  0x0B4D,
+  /* 9 # Mn       TAMIL SIGN VIRAMA */
+  0x0BCD,
+  /* 9 # Mn       TELUGU SIGN VIRAMA */
+  0x0C4D,
+  /* 9 # Mn       KANNADA SIGN VIRAMA */
+  0x0CCD,
+  /* 9 # Mn       MALAYALAM SIGN VIRAMA */
+  0x0D4D,
+  /* 9 # Mn       SINHALA SIGN AL-LAKUNA */
+  0x0DCA,
+  /* 9 # Mn       THAI CHARACTER PHINTHU */
+  0x0E3A,
+  /* 9 # Mn       TIBETAN MARK HALANTA */
+  0x0F84,
+  /* 9 # Mn       MYANMAR SIGN VIRAMA */
+  0x1039,
+  /* 9 # Mn       TAGALOG SIGN VIRAMA */
+  0x1714,
+  /* 9 # Mn       HANUNOO SIGN PAMUDPOD */
+  0x1734,
+  /* 9 # Mn       KHMER SIGN COENG */
+  0x17D2,
+  /* 10 # Mn       HEBREW POINT SHEVA */
+  0x05B0,
+  /* 11 # Mn       HEBREW POINT HATAF SEGOL */
+  0x05B1,
+  /* 12 # Mn       HEBREW POINT HATAF PATAH */
+  0x05B2,
+  /* 13 # Mn       HEBREW POINT HATAF QAMATS */
+  0x05B3,
+  /* 14 # Mn       HEBREW POINT HIRIQ */
+  0x05B4,
+  /* 15 # Mn       HEBREW POINT TSERE */
+  0x05B5,
+  /* 16 # Mn       HEBREW POINT SEGOL */
+  0x05B6,
+  /* 17 # Mn       HEBREW POINT PATAH */
+  0x05B7,
+  /* 18 # Mn       HEBREW POINT QAMATS */
+  0x05B8,
+  /* 19 # Mn       HEBREW POINT HOLAM */
+  0x05B9,
+  /* 20 # Mn       HEBREW POINT QUBUTS */
+  0x05BB,
+  /* 21 # Mn       HEBREW POINT DAGESH OR MAPIQ */
+  0x05BC,
+  /* 22 # Mn       HEBREW POINT METEG */
+  0x05BD,
+  /* 23 # Mn       HEBREW POINT RAFE */
+  0x05BF,
+  /* 24 # Mn       HEBREW POINT SHIN DOT */
+  0x05C1,
+  /* 25 # Mn       HEBREW POINT SIN DOT */
+  0x05C2,
+  /* 26 # Mn       HEBREW POINT JUDEO-SPANISH VARIKA */
+  0xFB1E,
+  /* 27 # Mn       ARABIC FATHATAN */
+  0x064B,
+  /* 28 # Mn       ARABIC DAMMATAN */
+  0x064C,
+  /* 29 # Mn       ARABIC KASRATAN */
+  0x064D,
+  /* 30 # Mn       ARABIC FATHA */
+  0x064E,
+  /* 31 # Mn       ARABIC DAMMA */
+  0x064F,
+  /* 32 # Mn       ARABIC KASRA */
+  0x0650,
+  /* 33 # Mn       ARABIC SHADDA */
+  0x0651,
+  /* 34 # Mn       ARABIC SUKUN */
+  0x0652,
+  /* 35 # Mn       ARABIC LETTER SUPERSCRIPT ALEF */
+  0x0670,
+  /* 36 # Mn       SYRIAC LETTER SUPERSCRIPT ALAPH */
+  0x0711,
+  /* 84 # Mn       TELUGU LENGTH MARK */
+  0x0C55,
+  /* 91 # Mn       TELUGU AI LENGTH MARK */
+  0x0C56,
+  /* 103 # Mn   [2] THAI CHARACTER SARA U..
+   *                    ..THAI CHARACTER SARA UU */
+  0x0E38,
+  0x0E39,
+  /* 107 # Mn   [4] THAI CHARACTER MAI EK..
+   *                    ..THAI CHARACTER MAI CHATTAWA */
+  0x0E48,
+  0x0E49,
+  0x0E4A,
+  0x04EB,
+  /* 118 # Mn   [2] LAO VOWEL SIGN U..
+   *                    ..LAO VOWEL SIGN UU */
+  0x0EB8,
+  0x0EB9,
+  /* 122 # Mn   [4] LAO TONE MAI EK..
+   *                    ..LAO TONE MAI CATAWA */
+  0x0EC8,
+  0x0EC9,
+  0x0ECA,
+  0x0ECB,
+  /* 129 # Mn       TIBETAN VOWEL SIGN AA */
+  0x0F71,
+  /* 130 # Mn       TIBETAN VOWEL SIGN I */
+  0x0F72,
+  /* 130 # Mn   [4] TIBETAN VOWEL SIGN E..
+   *                    ..TIBETAN VOWEL SIGN OO */
+  0x0F7A,
+  0x0F7B,
+  0x0F7C,
+  0x0F7D,
+  /* 130 # Mn       TIBETAN VOWEL SIGN REVERSED I */
+  0x0F80,
+  /* 132 # Mn       TIBETAN VOWEL SIGN U */
+  0x0F74,
+  /* 202 # Mn   [2] COMBINING PALATALIZED HOOK BELOW..
+   *                    ..COMBINING RETROFLEX HOOK BELOW */
+  0x0321,
+  0x0322,
+  /* 202 # Mn   [2] COMBINING CEDILLA..
+   *                    ..COMBINING OGONEK */
+  0x0327,
+  0x0328,
+  /* 216 # Mn       COMBINING HORN */
+  0x031B,
+  /* 216 # Mn       TIBETAN MARK TSA -PHRU */
+  0x0F39,
+  /* 216 # Mc   [2] MUSICAL SYMBOL COMBINING STEM..
+   *                    ..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM */
+  0x1D165,
+  0x1D166,
+  /* 216 # Mc   [5] MUSICAL SYMBOL COMBINING FLAG-1..
+   *                    ..MUSICAL SYMBOL COMBINING FLAG-5 */
+  0x1D16E,
+  0x1D16F,
+  0x1D170,
+  0x1D171,
+  0x1D172,
+  /* 218 # Mn       IDEOGRAPHIC LEVEL TONE MARK */
+  0x302A,
+  /* 220 # Mn   [4] COMBINING GRAVE ACCENT BELOW..
+   *                    ..COMBINING RIGHT TACK BELOW */
+  0x0316,
+  0x0317,
+  0x0318,
+  0x0319,
+  /* 220 # Mn   [5] COMBINING LEFT HALF RING BELOW..
+   *                    ..COMBINING MINUS SIGN BELOW */
+  0x031C,
+  0x031D,
+  0x031E,
+  0x031F,
+  0x0320,
+  /* 220 # Mn   [4] COMBINING DOT BELOW..
+   *                    ..COMBINING COMMA BELOW */
+  0x0323,
+  0x0324,
+  0x0325,
+  0x0326,
+  /* 220 # Mn  [11] COMBINING VERTICAL LINE BELOW..
+   *                    ..COMBINING DOUBLE LOW LINE */
+  0x0329,
+  0x032A,
+  0x032B,
+  0x032C,
+  0x032D,
+  0x032E,
+  0x032F,
+  0x0330,
+  0x0331,
+  0x0332,
+  0x0333,
+  /* 220 # Mn   [4] COMBINING RIGHT HALF RING BELOW..
+   *                    ..COMBINING SEAGULL BELOW */
+  0x0339,
+  0x033A,
+  0x033B,
+  0x033C,
+  /* 220 # Mn   [3] COMBINING EQUALS SIGN BELOW..
+   *                    ..COMBINING LEFT ANGLE BELOW */
+  0x0347,
+  0x0348,
+  0x0349,
+  /* 220 # Mn   [2] COMBINING LEFT RIGHT ARROW BELOW..
+   *                    ..COMBINING UPWARDS ARROW BELOW */
+  0x034D,
+  0x034E,
+  /* 220 # Mn       HEBREW ACCENT ETNAHTA */
+  0x0591,
+  /* 220 # Mn       HEBREW ACCENT TIPEHA */
+  0x0596,
+  /* 220 # Mn       HEBREW ACCENT TEVIR */
+  0x059B,
+  /* 220 # Mn   [5] HEBREW ACCENT MUNAH..
+   *                    ..HEBREW ACCENT DARGA */
+  0x05A3,
+  0x05A4,
+  0x05A5,
+  0x05A6,
+  0x05A7,
+  /* 220 # Mn       HEBREW ACCENT YERAH BEN YOMO */
+  0x05AA,
+  /* 220 # Mn       ARABIC HAMZA BELOW */
+  0x0655,
+  /* 220 # Mn       ARABIC SMALL LOW SEEN */
+  0x06E3,
+  /* 220 # Mn       ARABIC EMPTY CENTRE LOW STOP */
+  0x06EA,
+  /* 220 # Mn       ARABIC SMALL LOW MEEM */
+  0x06ED,
+  /* 220 # Mn       SYRIAC PTHAHA BELOW */
+  0x0731,
+  /* 220 # Mn       SYRIAC ZQAPHA BELOW */
+  0x0734,
+  /* 220 # Mn   [3] SYRIAC RBASA BELOW..
+   *                    ..SYRIAC DOTTED ZLAMA ANGULAR */
+  0x0737,
+  0x0738,
+  0x0739,
+  /* 220 # Mn   [2] SYRIAC HBASA BELOW..
+   *                    ..SYRIAC HBASA-ESASA DOTTED */
+  0x073B,
+  0x073C,
+  /* 220 # Mn       SYRIAC ESASA BELOW */
+  0x073E,
+  /* 220 # Mn       SYRIAC RUKKAKHA */
+  0x0742,
+  /* 220 # Mn       SYRIAC TWO VERTICAL DOTS BELOW */
+  0x0744,
+  /* 220 # Mn       SYRIAC THREE DOTS BELOW */
+  0x0746,
+  /* 220 # Mn       SYRIAC OBLIQUE LINE BELOW */
+  0x0748,
+  /* 220 # Mn       DEVANAGARI STRESS SIGN ANUDATTA */
+  0x0952,
+  /* 220 # Mn   [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..
+   *                    ..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS */
+  0x0F18,
+  0x0F19,
+  /* 220 # Mn       TIBETAN MARK NGAS BZUNG NYI ZLA */
+  0x0F35,
+  /* 220 # Mn       TIBETAN MARK NGAS BZUNG SGOR RTAGS */
+  0x0F37,
+  /* 220 # Mn       TIBETAN SYMBOL PADMA GDAN */
+  0x0FC6,
+  /* 220 # Mn       COMBINING TRIPLE UNDERDOT */
+  0x20E8,
+  /* 220 # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..
+   *                    ..MUSICAL SYMBOL COMBINING LOURE */
+  0x1D17B,
+  0x1D17C,
+  0x1D17D,
+  0x1D17E,
+  0x1D17F,
+  0x1D180,
+  0x1D181,
+  0x1D182,
+  /* 220 # Mn   [2] MUSICAL SYMBOL COMBINING DOUBLE TONGUE..
+   *                    ..MUSICAL SYMBOL COMBINING TRIPLE TONGUE */
+  0x1D18A,
+  0x1D18B,
+  /* 222 # Mn       HEBREW ACCENT YETIV */
+  0x059A,
+  /* 222 # Mn       HEBREW ACCENT DEHI */
+  0x05AD,
+  /* 222 # Mn       IDEOGRAPHIC ENTERING TONE MARK */
+  0x302D,
+  /* 224 # Mn   [2] HANGUL SINGLE DOT TONE MARK..
+   *                    ..HANGUL DOUBLE DOT TONE MARK */
+  0x302E,
+  0x302F,
+  /* 226 # Mc       MUSICAL SYMBOL COMBINING AUGMENTATION DOT */
+  0x1D16D,
+  /* 228 # Mn       HEBREW ACCENT ZINOR */
+  0x05AE,
+  /* 228 # Mn       MONGOLIAN LETTER ALI GALI DAGALGA */
+  0x18A9,
+  /* 228 # Mn       IDEOGRAPHIC RISING TONE MARK */
+  0x302B,
+  /* 230 # Mn  [21] COMBINING GRAVE ACCENT..
+   *                    ..COMBINING REVERSED COMMA ABOVE */
+  0x0300,
+  0x0301,
+  0x0302,
+  0x0303,
+  0x0304,
+  0x0305,
+  0x0306,
+  0x0307,
+  0x0308,
+  0x0309,
+  0x030A,
+  0x030B,
+  0x030C,
+  0x030D,
+  0x030E,
+  0x030F,
+  0x0310,
+  0x0311,
+  0x0312,
+  0x0313,
+  0x0314,
+  /* 230 # Mn   [8] COMBINING X ABOVE..
+   *                    ..COMBINING GREEK DIALYTIKA TONOS */
+  0x033D,
+  0x033E,
+  0x033F,
+  0x0340,
+  0x0341,
+  0x0342,
+  0x0343,
+  0x0344,
+  /* 230 # Mn       COMBINING BRIDGE ABOVE */
+  0x0346,
+  /* 230 # Mn   [3] COMBINING NOT TILDE ABOVE..
+   *                    ..COMBINING ALMOST EQUAL TO ABOVE */
+  0x034A,
+  0x034B,
+  0x034C,
+  /* 230 # Mn  [13] COMBINING LATIN SMALL LETTER A..
+   *                    ..COMBINING LATIN SMALL LETTER X */
+  0x0363,
+  0x0364,
+  0x0365,
+  0x0366,
+  0x0367,
+  0x0368,
+  0x0369,
+  0x036A,
+  0x036B,
+  0x036C,
+  0x036D,
+  0x036E,
+  0x036F,
+  /* 230 # Mn   [4] COMBINING CYRILLIC TITLO..
+   *                    ..COMBINING CYRILLIC PSILI PNEUMATA */
+  0x0483,
+  0x0484,
+  0x0485,
+  0x0486,
+  /* 230 # Mn   [4] HEBREW ACCENT SEGOL..
+   *                    ..HEBREW ACCENT ZAQEF GADOL */
+  0x0592,
+  0x0593,
+  0x0594,
+  0x0595,
+  /* 230 # Mn   [3] HEBREW ACCENT REVIA..
+   *                    ..HEBREW ACCENT PASHTA */
+  0x0597,
+  0x0598,
+  0x0599,
+  /* 230 # Mn   [6] HEBREW ACCENT GERESH..
+   *                    ..HEBREW ACCENT PAZER */
+  0x059C,
+  0x059D,
+  0x059E,
+  0x059F,
+  0x05A0,
+  0x05A1,
+  /* 230 # Mn   [2] HEBREW ACCENT QADMA..
+   *                    ..HEBREW ACCENT TELISHA QETANA */
+  0x05A8,
+  0x05A9,
+  /* 230 # Mn   [2] HEBREW ACCENT OLE..
+   *                    ..HEBREW ACCENT ILUY */
+  0x05AB,
+  0x05AC,
+  /* 230 # Mn       HEBREW MARK MASORA CIRCLE */
+  0x05AF,
+  /* 230 # Mn       HEBREW MARK UPPER DOT */
+  0x05C4,
+  /* 230 # Mn   [2] ARABIC MADDAH ABOVE..
+   *                    ..ARABIC HAMZA ABOVE */
+  0x0653,
+  0x0654,
+  /* 230 # Mn   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..
+   *                    ..ARABIC SMALL HIGH SEEN */
+  0x06D6,
+  0x06D7,
+  0x06D8,
+  0x06D9,
+  0x06DA,
+  0x06DB,
+  0x06DC,
+  /* 230 # Mn   [4] ARABIC SMALL HIGH ROUNDED ZERO..
+   *                    ..ARABIC SMALL HIGH MEEM ISOLATED FORM */
+  0x06DF,
+  0x06E0,
+  0x06E1,
+  0x06E2,
+  /* 230 # Mn       ARABIC SMALL HIGH MADDA */
+  0x06E4,
+  /* 230 # Mn   [2] ARABIC SMALL HIGH YEH..
+   *                    ..ARABIC SMALL HIGH NOON */
+  0x06E7,
+  0x06E8,
+  /* 230 # Mn   [2] ARABIC EMPTY CENTRE HIGH STOP..
+   *                    ..ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE */
+  0x06EB,
+  0x06EC,
+  /* 230 # Mn       SYRIAC PTHAHA ABOVE */
+  0x0730,
+  /* 230 # Mn   [2] SYRIAC PTHAHA DOTTED..
+   *                    ..SYRIAC ZQAPHA ABOVE */
+  0x0732,
+  0x0733,
+  /* 230 # Mn   [2] SYRIAC ZQAPHA DOTTED..
+   *                    ..SYRIAC RBASA ABOVE */
+  0x0735,
+  0x0736,
+  /* 230 # Mn       SYRIAC HBASA ABOVE */
+  0x073A,
+  /* 230 # Mn       SYRIAC ESASA ABOVE */
+  0x073D,
+  /* 230 # Mn   [3] SYRIAC RWAHA..
+   *                    ..SYRIAC QUSHSHAYA */
+  0x073F,
+  0x0740,
+  0x0741,
+  /* 230 # Mn       SYRIAC TWO VERTICAL DOTS ABOVE */
+  0x0743,
+  /* 230 # Mn       SYRIAC THREE DOTS ABOVE */
+  0x0745,
+  /* 230 # Mn       SYRIAC OBLIQUE LINE ABOVE */
+  0x0747,
+  /* 230 # Mn   [2] SYRIAC MUSIC..
+   *                    ..SYRIAC BARREKH */
+  0x0749,
+  0x074A,
+  /* 230 # Mn       DEVANAGARI STRESS SIGN UDATTA */
+  0x0951,
+  /* 230 # Mn   [2] DEVANAGARI GRAVE ACCENT..
+   *                    ..DEVANAGARI ACUTE ACCENT */
+  0x0953,
+  0x0954,
+  /* 230 # Mn   [2] TIBETAN SIGN NYI ZLA NAA DA..
+   *                    ..TIBETAN SIGN SNA LDAN */
+  0x0F82,
+  0x0F83,
+  /* 230 # Mn   [2] TIBETAN SIGN LCI RTAGS..
+   *                    ..TIBETAN SIGN YANG RTAGS */
+  0x0F86,
+  0x0F87,
+  /* 230 # Mn   [2] COMBINING LEFT HARPOON ABOVE..
+   *                    ..COMBINING RIGHT HARPOON ABOVE */
+  0x20D0,
+  0x20D1,
+  /* 230 # Mn   [4] COMBINING ANTICLOCKWISE ARROW ABOVE..
+   *                    ..COMBINING RIGHT ARROW ABOVE */
+  0x20D4,
+  0x20D5,
+  0x20D6,
+  0x20D7,
+  /* 230 # Mn   [2] COMBINING THREE DOTS ABOVE..
+   *                    ..COMBINING FOUR DOTS ABOVE */
+  0x20DB,
+  0x20DC,
+  /* 230 # Mn       COMBINING LEFT RIGHT ARROW ABOVE */
+  0x20E1,
+  /* 230 # Mn       COMBINING ANNUITY SYMBOL */
+  0x20E7,
+  /* 230 # Mn       COMBINING WIDE BRIDGE ABOVE */
+  0x20E9,
+  /* 230 # Mn   [4] COMBINING LIGATURE LEFT HALF..
+   *                    ..COMBINING DOUBLE TILDE RIGHT HALF */
+  0xFE20,
+  0xFE21,
+  0xFE22,
+  0xFE23,
+  /* 230 # Mn   [5] MUSICAL SYMBOL COMBINING DOIT..
+   *                    ..MUSICAL SYMBOL COMBINING BEND */
+  0x1D185,
+  0x1D186,
+  0x1D187,
+  0x1D188,
+  0x1D189,
+  /* 230 # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..
+   *                    ..MUSICAL SYMBOL COMBINING SNAP PIZZICATO */
+  0x1D1AA,
+  0x1D1AB,
+  0x1D1AC,
+  0x1D1AD,
+  /* 232 # Mn       COMBINING COMMA ABOVE RIGHT */
+  0x0315,
+  /* 232 # Mn       COMBINING LEFT ANGLE ABOVE */
+  0x031A,
+  /* 232 # Mn       IDEOGRAPHIC DEPARTING TONE MARK */
+  0x302C,
+  /* 233 # Mn       COMBINING DOUBLE RIGHTWARDS ARROW BELOW */
+  0x0362,
+  /* 234 # Mn   [2] COMBINING DOUBLE TILDE..
+   *                    ..COMBINING DOUBLE INVERTED BREVE */
+  0x0360,
+  0x0361,
+  /* 240 # Mn       COMBINING GREEK YPOGEGRAMMENI */
+  0x0345,
+  0
+};
+
+/*
+ * 09C7 BENGALI VOWEL SIGN E    09BE BENGALI VOWEL SIGN AA or
+ *                              09D7 BENGALI AU LENGTH MARK
+ */
+
+static const uint32_t pr29_1_1[] = {
+  0x09C7, 0
+};
+
+static const uint32_t pr29_1_2[] = {
+  0x09BE, 0x09D7, 0
+};
+
+/*
+ * 0B47 ORIYA VOWEL SIGN E      0B3E ORIYA VOWEL SIGN AA or
+ *                              0B56 ORIYA AI LENGTH MARK or
+ *                              0B57 ORIYA AU LENGTH MARK
+ */
+
+static const uint32_t pr29_2_1[] = {
+  0x0B47, 0
+};
+
+static const uint32_t pr29_2_2[] = {
+  0x0B3E, 0x0B56, 0x0B57, 0
+};
+
+/*
+ * 0BC6 TAMIL VOWEL SIGN E      0BBE TAMIL VOWEL SIGN AA or
+ *                              0BD7 TAMIL AU LENGTH MARK
+ */
+
+static const uint32_t pr29_3_1[] = {
+  0x0BC6, 0
+};
+
+static const uint32_t pr29_3_2[] = {
+  0x0BBE, 0x0BD7, 0
+};
+
+/*
+ * 0BC7 TAMIL VOWEL SIGN EE     0BBE TAMIL VOWEL SIGN AA
+ */
+
+static const uint32_t pr29_4_1[] = {
+  0x0BC7, 0
+};
+
+static const uint32_t pr29_4_2[] = {
+  0x0BBE, 0
+};
+
+/*
+ * 0B92 TAMIL LETTER O          0BD7 TAMIL AU LENGTH MARK
+ */
+
+static const uint32_t pr29_5_1[] = {
+  0x0B92, 0
+};
+
+static const uint32_t pr29_5_2[] = {
+  0x0BD7, 0
+};
+
+/*
+ * 0CC6 KANNADA VOWEL SIGN E    0CC2 KANNADA VOWEL SIGN UU or
+ *                              0CD5 KANNADA LENGTH MARK or
+ *                              0CD6 KANNADA AI LENGTH MARK
+ */
+
+static const uint32_t pr29_6_1[] = {
+  0x0CC6, 0
+};
+
+static const uint32_t pr29_6_2[] = {
+  0x0CC2, 0xCD5, 0xCD6, 0
+};
+
+/*
+ * 0CBF KANNADA VOWEL SIGN I or
+ * 0CCA KANNADA VOWEL SIGN O    0CD5 KANNADA LENGTH MARK
+ */
+
+static const uint32_t pr29_7_1[] = {
+  0x0CBF, 0xCCA, 0
+};
+
+static const uint32_t pr29_7_2[] = {
+  0x0CD5, 0
+};
+
+/*
+ * 0D47 MALAYALAM VOWEL SIGN EE         0D3E MALAYALAM VOWEL SIGN AA
+ */
+
+static const uint32_t pr29_8_1[] = {
+  0x0D47, 0
+};
+
+static const uint32_t pr29_8_2[] = {
+  0x0D3E, 0
+};
+
+/*
+ * 0D46 MALAYALAM VOWEL SIGN E          0D3E MALAYALAM VOWEL SIGN AA or
+ *                                      0D57 MALAYALAM AU LENGTH MARK
+ */
+
+static const uint32_t pr29_9_1[] = {
+  0x0D46, 0
+};
+
+static const uint32_t pr29_9_2[] = {
+  0x0D3E, 0x0D57, 0
+};
+
+/*
+ * 1025 MYANMAR LETTER U                102E MYANMAR VOWEL SIGN II
+ */
+
+static const uint32_t pr29_10_1[] = {
+  0x1025, 0
+};
+
+static const uint32_t pr29_10_2[] = {
+  0x102E, 0
+};
+
+/*
+ * 0DD9 SINHALA VOWEL SIGN KOMBUVA      0DCF SINHALA VOWEL SIGN AELA-PILLA or
+ *                                      0DDF SINHALA VOWEL SIGN GAYANUKITTA
+ */
+
+static const uint32_t pr29_11_1[] = {
+  0x0DD9, 0
+};
+
+static const uint32_t pr29_11_2[] = {
+  0x0DCF, 0x0DDF, 0
+};
+
+/*
+ * 1100..1112 HANGUL CHOSEONG KIYEOK..HIEUH [19 instances]
+ *                              1161..1175 HANGUL JUNGSEONG A..I [21 instances]
+ */
+
+static const uint32_t pr29_12_1[] = {
+  0x1100, 0x1101, 0x1102, 0x1103, 0x1104, 0x1105, 0x1106, 0x1107,
+  0x1108, 0x1109, 0x110A, 0x110B, 0x110C, 0x110D, 0x110E, 0x110F,
+  0x1110, 0x1111, 0x1112, 0
+};
+
+static const uint32_t pr29_12_2[] = {
+  0x1161, 0x1162, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167, 0x1168,
+  0x1169, 0x116A, 0x116B, 0x116C, 0x116D, 0x116E, 0x116F, 0x1170,
+  0x1171, 0x1172, 0x1173, 0x1174, 0x1175, 0
+};
+
+
+/*
+ * [:HangulSyllableType=LV:]
+ *                     11A8..11C2 HANGUL JONGSEONG KIYEOK..HIEUH [27 instances]
+ */
+
+static const uint32_t pr29_13_1[] = {
+  0xAC00,                      /* LV # Lo       HANGUL SYLLABLE GA     */
+  0xAC1C,                      /* LV # Lo       HANGUL SYLLABLE GAE    */
+  0xAC38,                      /* LV # Lo       HANGUL SYLLABLE GYA    */
+  0xAC54,                      /* LV # Lo       HANGUL SYLLABLE GYAE   */
+  0xAC70,                      /* LV # Lo       HANGUL SYLLABLE GEO    */
+  0xAC8C,                      /* LV # Lo       HANGUL SYLLABLE GE     */
+  0xACA8,                      /* LV # Lo       HANGUL SYLLABLE GYEO   */
+  0xACC4,                      /* LV # Lo       HANGUL SYLLABLE GYE    */
+  0xACE0,                      /* LV # Lo       HANGUL SYLLABLE GO     */
+  0xACFC,                      /* LV # Lo       HANGUL SYLLABLE GWA    */
+  0xAD18,                      /* LV # Lo       HANGUL SYLLABLE GWAE   */
+  0xAD34,                      /* LV # Lo       HANGUL SYLLABLE GOE    */
+  0xAD50,                      /* LV # Lo       HANGUL SYLLABLE GYO    */
+  0xAD6C,                      /* LV # Lo       HANGUL SYLLABLE GU     */
+  0xAD88,                      /* LV # Lo       HANGUL SYLLABLE GWEO   */
+  0xADA4,                      /* LV # Lo       HANGUL SYLLABLE GWE    */
+  0xADC0,                      /* LV # Lo       HANGUL SYLLABLE GWI    */
+  0xADDC,                      /* LV # Lo       HANGUL SYLLABLE GYU    */
+  0xADF8,                      /* LV # Lo       HANGUL SYLLABLE GEU    */
+  0xAE14,                      /* LV # Lo       HANGUL SYLLABLE GYI    */
+  0xAE30,                      /* LV # Lo       HANGUL SYLLABLE GI     */
+  0xAE4C,                      /* LV # Lo       HANGUL SYLLABLE GGA    */
+  0xAE68,                      /* LV # Lo       HANGUL SYLLABLE GGAE   */
+  0xAE84,                      /* LV # Lo       HANGUL SYLLABLE GGYA   */
+  0xAEA0,                      /* LV # Lo       HANGUL SYLLABLE GGYAE  */
+  0xAEBC,                      /* LV # Lo       HANGUL SYLLABLE GGEO   */
+  0xAED8,                      /* LV # Lo       HANGUL SYLLABLE GGE    */
+  0xAEF4,                      /* LV # Lo       HANGUL SYLLABLE GGYEO  */
+  0xAF10,                      /* LV # Lo       HANGUL SYLLABLE GGYE   */
+  0xAF2C,                      /* LV # Lo       HANGUL SYLLABLE GGO    */
+  0xAF48,                      /* LV # Lo       HANGUL SYLLABLE GGWA   */
+  0xAF64,                      /* LV # Lo       HANGUL SYLLABLE GGWAE  */
+  0xAF80,                      /* LV # Lo       HANGUL SYLLABLE GGOE   */
+  0xAF9C,                      /* LV # Lo       HANGUL SYLLABLE GGYO   */
+  0xAFB8,                      /* LV # Lo       HANGUL SYLLABLE GGU    */
+  0xAFD4,                      /* LV # Lo       HANGUL SYLLABLE GGWEO  */
+  0xAFF0,                      /* LV # Lo       HANGUL SYLLABLE GGWE   */
+  0xB00C,                      /* LV # Lo       HANGUL SYLLABLE GGWI   */
+  0xB028,                      /* LV # Lo       HANGUL SYLLABLE GGYU   */
+  0xB044,                      /* LV # Lo       HANGUL SYLLABLE GGEU   */
+  0xB060,                      /* LV # Lo       HANGUL SYLLABLE GGYI   */
+  0xB07C,                      /* LV # Lo       HANGUL SYLLABLE GGI    */
+  0xB098,                      /* LV # Lo       HANGUL SYLLABLE NA     */
+  0xB0B4,                      /* LV # Lo       HANGUL SYLLABLE NAE    */
+  0xB0D0,                      /* LV # Lo       HANGUL SYLLABLE NYA    */
+  0xB0EC,                      /* LV # Lo       HANGUL SYLLABLE NYAE   */
+  0xB108,                      /* LV # Lo       HANGUL SYLLABLE NEO    */
+  0xB124,                      /* LV # Lo       HANGUL SYLLABLE NE     */
+  0xB140,                      /* LV # Lo       HANGUL SYLLABLE NYEO   */
+  0xB15C,                      /* LV # Lo       HANGUL SYLLABLE NYE    */
+  0xB178,                      /* LV # Lo       HANGUL SYLLABLE NO     */
+  0xB194,                      /* LV # Lo       HANGUL SYLLABLE NWA    */
+  0xB1B0,                      /* LV # Lo       HANGUL SYLLABLE NWAE   */
+  0xB1CC,                      /* LV # Lo       HANGUL SYLLABLE NOE    */
+  0xB1E8,                      /* LV # Lo       HANGUL SYLLABLE NYO    */
+  0xB204,                      /* LV # Lo       HANGUL SYLLABLE NU     */
+  0xB220,                      /* LV # Lo       HANGUL SYLLABLE NWEO   */
+  0xB23C,                      /* LV # Lo       HANGUL SYLLABLE NWE    */
+  0xB258,                      /* LV # Lo       HANGUL SYLLABLE NWI    */
+  0xB274,                      /* LV # Lo       HANGUL SYLLABLE NYU    */
+  0xB290,                      /* LV # Lo       HANGUL SYLLABLE NEU    */
+  0xB2AC,                      /* LV # Lo       HANGUL SYLLABLE NYI    */
+  0xB2C8,                      /* LV # Lo       HANGUL SYLLABLE NI     */
+  0xB2E4,                      /* LV # Lo       HANGUL SYLLABLE DA     */
+  0xB300,                      /* LV # Lo       HANGUL SYLLABLE DAE    */
+  0xB31C,                      /* LV # Lo       HANGUL SYLLABLE DYA    */
+  0xB338,                      /* LV # Lo       HANGUL SYLLABLE DYAE   */
+  0xB354,                      /* LV # Lo       HANGUL SYLLABLE DEO    */
+  0xB370,                      /* LV # Lo       HANGUL SYLLABLE DE     */
+  0xB38C,                      /* LV # Lo       HANGUL SYLLABLE DYEO   */
+  0xB3A8,                      /* LV # Lo       HANGUL SYLLABLE DYE    */
+  0xB3C4,                      /* LV # Lo       HANGUL SYLLABLE DO     */
+  0xB3E0,                      /* LV # Lo       HANGUL SYLLABLE DWA    */
+  0xB3FC,                      /* LV # Lo       HANGUL SYLLABLE DWAE   */
+  0xB418,                      /* LV # Lo       HANGUL SYLLABLE DOE    */
+  0xB434,                      /* LV # Lo       HANGUL SYLLABLE DYO    */
+  0xB450,                      /* LV # Lo       HANGUL SYLLABLE DU     */
+  0xB46C,                      /* LV # Lo       HANGUL SYLLABLE DWEO   */
+  0xB488,                      /* LV # Lo       HANGUL SYLLABLE DWE    */
+  0xB4A4,                      /* LV # Lo       HANGUL SYLLABLE DWI    */
+  0xB4C0,                      /* LV # Lo       HANGUL SYLLABLE DYU    */
+  0xB4DC,                      /* LV # Lo       HANGUL SYLLABLE DEU    */
+  0xB4F8,                      /* LV # Lo       HANGUL SYLLABLE DYI    */
+  0xB514,                      /* LV # Lo       HANGUL SYLLABLE DI     */
+  0xB530,                      /* LV # Lo       HANGUL SYLLABLE DDA    */
+  0xB54C,                      /* LV # Lo       HANGUL SYLLABLE DDAE   */
+  0xB568,                      /* LV # Lo       HANGUL SYLLABLE DDYA   */
+  0xB584,                      /* LV # Lo       HANGUL SYLLABLE DDYAE  */
+  0xB5A0,                      /* LV # Lo       HANGUL SYLLABLE DDEO   */
+  0xB5BC,                      /* LV # Lo       HANGUL SYLLABLE DDE    */
+  0xB5D8,                      /* LV # Lo       HANGUL SYLLABLE DDYEO  */
+  0xB5F4,                      /* LV # Lo       HANGUL SYLLABLE DDYE   */
+  0xB610,                      /* LV # Lo       HANGUL SYLLABLE DDO    */
+  0xB62C,                      /* LV # Lo       HANGUL SYLLABLE DDWA   */
+  0xB648,                      /* LV # Lo       HANGUL SYLLABLE DDWAE  */
+  0xB664,                      /* LV # Lo       HANGUL SYLLABLE DDOE   */
+  0xB680,                      /* LV # Lo       HANGUL SYLLABLE DDYO   */
+  0xB69C,                      /* LV # Lo       HANGUL SYLLABLE DDU    */
+  0xB6B8,                      /* LV # Lo       HANGUL SYLLABLE DDWEO  */
+  0xB6D4,                      /* LV # Lo       HANGUL SYLLABLE DDWE   */
+  0xB6F0,                      /* LV # Lo       HANGUL SYLLABLE DDWI   */
+  0xB70C,                      /* LV # Lo       HANGUL SYLLABLE DDYU   */
+  0xB728,                      /* LV # Lo       HANGUL SYLLABLE DDEU   */
+  0xB744,                      /* LV # Lo       HANGUL SYLLABLE DDYI   */
+  0xB760,                      /* LV # Lo       HANGUL SYLLABLE DDI    */
+  0xB77C,                      /* LV # Lo       HANGUL SYLLABLE RA     */
+  0xB798,                      /* LV # Lo       HANGUL SYLLABLE RAE    */
+  0xB7B4,                      /* LV # Lo       HANGUL SYLLABLE RYA    */
+  0xB7D0,                      /* LV # Lo       HANGUL SYLLABLE RYAE   */
+  0xB7EC,                      /* LV # Lo       HANGUL SYLLABLE REO    */
+  0xB808,                      /* LV # Lo       HANGUL SYLLABLE RE     */
+  0xB824,                      /* LV # Lo       HANGUL SYLLABLE RYEO   */
+  0xB840,                      /* LV # Lo       HANGUL SYLLABLE RYE    */
+  0xB85C,                      /* LV # Lo       HANGUL SYLLABLE RO     */
+  0xB878,                      /* LV # Lo       HANGUL SYLLABLE RWA    */
+  0xB894,                      /* LV # Lo       HANGUL SYLLABLE RWAE   */
+  0xB8B0,                      /* LV # Lo       HANGUL SYLLABLE ROE    */
+  0xB8CC,                      /* LV # Lo       HANGUL SYLLABLE RYO    */
+  0xB8E8,                      /* LV # Lo       HANGUL SYLLABLE RU     */
+  0xB904,                      /* LV # Lo       HANGUL SYLLABLE RWEO   */
+  0xB920,                      /* LV # Lo       HANGUL SYLLABLE RWE    */
+  0xB93C,                      /* LV # Lo       HANGUL SYLLABLE RWI    */
+  0xB958,                      /* LV # Lo       HANGUL SYLLABLE RYU    */
+  0xB974,                      /* LV # Lo       HANGUL SYLLABLE REU    */
+  0xB990,                      /* LV # Lo       HANGUL SYLLABLE RYI    */
+  0xB9AC,                      /* LV # Lo       HANGUL SYLLABLE RI     */
+  0xB9C8,                      /* LV # Lo       HANGUL SYLLABLE MA     */
+  0xB9E4,                      /* LV # Lo       HANGUL SYLLABLE MAE    */
+  0xBA00,                      /* LV # Lo       HANGUL SYLLABLE MYA    */
+  0xBA1C,                      /* LV # Lo       HANGUL SYLLABLE MYAE   */
+  0xBA38,                      /* LV # Lo       HANGUL SYLLABLE MEO    */
+  0xBA54,                      /* LV # Lo       HANGUL SYLLABLE ME     */
+  0xBA70,                      /* LV # Lo       HANGUL SYLLABLE MYEO   */
+  0xBA8C,                      /* LV # Lo       HANGUL SYLLABLE MYE    */
+  0xBAA8,                      /* LV # Lo       HANGUL SYLLABLE MO     */
+  0xBAC4,                      /* LV # Lo       HANGUL SYLLABLE MWA    */
+  0xBAE0,                      /* LV # Lo       HANGUL SYLLABLE MWAE   */
+  0xBAFC,                      /* LV # Lo       HANGUL SYLLABLE MOE    */
+  0xBB18,                      /* LV # Lo       HANGUL SYLLABLE MYO    */
+  0xBB34,                      /* LV # Lo       HANGUL SYLLABLE MU     */
+  0xBB50,                      /* LV # Lo       HANGUL SYLLABLE MWEO   */
+  0xBB6C,                      /* LV # Lo       HANGUL SYLLABLE MWE    */
+  0xBB88,                      /* LV # Lo       HANGUL SYLLABLE MWI    */
+  0xBBA4,                      /* LV # Lo       HANGUL SYLLABLE MYU    */
+  0xBBC0,                      /* LV # Lo       HANGUL SYLLABLE MEU    */
+  0xBBDC,                      /* LV # Lo       HANGUL SYLLABLE MYI    */
+  0xBBF8,                      /* LV # Lo       HANGUL SYLLABLE MI     */
+  0xBC14,                      /* LV # Lo       HANGUL SYLLABLE BA     */
+  0xBC30,                      /* LV # Lo       HANGUL SYLLABLE BAE    */
+  0xBC4C,                      /* LV # Lo       HANGUL SYLLABLE BYA    */
+  0xBC68,                      /* LV # Lo       HANGUL SYLLABLE BYAE   */
+  0xBC84,                      /* LV # Lo       HANGUL SYLLABLE BEO    */
+  0xBCA0,                      /* LV # Lo       HANGUL SYLLABLE BE     */
+  0xBCBC,                      /* LV # Lo       HANGUL SYLLABLE BYEO   */
+  0xBCD8,                      /* LV # Lo       HANGUL SYLLABLE BYE    */
+  0xBCF4,                      /* LV # Lo       HANGUL SYLLABLE BO     */
+  0xBD10,                      /* LV # Lo       HANGUL SYLLABLE BWA    */
+  0xBD2C,                      /* LV # Lo       HANGUL SYLLABLE BWAE   */
+  0xBD48,                      /* LV # Lo       HANGUL SYLLABLE BOE    */
+  0xBD64,                      /* LV # Lo       HANGUL SYLLABLE BYO    */
+  0xBD80,                      /* LV # Lo       HANGUL SYLLABLE BU     */
+  0xBD9C,                      /* LV # Lo       HANGUL SYLLABLE BWEO   */
+  0xBDB8,                      /* LV # Lo       HANGUL SYLLABLE BWE    */
+  0xBDD4,                      /* LV # Lo       HANGUL SYLLABLE BWI    */
+  0xBDF0,                      /* LV # Lo       HANGUL SYLLABLE BYU    */
+  0xBE0C,                      /* LV # Lo       HANGUL SYLLABLE BEU    */
+  0xBE28,                      /* LV # Lo       HANGUL SYLLABLE BYI    */
+  0xBE44,                      /* LV # Lo       HANGUL SYLLABLE BI     */
+  0xBE60,                      /* LV # Lo       HANGUL SYLLABLE BBA    */
+  0xBE7C,                      /* LV # Lo       HANGUL SYLLABLE BBAE   */
+  0xBE98,                      /* LV # Lo       HANGUL SYLLABLE BBYA   */
+  0xBEB4,                      /* LV # Lo       HANGUL SYLLABLE BBYAE  */
+  0xBED0,                      /* LV # Lo       HANGUL SYLLABLE BBEO   */
+  0xBEEC,                      /* LV # Lo       HANGUL SYLLABLE BBE    */
+  0xBF08,                      /* LV # Lo       HANGUL SYLLABLE BBYEO  */
+  0xBF24,                      /* LV # Lo       HANGUL SYLLABLE BBYE   */
+  0xBF40,                      /* LV # Lo       HANGUL SYLLABLE BBO    */
+  0xBF5C,                      /* LV # Lo       HANGUL SYLLABLE BBWA   */
+  0xBF78,                      /* LV # Lo       HANGUL SYLLABLE BBWAE  */
+  0xBF94,                      /* LV # Lo       HANGUL SYLLABLE BBOE   */
+  0xBFB0,                      /* LV # Lo       HANGUL SYLLABLE BBYO   */
+  0xBFCC,                      /* LV # Lo       HANGUL SYLLABLE BBU    */
+  0xBFE8,                      /* LV # Lo       HANGUL SYLLABLE BBWEO  */
+  0xC004,                      /* LV # Lo       HANGUL SYLLABLE BBWE   */
+  0xC020,                      /* LV # Lo       HANGUL SYLLABLE BBWI   */
+  0xC03C,                      /* LV # Lo       HANGUL SYLLABLE BBYU   */
+  0xC058,                      /* LV # Lo       HANGUL SYLLABLE BBEU   */
+  0xC074,                      /* LV # Lo       HANGUL SYLLABLE BBYI   */
+  0xC090,                      /* LV # Lo       HANGUL SYLLABLE BBI    */
+  0xC0AC,                      /* LV # Lo       HANGUL SYLLABLE SA     */
+  0xC0C8,                      /* LV # Lo       HANGUL SYLLABLE SAE    */
+  0xC0E4,                      /* LV # Lo       HANGUL SYLLABLE SYA    */
+  0xC100,                      /* LV # Lo       HANGUL SYLLABLE SYAE   */
+  0xC11C,                      /* LV # Lo       HANGUL SYLLABLE SEO    */
+  0xC138,                      /* LV # Lo       HANGUL SYLLABLE SE     */
+  0xC154,                      /* LV # Lo       HANGUL SYLLABLE SYEO   */
+  0xC170,                      /* LV # Lo       HANGUL SYLLABLE SYE    */
+  0xC18C,                      /* LV # Lo       HANGUL SYLLABLE SO     */
+  0xC1A8,                      /* LV # Lo       HANGUL SYLLABLE SWA    */
+  0xC1C4,                      /* LV # Lo       HANGUL SYLLABLE SWAE   */
+  0xC1E0,                      /* LV # Lo       HANGUL SYLLABLE SOE    */
+  0xC1FC,                      /* LV # Lo       HANGUL SYLLABLE SYO    */
+  0xC218,                      /* LV # Lo       HANGUL SYLLABLE SU     */
+  0xC234,                      /* LV # Lo       HANGUL SYLLABLE SWEO   */
+  0xC250,                      /* LV # Lo       HANGUL SYLLABLE SWE    */
+  0xC26C,                      /* LV # Lo       HANGUL SYLLABLE SWI    */
+  0xC288,                      /* LV # Lo       HANGUL SYLLABLE SYU    */
+  0xC2A4,                      /* LV # Lo       HANGUL SYLLABLE SEU    */
+  0xC2C0,                      /* LV # Lo       HANGUL SYLLABLE SYI    */
+  0xC2DC,                      /* LV # Lo       HANGUL SYLLABLE SI     */
+  0xC2F8,                      /* LV # Lo       HANGUL SYLLABLE SSA    */
+  0xC314,                      /* LV # Lo       HANGUL SYLLABLE SSAE   */
+  0xC330,                      /* LV # Lo       HANGUL SYLLABLE SSYA   */
+  0xC34C,                      /* LV # Lo       HANGUL SYLLABLE SSYAE  */
+  0xC368,                      /* LV # Lo       HANGUL SYLLABLE SSEO   */
+  0xC384,                      /* LV # Lo       HANGUL SYLLABLE SSE    */
+  0xC3A0,                      /* LV # Lo       HANGUL SYLLABLE SSYEO  */
+  0xC3BC,                      /* LV # Lo       HANGUL SYLLABLE SSYE   */
+  0xC3D8,                      /* LV # Lo       HANGUL SYLLABLE SSO    */
+  0xC3F4,                      /* LV # Lo       HANGUL SYLLABLE SSWA   */
+  0xC410,                      /* LV # Lo       HANGUL SYLLABLE SSWAE  */
+  0xC42C,                      /* LV # Lo       HANGUL SYLLABLE SSOE   */
+  0xC448,                      /* LV # Lo       HANGUL SYLLABLE SSYO   */
+  0xC464,                      /* LV # Lo       HANGUL SYLLABLE SSU    */
+  0xC480,                      /* LV # Lo       HANGUL SYLLABLE SSWEO  */
+  0xC49C,                      /* LV # Lo       HANGUL SYLLABLE SSWE   */
+  0xC4B8,                      /* LV # Lo       HANGUL SYLLABLE SSWI   */
+  0xC4D4,                      /* LV # Lo       HANGUL SYLLABLE SSYU   */
+  0xC4F0,                      /* LV # Lo       HANGUL SYLLABLE SSEU   */
+  0xC50C,                      /* LV # Lo       HANGUL SYLLABLE SSYI   */
+  0xC528,                      /* LV # Lo       HANGUL SYLLABLE SSI    */
+  0xC544,                      /* LV # Lo       HANGUL SYLLABLE A      */
+  0xC560,                      /* LV # Lo       HANGUL SYLLABLE AE     */
+  0xC57C,                      /* LV # Lo       HANGUL SYLLABLE YA     */
+  0xC598,                      /* LV # Lo       HANGUL SYLLABLE YAE    */
+  0xC5B4,                      /* LV # Lo       HANGUL SYLLABLE EO     */
+  0xC5D0,                      /* LV # Lo       HANGUL SYLLABLE E      */
+  0xC5EC,                      /* LV # Lo       HANGUL SYLLABLE YEO    */
+  0xC608,                      /* LV # Lo       HANGUL SYLLABLE YE     */
+  0xC624,                      /* LV # Lo       HANGUL SYLLABLE O      */
+  0xC640,                      /* LV # Lo       HANGUL SYLLABLE WA     */
+  0xC65C,                      /* LV # Lo       HANGUL SYLLABLE WAE    */
+  0xC678,                      /* LV # Lo       HANGUL SYLLABLE OE     */
+  0xC694,                      /* LV # Lo       HANGUL SYLLABLE YO     */
+  0xC6B0,                      /* LV # Lo       HANGUL SYLLABLE U      */
+  0xC6CC,                      /* LV # Lo       HANGUL SYLLABLE WEO    */
+  0xC6E8,                      /* LV # Lo       HANGUL SYLLABLE WE     */
+  0xC704,                      /* LV # Lo       HANGUL SYLLABLE WI     */
+  0xC720,                      /* LV # Lo       HANGUL SYLLABLE YU     */
+  0xC73C,                      /* LV # Lo       HANGUL SYLLABLE EU     */
+  0xC758,                      /* LV # Lo       HANGUL SYLLABLE YI     */
+  0xC774,                      /* LV # Lo       HANGUL SYLLABLE I      */
+  0xC790,                      /* LV # Lo       HANGUL SYLLABLE JA     */
+  0xC7AC,                      /* LV # Lo       HANGUL SYLLABLE JAE    */
+  0xC7C8,                      /* LV # Lo       HANGUL SYLLABLE JYA    */
+  0xC7E4,                      /* LV # Lo       HANGUL SYLLABLE JYAE   */
+  0xC800,                      /* LV # Lo       HANGUL SYLLABLE JEO    */
+  0xC81C,                      /* LV # Lo       HANGUL SYLLABLE JE     */
+  0xC838,                      /* LV # Lo       HANGUL SYLLABLE JYEO   */
+  0xC854,                      /* LV # Lo       HANGUL SYLLABLE JYE    */
+  0xC870,                      /* LV # Lo       HANGUL SYLLABLE JO     */
+  0xC88C,                      /* LV # Lo       HANGUL SYLLABLE JWA    */
+  0xC8A8,                      /* LV # Lo       HANGUL SYLLABLE JWAE   */
+  0xC8C4,                      /* LV # Lo       HANGUL SYLLABLE JOE    */
+  0xC8E0,                      /* LV # Lo       HANGUL SYLLABLE JYO    */
+  0xC8FC,                      /* LV # Lo       HANGUL SYLLABLE JU     */
+  0xC918,                      /* LV # Lo       HANGUL SYLLABLE JWEO   */
+  0xC934,                      /* LV # Lo       HANGUL SYLLABLE JWE    */
+  0xC950,                      /* LV # Lo       HANGUL SYLLABLE JWI    */
+  0xC96C,                      /* LV # Lo       HANGUL SYLLABLE JYU    */
+  0xC988,                      /* LV # Lo       HANGUL SYLLABLE JEU    */
+  0xC9A4,                      /* LV # Lo       HANGUL SYLLABLE JYI    */
+  0xC9C0,                      /* LV # Lo       HANGUL SYLLABLE JI     */
+  0xC9DC,                      /* LV # Lo       HANGUL SYLLABLE JJA    */
+  0xC9F8,                      /* LV # Lo       HANGUL SYLLABLE JJAE   */
+  0xCA14,                      /* LV # Lo       HANGUL SYLLABLE JJYA   */
+  0xCA30,                      /* LV # Lo       HANGUL SYLLABLE JJYAE  */
+  0xCA4C,                      /* LV # Lo       HANGUL SYLLABLE JJEO   */
+  0xCA68,                      /* LV # Lo       HANGUL SYLLABLE JJE    */
+  0xCA84,                      /* LV # Lo       HANGUL SYLLABLE JJYEO  */
+  0xCAA0,                      /* LV # Lo       HANGUL SYLLABLE JJYE   */
+  0xCABC,                      /* LV # Lo       HANGUL SYLLABLE JJO    */
+  0xCAD8,                      /* LV # Lo       HANGUL SYLLABLE JJWA   */
+  0xCAF4,                      /* LV # Lo       HANGUL SYLLABLE JJWAE  */
+  0xCB10,                      /* LV # Lo       HANGUL SYLLABLE JJOE   */
+  0xCB2C,                      /* LV # Lo       HANGUL SYLLABLE JJYO   */
+  0xCB48,                      /* LV # Lo       HANGUL SYLLABLE JJU    */
+  0xCB64,                      /* LV # Lo       HANGUL SYLLABLE JJWEO  */
+  0xCB80,                      /* LV # Lo       HANGUL SYLLABLE JJWE   */
+  0xCB9C,                      /* LV # Lo       HANGUL SYLLABLE JJWI   */
+  0xCBB8,                      /* LV # Lo       HANGUL SYLLABLE JJYU   */
+  0xCBD4,                      /* LV # Lo       HANGUL SYLLABLE JJEU   */
+  0xCBF0,                      /* LV # Lo       HANGUL SYLLABLE JJYI   */
+  0xCC0C,                      /* LV # Lo       HANGUL SYLLABLE JJI    */
+  0xCC28,                      /* LV # Lo       HANGUL SYLLABLE CA     */
+  0xCC44,                      /* LV # Lo       HANGUL SYLLABLE CAE    */
+  0xCC60,                      /* LV # Lo       HANGUL SYLLABLE CYA    */
+  0xCC7C,                      /* LV # Lo       HANGUL SYLLABLE CYAE   */
+  0xCC98,                      /* LV # Lo       HANGUL SYLLABLE CEO    */
+  0xCCB4,                      /* LV # Lo       HANGUL SYLLABLE CE     */
+  0xCCD0,                      /* LV # Lo       HANGUL SYLLABLE CYEO   */
+  0xCCEC,                      /* LV # Lo       HANGUL SYLLABLE CYE    */
+  0xCD08,                      /* LV # Lo       HANGUL SYLLABLE CO     */
+  0xCD24,                      /* LV # Lo       HANGUL SYLLABLE CWA    */
+  0xCD40,                      /* LV # Lo       HANGUL SYLLABLE CWAE   */
+  0xCD5C,                      /* LV # Lo       HANGUL SYLLABLE COE    */
+  0xCD78,                      /* LV # Lo       HANGUL SYLLABLE CYO    */
+  0xCD94,                      /* LV # Lo       HANGUL SYLLABLE CU     */
+  0xCDB0,                      /* LV # Lo       HANGUL SYLLABLE CWEO   */
+  0xCDCC,                      /* LV # Lo       HANGUL SYLLABLE CWE    */
+  0xCDE8,                      /* LV # Lo       HANGUL SYLLABLE CWI    */
+  0xCE04,                      /* LV # Lo       HANGUL SYLLABLE CYU    */
+  0xCE20,                      /* LV # Lo       HANGUL SYLLABLE CEU    */
+  0xCE3C,                      /* LV # Lo       HANGUL SYLLABLE CYI    */
+  0xCE58,                      /* LV # Lo       HANGUL SYLLABLE CI     */
+  0xCE74,                      /* LV # Lo       HANGUL SYLLABLE KA     */
+  0xCE90,                      /* LV # Lo       HANGUL SYLLABLE KAE    */
+  0xCEAC,                      /* LV # Lo       HANGUL SYLLABLE KYA    */
+  0xCEC8,                      /* LV # Lo       HANGUL SYLLABLE KYAE   */
+  0xCEE4,                      /* LV # Lo       HANGUL SYLLABLE KEO    */
+  0xCF00,                      /* LV # Lo       HANGUL SYLLABLE KE     */
+  0xCF1C,                      /* LV # Lo       HANGUL SYLLABLE KYEO   */
+  0xCF38,                      /* LV # Lo       HANGUL SYLLABLE KYE    */
+  0xCF54,                      /* LV # Lo       HANGUL SYLLABLE KO     */
+  0xCF70,                      /* LV # Lo       HANGUL SYLLABLE KWA    */
+  0xCF8C,                      /* LV # Lo       HANGUL SYLLABLE KWAE   */
+  0xCFA8,                      /* LV # Lo       HANGUL SYLLABLE KOE    */
+  0xCFC4,                      /* LV # Lo       HANGUL SYLLABLE KYO    */
+  0xCFE0,                      /* LV # Lo       HANGUL SYLLABLE KU     */
+  0xCFFC,                      /* LV # Lo       HANGUL SYLLABLE KWEO   */
+  0xD018,                      /* LV # Lo       HANGUL SYLLABLE KWE    */
+  0xD034,                      /* LV # Lo       HANGUL SYLLABLE KWI    */
+  0xD050,                      /* LV # Lo       HANGUL SYLLABLE KYU    */
+  0xD06C,                      /* LV # Lo       HANGUL SYLLABLE KEU    */
+  0xD088,                      /* LV # Lo       HANGUL SYLLABLE KYI    */
+  0xD0A4,                      /* LV # Lo       HANGUL SYLLABLE KI     */
+  0xD0C0,                      /* LV # Lo       HANGUL SYLLABLE TA     */
+  0xD0DC,                      /* LV # Lo       HANGUL SYLLABLE TAE    */
+  0xD0F8,                      /* LV # Lo       HANGUL SYLLABLE TYA    */
+  0xD114,                      /* LV # Lo       HANGUL SYLLABLE TYAE   */
+  0xD130,                      /* LV # Lo       HANGUL SYLLABLE TEO    */
+  0xD14C,                      /* LV # Lo       HANGUL SYLLABLE TE     */
+  0xD168,                      /* LV # Lo       HANGUL SYLLABLE TYEO   */
+  0xD184,                      /* LV # Lo       HANGUL SYLLABLE TYE    */
+  0xD1A0,                      /* LV # Lo       HANGUL SYLLABLE TO     */
+  0xD1BC,                      /* LV # Lo       HANGUL SYLLABLE TWA    */
+  0xD1D8,                      /* LV # Lo       HANGUL SYLLABLE TWAE   */
+  0xD1F4,                      /* LV # Lo       HANGUL SYLLABLE TOE    */
+  0xD210,                      /* LV # Lo       HANGUL SYLLABLE TYO    */
+  0xD22C,                      /* LV # Lo       HANGUL SYLLABLE TU     */
+  0xD248,                      /* LV # Lo       HANGUL SYLLABLE TWEO   */
+  0xD264,                      /* LV # Lo       HANGUL SYLLABLE TWE    */
+  0xD280,                      /* LV # Lo       HANGUL SYLLABLE TWI    */
+  0xD29C,                      /* LV # Lo       HANGUL SYLLABLE TYU    */
+  0xD2B8,                      /* LV # Lo       HANGUL SYLLABLE TEU    */
+  0xD2D4,                      /* LV # Lo       HANGUL SYLLABLE TYI    */
+  0xD2F0,                      /* LV # Lo       HANGUL SYLLABLE TI     */
+  0xD30C,                      /* LV # Lo       HANGUL SYLLABLE PA     */
+  0xD328,                      /* LV # Lo       HANGUL SYLLABLE PAE    */
+  0xD344,                      /* LV # Lo       HANGUL SYLLABLE PYA    */
+  0xD360,                      /* LV # Lo       HANGUL SYLLABLE PYAE   */
+  0xD37C,                      /* LV # Lo       HANGUL SYLLABLE PEO    */
+  0xD398,                      /* LV # Lo       HANGUL SYLLABLE PE     */
+  0xD3B4,                      /* LV # Lo       HANGUL SYLLABLE PYEO   */
+  0xD3D0,                      /* LV # Lo       HANGUL SYLLABLE PYE    */
+  0xD3EC,                      /* LV # Lo       HANGUL SYLLABLE PO     */
+  0xD408,                      /* LV # Lo       HANGUL SYLLABLE PWA    */
+  0xD424,                      /* LV # Lo       HANGUL SYLLABLE PWAE   */
+  0xD440,                      /* LV # Lo       HANGUL SYLLABLE POE    */
+  0xD45C,                      /* LV # Lo       HANGUL SYLLABLE PYO    */
+  0xD478,                      /* LV # Lo       HANGUL SYLLABLE PU     */
+  0xD494,                      /* LV # Lo       HANGUL SYLLABLE PWEO   */
+  0xD4B0,                      /* LV # Lo       HANGUL SYLLABLE PWE    */
+  0xD4CC,                      /* LV # Lo       HANGUL SYLLABLE PWI    */
+  0xD4E8,                      /* LV # Lo       HANGUL SYLLABLE PYU    */
+  0xD504,                      /* LV # Lo       HANGUL SYLLABLE PEU    */
+  0xD520,                      /* LV # Lo       HANGUL SYLLABLE PYI    */
+  0xD53C,                      /* LV # Lo       HANGUL SYLLABLE PI     */
+  0xD558,                      /* LV # Lo       HANGUL SYLLABLE HA     */
+  0xD574,                      /* LV # Lo       HANGUL SYLLABLE HAE    */
+  0xD590,                      /* LV # Lo       HANGUL SYLLABLE HYA    */
+  0xD5AC,                      /* LV # Lo       HANGUL SYLLABLE HYAE   */
+  0xD5C8,                      /* LV # Lo       HANGUL SYLLABLE HEO    */
+  0xD5E4,                      /* LV # Lo       HANGUL SYLLABLE HE     */
+  0xD600,                      /* LV # Lo       HANGUL SYLLABLE HYEO   */
+  0xD61C,                      /* LV # Lo       HANGUL SYLLABLE HYE    */
+  0xD638,                      /* LV # Lo       HANGUL SYLLABLE HO     */
+  0xD654,                      /* LV # Lo       HANGUL SYLLABLE HWA    */
+  0xD670,                      /* LV # Lo       HANGUL SYLLABLE HWAE   */
+  0xD68C,                      /* LV # Lo       HANGUL SYLLABLE HOE    */
+  0xD6A8,                      /* LV # Lo       HANGUL SYLLABLE HYO    */
+  0xD6C4,                      /* LV # Lo       HANGUL SYLLABLE HU     */
+  0xD6E0,                      /* LV # Lo       HANGUL SYLLABLE HWEO   */
+  0xD6FC,                      /* LV # Lo       HANGUL SYLLABLE HWE    */
+  0xD718,                      /* LV # Lo       HANGUL SYLLABLE HWI    */
+  0xD734,                      /* LV # Lo       HANGUL SYLLABLE HYU    */
+  0xD750,                      /* LV # Lo       HANGUL SYLLABLE HEU    */
+  0xD76C,                      /* LV # Lo       HANGUL SYLLABLE HYI    */
+  0xD788,                      /* LV # Lo       HANGUL SYLLABLE HI     */
+  0
+};
+
+static const uint32_t pr29_13_2[] = {
+  0x11A8, 0x11A9, 0x11AA, 0x11AB, 0x11AC, 0x11AD, 0x11AE, 0x11AF,
+  0x11B0, 0x11B1, 0x11B2, 0x11B3, 0x11B4, 0x11B5, 0x11B6, 0x11B7,
+  0x11B8, 0x11B9, 0x11BA, 0x11BB, 0x11BC, 0x11BD, 0x11BE, 0x11BF,
+  0x11C0, 0x11C1, 0x11C2, 0
+};
+
+typedef struct
+{
+  const uint32_t *first;
+  const uint32_t *last;
+} Pr29;
+
+static const Pr29 pr29[] = {
+  {&pr29_1_1[0], &pr29_1_2[0]},
+  {&pr29_2_1[0], &pr29_2_2[0]},
+  {&pr29_3_1[0], &pr29_3_2[0]},
+  {&pr29_4_1[0], &pr29_4_2[0]},
+  {&pr29_5_1[0], &pr29_5_2[0]},
+  {&pr29_6_1[0], &pr29_6_2[0]},
+  {&pr29_7_1[0], &pr29_7_2[0]},
+  {&pr29_8_1[0], &pr29_8_2[0]},
+  {&pr29_9_1[0], &pr29_9_2[0]},
+  {&pr29_10_1[0], &pr29_10_2[0]},
+  {&pr29_11_1[0], &pr29_11_2[0]},
+  {&pr29_12_1[0], &pr29_12_2[0]},
+  {&pr29_13_1[0], &pr29_13_2[0]},
+  {NULL, NULL}
+};
+
+static size_t
+first_column (uint32_t c)
+{
+  size_t i, j;
+
+  for (i = 0; pr29[i].first; i++)
+    for (j = 0; pr29[i].first[j]; j++)
+      if (c == pr29[i].first[j])
+       return i + 1;
+
+  return 0;
+}
+
+static int
+in_last_column_row (uint32_t c, size_t row)
+{
+  size_t i;
+
+  for (i = 0; pr29[row - 1].last[i]; i++)
+    if (c == pr29[row - 1].last[i])
+      return 1;
+
+  return 0;
+}
+
+static size_t
+combinationclass (uint32_t c)
+{
+  size_t i;
+
+  for (i = 0; nzcc[i]; i++)
+    if (c == nzcc[i])
+      return i + 1;
+
+  return 0;
+}
+
+/**
+ * pr29_4 - check if input trigger Unicode normalization bugs
+ * @in: input array with unicode code points.
+ * @len: length of input array with unicode code points.
+ *
+ * Check the input to see if it may be normalized into different
+ * strings by different NFKC implementations, due to an anomaly in the
+ * NFKC specifications.
+ *
+ * Return value: Returns the #Pr29_rc value %PR29_SUCCESS on success,
+ *   and %PR29_PROBLEM if the input sequence is a "problem sequence"
+ *   (i.e., may be normalized into different strings by different
+ *   implementations).
+ **/
+int
+pr29_4 (const uint32_t * in, size_t len)
+{
+  size_t i, j, k, row;
+
+  /*
+   * The problem sequence are of the form:
+   *
+   *      first_character  intervening_character+ last_character
+   *
+   * where the first_character and last_character come from the same
+   * row in the following table, and there is at least one
+   * intervening_character with non-zero Canonical Combining
+   * Class. (The '+' above means one or more occurrences.)
+   *
+   */
+
+  for (i = 0; i < len; i++)
+    if ((row = first_column (in[i])) > 0)
+      for (j = i + 1; j < len; j++)
+       if (combinationclass (in[j]))
+         for (k = j + 1; k < len; j++)
+           if (in_last_column_row (in[k], row))
+             return PR29_PROBLEM;
+
+  return PR29_SUCCESS;
+}
+
+/**
+ * pr29_4z - check if input trigger Unicode normalization bugs
+ * @in: zero terminated array of Unicode code points.
+ *
+ * Check the input to see if it may be normalized into different
+ * strings by different NFKC implementations, due to an anomaly in the
+ * NFKC specifications.
+ *
+ * Return value: Returns the #Pr29_rc value %PR29_SUCCESS on success,
+ *   and %PR29_PROBLEM if the input sequence is a "problem sequence"
+ *   (i.e., may be normalized into different strings by different
+ *   implementations).
+ **/
+int
+pr29_4z (const uint32_t * in)
+{
+  size_t len;
+
+  for (len = 0; in[len]; len++)
+    ;
+
+  return pr29_4 (in, len);
+}
+
+/**
+ * pr29_8z - check if input trigger Unicode normalization bugs
+ * @in: zero terminated input UTF-8 string.
+ *
+ * Check the input to see if it may be normalized into different
+ * strings by different NFKC implementations, due to an anomaly in the
+ * NFKC specifications.
+ *
+ * Return value: Returns the #Pr29_rc value %PR29_SUCCESS on success,
+ *   and %PR29_PROBLEM if the input sequence is a "problem sequence"
+ *   (i.e., may be normalized into different strings by different
+ *   implementations), or %PR29_STRINGPREP_ERROR if there was a
+ *   problem converting the string from UTF-8 to UCS-4.
+ **/
+int
+pr29_8z (const char *in)
+{
+  uint32_t *p;
+  int rc;
+
+  p = stringprep_utf8_to_ucs4 (in, -1, NULL);
+  if (!p)
+    return PR29_STRINGPREP_ERROR;
+
+  rc = pr29_4z (p);
+
+  free (p);
+
+  return rc;
+}
+
+/**
+ * Pr29_rc:
+ * @PR29_SUCCESS: Successful operation.  This value is guaranteed to
+ *   always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * @PR29_PROBLEM: A problem sequence was encountered.
+ * @PR29_STRINGPREP_ERROR: The character set conversion failed (only
+ *   for pr29_8() and pr29_8z()).
+ *
+ * Enumerated return codes for pr29_4(), pr29_4z(), pr29_8z().  The
+ * value 0 is guaranteed to always correspond to success.
+ */
diff --git a/lib/pr29.h b/lib/pr29.h
new file mode 100644 (file)
index 0000000..78d63e6
--- /dev/null
@@ -0,0 +1,65 @@
+/* pr29.h --- Detect strings which are non-idempotent under NFKC.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson.
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef PR29_H
+# define PR29_H
+
+# ifndef IDNAPI
+#  if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY
+#   define IDNAPI __attribute__((__visibility__("default")))
+#  elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllexport)
+#  elif defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllimport)
+#  else
+#   define IDNAPI
+#  endif
+# endif
+
+# ifdef __cplusplus
+extern "C"
+{
+# endif
+
+  /* Get size_t. */
+# include <stdlib.h>
+
+  /* Get uint32_t. */
+# include <idn-int.h>
+
+  /* Error codes. */
+  typedef enum
+  {
+    PR29_SUCCESS = 0,
+    PR29_PROBLEM = 1,          /* String is a problem sequence. */
+    PR29_STRINGPREP_ERROR = 2  /* Charset conversion failed (p29_8*). */
+  } Pr29_rc;
+
+  extern IDNAPI const char *pr29_strerror (Pr29_rc rc);
+
+  extern IDNAPI int pr29_4 (const uint32_t * in, size_t len);
+  extern IDNAPI int pr29_4z (const uint32_t * in);
+  extern IDNAPI int pr29_8z (const char *in);
+
+# ifdef __cplusplus
+}
+# endif
+#endif                         /* PR29_H */
diff --git a/lib/profiles.c b/lib/profiles.c
new file mode 100644 (file)
index 0000000..f4c4d9d
--- /dev/null
@@ -0,0 +1,314 @@
+/* profiles.c --- Definitions of stringprep profiles.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#include <config.h>
+#include "stringprep.h"
+
+const Stringprep_profiles stringprep_profiles[] = {
+  {"Nameprep", stringprep_nameprep},
+  {"KRBprep", stringprep_kerberos5},   /* Deprecate? */
+  {"Nodeprep", stringprep_xmpp_nodeprep},
+  {"Resourceprep", stringprep_xmpp_resourceprep},
+  {"plain", stringprep_plain}, /* sasl-anon-00. */
+  {"trace", stringprep_trace}, /* sasl-anon-01,02,03. */
+  {"SASLprep", stringprep_saslprep},
+  {"ISCSIprep", stringprep_iscsi},     /* Obsolete. */
+  {"iSCSI", stringprep_iscsi}, /* IANA. */
+  {NULL, NULL}
+};
+
+const Stringprep_profile stringprep_nameprep[] = {
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2},
+  {STRINGPREP_NFKC, 0, 0},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
+  {STRINGPREP_BIDI, 0, 0},
+  {STRINGPREP_BIDI_PROHIBIT_TABLE, ~STRINGPREP_NO_BIDI,
+   stringprep_rfc3454_C_8},
+  {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1},
+  {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2},
+  {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
+   stringprep_rfc3454_A_1},
+  {0}
+};
+
+const Stringprep_profile stringprep_kerberos5[] = {
+  /* XXX this is likely to be wrong as the specification is
+     a rough draft. */
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_3},
+  {STRINGPREP_NFKC, 0, 0},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
+  {STRINGPREP_BIDI, 0, 0},
+  {STRINGPREP_BIDI_PROHIBIT_TABLE, ~STRINGPREP_NO_BIDI,
+   stringprep_rfc3454_C_8},
+  {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1},
+  {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2},
+  {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
+   stringprep_rfc3454_A_1},
+  {0}
+};
+
+const Stringprep_table_element stringprep_xmpp_nodeprep_prohibit[] = {
+  {0x000022},                  /* #x22 (") */
+  {0x000026},                  /* #x26 (&) */
+  {0x000027},                  /* #x27 (') */
+  {0x00002F},                  /* #x2F (/) */
+  {0x00003A},                  /* #x3A (:) */
+  {0x00003C},                  /* #x3C (<) */
+  {0x00003E},                  /* #x3E (>) */
+  {0x000040},                  /* #x40 (@) */
+  {0}
+};
+
+const Stringprep_profile stringprep_xmpp_nodeprep[] = {
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2},
+  {STRINGPREP_NFKC, 0, 0},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_1},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_xmpp_nodeprep_prohibit},
+  {STRINGPREP_BIDI, 0, 0},
+  {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_BIDI_RAL_TABLE, 0, stringprep_rfc3454_D_1},
+  {STRINGPREP_BIDI_L_TABLE, 0, stringprep_rfc3454_D_2},
+  {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
+   stringprep_rfc3454_A_1},
+  {0}
+};
+
+const Stringprep_profile stringprep_xmpp_resourceprep[] = {
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
+  {STRINGPREP_NFKC, 0, 0},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
+  {STRINGPREP_BIDI, 0, 0},
+  {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
+  {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
+  {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
+   stringprep_rfc3454_A_1},
+  {0}
+};
+
+const Stringprep_profile stringprep_plain[] = {
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
+  {STRINGPREP_BIDI, 0, 0},
+  {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
+  {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
+  {0}
+};
+
+const Stringprep_profile stringprep_trace[] = {
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
+  {STRINGPREP_BIDI, 0, 0},
+  {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
+  {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
+  {0}
+};
+
+const Stringprep_table_element stringprep_iscsi_prohibit[] = {
+  /* NB, since start == 0, we must have that end != 0 for the
+     end-of-table logic to work. */
+  {0x0000, 1},                 /* [ASCII CONTROL CHARACTERS and SPACE through ,] */
+  {0x0001},
+  {0x0002},
+  {0x0003},
+  {0x0004},
+  {0x0005},
+  {0x0006},
+  {0x0007},
+  {0x0008},
+  {0x0009},
+  {0x000A},
+  {0x000B},
+  {0x000C},
+  {0x000D},
+  {0x000E},
+  {0x000F},
+  {0x0010},
+  {0x0011},
+  {0x0012},
+  {0x0013},
+  {0x0014},
+  {0x0015},
+  {0x0016},
+  {0x0017},
+  {0x0018},
+  {0x0019},
+  {0x001A},
+  {0x001B},
+  {0x001C},
+  {0x001D},
+  {0x001E},
+  {0x001F},
+  {0x0020},
+  {0x0021},
+  {0x0022},
+  {0x0023},
+  {0x0024},
+  {0x0025},
+  {0x0026},
+  {0x0027},
+  {0x0028},
+  {0x0029},
+  {0x002A},
+  {0x002B},
+  {0x002C},
+  {0x002F},                    /* [ASCII /] */
+  {0x003B},                    /* [ASCII ; through @] */
+  {0x003C},
+  {0x003D},
+  {0x003E},
+  {0x003F},
+  {0x0040},
+  {0x005B},                    /* [ASCII [ through `] */
+  {0x005C},
+  {0x005D},
+  {0x005E},
+  {0x005F},
+  {0x0060},
+  {0x007B},                    /* [ASCII { through DEL] */
+  {0x007C},
+  {0x007D},
+  {0x007E},
+  {0x007F},
+  {0x3002},                    /* ideographic full stop */
+  {0}
+};
+
+const Stringprep_profile stringprep_iscsi[] = {
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_2},
+  {STRINGPREP_NFKC, 0, 0},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_1},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_iscsi_prohibit},
+  {STRINGPREP_BIDI, 0, 0},
+  {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
+  {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
+  {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
+   stringprep_rfc3454_A_1},
+  {0}
+};
+
+const Stringprep_table_element stringprep_saslprep_space_map[] = {
+  {0x0000A0, 0, {0x0020}},     /* 00A0; NO-BREAK SPACE */
+  {0x001680, 0, {0x0020}},     /* 1680; OGHAM SPACE MARK */
+  {0x002000, 0, {0x0020}},     /* 2000; EN QUAD */
+  {0x002001, 0, {0x0020}},     /* 2001; EM QUAD */
+  {0x002002, 0, {0x0020}},     /* 2002; EN SPACE */
+  {0x002003, 0, {0x0020}},     /* 2003; EM SPACE */
+  {0x002004, 0, {0x0020}},     /* 2004; THREE-PER-EM SPACE */
+  {0x002005, 0, {0x0020}},     /* 2005; FOUR-PER-EM SPACE */
+  {0x002006, 0, {0x0020}},     /* 2006; SIX-PER-EM SPACE */
+  {0x002007, 0, {0x0020}},     /* 2007; FIGURE SPACE */
+  {0x002008, 0, {0x0020}},     /* 2008; PUNCTUATION SPACE */
+  {0x002009, 0, {0x0020}},     /* 2009; THIN SPACE */
+  {0x00200A, 0, {0x0020}},     /* 200A; HAIR SPACE */
+  {0x00200B, 0, {0x0020}},     /* 200B; ZERO WIDTH SPACE */
+  {0x00202F, 0, {0x0020}},     /* 202F; NARROW NO-BREAK SPACE */
+  {0x00205F, 0, {0x0020}},     /* 205F; MEDIUM MATHEMATICAL SPACE */
+  {0x003000, 0, {0x0020}},     /* 3000; IDEOGRAPHIC SPACE */
+  {0}
+};
+
+const Stringprep_profile stringprep_saslprep[] = {
+  {STRINGPREP_MAP_TABLE, 0, stringprep_saslprep_space_map},
+  {STRINGPREP_MAP_TABLE, 0, stringprep_rfc3454_B_1},
+  {STRINGPREP_NFKC, 0, 0},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_1_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_1},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_2_2},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_3},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_4},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_5},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_6},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_7},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_9},
+  {STRINGPREP_BIDI, 0, 0},
+  {STRINGPREP_BIDI_PROHIBIT_TABLE, 0, stringprep_rfc3454_C_8},
+  {STRINGPREP_BIDI_RAL_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_1},
+  {STRINGPREP_BIDI_L_TABLE, ~STRINGPREP_NO_BIDI, stringprep_rfc3454_D_2},
+  {STRINGPREP_UNASSIGNED_TABLE, ~STRINGPREP_NO_UNASSIGNED,
+   stringprep_rfc3454_A_1},
+  {0}
+};
diff --git a/lib/punycode.c b/lib/punycode.c
new file mode 100644 (file)
index 0000000..987767c
--- /dev/null
@@ -0,0 +1,457 @@
+/* punycode.c --- Implementation of punycode used to ASCII encode IDN's.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+/*
+ * This file is derived from RFC 3492bis written by Adam M. Costello.
+ *
+ * Disclaimer and license: Regarding this entire document or any
+ * portion of it (including the pseudocode and C code), the author
+ * makes no guarantees and is not responsible for any damage resulting
+ * from its use.  The author grants irrevocable permission to anyone
+ * to use, modify, and distribute it in any way that does not diminish
+ * the rights of anyone else to use, modify, and distribute it,
+ * provided that redistributed derivative works do not contain
+ * misleading author or version information.  Derivative works need
+ * not be licensed under similar terms.
+ *
+ * Copyright (C) The Internet Society (2003).  All Rights Reserved.
+ *
+ * This document and translations of it may be copied and furnished to
+ * others, and derivative works that comment on or otherwise explain it
+ * or assist in its implementation may be prepared, copied, published
+ * and distributed, in whole or in part, without restriction of any
+ * kind, provided that the above copyright notice and this paragraph are
+ * included on all such copies and derivative works.  However, this
+ * document itself may not be modified in any way, such as by removing
+ * the copyright notice or references to the Internet Society or other
+ * Internet organizations, except as needed for the purpose of
+ * developing Internet standards in which case the procedures for
+ * copyrights defined in the Internet Standards process must be
+ * followed, or as required to translate it into languages other than
+ * English.
+ *
+ * The limited permissions granted above are perpetual and will not be
+ * revoked by the Internet Society or its successors or assigns.
+ *
+ * This document and the information contained herein is provided on an
+ * "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ * TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#include <config.h>
+#include <string.h>
+
+#include "punycode.h"
+
+/*** Bootstring parameters for Punycode ***/
+
+enum
+{ base = 36, tmin = 1, tmax = 26, skew = 38, damp = 700,
+  initial_bias = 72, initial_n = 0x80, delimiter = 0x2D
+};
+
+/* basic(cp) tests whether cp is a basic code point: */
+#define basic(cp) ((punycode_uint)(cp) < 0x80)
+
+/* delim(cp) tests whether cp is a delimiter: */
+#define delim(cp) ((cp) == delimiter)
+
+/* decode_digit(cp) returns the numeric value of a basic code */
+/* point (for use in representing integers) in the range 0 to */
+/* base-1, or base if cp does not represent a value.          */
+
+static punycode_uint
+decode_digit (punycode_uint cp)
+{
+  return cp - 48 < 10 ? cp - 22 : cp - 65 < 26 ? cp - 65 :
+    cp - 97 < 26 ? cp - 97 : base;
+}
+
+/* encode_digit(d,flag) returns the basic code point whose value      */
+/* (when used for representing integers) is d, which needs to be in   */
+/* the range 0 to base-1.  The lowercase form is used unless flag is  */
+/* nonzero, in which case the uppercase form is used.  The behavior   */
+/* is undefined if flag is nonzero and digit d has no uppercase form. */
+
+static char
+encode_digit (punycode_uint d, int flag)
+{
+  return d + 22 + 75 * (d < 26) - ((flag != 0) << 5);
+  /*  0..25 map to ASCII a..z or A..Z */
+  /* 26..35 map to ASCII 0..9         */
+}
+
+/* flagged(bcp) tests whether a basic code point is flagged */
+/* (uppercase).  The behavior is undefined if bcp is not a  */
+/* basic code point.                                        */
+
+#define flagged(bcp) ((punycode_uint)(bcp) - 65 < 26)
+
+/* encode_basic(bcp,flag) forces a basic code point to lowercase */
+/* if flag is zero, uppercase if flag is nonzero, and returns    */
+/* the resulting code point.  The code point is unchanged if it  */
+/* is caseless.  The behavior is undefined if bcp is not a basic */
+/* code point.                                                   */
+
+static char
+encode_basic (punycode_uint bcp, int flag)
+{
+  bcp -= (bcp - 97 < 26) << 5;
+  return bcp + ((!flag && (bcp - 65 < 26)) << 5);
+}
+
+/*** Platform-specific constants ***/
+
+/* maxint is the maximum value of a punycode_uint variable: */
+static const punycode_uint maxint = -1;
+/* Because maxint is unsigned, -1 becomes the maximum value. */
+
+/*** Bias adaptation function ***/
+
+static punycode_uint
+adapt (punycode_uint delta, punycode_uint numpoints, int firsttime)
+{
+  punycode_uint k;
+
+  delta = firsttime ? delta / damp : delta >> 1;
+  /* delta >> 1 is a faster way of doing delta / 2 */
+  delta += delta / numpoints;
+
+  for (k = 0; delta > ((base - tmin) * tmax) / 2; k += base)
+    {
+      delta /= base - tmin;
+    }
+
+  return k + (base - tmin + 1) * delta / (delta + skew);
+}
+
+/*** Main encode function ***/
+
+/**
+ * punycode_encode - encode Unicode to Punycode
+ * @input_length: The number of code points in the @input array and
+ *   the number of flags in the @case_flags array.
+ * @input: An array of code points.  They are presumed to be Unicode
+ *   code points, but that is not strictly REQUIRED.  The array
+ *   contains code points, not code units.  UTF-16 uses code units
+ *   D800 through DFFF to refer to code points 10000..10FFFF.  The
+ *   code points D800..DFFF do not occur in any valid Unicode string.
+ *   The code points that can occur in Unicode strings (0..D7FF and
+ *   E000..10FFFF) are also called Unicode scalar values.
+ * @case_flags: A %NULL pointer or an array of boolean values parallel
+ *   to the @input array.  Nonzero (true, flagged) suggests that the
+ *   corresponding Unicode character be forced to uppercase after
+ *   being decoded (if possible), and zero (false, unflagged) suggests
+ *   that it be forced to lowercase (if possible).  ASCII code points
+ *   (0..7F) are encoded literally, except that ASCII letters are
+ *   forced to uppercase or lowercase according to the corresponding
+ *   case flags.  If @case_flags is a %NULL pointer then ASCII letters
+ *   are left as they are, and other code points are treated as
+ *   unflagged.
+ * @output_length: The caller passes in the maximum number of ASCII
+ *   code points that it can receive.  On successful return it will
+ *   contain the number of ASCII code points actually output.
+ * @output: An array of ASCII code points.  It is *not*
+ *   null-terminated; it will contain zeros if and only if the @input
+ *   contains zeros.  (Of course the caller can leave room for a
+ *   terminator and add one if needed.)
+ *
+ * Converts a sequence of code points (presumed to be Unicode code
+ * points) to Punycode.
+ *
+ * Return value: The return value can be any of the #Punycode_status
+ *   values defined above except %PUNYCODE_BAD_INPUT.  If not
+ *   %PUNYCODE_SUCCESS, then @output_size and @output might contain
+ *   garbage.
+ **/
+int
+punycode_encode (size_t input_length,
+                const punycode_uint input[],
+                const unsigned char case_flags[],
+                size_t * output_length, char output[])
+{
+  punycode_uint input_len, n, delta, h, b, bias, j, m, q, k, t;
+  size_t out, max_out;
+
+  /* The Punycode spec assumes that the input length is the same type */
+  /* of integer as a code point, so we need to convert the size_t to  */
+  /* a punycode_uint, which could overflow.                           */
+
+  if (input_length > maxint)
+    return punycode_overflow;
+  input_len = (punycode_uint) input_length;
+
+  /* Initialize the state: */
+
+  n = initial_n;
+  delta = 0;
+  out = 0;
+  max_out = *output_length;
+  bias = initial_bias;
+
+  /* Handle the basic code points: */
+
+  for (j = 0; j < input_len; ++j)
+    {
+      if (basic (input[j]))
+       {
+         if (max_out - out < 2)
+           return punycode_big_output;
+         output[out++] = case_flags ?
+           encode_basic (input[j], case_flags[j]) : (char) input[j];
+       }
+      /* else if (input[j] < n) return punycode_bad_input; */
+      /* (not needed for Punycode with unsigned code points) */
+    }
+
+  h = b = (punycode_uint) out;
+  /* cannot overflow because out <= input_len <= maxint */
+
+  /* h is the number of code points that have been handled, b is the  */
+  /* number of basic code points, and out is the number of ASCII code */
+  /* points that have been output.                                    */
+
+  if (b > 0)
+    output[out++] = delimiter;
+
+  /* Main encoding loop: */
+
+  while (h < input_len)
+    {
+      /* All non-basic code points < n have been     */
+      /* handled already.  Find the next larger one: */
+
+      for (m = maxint, j = 0; j < input_len; ++j)
+       {
+         /* if (basic(input[j])) continue; */
+         /* (not needed for Punycode) */
+         if (input[j] >= n && input[j] < m)
+           m = input[j];
+       }
+
+      /* Increase delta enough to advance the decoder's    */
+      /* <n,i> state to <m,0>, but guard against overflow: */
+
+      if (m - n > (maxint - delta) / (h + 1))
+       return punycode_overflow;
+      delta += (m - n) * (h + 1);
+      n = m;
+
+      for (j = 0; j < input_len; ++j)
+       {
+         /* Punycode does not need to check whether input[j] is basic: */
+         if (input[j] < n /* || basic(input[j]) */ )
+           {
+             if (++delta == 0)
+               return punycode_overflow;
+           }
+
+         if (input[j] == n)
+           {
+             /* Represent delta as a generalized variable-length integer: */
+
+             for (q = delta, k = base;; k += base)
+               {
+                 if (out >= max_out)
+                   return punycode_big_output;
+                 t = k <= bias /* + tmin */ ? tmin :   /* +tmin not needed */
+                   k >= bias + tmax ? tmax : k - bias;
+                 if (q < t)
+                   break;
+                 output[out++] = encode_digit (t + (q - t) % (base - t), 0);
+                 q = (q - t) / (base - t);
+               }
+
+             output[out++] = encode_digit (q, case_flags && case_flags[j]);
+             bias = adapt (delta, h + 1, h == b);
+             delta = 0;
+             ++h;
+           }
+       }
+
+      ++delta, ++n;
+    }
+
+  *output_length = out;
+  return punycode_success;
+}
+
+/*** Main decode function ***/
+
+/**
+ * punycode_decode - decode Punycode to Unicode
+ * @input_length: The number of ASCII code points in the @input array.
+ * @input: An array of ASCII code points (0..7F).
+ * @output_length: The caller passes in the maximum number of code
+ *   points that it can receive into the @output array (which is also
+ *   the maximum number of flags that it can receive into the
+ *   @case_flags array, if @case_flags is not a %NULL pointer).  On
+ *   successful return it will contain the number of code points
+ *   actually output (which is also the number of flags actually
+ *   output, if case_flags is not a null pointer).  The decoder will
+ *   never need to output more code points than the number of ASCII
+ *   code points in the input, because of the way the encoding is
+ *   defined.  The number of code points output cannot exceed the
+ *   maximum possible value of a punycode_uint, even if the supplied
+ *   @output_length is greater than that.
+ * @output: An array of code points like the input argument of
+ *   punycode_encode() (see above).
+ * @case_flags: A %NULL pointer (if the flags are not needed by the
+ *   caller) or an array of boolean values parallel to the @output
+ *   array.  Nonzero (true, flagged) suggests that the corresponding
+ *   Unicode character be forced to uppercase by the caller (if
+ *   possible), and zero (false, unflagged) suggests that it be forced
+ *   to lowercase (if possible).  ASCII code points (0..7F) are output
+ *   already in the proper case, but their flags will be set
+ *   appropriately so that applying the flags would be harmless.
+ *
+ * Converts Punycode to a sequence of code points (presumed to be
+ * Unicode code points).
+ *
+ * Return value: The return value can be any of the #Punycode_status
+ *   values defined above.  If not %PUNYCODE_SUCCESS, then
+ *   @output_length, @output, and @case_flags might contain garbage.
+ *
+ **/
+int
+punycode_decode (size_t input_length,
+                const char input[],
+                size_t * output_length,
+                punycode_uint output[], unsigned char case_flags[])
+{
+  punycode_uint n, out, i, max_out, bias, oldi, w, k, digit, t;
+  size_t b, j, in;
+
+  /* Initialize the state: */
+
+  n = initial_n;
+  out = i = 0;
+  max_out = *output_length > maxint ? maxint
+    : (punycode_uint) * output_length;
+  bias = initial_bias;
+
+  /* Handle the basic code points:  Let b be the number of input code */
+  /* points before the last delimiter, or 0 if there is none, then    */
+  /* copy the first b code points to the output.                      */
+
+  for (b = j = 0; j < input_length; ++j)
+    if (delim (input[j]))
+      b = j;
+  if (b > max_out)
+    return punycode_big_output;
+
+  for (j = 0; j < b; ++j)
+    {
+      if (case_flags)
+       case_flags[out] = flagged (input[j]);
+      if (!basic (input[j]))
+       return punycode_bad_input;
+      output[out++] = input[j];
+    }
+
+  /* Main decoding loop:  Start just after the last delimiter if any  */
+  /* basic code points were copied; start at the beginning otherwise. */
+
+  for (in = b > 0 ? b + 1 : 0; in < input_length; ++out)
+    {
+
+      /* in is the index of the next ASCII code point to be consumed, */
+      /* and out is the number of code points in the output array.    */
+
+      /* Decode a generalized variable-length integer into delta,  */
+      /* which gets added to i.  The overflow checking is easier   */
+      /* if we increase i as we go, then subtract off its starting */
+      /* value at the end to obtain delta.                         */
+
+      for (oldi = i, w = 1, k = base;; k += base)
+       {
+         if (in >= input_length)
+           return punycode_bad_input;
+         digit = decode_digit (input[in++]);
+         if (digit >= base)
+           return punycode_bad_input;
+         if (digit > (maxint - i) / w)
+           return punycode_overflow;
+         i += digit * w;
+         t = k <= bias /* + tmin */ ? tmin :   /* +tmin not needed */
+           k >= bias + tmax ? tmax : k - bias;
+         if (digit < t)
+           break;
+         if (w > maxint / (base - t))
+           return punycode_overflow;
+         w *= (base - t);
+       }
+
+      bias = adapt (i - oldi, out + 1, oldi == 0);
+
+      /* i was supposed to wrap around from out+1 to 0,   */
+      /* incrementing n each time, so we'll fix that now: */
+
+      if (i / (out + 1) > maxint - n)
+       return punycode_overflow;
+      n += i / (out + 1);
+      i %= (out + 1);
+
+      /* Insert n at position i of the output: */
+
+      /* not needed for Punycode: */
+      /* if (basic(n)) return punycode_invalid_input; */
+      if (out >= max_out)
+       return punycode_big_output;
+
+      if (case_flags)
+       {
+         memmove (case_flags + i + 1, case_flags + i, out - i);
+         /* Case of last ASCII code point determines case flag: */
+         case_flags[i] = flagged (input[in - 1]);
+       }
+
+      memmove (output + i + 1, output + i, (out - i) * sizeof *output);
+      output[i++] = n;
+    }
+
+  *output_length = (size_t) out;
+  /* cannot overflow because out <= old value of *output_length */
+  return punycode_success;
+}
+
+/**
+ * punycode_uint
+ *
+ * Unicode code point data type, this is always a 32 bit unsigned
+ * integer.
+ */
+
+/**
+ * Punycode_status
+ * @PUNYCODE_SUCCESS: Successful operation.  This value is guaranteed
+ *   to always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * @PUNYCODE_BAD_INPUT: Input is invalid.
+ * @PUNYCODE_BIG_OUTPUT: Output would exceed the space provided.
+ * @PUNYCODE_OVERFLOW: Input needs wider integers to process.
+ *
+ * Enumerated return codes of punycode_encode() and punycode_decode().
+ * The value 0 is guaranteed to always correspond to success.
+ */
diff --git a/lib/punycode.h b/lib/punycode.h
new file mode 100644 (file)
index 0000000..61b1b72
--- /dev/null
@@ -0,0 +1,230 @@
+/* punycode.h --- Declarations for punycode functions.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+/*
+ * This file is derived from RFC 3492bis written by Adam M. Costello.
+ *
+ * Disclaimer and license: Regarding this entire document or any
+ * portion of it (including the pseudocode and C code), the author
+ * makes no guarantees and is not responsible for any damage resulting
+ * from its use.  The author grants irrevocable permission to anyone
+ * to use, modify, and distribute it in any way that does not diminish
+ * the rights of anyone else to use, modify, and distribute it,
+ * provided that redistributed derivative works do not contain
+ * misleading author or version information.  Derivative works need
+ * not be licensed under similar terms.
+ *
+ * Copyright (C) The Internet Society (2003).  All Rights Reserved.
+ *
+ * This document and translations of it may be copied and furnished to
+ * others, and derivative works that comment on or otherwise explain it
+ * or assist in its implementation may be prepared, copied, published
+ * and distributed, in whole or in part, without restriction of any
+ * kind, provided that the above copyright notice and this paragraph are
+ * included on all such copies and derivative works.  However, this
+ * document itself may not be modified in any way, such as by removing
+ * the copyright notice or references to the Internet Society or other
+ * Internet organizations, except as needed for the purpose of
+ * developing Internet standards in which case the procedures for
+ * copyrights defined in the Internet Standards process must be
+ * followed, or as required to translate it into languages other than
+ * English.
+ *
+ * The limited permissions granted above are perpetual and will not be
+ * revoked by the Internet Society or its successors or assigns.
+ *
+ * This document and the information contained herein is provided on an
+ * "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ * TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef PUNYCODE_H
+# define PUNYCODE_H
+
+# ifndef IDNAPI
+#  if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY
+#   define IDNAPI __attribute__((__visibility__("default")))
+#  elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllexport)
+#  elif defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllimport)
+#  else
+#   define IDNAPI
+#  endif
+# endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <stddef.h>            /* size_t */
+#include <idn-int.h>           /* uint32_t */
+
+  enum punycode_status
+  {
+    punycode_success = 0,
+    punycode_bad_input = 1,    /* Input is invalid.                       */
+    punycode_big_output = 2,   /* Output would exceed the space provided. */
+    punycode_overflow = 3      /* Wider integers needed to process input. */
+  };
+
+  typedef enum
+  {
+    PUNYCODE_SUCCESS = punycode_success,
+    PUNYCODE_BAD_INPUT = punycode_bad_input,
+    PUNYCODE_BIG_OUTPUT = punycode_big_output,
+    PUNYCODE_OVERFLOW = punycode_overflow
+  } Punycode_status;
+
+  extern IDNAPI const char *punycode_strerror (Punycode_status rc);
+
+/* punycode_uint needs to be unsigned and needs to be */
+/* at least 26 bits wide.                             */
+
+  typedef uint32_t punycode_uint;
+
+  extern IDNAPI int punycode_encode (size_t input_length,
+                                    const punycode_uint input[],
+                                    const unsigned char case_flags[],
+                                    size_t * output_length, char output[]);
+
+/*
+    punycode_encode() converts a sequence of code points (presumed to be
+    Unicode code points) to Punycode.
+
+    Input arguments (to be supplied by the caller):
+
+        input_length
+            The number of code points in the input array and the number
+            of flags in the case_flags array.
+
+        input
+            An array of code points.  They are presumed to be Unicode
+            code points, but that is not strictly REQUIRED.  The
+            array contains code points, not code units.  UTF-16 uses
+            code units D800 through DFFF to refer to code points
+            10000..10FFFF.  The code points D800..DFFF do not occur in
+            any valid Unicode string.  The code points that can occur in
+            Unicode strings (0..D7FF and E000..10FFFF) are also called
+            Unicode scalar values.
+
+        case_flags
+            A null pointer or an array of boolean values parallel to
+            the input array.  Nonzero (true, flagged) suggests that the
+            corresponding Unicode character be forced to uppercase after
+            being decoded (if possible), and zero (false, unflagged)
+            suggests that it be forced to lowercase (if possible).
+            ASCII code points (0..7F) are encoded literally, except that
+            ASCII letters are forced to uppercase or lowercase according
+            to the corresponding case flags.  If case_flags is a null
+            pointer then ASCII letters are left as they are, and other
+            code points are treated as unflagged.
+
+    Output arguments (to be filled in by the function):
+
+        output
+            An array of ASCII code points.  It is *not* null-terminated;
+            it will contain zeros if and only if the input contains
+            zeros.  (Of course the caller can leave room for a
+            terminator and add one if needed.)
+
+    Input/output arguments (to be supplied by the caller and overwritten
+    by the function):
+
+        output_length
+            The caller passes in the maximum number of ASCII code points
+            that it can receive.  On successful return it will contain
+            the number of ASCII code points actually output.
+
+    Return value:
+
+        Can be any of the punycode_status values defined above except
+        punycode_bad_input.  If not punycode_success, then output_size
+        and output might contain garbage.
+*/
+
+  extern IDNAPI int punycode_decode (size_t input_length,
+                                    const char input[],
+                                    size_t * output_length,
+                                    punycode_uint output[],
+                                    unsigned char case_flags[]);
+
+/*
+    punycode_decode() converts Punycode to a sequence of code points
+    (presumed to be Unicode code points).
+
+    Input arguments (to be supplied by the caller):
+
+        input_length
+            The number of ASCII code points in the input array.
+
+        input
+            An array of ASCII code points (0..7F).
+
+    Output arguments (to be filled in by the function):
+
+        output
+            An array of code points like the input argument of
+            punycode_encode() (see above).
+
+        case_flags
+            A null pointer (if the flags are not needed by the caller)
+            or an array of boolean values parallel to the output array.
+            Nonzero (true, flagged) suggests that the corresponding
+            Unicode character be forced to uppercase by the caller (if
+            possible), and zero (false, unflagged) suggests that it
+            be forced to lowercase (if possible).  ASCII code points
+            (0..7F) are output already in the proper case, but their
+            flags will be set appropriately so that applying the flags
+            would be harmless.
+
+    Input/output arguments (to be supplied by the caller and overwritten
+    by the function):
+
+        output_length
+            The caller passes in the maximum number of code points
+            that it can receive into the output array (which is also
+            the maximum number of flags that it can receive into the
+            case_flags array, if case_flags is not a null pointer).  On
+            successful return it will contain the number of code points
+            actually output (which is also the number of flags actually
+            output, if case_flags is not a null pointer).  The decoder
+            will never need to output more code points than the number
+            of ASCII code points in the input, because of the way the
+            encoding is defined.  The number of code points output
+            cannot exceed the maximum possible value of a punycode_uint,
+            even if the supplied output_length is greater than that.
+
+    Return value:
+
+        Can be any of the punycode_status values defined above.  If not
+        punycode_success, then output_length, output, and case_flags
+        might contain garbage.
+*/
+
+#ifdef __cplusplus
+}
+#endif
+#endif                         /* PUNYCODE_H */
diff --git a/lib/rfc3454.c b/lib/rfc3454.c
new file mode 100644 (file)
index 0000000..856b67a
--- /dev/null
@@ -0,0 +1,4252 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit gen-stringprep-tables.pl and re-run.  */
+
+#include "stringprep.h"
+
+/*
+ * So we can use this material.  There may be other legal analysis that
+ * also reach the same conclusion.
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_A_1[] = {
+  { 0x000221           },                                            /* 0221 */
+  { 0x000234, 0x00024F },                                       /* 0234-024F */
+  { 0x0002AE, 0x0002AF },                                       /* 02AE-02AF */
+  { 0x0002EF, 0x0002FF },                                       /* 02EF-02FF */
+  { 0x000350, 0x00035F },                                       /* 0350-035F */
+  { 0x000370, 0x000373 },                                       /* 0370-0373 */
+  { 0x000376, 0x000379 },                                       /* 0376-0379 */
+  { 0x00037B, 0x00037D },                                       /* 037B-037D */
+  { 0x00037F, 0x000383 },                                       /* 037F-0383 */
+  { 0x00038B           },                                            /* 038B */
+  { 0x00038D           },                                            /* 038D */
+  { 0x0003A2           },                                            /* 03A2 */
+  { 0x0003CF           },                                            /* 03CF */
+  { 0x0003F7, 0x0003FF },                                       /* 03F7-03FF */
+  { 0x000487           },                                            /* 0487 */
+  { 0x0004CF           },                                            /* 04CF */
+  { 0x0004F6, 0x0004F7 },                                       /* 04F6-04F7 */
+  { 0x0004FA, 0x0004FF },                                       /* 04FA-04FF */
+  { 0x000510, 0x000530 },                                       /* 0510-0530 */
+  { 0x000557, 0x000558 },                                       /* 0557-0558 */
+  { 0x000560           },                                            /* 0560 */
+  { 0x000588           },                                            /* 0588 */
+  { 0x00058B, 0x000590 },                                       /* 058B-0590 */
+  { 0x0005A2           },                                            /* 05A2 */
+  { 0x0005BA           },                                            /* 05BA */
+  { 0x0005C5, 0x0005CF },                                       /* 05C5-05CF */
+  { 0x0005EB, 0x0005EF },                                       /* 05EB-05EF */
+  { 0x0005F5, 0x00060B },                                       /* 05F5-060B */
+  { 0x00060D, 0x00061A },                                       /* 060D-061A */
+  { 0x00061C, 0x00061E },                                       /* 061C-061E */
+  { 0x000620           },                                            /* 0620 */
+  { 0x00063B, 0x00063F },                                       /* 063B-063F */
+  { 0x000656, 0x00065F },                                       /* 0656-065F */
+  { 0x0006EE, 0x0006EF },                                       /* 06EE-06EF */
+  { 0x0006FF           },                                            /* 06FF */
+  { 0x00070E           },                                            /* 070E */
+  { 0x00072D, 0x00072F },                                       /* 072D-072F */
+  { 0x00074B, 0x00077F },                                       /* 074B-077F */
+  { 0x0007B2, 0x000900 },                                       /* 07B2-0900 */
+  { 0x000904           },                                            /* 0904 */
+  { 0x00093A, 0x00093B },                                       /* 093A-093B */
+  { 0x00094E, 0x00094F },                                       /* 094E-094F */
+  { 0x000955, 0x000957 },                                       /* 0955-0957 */
+  { 0x000971, 0x000980 },                                       /* 0971-0980 */
+  { 0x000984           },                                            /* 0984 */
+  { 0x00098D, 0x00098E },                                       /* 098D-098E */
+  { 0x000991, 0x000992 },                                       /* 0991-0992 */
+  { 0x0009A9           },                                            /* 09A9 */
+  { 0x0009B1           },                                            /* 09B1 */
+  { 0x0009B3, 0x0009B5 },                                       /* 09B3-09B5 */
+  { 0x0009BA, 0x0009BB },                                       /* 09BA-09BB */
+  { 0x0009BD           },                                            /* 09BD */
+  { 0x0009C5, 0x0009C6 },                                       /* 09C5-09C6 */
+  { 0x0009C9, 0x0009CA },                                       /* 09C9-09CA */
+  { 0x0009CE, 0x0009D6 },                                       /* 09CE-09D6 */
+  { 0x0009D8, 0x0009DB },                                       /* 09D8-09DB */
+  { 0x0009DE           },                                            /* 09DE */
+  { 0x0009E4, 0x0009E5 },                                       /* 09E4-09E5 */
+  { 0x0009FB, 0x000A01 },                                       /* 09FB-0A01 */
+  { 0x000A03, 0x000A04 },                                       /* 0A03-0A04 */
+  { 0x000A0B, 0x000A0E },                                       /* 0A0B-0A0E */
+  { 0x000A11, 0x000A12 },                                       /* 0A11-0A12 */
+  { 0x000A29           },                                            /* 0A29 */
+  { 0x000A31           },                                            /* 0A31 */
+  { 0x000A34           },                                            /* 0A34 */
+  { 0x000A37           },                                            /* 0A37 */
+  { 0x000A3A, 0x000A3B },                                       /* 0A3A-0A3B */
+  { 0x000A3D           },                                            /* 0A3D */
+  { 0x000A43, 0x000A46 },                                       /* 0A43-0A46 */
+  { 0x000A49, 0x000A4A },                                       /* 0A49-0A4A */
+  { 0x000A4E, 0x000A58 },                                       /* 0A4E-0A58 */
+  { 0x000A5D           },                                            /* 0A5D */
+  { 0x000A5F, 0x000A65 },                                       /* 0A5F-0A65 */
+  { 0x000A75, 0x000A80 },                                       /* 0A75-0A80 */
+  { 0x000A84           },                                            /* 0A84 */
+  { 0x000A8C           },                                            /* 0A8C */
+  { 0x000A8E           },                                            /* 0A8E */
+  { 0x000A92           },                                            /* 0A92 */
+  { 0x000AA9           },                                            /* 0AA9 */
+  { 0x000AB1           },                                            /* 0AB1 */
+  { 0x000AB4           },                                            /* 0AB4 */
+  { 0x000ABA, 0x000ABB },                                       /* 0ABA-0ABB */
+  { 0x000AC6           },                                            /* 0AC6 */
+  { 0x000ACA           },                                            /* 0ACA */
+  { 0x000ACE, 0x000ACF },                                       /* 0ACE-0ACF */
+  { 0x000AD1, 0x000ADF },                                       /* 0AD1-0ADF */
+  { 0x000AE1, 0x000AE5 },                                       /* 0AE1-0AE5 */
+  { 0x000AF0, 0x000B00 },                                       /* 0AF0-0B00 */
+  { 0x000B04           },                                            /* 0B04 */
+  { 0x000B0D, 0x000B0E },                                       /* 0B0D-0B0E */
+  { 0x000B11, 0x000B12 },                                       /* 0B11-0B12 */
+  { 0x000B29           },                                            /* 0B29 */
+  { 0x000B31           },                                            /* 0B31 */
+  { 0x000B34, 0x000B35 },                                       /* 0B34-0B35 */
+  { 0x000B3A, 0x000B3B },                                       /* 0B3A-0B3B */
+  { 0x000B44, 0x000B46 },                                       /* 0B44-0B46 */
+  { 0x000B49, 0x000B4A },                                       /* 0B49-0B4A */
+  { 0x000B4E, 0x000B55 },                                       /* 0B4E-0B55 */
+  { 0x000B58, 0x000B5B },                                       /* 0B58-0B5B */
+  { 0x000B5E           },                                            /* 0B5E */
+  { 0x000B62, 0x000B65 },                                       /* 0B62-0B65 */
+  { 0x000B71, 0x000B81 },                                       /* 0B71-0B81 */
+  { 0x000B84           },                                            /* 0B84 */
+  { 0x000B8B, 0x000B8D },                                       /* 0B8B-0B8D */
+  { 0x000B91           },                                            /* 0B91 */
+  { 0x000B96, 0x000B98 },                                       /* 0B96-0B98 */
+  { 0x000B9B           },                                            /* 0B9B */
+  { 0x000B9D           },                                            /* 0B9D */
+  { 0x000BA0, 0x000BA2 },                                       /* 0BA0-0BA2 */
+  { 0x000BA5, 0x000BA7 },                                       /* 0BA5-0BA7 */
+  { 0x000BAB, 0x000BAD },                                       /* 0BAB-0BAD */
+  { 0x000BB6           },                                            /* 0BB6 */
+  { 0x000BBA, 0x000BBD },                                       /* 0BBA-0BBD */
+  { 0x000BC3, 0x000BC5 },                                       /* 0BC3-0BC5 */
+  { 0x000BC9           },                                            /* 0BC9 */
+  { 0x000BCE, 0x000BD6 },                                       /* 0BCE-0BD6 */
+  { 0x000BD8, 0x000BE6 },                                       /* 0BD8-0BE6 */
+  { 0x000BF3, 0x000C00 },                                       /* 0BF3-0C00 */
+  { 0x000C04           },                                            /* 0C04 */
+  { 0x000C0D           },                                            /* 0C0D */
+  { 0x000C11           },                                            /* 0C11 */
+  { 0x000C29           },                                            /* 0C29 */
+  { 0x000C34           },                                            /* 0C34 */
+  { 0x000C3A, 0x000C3D },                                       /* 0C3A-0C3D */
+  { 0x000C45           },                                            /* 0C45 */
+  { 0x000C49           },                                            /* 0C49 */
+  { 0x000C4E, 0x000C54 },                                       /* 0C4E-0C54 */
+  { 0x000C57, 0x000C5F },                                       /* 0C57-0C5F */
+  { 0x000C62, 0x000C65 },                                       /* 0C62-0C65 */
+  { 0x000C70, 0x000C81 },                                       /* 0C70-0C81 */
+  { 0x000C84           },                                            /* 0C84 */
+  { 0x000C8D           },                                            /* 0C8D */
+  { 0x000C91           },                                            /* 0C91 */
+  { 0x000CA9           },                                            /* 0CA9 */
+  { 0x000CB4           },                                            /* 0CB4 */
+  { 0x000CBA, 0x000CBD },                                       /* 0CBA-0CBD */
+  { 0x000CC5           },                                            /* 0CC5 */
+  { 0x000CC9           },                                            /* 0CC9 */
+  { 0x000CCE, 0x000CD4 },                                       /* 0CCE-0CD4 */
+  { 0x000CD7, 0x000CDD },                                       /* 0CD7-0CDD */
+  { 0x000CDF           },                                            /* 0CDF */
+  { 0x000CE2, 0x000CE5 },                                       /* 0CE2-0CE5 */
+  { 0x000CF0, 0x000D01 },                                       /* 0CF0-0D01 */
+  { 0x000D04           },                                            /* 0D04 */
+  { 0x000D0D           },                                            /* 0D0D */
+  { 0x000D11           },                                            /* 0D11 */
+  { 0x000D29           },                                            /* 0D29 */
+  { 0x000D3A, 0x000D3D },                                       /* 0D3A-0D3D */
+  { 0x000D44, 0x000D45 },                                       /* 0D44-0D45 */
+  { 0x000D49           },                                            /* 0D49 */
+  { 0x000D4E, 0x000D56 },                                       /* 0D4E-0D56 */
+  { 0x000D58, 0x000D5F },                                       /* 0D58-0D5F */
+  { 0x000D62, 0x000D65 },                                       /* 0D62-0D65 */
+  { 0x000D70, 0x000D81 },                                       /* 0D70-0D81 */
+  { 0x000D84           },                                            /* 0D84 */
+  { 0x000D97, 0x000D99 },                                       /* 0D97-0D99 */
+  { 0x000DB2           },                                            /* 0DB2 */
+  { 0x000DBC           },                                            /* 0DBC */
+  { 0x000DBE, 0x000DBF },                                       /* 0DBE-0DBF */
+  { 0x000DC7, 0x000DC9 },                                       /* 0DC7-0DC9 */
+  { 0x000DCB, 0x000DCE },                                       /* 0DCB-0DCE */
+  { 0x000DD5           },                                            /* 0DD5 */
+  { 0x000DD7           },                                            /* 0DD7 */
+  { 0x000DE0, 0x000DF1 },                                       /* 0DE0-0DF1 */
+  { 0x000DF5, 0x000E00 },                                       /* 0DF5-0E00 */
+  { 0x000E3B, 0x000E3E },                                       /* 0E3B-0E3E */
+  { 0x000E5C, 0x000E80 },                                       /* 0E5C-0E80 */
+  { 0x000E83           },                                            /* 0E83 */
+  { 0x000E85, 0x000E86 },                                       /* 0E85-0E86 */
+  { 0x000E89           },                                            /* 0E89 */
+  { 0x000E8B, 0x000E8C },                                       /* 0E8B-0E8C */
+  { 0x000E8E, 0x000E93 },                                       /* 0E8E-0E93 */
+  { 0x000E98           },                                            /* 0E98 */
+  { 0x000EA0           },                                            /* 0EA0 */
+  { 0x000EA4           },                                            /* 0EA4 */
+  { 0x000EA6           },                                            /* 0EA6 */
+  { 0x000EA8, 0x000EA9 },                                       /* 0EA8-0EA9 */
+  { 0x000EAC           },                                            /* 0EAC */
+  { 0x000EBA           },                                            /* 0EBA */
+  { 0x000EBE, 0x000EBF },                                       /* 0EBE-0EBF */
+  { 0x000EC5           },                                            /* 0EC5 */
+  { 0x000EC7           },                                            /* 0EC7 */
+  { 0x000ECE, 0x000ECF },                                       /* 0ECE-0ECF */
+  { 0x000EDA, 0x000EDB },                                       /* 0EDA-0EDB */
+  { 0x000EDE, 0x000EFF },                                       /* 0EDE-0EFF */
+  { 0x000F48           },                                            /* 0F48 */
+  { 0x000F6B, 0x000F70 },                                       /* 0F6B-0F70 */
+  { 0x000F8C, 0x000F8F },                                       /* 0F8C-0F8F */
+  { 0x000F98           },                                            /* 0F98 */
+  { 0x000FBD           },                                            /* 0FBD */
+  { 0x000FCD, 0x000FCE },                                       /* 0FCD-0FCE */
+  { 0x000FD0, 0x000FFF },                                       /* 0FD0-0FFF */
+  { 0x001022           },                                            /* 1022 */
+  { 0x001028           },                                            /* 1028 */
+  { 0x00102B           },                                            /* 102B */
+  { 0x001033, 0x001035 },                                       /* 1033-1035 */
+  { 0x00103A, 0x00103F },                                       /* 103A-103F */
+  { 0x00105A, 0x00109F },                                       /* 105A-109F */
+  { 0x0010C6, 0x0010CF },                                       /* 10C6-10CF */
+  { 0x0010F9, 0x0010FA },                                       /* 10F9-10FA */
+  { 0x0010FC, 0x0010FF },                                       /* 10FC-10FF */
+  { 0x00115A, 0x00115E },                                       /* 115A-115E */
+  { 0x0011A3, 0x0011A7 },                                       /* 11A3-11A7 */
+  { 0x0011FA, 0x0011FF },                                       /* 11FA-11FF */
+  { 0x001207           },                                            /* 1207 */
+  { 0x001247           },                                            /* 1247 */
+  { 0x001249           },                                            /* 1249 */
+  { 0x00124E, 0x00124F },                                       /* 124E-124F */
+  { 0x001257           },                                            /* 1257 */
+  { 0x001259           },                                            /* 1259 */
+  { 0x00125E, 0x00125F },                                       /* 125E-125F */
+  { 0x001287           },                                            /* 1287 */
+  { 0x001289           },                                            /* 1289 */
+  { 0x00128E, 0x00128F },                                       /* 128E-128F */
+  { 0x0012AF           },                                            /* 12AF */
+  { 0x0012B1           },                                            /* 12B1 */
+  { 0x0012B6, 0x0012B7 },                                       /* 12B6-12B7 */
+  { 0x0012BF           },                                            /* 12BF */
+  { 0x0012C1           },                                            /* 12C1 */
+  { 0x0012C6, 0x0012C7 },                                       /* 12C6-12C7 */
+  { 0x0012CF           },                                            /* 12CF */
+  { 0x0012D7           },                                            /* 12D7 */
+  { 0x0012EF           },                                            /* 12EF */
+  { 0x00130F           },                                            /* 130F */
+  { 0x001311           },                                            /* 1311 */
+  { 0x001316, 0x001317 },                                       /* 1316-1317 */
+  { 0x00131F           },                                            /* 131F */
+  { 0x001347           },                                            /* 1347 */
+  { 0x00135B, 0x001360 },                                       /* 135B-1360 */
+  { 0x00137D, 0x00139F },                                       /* 137D-139F */
+  { 0x0013F5, 0x001400 },                                       /* 13F5-1400 */
+  { 0x001677, 0x00167F },                                       /* 1677-167F */
+  { 0x00169D, 0x00169F },                                       /* 169D-169F */
+  { 0x0016F1, 0x0016FF },                                       /* 16F1-16FF */
+  { 0x00170D           },                                            /* 170D */
+  { 0x001715, 0x00171F },                                       /* 1715-171F */
+  { 0x001737, 0x00173F },                                       /* 1737-173F */
+  { 0x001754, 0x00175F },                                       /* 1754-175F */
+  { 0x00176D           },                                            /* 176D */
+  { 0x001771           },                                            /* 1771 */
+  { 0x001774, 0x00177F },                                       /* 1774-177F */
+  { 0x0017DD, 0x0017DF },                                       /* 17DD-17DF */
+  { 0x0017EA, 0x0017FF },                                       /* 17EA-17FF */
+  { 0x00180F           },                                            /* 180F */
+  { 0x00181A, 0x00181F },                                       /* 181A-181F */
+  { 0x001878, 0x00187F },                                       /* 1878-187F */
+  { 0x0018AA, 0x001DFF },                                       /* 18AA-1DFF */
+  { 0x001E9C, 0x001E9F },                                       /* 1E9C-1E9F */
+  { 0x001EFA, 0x001EFF },                                       /* 1EFA-1EFF */
+  { 0x001F16, 0x001F17 },                                       /* 1F16-1F17 */
+  { 0x001F1E, 0x001F1F },                                       /* 1F1E-1F1F */
+  { 0x001F46, 0x001F47 },                                       /* 1F46-1F47 */
+  { 0x001F4E, 0x001F4F },                                       /* 1F4E-1F4F */
+  { 0x001F58           },                                            /* 1F58 */
+  { 0x001F5A           },                                            /* 1F5A */
+  { 0x001F5C           },                                            /* 1F5C */
+  { 0x001F5E           },                                            /* 1F5E */
+  { 0x001F7E, 0x001F7F },                                       /* 1F7E-1F7F */
+  { 0x001FB5           },                                            /* 1FB5 */
+  { 0x001FC5           },                                            /* 1FC5 */
+  { 0x001FD4, 0x001FD5 },                                       /* 1FD4-1FD5 */
+  { 0x001FDC           },                                            /* 1FDC */
+  { 0x001FF0, 0x001FF1 },                                       /* 1FF0-1FF1 */
+  { 0x001FF5           },                                            /* 1FF5 */
+  { 0x001FFF           },                                            /* 1FFF */
+  { 0x002053, 0x002056 },                                       /* 2053-2056 */
+  { 0x002058, 0x00205E },                                       /* 2058-205E */
+  { 0x002064, 0x002069 },                                       /* 2064-2069 */
+  { 0x002072, 0x002073 },                                       /* 2072-2073 */
+  { 0x00208F, 0x00209F },                                       /* 208F-209F */
+  { 0x0020B2, 0x0020CF },                                       /* 20B2-20CF */
+  { 0x0020EB, 0x0020FF },                                       /* 20EB-20FF */
+  { 0x00213B, 0x00213C },                                       /* 213B-213C */
+  { 0x00214C, 0x002152 },                                       /* 214C-2152 */
+  { 0x002184, 0x00218F },                                       /* 2184-218F */
+  { 0x0023CF, 0x0023FF },                                       /* 23CF-23FF */
+  { 0x002427, 0x00243F },                                       /* 2427-243F */
+  { 0x00244B, 0x00245F },                                       /* 244B-245F */
+  { 0x0024FF           },                                            /* 24FF */
+  { 0x002614, 0x002615 },                                       /* 2614-2615 */
+  { 0x002618           },                                            /* 2618 */
+  { 0x00267E, 0x00267F },                                       /* 267E-267F */
+  { 0x00268A, 0x002700 },                                       /* 268A-2700 */
+  { 0x002705           },                                            /* 2705 */
+  { 0x00270A, 0x00270B },                                       /* 270A-270B */
+  { 0x002728           },                                            /* 2728 */
+  { 0x00274C           },                                            /* 274C */
+  { 0x00274E           },                                            /* 274E */
+  { 0x002753, 0x002755 },                                       /* 2753-2755 */
+  { 0x002757           },                                            /* 2757 */
+  { 0x00275F, 0x002760 },                                       /* 275F-2760 */
+  { 0x002795, 0x002797 },                                       /* 2795-2797 */
+  { 0x0027B0           },                                            /* 27B0 */
+  { 0x0027BF, 0x0027CF },                                       /* 27BF-27CF */
+  { 0x0027EC, 0x0027EF },                                       /* 27EC-27EF */
+  { 0x002B00, 0x002E7F },                                       /* 2B00-2E7F */
+  { 0x002E9A           },                                            /* 2E9A */
+  { 0x002EF4, 0x002EFF },                                       /* 2EF4-2EFF */
+  { 0x002FD6, 0x002FEF },                                       /* 2FD6-2FEF */
+  { 0x002FFC, 0x002FFF },                                       /* 2FFC-2FFF */
+  { 0x003040           },                                            /* 3040 */
+  { 0x003097, 0x003098 },                                       /* 3097-3098 */
+  { 0x003100, 0x003104 },                                       /* 3100-3104 */
+  { 0x00312D, 0x003130 },                                       /* 312D-3130 */
+  { 0x00318F           },                                            /* 318F */
+  { 0x0031B8, 0x0031EF },                                       /* 31B8-31EF */
+  { 0x00321D, 0x00321F },                                       /* 321D-321F */
+  { 0x003244, 0x003250 },                                       /* 3244-3250 */
+  { 0x00327C, 0x00327E },                                       /* 327C-327E */
+  { 0x0032CC, 0x0032CF },                                       /* 32CC-32CF */
+  { 0x0032FF           },                                            /* 32FF */
+  { 0x003377, 0x00337A },                                       /* 3377-337A */
+  { 0x0033DE, 0x0033DF },                                       /* 33DE-33DF */
+  { 0x0033FF           },                                            /* 33FF */
+  { 0x004DB6, 0x004DFF },                                       /* 4DB6-4DFF */
+  { 0x009FA6, 0x009FFF },                                       /* 9FA6-9FFF */
+  { 0x00A48D, 0x00A48F },                                       /* A48D-A48F */
+  { 0x00A4C7, 0x00ABFF },                                       /* A4C7-ABFF */
+  { 0x00D7A4, 0x00D7FF },                                       /* D7A4-D7FF */
+  { 0x00FA2E, 0x00FA2F },                                       /* FA2E-FA2F */
+  { 0x00FA6B, 0x00FAFF },                                       /* FA6B-FAFF */
+  { 0x00FB07, 0x00FB12 },                                       /* FB07-FB12 */
+  { 0x00FB18, 0x00FB1C },                                       /* FB18-FB1C */
+  { 0x00FB37           },                                            /* FB37 */
+  { 0x00FB3D           },                                            /* FB3D */
+  { 0x00FB3F           },                                            /* FB3F */
+  { 0x00FB42           },                                            /* FB42 */
+  { 0x00FB45           },                                            /* FB45 */
+  { 0x00FBB2, 0x00FBD2 },                                       /* FBB2-FBD2 */
+  { 0x00FD40, 0x00FD4F },                                       /* FD40-FD4F */
+  { 0x00FD90, 0x00FD91 },                                       /* FD90-FD91 */
+  { 0x00FDC8, 0x00FDCF },                                       /* FDC8-FDCF */
+  { 0x00FDFD, 0x00FDFF },                                       /* FDFD-FDFF */
+  { 0x00FE10, 0x00FE1F },                                       /* FE10-FE1F */
+  { 0x00FE24, 0x00FE2F },                                       /* FE24-FE2F */
+  { 0x00FE47, 0x00FE48 },                                       /* FE47-FE48 */
+  { 0x00FE53           },                                            /* FE53 */
+  { 0x00FE67           },                                            /* FE67 */
+  { 0x00FE6C, 0x00FE6F },                                       /* FE6C-FE6F */
+  { 0x00FE75           },                                            /* FE75 */
+  { 0x00FEFD, 0x00FEFE },                                       /* FEFD-FEFE */
+  { 0x00FF00           },                                            /* FF00 */
+  { 0x00FFBF, 0x00FFC1 },                                       /* FFBF-FFC1 */
+  { 0x00FFC8, 0x00FFC9 },                                       /* FFC8-FFC9 */
+  { 0x00FFD0, 0x00FFD1 },                                       /* FFD0-FFD1 */
+  { 0x00FFD8, 0x00FFD9 },                                       /* FFD8-FFD9 */
+  { 0x00FFDD, 0x00FFDF },                                       /* FFDD-FFDF */
+  { 0x00FFE7           },                                            /* FFE7 */
+  { 0x00FFEF, 0x00FFF8 },                                       /* FFEF-FFF8 */
+  { 0x010000, 0x0102FF },                                     /* 10000-102FF */
+  { 0x01031F           },                                           /* 1031F */
+  { 0x010324, 0x01032F },                                     /* 10324-1032F */
+  { 0x01034B, 0x0103FF },                                     /* 1034B-103FF */
+  { 0x010426, 0x010427 },                                     /* 10426-10427 */
+  { 0x01044E, 0x01CFFF },                                     /* 1044E-1CFFF */
+  { 0x01D0F6, 0x01D0FF },                                     /* 1D0F6-1D0FF */
+  { 0x01D127, 0x01D129 },                                     /* 1D127-1D129 */
+  { 0x01D1DE, 0x01D3FF },                                     /* 1D1DE-1D3FF */
+  { 0x01D455           },                                           /* 1D455 */
+  { 0x01D49D           },                                           /* 1D49D */
+  { 0x01D4A0, 0x01D4A1 },                                     /* 1D4A0-1D4A1 */
+  { 0x01D4A3, 0x01D4A4 },                                     /* 1D4A3-1D4A4 */
+  { 0x01D4A7, 0x01D4A8 },                                     /* 1D4A7-1D4A8 */
+  { 0x01D4AD           },                                           /* 1D4AD */
+  { 0x01D4BA           },                                           /* 1D4BA */
+  { 0x01D4BC           },                                           /* 1D4BC */
+  { 0x01D4C1           },                                           /* 1D4C1 */
+  { 0x01D4C4           },                                           /* 1D4C4 */
+  { 0x01D506           },                                           /* 1D506 */
+  { 0x01D50B, 0x01D50C },                                     /* 1D50B-1D50C */
+  { 0x01D515           },                                           /* 1D515 */
+  { 0x01D51D           },                                           /* 1D51D */
+  { 0x01D53A           },                                           /* 1D53A */
+  { 0x01D53F           },                                           /* 1D53F */
+  { 0x01D545           },                                           /* 1D545 */
+  { 0x01D547, 0x01D549 },                                     /* 1D547-1D549 */
+  { 0x01D551           },                                           /* 1D551 */
+  { 0x01D6A4, 0x01D6A7 },                                     /* 1D6A4-1D6A7 */
+  { 0x01D7CA, 0x01D7CD },                                     /* 1D7CA-1D7CD */
+  { 0x01D800, 0x01FFFD },                                     /* 1D800-1FFFD */
+  { 0x02A6D7, 0x02F7FF },                                     /* 2A6D7-2F7FF */
+  { 0x02FA1E, 0x02FFFD },                                     /* 2FA1E-2FFFD */
+  { 0x030000, 0x03FFFD },                                     /* 30000-3FFFD */
+  { 0x040000, 0x04FFFD },                                     /* 40000-4FFFD */
+  { 0x050000, 0x05FFFD },                                     /* 50000-5FFFD */
+  { 0x060000, 0x06FFFD },                                     /* 60000-6FFFD */
+  { 0x070000, 0x07FFFD },                                     /* 70000-7FFFD */
+  { 0x080000, 0x08FFFD },                                     /* 80000-8FFFD */
+  { 0x090000, 0x09FFFD },                                     /* 90000-9FFFD */
+  { 0x0A0000, 0x0AFFFD },                                     /* A0000-AFFFD */
+  { 0x0B0000, 0x0BFFFD },                                     /* B0000-BFFFD */
+  { 0x0C0000, 0x0CFFFD },                                     /* C0000-CFFFD */
+  { 0x0D0000, 0x0DFFFD },                                     /* D0000-DFFFD */
+  { 0x0E0000           },                                           /* E0000 */
+  { 0x0E0002, 0x0E001F },                                     /* E0002-E001F */
+  { 0x0E0080, 0x0EFFFD },                                     /* E0080-EFFFD */
+  { 0 },
+};
+
+
+/*
+ * E0080-EFFFD
+ * 
+ */
+
+const Stringprep_table_element stringprep_rfc3454_B_1[] = {
+  { 0x0000AD           },                          /* 00AD; ; Map to nothing */
+  { 0x00034F           },                          /* 034F; ; Map to nothing */
+  { 0x001806           },                          /* 1806; ; Map to nothing */
+  { 0x00180B           },                          /* 180B; ; Map to nothing */
+  { 0x00180C           },                          /* 180C; ; Map to nothing */
+  { 0x00180D           },                          /* 180D; ; Map to nothing */
+  { 0x00200B           },                          /* 200B; ; Map to nothing */
+  { 0x00200C           },                          /* 200C; ; Map to nothing */
+  { 0x00200D           },                          /* 200D; ; Map to nothing */
+  { 0x002060           },                          /* 2060; ; Map to nothing */
+  { 0x00FE00           },                          /* FE00; ; Map to nothing */
+  { 0x00FE01           },                          /* FE01; ; Map to nothing */
+  { 0x00FE02           },                          /* FE02; ; Map to nothing */
+  { 0x00FE03           },                          /* FE03; ; Map to nothing */
+  { 0x00FE04           },                          /* FE04; ; Map to nothing */
+  { 0x00FE05           },                          /* FE05; ; Map to nothing */
+  { 0x00FE06           },                          /* FE06; ; Map to nothing */
+  { 0x00FE07           },                          /* FE07; ; Map to nothing */
+  { 0x00FE08           },                          /* FE08; ; Map to nothing */
+  { 0x00FE09           },                          /* FE09; ; Map to nothing */
+  { 0x00FE0A           },                          /* FE0A; ; Map to nothing */
+  { 0x00FE0B           },                          /* FE0B; ; Map to nothing */
+  { 0x00FE0C           },                          /* FE0C; ; Map to nothing */
+  { 0x00FE0D           },                          /* FE0D; ; Map to nothing */
+  { 0x00FE0E           },                          /* FE0E; ; Map to nothing */
+  { 0x00FE0F           },                          /* FE0F; ; Map to nothing */
+  { 0x00FEFF           },                          /* FEFF; ; Map to nothing */
+  { 0 },
+};
+
+
+/*
+ * FEFF; ; Map to nothing
+ * 
+ */
+
+const Stringprep_table_element stringprep_rfc3454_B_2[] = {
+  { 0x000041, 0, { 0x000061 }},                      /* 0041; 0061; Case map */
+  { 0x000042, 0, { 0x000062 }},                      /* 0042; 0062; Case map */
+  { 0x000043, 0, { 0x000063 }},                      /* 0043; 0063; Case map */
+  { 0x000044, 0, { 0x000064 }},                      /* 0044; 0064; Case map */
+  { 0x000045, 0, { 0x000065 }},                      /* 0045; 0065; Case map */
+  { 0x000046, 0, { 0x000066 }},                      /* 0046; 0066; Case map */
+  { 0x000047, 0, { 0x000067 }},                      /* 0047; 0067; Case map */
+  { 0x000048, 0, { 0x000068 }},                      /* 0048; 0068; Case map */
+  { 0x000049, 0, { 0x000069 }},                      /* 0049; 0069; Case map */
+  { 0x00004A, 0, { 0x00006A }},                      /* 004A; 006A; Case map */
+  { 0x00004B, 0, { 0x00006B }},                      /* 004B; 006B; Case map */
+  { 0x00004C, 0, { 0x00006C }},                      /* 004C; 006C; Case map */
+  { 0x00004D, 0, { 0x00006D }},                      /* 004D; 006D; Case map */
+  { 0x00004E, 0, { 0x00006E }},                      /* 004E; 006E; Case map */
+  { 0x00004F, 0, { 0x00006F }},                      /* 004F; 006F; Case map */
+  { 0x000050, 0, { 0x000070 }},                      /* 0050; 0070; Case map */
+  { 0x000051, 0, { 0x000071 }},                      /* 0051; 0071; Case map */
+  { 0x000052, 0, { 0x000072 }},                      /* 0052; 0072; Case map */
+  { 0x000053, 0, { 0x000073 }},                      /* 0053; 0073; Case map */
+  { 0x000054, 0, { 0x000074 }},                      /* 0054; 0074; Case map */
+  { 0x000055, 0, { 0x000075 }},                      /* 0055; 0075; Case map */
+  { 0x000056, 0, { 0x000076 }},                      /* 0056; 0076; Case map */
+  { 0x000057, 0, { 0x000077 }},                      /* 0057; 0077; Case map */
+  { 0x000058, 0, { 0x000078 }},                      /* 0058; 0078; Case map */
+  { 0x000059, 0, { 0x000079 }},                      /* 0059; 0079; Case map */
+  { 0x00005A, 0, { 0x00007A }},                      /* 005A; 007A; Case map */
+  { 0x0000B5, 0, { 0x0003BC }},                      /* 00B5; 03BC; Case map */
+  { 0x0000C0, 0, { 0x0000E0 }},                      /* 00C0; 00E0; Case map */
+  { 0x0000C1, 0, { 0x0000E1 }},                      /* 00C1; 00E1; Case map */
+  { 0x0000C2, 0, { 0x0000E2 }},                      /* 00C2; 00E2; Case map */
+  { 0x0000C3, 0, { 0x0000E3 }},                      /* 00C3; 00E3; Case map */
+  { 0x0000C4, 0, { 0x0000E4 }},                      /* 00C4; 00E4; Case map */
+  { 0x0000C5, 0, { 0x0000E5 }},                      /* 00C5; 00E5; Case map */
+  { 0x0000C6, 0, { 0x0000E6 }},                      /* 00C6; 00E6; Case map */
+  { 0x0000C7, 0, { 0x0000E7 }},                      /* 00C7; 00E7; Case map */
+  { 0x0000C8, 0, { 0x0000E8 }},                      /* 00C8; 00E8; Case map */
+  { 0x0000C9, 0, { 0x0000E9 }},                      /* 00C9; 00E9; Case map */
+  { 0x0000CA, 0, { 0x0000EA }},                      /* 00CA; 00EA; Case map */
+  { 0x0000CB, 0, { 0x0000EB }},                      /* 00CB; 00EB; Case map */
+  { 0x0000CC, 0, { 0x0000EC }},                      /* 00CC; 00EC; Case map */
+  { 0x0000CD, 0, { 0x0000ED }},                      /* 00CD; 00ED; Case map */
+  { 0x0000CE, 0, { 0x0000EE }},                      /* 00CE; 00EE; Case map */
+  { 0x0000CF, 0, { 0x0000EF }},                      /* 00CF; 00EF; Case map */
+  { 0x0000D0, 0, { 0x0000F0 }},                      /* 00D0; 00F0; Case map */
+  { 0x0000D1, 0, { 0x0000F1 }},                      /* 00D1; 00F1; Case map */
+  { 0x0000D2, 0, { 0x0000F2 }},                      /* 00D2; 00F2; Case map */
+  { 0x0000D3, 0, { 0x0000F3 }},                      /* 00D3; 00F3; Case map */
+  { 0x0000D4, 0, { 0x0000F4 }},                      /* 00D4; 00F4; Case map */
+  { 0x0000D5, 0, { 0x0000F5 }},                      /* 00D5; 00F5; Case map */
+  { 0x0000D6, 0, { 0x0000F6 }},                      /* 00D6; 00F6; Case map */
+  { 0x0000D8, 0, { 0x0000F8 }},                      /* 00D8; 00F8; Case map */
+  { 0x0000D9, 0, { 0x0000F9 }},                      /* 00D9; 00F9; Case map */
+  { 0x0000DA, 0, { 0x0000FA }},                      /* 00DA; 00FA; Case map */
+  { 0x0000DB, 0, { 0x0000FB }},                      /* 00DB; 00FB; Case map */
+  { 0x0000DC, 0, { 0x0000FC }},                      /* 00DC; 00FC; Case map */
+  { 0x0000DD, 0, { 0x0000FD }},                      /* 00DD; 00FD; Case map */
+  { 0x0000DE, 0, { 0x0000FE }},                      /* 00DE; 00FE; Case map */
+  { 0x0000DF, 0, { 0x000073,                    /* 00DF; 0073 0073; Case map */
+                   0x000073 }},
+  { 0x000100, 0, { 0x000101 }},                      /* 0100; 0101; Case map */
+  { 0x000102, 0, { 0x000103 }},                      /* 0102; 0103; Case map */
+  { 0x000104, 0, { 0x000105 }},                      /* 0104; 0105; Case map */
+  { 0x000106, 0, { 0x000107 }},                      /* 0106; 0107; Case map */
+  { 0x000108, 0, { 0x000109 }},                      /* 0108; 0109; Case map */
+  { 0x00010A, 0, { 0x00010B }},                      /* 010A; 010B; Case map */
+  { 0x00010C, 0, { 0x00010D }},                      /* 010C; 010D; Case map */
+  { 0x00010E, 0, { 0x00010F }},                      /* 010E; 010F; Case map */
+  { 0x000110, 0, { 0x000111 }},                      /* 0110; 0111; Case map */
+  { 0x000112, 0, { 0x000113 }},                      /* 0112; 0113; Case map */
+  { 0x000114, 0, { 0x000115 }},                      /* 0114; 0115; Case map */
+  { 0x000116, 0, { 0x000117 }},                      /* 0116; 0117; Case map */
+  { 0x000118, 0, { 0x000119 }},                      /* 0118; 0119; Case map */
+  { 0x00011A, 0, { 0x00011B }},                      /* 011A; 011B; Case map */
+  { 0x00011C, 0, { 0x00011D }},                      /* 011C; 011D; Case map */
+  { 0x00011E, 0, { 0x00011F }},                      /* 011E; 011F; Case map */
+  { 0x000120, 0, { 0x000121 }},                      /* 0120; 0121; Case map */
+  { 0x000122, 0, { 0x000123 }},                      /* 0122; 0123; Case map */
+  { 0x000124, 0, { 0x000125 }},                      /* 0124; 0125; Case map */
+  { 0x000126, 0, { 0x000127 }},                      /* 0126; 0127; Case map */
+  { 0x000128, 0, { 0x000129 }},                      /* 0128; 0129; Case map */
+  { 0x00012A, 0, { 0x00012B }},                      /* 012A; 012B; Case map */
+  { 0x00012C, 0, { 0x00012D }},                      /* 012C; 012D; Case map */
+  { 0x00012E, 0, { 0x00012F }},                      /* 012E; 012F; Case map */
+  { 0x000130, 0, { 0x000069,                    /* 0130; 0069 0307; Case map */
+                   0x000307 }},
+  { 0x000132, 0, { 0x000133 }},                      /* 0132; 0133; Case map */
+  { 0x000134, 0, { 0x000135 }},                      /* 0134; 0135; Case map */
+  { 0x000136, 0, { 0x000137 }},                      /* 0136; 0137; Case map */
+  { 0x000139, 0, { 0x00013A }},                      /* 0139; 013A; Case map */
+  { 0x00013B, 0, { 0x00013C }},                      /* 013B; 013C; Case map */
+  { 0x00013D, 0, { 0x00013E }},                      /* 013D; 013E; Case map */
+  { 0x00013F, 0, { 0x000140 }},                      /* 013F; 0140; Case map */
+  { 0x000141, 0, { 0x000142 }},                      /* 0141; 0142; Case map */
+  { 0x000143, 0, { 0x000144 }},                      /* 0143; 0144; Case map */
+  { 0x000145, 0, { 0x000146 }},                      /* 0145; 0146; Case map */
+  { 0x000147, 0, { 0x000148 }},                      /* 0147; 0148; Case map */
+  { 0x000149, 0, { 0x0002BC,                    /* 0149; 02BC 006E; Case map */
+                   0x00006E }},
+  { 0x00014A, 0, { 0x00014B }},                      /* 014A; 014B; Case map */
+  { 0x00014C, 0, { 0x00014D }},                      /* 014C; 014D; Case map */
+  { 0x00014E, 0, { 0x00014F }},                      /* 014E; 014F; Case map */
+  { 0x000150, 0, { 0x000151 }},                      /* 0150; 0151; Case map */
+  { 0x000152, 0, { 0x000153 }},                      /* 0152; 0153; Case map */
+  { 0x000154, 0, { 0x000155 }},                      /* 0154; 0155; Case map */
+  { 0x000156, 0, { 0x000157 }},                      /* 0156; 0157; Case map */
+  { 0x000158, 0, { 0x000159 }},                      /* 0158; 0159; Case map */
+  { 0x00015A, 0, { 0x00015B }},                      /* 015A; 015B; Case map */
+  { 0x00015C, 0, { 0x00015D }},                      /* 015C; 015D; Case map */
+  { 0x00015E, 0, { 0x00015F }},                      /* 015E; 015F; Case map */
+  { 0x000160, 0, { 0x000161 }},                      /* 0160; 0161; Case map */
+  { 0x000162, 0, { 0x000163 }},                      /* 0162; 0163; Case map */
+  { 0x000164, 0, { 0x000165 }},                      /* 0164; 0165; Case map */
+  { 0x000166, 0, { 0x000167 }},                      /* 0166; 0167; Case map */
+  { 0x000168, 0, { 0x000169 }},                      /* 0168; 0169; Case map */
+  { 0x00016A, 0, { 0x00016B }},                      /* 016A; 016B; Case map */
+  { 0x00016C, 0, { 0x00016D }},                      /* 016C; 016D; Case map */
+  { 0x00016E, 0, { 0x00016F }},                      /* 016E; 016F; Case map */
+  { 0x000170, 0, { 0x000171 }},                      /* 0170; 0171; Case map */
+  { 0x000172, 0, { 0x000173 }},                      /* 0172; 0173; Case map */
+  { 0x000174, 0, { 0x000175 }},                      /* 0174; 0175; Case map */
+  { 0x000176, 0, { 0x000177 }},                      /* 0176; 0177; Case map */
+  { 0x000178, 0, { 0x0000FF }},                      /* 0178; 00FF; Case map */
+  { 0x000179, 0, { 0x00017A }},                      /* 0179; 017A; Case map */
+  { 0x00017B, 0, { 0x00017C }},                      /* 017B; 017C; Case map */
+  { 0x00017D, 0, { 0x00017E }},                      /* 017D; 017E; Case map */
+  { 0x00017F, 0, { 0x000073 }},                      /* 017F; 0073; Case map */
+  { 0x000181, 0, { 0x000253 }},                      /* 0181; 0253; Case map */
+  { 0x000182, 0, { 0x000183 }},                      /* 0182; 0183; Case map */
+  { 0x000184, 0, { 0x000185 }},                      /* 0184; 0185; Case map */
+  { 0x000186, 0, { 0x000254 }},                      /* 0186; 0254; Case map */
+  { 0x000187, 0, { 0x000188 }},                      /* 0187; 0188; Case map */
+  { 0x000189, 0, { 0x000256 }},                      /* 0189; 0256; Case map */
+  { 0x00018A, 0, { 0x000257 }},                      /* 018A; 0257; Case map */
+  { 0x00018B, 0, { 0x00018C }},                      /* 018B; 018C; Case map */
+  { 0x00018E, 0, { 0x0001DD }},                      /* 018E; 01DD; Case map */
+  { 0x00018F, 0, { 0x000259 }},                      /* 018F; 0259; Case map */
+  { 0x000190, 0, { 0x00025B }},                      /* 0190; 025B; Case map */
+  { 0x000191, 0, { 0x000192 }},                      /* 0191; 0192; Case map */
+  { 0x000193, 0, { 0x000260 }},                      /* 0193; 0260; Case map */
+  { 0x000194, 0, { 0x000263 }},                      /* 0194; 0263; Case map */
+  { 0x000196, 0, { 0x000269 }},                      /* 0196; 0269; Case map */
+  { 0x000197, 0, { 0x000268 }},                      /* 0197; 0268; Case map */
+  { 0x000198, 0, { 0x000199 }},                      /* 0198; 0199; Case map */
+  { 0x00019C, 0, { 0x00026F }},                      /* 019C; 026F; Case map */
+  { 0x00019D, 0, { 0x000272 }},                      /* 019D; 0272; Case map */
+  { 0x00019F, 0, { 0x000275 }},                      /* 019F; 0275; Case map */
+  { 0x0001A0, 0, { 0x0001A1 }},                      /* 01A0; 01A1; Case map */
+  { 0x0001A2, 0, { 0x0001A3 }},                      /* 01A2; 01A3; Case map */
+  { 0x0001A4, 0, { 0x0001A5 }},                      /* 01A4; 01A5; Case map */
+  { 0x0001A6, 0, { 0x000280 }},                      /* 01A6; 0280; Case map */
+  { 0x0001A7, 0, { 0x0001A8 }},                      /* 01A7; 01A8; Case map */
+  { 0x0001A9, 0, { 0x000283 }},                      /* 01A9; 0283; Case map */
+  { 0x0001AC, 0, { 0x0001AD }},                      /* 01AC; 01AD; Case map */
+  { 0x0001AE, 0, { 0x000288 }},                      /* 01AE; 0288; Case map */
+  { 0x0001AF, 0, { 0x0001B0 }},                      /* 01AF; 01B0; Case map */
+  { 0x0001B1, 0, { 0x00028A }},                      /* 01B1; 028A; Case map */
+  { 0x0001B2, 0, { 0x00028B }},                      /* 01B2; 028B; Case map */
+  { 0x0001B3, 0, { 0x0001B4 }},                      /* 01B3; 01B4; Case map */
+  { 0x0001B5, 0, { 0x0001B6 }},                      /* 01B5; 01B6; Case map */
+  { 0x0001B7, 0, { 0x000292 }},                      /* 01B7; 0292; Case map */
+  { 0x0001B8, 0, { 0x0001B9 }},                      /* 01B8; 01B9; Case map */
+  { 0x0001BC, 0, { 0x0001BD }},                      /* 01BC; 01BD; Case map */
+  { 0x0001C4, 0, { 0x0001C6 }},                      /* 01C4; 01C6; Case map */
+  { 0x0001C5, 0, { 0x0001C6 }},                      /* 01C5; 01C6; Case map */
+  { 0x0001C7, 0, { 0x0001C9 }},                      /* 01C7; 01C9; Case map */
+  { 0x0001C8, 0, { 0x0001C9 }},                      /* 01C8; 01C9; Case map */
+  { 0x0001CA, 0, { 0x0001CC }},                      /* 01CA; 01CC; Case map */
+  { 0x0001CB, 0, { 0x0001CC }},                      /* 01CB; 01CC; Case map */
+  { 0x0001CD, 0, { 0x0001CE }},                      /* 01CD; 01CE; Case map */
+  { 0x0001CF, 0, { 0x0001D0 }},                      /* 01CF; 01D0; Case map */
+  { 0x0001D1, 0, { 0x0001D2 }},                      /* 01D1; 01D2; Case map */
+  { 0x0001D3, 0, { 0x0001D4 }},                      /* 01D3; 01D4; Case map */
+  { 0x0001D5, 0, { 0x0001D6 }},                      /* 01D5; 01D6; Case map */
+  { 0x0001D7, 0, { 0x0001D8 }},                      /* 01D7; 01D8; Case map */
+  { 0x0001D9, 0, { 0x0001DA }},                      /* 01D9; 01DA; Case map */
+  { 0x0001DB, 0, { 0x0001DC }},                      /* 01DB; 01DC; Case map */
+  { 0x0001DE, 0, { 0x0001DF }},                      /* 01DE; 01DF; Case map */
+  { 0x0001E0, 0, { 0x0001E1 }},                      /* 01E0; 01E1; Case map */
+  { 0x0001E2, 0, { 0x0001E3 }},                      /* 01E2; 01E3; Case map */
+  { 0x0001E4, 0, { 0x0001E5 }},                      /* 01E4; 01E5; Case map */
+  { 0x0001E6, 0, { 0x0001E7 }},                      /* 01E6; 01E7; Case map */
+  { 0x0001E8, 0, { 0x0001E9 }},                      /* 01E8; 01E9; Case map */
+  { 0x0001EA, 0, { 0x0001EB }},                      /* 01EA; 01EB; Case map */
+  { 0x0001EC, 0, { 0x0001ED }},                      /* 01EC; 01ED; Case map */
+  { 0x0001EE, 0, { 0x0001EF }},                      /* 01EE; 01EF; Case map */
+  { 0x0001F0, 0, { 0x00006A,                    /* 01F0; 006A 030C; Case map */
+                   0x00030C }},
+  { 0x0001F1, 0, { 0x0001F3 }},                      /* 01F1; 01F3; Case map */
+  { 0x0001F2, 0, { 0x0001F3 }},                      /* 01F2; 01F3; Case map */
+  { 0x0001F4, 0, { 0x0001F5 }},                      /* 01F4; 01F5; Case map */
+  { 0x0001F6, 0, { 0x000195 }},                      /* 01F6; 0195; Case map */
+  { 0x0001F7, 0, { 0x0001BF }},                      /* 01F7; 01BF; Case map */
+  { 0x0001F8, 0, { 0x0001F9 }},                      /* 01F8; 01F9; Case map */
+  { 0x0001FA, 0, { 0x0001FB }},                      /* 01FA; 01FB; Case map */
+  { 0x0001FC, 0, { 0x0001FD }},                      /* 01FC; 01FD; Case map */
+  { 0x0001FE, 0, { 0x0001FF }},                      /* 01FE; 01FF; Case map */
+  { 0x000200, 0, { 0x000201 }},                      /* 0200; 0201; Case map */
+  { 0x000202, 0, { 0x000203 }},                      /* 0202; 0203; Case map */
+  { 0x000204, 0, { 0x000205 }},                      /* 0204; 0205; Case map */
+  { 0x000206, 0, { 0x000207 }},                      /* 0206; 0207; Case map */
+  { 0x000208, 0, { 0x000209 }},                      /* 0208; 0209; Case map */
+  { 0x00020A, 0, { 0x00020B }},                      /* 020A; 020B; Case map */
+  { 0x00020C, 0, { 0x00020D }},                      /* 020C; 020D; Case map */
+  { 0x00020E, 0, { 0x00020F }},                      /* 020E; 020F; Case map */
+  { 0x000210, 0, { 0x000211 }},                      /* 0210; 0211; Case map */
+  { 0x000212, 0, { 0x000213 }},                      /* 0212; 0213; Case map */
+  { 0x000214, 0, { 0x000215 }},                      /* 0214; 0215; Case map */
+  { 0x000216, 0, { 0x000217 }},                      /* 0216; 0217; Case map */
+  { 0x000218, 0, { 0x000219 }},                      /* 0218; 0219; Case map */
+  { 0x00021A, 0, { 0x00021B }},                      /* 021A; 021B; Case map */
+  { 0x00021C, 0, { 0x00021D }},                      /* 021C; 021D; Case map */
+  { 0x00021E, 0, { 0x00021F }},                      /* 021E; 021F; Case map */
+  { 0x000220, 0, { 0x00019E }},                      /* 0220; 019E; Case map */
+  { 0x000222, 0, { 0x000223 }},                      /* 0222; 0223; Case map */
+  { 0x000224, 0, { 0x000225 }},                      /* 0224; 0225; Case map */
+  { 0x000226, 0, { 0x000227 }},                      /* 0226; 0227; Case map */
+  { 0x000228, 0, { 0x000229 }},                      /* 0228; 0229; Case map */
+  { 0x00022A, 0, { 0x00022B }},                      /* 022A; 022B; Case map */
+  { 0x00022C, 0, { 0x00022D }},                      /* 022C; 022D; Case map */
+  { 0x00022E, 0, { 0x00022F }},                      /* 022E; 022F; Case map */
+  { 0x000230, 0, { 0x000231 }},                      /* 0230; 0231; Case map */
+  { 0x000232, 0, { 0x000233 }},                      /* 0232; 0233; Case map */
+  { 0x000345, 0, { 0x0003B9 }},                      /* 0345; 03B9; Case map */
+  { 0x00037A, 0, { 0x000020,          /* 037A; 0020 03B9; Additional folding */
+                   0x0003B9 }},
+  { 0x000386, 0, { 0x0003AC }},                      /* 0386; 03AC; Case map */
+  { 0x000388, 0, { 0x0003AD }},                      /* 0388; 03AD; Case map */
+  { 0x000389, 0, { 0x0003AE }},                      /* 0389; 03AE; Case map */
+  { 0x00038A, 0, { 0x0003AF }},                      /* 038A; 03AF; Case map */
+  { 0x00038C, 0, { 0x0003CC }},                      /* 038C; 03CC; Case map */
+  { 0x00038E, 0, { 0x0003CD }},                      /* 038E; 03CD; Case map */
+  { 0x00038F, 0, { 0x0003CE }},                      /* 038F; 03CE; Case map */
+  { 0x000390, 0, { 0x0003B9,               /* 0390; 03B9 0308 0301; Case map */
+                   0x000308, 0x000301 }},
+  { 0x000391, 0, { 0x0003B1 }},                      /* 0391; 03B1; Case map */
+  { 0x000392, 0, { 0x0003B2 }},                      /* 0392; 03B2; Case map */
+  { 0x000393, 0, { 0x0003B3 }},                      /* 0393; 03B3; Case map */
+  { 0x000394, 0, { 0x0003B4 }},                      /* 0394; 03B4; Case map */
+  { 0x000395, 0, { 0x0003B5 }},                      /* 0395; 03B5; Case map */
+  { 0x000396, 0, { 0x0003B6 }},                      /* 0396; 03B6; Case map */
+  { 0x000397, 0, { 0x0003B7 }},                      /* 0397; 03B7; Case map */
+  { 0x000398, 0, { 0x0003B8 }},                      /* 0398; 03B8; Case map */
+  { 0x000399, 0, { 0x0003B9 }},                      /* 0399; 03B9; Case map */
+  { 0x00039A, 0, { 0x0003BA }},                      /* 039A; 03BA; Case map */
+  { 0x00039B, 0, { 0x0003BB }},                      /* 039B; 03BB; Case map */
+  { 0x00039C, 0, { 0x0003BC }},                      /* 039C; 03BC; Case map */
+  { 0x00039D, 0, { 0x0003BD }},                      /* 039D; 03BD; Case map */
+  { 0x00039E, 0, { 0x0003BE }},                      /* 039E; 03BE; Case map */
+  { 0x00039F, 0, { 0x0003BF }},                      /* 039F; 03BF; Case map */
+  { 0x0003A0, 0, { 0x0003C0 }},                      /* 03A0; 03C0; Case map */
+  { 0x0003A1, 0, { 0x0003C1 }},                      /* 03A1; 03C1; Case map */
+  { 0x0003A3, 0, { 0x0003C3 }},                      /* 03A3; 03C3; Case map */
+  { 0x0003A4, 0, { 0x0003C4 }},                      /* 03A4; 03C4; Case map */
+  { 0x0003A5, 0, { 0x0003C5 }},                      /* 03A5; 03C5; Case map */
+  { 0x0003A6, 0, { 0x0003C6 }},                      /* 03A6; 03C6; Case map */
+  { 0x0003A7, 0, { 0x0003C7 }},                      /* 03A7; 03C7; Case map */
+  { 0x0003A8, 0, { 0x0003C8 }},                      /* 03A8; 03C8; Case map */
+  { 0x0003A9, 0, { 0x0003C9 }},                      /* 03A9; 03C9; Case map */
+  { 0x0003AA, 0, { 0x0003CA }},                      /* 03AA; 03CA; Case map */
+  { 0x0003AB, 0, { 0x0003CB }},                      /* 03AB; 03CB; Case map */
+  { 0x0003B0, 0, { 0x0003C5,               /* 03B0; 03C5 0308 0301; Case map */
+                   0x000308, 0x000301 }},
+  { 0x0003C2, 0, { 0x0003C3 }},                      /* 03C2; 03C3; Case map */
+  { 0x0003D0, 0, { 0x0003B2 }},                      /* 03D0; 03B2; Case map */
+  { 0x0003D1, 0, { 0x0003B8 }},                      /* 03D1; 03B8; Case map */
+  { 0x0003D2, 0, { 0x0003C5 }},            /* 03D2; 03C5; Additional folding */
+  { 0x0003D3, 0, { 0x0003CD }},            /* 03D3; 03CD; Additional folding */
+  { 0x0003D4, 0, { 0x0003CB }},            /* 03D4; 03CB; Additional folding */
+  { 0x0003D5, 0, { 0x0003C6 }},                      /* 03D5; 03C6; Case map */
+  { 0x0003D6, 0, { 0x0003C0 }},                      /* 03D6; 03C0; Case map */
+  { 0x0003D8, 0, { 0x0003D9 }},                      /* 03D8; 03D9; Case map */
+  { 0x0003DA, 0, { 0x0003DB }},                      /* 03DA; 03DB; Case map */
+  { 0x0003DC, 0, { 0x0003DD }},                      /* 03DC; 03DD; Case map */
+  { 0x0003DE, 0, { 0x0003DF }},                      /* 03DE; 03DF; Case map */
+  { 0x0003E0, 0, { 0x0003E1 }},                      /* 03E0; 03E1; Case map */
+  { 0x0003E2, 0, { 0x0003E3 }},                      /* 03E2; 03E3; Case map */
+  { 0x0003E4, 0, { 0x0003E5 }},                      /* 03E4; 03E5; Case map */
+  { 0x0003E6, 0, { 0x0003E7 }},                      /* 03E6; 03E7; Case map */
+  { 0x0003E8, 0, { 0x0003E9 }},                      /* 03E8; 03E9; Case map */
+  { 0x0003EA, 0, { 0x0003EB }},                      /* 03EA; 03EB; Case map */
+  { 0x0003EC, 0, { 0x0003ED }},                      /* 03EC; 03ED; Case map */
+  { 0x0003EE, 0, { 0x0003EF }},                      /* 03EE; 03EF; Case map */
+  { 0x0003F0, 0, { 0x0003BA }},                      /* 03F0; 03BA; Case map */
+  { 0x0003F1, 0, { 0x0003C1 }},                      /* 03F1; 03C1; Case map */
+  { 0x0003F2, 0, { 0x0003C3 }},                      /* 03F2; 03C3; Case map */
+  { 0x0003F4, 0, { 0x0003B8 }},                      /* 03F4; 03B8; Case map */
+  { 0x0003F5, 0, { 0x0003B5 }},                      /* 03F5; 03B5; Case map */
+  { 0x000400, 0, { 0x000450 }},                      /* 0400; 0450; Case map */
+  { 0x000401, 0, { 0x000451 }},                      /* 0401; 0451; Case map */
+  { 0x000402, 0, { 0x000452 }},                      /* 0402; 0452; Case map */
+  { 0x000403, 0, { 0x000453 }},                      /* 0403; 0453; Case map */
+  { 0x000404, 0, { 0x000454 }},                      /* 0404; 0454; Case map */
+  { 0x000405, 0, { 0x000455 }},                      /* 0405; 0455; Case map */
+  { 0x000406, 0, { 0x000456 }},                      /* 0406; 0456; Case map */
+  { 0x000407, 0, { 0x000457 }},                      /* 0407; 0457; Case map */
+  { 0x000408, 0, { 0x000458 }},                      /* 0408; 0458; Case map */
+  { 0x000409, 0, { 0x000459 }},                      /* 0409; 0459; Case map */
+  { 0x00040A, 0, { 0x00045A }},                      /* 040A; 045A; Case map */
+  { 0x00040B, 0, { 0x00045B }},                      /* 040B; 045B; Case map */
+  { 0x00040C, 0, { 0x00045C }},                      /* 040C; 045C; Case map */
+  { 0x00040D, 0, { 0x00045D }},                      /* 040D; 045D; Case map */
+  { 0x00040E, 0, { 0x00045E }},                      /* 040E; 045E; Case map */
+  { 0x00040F, 0, { 0x00045F }},                      /* 040F; 045F; Case map */
+  { 0x000410, 0, { 0x000430 }},                      /* 0410; 0430; Case map */
+  { 0x000411, 0, { 0x000431 }},                      /* 0411; 0431; Case map */
+  { 0x000412, 0, { 0x000432 }},                      /* 0412; 0432; Case map */
+  { 0x000413, 0, { 0x000433 }},                      /* 0413; 0433; Case map */
+  { 0x000414, 0, { 0x000434 }},                      /* 0414; 0434; Case map */
+  { 0x000415, 0, { 0x000435 }},                      /* 0415; 0435; Case map */
+  { 0x000416, 0, { 0x000436 }},                      /* 0416; 0436; Case map */
+  { 0x000417, 0, { 0x000437 }},                      /* 0417; 0437; Case map */
+  { 0x000418, 0, { 0x000438 }},                      /* 0418; 0438; Case map */
+  { 0x000419, 0, { 0x000439 }},                      /* 0419; 0439; Case map */
+  { 0x00041A, 0, { 0x00043A }},                      /* 041A; 043A; Case map */
+  { 0x00041B, 0, { 0x00043B }},                      /* 041B; 043B; Case map */
+  { 0x00041C, 0, { 0x00043C }},                      /* 041C; 043C; Case map */
+  { 0x00041D, 0, { 0x00043D }},                      /* 041D; 043D; Case map */
+  { 0x00041E, 0, { 0x00043E }},                      /* 041E; 043E; Case map */
+  { 0x00041F, 0, { 0x00043F }},                      /* 041F; 043F; Case map */
+  { 0x000420, 0, { 0x000440 }},                      /* 0420; 0440; Case map */
+  { 0x000421, 0, { 0x000441 }},                      /* 0421; 0441; Case map */
+  { 0x000422, 0, { 0x000442 }},                      /* 0422; 0442; Case map */
+  { 0x000423, 0, { 0x000443 }},                      /* 0423; 0443; Case map */
+  { 0x000424, 0, { 0x000444 }},                      /* 0424; 0444; Case map */
+  { 0x000425, 0, { 0x000445 }},                      /* 0425; 0445; Case map */
+  { 0x000426, 0, { 0x000446 }},                      /* 0426; 0446; Case map */
+  { 0x000427, 0, { 0x000447 }},                      /* 0427; 0447; Case map */
+  { 0x000428, 0, { 0x000448 }},                      /* 0428; 0448; Case map */
+  { 0x000429, 0, { 0x000449 }},                      /* 0429; 0449; Case map */
+  { 0x00042A, 0, { 0x00044A }},                      /* 042A; 044A; Case map */
+  { 0x00042B, 0, { 0x00044B }},                      /* 042B; 044B; Case map */
+  { 0x00042C, 0, { 0x00044C }},                      /* 042C; 044C; Case map */
+  { 0x00042D, 0, { 0x00044D }},                      /* 042D; 044D; Case map */
+  { 0x00042E, 0, { 0x00044E }},                      /* 042E; 044E; Case map */
+  { 0x00042F, 0, { 0x00044F }},                      /* 042F; 044F; Case map */
+  { 0x000460, 0, { 0x000461 }},                      /* 0460; 0461; Case map */
+  { 0x000462, 0, { 0x000463 }},                      /* 0462; 0463; Case map */
+  { 0x000464, 0, { 0x000465 }},                      /* 0464; 0465; Case map */
+  { 0x000466, 0, { 0x000467 }},                      /* 0466; 0467; Case map */
+  { 0x000468, 0, { 0x000469 }},                      /* 0468; 0469; Case map */
+  { 0x00046A, 0, { 0x00046B }},                      /* 046A; 046B; Case map */
+  { 0x00046C, 0, { 0x00046D }},                      /* 046C; 046D; Case map */
+  { 0x00046E, 0, { 0x00046F }},                      /* 046E; 046F; Case map */
+  { 0x000470, 0, { 0x000471 }},                      /* 0470; 0471; Case map */
+  { 0x000472, 0, { 0x000473 }},                      /* 0472; 0473; Case map */
+  { 0x000474, 0, { 0x000475 }},                      /* 0474; 0475; Case map */
+  { 0x000476, 0, { 0x000477 }},                      /* 0476; 0477; Case map */
+  { 0x000478, 0, { 0x000479 }},                      /* 0478; 0479; Case map */
+  { 0x00047A, 0, { 0x00047B }},                      /* 047A; 047B; Case map */
+  { 0x00047C, 0, { 0x00047D }},                      /* 047C; 047D; Case map */
+  { 0x00047E, 0, { 0x00047F }},                      /* 047E; 047F; Case map */
+  { 0x000480, 0, { 0x000481 }},                      /* 0480; 0481; Case map */
+  { 0x00048A, 0, { 0x00048B }},                      /* 048A; 048B; Case map */
+  { 0x00048C, 0, { 0x00048D }},                      /* 048C; 048D; Case map */
+  { 0x00048E, 0, { 0x00048F }},                      /* 048E; 048F; Case map */
+  { 0x000490, 0, { 0x000491 }},                      /* 0490; 0491; Case map */
+  { 0x000492, 0, { 0x000493 }},                      /* 0492; 0493; Case map */
+  { 0x000494, 0, { 0x000495 }},                      /* 0494; 0495; Case map */
+  { 0x000496, 0, { 0x000497 }},                      /* 0496; 0497; Case map */
+  { 0x000498, 0, { 0x000499 }},                      /* 0498; 0499; Case map */
+  { 0x00049A, 0, { 0x00049B }},                      /* 049A; 049B; Case map */
+  { 0x00049C, 0, { 0x00049D }},                      /* 049C; 049D; Case map */
+  { 0x00049E, 0, { 0x00049F }},                      /* 049E; 049F; Case map */
+  { 0x0004A0, 0, { 0x0004A1 }},                      /* 04A0; 04A1; Case map */
+  { 0x0004A2, 0, { 0x0004A3 }},                      /* 04A2; 04A3; Case map */
+  { 0x0004A4, 0, { 0x0004A5 }},                      /* 04A4; 04A5; Case map */
+  { 0x0004A6, 0, { 0x0004A7 }},                      /* 04A6; 04A7; Case map */
+  { 0x0004A8, 0, { 0x0004A9 }},                      /* 04A8; 04A9; Case map */
+  { 0x0004AA, 0, { 0x0004AB }},                      /* 04AA; 04AB; Case map */
+  { 0x0004AC, 0, { 0x0004AD }},                      /* 04AC; 04AD; Case map */
+  { 0x0004AE, 0, { 0x0004AF }},                      /* 04AE; 04AF; Case map */
+  { 0x0004B0, 0, { 0x0004B1 }},                      /* 04B0; 04B1; Case map */
+  { 0x0004B2, 0, { 0x0004B3 }},                      /* 04B2; 04B3; Case map */
+  { 0x0004B4, 0, { 0x0004B5 }},                      /* 04B4; 04B5; Case map */
+  { 0x0004B6, 0, { 0x0004B7 }},                      /* 04B6; 04B7; Case map */
+  { 0x0004B8, 0, { 0x0004B9 }},                      /* 04B8; 04B9; Case map */
+  { 0x0004BA, 0, { 0x0004BB }},                      /* 04BA; 04BB; Case map */
+  { 0x0004BC, 0, { 0x0004BD }},                      /* 04BC; 04BD; Case map */
+  { 0x0004BE, 0, { 0x0004BF }},                      /* 04BE; 04BF; Case map */
+  { 0x0004C1, 0, { 0x0004C2 }},                      /* 04C1; 04C2; Case map */
+  { 0x0004C3, 0, { 0x0004C4 }},                      /* 04C3; 04C4; Case map */
+  { 0x0004C5, 0, { 0x0004C6 }},                      /* 04C5; 04C6; Case map */
+  { 0x0004C7, 0, { 0x0004C8 }},                      /* 04C7; 04C8; Case map */
+  { 0x0004C9, 0, { 0x0004CA }},                      /* 04C9; 04CA; Case map */
+  { 0x0004CB, 0, { 0x0004CC }},                      /* 04CB; 04CC; Case map */
+  { 0x0004CD, 0, { 0x0004CE }},                      /* 04CD; 04CE; Case map */
+  { 0x0004D0, 0, { 0x0004D1 }},                      /* 04D0; 04D1; Case map */
+  { 0x0004D2, 0, { 0x0004D3 }},                      /* 04D2; 04D3; Case map */
+  { 0x0004D4, 0, { 0x0004D5 }},                      /* 04D4; 04D5; Case map */
+  { 0x0004D6, 0, { 0x0004D7 }},                      /* 04D6; 04D7; Case map */
+  { 0x0004D8, 0, { 0x0004D9 }},                      /* 04D8; 04D9; Case map */
+  { 0x0004DA, 0, { 0x0004DB }},                      /* 04DA; 04DB; Case map */
+  { 0x0004DC, 0, { 0x0004DD }},                      /* 04DC; 04DD; Case map */
+  { 0x0004DE, 0, { 0x0004DF }},                      /* 04DE; 04DF; Case map */
+  { 0x0004E0, 0, { 0x0004E1 }},                      /* 04E0; 04E1; Case map */
+  { 0x0004E2, 0, { 0x0004E3 }},                      /* 04E2; 04E3; Case map */
+  { 0x0004E4, 0, { 0x0004E5 }},                      /* 04E4; 04E5; Case map */
+  { 0x0004E6, 0, { 0x0004E7 }},                      /* 04E6; 04E7; Case map */
+  { 0x0004E8, 0, { 0x0004E9 }},                      /* 04E8; 04E9; Case map */
+  { 0x0004EA, 0, { 0x0004EB }},                      /* 04EA; 04EB; Case map */
+  { 0x0004EC, 0, { 0x0004ED }},                      /* 04EC; 04ED; Case map */
+  { 0x0004EE, 0, { 0x0004EF }},                      /* 04EE; 04EF; Case map */
+  { 0x0004F0, 0, { 0x0004F1 }},                      /* 04F0; 04F1; Case map */
+  { 0x0004F2, 0, { 0x0004F3 }},                      /* 04F2; 04F3; Case map */
+  { 0x0004F4, 0, { 0x0004F5 }},                      /* 04F4; 04F5; Case map */
+  { 0x0004F8, 0, { 0x0004F9 }},                      /* 04F8; 04F9; Case map */
+  { 0x000500, 0, { 0x000501 }},                      /* 0500; 0501; Case map */
+  { 0x000502, 0, { 0x000503 }},                      /* 0502; 0503; Case map */
+  { 0x000504, 0, { 0x000505 }},                      /* 0504; 0505; Case map */
+  { 0x000506, 0, { 0x000507 }},                      /* 0506; 0507; Case map */
+  { 0x000508, 0, { 0x000509 }},                      /* 0508; 0509; Case map */
+  { 0x00050A, 0, { 0x00050B }},                      /* 050A; 050B; Case map */
+  { 0x00050C, 0, { 0x00050D }},                      /* 050C; 050D; Case map */
+  { 0x00050E, 0, { 0x00050F }},                      /* 050E; 050F; Case map */
+  { 0x000531, 0, { 0x000561 }},                      /* 0531; 0561; Case map */
+  { 0x000532, 0, { 0x000562 }},                      /* 0532; 0562; Case map */
+  { 0x000533, 0, { 0x000563 }},                      /* 0533; 0563; Case map */
+  { 0x000534, 0, { 0x000564 }},                      /* 0534; 0564; Case map */
+  { 0x000535, 0, { 0x000565 }},                      /* 0535; 0565; Case map */
+  { 0x000536, 0, { 0x000566 }},                      /* 0536; 0566; Case map */
+  { 0x000537, 0, { 0x000567 }},                      /* 0537; 0567; Case map */
+  { 0x000538, 0, { 0x000568 }},                      /* 0538; 0568; Case map */
+  { 0x000539, 0, { 0x000569 }},                      /* 0539; 0569; Case map */
+  { 0x00053A, 0, { 0x00056A }},                      /* 053A; 056A; Case map */
+  { 0x00053B, 0, { 0x00056B }},                      /* 053B; 056B; Case map */
+  { 0x00053C, 0, { 0x00056C }},                      /* 053C; 056C; Case map */
+  { 0x00053D, 0, { 0x00056D }},                      /* 053D; 056D; Case map */
+  { 0x00053E, 0, { 0x00056E }},                      /* 053E; 056E; Case map */
+  { 0x00053F, 0, { 0x00056F }},                      /* 053F; 056F; Case map */
+  { 0x000540, 0, { 0x000570 }},                      /* 0540; 0570; Case map */
+  { 0x000541, 0, { 0x000571 }},                      /* 0541; 0571; Case map */
+  { 0x000542, 0, { 0x000572 }},                      /* 0542; 0572; Case map */
+  { 0x000543, 0, { 0x000573 }},                      /* 0543; 0573; Case map */
+  { 0x000544, 0, { 0x000574 }},                      /* 0544; 0574; Case map */
+  { 0x000545, 0, { 0x000575 }},                      /* 0545; 0575; Case map */
+  { 0x000546, 0, { 0x000576 }},                      /* 0546; 0576; Case map */
+  { 0x000547, 0, { 0x000577 }},                      /* 0547; 0577; Case map */
+  { 0x000548, 0, { 0x000578 }},                      /* 0548; 0578; Case map */
+  { 0x000549, 0, { 0x000579 }},                      /* 0549; 0579; Case map */
+  { 0x00054A, 0, { 0x00057A }},                      /* 054A; 057A; Case map */
+  { 0x00054B, 0, { 0x00057B }},                      /* 054B; 057B; Case map */
+  { 0x00054C, 0, { 0x00057C }},                      /* 054C; 057C; Case map */
+  { 0x00054D, 0, { 0x00057D }},                      /* 054D; 057D; Case map */
+  { 0x00054E, 0, { 0x00057E }},                      /* 054E; 057E; Case map */
+  { 0x00054F, 0, { 0x00057F }},                      /* 054F; 057F; Case map */
+  { 0x000550, 0, { 0x000580 }},                      /* 0550; 0580; Case map */
+  { 0x000551, 0, { 0x000581 }},                      /* 0551; 0581; Case map */
+  { 0x000552, 0, { 0x000582 }},                      /* 0552; 0582; Case map */
+  { 0x000553, 0, { 0x000583 }},                      /* 0553; 0583; Case map */
+  { 0x000554, 0, { 0x000584 }},                      /* 0554; 0584; Case map */
+  { 0x000555, 0, { 0x000585 }},                      /* 0555; 0585; Case map */
+  { 0x000556, 0, { 0x000586 }},                      /* 0556; 0586; Case map */
+  { 0x000587, 0, { 0x000565,                    /* 0587; 0565 0582; Case map */
+                   0x000582 }},
+  { 0x001E00, 0, { 0x001E01 }},                      /* 1E00; 1E01; Case map */
+  { 0x001E02, 0, { 0x001E03 }},                      /* 1E02; 1E03; Case map */
+  { 0x001E04, 0, { 0x001E05 }},                      /* 1E04; 1E05; Case map */
+  { 0x001E06, 0, { 0x001E07 }},                      /* 1E06; 1E07; Case map */
+  { 0x001E08, 0, { 0x001E09 }},                      /* 1E08; 1E09; Case map */
+  { 0x001E0A, 0, { 0x001E0B }},                      /* 1E0A; 1E0B; Case map */
+  { 0x001E0C, 0, { 0x001E0D }},                      /* 1E0C; 1E0D; Case map */
+  { 0x001E0E, 0, { 0x001E0F }},                      /* 1E0E; 1E0F; Case map */
+  { 0x001E10, 0, { 0x001E11 }},                      /* 1E10; 1E11; Case map */
+  { 0x001E12, 0, { 0x001E13 }},                      /* 1E12; 1E13; Case map */
+  { 0x001E14, 0, { 0x001E15 }},                      /* 1E14; 1E15; Case map */
+  { 0x001E16, 0, { 0x001E17 }},                      /* 1E16; 1E17; Case map */
+  { 0x001E18, 0, { 0x001E19 }},                      /* 1E18; 1E19; Case map */
+  { 0x001E1A, 0, { 0x001E1B }},                      /* 1E1A; 1E1B; Case map */
+  { 0x001E1C, 0, { 0x001E1D }},                      /* 1E1C; 1E1D; Case map */
+  { 0x001E1E, 0, { 0x001E1F }},                      /* 1E1E; 1E1F; Case map */
+  { 0x001E20, 0, { 0x001E21 }},                      /* 1E20; 1E21; Case map */
+  { 0x001E22, 0, { 0x001E23 }},                      /* 1E22; 1E23; Case map */
+  { 0x001E24, 0, { 0x001E25 }},                      /* 1E24; 1E25; Case map */
+  { 0x001E26, 0, { 0x001E27 }},                      /* 1E26; 1E27; Case map */
+  { 0x001E28, 0, { 0x001E29 }},                      /* 1E28; 1E29; Case map */
+  { 0x001E2A, 0, { 0x001E2B }},                      /* 1E2A; 1E2B; Case map */
+  { 0x001E2C, 0, { 0x001E2D }},                      /* 1E2C; 1E2D; Case map */
+  { 0x001E2E, 0, { 0x001E2F }},                      /* 1E2E; 1E2F; Case map */
+  { 0x001E30, 0, { 0x001E31 }},                      /* 1E30; 1E31; Case map */
+  { 0x001E32, 0, { 0x001E33 }},                      /* 1E32; 1E33; Case map */
+  { 0x001E34, 0, { 0x001E35 }},                      /* 1E34; 1E35; Case map */
+  { 0x001E36, 0, { 0x001E37 }},                      /* 1E36; 1E37; Case map */
+  { 0x001E38, 0, { 0x001E39 }},                      /* 1E38; 1E39; Case map */
+  { 0x001E3A, 0, { 0x001E3B }},                      /* 1E3A; 1E3B; Case map */
+  { 0x001E3C, 0, { 0x001E3D }},                      /* 1E3C; 1E3D; Case map */
+  { 0x001E3E, 0, { 0x001E3F }},                      /* 1E3E; 1E3F; Case map */
+  { 0x001E40, 0, { 0x001E41 }},                      /* 1E40; 1E41; Case map */
+  { 0x001E42, 0, { 0x001E43 }},                      /* 1E42; 1E43; Case map */
+  { 0x001E44, 0, { 0x001E45 }},                      /* 1E44; 1E45; Case map */
+  { 0x001E46, 0, { 0x001E47 }},                      /* 1E46; 1E47; Case map */
+  { 0x001E48, 0, { 0x001E49 }},                      /* 1E48; 1E49; Case map */
+  { 0x001E4A, 0, { 0x001E4B }},                      /* 1E4A; 1E4B; Case map */
+  { 0x001E4C, 0, { 0x001E4D }},                      /* 1E4C; 1E4D; Case map */
+  { 0x001E4E, 0, { 0x001E4F }},                      /* 1E4E; 1E4F; Case map */
+  { 0x001E50, 0, { 0x001E51 }},                      /* 1E50; 1E51; Case map */
+  { 0x001E52, 0, { 0x001E53 }},                      /* 1E52; 1E53; Case map */
+  { 0x001E54, 0, { 0x001E55 }},                      /* 1E54; 1E55; Case map */
+  { 0x001E56, 0, { 0x001E57 }},                      /* 1E56; 1E57; Case map */
+  { 0x001E58, 0, { 0x001E59 }},                      /* 1E58; 1E59; Case map */
+  { 0x001E5A, 0, { 0x001E5B }},                      /* 1E5A; 1E5B; Case map */
+  { 0x001E5C, 0, { 0x001E5D }},                      /* 1E5C; 1E5D; Case map */
+  { 0x001E5E, 0, { 0x001E5F }},                      /* 1E5E; 1E5F; Case map */
+  { 0x001E60, 0, { 0x001E61 }},                      /* 1E60; 1E61; Case map */
+  { 0x001E62, 0, { 0x001E63 }},                      /* 1E62; 1E63; Case map */
+  { 0x001E64, 0, { 0x001E65 }},                      /* 1E64; 1E65; Case map */
+  { 0x001E66, 0, { 0x001E67 }},                      /* 1E66; 1E67; Case map */
+  { 0x001E68, 0, { 0x001E69 }},                      /* 1E68; 1E69; Case map */
+  { 0x001E6A, 0, { 0x001E6B }},                      /* 1E6A; 1E6B; Case map */
+  { 0x001E6C, 0, { 0x001E6D }},                      /* 1E6C; 1E6D; Case map */
+  { 0x001E6E, 0, { 0x001E6F }},                      /* 1E6E; 1E6F; Case map */
+  { 0x001E70, 0, { 0x001E71 }},                      /* 1E70; 1E71; Case map */
+  { 0x001E72, 0, { 0x001E73 }},                      /* 1E72; 1E73; Case map */
+  { 0x001E74, 0, { 0x001E75 }},                      /* 1E74; 1E75; Case map */
+  { 0x001E76, 0, { 0x001E77 }},                      /* 1E76; 1E77; Case map */
+  { 0x001E78, 0, { 0x001E79 }},                      /* 1E78; 1E79; Case map */
+  { 0x001E7A, 0, { 0x001E7B }},                      /* 1E7A; 1E7B; Case map */
+  { 0x001E7C, 0, { 0x001E7D }},                      /* 1E7C; 1E7D; Case map */
+  { 0x001E7E, 0, { 0x001E7F }},                      /* 1E7E; 1E7F; Case map */
+  { 0x001E80, 0, { 0x001E81 }},                      /* 1E80; 1E81; Case map */
+  { 0x001E82, 0, { 0x001E83 }},                      /* 1E82; 1E83; Case map */
+  { 0x001E84, 0, { 0x001E85 }},                      /* 1E84; 1E85; Case map */
+  { 0x001E86, 0, { 0x001E87 }},                      /* 1E86; 1E87; Case map */
+  { 0x001E88, 0, { 0x001E89 }},                      /* 1E88; 1E89; Case map */
+  { 0x001E8A, 0, { 0x001E8B }},                      /* 1E8A; 1E8B; Case map */
+  { 0x001E8C, 0, { 0x001E8D }},                      /* 1E8C; 1E8D; Case map */
+  { 0x001E8E, 0, { 0x001E8F }},                      /* 1E8E; 1E8F; Case map */
+  { 0x001E90, 0, { 0x001E91 }},                      /* 1E90; 1E91; Case map */
+  { 0x001E92, 0, { 0x001E93 }},                      /* 1E92; 1E93; Case map */
+  { 0x001E94, 0, { 0x001E95 }},                      /* 1E94; 1E95; Case map */
+  { 0x001E96, 0, { 0x000068,                    /* 1E96; 0068 0331; Case map */
+                   0x000331 }},
+  { 0x001E97, 0, { 0x000074,                    /* 1E97; 0074 0308; Case map */
+                   0x000308 }},
+  { 0x001E98, 0, { 0x000077,                    /* 1E98; 0077 030A; Case map */
+                   0x00030A }},
+  { 0x001E99, 0, { 0x000079,                    /* 1E99; 0079 030A; Case map */
+                   0x00030A }},
+  { 0x001E9A, 0, { 0x000061,                    /* 1E9A; 0061 02BE; Case map */
+                   0x0002BE }},
+  { 0x001E9B, 0, { 0x001E61 }},                      /* 1E9B; 1E61; Case map */
+  { 0x001EA0, 0, { 0x001EA1 }},                      /* 1EA0; 1EA1; Case map */
+  { 0x001EA2, 0, { 0x001EA3 }},                      /* 1EA2; 1EA3; Case map */
+  { 0x001EA4, 0, { 0x001EA5 }},                      /* 1EA4; 1EA5; Case map */
+  { 0x001EA6, 0, { 0x001EA7 }},                      /* 1EA6; 1EA7; Case map */
+  { 0x001EA8, 0, { 0x001EA9 }},                      /* 1EA8; 1EA9; Case map */
+  { 0x001EAA, 0, { 0x001EAB }},                      /* 1EAA; 1EAB; Case map */
+  { 0x001EAC, 0, { 0x001EAD }},                      /* 1EAC; 1EAD; Case map */
+  { 0x001EAE, 0, { 0x001EAF }},                      /* 1EAE; 1EAF; Case map */
+  { 0x001EB0, 0, { 0x001EB1 }},                      /* 1EB0; 1EB1; Case map */
+  { 0x001EB2, 0, { 0x001EB3 }},                      /* 1EB2; 1EB3; Case map */
+  { 0x001EB4, 0, { 0x001EB5 }},                      /* 1EB4; 1EB5; Case map */
+  { 0x001EB6, 0, { 0x001EB7 }},                      /* 1EB6; 1EB7; Case map */
+  { 0x001EB8, 0, { 0x001EB9 }},                      /* 1EB8; 1EB9; Case map */
+  { 0x001EBA, 0, { 0x001EBB }},                      /* 1EBA; 1EBB; Case map */
+  { 0x001EBC, 0, { 0x001EBD }},                      /* 1EBC; 1EBD; Case map */
+  { 0x001EBE, 0, { 0x001EBF }},                      /* 1EBE; 1EBF; Case map */
+  { 0x001EC0, 0, { 0x001EC1 }},                      /* 1EC0; 1EC1; Case map */
+  { 0x001EC2, 0, { 0x001EC3 }},                      /* 1EC2; 1EC3; Case map */
+  { 0x001EC4, 0, { 0x001EC5 }},                      /* 1EC4; 1EC5; Case map */
+  { 0x001EC6, 0, { 0x001EC7 }},                      /* 1EC6; 1EC7; Case map */
+  { 0x001EC8, 0, { 0x001EC9 }},                      /* 1EC8; 1EC9; Case map */
+  { 0x001ECA, 0, { 0x001ECB }},                      /* 1ECA; 1ECB; Case map */
+  { 0x001ECC, 0, { 0x001ECD }},                      /* 1ECC; 1ECD; Case map */
+  { 0x001ECE, 0, { 0x001ECF }},                      /* 1ECE; 1ECF; Case map */
+  { 0x001ED0, 0, { 0x001ED1 }},                      /* 1ED0; 1ED1; Case map */
+  { 0x001ED2, 0, { 0x001ED3 }},                      /* 1ED2; 1ED3; Case map */
+  { 0x001ED4, 0, { 0x001ED5 }},                      /* 1ED4; 1ED5; Case map */
+  { 0x001ED6, 0, { 0x001ED7 }},                      /* 1ED6; 1ED7; Case map */
+  { 0x001ED8, 0, { 0x001ED9 }},                      /* 1ED8; 1ED9; Case map */
+  { 0x001EDA, 0, { 0x001EDB }},                      /* 1EDA; 1EDB; Case map */
+  { 0x001EDC, 0, { 0x001EDD }},                      /* 1EDC; 1EDD; Case map */
+  { 0x001EDE, 0, { 0x001EDF }},                      /* 1EDE; 1EDF; Case map */
+  { 0x001EE0, 0, { 0x001EE1 }},                      /* 1EE0; 1EE1; Case map */
+  { 0x001EE2, 0, { 0x001EE3 }},                      /* 1EE2; 1EE3; Case map */
+  { 0x001EE4, 0, { 0x001EE5 }},                      /* 1EE4; 1EE5; Case map */
+  { 0x001EE6, 0, { 0x001EE7 }},                      /* 1EE6; 1EE7; Case map */
+  { 0x001EE8, 0, { 0x001EE9 }},                      /* 1EE8; 1EE9; Case map */
+  { 0x001EEA, 0, { 0x001EEB }},                      /* 1EEA; 1EEB; Case map */
+  { 0x001EEC, 0, { 0x001EED }},                      /* 1EEC; 1EED; Case map */
+  { 0x001EEE, 0, { 0x001EEF }},                      /* 1EEE; 1EEF; Case map */
+  { 0x001EF0, 0, { 0x001EF1 }},                      /* 1EF0; 1EF1; Case map */
+  { 0x001EF2, 0, { 0x001EF3 }},                      /* 1EF2; 1EF3; Case map */
+  { 0x001EF4, 0, { 0x001EF5 }},                      /* 1EF4; 1EF5; Case map */
+  { 0x001EF6, 0, { 0x001EF7 }},                      /* 1EF6; 1EF7; Case map */
+  { 0x001EF8, 0, { 0x001EF9 }},                      /* 1EF8; 1EF9; Case map */
+  { 0x001F08, 0, { 0x001F00 }},                      /* 1F08; 1F00; Case map */
+  { 0x001F09, 0, { 0x001F01 }},                      /* 1F09; 1F01; Case map */
+  { 0x001F0A, 0, { 0x001F02 }},                      /* 1F0A; 1F02; Case map */
+  { 0x001F0B, 0, { 0x001F03 }},                      /* 1F0B; 1F03; Case map */
+  { 0x001F0C, 0, { 0x001F04 }},                      /* 1F0C; 1F04; Case map */
+  { 0x001F0D, 0, { 0x001F05 }},                      /* 1F0D; 1F05; Case map */
+  { 0x001F0E, 0, { 0x001F06 }},                      /* 1F0E; 1F06; Case map */
+  { 0x001F0F, 0, { 0x001F07 }},                      /* 1F0F; 1F07; Case map */
+  { 0x001F18, 0, { 0x001F10 }},                      /* 1F18; 1F10; Case map */
+  { 0x001F19, 0, { 0x001F11 }},                      /* 1F19; 1F11; Case map */
+  { 0x001F1A, 0, { 0x001F12 }},                      /* 1F1A; 1F12; Case map */
+  { 0x001F1B, 0, { 0x001F13 }},                      /* 1F1B; 1F13; Case map */
+  { 0x001F1C, 0, { 0x001F14 }},                      /* 1F1C; 1F14; Case map */
+  { 0x001F1D, 0, { 0x001F15 }},                      /* 1F1D; 1F15; Case map */
+  { 0x001F28, 0, { 0x001F20 }},                      /* 1F28; 1F20; Case map */
+  { 0x001F29, 0, { 0x001F21 }},                      /* 1F29; 1F21; Case map */
+  { 0x001F2A, 0, { 0x001F22 }},                      /* 1F2A; 1F22; Case map */
+  { 0x001F2B, 0, { 0x001F23 }},                      /* 1F2B; 1F23; Case map */
+  { 0x001F2C, 0, { 0x001F24 }},                      /* 1F2C; 1F24; Case map */
+  { 0x001F2D, 0, { 0x001F25 }},                      /* 1F2D; 1F25; Case map */
+  { 0x001F2E, 0, { 0x001F26 }},                      /* 1F2E; 1F26; Case map */
+  { 0x001F2F, 0, { 0x001F27 }},                      /* 1F2F; 1F27; Case map */
+  { 0x001F38, 0, { 0x001F30 }},                      /* 1F38; 1F30; Case map */
+  { 0x001F39, 0, { 0x001F31 }},                      /* 1F39; 1F31; Case map */
+  { 0x001F3A, 0, { 0x001F32 }},                      /* 1F3A; 1F32; Case map */
+  { 0x001F3B, 0, { 0x001F33 }},                      /* 1F3B; 1F33; Case map */
+  { 0x001F3C, 0, { 0x001F34 }},                      /* 1F3C; 1F34; Case map */
+  { 0x001F3D, 0, { 0x001F35 }},                      /* 1F3D; 1F35; Case map */
+  { 0x001F3E, 0, { 0x001F36 }},                      /* 1F3E; 1F36; Case map */
+  { 0x001F3F, 0, { 0x001F37 }},                      /* 1F3F; 1F37; Case map */
+  { 0x001F48, 0, { 0x001F40 }},                      /* 1F48; 1F40; Case map */
+  { 0x001F49, 0, { 0x001F41 }},                      /* 1F49; 1F41; Case map */
+  { 0x001F4A, 0, { 0x001F42 }},                      /* 1F4A; 1F42; Case map */
+  { 0x001F4B, 0, { 0x001F43 }},                      /* 1F4B; 1F43; Case map */
+  { 0x001F4C, 0, { 0x001F44 }},                      /* 1F4C; 1F44; Case map */
+  { 0x001F4D, 0, { 0x001F45 }},                      /* 1F4D; 1F45; Case map */
+  { 0x001F50, 0, { 0x0003C5,                    /* 1F50; 03C5 0313; Case map */
+                   0x000313 }},
+  { 0x001F52, 0, { 0x0003C5,               /* 1F52; 03C5 0313 0300; Case map */
+                   0x000313, 0x000300 }},
+  { 0x001F54, 0, { 0x0003C5,               /* 1F54; 03C5 0313 0301; Case map */
+                   0x000313, 0x000301 }},
+  { 0x001F56, 0, { 0x0003C5,               /* 1F56; 03C5 0313 0342; Case map */
+                   0x000313, 0x000342 }},
+  { 0x001F59, 0, { 0x001F51 }},                      /* 1F59; 1F51; Case map */
+  { 0x001F5B, 0, { 0x001F53 }},                      /* 1F5B; 1F53; Case map */
+  { 0x001F5D, 0, { 0x001F55 }},                      /* 1F5D; 1F55; Case map */
+  { 0x001F5F, 0, { 0x001F57 }},                      /* 1F5F; 1F57; Case map */
+  { 0x001F68, 0, { 0x001F60 }},                      /* 1F68; 1F60; Case map */
+  { 0x001F69, 0, { 0x001F61 }},                      /* 1F69; 1F61; Case map */
+  { 0x001F6A, 0, { 0x001F62 }},                      /* 1F6A; 1F62; Case map */
+  { 0x001F6B, 0, { 0x001F63 }},                      /* 1F6B; 1F63; Case map */
+  { 0x001F6C, 0, { 0x001F64 }},                      /* 1F6C; 1F64; Case map */
+  { 0x001F6D, 0, { 0x001F65 }},                      /* 1F6D; 1F65; Case map */
+  { 0x001F6E, 0, { 0x001F66 }},                      /* 1F6E; 1F66; Case map */
+  { 0x001F6F, 0, { 0x001F67 }},                      /* 1F6F; 1F67; Case map */
+  { 0x001F80, 0, { 0x001F00,                    /* 1F80; 1F00 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F81, 0, { 0x001F01,                    /* 1F81; 1F01 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F82, 0, { 0x001F02,                    /* 1F82; 1F02 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F83, 0, { 0x001F03,                    /* 1F83; 1F03 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F84, 0, { 0x001F04,                    /* 1F84; 1F04 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F85, 0, { 0x001F05,                    /* 1F85; 1F05 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F86, 0, { 0x001F06,                    /* 1F86; 1F06 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F87, 0, { 0x001F07,                    /* 1F87; 1F07 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F88, 0, { 0x001F00,                    /* 1F88; 1F00 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F89, 0, { 0x001F01,                    /* 1F89; 1F01 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8A, 0, { 0x001F02,                    /* 1F8A; 1F02 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8B, 0, { 0x001F03,                    /* 1F8B; 1F03 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8C, 0, { 0x001F04,                    /* 1F8C; 1F04 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8D, 0, { 0x001F05,                    /* 1F8D; 1F05 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8E, 0, { 0x001F06,                    /* 1F8E; 1F06 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8F, 0, { 0x001F07,                    /* 1F8F; 1F07 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F90, 0, { 0x001F20,                    /* 1F90; 1F20 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F91, 0, { 0x001F21,                    /* 1F91; 1F21 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F92, 0, { 0x001F22,                    /* 1F92; 1F22 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F93, 0, { 0x001F23,                    /* 1F93; 1F23 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F94, 0, { 0x001F24,                    /* 1F94; 1F24 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F95, 0, { 0x001F25,                    /* 1F95; 1F25 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F96, 0, { 0x001F26,                    /* 1F96; 1F26 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F97, 0, { 0x001F27,                    /* 1F97; 1F27 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F98, 0, { 0x001F20,                    /* 1F98; 1F20 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F99, 0, { 0x001F21,                    /* 1F99; 1F21 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9A, 0, { 0x001F22,                    /* 1F9A; 1F22 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9B, 0, { 0x001F23,                    /* 1F9B; 1F23 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9C, 0, { 0x001F24,                    /* 1F9C; 1F24 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9D, 0, { 0x001F25,                    /* 1F9D; 1F25 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9E, 0, { 0x001F26,                    /* 1F9E; 1F26 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9F, 0, { 0x001F27,                    /* 1F9F; 1F27 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA0, 0, { 0x001F60,                    /* 1FA0; 1F60 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA1, 0, { 0x001F61,                    /* 1FA1; 1F61 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA2, 0, { 0x001F62,                    /* 1FA2; 1F62 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA3, 0, { 0x001F63,                    /* 1FA3; 1F63 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA4, 0, { 0x001F64,                    /* 1FA4; 1F64 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA5, 0, { 0x001F65,                    /* 1FA5; 1F65 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA6, 0, { 0x001F66,                    /* 1FA6; 1F66 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA7, 0, { 0x001F67,                    /* 1FA7; 1F67 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA8, 0, { 0x001F60,                    /* 1FA8; 1F60 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA9, 0, { 0x001F61,                    /* 1FA9; 1F61 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAA, 0, { 0x001F62,                    /* 1FAA; 1F62 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAB, 0, { 0x001F63,                    /* 1FAB; 1F63 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAC, 0, { 0x001F64,                    /* 1FAC; 1F64 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAD, 0, { 0x001F65,                    /* 1FAD; 1F65 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAE, 0, { 0x001F66,                    /* 1FAE; 1F66 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAF, 0, { 0x001F67,                    /* 1FAF; 1F67 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FB2, 0, { 0x001F70,                    /* 1FB2; 1F70 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FB3, 0, { 0x0003B1,                    /* 1FB3; 03B1 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FB4, 0, { 0x0003AC,                    /* 1FB4; 03AC 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FB6, 0, { 0x0003B1,                    /* 1FB6; 03B1 0342; Case map */
+                   0x000342 }},
+  { 0x001FB7, 0, { 0x0003B1,               /* 1FB7; 03B1 0342 03B9; Case map */
+                   0x000342, 0x0003B9 }},
+  { 0x001FB8, 0, { 0x001FB0 }},                      /* 1FB8; 1FB0; Case map */
+  { 0x001FB9, 0, { 0x001FB1 }},                      /* 1FB9; 1FB1; Case map */
+  { 0x001FBA, 0, { 0x001F70 }},                      /* 1FBA; 1F70; Case map */
+  { 0x001FBB, 0, { 0x001F71 }},                      /* 1FBB; 1F71; Case map */
+  { 0x001FBC, 0, { 0x0003B1,                    /* 1FBC; 03B1 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FBE, 0, { 0x0003B9 }},                      /* 1FBE; 03B9; Case map */
+  { 0x001FC2, 0, { 0x001F74,                    /* 1FC2; 1F74 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FC3, 0, { 0x0003B7,                    /* 1FC3; 03B7 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FC4, 0, { 0x0003AE,                    /* 1FC4; 03AE 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FC6, 0, { 0x0003B7,                    /* 1FC6; 03B7 0342; Case map */
+                   0x000342 }},
+  { 0x001FC7, 0, { 0x0003B7,               /* 1FC7; 03B7 0342 03B9; Case map */
+                   0x000342, 0x0003B9 }},
+  { 0x001FC8, 0, { 0x001F72 }},                      /* 1FC8; 1F72; Case map */
+  { 0x001FC9, 0, { 0x001F73 }},                      /* 1FC9; 1F73; Case map */
+  { 0x001FCA, 0, { 0x001F74 }},                      /* 1FCA; 1F74; Case map */
+  { 0x001FCB, 0, { 0x001F75 }},                      /* 1FCB; 1F75; Case map */
+  { 0x001FCC, 0, { 0x0003B7,                    /* 1FCC; 03B7 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FD2, 0, { 0x0003B9,               /* 1FD2; 03B9 0308 0300; Case map */
+                   0x000308, 0x000300 }},
+  { 0x001FD3, 0, { 0x0003B9,               /* 1FD3; 03B9 0308 0301; Case map */
+                   0x000308, 0x000301 }},
+  { 0x001FD6, 0, { 0x0003B9,                    /* 1FD6; 03B9 0342; Case map */
+                   0x000342 }},
+  { 0x001FD7, 0, { 0x0003B9,               /* 1FD7; 03B9 0308 0342; Case map */
+                   0x000308, 0x000342 }},
+  { 0x001FD8, 0, { 0x001FD0 }},                      /* 1FD8; 1FD0; Case map */
+  { 0x001FD9, 0, { 0x001FD1 }},                      /* 1FD9; 1FD1; Case map */
+  { 0x001FDA, 0, { 0x001F76 }},                      /* 1FDA; 1F76; Case map */
+  { 0x001FDB, 0, { 0x001F77 }},                      /* 1FDB; 1F77; Case map */
+  { 0x001FE2, 0, { 0x0003C5,               /* 1FE2; 03C5 0308 0300; Case map */
+                   0x000308, 0x000300 }},
+  { 0x001FE3, 0, { 0x0003C5,               /* 1FE3; 03C5 0308 0301; Case map */
+                   0x000308, 0x000301 }},
+  { 0x001FE4, 0, { 0x0003C1,                    /* 1FE4; 03C1 0313; Case map */
+                   0x000313 }},
+  { 0x001FE6, 0, { 0x0003C5,                    /* 1FE6; 03C5 0342; Case map */
+                   0x000342 }},
+  { 0x001FE7, 0, { 0x0003C5,               /* 1FE7; 03C5 0308 0342; Case map */
+                   0x000308, 0x000342 }},
+  { 0x001FE8, 0, { 0x001FE0 }},                      /* 1FE8; 1FE0; Case map */
+  { 0x001FE9, 0, { 0x001FE1 }},                      /* 1FE9; 1FE1; Case map */
+  { 0x001FEA, 0, { 0x001F7A }},                      /* 1FEA; 1F7A; Case map */
+  { 0x001FEB, 0, { 0x001F7B }},                      /* 1FEB; 1F7B; Case map */
+  { 0x001FEC, 0, { 0x001FE5 }},                      /* 1FEC; 1FE5; Case map */
+  { 0x001FF2, 0, { 0x001F7C,                    /* 1FF2; 1F7C 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FF3, 0, { 0x0003C9,                    /* 1FF3; 03C9 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FF4, 0, { 0x0003CE,                    /* 1FF4; 03CE 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FF6, 0, { 0x0003C9,                    /* 1FF6; 03C9 0342; Case map */
+                   0x000342 }},
+  { 0x001FF7, 0, { 0x0003C9,               /* 1FF7; 03C9 0342 03B9; Case map */
+                   0x000342, 0x0003B9 }},
+  { 0x001FF8, 0, { 0x001F78 }},                      /* 1FF8; 1F78; Case map */
+  { 0x001FF9, 0, { 0x001F79 }},                      /* 1FF9; 1F79; Case map */
+  { 0x001FFA, 0, { 0x001F7C }},                      /* 1FFA; 1F7C; Case map */
+  { 0x001FFB, 0, { 0x001F7D }},                      /* 1FFB; 1F7D; Case map */
+  { 0x001FFC, 0, { 0x0003C9,                    /* 1FFC; 03C9 03B9; Case map */
+                   0x0003B9 }},
+  { 0x0020A8, 0, { 0x000072,          /* 20A8; 0072 0073; Additional folding */
+                   0x000073 }},
+  { 0x002102, 0, { 0x000063 }},            /* 2102; 0063; Additional folding */
+  { 0x002103, 0, { 0x0000B0,          /* 2103; 00B0 0063; Additional folding */
+                   0x000063 }},
+  { 0x002107, 0, { 0x00025B }},            /* 2107; 025B; Additional folding */
+  { 0x002109, 0, { 0x0000B0,          /* 2109; 00B0 0066; Additional folding */
+                   0x000066 }},
+  { 0x00210B, 0, { 0x000068 }},            /* 210B; 0068; Additional folding */
+  { 0x00210C, 0, { 0x000068 }},            /* 210C; 0068; Additional folding */
+  { 0x00210D, 0, { 0x000068 }},            /* 210D; 0068; Additional folding */
+  { 0x002110, 0, { 0x000069 }},            /* 2110; 0069; Additional folding */
+  { 0x002111, 0, { 0x000069 }},            /* 2111; 0069; Additional folding */
+  { 0x002112, 0, { 0x00006C }},            /* 2112; 006C; Additional folding */
+  { 0x002115, 0, { 0x00006E }},            /* 2115; 006E; Additional folding */
+  { 0x002116, 0, { 0x00006E,          /* 2116; 006E 006F; Additional folding */
+                   0x00006F }},
+  { 0x002119, 0, { 0x000070 }},            /* 2119; 0070; Additional folding */
+  { 0x00211A, 0, { 0x000071 }},            /* 211A; 0071; Additional folding */
+  { 0x00211B, 0, { 0x000072 }},            /* 211B; 0072; Additional folding */
+  { 0x00211C, 0, { 0x000072 }},            /* 211C; 0072; Additional folding */
+  { 0x00211D, 0, { 0x000072 }},            /* 211D; 0072; Additional folding */
+  { 0x002120, 0, { 0x000073,          /* 2120; 0073 006D; Additional folding */
+                   0x00006D }},
+  { 0x002121, 0, { 0x000074,     /* 2121; 0074 0065 006C; Additional folding */
+                   0x000065, 0x00006C }},
+  { 0x002122, 0, { 0x000074,          /* 2122; 0074 006D; Additional folding */
+                   0x00006D }},
+  { 0x002124, 0, { 0x00007A }},            /* 2124; 007A; Additional folding */
+  { 0x002126, 0, { 0x0003C9 }},                      /* 2126; 03C9; Case map */
+  { 0x002128, 0, { 0x00007A }},            /* 2128; 007A; Additional folding */
+  { 0x00212A, 0, { 0x00006B }},                      /* 212A; 006B; Case map */
+  { 0x00212B, 0, { 0x0000E5 }},                      /* 212B; 00E5; Case map */
+  { 0x00212C, 0, { 0x000062 }},            /* 212C; 0062; Additional folding */
+  { 0x00212D, 0, { 0x000063 }},            /* 212D; 0063; Additional folding */
+  { 0x002130, 0, { 0x000065 }},            /* 2130; 0065; Additional folding */
+  { 0x002131, 0, { 0x000066 }},            /* 2131; 0066; Additional folding */
+  { 0x002133, 0, { 0x00006D }},            /* 2133; 006D; Additional folding */
+  { 0x00213E, 0, { 0x0003B3 }},            /* 213E; 03B3; Additional folding */
+  { 0x00213F, 0, { 0x0003C0 }},            /* 213F; 03C0; Additional folding */
+  { 0x002145, 0, { 0x000064 }},            /* 2145; 0064; Additional folding */
+  { 0x002160, 0, { 0x002170 }},                      /* 2160; 2170; Case map */
+  { 0x002161, 0, { 0x002171 }},                      /* 2161; 2171; Case map */
+  { 0x002162, 0, { 0x002172 }},                      /* 2162; 2172; Case map */
+  { 0x002163, 0, { 0x002173 }},                      /* 2163; 2173; Case map */
+  { 0x002164, 0, { 0x002174 }},                      /* 2164; 2174; Case map */
+  { 0x002165, 0, { 0x002175 }},                      /* 2165; 2175; Case map */
+  { 0x002166, 0, { 0x002176 }},                      /* 2166; 2176; Case map */
+  { 0x002167, 0, { 0x002177 }},                      /* 2167; 2177; Case map */
+  { 0x002168, 0, { 0x002178 }},                      /* 2168; 2178; Case map */
+  { 0x002169, 0, { 0x002179 }},                      /* 2169; 2179; Case map */
+  { 0x00216A, 0, { 0x00217A }},                      /* 216A; 217A; Case map */
+  { 0x00216B, 0, { 0x00217B }},                      /* 216B; 217B; Case map */
+  { 0x00216C, 0, { 0x00217C }},                      /* 216C; 217C; Case map */
+  { 0x00216D, 0, { 0x00217D }},                      /* 216D; 217D; Case map */
+  { 0x00216E, 0, { 0x00217E }},                      /* 216E; 217E; Case map */
+  { 0x00216F, 0, { 0x00217F }},                      /* 216F; 217F; Case map */
+  { 0x0024B6, 0, { 0x0024D0 }},                      /* 24B6; 24D0; Case map */
+  { 0x0024B7, 0, { 0x0024D1 }},                      /* 24B7; 24D1; Case map */
+  { 0x0024B8, 0, { 0x0024D2 }},                      /* 24B8; 24D2; Case map */
+  { 0x0024B9, 0, { 0x0024D3 }},                      /* 24B9; 24D3; Case map */
+  { 0x0024BA, 0, { 0x0024D4 }},                      /* 24BA; 24D4; Case map */
+  { 0x0024BB, 0, { 0x0024D5 }},                      /* 24BB; 24D5; Case map */
+  { 0x0024BC, 0, { 0x0024D6 }},                      /* 24BC; 24D6; Case map */
+  { 0x0024BD, 0, { 0x0024D7 }},                      /* 24BD; 24D7; Case map */
+  { 0x0024BE, 0, { 0x0024D8 }},                      /* 24BE; 24D8; Case map */
+  { 0x0024BF, 0, { 0x0024D9 }},                      /* 24BF; 24D9; Case map */
+  { 0x0024C0, 0, { 0x0024DA }},                      /* 24C0; 24DA; Case map */
+  { 0x0024C1, 0, { 0x0024DB }},                      /* 24C1; 24DB; Case map */
+  { 0x0024C2, 0, { 0x0024DC }},                      /* 24C2; 24DC; Case map */
+  { 0x0024C3, 0, { 0x0024DD }},                      /* 24C3; 24DD; Case map */
+  { 0x0024C4, 0, { 0x0024DE }},                      /* 24C4; 24DE; Case map */
+  { 0x0024C5, 0, { 0x0024DF }},                      /* 24C5; 24DF; Case map */
+  { 0x0024C6, 0, { 0x0024E0 }},                      /* 24C6; 24E0; Case map */
+  { 0x0024C7, 0, { 0x0024E1 }},                      /* 24C7; 24E1; Case map */
+  { 0x0024C8, 0, { 0x0024E2 }},                      /* 24C8; 24E2; Case map */
+  { 0x0024C9, 0, { 0x0024E3 }},                      /* 24C9; 24E3; Case map */
+  { 0x0024CA, 0, { 0x0024E4 }},                      /* 24CA; 24E4; Case map */
+  { 0x0024CB, 0, { 0x0024E5 }},                      /* 24CB; 24E5; Case map */
+  { 0x0024CC, 0, { 0x0024E6 }},                      /* 24CC; 24E6; Case map */
+  { 0x0024CD, 0, { 0x0024E7 }},                      /* 24CD; 24E7; Case map */
+  { 0x0024CE, 0, { 0x0024E8 }},                      /* 24CE; 24E8; Case map */
+  { 0x0024CF, 0, { 0x0024E9 }},                      /* 24CF; 24E9; Case map */
+  { 0x003371, 0, { 0x000068,     /* 3371; 0068 0070 0061; Additional folding */
+                   0x000070, 0x000061 }},
+  { 0x003373, 0, { 0x000061,          /* 3373; 0061 0075; Additional folding */
+                   0x000075 }},
+  { 0x003375, 0, { 0x00006F,          /* 3375; 006F 0076; Additional folding */
+                   0x000076 }},
+  { 0x003380, 0, { 0x000070,          /* 3380; 0070 0061; Additional folding */
+                   0x000061 }},
+  { 0x003381, 0, { 0x00006E,          /* 3381; 006E 0061; Additional folding */
+                   0x000061 }},
+  { 0x003382, 0, { 0x0003BC,          /* 3382; 03BC 0061; Additional folding */
+                   0x000061 }},
+  { 0x003383, 0, { 0x00006D,          /* 3383; 006D 0061; Additional folding */
+                   0x000061 }},
+  { 0x003384, 0, { 0x00006B,          /* 3384; 006B 0061; Additional folding */
+                   0x000061 }},
+  { 0x003385, 0, { 0x00006B,          /* 3385; 006B 0062; Additional folding */
+                   0x000062 }},
+  { 0x003386, 0, { 0x00006D,          /* 3386; 006D 0062; Additional folding */
+                   0x000062 }},
+  { 0x003387, 0, { 0x000067,          /* 3387; 0067 0062; Additional folding */
+                   0x000062 }},
+  { 0x00338A, 0, { 0x000070,          /* 338A; 0070 0066; Additional folding */
+                   0x000066 }},
+  { 0x00338B, 0, { 0x00006E,          /* 338B; 006E 0066; Additional folding */
+                   0x000066 }},
+  { 0x00338C, 0, { 0x0003BC,          /* 338C; 03BC 0066; Additional folding */
+                   0x000066 }},
+  { 0x003390, 0, { 0x000068,          /* 3390; 0068 007A; Additional folding */
+                   0x00007A }},
+  { 0x003391, 0, { 0x00006B,     /* 3391; 006B 0068 007A; Additional folding */
+                   0x000068, 0x00007A }},
+  { 0x003392, 0, { 0x00006D,     /* 3392; 006D 0068 007A; Additional folding */
+                   0x000068, 0x00007A }},
+  { 0x003393, 0, { 0x000067,     /* 3393; 0067 0068 007A; Additional folding */
+                   0x000068, 0x00007A }},
+  { 0x003394, 0, { 0x000074,     /* 3394; 0074 0068 007A; Additional folding */
+                   0x000068, 0x00007A }},
+  { 0x0033A9, 0, { 0x000070,          /* 33A9; 0070 0061; Additional folding */
+                   0x000061 }},
+  { 0x0033AA, 0, { 0x00006B,     /* 33AA; 006B 0070 0061; Additional folding */
+                   0x000070, 0x000061 }},
+  { 0x0033AB, 0, { 0x00006D,     /* 33AB; 006D 0070 0061; Additional folding */
+                   0x000070, 0x000061 }},
+  { 0x0033AC, 0, { 0x000067,     /* 33AC; 0067 0070 0061; Additional folding */
+                   0x000070, 0x000061 }},
+  { 0x0033B4, 0, { 0x000070,          /* 33B4; 0070 0076; Additional folding */
+                   0x000076 }},
+  { 0x0033B5, 0, { 0x00006E,          /* 33B5; 006E 0076; Additional folding */
+                   0x000076 }},
+  { 0x0033B6, 0, { 0x0003BC,          /* 33B6; 03BC 0076; Additional folding */
+                   0x000076 }},
+  { 0x0033B7, 0, { 0x00006D,          /* 33B7; 006D 0076; Additional folding */
+                   0x000076 }},
+  { 0x0033B8, 0, { 0x00006B,          /* 33B8; 006B 0076; Additional folding */
+                   0x000076 }},
+  { 0x0033B9, 0, { 0x00006D,          /* 33B9; 006D 0076; Additional folding */
+                   0x000076 }},
+  { 0x0033BA, 0, { 0x000070,          /* 33BA; 0070 0077; Additional folding */
+                   0x000077 }},
+  { 0x0033BB, 0, { 0x00006E,          /* 33BB; 006E 0077; Additional folding */
+                   0x000077 }},
+  { 0x0033BC, 0, { 0x0003BC,          /* 33BC; 03BC 0077; Additional folding */
+                   0x000077 }},
+  { 0x0033BD, 0, { 0x00006D,          /* 33BD; 006D 0077; Additional folding */
+                   0x000077 }},
+  { 0x0033BE, 0, { 0x00006B,          /* 33BE; 006B 0077; Additional folding */
+                   0x000077 }},
+  { 0x0033BF, 0, { 0x00006D,          /* 33BF; 006D 0077; Additional folding */
+                   0x000077 }},
+  { 0x0033C0, 0, { 0x00006B,          /* 33C0; 006B 03C9; Additional folding */
+                   0x0003C9 }},
+  { 0x0033C1, 0, { 0x00006D,          /* 33C1; 006D 03C9; Additional folding */
+                   0x0003C9 }},
+  { 0x0033C3, 0, { 0x000062,          /* 33C3; 0062 0071; Additional folding */
+                   0x000071 }},
+  { 0x0033C6, 0, { 0x000063, /* 33C6; 0063 2215 006B 0067; Additional folding */
+                   0x002215, 0x00006B, 0x000067 }},
+  { 0x0033C7, 0, { 0x000063,     /* 33C7; 0063 006F 002E; Additional folding */
+                   0x00006F, 0x00002E }},
+  { 0x0033C8, 0, { 0x000064,          /* 33C8; 0064 0062; Additional folding */
+                   0x000062 }},
+  { 0x0033C9, 0, { 0x000067,          /* 33C9; 0067 0079; Additional folding */
+                   0x000079 }},
+  { 0x0033CB, 0, { 0x000068,          /* 33CB; 0068 0070; Additional folding */
+                   0x000070 }},
+  { 0x0033CD, 0, { 0x00006B,          /* 33CD; 006B 006B; Additional folding */
+                   0x00006B }},
+  { 0x0033CE, 0, { 0x00006B,          /* 33CE; 006B 006D; Additional folding */
+                   0x00006D }},
+  { 0x0033D7, 0, { 0x000070,          /* 33D7; 0070 0068; Additional folding */
+                   0x000068 }},
+  { 0x0033D9, 0, { 0x000070,     /* 33D9; 0070 0070 006D; Additional folding */
+                   0x000070, 0x00006D }},
+  { 0x0033DA, 0, { 0x000070,          /* 33DA; 0070 0072; Additional folding */
+                   0x000072 }},
+  { 0x0033DC, 0, { 0x000073,          /* 33DC; 0073 0076; Additional folding */
+                   0x000076 }},
+  { 0x0033DD, 0, { 0x000077,          /* 33DD; 0077 0062; Additional folding */
+                   0x000062 }},
+  { 0x00FB00, 0, { 0x000066,                    /* FB00; 0066 0066; Case map */
+                   0x000066 }},
+  { 0x00FB01, 0, { 0x000066,                    /* FB01; 0066 0069; Case map */
+                   0x000069 }},
+  { 0x00FB02, 0, { 0x000066,                    /* FB02; 0066 006C; Case map */
+                   0x00006C }},
+  { 0x00FB03, 0, { 0x000066,               /* FB03; 0066 0066 0069; Case map */
+                   0x000066, 0x000069 }},
+  { 0x00FB04, 0, { 0x000066,               /* FB04; 0066 0066 006C; Case map */
+                   0x000066, 0x00006C }},
+  { 0x00FB05, 0, { 0x000073,                    /* FB05; 0073 0074; Case map */
+                   0x000074 }},
+  { 0x00FB06, 0, { 0x000073,                    /* FB06; 0073 0074; Case map */
+                   0x000074 }},
+  { 0x00FB13, 0, { 0x000574,                    /* FB13; 0574 0576; Case map */
+                   0x000576 }},
+  { 0x00FB14, 0, { 0x000574,                    /* FB14; 0574 0565; Case map */
+                   0x000565 }},
+  { 0x00FB15, 0, { 0x000574,                    /* FB15; 0574 056B; Case map */
+                   0x00056B }},
+  { 0x00FB16, 0, { 0x00057E,                    /* FB16; 057E 0576; Case map */
+                   0x000576 }},
+  { 0x00FB17, 0, { 0x000574,                    /* FB17; 0574 056D; Case map */
+                   0x00056D }},
+  { 0x00FF21, 0, { 0x00FF41 }},                      /* FF21; FF41; Case map */
+  { 0x00FF22, 0, { 0x00FF42 }},                      /* FF22; FF42; Case map */
+  { 0x00FF23, 0, { 0x00FF43 }},                      /* FF23; FF43; Case map */
+  { 0x00FF24, 0, { 0x00FF44 }},                      /* FF24; FF44; Case map */
+  { 0x00FF25, 0, { 0x00FF45 }},                      /* FF25; FF45; Case map */
+  { 0x00FF26, 0, { 0x00FF46 }},                      /* FF26; FF46; Case map */
+  { 0x00FF27, 0, { 0x00FF47 }},                      /* FF27; FF47; Case map */
+  { 0x00FF28, 0, { 0x00FF48 }},                      /* FF28; FF48; Case map */
+  { 0x00FF29, 0, { 0x00FF49 }},                      /* FF29; FF49; Case map */
+  { 0x00FF2A, 0, { 0x00FF4A }},                      /* FF2A; FF4A; Case map */
+  { 0x00FF2B, 0, { 0x00FF4B }},                      /* FF2B; FF4B; Case map */
+  { 0x00FF2C, 0, { 0x00FF4C }},                      /* FF2C; FF4C; Case map */
+  { 0x00FF2D, 0, { 0x00FF4D }},                      /* FF2D; FF4D; Case map */
+  { 0x00FF2E, 0, { 0x00FF4E }},                      /* FF2E; FF4E; Case map */
+  { 0x00FF2F, 0, { 0x00FF4F }},                      /* FF2F; FF4F; Case map */
+  { 0x00FF30, 0, { 0x00FF50 }},                      /* FF30; FF50; Case map */
+  { 0x00FF31, 0, { 0x00FF51 }},                      /* FF31; FF51; Case map */
+  { 0x00FF32, 0, { 0x00FF52 }},                      /* FF32; FF52; Case map */
+  { 0x00FF33, 0, { 0x00FF53 }},                      /* FF33; FF53; Case map */
+  { 0x00FF34, 0, { 0x00FF54 }},                      /* FF34; FF54; Case map */
+  { 0x00FF35, 0, { 0x00FF55 }},                      /* FF35; FF55; Case map */
+  { 0x00FF36, 0, { 0x00FF56 }},                      /* FF36; FF56; Case map */
+  { 0x00FF37, 0, { 0x00FF57 }},                      /* FF37; FF57; Case map */
+  { 0x00FF38, 0, { 0x00FF58 }},                      /* FF38; FF58; Case map */
+  { 0x00FF39, 0, { 0x00FF59 }},                      /* FF39; FF59; Case map */
+  { 0x00FF3A, 0, { 0x00FF5A }},                      /* FF3A; FF5A; Case map */
+  { 0x010400, 0, { 0x010428 }},                    /* 10400; 10428; Case map */
+  { 0x010401, 0, { 0x010429 }},                    /* 10401; 10429; Case map */
+  { 0x010402, 0, { 0x01042A }},                    /* 10402; 1042A; Case map */
+  { 0x010403, 0, { 0x01042B }},                    /* 10403; 1042B; Case map */
+  { 0x010404, 0, { 0x01042C }},                    /* 10404; 1042C; Case map */
+  { 0x010405, 0, { 0x01042D }},                    /* 10405; 1042D; Case map */
+  { 0x010406, 0, { 0x01042E }},                    /* 10406; 1042E; Case map */
+  { 0x010407, 0, { 0x01042F }},                    /* 10407; 1042F; Case map */
+  { 0x010408, 0, { 0x010430 }},                    /* 10408; 10430; Case map */
+  { 0x010409, 0, { 0x010431 }},                    /* 10409; 10431; Case map */
+  { 0x01040A, 0, { 0x010432 }},                    /* 1040A; 10432; Case map */
+  { 0x01040B, 0, { 0x010433 }},                    /* 1040B; 10433; Case map */
+  { 0x01040C, 0, { 0x010434 }},                    /* 1040C; 10434; Case map */
+  { 0x01040D, 0, { 0x010435 }},                    /* 1040D; 10435; Case map */
+  { 0x01040E, 0, { 0x010436 }},                    /* 1040E; 10436; Case map */
+  { 0x01040F, 0, { 0x010437 }},                    /* 1040F; 10437; Case map */
+  { 0x010410, 0, { 0x010438 }},                    /* 10410; 10438; Case map */
+  { 0x010411, 0, { 0x010439 }},                    /* 10411; 10439; Case map */
+  { 0x010412, 0, { 0x01043A }},                    /* 10412; 1043A; Case map */
+  { 0x010413, 0, { 0x01043B }},                    /* 10413; 1043B; Case map */
+  { 0x010414, 0, { 0x01043C }},                    /* 10414; 1043C; Case map */
+  { 0x010415, 0, { 0x01043D }},                    /* 10415; 1043D; Case map */
+  { 0x010416, 0, { 0x01043E }},                    /* 10416; 1043E; Case map */
+  { 0x010417, 0, { 0x01043F }},                    /* 10417; 1043F; Case map */
+  { 0x010418, 0, { 0x010440 }},                    /* 10418; 10440; Case map */
+  { 0x010419, 0, { 0x010441 }},                    /* 10419; 10441; Case map */
+  { 0x01041A, 0, { 0x010442 }},                    /* 1041A; 10442; Case map */
+  { 0x01041B, 0, { 0x010443 }},                    /* 1041B; 10443; Case map */
+  { 0x01041C, 0, { 0x010444 }},                    /* 1041C; 10444; Case map */
+  { 0x01041D, 0, { 0x010445 }},                    /* 1041D; 10445; Case map */
+  { 0x01041E, 0, { 0x010446 }},                    /* 1041E; 10446; Case map */
+  { 0x01041F, 0, { 0x010447 }},                    /* 1041F; 10447; Case map */
+  { 0x010420, 0, { 0x010448 }},                    /* 10420; 10448; Case map */
+  { 0x010421, 0, { 0x010449 }},                    /* 10421; 10449; Case map */
+  { 0x010422, 0, { 0x01044A }},                    /* 10422; 1044A; Case map */
+  { 0x010423, 0, { 0x01044B }},                    /* 10423; 1044B; Case map */
+  { 0x010424, 0, { 0x01044C }},                    /* 10424; 1044C; Case map */
+  { 0x010425, 0, { 0x01044D }},                    /* 10425; 1044D; Case map */
+  { 0x01D400, 0, { 0x000061 }},           /* 1D400; 0061; Additional folding */
+  { 0x01D401, 0, { 0x000062 }},           /* 1D401; 0062; Additional folding */
+  { 0x01D402, 0, { 0x000063 }},           /* 1D402; 0063; Additional folding */
+  { 0x01D403, 0, { 0x000064 }},           /* 1D403; 0064; Additional folding */
+  { 0x01D404, 0, { 0x000065 }},           /* 1D404; 0065; Additional folding */
+  { 0x01D405, 0, { 0x000066 }},           /* 1D405; 0066; Additional folding */
+  { 0x01D406, 0, { 0x000067 }},           /* 1D406; 0067; Additional folding */
+  { 0x01D407, 0, { 0x000068 }},           /* 1D407; 0068; Additional folding */
+  { 0x01D408, 0, { 0x000069 }},           /* 1D408; 0069; Additional folding */
+  { 0x01D409, 0, { 0x00006A }},           /* 1D409; 006A; Additional folding */
+  { 0x01D40A, 0, { 0x00006B }},           /* 1D40A; 006B; Additional folding */
+  { 0x01D40B, 0, { 0x00006C }},           /* 1D40B; 006C; Additional folding */
+  { 0x01D40C, 0, { 0x00006D }},           /* 1D40C; 006D; Additional folding */
+  { 0x01D40D, 0, { 0x00006E }},           /* 1D40D; 006E; Additional folding */
+  { 0x01D40E, 0, { 0x00006F }},           /* 1D40E; 006F; Additional folding */
+  { 0x01D40F, 0, { 0x000070 }},           /* 1D40F; 0070; Additional folding */
+  { 0x01D410, 0, { 0x000071 }},           /* 1D410; 0071; Additional folding */
+  { 0x01D411, 0, { 0x000072 }},           /* 1D411; 0072; Additional folding */
+  { 0x01D412, 0, { 0x000073 }},           /* 1D412; 0073; Additional folding */
+  { 0x01D413, 0, { 0x000074 }},           /* 1D413; 0074; Additional folding */
+  { 0x01D414, 0, { 0x000075 }},           /* 1D414; 0075; Additional folding */
+  { 0x01D415, 0, { 0x000076 }},           /* 1D415; 0076; Additional folding */
+  { 0x01D416, 0, { 0x000077 }},           /* 1D416; 0077; Additional folding */
+  { 0x01D417, 0, { 0x000078 }},           /* 1D417; 0078; Additional folding */
+  { 0x01D418, 0, { 0x000079 }},           /* 1D418; 0079; Additional folding */
+  { 0x01D419, 0, { 0x00007A }},           /* 1D419; 007A; Additional folding */
+  { 0x01D434, 0, { 0x000061 }},           /* 1D434; 0061; Additional folding */
+  { 0x01D435, 0, { 0x000062 }},           /* 1D435; 0062; Additional folding */
+  { 0x01D436, 0, { 0x000063 }},           /* 1D436; 0063; Additional folding */
+  { 0x01D437, 0, { 0x000064 }},           /* 1D437; 0064; Additional folding */
+  { 0x01D438, 0, { 0x000065 }},           /* 1D438; 0065; Additional folding */
+  { 0x01D439, 0, { 0x000066 }},           /* 1D439; 0066; Additional folding */
+  { 0x01D43A, 0, { 0x000067 }},           /* 1D43A; 0067; Additional folding */
+  { 0x01D43B, 0, { 0x000068 }},           /* 1D43B; 0068; Additional folding */
+  { 0x01D43C, 0, { 0x000069 }},           /* 1D43C; 0069; Additional folding */
+  { 0x01D43D, 0, { 0x00006A }},           /* 1D43D; 006A; Additional folding */
+  { 0x01D43E, 0, { 0x00006B }},           /* 1D43E; 006B; Additional folding */
+  { 0x01D43F, 0, { 0x00006C }},           /* 1D43F; 006C; Additional folding */
+  { 0x01D440, 0, { 0x00006D }},           /* 1D440; 006D; Additional folding */
+  { 0x01D441, 0, { 0x00006E }},           /* 1D441; 006E; Additional folding */
+  { 0x01D442, 0, { 0x00006F }},           /* 1D442; 006F; Additional folding */
+  { 0x01D443, 0, { 0x000070 }},           /* 1D443; 0070; Additional folding */
+  { 0x01D444, 0, { 0x000071 }},           /* 1D444; 0071; Additional folding */
+  { 0x01D445, 0, { 0x000072 }},           /* 1D445; 0072; Additional folding */
+  { 0x01D446, 0, { 0x000073 }},           /* 1D446; 0073; Additional folding */
+  { 0x01D447, 0, { 0x000074 }},           /* 1D447; 0074; Additional folding */
+  { 0x01D448, 0, { 0x000075 }},           /* 1D448; 0075; Additional folding */
+  { 0x01D449, 0, { 0x000076 }},           /* 1D449; 0076; Additional folding */
+  { 0x01D44A, 0, { 0x000077 }},           /* 1D44A; 0077; Additional folding */
+  { 0x01D44B, 0, { 0x000078 }},           /* 1D44B; 0078; Additional folding */
+  { 0x01D44C, 0, { 0x000079 }},           /* 1D44C; 0079; Additional folding */
+  { 0x01D44D, 0, { 0x00007A }},           /* 1D44D; 007A; Additional folding */
+  { 0x01D468, 0, { 0x000061 }},           /* 1D468; 0061; Additional folding */
+  { 0x01D469, 0, { 0x000062 }},           /* 1D469; 0062; Additional folding */
+  { 0x01D46A, 0, { 0x000063 }},           /* 1D46A; 0063; Additional folding */
+  { 0x01D46B, 0, { 0x000064 }},           /* 1D46B; 0064; Additional folding */
+  { 0x01D46C, 0, { 0x000065 }},           /* 1D46C; 0065; Additional folding */
+  { 0x01D46D, 0, { 0x000066 }},           /* 1D46D; 0066; Additional folding */
+  { 0x01D46E, 0, { 0x000067 }},           /* 1D46E; 0067; Additional folding */
+  { 0x01D46F, 0, { 0x000068 }},           /* 1D46F; 0068; Additional folding */
+  { 0x01D470, 0, { 0x000069 }},           /* 1D470; 0069; Additional folding */
+  { 0x01D471, 0, { 0x00006A }},           /* 1D471; 006A; Additional folding */
+  { 0x01D472, 0, { 0x00006B }},           /* 1D472; 006B; Additional folding */
+  { 0x01D473, 0, { 0x00006C }},           /* 1D473; 006C; Additional folding */
+  { 0x01D474, 0, { 0x00006D }},           /* 1D474; 006D; Additional folding */
+  { 0x01D475, 0, { 0x00006E }},           /* 1D475; 006E; Additional folding */
+  { 0x01D476, 0, { 0x00006F }},           /* 1D476; 006F; Additional folding */
+  { 0x01D477, 0, { 0x000070 }},           /* 1D477; 0070; Additional folding */
+  { 0x01D478, 0, { 0x000071 }},           /* 1D478; 0071; Additional folding */
+  { 0x01D479, 0, { 0x000072 }},           /* 1D479; 0072; Additional folding */
+  { 0x01D47A, 0, { 0x000073 }},           /* 1D47A; 0073; Additional folding */
+  { 0x01D47B, 0, { 0x000074 }},           /* 1D47B; 0074; Additional folding */
+  { 0x01D47C, 0, { 0x000075 }},           /* 1D47C; 0075; Additional folding */
+  { 0x01D47D, 0, { 0x000076 }},           /* 1D47D; 0076; Additional folding */
+  { 0x01D47E, 0, { 0x000077 }},           /* 1D47E; 0077; Additional folding */
+  { 0x01D47F, 0, { 0x000078 }},           /* 1D47F; 0078; Additional folding */
+  { 0x01D480, 0, { 0x000079 }},           /* 1D480; 0079; Additional folding */
+  { 0x01D481, 0, { 0x00007A }},           /* 1D481; 007A; Additional folding */
+  { 0x01D49C, 0, { 0x000061 }},           /* 1D49C; 0061; Additional folding */
+  { 0x01D49E, 0, { 0x000063 }},           /* 1D49E; 0063; Additional folding */
+  { 0x01D49F, 0, { 0x000064 }},           /* 1D49F; 0064; Additional folding */
+  { 0x01D4A2, 0, { 0x000067 }},           /* 1D4A2; 0067; Additional folding */
+  { 0x01D4A5, 0, { 0x00006A }},           /* 1D4A5; 006A; Additional folding */
+  { 0x01D4A6, 0, { 0x00006B }},           /* 1D4A6; 006B; Additional folding */
+  { 0x01D4A9, 0, { 0x00006E }},           /* 1D4A9; 006E; Additional folding */
+  { 0x01D4AA, 0, { 0x00006F }},           /* 1D4AA; 006F; Additional folding */
+  { 0x01D4AB, 0, { 0x000070 }},           /* 1D4AB; 0070; Additional folding */
+  { 0x01D4AC, 0, { 0x000071 }},           /* 1D4AC; 0071; Additional folding */
+  { 0x01D4AE, 0, { 0x000073 }},           /* 1D4AE; 0073; Additional folding */
+  { 0x01D4AF, 0, { 0x000074 }},           /* 1D4AF; 0074; Additional folding */
+  { 0x01D4B0, 0, { 0x000075 }},           /* 1D4B0; 0075; Additional folding */
+  { 0x01D4B1, 0, { 0x000076 }},           /* 1D4B1; 0076; Additional folding */
+  { 0x01D4B2, 0, { 0x000077 }},           /* 1D4B2; 0077; Additional folding */
+  { 0x01D4B3, 0, { 0x000078 }},           /* 1D4B3; 0078; Additional folding */
+  { 0x01D4B4, 0, { 0x000079 }},           /* 1D4B4; 0079; Additional folding */
+  { 0x01D4B5, 0, { 0x00007A }},           /* 1D4B5; 007A; Additional folding */
+  { 0x01D4D0, 0, { 0x000061 }},           /* 1D4D0; 0061; Additional folding */
+  { 0x01D4D1, 0, { 0x000062 }},           /* 1D4D1; 0062; Additional folding */
+  { 0x01D4D2, 0, { 0x000063 }},           /* 1D4D2; 0063; Additional folding */
+  { 0x01D4D3, 0, { 0x000064 }},           /* 1D4D3; 0064; Additional folding */
+  { 0x01D4D4, 0, { 0x000065 }},           /* 1D4D4; 0065; Additional folding */
+  { 0x01D4D5, 0, { 0x000066 }},           /* 1D4D5; 0066; Additional folding */
+  { 0x01D4D6, 0, { 0x000067 }},           /* 1D4D6; 0067; Additional folding */
+  { 0x01D4D7, 0, { 0x000068 }},           /* 1D4D7; 0068; Additional folding */
+  { 0x01D4D8, 0, { 0x000069 }},           /* 1D4D8; 0069; Additional folding */
+  { 0x01D4D9, 0, { 0x00006A }},           /* 1D4D9; 006A; Additional folding */
+  { 0x01D4DA, 0, { 0x00006B }},           /* 1D4DA; 006B; Additional folding */
+  { 0x01D4DB, 0, { 0x00006C }},           /* 1D4DB; 006C; Additional folding */
+  { 0x01D4DC, 0, { 0x00006D }},           /* 1D4DC; 006D; Additional folding */
+  { 0x01D4DD, 0, { 0x00006E }},           /* 1D4DD; 006E; Additional folding */
+  { 0x01D4DE, 0, { 0x00006F }},           /* 1D4DE; 006F; Additional folding */
+  { 0x01D4DF, 0, { 0x000070 }},           /* 1D4DF; 0070; Additional folding */
+  { 0x01D4E0, 0, { 0x000071 }},           /* 1D4E0; 0071; Additional folding */
+  { 0x01D4E1, 0, { 0x000072 }},           /* 1D4E1; 0072; Additional folding */
+  { 0x01D4E2, 0, { 0x000073 }},           /* 1D4E2; 0073; Additional folding */
+  { 0x01D4E3, 0, { 0x000074 }},           /* 1D4E3; 0074; Additional folding */
+  { 0x01D4E4, 0, { 0x000075 }},           /* 1D4E4; 0075; Additional folding */
+  { 0x01D4E5, 0, { 0x000076 }},           /* 1D4E5; 0076; Additional folding */
+  { 0x01D4E6, 0, { 0x000077 }},           /* 1D4E6; 0077; Additional folding */
+  { 0x01D4E7, 0, { 0x000078 }},           /* 1D4E7; 0078; Additional folding */
+  { 0x01D4E8, 0, { 0x000079 }},           /* 1D4E8; 0079; Additional folding */
+  { 0x01D4E9, 0, { 0x00007A }},           /* 1D4E9; 007A; Additional folding */
+  { 0x01D504, 0, { 0x000061 }},           /* 1D504; 0061; Additional folding */
+  { 0x01D505, 0, { 0x000062 }},           /* 1D505; 0062; Additional folding */
+  { 0x01D507, 0, { 0x000064 }},           /* 1D507; 0064; Additional folding */
+  { 0x01D508, 0, { 0x000065 }},           /* 1D508; 0065; Additional folding */
+  { 0x01D509, 0, { 0x000066 }},           /* 1D509; 0066; Additional folding */
+  { 0x01D50A, 0, { 0x000067 }},           /* 1D50A; 0067; Additional folding */
+  { 0x01D50D, 0, { 0x00006A }},           /* 1D50D; 006A; Additional folding */
+  { 0x01D50E, 0, { 0x00006B }},           /* 1D50E; 006B; Additional folding */
+  { 0x01D50F, 0, { 0x00006C }},           /* 1D50F; 006C; Additional folding */
+  { 0x01D510, 0, { 0x00006D }},           /* 1D510; 006D; Additional folding */
+  { 0x01D511, 0, { 0x00006E }},           /* 1D511; 006E; Additional folding */
+  { 0x01D512, 0, { 0x00006F }},           /* 1D512; 006F; Additional folding */
+  { 0x01D513, 0, { 0x000070 }},           /* 1D513; 0070; Additional folding */
+  { 0x01D514, 0, { 0x000071 }},           /* 1D514; 0071; Additional folding */
+  { 0x01D516, 0, { 0x000073 }},           /* 1D516; 0073; Additional folding */
+  { 0x01D517, 0, { 0x000074 }},           /* 1D517; 0074; Additional folding */
+  { 0x01D518, 0, { 0x000075 }},           /* 1D518; 0075; Additional folding */
+  { 0x01D519, 0, { 0x000076 }},           /* 1D519; 0076; Additional folding */
+  { 0x01D51A, 0, { 0x000077 }},           /* 1D51A; 0077; Additional folding */
+  { 0x01D51B, 0, { 0x000078 }},           /* 1D51B; 0078; Additional folding */
+  { 0x01D51C, 0, { 0x000079 }},           /* 1D51C; 0079; Additional folding */
+  { 0x01D538, 0, { 0x000061 }},           /* 1D538; 0061; Additional folding */
+  { 0x01D539, 0, { 0x000062 }},           /* 1D539; 0062; Additional folding */
+  { 0x01D53B, 0, { 0x000064 }},           /* 1D53B; 0064; Additional folding */
+  { 0x01D53C, 0, { 0x000065 }},           /* 1D53C; 0065; Additional folding */
+  { 0x01D53D, 0, { 0x000066 }},           /* 1D53D; 0066; Additional folding */
+  { 0x01D53E, 0, { 0x000067 }},           /* 1D53E; 0067; Additional folding */
+  { 0x01D540, 0, { 0x000069 }},           /* 1D540; 0069; Additional folding */
+  { 0x01D541, 0, { 0x00006A }},           /* 1D541; 006A; Additional folding */
+  { 0x01D542, 0, { 0x00006B }},           /* 1D542; 006B; Additional folding */
+  { 0x01D543, 0, { 0x00006C }},           /* 1D543; 006C; Additional folding */
+  { 0x01D544, 0, { 0x00006D }},           /* 1D544; 006D; Additional folding */
+  { 0x01D546, 0, { 0x00006F }},           /* 1D546; 006F; Additional folding */
+  { 0x01D54A, 0, { 0x000073 }},           /* 1D54A; 0073; Additional folding */
+  { 0x01D54B, 0, { 0x000074 }},           /* 1D54B; 0074; Additional folding */
+  { 0x01D54C, 0, { 0x000075 }},           /* 1D54C; 0075; Additional folding */
+  { 0x01D54D, 0, { 0x000076 }},           /* 1D54D; 0076; Additional folding */
+  { 0x01D54E, 0, { 0x000077 }},           /* 1D54E; 0077; Additional folding */
+  { 0x01D54F, 0, { 0x000078 }},           /* 1D54F; 0078; Additional folding */
+  { 0x01D550, 0, { 0x000079 }},           /* 1D550; 0079; Additional folding */
+  { 0x01D56C, 0, { 0x000061 }},           /* 1D56C; 0061; Additional folding */
+  { 0x01D56D, 0, { 0x000062 }},           /* 1D56D; 0062; Additional folding */
+  { 0x01D56E, 0, { 0x000063 }},           /* 1D56E; 0063; Additional folding */
+  { 0x01D56F, 0, { 0x000064 }},           /* 1D56F; 0064; Additional folding */
+  { 0x01D570, 0, { 0x000065 }},           /* 1D570; 0065; Additional folding */
+  { 0x01D571, 0, { 0x000066 }},           /* 1D571; 0066; Additional folding */
+  { 0x01D572, 0, { 0x000067 }},           /* 1D572; 0067; Additional folding */
+  { 0x01D573, 0, { 0x000068 }},           /* 1D573; 0068; Additional folding */
+  { 0x01D574, 0, { 0x000069 }},           /* 1D574; 0069; Additional folding */
+  { 0x01D575, 0, { 0x00006A }},           /* 1D575; 006A; Additional folding */
+  { 0x01D576, 0, { 0x00006B }},           /* 1D576; 006B; Additional folding */
+  { 0x01D577, 0, { 0x00006C }},           /* 1D577; 006C; Additional folding */
+  { 0x01D578, 0, { 0x00006D }},           /* 1D578; 006D; Additional folding */
+  { 0x01D579, 0, { 0x00006E }},           /* 1D579; 006E; Additional folding */
+  { 0x01D57A, 0, { 0x00006F }},           /* 1D57A; 006F; Additional folding */
+  { 0x01D57B, 0, { 0x000070 }},           /* 1D57B; 0070; Additional folding */
+  { 0x01D57C, 0, { 0x000071 }},           /* 1D57C; 0071; Additional folding */
+  { 0x01D57D, 0, { 0x000072 }},           /* 1D57D; 0072; Additional folding */
+  { 0x01D57E, 0, { 0x000073 }},           /* 1D57E; 0073; Additional folding */
+  { 0x01D57F, 0, { 0x000074 }},           /* 1D57F; 0074; Additional folding */
+  { 0x01D580, 0, { 0x000075 }},           /* 1D580; 0075; Additional folding */
+  { 0x01D581, 0, { 0x000076 }},           /* 1D581; 0076; Additional folding */
+  { 0x01D582, 0, { 0x000077 }},           /* 1D582; 0077; Additional folding */
+  { 0x01D583, 0, { 0x000078 }},           /* 1D583; 0078; Additional folding */
+  { 0x01D584, 0, { 0x000079 }},           /* 1D584; 0079; Additional folding */
+  { 0x01D585, 0, { 0x00007A }},           /* 1D585; 007A; Additional folding */
+  { 0x01D5A0, 0, { 0x000061 }},           /* 1D5A0; 0061; Additional folding */
+  { 0x01D5A1, 0, { 0x000062 }},           /* 1D5A1; 0062; Additional folding */
+  { 0x01D5A2, 0, { 0x000063 }},           /* 1D5A2; 0063; Additional folding */
+  { 0x01D5A3, 0, { 0x000064 }},           /* 1D5A3; 0064; Additional folding */
+  { 0x01D5A4, 0, { 0x000065 }},           /* 1D5A4; 0065; Additional folding */
+  { 0x01D5A5, 0, { 0x000066 }},           /* 1D5A5; 0066; Additional folding */
+  { 0x01D5A6, 0, { 0x000067 }},           /* 1D5A6; 0067; Additional folding */
+  { 0x01D5A7, 0, { 0x000068 }},           /* 1D5A7; 0068; Additional folding */
+  { 0x01D5A8, 0, { 0x000069 }},           /* 1D5A8; 0069; Additional folding */
+  { 0x01D5A9, 0, { 0x00006A }},           /* 1D5A9; 006A; Additional folding */
+  { 0x01D5AA, 0, { 0x00006B }},           /* 1D5AA; 006B; Additional folding */
+  { 0x01D5AB, 0, { 0x00006C }},           /* 1D5AB; 006C; Additional folding */
+  { 0x01D5AC, 0, { 0x00006D }},           /* 1D5AC; 006D; Additional folding */
+  { 0x01D5AD, 0, { 0x00006E }},           /* 1D5AD; 006E; Additional folding */
+  { 0x01D5AE, 0, { 0x00006F }},           /* 1D5AE; 006F; Additional folding */
+  { 0x01D5AF, 0, { 0x000070 }},           /* 1D5AF; 0070; Additional folding */
+  { 0x01D5B0, 0, { 0x000071 }},           /* 1D5B0; 0071; Additional folding */
+  { 0x01D5B1, 0, { 0x000072 }},           /* 1D5B1; 0072; Additional folding */
+  { 0x01D5B2, 0, { 0x000073 }},           /* 1D5B2; 0073; Additional folding */
+  { 0x01D5B3, 0, { 0x000074 }},           /* 1D5B3; 0074; Additional folding */
+  { 0x01D5B4, 0, { 0x000075 }},           /* 1D5B4; 0075; Additional folding */
+  { 0x01D5B5, 0, { 0x000076 }},           /* 1D5B5; 0076; Additional folding */
+  { 0x01D5B6, 0, { 0x000077 }},           /* 1D5B6; 0077; Additional folding */
+  { 0x01D5B7, 0, { 0x000078 }},           /* 1D5B7; 0078; Additional folding */
+  { 0x01D5B8, 0, { 0x000079 }},           /* 1D5B8; 0079; Additional folding */
+  { 0x01D5B9, 0, { 0x00007A }},           /* 1D5B9; 007A; Additional folding */
+  { 0x01D5D4, 0, { 0x000061 }},           /* 1D5D4; 0061; Additional folding */
+  { 0x01D5D5, 0, { 0x000062 }},           /* 1D5D5; 0062; Additional folding */
+  { 0x01D5D6, 0, { 0x000063 }},           /* 1D5D6; 0063; Additional folding */
+  { 0x01D5D7, 0, { 0x000064 }},           /* 1D5D7; 0064; Additional folding */
+  { 0x01D5D8, 0, { 0x000065 }},           /* 1D5D8; 0065; Additional folding */
+  { 0x01D5D9, 0, { 0x000066 }},           /* 1D5D9; 0066; Additional folding */
+  { 0x01D5DA, 0, { 0x000067 }},           /* 1D5DA; 0067; Additional folding */
+  { 0x01D5DB, 0, { 0x000068 }},           /* 1D5DB; 0068; Additional folding */
+  { 0x01D5DC, 0, { 0x000069 }},           /* 1D5DC; 0069; Additional folding */
+  { 0x01D5DD, 0, { 0x00006A }},           /* 1D5DD; 006A; Additional folding */
+  { 0x01D5DE, 0, { 0x00006B }},           /* 1D5DE; 006B; Additional folding */
+  { 0x01D5DF, 0, { 0x00006C }},           /* 1D5DF; 006C; Additional folding */
+  { 0x01D5E0, 0, { 0x00006D }},           /* 1D5E0; 006D; Additional folding */
+  { 0x01D5E1, 0, { 0x00006E }},           /* 1D5E1; 006E; Additional folding */
+  { 0x01D5E2, 0, { 0x00006F }},           /* 1D5E2; 006F; Additional folding */
+  { 0x01D5E3, 0, { 0x000070 }},           /* 1D5E3; 0070; Additional folding */
+  { 0x01D5E4, 0, { 0x000071 }},           /* 1D5E4; 0071; Additional folding */
+  { 0x01D5E5, 0, { 0x000072 }},           /* 1D5E5; 0072; Additional folding */
+  { 0x01D5E6, 0, { 0x000073 }},           /* 1D5E6; 0073; Additional folding */
+  { 0x01D5E7, 0, { 0x000074 }},           /* 1D5E7; 0074; Additional folding */
+  { 0x01D5E8, 0, { 0x000075 }},           /* 1D5E8; 0075; Additional folding */
+  { 0x01D5E9, 0, { 0x000076 }},           /* 1D5E9; 0076; Additional folding */
+  { 0x01D5EA, 0, { 0x000077 }},           /* 1D5EA; 0077; Additional folding */
+  { 0x01D5EB, 0, { 0x000078 }},           /* 1D5EB; 0078; Additional folding */
+  { 0x01D5EC, 0, { 0x000079 }},           /* 1D5EC; 0079; Additional folding */
+  { 0x01D5ED, 0, { 0x00007A }},           /* 1D5ED; 007A; Additional folding */
+  { 0x01D608, 0, { 0x000061 }},           /* 1D608; 0061; Additional folding */
+  { 0x01D609, 0, { 0x000062 }},           /* 1D609; 0062; Additional folding */
+  { 0x01D60A, 0, { 0x000063 }},           /* 1D60A; 0063; Additional folding */
+  { 0x01D60B, 0, { 0x000064 }},           /* 1D60B; 0064; Additional folding */
+  { 0x01D60C, 0, { 0x000065 }},           /* 1D60C; 0065; Additional folding */
+  { 0x01D60D, 0, { 0x000066 }},           /* 1D60D; 0066; Additional folding */
+  { 0x01D60E, 0, { 0x000067 }},           /* 1D60E; 0067; Additional folding */
+  { 0x01D60F, 0, { 0x000068 }},           /* 1D60F; 0068; Additional folding */
+  { 0x01D610, 0, { 0x000069 }},           /* 1D610; 0069; Additional folding */
+  { 0x01D611, 0, { 0x00006A }},           /* 1D611; 006A; Additional folding */
+  { 0x01D612, 0, { 0x00006B }},           /* 1D612; 006B; Additional folding */
+  { 0x01D613, 0, { 0x00006C }},           /* 1D613; 006C; Additional folding */
+  { 0x01D614, 0, { 0x00006D }},           /* 1D614; 006D; Additional folding */
+  { 0x01D615, 0, { 0x00006E }},           /* 1D615; 006E; Additional folding */
+  { 0x01D616, 0, { 0x00006F }},           /* 1D616; 006F; Additional folding */
+  { 0x01D617, 0, { 0x000070 }},           /* 1D617; 0070; Additional folding */
+  { 0x01D618, 0, { 0x000071 }},           /* 1D618; 0071; Additional folding */
+  { 0x01D619, 0, { 0x000072 }},           /* 1D619; 0072; Additional folding */
+  { 0x01D61A, 0, { 0x000073 }},           /* 1D61A; 0073; Additional folding */
+  { 0x01D61B, 0, { 0x000074 }},           /* 1D61B; 0074; Additional folding */
+  { 0x01D61C, 0, { 0x000075 }},           /* 1D61C; 0075; Additional folding */
+  { 0x01D61D, 0, { 0x000076 }},           /* 1D61D; 0076; Additional folding */
+  { 0x01D61E, 0, { 0x000077 }},           /* 1D61E; 0077; Additional folding */
+  { 0x01D61F, 0, { 0x000078 }},           /* 1D61F; 0078; Additional folding */
+  { 0x01D620, 0, { 0x000079 }},           /* 1D620; 0079; Additional folding */
+  { 0x01D621, 0, { 0x00007A }},           /* 1D621; 007A; Additional folding */
+  { 0x01D63C, 0, { 0x000061 }},           /* 1D63C; 0061; Additional folding */
+  { 0x01D63D, 0, { 0x000062 }},           /* 1D63D; 0062; Additional folding */
+  { 0x01D63E, 0, { 0x000063 }},           /* 1D63E; 0063; Additional folding */
+  { 0x01D63F, 0, { 0x000064 }},           /* 1D63F; 0064; Additional folding */
+  { 0x01D640, 0, { 0x000065 }},           /* 1D640; 0065; Additional folding */
+  { 0x01D641, 0, { 0x000066 }},           /* 1D641; 0066; Additional folding */
+  { 0x01D642, 0, { 0x000067 }},           /* 1D642; 0067; Additional folding */
+  { 0x01D643, 0, { 0x000068 }},           /* 1D643; 0068; Additional folding */
+  { 0x01D644, 0, { 0x000069 }},           /* 1D644; 0069; Additional folding */
+  { 0x01D645, 0, { 0x00006A }},           /* 1D645; 006A; Additional folding */
+  { 0x01D646, 0, { 0x00006B }},           /* 1D646; 006B; Additional folding */
+  { 0x01D647, 0, { 0x00006C }},           /* 1D647; 006C; Additional folding */
+  { 0x01D648, 0, { 0x00006D }},           /* 1D648; 006D; Additional folding */
+  { 0x01D649, 0, { 0x00006E }},           /* 1D649; 006E; Additional folding */
+  { 0x01D64A, 0, { 0x00006F }},           /* 1D64A; 006F; Additional folding */
+  { 0x01D64B, 0, { 0x000070 }},           /* 1D64B; 0070; Additional folding */
+  { 0x01D64C, 0, { 0x000071 }},           /* 1D64C; 0071; Additional folding */
+  { 0x01D64D, 0, { 0x000072 }},           /* 1D64D; 0072; Additional folding */
+  { 0x01D64E, 0, { 0x000073 }},           /* 1D64E; 0073; Additional folding */
+  { 0x01D64F, 0, { 0x000074 }},           /* 1D64F; 0074; Additional folding */
+  { 0x01D650, 0, { 0x000075 }},           /* 1D650; 0075; Additional folding */
+  { 0x01D651, 0, { 0x000076 }},           /* 1D651; 0076; Additional folding */
+  { 0x01D652, 0, { 0x000077 }},           /* 1D652; 0077; Additional folding */
+  { 0x01D653, 0, { 0x000078 }},           /* 1D653; 0078; Additional folding */
+  { 0x01D654, 0, { 0x000079 }},           /* 1D654; 0079; Additional folding */
+  { 0x01D655, 0, { 0x00007A }},           /* 1D655; 007A; Additional folding */
+  { 0x01D670, 0, { 0x000061 }},           /* 1D670; 0061; Additional folding */
+  { 0x01D671, 0, { 0x000062 }},           /* 1D671; 0062; Additional folding */
+  { 0x01D672, 0, { 0x000063 }},           /* 1D672; 0063; Additional folding */
+  { 0x01D673, 0, { 0x000064 }},           /* 1D673; 0064; Additional folding */
+  { 0x01D674, 0, { 0x000065 }},           /* 1D674; 0065; Additional folding */
+  { 0x01D675, 0, { 0x000066 }},           /* 1D675; 0066; Additional folding */
+  { 0x01D676, 0, { 0x000067 }},           /* 1D676; 0067; Additional folding */
+  { 0x01D677, 0, { 0x000068 }},           /* 1D677; 0068; Additional folding */
+  { 0x01D678, 0, { 0x000069 }},           /* 1D678; 0069; Additional folding */
+  { 0x01D679, 0, { 0x00006A }},           /* 1D679; 006A; Additional folding */
+  { 0x01D67A, 0, { 0x00006B }},           /* 1D67A; 006B; Additional folding */
+  { 0x01D67B, 0, { 0x00006C }},           /* 1D67B; 006C; Additional folding */
+  { 0x01D67C, 0, { 0x00006D }},           /* 1D67C; 006D; Additional folding */
+  { 0x01D67D, 0, { 0x00006E }},           /* 1D67D; 006E; Additional folding */
+  { 0x01D67E, 0, { 0x00006F }},           /* 1D67E; 006F; Additional folding */
+  { 0x01D67F, 0, { 0x000070 }},           /* 1D67F; 0070; Additional folding */
+  { 0x01D680, 0, { 0x000071 }},           /* 1D680; 0071; Additional folding */
+  { 0x01D681, 0, { 0x000072 }},           /* 1D681; 0072; Additional folding */
+  { 0x01D682, 0, { 0x000073 }},           /* 1D682; 0073; Additional folding */
+  { 0x01D683, 0, { 0x000074 }},           /* 1D683; 0074; Additional folding */
+  { 0x01D684, 0, { 0x000075 }},           /* 1D684; 0075; Additional folding */
+  { 0x01D685, 0, { 0x000076 }},           /* 1D685; 0076; Additional folding */
+  { 0x01D686, 0, { 0x000077 }},           /* 1D686; 0077; Additional folding */
+  { 0x01D687, 0, { 0x000078 }},           /* 1D687; 0078; Additional folding */
+  { 0x01D688, 0, { 0x000079 }},           /* 1D688; 0079; Additional folding */
+  { 0x01D689, 0, { 0x00007A }},           /* 1D689; 007A; Additional folding */
+  { 0x01D6A8, 0, { 0x0003B1 }},           /* 1D6A8; 03B1; Additional folding */
+  { 0x01D6A9, 0, { 0x0003B2 }},           /* 1D6A9; 03B2; Additional folding */
+  { 0x01D6AA, 0, { 0x0003B3 }},           /* 1D6AA; 03B3; Additional folding */
+  { 0x01D6AB, 0, { 0x0003B4 }},           /* 1D6AB; 03B4; Additional folding */
+  { 0x01D6AC, 0, { 0x0003B5 }},           /* 1D6AC; 03B5; Additional folding */
+  { 0x01D6AD, 0, { 0x0003B6 }},           /* 1D6AD; 03B6; Additional folding */
+  { 0x01D6AE, 0, { 0x0003B7 }},           /* 1D6AE; 03B7; Additional folding */
+  { 0x01D6AF, 0, { 0x0003B8 }},           /* 1D6AF; 03B8; Additional folding */
+  { 0x01D6B0, 0, { 0x0003B9 }},           /* 1D6B0; 03B9; Additional folding */
+  { 0x01D6B1, 0, { 0x0003BA }},           /* 1D6B1; 03BA; Additional folding */
+  { 0x01D6B2, 0, { 0x0003BB }},           /* 1D6B2; 03BB; Additional folding */
+  { 0x01D6B3, 0, { 0x0003BC }},           /* 1D6B3; 03BC; Additional folding */
+  { 0x01D6B4, 0, { 0x0003BD }},           /* 1D6B4; 03BD; Additional folding */
+  { 0x01D6B5, 0, { 0x0003BE }},           /* 1D6B5; 03BE; Additional folding */
+  { 0x01D6B6, 0, { 0x0003BF }},           /* 1D6B6; 03BF; Additional folding */
+  { 0x01D6B7, 0, { 0x0003C0 }},           /* 1D6B7; 03C0; Additional folding */
+  { 0x01D6B8, 0, { 0x0003C1 }},           /* 1D6B8; 03C1; Additional folding */
+  { 0x01D6B9, 0, { 0x0003B8 }},           /* 1D6B9; 03B8; Additional folding */
+  { 0x01D6BA, 0, { 0x0003C3 }},           /* 1D6BA; 03C3; Additional folding */
+  { 0x01D6BB, 0, { 0x0003C4 }},           /* 1D6BB; 03C4; Additional folding */
+  { 0x01D6BC, 0, { 0x0003C5 }},           /* 1D6BC; 03C5; Additional folding */
+  { 0x01D6BD, 0, { 0x0003C6 }},           /* 1D6BD; 03C6; Additional folding */
+  { 0x01D6BE, 0, { 0x0003C7 }},           /* 1D6BE; 03C7; Additional folding */
+  { 0x01D6BF, 0, { 0x0003C8 }},           /* 1D6BF; 03C8; Additional folding */
+  { 0x01D6C0, 0, { 0x0003C9 }},           /* 1D6C0; 03C9; Additional folding */
+  { 0x01D6D3, 0, { 0x0003C3 }},           /* 1D6D3; 03C3; Additional folding */
+  { 0x01D6E2, 0, { 0x0003B1 }},           /* 1D6E2; 03B1; Additional folding */
+  { 0x01D6E3, 0, { 0x0003B2 }},           /* 1D6E3; 03B2; Additional folding */
+  { 0x01D6E4, 0, { 0x0003B3 }},           /* 1D6E4; 03B3; Additional folding */
+  { 0x01D6E5, 0, { 0x0003B4 }},           /* 1D6E5; 03B4; Additional folding */
+  { 0x01D6E6, 0, { 0x0003B5 }},           /* 1D6E6; 03B5; Additional folding */
+  { 0x01D6E7, 0, { 0x0003B6 }},           /* 1D6E7; 03B6; Additional folding */
+  { 0x01D6E8, 0, { 0x0003B7 }},           /* 1D6E8; 03B7; Additional folding */
+  { 0x01D6E9, 0, { 0x0003B8 }},           /* 1D6E9; 03B8; Additional folding */
+  { 0x01D6EA, 0, { 0x0003B9 }},           /* 1D6EA; 03B9; Additional folding */
+  { 0x01D6EB, 0, { 0x0003BA }},           /* 1D6EB; 03BA; Additional folding */
+  { 0x01D6EC, 0, { 0x0003BB }},           /* 1D6EC; 03BB; Additional folding */
+  { 0x01D6ED, 0, { 0x0003BC }},           /* 1D6ED; 03BC; Additional folding */
+  { 0x01D6EE, 0, { 0x0003BD }},           /* 1D6EE; 03BD; Additional folding */
+  { 0x01D6EF, 0, { 0x0003BE }},           /* 1D6EF; 03BE; Additional folding */
+  { 0x01D6F0, 0, { 0x0003BF }},           /* 1D6F0; 03BF; Additional folding */
+  { 0x01D6F1, 0, { 0x0003C0 }},           /* 1D6F1; 03C0; Additional folding */
+  { 0x01D6F2, 0, { 0x0003C1 }},           /* 1D6F2; 03C1; Additional folding */
+  { 0x01D6F3, 0, { 0x0003B8 }},           /* 1D6F3; 03B8; Additional folding */
+  { 0x01D6F4, 0, { 0x0003C3 }},           /* 1D6F4; 03C3; Additional folding */
+  { 0x01D6F5, 0, { 0x0003C4 }},           /* 1D6F5; 03C4; Additional folding */
+  { 0x01D6F6, 0, { 0x0003C5 }},           /* 1D6F6; 03C5; Additional folding */
+  { 0x01D6F7, 0, { 0x0003C6 }},           /* 1D6F7; 03C6; Additional folding */
+  { 0x01D6F8, 0, { 0x0003C7 }},           /* 1D6F8; 03C7; Additional folding */
+  { 0x01D6F9, 0, { 0x0003C8 }},           /* 1D6F9; 03C8; Additional folding */
+  { 0x01D6FA, 0, { 0x0003C9 }},           /* 1D6FA; 03C9; Additional folding */
+  { 0x01D70D, 0, { 0x0003C3 }},           /* 1D70D; 03C3; Additional folding */
+  { 0x01D71C, 0, { 0x0003B1 }},           /* 1D71C; 03B1; Additional folding */
+  { 0x01D71D, 0, { 0x0003B2 }},           /* 1D71D; 03B2; Additional folding */
+  { 0x01D71E, 0, { 0x0003B3 }},           /* 1D71E; 03B3; Additional folding */
+  { 0x01D71F, 0, { 0x0003B4 }},           /* 1D71F; 03B4; Additional folding */
+  { 0x01D720, 0, { 0x0003B5 }},           /* 1D720; 03B5; Additional folding */
+  { 0x01D721, 0, { 0x0003B6 }},           /* 1D721; 03B6; Additional folding */
+  { 0x01D722, 0, { 0x0003B7 }},           /* 1D722; 03B7; Additional folding */
+  { 0x01D723, 0, { 0x0003B8 }},           /* 1D723; 03B8; Additional folding */
+  { 0x01D724, 0, { 0x0003B9 }},           /* 1D724; 03B9; Additional folding */
+  { 0x01D725, 0, { 0x0003BA }},           /* 1D725; 03BA; Additional folding */
+  { 0x01D726, 0, { 0x0003BB }},           /* 1D726; 03BB; Additional folding */
+  { 0x01D727, 0, { 0x0003BC }},           /* 1D727; 03BC; Additional folding */
+  { 0x01D728, 0, { 0x0003BD }},           /* 1D728; 03BD; Additional folding */
+  { 0x01D729, 0, { 0x0003BE }},           /* 1D729; 03BE; Additional folding */
+  { 0x01D72A, 0, { 0x0003BF }},           /* 1D72A; 03BF; Additional folding */
+  { 0x01D72B, 0, { 0x0003C0 }},           /* 1D72B; 03C0; Additional folding */
+  { 0x01D72C, 0, { 0x0003C1 }},           /* 1D72C; 03C1; Additional folding */
+  { 0x01D72D, 0, { 0x0003B8 }},           /* 1D72D; 03B8; Additional folding */
+  { 0x01D72E, 0, { 0x0003C3 }},           /* 1D72E; 03C3; Additional folding */
+  { 0x01D72F, 0, { 0x0003C4 }},           /* 1D72F; 03C4; Additional folding */
+  { 0x01D730, 0, { 0x0003C5 }},           /* 1D730; 03C5; Additional folding */
+  { 0x01D731, 0, { 0x0003C6 }},           /* 1D731; 03C6; Additional folding */
+  { 0x01D732, 0, { 0x0003C7 }},           /* 1D732; 03C7; Additional folding */
+  { 0x01D733, 0, { 0x0003C8 }},           /* 1D733; 03C8; Additional folding */
+  { 0x01D734, 0, { 0x0003C9 }},           /* 1D734; 03C9; Additional folding */
+  { 0x01D747, 0, { 0x0003C3 }},           /* 1D747; 03C3; Additional folding */
+  { 0x01D756, 0, { 0x0003B1 }},           /* 1D756; 03B1; Additional folding */
+  { 0x01D757, 0, { 0x0003B2 }},           /* 1D757; 03B2; Additional folding */
+  { 0x01D758, 0, { 0x0003B3 }},           /* 1D758; 03B3; Additional folding */
+  { 0x01D759, 0, { 0x0003B4 }},           /* 1D759; 03B4; Additional folding */
+  { 0x01D75A, 0, { 0x0003B5 }},           /* 1D75A; 03B5; Additional folding */
+  { 0x01D75B, 0, { 0x0003B6 }},           /* 1D75B; 03B6; Additional folding */
+  { 0x01D75C, 0, { 0x0003B7 }},           /* 1D75C; 03B7; Additional folding */
+  { 0x01D75D, 0, { 0x0003B8 }},           /* 1D75D; 03B8; Additional folding */
+  { 0x01D75E, 0, { 0x0003B9 }},           /* 1D75E; 03B9; Additional folding */
+  { 0x01D75F, 0, { 0x0003BA }},           /* 1D75F; 03BA; Additional folding */
+  { 0x01D760, 0, { 0x0003BB }},           /* 1D760; 03BB; Additional folding */
+  { 0x01D761, 0, { 0x0003BC }},           /* 1D761; 03BC; Additional folding */
+  { 0x01D762, 0, { 0x0003BD }},           /* 1D762; 03BD; Additional folding */
+  { 0x01D763, 0, { 0x0003BE }},           /* 1D763; 03BE; Additional folding */
+  { 0x01D764, 0, { 0x0003BF }},           /* 1D764; 03BF; Additional folding */
+  { 0x01D765, 0, { 0x0003C0 }},           /* 1D765; 03C0; Additional folding */
+  { 0x01D766, 0, { 0x0003C1 }},           /* 1D766; 03C1; Additional folding */
+  { 0x01D767, 0, { 0x0003B8 }},           /* 1D767; 03B8; Additional folding */
+  { 0x01D768, 0, { 0x0003C3 }},           /* 1D768; 03C3; Additional folding */
+  { 0x01D769, 0, { 0x0003C4 }},           /* 1D769; 03C4; Additional folding */
+  { 0x01D76A, 0, { 0x0003C5 }},           /* 1D76A; 03C5; Additional folding */
+  { 0x01D76B, 0, { 0x0003C6 }},           /* 1D76B; 03C6; Additional folding */
+  { 0x01D76C, 0, { 0x0003C7 }},           /* 1D76C; 03C7; Additional folding */
+  { 0x01D76D, 0, { 0x0003C8 }},           /* 1D76D; 03C8; Additional folding */
+  { 0x01D76E, 0, { 0x0003C9 }},           /* 1D76E; 03C9; Additional folding */
+  { 0x01D781, 0, { 0x0003C3 }},           /* 1D781; 03C3; Additional folding */
+  { 0x01D790, 0, { 0x0003B1 }},           /* 1D790; 03B1; Additional folding */
+  { 0x01D791, 0, { 0x0003B2 }},           /* 1D791; 03B2; Additional folding */
+  { 0x01D792, 0, { 0x0003B3 }},           /* 1D792; 03B3; Additional folding */
+  { 0x01D793, 0, { 0x0003B4 }},           /* 1D793; 03B4; Additional folding */
+  { 0x01D794, 0, { 0x0003B5 }},           /* 1D794; 03B5; Additional folding */
+  { 0x01D795, 0, { 0x0003B6 }},           /* 1D795; 03B6; Additional folding */
+  { 0x01D796, 0, { 0x0003B7 }},           /* 1D796; 03B7; Additional folding */
+  { 0x01D797, 0, { 0x0003B8 }},           /* 1D797; 03B8; Additional folding */
+  { 0x01D798, 0, { 0x0003B9 }},           /* 1D798; 03B9; Additional folding */
+  { 0x01D799, 0, { 0x0003BA }},           /* 1D799; 03BA; Additional folding */
+  { 0x01D79A, 0, { 0x0003BB }},           /* 1D79A; 03BB; Additional folding */
+  { 0x01D79B, 0, { 0x0003BC }},           /* 1D79B; 03BC; Additional folding */
+  { 0x01D79C, 0, { 0x0003BD }},           /* 1D79C; 03BD; Additional folding */
+  { 0x01D79D, 0, { 0x0003BE }},           /* 1D79D; 03BE; Additional folding */
+  { 0x01D79E, 0, { 0x0003BF }},           /* 1D79E; 03BF; Additional folding */
+  { 0x01D79F, 0, { 0x0003C0 }},           /* 1D79F; 03C0; Additional folding */
+  { 0x01D7A0, 0, { 0x0003C1 }},           /* 1D7A0; 03C1; Additional folding */
+  { 0x01D7A1, 0, { 0x0003B8 }},           /* 1D7A1; 03B8; Additional folding */
+  { 0x01D7A2, 0, { 0x0003C3 }},           /* 1D7A2; 03C3; Additional folding */
+  { 0x01D7A3, 0, { 0x0003C4 }},           /* 1D7A3; 03C4; Additional folding */
+  { 0x01D7A4, 0, { 0x0003C5 }},           /* 1D7A4; 03C5; Additional folding */
+  { 0x01D7A5, 0, { 0x0003C6 }},           /* 1D7A5; 03C6; Additional folding */
+  { 0x01D7A6, 0, { 0x0003C7 }},           /* 1D7A6; 03C7; Additional folding */
+  { 0x01D7A7, 0, { 0x0003C8 }},           /* 1D7A7; 03C8; Additional folding */
+  { 0x01D7A8, 0, { 0x0003C9 }},           /* 1D7A8; 03C9; Additional folding */
+  { 0x01D7BB, 0, { 0x0003C3 }},           /* 1D7BB; 03C3; Additional folding */
+  { 0 },
+};
+
+
+/*
+ * FF3A; FF5A; Case map
+ * 10400; 10428; Case map
+10401; 10429; Case map
+10402; 1042A; Case map
+10403; 1042B; Case map
+10404; 1042C; Case map
+10405; 1042D; Case map
+10406; 1042E; Case map
+10407; 1042F; Case map
+10408; 10430; Case map
+10409; 10431; Case map
+1040A; 10432; Case map
+1040B; 10433; Case map
+1040C; 10434; Case map
+1040D; 10435; Case map
+1040E; 10436; Case map
+1040F; 10437; Case map
+10410; 10438; Case map
+10411; 10439; Case map
+10412; 1043A; Case map
+10413; 1043B; Case map
+10414; 1043C; Case map
+10415; 1043D; Case map
+10416; 1043E; Case map
+10417; 1043F; Case map
+10418; 10440; Case map
+10419; 10441; Case map
+1041A; 10442; Case map
+1041B; 10443; Case map
+1041C; 10444; Case map
+1041D; 10445; Case map
+1041E; 10446; Case map
+1041F; 10447; Case map
+10420; 10448; Case map
+10421; 10449; Case map
+10422; 1044A; Case map
+10423; 1044B; Case map
+10424; 1044C; Case map
+10425; 1044D; Case map
+1D400; 0061; Additional folding
+1D401; 0062; Additional folding
+1D402; 0063; Additional folding
+1D403; 0064; Additional folding
+1D404; 0065; Additional folding
+1D405; 0066; Additional folding
+1D406; 0067; Additional folding
+1D407; 0068; Additional folding
+1D408; 0069; Additional folding
+1D409; 006A; Additional folding
+1D40A; 006B; Additional folding
+1D40B; 006C; Additional folding
+1D40C; 006D; Additional folding
+1D40D; 006E; Additional folding
+1D40E; 006F; Additional folding
+1D40F; 0070; Additional folding
+1D410; 0071; Additional folding
+1D411; 0072; Additional folding
+1D412; 0073; Additional folding
+1D413; 0074; Additional folding
+1D414; 0075; Additional folding
+1D415; 0076; Additional folding
+1D416; 0077; Additional folding
+1D417; 0078; Additional folding
+1D418; 0079; Additional folding
+1D419; 007A; Additional folding
+1D434; 0061; Additional folding
+1D435; 0062; Additional folding
+1D436; 0063; Additional folding
+1D437; 0064; Additional folding
+1D438; 0065; Additional folding
+1D439; 0066; Additional folding
+1D43A; 0067; Additional folding
+1D43B; 0068; Additional folding
+1D43C; 0069; Additional folding
+1D43D; 006A; Additional folding
+1D43E; 006B; Additional folding
+1D43F; 006C; Additional folding
+1D440; 006D; Additional folding
+1D441; 006E; Additional folding
+1D442; 006F; Additional folding
+1D443; 0070; Additional folding
+1D444; 0071; Additional folding
+1D445; 0072; Additional folding
+1D446; 0073; Additional folding
+1D447; 0074; Additional folding
+1D448; 0075; Additional folding
+1D449; 0076; Additional folding
+1D44A; 0077; Additional folding
+1D44B; 0078; Additional folding
+1D44C; 0079; Additional folding
+1D44D; 007A; Additional folding
+1D468; 0061; Additional folding
+1D469; 0062; Additional folding
+1D46A; 0063; Additional folding
+1D46B; 0064; Additional folding
+1D46C; 0065; Additional folding
+1D46D; 0066; Additional folding
+1D46E; 0067; Additional folding
+1D46F; 0068; Additional folding
+1D470; 0069; Additional folding
+1D471; 006A; Additional folding
+1D472; 006B; Additional folding
+1D473; 006C; Additional folding
+1D474; 006D; Additional folding
+1D475; 006E; Additional folding
+1D476; 006F; Additional folding
+1D477; 0070; Additional folding
+1D478; 0071; Additional folding
+1D479; 0072; Additional folding
+1D47A; 0073; Additional folding
+1D47B; 0074; Additional folding
+1D47C; 0075; Additional folding
+1D47D; 0076; Additional folding
+1D47E; 0077; Additional folding
+1D47F; 0078; Additional folding
+1D480; 0079; Additional folding
+1D481; 007A; Additional folding
+1D49C; 0061; Additional folding
+1D49E; 0063; Additional folding
+1D49F; 0064; Additional folding
+1D4A2; 0067; Additional folding
+1D4A5; 006A; Additional folding
+1D4A6; 006B; Additional folding
+1D4A9; 006E; Additional folding
+1D4AA; 006F; Additional folding
+1D4AB; 0070; Additional folding
+1D4AC; 0071; Additional folding
+1D4AE; 0073; Additional folding
+1D4AF; 0074; Additional folding
+1D4B0; 0075; Additional folding
+1D4B1; 0076; Additional folding
+1D4B2; 0077; Additional folding
+1D4B3; 0078; Additional folding
+1D4B4; 0079; Additional folding
+1D4B5; 007A; Additional folding
+1D4D0; 0061; Additional folding
+1D4D1; 0062; Additional folding
+1D4D2; 0063; Additional folding
+1D4D3; 0064; Additional folding
+1D4D4; 0065; Additional folding
+1D4D5; 0066; Additional folding
+1D4D6; 0067; Additional folding
+1D4D7; 0068; Additional folding
+1D4D8; 0069; Additional folding
+1D4D9; 006A; Additional folding
+1D4DA; 006B; Additional folding
+1D4DB; 006C; Additional folding
+1D4DC; 006D; Additional folding
+1D4DD; 006E; Additional folding
+1D4DE; 006F; Additional folding
+1D4DF; 0070; Additional folding
+1D4E0; 0071; Additional folding
+1D4E1; 0072; Additional folding
+1D4E2; 0073; Additional folding
+1D4E3; 0074; Additional folding
+1D4E4; 0075; Additional folding
+1D4E5; 0076; Additional folding
+1D4E6; 0077; Additional folding
+1D4E7; 0078; Additional folding
+1D4E8; 0079; Additional folding
+1D4E9; 007A; Additional folding
+1D504; 0061; Additional folding
+1D505; 0062; Additional folding
+1D507; 0064; Additional folding
+1D508; 0065; Additional folding
+1D509; 0066; Additional folding
+1D50A; 0067; Additional folding
+1D50D; 006A; Additional folding
+1D50E; 006B; Additional folding
+1D50F; 006C; Additional folding
+1D510; 006D; Additional folding
+1D511; 006E; Additional folding
+1D512; 006F; Additional folding
+1D513; 0070; Additional folding
+1D514; 0071; Additional folding
+1D516; 0073; Additional folding
+1D517; 0074; Additional folding
+1D518; 0075; Additional folding
+1D519; 0076; Additional folding
+1D51A; 0077; Additional folding
+1D51B; 0078; Additional folding
+1D51C; 0079; Additional folding
+1D538; 0061; Additional folding
+1D539; 0062; Additional folding
+1D53B; 0064; Additional folding
+1D53C; 0065; Additional folding
+1D53D; 0066; Additional folding
+1D53E; 0067; Additional folding
+1D540; 0069; Additional folding
+1D541; 006A; Additional folding
+1D542; 006B; Additional folding
+1D543; 006C; Additional folding
+1D544; 006D; Additional folding
+1D546; 006F; Additional folding
+1D54A; 0073; Additional folding
+1D54B; 0074; Additional folding
+1D54C; 0075; Additional folding
+1D54D; 0076; Additional folding
+1D54E; 0077; Additional folding
+1D54F; 0078; Additional folding
+1D550; 0079; Additional folding
+1D56C; 0061; Additional folding
+1D56D; 0062; Additional folding
+1D56E; 0063; Additional folding
+1D56F; 0064; Additional folding
+1D570; 0065; Additional folding
+1D571; 0066; Additional folding
+1D572; 0067; Additional folding
+1D573; 0068; Additional folding
+1D574; 0069; Additional folding
+1D575; 006A; Additional folding
+1D576; 006B; Additional folding
+1D577; 006C; Additional folding
+1D578; 006D; Additional folding
+1D579; 006E; Additional folding
+1D57A; 006F; Additional folding
+1D57B; 0070; Additional folding
+1D57C; 0071; Additional folding
+1D57D; 0072; Additional folding
+1D57E; 0073; Additional folding
+1D57F; 0074; Additional folding
+1D580; 0075; Additional folding
+1D581; 0076; Additional folding
+1D582; 0077; Additional folding
+1D583; 0078; Additional folding
+1D584; 0079; Additional folding
+1D585; 007A; Additional folding
+1D5A0; 0061; Additional folding
+1D5A1; 0062; Additional folding
+1D5A2; 0063; Additional folding
+1D5A3; 0064; Additional folding
+1D5A4; 0065; Additional folding
+1D5A5; 0066; Additional folding
+1D5A6; 0067; Additional folding
+1D5A7; 0068; Additional folding
+1D5A8; 0069; Additional folding
+1D5A9; 006A; Additional folding
+1D5AA; 006B; Additional folding
+1D5AB; 006C; Additional folding
+1D5AC; 006D; Additional folding
+1D5AD; 006E; Additional folding
+1D5AE; 006F; Additional folding
+1D5AF; 0070; Additional folding
+1D5B0; 0071; Additional folding
+1D5B1; 0072; Additional folding
+1D5B2; 0073; Additional folding
+1D5B3; 0074; Additional folding
+1D5B4; 0075; Additional folding
+1D5B5; 0076; Additional folding
+1D5B6; 0077; Additional folding
+1D5B7; 0078; Additional folding
+1D5B8; 0079; Additional folding
+1D5B9; 007A; Additional folding
+1D5D4; 0061; Additional folding
+1D5D5; 0062; Additional folding
+1D5D6; 0063; Additional folding
+1D5D7; 0064; Additional folding
+1D5D8; 0065; Additional folding
+1D5D9; 0066; Additional folding
+1D5DA; 0067; Additional folding
+1D5DB; 0068; Additional folding
+1D5DC; 0069; Additional folding
+1D5DD; 006A; Additional folding
+1D5DE; 006B; Additional folding
+1D5DF; 006C; Additional folding
+1D5E0; 006D; Additional folding
+1D5E1; 006E; Additional folding
+1D5E2; 006F; Additional folding
+1D5E3; 0070; Additional folding
+1D5E4; 0071; Additional folding
+1D5E5; 0072; Additional folding
+1D5E6; 0073; Additional folding
+1D5E7; 0074; Additional folding
+1D5E8; 0075; Additional folding
+1D5E9; 0076; Additional folding
+1D5EA; 0077; Additional folding
+1D5EB; 0078; Additional folding
+1D5EC; 0079; Additional folding
+1D5ED; 007A; Additional folding
+1D608; 0061; Additional folding
+1D609; 0062; Additional folding
+1D60A; 0063; Additional folding
+1D60B; 0064; Additional folding
+1D60C; 0065; Additional folding
+1D60D; 0066; Additional folding
+1D60E; 0067; Additional folding
+1D60F; 0068; Additional folding
+1D610; 0069; Additional folding
+1D611; 006A; Additional folding
+1D612; 006B; Additional folding
+1D613; 006C; Additional folding
+1D614; 006D; Additional folding
+1D615; 006E; Additional folding
+1D616; 006F; Additional folding
+1D617; 0070; Additional folding
+1D618; 0071; Additional folding
+1D619; 0072; Additional folding
+1D61A; 0073; Additional folding
+1D61B; 0074; Additional folding
+1D61C; 0075; Additional folding
+1D61D; 0076; Additional folding
+1D61E; 0077; Additional folding
+1D61F; 0078; Additional folding
+1D620; 0079; Additional folding
+1D621; 007A; Additional folding
+1D63C; 0061; Additional folding
+1D63D; 0062; Additional folding
+1D63E; 0063; Additional folding
+1D63F; 0064; Additional folding
+1D640; 0065; Additional folding
+1D641; 0066; Additional folding
+1D642; 0067; Additional folding
+1D643; 0068; Additional folding
+1D644; 0069; Additional folding
+1D645; 006A; Additional folding
+1D646; 006B; Additional folding
+1D647; 006C; Additional folding
+1D648; 006D; Additional folding
+1D649; 006E; Additional folding
+1D64A; 006F; Additional folding
+1D64B; 0070; Additional folding
+1D64C; 0071; Additional folding
+1D64D; 0072; Additional folding
+1D64E; 0073; Additional folding
+1D64F; 0074; Additional folding
+1D650; 0075; Additional folding
+1D651; 0076; Additional folding
+1D652; 0077; Additional folding
+1D653; 0078; Additional folding
+1D654; 0079; Additional folding
+1D655; 007A; Additional folding
+1D670; 0061; Additional folding
+1D671; 0062; Additional folding
+1D672; 0063; Additional folding
+1D673; 0064; Additional folding
+1D674; 0065; Additional folding
+1D675; 0066; Additional folding
+1D676; 0067; Additional folding
+1D677; 0068; Additional folding
+1D678; 0069; Additional folding
+1D679; 006A; Additional folding
+1D67A; 006B; Additional folding
+1D67B; 006C; Additional folding
+1D67C; 006D; Additional folding
+1D67D; 006E; Additional folding
+1D67E; 006F; Additional folding
+1D67F; 0070; Additional folding
+1D680; 0071; Additional folding
+1D681; 0072; Additional folding
+1D682; 0073; Additional folding
+1D683; 0074; Additional folding
+1D684; 0075; Additional folding
+1D685; 0076; Additional folding
+1D686; 0077; Additional folding
+1D687; 0078; Additional folding
+1D688; 0079; Additional folding
+1D689; 007A; Additional folding
+1D6A8; 03B1; Additional folding
+1D6A9; 03B2; Additional folding
+1D6AA; 03B3; Additional folding
+1D6AB; 03B4; Additional folding
+1D6AC; 03B5; Additional folding
+1D6AD; 03B6; Additional folding
+1D6AE; 03B7; Additional folding
+1D6AF; 03B8; Additional folding
+1D6B0; 03B9; Additional folding
+1D6B1; 03BA; Additional folding
+1D6B2; 03BB; Additional folding
+1D6B3; 03BC; Additional folding
+1D6B4; 03BD; Additional folding
+1D6B5; 03BE; Additional folding
+1D6B6; 03BF; Additional folding
+1D6B7; 03C0; Additional folding
+1D6B8; 03C1; Additional folding
+1D6B9; 03B8; Additional folding
+1D6BA; 03C3; Additional folding
+1D6BB; 03C4; Additional folding
+1D6BC; 03C5; Additional folding
+1D6BD; 03C6; Additional folding
+1D6BE; 03C7; Additional folding
+1D6BF; 03C8; Additional folding
+1D6C0; 03C9; Additional folding
+1D6D3; 03C3; Additional folding
+1D6E2; 03B1; Additional folding
+1D6E3; 03B2; Additional folding
+1D6E4; 03B3; Additional folding
+1D6E5; 03B4; Additional folding
+1D6E6; 03B5; Additional folding
+1D6E7; 03B6; Additional folding
+1D6E8; 03B7; Additional folding
+1D6E9; 03B8; Additional folding
+1D6EA; 03B9; Additional folding
+1D6EB; 03BA; Additional folding
+1D6EC; 03BB; Additional folding
+1D6ED; 03BC; Additional folding
+1D6EE; 03BD; Additional folding
+1D6EF; 03BE; Additional folding
+1D6F0; 03BF; Additional folding
+1D6F1; 03C0; Additional folding
+1D6F2; 03C1; Additional folding
+1D6F3; 03B8; Additional folding
+1D6F4; 03C3; Additional folding
+1D6F5; 03C4; Additional folding
+1D6F6; 03C5; Additional folding
+1D6F7; 03C6; Additional folding
+1D6F8; 03C7; Additional folding
+1D6F9; 03C8; Additional folding
+1D6FA; 03C9; Additional folding
+1D70D; 03C3; Additional folding
+1D71C; 03B1; Additional folding
+1D71D; 03B2; Additional folding
+1D71E; 03B3; Additional folding
+1D71F; 03B4; Additional folding
+1D720; 03B5; Additional folding
+1D721; 03B6; Additional folding
+1D722; 03B7; Additional folding
+1D723; 03B8; Additional folding
+1D724; 03B9; Additional folding
+1D725; 03BA; Additional folding
+1D726; 03BB; Additional folding
+1D727; 03BC; Additional folding
+1D728; 03BD; Additional folding
+1D729; 03BE; Additional folding
+1D72A; 03BF; Additional folding
+1D72B; 03C0; Additional folding
+1D72C; 03C1; Additional folding
+1D72D; 03B8; Additional folding
+1D72E; 03C3; Additional folding
+1D72F; 03C4; Additional folding
+1D730; 03C5; Additional folding
+1D731; 03C6; Additional folding
+1D732; 03C7; Additional folding
+1D733; 03C8; Additional folding
+1D734; 03C9; Additional folding
+1D747; 03C3; Additional folding
+1D756; 03B1; Additional folding
+1D757; 03B2; Additional folding
+1D758; 03B3; Additional folding
+1D759; 03B4; Additional folding
+1D75A; 03B5; Additional folding
+1D75B; 03B6; Additional folding
+1D75C; 03B7; Additional folding
+1D75D; 03B8; Additional folding
+1D75E; 03B9; Additional folding
+1D75F; 03BA; Additional folding
+1D760; 03BB; Additional folding
+1D761; 03BC; Additional folding
+1D762; 03BD; Additional folding
+1D763; 03BE; Additional folding
+1D764; 03BF; Additional folding
+1D765; 03C0; Additional folding
+1D766; 03C1; Additional folding
+1D767; 03B8; Additional folding
+1D768; 03C3; Additional folding
+1D769; 03C4; Additional folding
+1D76A; 03C5; Additional folding
+1D76B; 03C6; Additional folding
+1D76C; 03C7; Additional folding
+1D76D; 03C8; Additional folding
+1D76E; 03C9; Additional folding
+1D781; 03C3; Additional folding
+1D790; 03B1; Additional folding
+1D791; 03B2; Additional folding
+1D792; 03B3; Additional folding
+1D793; 03B4; Additional folding
+1D794; 03B5; Additional folding
+1D795; 03B6; Additional folding
+1D796; 03B7; Additional folding
+1D797; 03B8; Additional folding
+1D798; 03B9; Additional folding
+1D799; 03BA; Additional folding
+1D79A; 03BB; Additional folding
+1D79B; 03BC; Additional folding
+1D79C; 03BD; Additional folding
+1D79D; 03BE; Additional folding
+1D79E; 03BF; Additional folding
+1D79F; 03C0; Additional folding
+1D7A0; 03C1; Additional folding
+1D7A1; 03B8; Additional folding
+1D7A2; 03C3; Additional folding
+1D7A3; 03C4; Additional folding
+1D7A4; 03C5; Additional folding
+1D7A5; 03C6; Additional folding
+1D7A6; 03C7; Additional folding
+1D7A7; 03C8; Additional folding
+1D7A8; 03C9; Additional folding
+1D7BB; 03C3; Additional folding
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_B_3[] = {
+  { 0x000041, 0, { 0x000061 }},                      /* 0041; 0061; Case map */
+  { 0x000042, 0, { 0x000062 }},                      /* 0042; 0062; Case map */
+  { 0x000043, 0, { 0x000063 }},                      /* 0043; 0063; Case map */
+  { 0x000044, 0, { 0x000064 }},                      /* 0044; 0064; Case map */
+  { 0x000045, 0, { 0x000065 }},                      /* 0045; 0065; Case map */
+  { 0x000046, 0, { 0x000066 }},                      /* 0046; 0066; Case map */
+  { 0x000047, 0, { 0x000067 }},                      /* 0047; 0067; Case map */
+  { 0x000048, 0, { 0x000068 }},                      /* 0048; 0068; Case map */
+  { 0x000049, 0, { 0x000069 }},                      /* 0049; 0069; Case map */
+  { 0x00004A, 0, { 0x00006A }},                      /* 004A; 006A; Case map */
+  { 0x00004B, 0, { 0x00006B }},                      /* 004B; 006B; Case map */
+  { 0x00004C, 0, { 0x00006C }},                      /* 004C; 006C; Case map */
+  { 0x00004D, 0, { 0x00006D }},                      /* 004D; 006D; Case map */
+  { 0x00004E, 0, { 0x00006E }},                      /* 004E; 006E; Case map */
+  { 0x00004F, 0, { 0x00006F }},                      /* 004F; 006F; Case map */
+  { 0x000050, 0, { 0x000070 }},                      /* 0050; 0070; Case map */
+  { 0x000051, 0, { 0x000071 }},                      /* 0051; 0071; Case map */
+  { 0x000052, 0, { 0x000072 }},                      /* 0052; 0072; Case map */
+  { 0x000053, 0, { 0x000073 }},                      /* 0053; 0073; Case map */
+  { 0x000054, 0, { 0x000074 }},                      /* 0054; 0074; Case map */
+  { 0x000055, 0, { 0x000075 }},                      /* 0055; 0075; Case map */
+  { 0x000056, 0, { 0x000076 }},                      /* 0056; 0076; Case map */
+  { 0x000057, 0, { 0x000077 }},                      /* 0057; 0077; Case map */
+  { 0x000058, 0, { 0x000078 }},                      /* 0058; 0078; Case map */
+  { 0x000059, 0, { 0x000079 }},                      /* 0059; 0079; Case map */
+  { 0x00005A, 0, { 0x00007A }},                      /* 005A; 007A; Case map */
+  { 0x0000B5, 0, { 0x0003BC }},                      /* 00B5; 03BC; Case map */
+  { 0x0000C0, 0, { 0x0000E0 }},                      /* 00C0; 00E0; Case map */
+  { 0x0000C1, 0, { 0x0000E1 }},                      /* 00C1; 00E1; Case map */
+  { 0x0000C2, 0, { 0x0000E2 }},                      /* 00C2; 00E2; Case map */
+  { 0x0000C3, 0, { 0x0000E3 }},                      /* 00C3; 00E3; Case map */
+  { 0x0000C4, 0, { 0x0000E4 }},                      /* 00C4; 00E4; Case map */
+  { 0x0000C5, 0, { 0x0000E5 }},                      /* 00C5; 00E5; Case map */
+  { 0x0000C6, 0, { 0x0000E6 }},                      /* 00C6; 00E6; Case map */
+  { 0x0000C7, 0, { 0x0000E7 }},                      /* 00C7; 00E7; Case map */
+  { 0x0000C8, 0, { 0x0000E8 }},                      /* 00C8; 00E8; Case map */
+  { 0x0000C9, 0, { 0x0000E9 }},                      /* 00C9; 00E9; Case map */
+  { 0x0000CA, 0, { 0x0000EA }},                      /* 00CA; 00EA; Case map */
+  { 0x0000CB, 0, { 0x0000EB }},                      /* 00CB; 00EB; Case map */
+  { 0x0000CC, 0, { 0x0000EC }},                      /* 00CC; 00EC; Case map */
+  { 0x0000CD, 0, { 0x0000ED }},                      /* 00CD; 00ED; Case map */
+  { 0x0000CE, 0, { 0x0000EE }},                      /* 00CE; 00EE; Case map */
+  { 0x0000CF, 0, { 0x0000EF }},                      /* 00CF; 00EF; Case map */
+  { 0x0000D0, 0, { 0x0000F0 }},                      /* 00D0; 00F0; Case map */
+  { 0x0000D1, 0, { 0x0000F1 }},                      /* 00D1; 00F1; Case map */
+  { 0x0000D2, 0, { 0x0000F2 }},                      /* 00D2; 00F2; Case map */
+  { 0x0000D3, 0, { 0x0000F3 }},                      /* 00D3; 00F3; Case map */
+  { 0x0000D4, 0, { 0x0000F4 }},                      /* 00D4; 00F4; Case map */
+  { 0x0000D5, 0, { 0x0000F5 }},                      /* 00D5; 00F5; Case map */
+  { 0x0000D6, 0, { 0x0000F6 }},                      /* 00D6; 00F6; Case map */
+  { 0x0000D8, 0, { 0x0000F8 }},                      /* 00D8; 00F8; Case map */
+  { 0x0000D9, 0, { 0x0000F9 }},                      /* 00D9; 00F9; Case map */
+  { 0x0000DA, 0, { 0x0000FA }},                      /* 00DA; 00FA; Case map */
+  { 0x0000DB, 0, { 0x0000FB }},                      /* 00DB; 00FB; Case map */
+  { 0x0000DC, 0, { 0x0000FC }},                      /* 00DC; 00FC; Case map */
+  { 0x0000DD, 0, { 0x0000FD }},                      /* 00DD; 00FD; Case map */
+  { 0x0000DE, 0, { 0x0000FE }},                      /* 00DE; 00FE; Case map */
+  { 0x0000DF, 0, { 0x000073,                    /* 00DF; 0073 0073; Case map */
+                   0x000073 }},
+  { 0x000100, 0, { 0x000101 }},                      /* 0100; 0101; Case map */
+  { 0x000102, 0, { 0x000103 }},                      /* 0102; 0103; Case map */
+  { 0x000104, 0, { 0x000105 }},                      /* 0104; 0105; Case map */
+  { 0x000106, 0, { 0x000107 }},                      /* 0106; 0107; Case map */
+  { 0x000108, 0, { 0x000109 }},                      /* 0108; 0109; Case map */
+  { 0x00010A, 0, { 0x00010B }},                      /* 010A; 010B; Case map */
+  { 0x00010C, 0, { 0x00010D }},                      /* 010C; 010D; Case map */
+  { 0x00010E, 0, { 0x00010F }},                      /* 010E; 010F; Case map */
+  { 0x000110, 0, { 0x000111 }},                      /* 0110; 0111; Case map */
+  { 0x000112, 0, { 0x000113 }},                      /* 0112; 0113; Case map */
+  { 0x000114, 0, { 0x000115 }},                      /* 0114; 0115; Case map */
+  { 0x000116, 0, { 0x000117 }},                      /* 0116; 0117; Case map */
+  { 0x000118, 0, { 0x000119 }},                      /* 0118; 0119; Case map */
+  { 0x00011A, 0, { 0x00011B }},                      /* 011A; 011B; Case map */
+  { 0x00011C, 0, { 0x00011D }},                      /* 011C; 011D; Case map */
+  { 0x00011E, 0, { 0x00011F }},                      /* 011E; 011F; Case map */
+  { 0x000120, 0, { 0x000121 }},                      /* 0120; 0121; Case map */
+  { 0x000122, 0, { 0x000123 }},                      /* 0122; 0123; Case map */
+  { 0x000124, 0, { 0x000125 }},                      /* 0124; 0125; Case map */
+  { 0x000126, 0, { 0x000127 }},                      /* 0126; 0127; Case map */
+  { 0x000128, 0, { 0x000129 }},                      /* 0128; 0129; Case map */
+  { 0x00012A, 0, { 0x00012B }},                      /* 012A; 012B; Case map */
+  { 0x00012C, 0, { 0x00012D }},                      /* 012C; 012D; Case map */
+  { 0x00012E, 0, { 0x00012F }},                      /* 012E; 012F; Case map */
+  { 0x000130, 0, { 0x000069,                    /* 0130; 0069 0307; Case map */
+                   0x000307 }},
+  { 0x000132, 0, { 0x000133 }},                      /* 0132; 0133; Case map */
+  { 0x000134, 0, { 0x000135 }},                      /* 0134; 0135; Case map */
+  { 0x000136, 0, { 0x000137 }},                      /* 0136; 0137; Case map */
+  { 0x000139, 0, { 0x00013A }},                      /* 0139; 013A; Case map */
+  { 0x00013B, 0, { 0x00013C }},                      /* 013B; 013C; Case map */
+  { 0x00013D, 0, { 0x00013E }},                      /* 013D; 013E; Case map */
+  { 0x00013F, 0, { 0x000140 }},                      /* 013F; 0140; Case map */
+  { 0x000141, 0, { 0x000142 }},                      /* 0141; 0142; Case map */
+  { 0x000143, 0, { 0x000144 }},                      /* 0143; 0144; Case map */
+  { 0x000145, 0, { 0x000146 }},                      /* 0145; 0146; Case map */
+  { 0x000147, 0, { 0x000148 }},                      /* 0147; 0148; Case map */
+  { 0x000149, 0, { 0x0002BC,                    /* 0149; 02BC 006E; Case map */
+                   0x00006E }},
+  { 0x00014A, 0, { 0x00014B }},                      /* 014A; 014B; Case map */
+  { 0x00014C, 0, { 0x00014D }},                      /* 014C; 014D; Case map */
+  { 0x00014E, 0, { 0x00014F }},                      /* 014E; 014F; Case map */
+  { 0x000150, 0, { 0x000151 }},                      /* 0150; 0151; Case map */
+  { 0x000152, 0, { 0x000153 }},                      /* 0152; 0153; Case map */
+  { 0x000154, 0, { 0x000155 }},                      /* 0154; 0155; Case map */
+  { 0x000156, 0, { 0x000157 }},                      /* 0156; 0157; Case map */
+  { 0x000158, 0, { 0x000159 }},                      /* 0158; 0159; Case map */
+  { 0x00015A, 0, { 0x00015B }},                      /* 015A; 015B; Case map */
+  { 0x00015C, 0, { 0x00015D }},                      /* 015C; 015D; Case map */
+  { 0x00015E, 0, { 0x00015F }},                      /* 015E; 015F; Case map */
+  { 0x000160, 0, { 0x000161 }},                      /* 0160; 0161; Case map */
+  { 0x000162, 0, { 0x000163 }},                      /* 0162; 0163; Case map */
+  { 0x000164, 0, { 0x000165 }},                      /* 0164; 0165; Case map */
+  { 0x000166, 0, { 0x000167 }},                      /* 0166; 0167; Case map */
+  { 0x000168, 0, { 0x000169 }},                      /* 0168; 0169; Case map */
+  { 0x00016A, 0, { 0x00016B }},                      /* 016A; 016B; Case map */
+  { 0x00016C, 0, { 0x00016D }},                      /* 016C; 016D; Case map */
+  { 0x00016E, 0, { 0x00016F }},                      /* 016E; 016F; Case map */
+  { 0x000170, 0, { 0x000171 }},                      /* 0170; 0171; Case map */
+  { 0x000172, 0, { 0x000173 }},                      /* 0172; 0173; Case map */
+  { 0x000174, 0, { 0x000175 }},                      /* 0174; 0175; Case map */
+  { 0x000176, 0, { 0x000177 }},                      /* 0176; 0177; Case map */
+  { 0x000178, 0, { 0x0000FF }},                      /* 0178; 00FF; Case map */
+  { 0x000179, 0, { 0x00017A }},                      /* 0179; 017A; Case map */
+  { 0x00017B, 0, { 0x00017C }},                      /* 017B; 017C; Case map */
+  { 0x00017D, 0, { 0x00017E }},                      /* 017D; 017E; Case map */
+  { 0x00017F, 0, { 0x000073 }},                      /* 017F; 0073; Case map */
+  { 0x000181, 0, { 0x000253 }},                      /* 0181; 0253; Case map */
+  { 0x000182, 0, { 0x000183 }},                      /* 0182; 0183; Case map */
+  { 0x000184, 0, { 0x000185 }},                      /* 0184; 0185; Case map */
+  { 0x000186, 0, { 0x000254 }},                      /* 0186; 0254; Case map */
+  { 0x000187, 0, { 0x000188 }},                      /* 0187; 0188; Case map */
+  { 0x000189, 0, { 0x000256 }},                      /* 0189; 0256; Case map */
+  { 0x00018A, 0, { 0x000257 }},                      /* 018A; 0257; Case map */
+  { 0x00018B, 0, { 0x00018C }},                      /* 018B; 018C; Case map */
+  { 0x00018E, 0, { 0x0001DD }},                      /* 018E; 01DD; Case map */
+  { 0x00018F, 0, { 0x000259 }},                      /* 018F; 0259; Case map */
+  { 0x000190, 0, { 0x00025B }},                      /* 0190; 025B; Case map */
+  { 0x000191, 0, { 0x000192 }},                      /* 0191; 0192; Case map */
+  { 0x000193, 0, { 0x000260 }},                      /* 0193; 0260; Case map */
+  { 0x000194, 0, { 0x000263 }},                      /* 0194; 0263; Case map */
+  { 0x000196, 0, { 0x000269 }},                      /* 0196; 0269; Case map */
+  { 0x000197, 0, { 0x000268 }},                      /* 0197; 0268; Case map */
+  { 0x000198, 0, { 0x000199 }},                      /* 0198; 0199; Case map */
+  { 0x00019C, 0, { 0x00026F }},                      /* 019C; 026F; Case map */
+  { 0x00019D, 0, { 0x000272 }},                      /* 019D; 0272; Case map */
+  { 0x00019F, 0, { 0x000275 }},                      /* 019F; 0275; Case map */
+  { 0x0001A0, 0, { 0x0001A1 }},                      /* 01A0; 01A1; Case map */
+  { 0x0001A2, 0, { 0x0001A3 }},                      /* 01A2; 01A3; Case map */
+  { 0x0001A4, 0, { 0x0001A5 }},                      /* 01A4; 01A5; Case map */
+  { 0x0001A6, 0, { 0x000280 }},                      /* 01A6; 0280; Case map */
+  { 0x0001A7, 0, { 0x0001A8 }},                      /* 01A7; 01A8; Case map */
+  { 0x0001A9, 0, { 0x000283 }},                      /* 01A9; 0283; Case map */
+  { 0x0001AC, 0, { 0x0001AD }},                      /* 01AC; 01AD; Case map */
+  { 0x0001AE, 0, { 0x000288 }},                      /* 01AE; 0288; Case map */
+  { 0x0001AF, 0, { 0x0001B0 }},                      /* 01AF; 01B0; Case map */
+  { 0x0001B1, 0, { 0x00028A }},                      /* 01B1; 028A; Case map */
+  { 0x0001B2, 0, { 0x00028B }},                      /* 01B2; 028B; Case map */
+  { 0x0001B3, 0, { 0x0001B4 }},                      /* 01B3; 01B4; Case map */
+  { 0x0001B5, 0, { 0x0001B6 }},                      /* 01B5; 01B6; Case map */
+  { 0x0001B7, 0, { 0x000292 }},                      /* 01B7; 0292; Case map */
+  { 0x0001B8, 0, { 0x0001B9 }},                      /* 01B8; 01B9; Case map */
+  { 0x0001BC, 0, { 0x0001BD }},                      /* 01BC; 01BD; Case map */
+  { 0x0001C4, 0, { 0x0001C6 }},                      /* 01C4; 01C6; Case map */
+  { 0x0001C5, 0, { 0x0001C6 }},                      /* 01C5; 01C6; Case map */
+  { 0x0001C7, 0, { 0x0001C9 }},                      /* 01C7; 01C9; Case map */
+  { 0x0001C8, 0, { 0x0001C9 }},                      /* 01C8; 01C9; Case map */
+  { 0x0001CA, 0, { 0x0001CC }},                      /* 01CA; 01CC; Case map */
+  { 0x0001CB, 0, { 0x0001CC }},                      /* 01CB; 01CC; Case map */
+  { 0x0001CD, 0, { 0x0001CE }},                      /* 01CD; 01CE; Case map */
+  { 0x0001CF, 0, { 0x0001D0 }},                      /* 01CF; 01D0; Case map */
+  { 0x0001D1, 0, { 0x0001D2 }},                      /* 01D1; 01D2; Case map */
+  { 0x0001D3, 0, { 0x0001D4 }},                      /* 01D3; 01D4; Case map */
+  { 0x0001D5, 0, { 0x0001D6 }},                      /* 01D5; 01D6; Case map */
+  { 0x0001D7, 0, { 0x0001D8 }},                      /* 01D7; 01D8; Case map */
+  { 0x0001D9, 0, { 0x0001DA }},                      /* 01D9; 01DA; Case map */
+  { 0x0001DB, 0, { 0x0001DC }},                      /* 01DB; 01DC; Case map */
+  { 0x0001DE, 0, { 0x0001DF }},                      /* 01DE; 01DF; Case map */
+  { 0x0001E0, 0, { 0x0001E1 }},                      /* 01E0; 01E1; Case map */
+  { 0x0001E2, 0, { 0x0001E3 }},                      /* 01E2; 01E3; Case map */
+  { 0x0001E4, 0, { 0x0001E5 }},                      /* 01E4; 01E5; Case map */
+  { 0x0001E6, 0, { 0x0001E7 }},                      /* 01E6; 01E7; Case map */
+  { 0x0001E8, 0, { 0x0001E9 }},                      /* 01E8; 01E9; Case map */
+  { 0x0001EA, 0, { 0x0001EB }},                      /* 01EA; 01EB; Case map */
+  { 0x0001EC, 0, { 0x0001ED }},                      /* 01EC; 01ED; Case map */
+  { 0x0001EE, 0, { 0x0001EF }},                      /* 01EE; 01EF; Case map */
+  { 0x0001F0, 0, { 0x00006A,                    /* 01F0; 006A 030C; Case map */
+                   0x00030C }},
+  { 0x0001F1, 0, { 0x0001F3 }},                      /* 01F1; 01F3; Case map */
+  { 0x0001F2, 0, { 0x0001F3 }},                      /* 01F2; 01F3; Case map */
+  { 0x0001F4, 0, { 0x0001F5 }},                      /* 01F4; 01F5; Case map */
+  { 0x0001F6, 0, { 0x000195 }},                      /* 01F6; 0195; Case map */
+  { 0x0001F7, 0, { 0x0001BF }},                      /* 01F7; 01BF; Case map */
+  { 0x0001F8, 0, { 0x0001F9 }},                      /* 01F8; 01F9; Case map */
+  { 0x0001FA, 0, { 0x0001FB }},                      /* 01FA; 01FB; Case map */
+  { 0x0001FC, 0, { 0x0001FD }},                      /* 01FC; 01FD; Case map */
+  { 0x0001FE, 0, { 0x0001FF }},                      /* 01FE; 01FF; Case map */
+  { 0x000200, 0, { 0x000201 }},                      /* 0200; 0201; Case map */
+  { 0x000202, 0, { 0x000203 }},                      /* 0202; 0203; Case map */
+  { 0x000204, 0, { 0x000205 }},                      /* 0204; 0205; Case map */
+  { 0x000206, 0, { 0x000207 }},                      /* 0206; 0207; Case map */
+  { 0x000208, 0, { 0x000209 }},                      /* 0208; 0209; Case map */
+  { 0x00020A, 0, { 0x00020B }},                      /* 020A; 020B; Case map */
+  { 0x00020C, 0, { 0x00020D }},                      /* 020C; 020D; Case map */
+  { 0x00020E, 0, { 0x00020F }},                      /* 020E; 020F; Case map */
+  { 0x000210, 0, { 0x000211 }},                      /* 0210; 0211; Case map */
+  { 0x000212, 0, { 0x000213 }},                      /* 0212; 0213; Case map */
+  { 0x000214, 0, { 0x000215 }},                      /* 0214; 0215; Case map */
+  { 0x000216, 0, { 0x000217 }},                      /* 0216; 0217; Case map */
+  { 0x000218, 0, { 0x000219 }},                      /* 0218; 0219; Case map */
+  { 0x00021A, 0, { 0x00021B }},                      /* 021A; 021B; Case map */
+  { 0x00021C, 0, { 0x00021D }},                      /* 021C; 021D; Case map */
+  { 0x00021E, 0, { 0x00021F }},                      /* 021E; 021F; Case map */
+  { 0x000220, 0, { 0x00019E }},                      /* 0220; 019E; Case map */
+  { 0x000222, 0, { 0x000223 }},                      /* 0222; 0223; Case map */
+  { 0x000224, 0, { 0x000225 }},                      /* 0224; 0225; Case map */
+  { 0x000226, 0, { 0x000227 }},                      /* 0226; 0227; Case map */
+  { 0x000228, 0, { 0x000229 }},                      /* 0228; 0229; Case map */
+  { 0x00022A, 0, { 0x00022B }},                      /* 022A; 022B; Case map */
+  { 0x00022C, 0, { 0x00022D }},                      /* 022C; 022D; Case map */
+  { 0x00022E, 0, { 0x00022F }},                      /* 022E; 022F; Case map */
+  { 0x000230, 0, { 0x000231 }},                      /* 0230; 0231; Case map */
+  { 0x000232, 0, { 0x000233 }},                      /* 0232; 0233; Case map */
+  { 0x000345, 0, { 0x0003B9 }},                      /* 0345; 03B9; Case map */
+  { 0x000386, 0, { 0x0003AC }},                      /* 0386; 03AC; Case map */
+  { 0x000388, 0, { 0x0003AD }},                      /* 0388; 03AD; Case map */
+  { 0x000389, 0, { 0x0003AE }},                      /* 0389; 03AE; Case map */
+  { 0x00038A, 0, { 0x0003AF }},                      /* 038A; 03AF; Case map */
+  { 0x00038C, 0, { 0x0003CC }},                      /* 038C; 03CC; Case map */
+  { 0x00038E, 0, { 0x0003CD }},                      /* 038E; 03CD; Case map */
+  { 0x00038F, 0, { 0x0003CE }},                      /* 038F; 03CE; Case map */
+  { 0x000390, 0, { 0x0003B9,               /* 0390; 03B9 0308 0301; Case map */
+                   0x000308, 0x000301 }},
+  { 0x000391, 0, { 0x0003B1 }},                      /* 0391; 03B1; Case map */
+  { 0x000392, 0, { 0x0003B2 }},                      /* 0392; 03B2; Case map */
+  { 0x000393, 0, { 0x0003B3 }},                      /* 0393; 03B3; Case map */
+  { 0x000394, 0, { 0x0003B4 }},                      /* 0394; 03B4; Case map */
+  { 0x000395, 0, { 0x0003B5 }},                      /* 0395; 03B5; Case map */
+  { 0x000396, 0, { 0x0003B6 }},                      /* 0396; 03B6; Case map */
+  { 0x000397, 0, { 0x0003B7 }},                      /* 0397; 03B7; Case map */
+  { 0x000398, 0, { 0x0003B8 }},                      /* 0398; 03B8; Case map */
+  { 0x000399, 0, { 0x0003B9 }},                      /* 0399; 03B9; Case map */
+  { 0x00039A, 0, { 0x0003BA }},                      /* 039A; 03BA; Case map */
+  { 0x00039B, 0, { 0x0003BB }},                      /* 039B; 03BB; Case map */
+  { 0x00039C, 0, { 0x0003BC }},                      /* 039C; 03BC; Case map */
+  { 0x00039D, 0, { 0x0003BD }},                      /* 039D; 03BD; Case map */
+  { 0x00039E, 0, { 0x0003BE }},                      /* 039E; 03BE; Case map */
+  { 0x00039F, 0, { 0x0003BF }},                      /* 039F; 03BF; Case map */
+  { 0x0003A0, 0, { 0x0003C0 }},                      /* 03A0; 03C0; Case map */
+  { 0x0003A1, 0, { 0x0003C1 }},                      /* 03A1; 03C1; Case map */
+  { 0x0003A3, 0, { 0x0003C3 }},                      /* 03A3; 03C3; Case map */
+  { 0x0003A4, 0, { 0x0003C4 }},                      /* 03A4; 03C4; Case map */
+  { 0x0003A5, 0, { 0x0003C5 }},                      /* 03A5; 03C5; Case map */
+  { 0x0003A6, 0, { 0x0003C6 }},                      /* 03A6; 03C6; Case map */
+  { 0x0003A7, 0, { 0x0003C7 }},                      /* 03A7; 03C7; Case map */
+  { 0x0003A8, 0, { 0x0003C8 }},                      /* 03A8; 03C8; Case map */
+  { 0x0003A9, 0, { 0x0003C9 }},                      /* 03A9; 03C9; Case map */
+  { 0x0003AA, 0, { 0x0003CA }},                      /* 03AA; 03CA; Case map */
+  { 0x0003AB, 0, { 0x0003CB }},                      /* 03AB; 03CB; Case map */
+  { 0x0003B0, 0, { 0x0003C5,               /* 03B0; 03C5 0308 0301; Case map */
+                   0x000308, 0x000301 }},
+  { 0x0003C2, 0, { 0x0003C3 }},                      /* 03C2; 03C3; Case map */
+  { 0x0003D0, 0, { 0x0003B2 }},                      /* 03D0; 03B2; Case map */
+  { 0x0003D1, 0, { 0x0003B8 }},                      /* 03D1; 03B8; Case map */
+  { 0x0003D5, 0, { 0x0003C6 }},                      /* 03D5; 03C6; Case map */
+  { 0x0003D6, 0, { 0x0003C0 }},                      /* 03D6; 03C0; Case map */
+  { 0x0003D8, 0, { 0x0003D9 }},                      /* 03D8; 03D9; Case map */
+  { 0x0003DA, 0, { 0x0003DB }},                      /* 03DA; 03DB; Case map */
+  { 0x0003DC, 0, { 0x0003DD }},                      /* 03DC; 03DD; Case map */
+  { 0x0003DE, 0, { 0x0003DF }},                      /* 03DE; 03DF; Case map */
+  { 0x0003E0, 0, { 0x0003E1 }},                      /* 03E0; 03E1; Case map */
+  { 0x0003E2, 0, { 0x0003E3 }},                      /* 03E2; 03E3; Case map */
+  { 0x0003E4, 0, { 0x0003E5 }},                      /* 03E4; 03E5; Case map */
+  { 0x0003E6, 0, { 0x0003E7 }},                      /* 03E6; 03E7; Case map */
+  { 0x0003E8, 0, { 0x0003E9 }},                      /* 03E8; 03E9; Case map */
+  { 0x0003EA, 0, { 0x0003EB }},                      /* 03EA; 03EB; Case map */
+  { 0x0003EC, 0, { 0x0003ED }},                      /* 03EC; 03ED; Case map */
+  { 0x0003EE, 0, { 0x0003EF }},                      /* 03EE; 03EF; Case map */
+  { 0x0003F0, 0, { 0x0003BA }},                      /* 03F0; 03BA; Case map */
+  { 0x0003F1, 0, { 0x0003C1 }},                      /* 03F1; 03C1; Case map */
+  { 0x0003F2, 0, { 0x0003C3 }},                      /* 03F2; 03C3; Case map */
+  { 0x0003F4, 0, { 0x0003B8 }},                      /* 03F4; 03B8; Case map */
+  { 0x0003F5, 0, { 0x0003B5 }},                      /* 03F5; 03B5; Case map */
+  { 0x000400, 0, { 0x000450 }},                      /* 0400; 0450; Case map */
+  { 0x000401, 0, { 0x000451 }},                      /* 0401; 0451; Case map */
+  { 0x000402, 0, { 0x000452 }},                      /* 0402; 0452; Case map */
+  { 0x000403, 0, { 0x000453 }},                      /* 0403; 0453; Case map */
+  { 0x000404, 0, { 0x000454 }},                      /* 0404; 0454; Case map */
+  { 0x000405, 0, { 0x000455 }},                      /* 0405; 0455; Case map */
+  { 0x000406, 0, { 0x000456 }},                      /* 0406; 0456; Case map */
+  { 0x000407, 0, { 0x000457 }},                      /* 0407; 0457; Case map */
+  { 0x000408, 0, { 0x000458 }},                      /* 0408; 0458; Case map */
+  { 0x000409, 0, { 0x000459 }},                      /* 0409; 0459; Case map */
+  { 0x00040A, 0, { 0x00045A }},                      /* 040A; 045A; Case map */
+  { 0x00040B, 0, { 0x00045B }},                      /* 040B; 045B; Case map */
+  { 0x00040C, 0, { 0x00045C }},                      /* 040C; 045C; Case map */
+  { 0x00040D, 0, { 0x00045D }},                      /* 040D; 045D; Case map */
+  { 0x00040E, 0, { 0x00045E }},                      /* 040E; 045E; Case map */
+  { 0x00040F, 0, { 0x00045F }},                      /* 040F; 045F; Case map */
+  { 0x000410, 0, { 0x000430 }},                      /* 0410; 0430; Case map */
+  { 0x000411, 0, { 0x000431 }},                      /* 0411; 0431; Case map */
+  { 0x000412, 0, { 0x000432 }},                      /* 0412; 0432; Case map */
+  { 0x000413, 0, { 0x000433 }},                      /* 0413; 0433; Case map */
+  { 0x000414, 0, { 0x000434 }},                      /* 0414; 0434; Case map */
+  { 0x000415, 0, { 0x000435 }},                      /* 0415; 0435; Case map */
+  { 0x000416, 0, { 0x000436 }},                      /* 0416; 0436; Case map */
+  { 0x000417, 0, { 0x000437 }},                      /* 0417; 0437; Case map */
+  { 0x000418, 0, { 0x000438 }},                      /* 0418; 0438; Case map */
+  { 0x000419, 0, { 0x000439 }},                      /* 0419; 0439; Case map */
+  { 0x00041A, 0, { 0x00043A }},                      /* 041A; 043A; Case map */
+  { 0x00041B, 0, { 0x00043B }},                      /* 041B; 043B; Case map */
+  { 0x00041C, 0, { 0x00043C }},                      /* 041C; 043C; Case map */
+  { 0x00041D, 0, { 0x00043D }},                      /* 041D; 043D; Case map */
+  { 0x00041E, 0, { 0x00043E }},                      /* 041E; 043E; Case map */
+  { 0x00041F, 0, { 0x00043F }},                      /* 041F; 043F; Case map */
+  { 0x000420, 0, { 0x000440 }},                      /* 0420; 0440; Case map */
+  { 0x000421, 0, { 0x000441 }},                      /* 0421; 0441; Case map */
+  { 0x000422, 0, { 0x000442 }},                      /* 0422; 0442; Case map */
+  { 0x000423, 0, { 0x000443 }},                      /* 0423; 0443; Case map */
+  { 0x000424, 0, { 0x000444 }},                      /* 0424; 0444; Case map */
+  { 0x000425, 0, { 0x000445 }},                      /* 0425; 0445; Case map */
+  { 0x000426, 0, { 0x000446 }},                      /* 0426; 0446; Case map */
+  { 0x000427, 0, { 0x000447 }},                      /* 0427; 0447; Case map */
+  { 0x000428, 0, { 0x000448 }},                      /* 0428; 0448; Case map */
+  { 0x000429, 0, { 0x000449 }},                      /* 0429; 0449; Case map */
+  { 0x00042A, 0, { 0x00044A }},                      /* 042A; 044A; Case map */
+  { 0x00042B, 0, { 0x00044B }},                      /* 042B; 044B; Case map */
+  { 0x00042C, 0, { 0x00044C }},                      /* 042C; 044C; Case map */
+  { 0x00042D, 0, { 0x00044D }},                      /* 042D; 044D; Case map */
+  { 0x00042E, 0, { 0x00044E }},                      /* 042E; 044E; Case map */
+  { 0x00042F, 0, { 0x00044F }},                      /* 042F; 044F; Case map */
+  { 0x000460, 0, { 0x000461 }},                      /* 0460; 0461; Case map */
+  { 0x000462, 0, { 0x000463 }},                      /* 0462; 0463; Case map */
+  { 0x000464, 0, { 0x000465 }},                      /* 0464; 0465; Case map */
+  { 0x000466, 0, { 0x000467 }},                      /* 0466; 0467; Case map */
+  { 0x000468, 0, { 0x000469 }},                      /* 0468; 0469; Case map */
+  { 0x00046A, 0, { 0x00046B }},                      /* 046A; 046B; Case map */
+  { 0x00046C, 0, { 0x00046D }},                      /* 046C; 046D; Case map */
+  { 0x00046E, 0, { 0x00046F }},                      /* 046E; 046F; Case map */
+  { 0x000470, 0, { 0x000471 }},                      /* 0470; 0471; Case map */
+  { 0x000472, 0, { 0x000473 }},                      /* 0472; 0473; Case map */
+  { 0x000474, 0, { 0x000475 }},                      /* 0474; 0475; Case map */
+  { 0x000476, 0, { 0x000477 }},                      /* 0476; 0477; Case map */
+  { 0x000478, 0, { 0x000479 }},                      /* 0478; 0479; Case map */
+  { 0x00047A, 0, { 0x00047B }},                      /* 047A; 047B; Case map */
+  { 0x00047C, 0, { 0x00047D }},                      /* 047C; 047D; Case map */
+  { 0x00047E, 0, { 0x00047F }},                      /* 047E; 047F; Case map */
+  { 0x000480, 0, { 0x000481 }},                      /* 0480; 0481; Case map */
+  { 0x00048A, 0, { 0x00048B }},                      /* 048A; 048B; Case map */
+  { 0x00048C, 0, { 0x00048D }},                      /* 048C; 048D; Case map */
+  { 0x00048E, 0, { 0x00048F }},                      /* 048E; 048F; Case map */
+  { 0x000490, 0, { 0x000491 }},                      /* 0490; 0491; Case map */
+  { 0x000492, 0, { 0x000493 }},                      /* 0492; 0493; Case map */
+  { 0x000494, 0, { 0x000495 }},                      /* 0494; 0495; Case map */
+  { 0x000496, 0, { 0x000497 }},                      /* 0496; 0497; Case map */
+  { 0x000498, 0, { 0x000499 }},                      /* 0498; 0499; Case map */
+  { 0x00049A, 0, { 0x00049B }},                      /* 049A; 049B; Case map */
+  { 0x00049C, 0, { 0x00049D }},                      /* 049C; 049D; Case map */
+  { 0x00049E, 0, { 0x00049F }},                      /* 049E; 049F; Case map */
+  { 0x0004A0, 0, { 0x0004A1 }},                      /* 04A0; 04A1; Case map */
+  { 0x0004A2, 0, { 0x0004A3 }},                      /* 04A2; 04A3; Case map */
+  { 0x0004A4, 0, { 0x0004A5 }},                      /* 04A4; 04A5; Case map */
+  { 0x0004A6, 0, { 0x0004A7 }},                      /* 04A6; 04A7; Case map */
+  { 0x0004A8, 0, { 0x0004A9 }},                      /* 04A8; 04A9; Case map */
+  { 0x0004AA, 0, { 0x0004AB }},                      /* 04AA; 04AB; Case map */
+  { 0x0004AC, 0, { 0x0004AD }},                      /* 04AC; 04AD; Case map */
+  { 0x0004AE, 0, { 0x0004AF }},                      /* 04AE; 04AF; Case map */
+  { 0x0004B0, 0, { 0x0004B1 }},                      /* 04B0; 04B1; Case map */
+  { 0x0004B2, 0, { 0x0004B3 }},                      /* 04B2; 04B3; Case map */
+  { 0x0004B4, 0, { 0x0004B5 }},                      /* 04B4; 04B5; Case map */
+  { 0x0004B6, 0, { 0x0004B7 }},                      /* 04B6; 04B7; Case map */
+  { 0x0004B8, 0, { 0x0004B9 }},                      /* 04B8; 04B9; Case map */
+  { 0x0004BA, 0, { 0x0004BB }},                      /* 04BA; 04BB; Case map */
+  { 0x0004BC, 0, { 0x0004BD }},                      /* 04BC; 04BD; Case map */
+  { 0x0004BE, 0, { 0x0004BF }},                      /* 04BE; 04BF; Case map */
+  { 0x0004C1, 0, { 0x0004C2 }},                      /* 04C1; 04C2; Case map */
+  { 0x0004C3, 0, { 0x0004C4 }},                      /* 04C3; 04C4; Case map */
+  { 0x0004C5, 0, { 0x0004C6 }},                      /* 04C5; 04C6; Case map */
+  { 0x0004C7, 0, { 0x0004C8 }},                      /* 04C7; 04C8; Case map */
+  { 0x0004C9, 0, { 0x0004CA }},                      /* 04C9; 04CA; Case map */
+  { 0x0004CB, 0, { 0x0004CC }},                      /* 04CB; 04CC; Case map */
+  { 0x0004CD, 0, { 0x0004CE }},                      /* 04CD; 04CE; Case map */
+  { 0x0004D0, 0, { 0x0004D1 }},                      /* 04D0; 04D1; Case map */
+  { 0x0004D2, 0, { 0x0004D3 }},                      /* 04D2; 04D3; Case map */
+  { 0x0004D4, 0, { 0x0004D5 }},                      /* 04D4; 04D5; Case map */
+  { 0x0004D6, 0, { 0x0004D7 }},                      /* 04D6; 04D7; Case map */
+  { 0x0004D8, 0, { 0x0004D9 }},                      /* 04D8; 04D9; Case map */
+  { 0x0004DA, 0, { 0x0004DB }},                      /* 04DA; 04DB; Case map */
+  { 0x0004DC, 0, { 0x0004DD }},                      /* 04DC; 04DD; Case map */
+  { 0x0004DE, 0, { 0x0004DF }},                      /* 04DE; 04DF; Case map */
+  { 0x0004E0, 0, { 0x0004E1 }},                      /* 04E0; 04E1; Case map */
+  { 0x0004E2, 0, { 0x0004E3 }},                      /* 04E2; 04E3; Case map */
+  { 0x0004E4, 0, { 0x0004E5 }},                      /* 04E4; 04E5; Case map */
+  { 0x0004E6, 0, { 0x0004E7 }},                      /* 04E6; 04E7; Case map */
+  { 0x0004E8, 0, { 0x0004E9 }},                      /* 04E8; 04E9; Case map */
+  { 0x0004EA, 0, { 0x0004EB }},                      /* 04EA; 04EB; Case map */
+  { 0x0004EC, 0, { 0x0004ED }},                      /* 04EC; 04ED; Case map */
+  { 0x0004EE, 0, { 0x0004EF }},                      /* 04EE; 04EF; Case map */
+  { 0x0004F0, 0, { 0x0004F1 }},                      /* 04F0; 04F1; Case map */
+  { 0x0004F2, 0, { 0x0004F3 }},                      /* 04F2; 04F3; Case map */
+  { 0x0004F4, 0, { 0x0004F5 }},                      /* 04F4; 04F5; Case map */
+  { 0x0004F8, 0, { 0x0004F9 }},                      /* 04F8; 04F9; Case map */
+  { 0x000500, 0, { 0x000501 }},                      /* 0500; 0501; Case map */
+  { 0x000502, 0, { 0x000503 }},                      /* 0502; 0503; Case map */
+  { 0x000504, 0, { 0x000505 }},                      /* 0504; 0505; Case map */
+  { 0x000506, 0, { 0x000507 }},                      /* 0506; 0507; Case map */
+  { 0x000508, 0, { 0x000509 }},                      /* 0508; 0509; Case map */
+  { 0x00050A, 0, { 0x00050B }},                      /* 050A; 050B; Case map */
+  { 0x00050C, 0, { 0x00050D }},                      /* 050C; 050D; Case map */
+  { 0x00050E, 0, { 0x00050F }},                      /* 050E; 050F; Case map */
+  { 0x000531, 0, { 0x000561 }},                      /* 0531; 0561; Case map */
+  { 0x000532, 0, { 0x000562 }},                      /* 0532; 0562; Case map */
+  { 0x000533, 0, { 0x000563 }},                      /* 0533; 0563; Case map */
+  { 0x000534, 0, { 0x000564 }},                      /* 0534; 0564; Case map */
+  { 0x000535, 0, { 0x000565 }},                      /* 0535; 0565; Case map */
+  { 0x000536, 0, { 0x000566 }},                      /* 0536; 0566; Case map */
+  { 0x000537, 0, { 0x000567 }},                      /* 0537; 0567; Case map */
+  { 0x000538, 0, { 0x000568 }},                      /* 0538; 0568; Case map */
+  { 0x000539, 0, { 0x000569 }},                      /* 0539; 0569; Case map */
+  { 0x00053A, 0, { 0x00056A }},                      /* 053A; 056A; Case map */
+  { 0x00053B, 0, { 0x00056B }},                      /* 053B; 056B; Case map */
+  { 0x00053C, 0, { 0x00056C }},                      /* 053C; 056C; Case map */
+  { 0x00053D, 0, { 0x00056D }},                      /* 053D; 056D; Case map */
+  { 0x00053E, 0, { 0x00056E }},                      /* 053E; 056E; Case map */
+  { 0x00053F, 0, { 0x00056F }},                      /* 053F; 056F; Case map */
+  { 0x000540, 0, { 0x000570 }},                      /* 0540; 0570; Case map */
+  { 0x000541, 0, { 0x000571 }},                      /* 0541; 0571; Case map */
+  { 0x000542, 0, { 0x000572 }},                      /* 0542; 0572; Case map */
+  { 0x000543, 0, { 0x000573 }},                      /* 0543; 0573; Case map */
+  { 0x000544, 0, { 0x000574 }},                      /* 0544; 0574; Case map */
+  { 0x000545, 0, { 0x000575 }},                      /* 0545; 0575; Case map */
+  { 0x000546, 0, { 0x000576 }},                      /* 0546; 0576; Case map */
+  { 0x000547, 0, { 0x000577 }},                      /* 0547; 0577; Case map */
+  { 0x000548, 0, { 0x000578 }},                      /* 0548; 0578; Case map */
+  { 0x000549, 0, { 0x000579 }},                      /* 0549; 0579; Case map */
+  { 0x00054A, 0, { 0x00057A }},                      /* 054A; 057A; Case map */
+  { 0x00054B, 0, { 0x00057B }},                      /* 054B; 057B; Case map */
+  { 0x00054C, 0, { 0x00057C }},                      /* 054C; 057C; Case map */
+  { 0x00054D, 0, { 0x00057D }},                      /* 054D; 057D; Case map */
+  { 0x00054E, 0, { 0x00057E }},                      /* 054E; 057E; Case map */
+  { 0x00054F, 0, { 0x00057F }},                      /* 054F; 057F; Case map */
+  { 0x000550, 0, { 0x000580 }},                      /* 0550; 0580; Case map */
+  { 0x000551, 0, { 0x000581 }},                      /* 0551; 0581; Case map */
+  { 0x000552, 0, { 0x000582 }},                      /* 0552; 0582; Case map */
+  { 0x000553, 0, { 0x000583 }},                      /* 0553; 0583; Case map */
+  { 0x000554, 0, { 0x000584 }},                      /* 0554; 0584; Case map */
+  { 0x000555, 0, { 0x000585 }},                      /* 0555; 0585; Case map */
+  { 0x000556, 0, { 0x000586 }},                      /* 0556; 0586; Case map */
+  { 0x000587, 0, { 0x000565,                    /* 0587; 0565 0582; Case map */
+                   0x000582 }},
+  { 0x001E00, 0, { 0x001E01 }},                      /* 1E00; 1E01; Case map */
+  { 0x001E02, 0, { 0x001E03 }},                      /* 1E02; 1E03; Case map */
+  { 0x001E04, 0, { 0x001E05 }},                      /* 1E04; 1E05; Case map */
+  { 0x001E06, 0, { 0x001E07 }},                      /* 1E06; 1E07; Case map */
+  { 0x001E08, 0, { 0x001E09 }},                      /* 1E08; 1E09; Case map */
+  { 0x001E0A, 0, { 0x001E0B }},                      /* 1E0A; 1E0B; Case map */
+  { 0x001E0C, 0, { 0x001E0D }},                      /* 1E0C; 1E0D; Case map */
+  { 0x001E0E, 0, { 0x001E0F }},                      /* 1E0E; 1E0F; Case map */
+  { 0x001E10, 0, { 0x001E11 }},                      /* 1E10; 1E11; Case map */
+  { 0x001E12, 0, { 0x001E13 }},                      /* 1E12; 1E13; Case map */
+  { 0x001E14, 0, { 0x001E15 }},                      /* 1E14; 1E15; Case map */
+  { 0x001E16, 0, { 0x001E17 }},                      /* 1E16; 1E17; Case map */
+  { 0x001E18, 0, { 0x001E19 }},                      /* 1E18; 1E19; Case map */
+  { 0x001E1A, 0, { 0x001E1B }},                      /* 1E1A; 1E1B; Case map */
+  { 0x001E1C, 0, { 0x001E1D }},                      /* 1E1C; 1E1D; Case map */
+  { 0x001E1E, 0, { 0x001E1F }},                      /* 1E1E; 1E1F; Case map */
+  { 0x001E20, 0, { 0x001E21 }},                      /* 1E20; 1E21; Case map */
+  { 0x001E22, 0, { 0x001E23 }},                      /* 1E22; 1E23; Case map */
+  { 0x001E24, 0, { 0x001E25 }},                      /* 1E24; 1E25; Case map */
+  { 0x001E26, 0, { 0x001E27 }},                      /* 1E26; 1E27; Case map */
+  { 0x001E28, 0, { 0x001E29 }},                      /* 1E28; 1E29; Case map */
+  { 0x001E2A, 0, { 0x001E2B }},                      /* 1E2A; 1E2B; Case map */
+  { 0x001E2C, 0, { 0x001E2D }},                      /* 1E2C; 1E2D; Case map */
+  { 0x001E2E, 0, { 0x001E2F }},                      /* 1E2E; 1E2F; Case map */
+  { 0x001E30, 0, { 0x001E31 }},                      /* 1E30; 1E31; Case map */
+  { 0x001E32, 0, { 0x001E33 }},                      /* 1E32; 1E33; Case map */
+  { 0x001E34, 0, { 0x001E35 }},                      /* 1E34; 1E35; Case map */
+  { 0x001E36, 0, { 0x001E37 }},                      /* 1E36; 1E37; Case map */
+  { 0x001E38, 0, { 0x001E39 }},                      /* 1E38; 1E39; Case map */
+  { 0x001E3A, 0, { 0x001E3B }},                      /* 1E3A; 1E3B; Case map */
+  { 0x001E3C, 0, { 0x001E3D }},                      /* 1E3C; 1E3D; Case map */
+  { 0x001E3E, 0, { 0x001E3F }},                      /* 1E3E; 1E3F; Case map */
+  { 0x001E40, 0, { 0x001E41 }},                      /* 1E40; 1E41; Case map */
+  { 0x001E42, 0, { 0x001E43 }},                      /* 1E42; 1E43; Case map */
+  { 0x001E44, 0, { 0x001E45 }},                      /* 1E44; 1E45; Case map */
+  { 0x001E46, 0, { 0x001E47 }},                      /* 1E46; 1E47; Case map */
+  { 0x001E48, 0, { 0x001E49 }},                      /* 1E48; 1E49; Case map */
+  { 0x001E4A, 0, { 0x001E4B }},                      /* 1E4A; 1E4B; Case map */
+  { 0x001E4C, 0, { 0x001E4D }},                      /* 1E4C; 1E4D; Case map */
+  { 0x001E4E, 0, { 0x001E4F }},                      /* 1E4E; 1E4F; Case map */
+  { 0x001E50, 0, { 0x001E51 }},                      /* 1E50; 1E51; Case map */
+  { 0x001E52, 0, { 0x001E53 }},                      /* 1E52; 1E53; Case map */
+  { 0x001E54, 0, { 0x001E55 }},                      /* 1E54; 1E55; Case map */
+  { 0x001E56, 0, { 0x001E57 }},                      /* 1E56; 1E57; Case map */
+  { 0x001E58, 0, { 0x001E59 }},                      /* 1E58; 1E59; Case map */
+  { 0x001E5A, 0, { 0x001E5B }},                      /* 1E5A; 1E5B; Case map */
+  { 0x001E5C, 0, { 0x001E5D }},                      /* 1E5C; 1E5D; Case map */
+  { 0x001E5E, 0, { 0x001E5F }},                      /* 1E5E; 1E5F; Case map */
+  { 0x001E60, 0, { 0x001E61 }},                      /* 1E60; 1E61; Case map */
+  { 0x001E62, 0, { 0x001E63 }},                      /* 1E62; 1E63; Case map */
+  { 0x001E64, 0, { 0x001E65 }},                      /* 1E64; 1E65; Case map */
+  { 0x001E66, 0, { 0x001E67 }},                      /* 1E66; 1E67; Case map */
+  { 0x001E68, 0, { 0x001E69 }},                      /* 1E68; 1E69; Case map */
+  { 0x001E6A, 0, { 0x001E6B }},                      /* 1E6A; 1E6B; Case map */
+  { 0x001E6C, 0, { 0x001E6D }},                      /* 1E6C; 1E6D; Case map */
+  { 0x001E6E, 0, { 0x001E6F }},                      /* 1E6E; 1E6F; Case map */
+  { 0x001E70, 0, { 0x001E71 }},                      /* 1E70; 1E71; Case map */
+  { 0x001E72, 0, { 0x001E73 }},                      /* 1E72; 1E73; Case map */
+  { 0x001E74, 0, { 0x001E75 }},                      /* 1E74; 1E75; Case map */
+  { 0x001E76, 0, { 0x001E77 }},                      /* 1E76; 1E77; Case map */
+  { 0x001E78, 0, { 0x001E79 }},                      /* 1E78; 1E79; Case map */
+  { 0x001E7A, 0, { 0x001E7B }},                      /* 1E7A; 1E7B; Case map */
+  { 0x001E7C, 0, { 0x001E7D }},                      /* 1E7C; 1E7D; Case map */
+  { 0x001E7E, 0, { 0x001E7F }},                      /* 1E7E; 1E7F; Case map */
+  { 0x001E80, 0, { 0x001E81 }},                      /* 1E80; 1E81; Case map */
+  { 0x001E82, 0, { 0x001E83 }},                      /* 1E82; 1E83; Case map */
+  { 0x001E84, 0, { 0x001E85 }},                      /* 1E84; 1E85; Case map */
+  { 0x001E86, 0, { 0x001E87 }},                      /* 1E86; 1E87; Case map */
+  { 0x001E88, 0, { 0x001E89 }},                      /* 1E88; 1E89; Case map */
+  { 0x001E8A, 0, { 0x001E8B }},                      /* 1E8A; 1E8B; Case map */
+  { 0x001E8C, 0, { 0x001E8D }},                      /* 1E8C; 1E8D; Case map */
+  { 0x001E8E, 0, { 0x001E8F }},                      /* 1E8E; 1E8F; Case map */
+  { 0x001E90, 0, { 0x001E91 }},                      /* 1E90; 1E91; Case map */
+  { 0x001E92, 0, { 0x001E93 }},                      /* 1E92; 1E93; Case map */
+  { 0x001E94, 0, { 0x001E95 }},                      /* 1E94; 1E95; Case map */
+  { 0x001E96, 0, { 0x000068,                    /* 1E96; 0068 0331; Case map */
+                   0x000331 }},
+  { 0x001E97, 0, { 0x000074,                    /* 1E97; 0074 0308; Case map */
+                   0x000308 }},
+  { 0x001E98, 0, { 0x000077,                    /* 1E98; 0077 030A; Case map */
+                   0x00030A }},
+  { 0x001E99, 0, { 0x000079,                    /* 1E99; 0079 030A; Case map */
+                   0x00030A }},
+  { 0x001E9A, 0, { 0x000061,                    /* 1E9A; 0061 02BE; Case map */
+                   0x0002BE }},
+  { 0x001E9B, 0, { 0x001E61 }},                      /* 1E9B; 1E61; Case map */
+  { 0x001EA0, 0, { 0x001EA1 }},                      /* 1EA0; 1EA1; Case map */
+  { 0x001EA2, 0, { 0x001EA3 }},                      /* 1EA2; 1EA3; Case map */
+  { 0x001EA4, 0, { 0x001EA5 }},                      /* 1EA4; 1EA5; Case map */
+  { 0x001EA6, 0, { 0x001EA7 }},                      /* 1EA6; 1EA7; Case map */
+  { 0x001EA8, 0, { 0x001EA9 }},                      /* 1EA8; 1EA9; Case map */
+  { 0x001EAA, 0, { 0x001EAB }},                      /* 1EAA; 1EAB; Case map */
+  { 0x001EAC, 0, { 0x001EAD }},                      /* 1EAC; 1EAD; Case map */
+  { 0x001EAE, 0, { 0x001EAF }},                      /* 1EAE; 1EAF; Case map */
+  { 0x001EB0, 0, { 0x001EB1 }},                      /* 1EB0; 1EB1; Case map */
+  { 0x001EB2, 0, { 0x001EB3 }},                      /* 1EB2; 1EB3; Case map */
+  { 0x001EB4, 0, { 0x001EB5 }},                      /* 1EB4; 1EB5; Case map */
+  { 0x001EB6, 0, { 0x001EB7 }},                      /* 1EB6; 1EB7; Case map */
+  { 0x001EB8, 0, { 0x001EB9 }},                      /* 1EB8; 1EB9; Case map */
+  { 0x001EBA, 0, { 0x001EBB }},                      /* 1EBA; 1EBB; Case map */
+  { 0x001EBC, 0, { 0x001EBD }},                      /* 1EBC; 1EBD; Case map */
+  { 0x001EBE, 0, { 0x001EBF }},                      /* 1EBE; 1EBF; Case map */
+  { 0x001EC0, 0, { 0x001EC1 }},                      /* 1EC0; 1EC1; Case map */
+  { 0x001EC2, 0, { 0x001EC3 }},                      /* 1EC2; 1EC3; Case map */
+  { 0x001EC4, 0, { 0x001EC5 }},                      /* 1EC4; 1EC5; Case map */
+  { 0x001EC6, 0, { 0x001EC7 }},                      /* 1EC6; 1EC7; Case map */
+  { 0x001EC8, 0, { 0x001EC9 }},                      /* 1EC8; 1EC9; Case map */
+  { 0x001ECA, 0, { 0x001ECB }},                      /* 1ECA; 1ECB; Case map */
+  { 0x001ECC, 0, { 0x001ECD }},                      /* 1ECC; 1ECD; Case map */
+  { 0x001ECE, 0, { 0x001ECF }},                      /* 1ECE; 1ECF; Case map */
+  { 0x001ED0, 0, { 0x001ED1 }},                      /* 1ED0; 1ED1; Case map */
+  { 0x001ED2, 0, { 0x001ED3 }},                      /* 1ED2; 1ED3; Case map */
+  { 0x001ED4, 0, { 0x001ED5 }},                      /* 1ED4; 1ED5; Case map */
+  { 0x001ED6, 0, { 0x001ED7 }},                      /* 1ED6; 1ED7; Case map */
+  { 0x001ED8, 0, { 0x001ED9 }},                      /* 1ED8; 1ED9; Case map */
+  { 0x001EDA, 0, { 0x001EDB }},                      /* 1EDA; 1EDB; Case map */
+  { 0x001EDC, 0, { 0x001EDD }},                      /* 1EDC; 1EDD; Case map */
+  { 0x001EDE, 0, { 0x001EDF }},                      /* 1EDE; 1EDF; Case map */
+  { 0x001EE0, 0, { 0x001EE1 }},                      /* 1EE0; 1EE1; Case map */
+  { 0x001EE2, 0, { 0x001EE3 }},                      /* 1EE2; 1EE3; Case map */
+  { 0x001EE4, 0, { 0x001EE5 }},                      /* 1EE4; 1EE5; Case map */
+  { 0x001EE6, 0, { 0x001EE7 }},                      /* 1EE6; 1EE7; Case map */
+  { 0x001EE8, 0, { 0x001EE9 }},                      /* 1EE8; 1EE9; Case map */
+  { 0x001EEA, 0, { 0x001EEB }},                      /* 1EEA; 1EEB; Case map */
+  { 0x001EEC, 0, { 0x001EED }},                      /* 1EEC; 1EED; Case map */
+  { 0x001EEE, 0, { 0x001EEF }},                      /* 1EEE; 1EEF; Case map */
+  { 0x001EF0, 0, { 0x001EF1 }},                      /* 1EF0; 1EF1; Case map */
+  { 0x001EF2, 0, { 0x001EF3 }},                      /* 1EF2; 1EF3; Case map */
+  { 0x001EF4, 0, { 0x001EF5 }},                      /* 1EF4; 1EF5; Case map */
+  { 0x001EF6, 0, { 0x001EF7 }},                      /* 1EF6; 1EF7; Case map */
+  { 0x001EF8, 0, { 0x001EF9 }},                      /* 1EF8; 1EF9; Case map */
+  { 0x001F08, 0, { 0x001F00 }},                      /* 1F08; 1F00; Case map */
+  { 0x001F09, 0, { 0x001F01 }},                      /* 1F09; 1F01; Case map */
+  { 0x001F0A, 0, { 0x001F02 }},                      /* 1F0A; 1F02; Case map */
+  { 0x001F0B, 0, { 0x001F03 }},                      /* 1F0B; 1F03; Case map */
+  { 0x001F0C, 0, { 0x001F04 }},                      /* 1F0C; 1F04; Case map */
+  { 0x001F0D, 0, { 0x001F05 }},                      /* 1F0D; 1F05; Case map */
+  { 0x001F0E, 0, { 0x001F06 }},                      /* 1F0E; 1F06; Case map */
+  { 0x001F0F, 0, { 0x001F07 }},                      /* 1F0F; 1F07; Case map */
+  { 0x001F18, 0, { 0x001F10 }},                      /* 1F18; 1F10; Case map */
+  { 0x001F19, 0, { 0x001F11 }},                      /* 1F19; 1F11; Case map */
+  { 0x001F1A, 0, { 0x001F12 }},                      /* 1F1A; 1F12; Case map */
+  { 0x001F1B, 0, { 0x001F13 }},                      /* 1F1B; 1F13; Case map */
+  { 0x001F1C, 0, { 0x001F14 }},                      /* 1F1C; 1F14; Case map */
+  { 0x001F1D, 0, { 0x001F15 }},                      /* 1F1D; 1F15; Case map */
+  { 0x001F28, 0, { 0x001F20 }},                      /* 1F28; 1F20; Case map */
+  { 0x001F29, 0, { 0x001F21 }},                      /* 1F29; 1F21; Case map */
+  { 0x001F2A, 0, { 0x001F22 }},                      /* 1F2A; 1F22; Case map */
+  { 0x001F2B, 0, { 0x001F23 }},                      /* 1F2B; 1F23; Case map */
+  { 0x001F2C, 0, { 0x001F24 }},                      /* 1F2C; 1F24; Case map */
+  { 0x001F2D, 0, { 0x001F25 }},                      /* 1F2D; 1F25; Case map */
+  { 0x001F2E, 0, { 0x001F26 }},                      /* 1F2E; 1F26; Case map */
+  { 0x001F2F, 0, { 0x001F27 }},                      /* 1F2F; 1F27; Case map */
+  { 0x001F38, 0, { 0x001F30 }},                      /* 1F38; 1F30; Case map */
+  { 0x001F39, 0, { 0x001F31 }},                      /* 1F39; 1F31; Case map */
+  { 0x001F3A, 0, { 0x001F32 }},                      /* 1F3A; 1F32; Case map */
+  { 0x001F3B, 0, { 0x001F33 }},                      /* 1F3B; 1F33; Case map */
+  { 0x001F3C, 0, { 0x001F34 }},                      /* 1F3C; 1F34; Case map */
+  { 0x001F3D, 0, { 0x001F35 }},                      /* 1F3D; 1F35; Case map */
+  { 0x001F3E, 0, { 0x001F36 }},                      /* 1F3E; 1F36; Case map */
+  { 0x001F3F, 0, { 0x001F37 }},                      /* 1F3F; 1F37; Case map */
+  { 0x001F48, 0, { 0x001F40 }},                      /* 1F48; 1F40; Case map */
+  { 0x001F49, 0, { 0x001F41 }},                      /* 1F49; 1F41; Case map */
+  { 0x001F4A, 0, { 0x001F42 }},                      /* 1F4A; 1F42; Case map */
+  { 0x001F4B, 0, { 0x001F43 }},                      /* 1F4B; 1F43; Case map */
+  { 0x001F4C, 0, { 0x001F44 }},                      /* 1F4C; 1F44; Case map */
+  { 0x001F4D, 0, { 0x001F45 }},                      /* 1F4D; 1F45; Case map */
+  { 0x001F50, 0, { 0x0003C5,                    /* 1F50; 03C5 0313; Case map */
+                   0x000313 }},
+  { 0x001F52, 0, { 0x0003C5,               /* 1F52; 03C5 0313 0300; Case map */
+                   0x000313, 0x000300 }},
+  { 0x001F54, 0, { 0x0003C5,               /* 1F54; 03C5 0313 0301; Case map */
+                   0x000313, 0x000301 }},
+  { 0x001F56, 0, { 0x0003C5,               /* 1F56; 03C5 0313 0342; Case map */
+                   0x000313, 0x000342 }},
+  { 0x001F59, 0, { 0x001F51 }},                      /* 1F59; 1F51; Case map */
+  { 0x001F5B, 0, { 0x001F53 }},                      /* 1F5B; 1F53; Case map */
+  { 0x001F5D, 0, { 0x001F55 }},                      /* 1F5D; 1F55; Case map */
+  { 0x001F5F, 0, { 0x001F57 }},                      /* 1F5F; 1F57; Case map */
+  { 0x001F68, 0, { 0x001F60 }},                      /* 1F68; 1F60; Case map */
+  { 0x001F69, 0, { 0x001F61 }},                      /* 1F69; 1F61; Case map */
+  { 0x001F6A, 0, { 0x001F62 }},                      /* 1F6A; 1F62; Case map */
+  { 0x001F6B, 0, { 0x001F63 }},                      /* 1F6B; 1F63; Case map */
+  { 0x001F6C, 0, { 0x001F64 }},                      /* 1F6C; 1F64; Case map */
+  { 0x001F6D, 0, { 0x001F65 }},                      /* 1F6D; 1F65; Case map */
+  { 0x001F6E, 0, { 0x001F66 }},                      /* 1F6E; 1F66; Case map */
+  { 0x001F6F, 0, { 0x001F67 }},                      /* 1F6F; 1F67; Case map */
+  { 0x001F80, 0, { 0x001F00,                    /* 1F80; 1F00 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F81, 0, { 0x001F01,                    /* 1F81; 1F01 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F82, 0, { 0x001F02,                    /* 1F82; 1F02 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F83, 0, { 0x001F03,                    /* 1F83; 1F03 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F84, 0, { 0x001F04,                    /* 1F84; 1F04 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F85, 0, { 0x001F05,                    /* 1F85; 1F05 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F86, 0, { 0x001F06,                    /* 1F86; 1F06 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F87, 0, { 0x001F07,                    /* 1F87; 1F07 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F88, 0, { 0x001F00,                    /* 1F88; 1F00 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F89, 0, { 0x001F01,                    /* 1F89; 1F01 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8A, 0, { 0x001F02,                    /* 1F8A; 1F02 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8B, 0, { 0x001F03,                    /* 1F8B; 1F03 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8C, 0, { 0x001F04,                    /* 1F8C; 1F04 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8D, 0, { 0x001F05,                    /* 1F8D; 1F05 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8E, 0, { 0x001F06,                    /* 1F8E; 1F06 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F8F, 0, { 0x001F07,                    /* 1F8F; 1F07 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F90, 0, { 0x001F20,                    /* 1F90; 1F20 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F91, 0, { 0x001F21,                    /* 1F91; 1F21 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F92, 0, { 0x001F22,                    /* 1F92; 1F22 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F93, 0, { 0x001F23,                    /* 1F93; 1F23 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F94, 0, { 0x001F24,                    /* 1F94; 1F24 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F95, 0, { 0x001F25,                    /* 1F95; 1F25 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F96, 0, { 0x001F26,                    /* 1F96; 1F26 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F97, 0, { 0x001F27,                    /* 1F97; 1F27 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F98, 0, { 0x001F20,                    /* 1F98; 1F20 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F99, 0, { 0x001F21,                    /* 1F99; 1F21 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9A, 0, { 0x001F22,                    /* 1F9A; 1F22 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9B, 0, { 0x001F23,                    /* 1F9B; 1F23 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9C, 0, { 0x001F24,                    /* 1F9C; 1F24 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9D, 0, { 0x001F25,                    /* 1F9D; 1F25 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9E, 0, { 0x001F26,                    /* 1F9E; 1F26 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001F9F, 0, { 0x001F27,                    /* 1F9F; 1F27 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA0, 0, { 0x001F60,                    /* 1FA0; 1F60 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA1, 0, { 0x001F61,                    /* 1FA1; 1F61 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA2, 0, { 0x001F62,                    /* 1FA2; 1F62 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA3, 0, { 0x001F63,                    /* 1FA3; 1F63 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA4, 0, { 0x001F64,                    /* 1FA4; 1F64 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA5, 0, { 0x001F65,                    /* 1FA5; 1F65 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA6, 0, { 0x001F66,                    /* 1FA6; 1F66 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA7, 0, { 0x001F67,                    /* 1FA7; 1F67 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA8, 0, { 0x001F60,                    /* 1FA8; 1F60 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FA9, 0, { 0x001F61,                    /* 1FA9; 1F61 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAA, 0, { 0x001F62,                    /* 1FAA; 1F62 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAB, 0, { 0x001F63,                    /* 1FAB; 1F63 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAC, 0, { 0x001F64,                    /* 1FAC; 1F64 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAD, 0, { 0x001F65,                    /* 1FAD; 1F65 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAE, 0, { 0x001F66,                    /* 1FAE; 1F66 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FAF, 0, { 0x001F67,                    /* 1FAF; 1F67 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FB2, 0, { 0x001F70,                    /* 1FB2; 1F70 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FB3, 0, { 0x0003B1,                    /* 1FB3; 03B1 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FB4, 0, { 0x0003AC,                    /* 1FB4; 03AC 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FB6, 0, { 0x0003B1,                    /* 1FB6; 03B1 0342; Case map */
+                   0x000342 }},
+  { 0x001FB7, 0, { 0x0003B1,               /* 1FB7; 03B1 0342 03B9; Case map */
+                   0x000342, 0x0003B9 }},
+  { 0x001FB8, 0, { 0x001FB0 }},                      /* 1FB8; 1FB0; Case map */
+  { 0x001FB9, 0, { 0x001FB1 }},                      /* 1FB9; 1FB1; Case map */
+  { 0x001FBA, 0, { 0x001F70 }},                      /* 1FBA; 1F70; Case map */
+  { 0x001FBB, 0, { 0x001F71 }},                      /* 1FBB; 1F71; Case map */
+  { 0x001FBC, 0, { 0x0003B1,                    /* 1FBC; 03B1 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FBE, 0, { 0x0003B9 }},                      /* 1FBE; 03B9; Case map */
+  { 0x001FC2, 0, { 0x001F74,                    /* 1FC2; 1F74 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FC3, 0, { 0x0003B7,                    /* 1FC3; 03B7 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FC4, 0, { 0x0003AE,                    /* 1FC4; 03AE 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FC6, 0, { 0x0003B7,                    /* 1FC6; 03B7 0342; Case map */
+                   0x000342 }},
+  { 0x001FC7, 0, { 0x0003B7,               /* 1FC7; 03B7 0342 03B9; Case map */
+                   0x000342, 0x0003B9 }},
+  { 0x001FC8, 0, { 0x001F72 }},                      /* 1FC8; 1F72; Case map */
+  { 0x001FC9, 0, { 0x001F73 }},                      /* 1FC9; 1F73; Case map */
+  { 0x001FCA, 0, { 0x001F74 }},                      /* 1FCA; 1F74; Case map */
+  { 0x001FCB, 0, { 0x001F75 }},                      /* 1FCB; 1F75; Case map */
+  { 0x001FCC, 0, { 0x0003B7,                    /* 1FCC; 03B7 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FD2, 0, { 0x0003B9,               /* 1FD2; 03B9 0308 0300; Case map */
+                   0x000308, 0x000300 }},
+  { 0x001FD3, 0, { 0x0003B9,               /* 1FD3; 03B9 0308 0301; Case map */
+                   0x000308, 0x000301 }},
+  { 0x001FD6, 0, { 0x0003B9,                    /* 1FD6; 03B9 0342; Case map */
+                   0x000342 }},
+  { 0x001FD7, 0, { 0x0003B9,               /* 1FD7; 03B9 0308 0342; Case map */
+                   0x000308, 0x000342 }},
+  { 0x001FD8, 0, { 0x001FD0 }},                      /* 1FD8; 1FD0; Case map */
+  { 0x001FD9, 0, { 0x001FD1 }},                      /* 1FD9; 1FD1; Case map */
+  { 0x001FDA, 0, { 0x001F76 }},                      /* 1FDA; 1F76; Case map */
+  { 0x001FDB, 0, { 0x001F77 }},                      /* 1FDB; 1F77; Case map */
+  { 0x001FE2, 0, { 0x0003C5,               /* 1FE2; 03C5 0308 0300; Case map */
+                   0x000308, 0x000300 }},
+  { 0x001FE3, 0, { 0x0003C5,               /* 1FE3; 03C5 0308 0301; Case map */
+                   0x000308, 0x000301 }},
+  { 0x001FE4, 0, { 0x0003C1,                    /* 1FE4; 03C1 0313; Case map */
+                   0x000313 }},
+  { 0x001FE6, 0, { 0x0003C5,                    /* 1FE6; 03C5 0342; Case map */
+                   0x000342 }},
+  { 0x001FE7, 0, { 0x0003C5,               /* 1FE7; 03C5 0308 0342; Case map */
+                   0x000308, 0x000342 }},
+  { 0x001FE8, 0, { 0x001FE0 }},                      /* 1FE8; 1FE0; Case map */
+  { 0x001FE9, 0, { 0x001FE1 }},                      /* 1FE9; 1FE1; Case map */
+  { 0x001FEA, 0, { 0x001F7A }},                      /* 1FEA; 1F7A; Case map */
+  { 0x001FEB, 0, { 0x001F7B }},                      /* 1FEB; 1F7B; Case map */
+  { 0x001FEC, 0, { 0x001FE5 }},                      /* 1FEC; 1FE5; Case map */
+  { 0x001FF2, 0, { 0x001F7C,                    /* 1FF2; 1F7C 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FF3, 0, { 0x0003C9,                    /* 1FF3; 03C9 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FF4, 0, { 0x0003CE,                    /* 1FF4; 03CE 03B9; Case map */
+                   0x0003B9 }},
+  { 0x001FF6, 0, { 0x0003C9,                    /* 1FF6; 03C9 0342; Case map */
+                   0x000342 }},
+  { 0x001FF7, 0, { 0x0003C9,               /* 1FF7; 03C9 0342 03B9; Case map */
+                   0x000342, 0x0003B9 }},
+  { 0x001FF8, 0, { 0x001F78 }},                      /* 1FF8; 1F78; Case map */
+  { 0x001FF9, 0, { 0x001F79 }},                      /* 1FF9; 1F79; Case map */
+  { 0x001FFA, 0, { 0x001F7C }},                      /* 1FFA; 1F7C; Case map */
+  { 0x001FFB, 0, { 0x001F7D }},                      /* 1FFB; 1F7D; Case map */
+  { 0x001FFC, 0, { 0x0003C9,                    /* 1FFC; 03C9 03B9; Case map */
+                   0x0003B9 }},
+  { 0x002126, 0, { 0x0003C9 }},                      /* 2126; 03C9; Case map */
+  { 0x00212A, 0, { 0x00006B }},                      /* 212A; 006B; Case map */
+  { 0x00212B, 0, { 0x0000E5 }},                      /* 212B; 00E5; Case map */
+  { 0x002160, 0, { 0x002170 }},                      /* 2160; 2170; Case map */
+  { 0x002161, 0, { 0x002171 }},                      /* 2161; 2171; Case map */
+  { 0x002162, 0, { 0x002172 }},                      /* 2162; 2172; Case map */
+  { 0x002163, 0, { 0x002173 }},                      /* 2163; 2173; Case map */
+  { 0x002164, 0, { 0x002174 }},                      /* 2164; 2174; Case map */
+  { 0x002165, 0, { 0x002175 }},                      /* 2165; 2175; Case map */
+  { 0x002166, 0, { 0x002176 }},                      /* 2166; 2176; Case map */
+  { 0x002167, 0, { 0x002177 }},                      /* 2167; 2177; Case map */
+  { 0x002168, 0, { 0x002178 }},                      /* 2168; 2178; Case map */
+  { 0x002169, 0, { 0x002179 }},                      /* 2169; 2179; Case map */
+  { 0x00216A, 0, { 0x00217A }},                      /* 216A; 217A; Case map */
+  { 0x00216B, 0, { 0x00217B }},                      /* 216B; 217B; Case map */
+  { 0x00216C, 0, { 0x00217C }},                      /* 216C; 217C; Case map */
+  { 0x00216D, 0, { 0x00217D }},                      /* 216D; 217D; Case map */
+  { 0x00216E, 0, { 0x00217E }},                      /* 216E; 217E; Case map */
+  { 0x00216F, 0, { 0x00217F }},                      /* 216F; 217F; Case map */
+  { 0x0024B6, 0, { 0x0024D0 }},                      /* 24B6; 24D0; Case map */
+  { 0x0024B7, 0, { 0x0024D1 }},                      /* 24B7; 24D1; Case map */
+  { 0x0024B8, 0, { 0x0024D2 }},                      /* 24B8; 24D2; Case map */
+  { 0x0024B9, 0, { 0x0024D3 }},                      /* 24B9; 24D3; Case map */
+  { 0x0024BA, 0, { 0x0024D4 }},                      /* 24BA; 24D4; Case map */
+  { 0x0024BB, 0, { 0x0024D5 }},                      /* 24BB; 24D5; Case map */
+  { 0x0024BC, 0, { 0x0024D6 }},                      /* 24BC; 24D6; Case map */
+  { 0x0024BD, 0, { 0x0024D7 }},                      /* 24BD; 24D7; Case map */
+  { 0x0024BE, 0, { 0x0024D8 }},                      /* 24BE; 24D8; Case map */
+  { 0x0024BF, 0, { 0x0024D9 }},                      /* 24BF; 24D9; Case map */
+  { 0x0024C0, 0, { 0x0024DA }},                      /* 24C0; 24DA; Case map */
+  { 0x0024C1, 0, { 0x0024DB }},                      /* 24C1; 24DB; Case map */
+  { 0x0024C2, 0, { 0x0024DC }},                      /* 24C2; 24DC; Case map */
+  { 0x0024C3, 0, { 0x0024DD }},                      /* 24C3; 24DD; Case map */
+  { 0x0024C4, 0, { 0x0024DE }},                      /* 24C4; 24DE; Case map */
+  { 0x0024C5, 0, { 0x0024DF }},                      /* 24C5; 24DF; Case map */
+  { 0x0024C6, 0, { 0x0024E0 }},                      /* 24C6; 24E0; Case map */
+  { 0x0024C7, 0, { 0x0024E1 }},                      /* 24C7; 24E1; Case map */
+  { 0x0024C8, 0, { 0x0024E2 }},                      /* 24C8; 24E2; Case map */
+  { 0x0024C9, 0, { 0x0024E3 }},                      /* 24C9; 24E3; Case map */
+  { 0x0024CA, 0, { 0x0024E4 }},                      /* 24CA; 24E4; Case map */
+  { 0x0024CB, 0, { 0x0024E5 }},                      /* 24CB; 24E5; Case map */
+  { 0x0024CC, 0, { 0x0024E6 }},                      /* 24CC; 24E6; Case map */
+  { 0x0024CD, 0, { 0x0024E7 }},                      /* 24CD; 24E7; Case map */
+  { 0x0024CE, 0, { 0x0024E8 }},                      /* 24CE; 24E8; Case map */
+  { 0x0024CF, 0, { 0x0024E9 }},                      /* 24CF; 24E9; Case map */
+  { 0x00FB00, 0, { 0x000066,                    /* FB00; 0066 0066; Case map */
+                   0x000066 }},
+  { 0x00FB01, 0, { 0x000066,                    /* FB01; 0066 0069; Case map */
+                   0x000069 }},
+  { 0x00FB02, 0, { 0x000066,                    /* FB02; 0066 006C; Case map */
+                   0x00006C }},
+  { 0x00FB03, 0, { 0x000066,               /* FB03; 0066 0066 0069; Case map */
+                   0x000066, 0x000069 }},
+  { 0x00FB04, 0, { 0x000066,               /* FB04; 0066 0066 006C; Case map */
+                   0x000066, 0x00006C }},
+  { 0x00FB05, 0, { 0x000073,                    /* FB05; 0073 0074; Case map */
+                   0x000074 }},
+  { 0x00FB06, 0, { 0x000073,                    /* FB06; 0073 0074; Case map */
+                   0x000074 }},
+  { 0x00FB13, 0, { 0x000574,                    /* FB13; 0574 0576; Case map */
+                   0x000576 }},
+  { 0x00FB14, 0, { 0x000574,                    /* FB14; 0574 0565; Case map */
+                   0x000565 }},
+  { 0x00FB15, 0, { 0x000574,                    /* FB15; 0574 056B; Case map */
+                   0x00056B }},
+  { 0x00FB16, 0, { 0x00057E,                    /* FB16; 057E 0576; Case map */
+                   0x000576 }},
+  { 0x00FB17, 0, { 0x000574,                    /* FB17; 0574 056D; Case map */
+                   0x00056D }},
+  { 0x00FF21, 0, { 0x00FF41 }},                      /* FF21; FF41; Case map */
+  { 0x00FF22, 0, { 0x00FF42 }},                      /* FF22; FF42; Case map */
+  { 0x00FF23, 0, { 0x00FF43 }},                      /* FF23; FF43; Case map */
+  { 0x00FF24, 0, { 0x00FF44 }},                      /* FF24; FF44; Case map */
+  { 0x00FF25, 0, { 0x00FF45 }},                      /* FF25; FF45; Case map */
+  { 0x00FF26, 0, { 0x00FF46 }},                      /* FF26; FF46; Case map */
+  { 0x00FF27, 0, { 0x00FF47 }},                      /* FF27; FF47; Case map */
+  { 0x00FF28, 0, { 0x00FF48 }},                      /* FF28; FF48; Case map */
+  { 0x00FF29, 0, { 0x00FF49 }},                      /* FF29; FF49; Case map */
+  { 0x00FF2A, 0, { 0x00FF4A }},                      /* FF2A; FF4A; Case map */
+  { 0x00FF2B, 0, { 0x00FF4B }},                      /* FF2B; FF4B; Case map */
+  { 0x00FF2C, 0, { 0x00FF4C }},                      /* FF2C; FF4C; Case map */
+  { 0x00FF2D, 0, { 0x00FF4D }},                      /* FF2D; FF4D; Case map */
+  { 0x00FF2E, 0, { 0x00FF4E }},                      /* FF2E; FF4E; Case map */
+  { 0x00FF2F, 0, { 0x00FF4F }},                      /* FF2F; FF4F; Case map */
+  { 0x00FF30, 0, { 0x00FF50 }},                      /* FF30; FF50; Case map */
+  { 0x00FF31, 0, { 0x00FF51 }},                      /* FF31; FF51; Case map */
+  { 0x00FF32, 0, { 0x00FF52 }},                      /* FF32; FF52; Case map */
+  { 0x00FF33, 0, { 0x00FF53 }},                      /* FF33; FF53; Case map */
+  { 0x00FF34, 0, { 0x00FF54 }},                      /* FF34; FF54; Case map */
+  { 0x00FF35, 0, { 0x00FF55 }},                      /* FF35; FF55; Case map */
+  { 0x00FF36, 0, { 0x00FF56 }},                      /* FF36; FF56; Case map */
+  { 0x00FF37, 0, { 0x00FF57 }},                      /* FF37; FF57; Case map */
+  { 0x00FF38, 0, { 0x00FF58 }},                      /* FF38; FF58; Case map */
+  { 0x00FF39, 0, { 0x00FF59 }},                      /* FF39; FF59; Case map */
+  { 0x00FF3A, 0, { 0x00FF5A }},                      /* FF3A; FF5A; Case map */
+  { 0x010400, 0, { 0x010428 }},                    /* 10400; 10428; Case map */
+  { 0x010401, 0, { 0x010429 }},                    /* 10401; 10429; Case map */
+  { 0x010402, 0, { 0x01042A }},                    /* 10402; 1042A; Case map */
+  { 0x010403, 0, { 0x01042B }},                    /* 10403; 1042B; Case map */
+  { 0x010404, 0, { 0x01042C }},                    /* 10404; 1042C; Case map */
+  { 0x010405, 0, { 0x01042D }},                    /* 10405; 1042D; Case map */
+  { 0x010406, 0, { 0x01042E }},                    /* 10406; 1042E; Case map */
+  { 0x010407, 0, { 0x01042F }},                    /* 10407; 1042F; Case map */
+  { 0x010408, 0, { 0x010430 }},                    /* 10408; 10430; Case map */
+  { 0x010409, 0, { 0x010431 }},                    /* 10409; 10431; Case map */
+  { 0x01040A, 0, { 0x010432 }},                    /* 1040A; 10432; Case map */
+  { 0x01040B, 0, { 0x010433 }},                    /* 1040B; 10433; Case map */
+  { 0x01040C, 0, { 0x010434 }},                    /* 1040C; 10434; Case map */
+  { 0x01040D, 0, { 0x010435 }},                    /* 1040D; 10435; Case map */
+  { 0x01040E, 0, { 0x010436 }},                    /* 1040E; 10436; Case map */
+  { 0x01040F, 0, { 0x010437 }},                    /* 1040F; 10437; Case map */
+  { 0x010410, 0, { 0x010438 }},                    /* 10410; 10438; Case map */
+  { 0x010411, 0, { 0x010439 }},                    /* 10411; 10439; Case map */
+  { 0x010412, 0, { 0x01043A }},                    /* 10412; 1043A; Case map */
+  { 0x010413, 0, { 0x01043B }},                    /* 10413; 1043B; Case map */
+  { 0x010414, 0, { 0x01043C }},                    /* 10414; 1043C; Case map */
+  { 0x010415, 0, { 0x01043D }},                    /* 10415; 1043D; Case map */
+  { 0x010416, 0, { 0x01043E }},                    /* 10416; 1043E; Case map */
+  { 0x010417, 0, { 0x01043F }},                    /* 10417; 1043F; Case map */
+  { 0x010418, 0, { 0x010440 }},                    /* 10418; 10440; Case map */
+  { 0x010419, 0, { 0x010441 }},                    /* 10419; 10441; Case map */
+  { 0x01041A, 0, { 0x010442 }},                    /* 1041A; 10442; Case map */
+  { 0x01041B, 0, { 0x010443 }},                    /* 1041B; 10443; Case map */
+  { 0x01041C, 0, { 0x010444 }},                    /* 1041C; 10444; Case map */
+  { 0x01041D, 0, { 0x010445 }},                    /* 1041D; 10445; Case map */
+  { 0x01041E, 0, { 0x010446 }},                    /* 1041E; 10446; Case map */
+  { 0x01041F, 0, { 0x010447 }},                    /* 1041F; 10447; Case map */
+  { 0x010420, 0, { 0x010448 }},                    /* 10420; 10448; Case map */
+  { 0x010421, 0, { 0x010449 }},                    /* 10421; 10449; Case map */
+  { 0x010422, 0, { 0x01044A }},                    /* 10422; 1044A; Case map */
+  { 0x010423, 0, { 0x01044B }},                    /* 10423; 1044B; Case map */
+  { 0x010424, 0, { 0x01044C }},                    /* 10424; 1044C; Case map */
+  { 0x010425, 0, { 0x01044D }},                    /* 10425; 1044D; Case map */
+  { 0 },
+};
+
+
+/*
+ * FF3A; FF5A; Case map
+ * 10400; 10428; Case map
+10401; 10429; Case map
+10402; 1042A; Case map
+10403; 1042B; Case map
+10404; 1042C; Case map
+10405; 1042D; Case map
+10406; 1042E; Case map
+10407; 1042F; Case map
+10408; 10430; Case map
+10409; 10431; Case map
+1040A; 10432; Case map
+1040B; 10433; Case map
+1040C; 10434; Case map
+1040D; 10435; Case map
+1040E; 10436; Case map
+1040F; 10437; Case map
+10410; 10438; Case map
+10411; 10439; Case map
+10412; 1043A; Case map
+10413; 1043B; Case map
+10414; 1043C; Case map
+10415; 1043D; Case map
+10416; 1043E; Case map
+10417; 1043F; Case map
+10418; 10440; Case map
+10419; 10441; Case map
+1041A; 10442; Case map
+1041B; 10443; Case map
+1041C; 10444; Case map
+1041D; 10445; Case map
+1041E; 10446; Case map
+1041F; 10447; Case map
+10420; 10448; Case map
+10421; 10449; Case map
+10422; 1044A; Case map
+10423; 1044B; Case map
+10424; 1044C; Case map
+10425; 1044D; Case map
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_1_1[] = {
+  { 0x000020           },                                     /* 0020; SPACE */
+  { 0 },
+};
+
+
+/*
+ * FF3A; FF5A; Case map
+ *  * 10400; 10428; Case map
+10401; 10429; Case map
+10402; 1042A; Case map
+10403; 1042B; Case map
+10404; 1042C; Case map
+10405; 1042D; Case map
+10406; 1042E; Case map
+10407; 1042F; Case map
+10408; 10430; Case map
+10409; 10431; Case map
+1040A; 10432; Case map
+1040B; 10433; Case map
+1040C; 10434; Case map
+1040D; 10435; Case map
+1040E; 10436; Case map
+1040F; 10437; Case map
+10410; 10438; Case map
+10411; 10439; Case map
+10412; 1043A; Case map
+10413; 1043B; Case map
+10414; 1043C; Case map
+10415; 1043D; Case map
+10416; 1043E; Case map
+10417; 1043F; Case map
+10418; 10440; Case map
+10419; 10441; Case map
+1041A; 10442; Case map
+1041B; 10443; Case map
+1041C; 10444; Case map
+1041D; 10445; Case map
+1041E; 10446; Case map
+1041F; 10447; Case map
+10420; 10448; Case map
+10421; 10449; Case map
+10422; 1044A; Case map
+10423; 1044B; Case map
+10424; 1044C; Case map
+10425; 1044D; Case map
+
+0020; SPACE
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_1_2[] = {
+  { 0x0000A0           },                            /* 00A0; NO-BREAK SPACE */
+  { 0x001680           },                          /* 1680; OGHAM SPACE MARK */
+  { 0x002000           },                                   /* 2000; EN QUAD */
+  { 0x002001           },                                   /* 2001; EM QUAD */
+  { 0x002002           },                                  /* 2002; EN SPACE */
+  { 0x002003           },                                  /* 2003; EM SPACE */
+  { 0x002004           },                        /* 2004; THREE-PER-EM SPACE */
+  { 0x002005           },                         /* 2005; FOUR-PER-EM SPACE */
+  { 0x002006           },                          /* 2006; SIX-PER-EM SPACE */
+  { 0x002007           },                              /* 2007; FIGURE SPACE */
+  { 0x002008           },                         /* 2008; PUNCTUATION SPACE */
+  { 0x002009           },                                /* 2009; THIN SPACE */
+  { 0x00200A           },                                /* 200A; HAIR SPACE */
+  { 0x00200B           },                          /* 200B; ZERO WIDTH SPACE */
+  { 0x00202F           },                     /* 202F; NARROW NO-BREAK SPACE */
+  { 0x00205F           },                 /* 205F; MEDIUM MATHEMATICAL SPACE */
+  { 0x003000           },                         /* 3000; IDEOGRAPHIC SPACE */
+  { 0 },
+};
+
+
+/*
+ * FF3A; FF5A; Case map
+ *  *  * 10400; 10428; Case map
+10401; 10429; Case map
+10402; 1042A; Case map
+10403; 1042B; Case map
+10404; 1042C; Case map
+10405; 1042D; Case map
+10406; 1042E; Case map
+10407; 1042F; Case map
+10408; 10430; Case map
+10409; 10431; Case map
+1040A; 10432; Case map
+1040B; 10433; Case map
+1040C; 10434; Case map
+1040D; 10435; Case map
+1040E; 10436; Case map
+1040F; 10437; Case map
+10410; 10438; Case map
+10411; 10439; Case map
+10412; 1043A; Case map
+10413; 1043B; Case map
+10414; 1043C; Case map
+10415; 1043D; Case map
+10416; 1043E; Case map
+10417; 1043F; Case map
+10418; 10440; Case map
+10419; 10441; Case map
+1041A; 10442; Case map
+1041B; 10443; Case map
+1041C; 10444; Case map
+1041D; 10445; Case map
+1041E; 10446; Case map
+1041F; 10447; Case map
+10420; 10448; Case map
+10421; 10449; Case map
+10422; 1044A; Case map
+10423; 1044B; Case map
+10424; 1044C; Case map
+10425; 1044D; Case map
+
+0020; SPACE
+
+00A0; NO-BREAK SPACE
+1680; OGHAM SPACE MARK
+2000; EN QUAD
+2001; EM QUAD
+2002; EN SPACE
+2003; EM SPACE
+2004; THREE-PER-EM SPACE
+2005; FOUR-PER-EM SPACE
+2006; SIX-PER-EM SPACE
+2007; FIGURE SPACE
+2008; PUNCTUATION SPACE
+2009; THIN SPACE
+200A; HAIR SPACE
+200B; ZERO WIDTH SPACE
+202F; NARROW NO-BREAK SPACE
+205F; MEDIUM MATHEMATICAL SPACE
+3000; IDEOGRAPHIC SPACE
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_2_1[] = {
+  { 0x000000, 0x00001F },                 /* 0000-001F; [CONTROL CHARACTERS] */
+  { 0x00007F           },                                    /* 007F; DELETE */
+  { 0 },
+};
+
+
+/*
+ * FF3A; FF5A; Case map
+ *  *  *  * 10400; 10428; Case map
+10401; 10429; Case map
+10402; 1042A; Case map
+10403; 1042B; Case map
+10404; 1042C; Case map
+10405; 1042D; Case map
+10406; 1042E; Case map
+10407; 1042F; Case map
+10408; 10430; Case map
+10409; 10431; Case map
+1040A; 10432; Case map
+1040B; 10433; Case map
+1040C; 10434; Case map
+1040D; 10435; Case map
+1040E; 10436; Case map
+1040F; 10437; Case map
+10410; 10438; Case map
+10411; 10439; Case map
+10412; 1043A; Case map
+10413; 1043B; Case map
+10414; 1043C; Case map
+10415; 1043D; Case map
+10416; 1043E; Case map
+10417; 1043F; Case map
+10418; 10440; Case map
+10419; 10441; Case map
+1041A; 10442; Case map
+1041B; 10443; Case map
+1041C; 10444; Case map
+1041D; 10445; Case map
+1041E; 10446; Case map
+1041F; 10447; Case map
+10420; 10448; Case map
+10421; 10449; Case map
+10422; 1044A; Case map
+10423; 1044B; Case map
+10424; 1044C; Case map
+10425; 1044D; Case map
+
+0020; SPACE
+
+00A0; NO-BREAK SPACE
+1680; OGHAM SPACE MARK
+2000; EN QUAD
+2001; EM QUAD
+2002; EN SPACE
+2003; EM SPACE
+2004; THREE-PER-EM SPACE
+2005; FOUR-PER-EM SPACE
+2006; SIX-PER-EM SPACE
+2007; FIGURE SPACE
+2008; PUNCTUATION SPACE
+2009; THIN SPACE
+200A; HAIR SPACE
+200B; ZERO WIDTH SPACE
+202F; NARROW NO-BREAK SPACE
+205F; MEDIUM MATHEMATICAL SPACE
+3000; IDEOGRAPHIC SPACE
+
+0000-001F; [CONTROL CHARACTERS]
+007F; DELETE
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_2_2[] = {
+  { 0x000080, 0x00009F },                 /* 0080-009F; [CONTROL CHARACTERS] */
+  { 0x0006DD           },                        /* 06DD; ARABIC END OF AYAH */
+  { 0x00070F           },                  /* 070F; SYRIAC ABBREVIATION MARK */
+  { 0x00180E           },                 /* 180E; MONGOLIAN VOWEL SEPARATOR */
+  { 0x00200C           },                     /* 200C; ZERO WIDTH NON-JOINER */
+  { 0x00200D           },                         /* 200D; ZERO WIDTH JOINER */
+  { 0x002028           },                            /* 2028; LINE SEPARATOR */
+  { 0x002029           },                       /* 2029; PARAGRAPH SEPARATOR */
+  { 0x002060           },                               /* 2060; WORD JOINER */
+  { 0x002061           },                      /* 2061; FUNCTION APPLICATION */
+  { 0x002062           },                           /* 2062; INVISIBLE TIMES */
+  { 0x002063           },                       /* 2063; INVISIBLE SEPARATOR */
+  { 0x00206A, 0x00206F },                 /* 206A-206F; [CONTROL CHARACTERS] */
+  { 0x00FEFF           },                 /* FEFF; ZERO WIDTH NO-BREAK SPACE */
+  { 0x00FFF9, 0x00FFFC },                 /* FFF9-FFFC; [CONTROL CHARACTERS] */
+  { 0x01D173, 0x01D17A },       /* 1D173-1D17A; [MUSICAL CONTROL CHARACTERS] */
+  { 0 },
+};
+
+
+/*
+ * FFF9-FFFC; [CONTROL CHARACTERS]
+ * 1D173-1D17A; [MUSICAL CONTROL CHARACTERS]
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_3[] = {
+  { 0x00E000, 0x00F8FF },               /* E000-F8FF; [PRIVATE USE, PLANE 0] */
+  { 0x0F0000, 0x0FFFFD },            /* F0000-FFFFD; [PRIVATE USE, PLANE 15] */
+  { 0x100000, 0x10FFFD },          /* 100000-10FFFD; [PRIVATE USE, PLANE 16] */
+  { 0 },
+};
+
+
+/*
+ * F0000-FFFFD; [PRIVATE USE, PLANE 15]
+ * 100000-10FFFD; [PRIVATE USE, PLANE 16]
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_4[] = {
+  { 0x00FDD0, 0x00FDEF },           /* FDD0-FDEF; [NONCHARACTER CODE POINTS] */
+  { 0x00FFFE, 0x00FFFF },           /* FFFE-FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x01FFFE, 0x01FFFF },         /* 1FFFE-1FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x02FFFE, 0x02FFFF },         /* 2FFFE-2FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x03FFFE, 0x03FFFF },         /* 3FFFE-3FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x04FFFE, 0x04FFFF },         /* 4FFFE-4FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x05FFFE, 0x05FFFF },         /* 5FFFE-5FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x06FFFE, 0x06FFFF },         /* 6FFFE-6FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x07FFFE, 0x07FFFF },         /* 7FFFE-7FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x08FFFE, 0x08FFFF },         /* 8FFFE-8FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x09FFFE, 0x09FFFF },         /* 9FFFE-9FFFF; [NONCHARACTER CODE POINTS] */
+  { 0x0AFFFE, 0x0AFFFF },         /* AFFFE-AFFFF; [NONCHARACTER CODE POINTS] */
+  { 0x0BFFFE, 0x0BFFFF },         /* BFFFE-BFFFF; [NONCHARACTER CODE POINTS] */
+  { 0x0CFFFE, 0x0CFFFF },         /* CFFFE-CFFFF; [NONCHARACTER CODE POINTS] */
+  { 0x0DFFFE, 0x0DFFFF },         /* DFFFE-DFFFF; [NONCHARACTER CODE POINTS] */
+  { 0x0EFFFE, 0x0EFFFF },         /* EFFFE-EFFFF; [NONCHARACTER CODE POINTS] */
+  { 0x0FFFFE, 0x0FFFFF },         /* FFFFE-FFFFF; [NONCHARACTER CODE POINTS] */
+  { 0x10FFFE, 0x10FFFF },       /* 10FFFE-10FFFF; [NONCHARACTER CODE POINTS] */
+  { 0 },
+};
+
+
+/*
+ * FFFFE-FFFFF; [NONCHARACTER CODE POINTS]
+ * 10FFFE-10FFFF; [NONCHARACTER CODE POINTS]
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_5[] = {
+  { 0x00D800, 0x00DFFF },                    /* D800-DFFF; [SURROGATE CODES] */
+  { 0 },
+};
+
+
+/*
+ * D800-DFFF; [SURROGATE CODES]
+ * 
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_6[] = {
+  { 0x00FFF9           },             /* FFF9; INTERLINEAR ANNOTATION ANCHOR */
+  { 0x00FFFA           },          /* FFFA; INTERLINEAR ANNOTATION SEPARATOR */
+  { 0x00FFFB           },         /* FFFB; INTERLINEAR ANNOTATION TERMINATOR */
+  { 0x00FFFC           },              /* FFFC; OBJECT REPLACEMENT CHARACTER */
+  { 0x00FFFD           },                     /* FFFD; REPLACEMENT CHARACTER */
+  { 0 },
+};
+
+
+/*
+ * FFFD; REPLACEMENT CHARACTER
+ * 
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_7[] = {
+  { 0x002FF0, 0x002FFB }, /* 2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS] */
+  { 0 },
+};
+
+
+/*
+ * FFFD; REPLACEMENT CHARACTER
+ *  * 
+2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS]
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_8[] = {
+  { 0x000340           },                 /* 0340; COMBINING GRAVE TONE MARK */
+  { 0x000341           },                 /* 0341; COMBINING ACUTE TONE MARK */
+  { 0x00200E           },                        /* 200E; LEFT-TO-RIGHT MARK */
+  { 0x00200F           },                        /* 200F; RIGHT-TO-LEFT MARK */
+  { 0x00202A           },                   /* 202A; LEFT-TO-RIGHT EMBEDDING */
+  { 0x00202B           },                   /* 202B; RIGHT-TO-LEFT EMBEDDING */
+  { 0x00202C           },                /* 202C; POP DIRECTIONAL FORMATTING */
+  { 0x00202D           },                    /* 202D; LEFT-TO-RIGHT OVERRIDE */
+  { 0x00202E           },                    /* 202E; RIGHT-TO-LEFT OVERRIDE */
+  { 0x00206A           },                /* 206A; INHIBIT SYMMETRIC SWAPPING */
+  { 0x00206B           },               /* 206B; ACTIVATE SYMMETRIC SWAPPING */
+  { 0x00206C           },               /* 206C; INHIBIT ARABIC FORM SHAPING */
+  { 0x00206D           },              /* 206D; ACTIVATE ARABIC FORM SHAPING */
+  { 0x00206E           },                     /* 206E; NATIONAL DIGIT SHAPES */
+  { 0x00206F           },                      /* 206F; NOMINAL DIGIT SHAPES */
+  { 0 },
+};
+
+
+/*
+ * FFFD; REPLACEMENT CHARACTER
+ *  *  * 
+2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS]
+
+0340; COMBINING GRAVE TONE MARK
+0341; COMBINING ACUTE TONE MARK
+200E; LEFT-TO-RIGHT MARK
+200F; RIGHT-TO-LEFT MARK
+202A; LEFT-TO-RIGHT EMBEDDING
+202B; RIGHT-TO-LEFT EMBEDDING
+202C; POP DIRECTIONAL FORMATTING
+202D; LEFT-TO-RIGHT OVERRIDE
+202E; RIGHT-TO-LEFT OVERRIDE
+206A; INHIBIT SYMMETRIC SWAPPING
+206B; ACTIVATE SYMMETRIC SWAPPING
+206C; INHIBIT ARABIC FORM SHAPING
+206D; ACTIVATE ARABIC FORM SHAPING
+206E; NATIONAL DIGIT SHAPES
+206F; NOMINAL DIGIT SHAPES
+
+ */
+
+const Stringprep_table_element stringprep_rfc3454_C_9[] = {
+  { 0x0E0001           },                             /* E0001; LANGUAGE TAG */
+  { 0x0E0020, 0x0E007F },               /* E0020-E007F; [TAGGING CHARACTERS] */
+  { 0 },
+};
+
+
+/*
+ * E0020-E007F; [TAGGING CHARACTERS]
+ * 
+ */
+
+const Stringprep_table_element stringprep_rfc3454_D_1[] = {
+  { 0x0005BE           },                                            /* 05BE */
+  { 0x0005C0           },                                            /* 05C0 */
+  { 0x0005C3           },                                            /* 05C3 */
+  { 0x0005D0, 0x0005EA },                                       /* 05D0-05EA */
+  { 0x0005F0, 0x0005F4 },                                       /* 05F0-05F4 */
+  { 0x00061B           },                                            /* 061B */
+  { 0x00061F           },                                            /* 061F */
+  { 0x000621, 0x00063A },                                       /* 0621-063A */
+  { 0x000640, 0x00064A },                                       /* 0640-064A */
+  { 0x00066D, 0x00066F },                                       /* 066D-066F */
+  { 0x000671, 0x0006D5 },                                       /* 0671-06D5 */
+  { 0x0006DD           },                                            /* 06DD */
+  { 0x0006E5, 0x0006E6 },                                       /* 06E5-06E6 */
+  { 0x0006FA, 0x0006FE },                                       /* 06FA-06FE */
+  { 0x000700, 0x00070D },                                       /* 0700-070D */
+  { 0x000710           },                                            /* 0710 */
+  { 0x000712, 0x00072C },                                       /* 0712-072C */
+  { 0x000780, 0x0007A5 },                                       /* 0780-07A5 */
+  { 0x0007B1           },                                            /* 07B1 */
+  { 0x00200F           },                                            /* 200F */
+  { 0x00FB1D           },                                            /* FB1D */
+  { 0x00FB1F, 0x00FB28 },                                       /* FB1F-FB28 */
+  { 0x00FB2A, 0x00FB36 },                                       /* FB2A-FB36 */
+  { 0x00FB38, 0x00FB3C },                                       /* FB38-FB3C */
+  { 0x00FB3E           },                                            /* FB3E */
+  { 0x00FB40, 0x00FB41 },                                       /* FB40-FB41 */
+  { 0x00FB43, 0x00FB44 },                                       /* FB43-FB44 */
+  { 0x00FB46, 0x00FBB1 },                                       /* FB46-FBB1 */
+  { 0x00FBD3, 0x00FD3D },                                       /* FBD3-FD3D */
+  { 0x00FD50, 0x00FD8F },                                       /* FD50-FD8F */
+  { 0x00FD92, 0x00FDC7 },                                       /* FD92-FDC7 */
+  { 0x00FDF0, 0x00FDFC },                                       /* FDF0-FDFC */
+  { 0x00FE70, 0x00FE74 },                                       /* FE70-FE74 */
+  { 0x00FE76, 0x00FEFC },                                       /* FE76-FEFC */
+  { 0 },
+};
+
+
+/*
+ * FE76-FEFC
+ * 
+ */
+
+const Stringprep_table_element stringprep_rfc3454_D_2[] = {
+  { 0x000041, 0x00005A },                                       /* 0041-005A */
+  { 0x000061, 0x00007A },                                       /* 0061-007A */
+  { 0x0000AA           },                                            /* 00AA */
+  { 0x0000B5           },                                            /* 00B5 */
+  { 0x0000BA           },                                            /* 00BA */
+  { 0x0000C0, 0x0000D6 },                                       /* 00C0-00D6 */
+  { 0x0000D8, 0x0000F6 },                                       /* 00D8-00F6 */
+  { 0x0000F8, 0x000220 },                                       /* 00F8-0220 */
+  { 0x000222, 0x000233 },                                       /* 0222-0233 */
+  { 0x000250, 0x0002AD },                                       /* 0250-02AD */
+  { 0x0002B0, 0x0002B8 },                                       /* 02B0-02B8 */
+  { 0x0002BB, 0x0002C1 },                                       /* 02BB-02C1 */
+  { 0x0002D0, 0x0002D1 },                                       /* 02D0-02D1 */
+  { 0x0002E0, 0x0002E4 },                                       /* 02E0-02E4 */
+  { 0x0002EE           },                                            /* 02EE */
+  { 0x00037A           },                                            /* 037A */
+  { 0x000386           },                                            /* 0386 */
+  { 0x000388, 0x00038A },                                       /* 0388-038A */
+  { 0x00038C           },                                            /* 038C */
+  { 0x00038E, 0x0003A1 },                                       /* 038E-03A1 */
+  { 0x0003A3, 0x0003CE },                                       /* 03A3-03CE */
+  { 0x0003D0, 0x0003F5 },                                       /* 03D0-03F5 */
+  { 0x000400, 0x000482 },                                       /* 0400-0482 */
+  { 0x00048A, 0x0004CE },                                       /* 048A-04CE */
+  { 0x0004D0, 0x0004F5 },                                       /* 04D0-04F5 */
+  { 0x0004F8, 0x0004F9 },                                       /* 04F8-04F9 */
+  { 0x000500, 0x00050F },                                       /* 0500-050F */
+  { 0x000531, 0x000556 },                                       /* 0531-0556 */
+  { 0x000559, 0x00055F },                                       /* 0559-055F */
+  { 0x000561, 0x000587 },                                       /* 0561-0587 */
+  { 0x000589           },                                            /* 0589 */
+  { 0x000903           },                                            /* 0903 */
+  { 0x000905, 0x000939 },                                       /* 0905-0939 */
+  { 0x00093D, 0x000940 },                                       /* 093D-0940 */
+  { 0x000949, 0x00094C },                                       /* 0949-094C */
+  { 0x000950           },                                            /* 0950 */
+  { 0x000958, 0x000961 },                                       /* 0958-0961 */
+  { 0x000964, 0x000970 },                                       /* 0964-0970 */
+  { 0x000982, 0x000983 },                                       /* 0982-0983 */
+  { 0x000985, 0x00098C },                                       /* 0985-098C */
+  { 0x00098F, 0x000990 },                                       /* 098F-0990 */
+  { 0x000993, 0x0009A8 },                                       /* 0993-09A8 */
+  { 0x0009AA, 0x0009B0 },                                       /* 09AA-09B0 */
+  { 0x0009B2           },                                            /* 09B2 */
+  { 0x0009B6, 0x0009B9 },                                       /* 09B6-09B9 */
+  { 0x0009BE, 0x0009C0 },                                       /* 09BE-09C0 */
+  { 0x0009C7, 0x0009C8 },                                       /* 09C7-09C8 */
+  { 0x0009CB, 0x0009CC },                                       /* 09CB-09CC */
+  { 0x0009D7           },                                            /* 09D7 */
+  { 0x0009DC, 0x0009DD },                                       /* 09DC-09DD */
+  { 0x0009DF, 0x0009E1 },                                       /* 09DF-09E1 */
+  { 0x0009E6, 0x0009F1 },                                       /* 09E6-09F1 */
+  { 0x0009F4, 0x0009FA },                                       /* 09F4-09FA */
+  { 0x000A05, 0x000A0A },                                       /* 0A05-0A0A */
+  { 0x000A0F, 0x000A10 },                                       /* 0A0F-0A10 */
+  { 0x000A13, 0x000A28 },                                       /* 0A13-0A28 */
+  { 0x000A2A, 0x000A30 },                                       /* 0A2A-0A30 */
+  { 0x000A32, 0x000A33 },                                       /* 0A32-0A33 */
+  { 0x000A35, 0x000A36 },                                       /* 0A35-0A36 */
+  { 0x000A38, 0x000A39 },                                       /* 0A38-0A39 */
+  { 0x000A3E, 0x000A40 },                                       /* 0A3E-0A40 */
+  { 0x000A59, 0x000A5C },                                       /* 0A59-0A5C */
+  { 0x000A5E           },                                            /* 0A5E */
+  { 0x000A66, 0x000A6F },                                       /* 0A66-0A6F */
+  { 0x000A72, 0x000A74 },                                       /* 0A72-0A74 */
+  { 0x000A83           },                                            /* 0A83 */
+  { 0x000A85, 0x000A8B },                                       /* 0A85-0A8B */
+  { 0x000A8D           },                                            /* 0A8D */
+  { 0x000A8F, 0x000A91 },                                       /* 0A8F-0A91 */
+  { 0x000A93, 0x000AA8 },                                       /* 0A93-0AA8 */
+  { 0x000AAA, 0x000AB0 },                                       /* 0AAA-0AB0 */
+  { 0x000AB2, 0x000AB3 },                                       /* 0AB2-0AB3 */
+  { 0x000AB5, 0x000AB9 },                                       /* 0AB5-0AB9 */
+  { 0x000ABD, 0x000AC0 },                                       /* 0ABD-0AC0 */
+  { 0x000AC9           },                                            /* 0AC9 */
+  { 0x000ACB, 0x000ACC },                                       /* 0ACB-0ACC */
+  { 0x000AD0           },                                            /* 0AD0 */
+  { 0x000AE0           },                                            /* 0AE0 */
+  { 0x000AE6, 0x000AEF },                                       /* 0AE6-0AEF */
+  { 0x000B02, 0x000B03 },                                       /* 0B02-0B03 */
+  { 0x000B05, 0x000B0C },                                       /* 0B05-0B0C */
+  { 0x000B0F, 0x000B10 },                                       /* 0B0F-0B10 */
+  { 0x000B13, 0x000B28 },                                       /* 0B13-0B28 */
+  { 0x000B2A, 0x000B30 },                                       /* 0B2A-0B30 */
+  { 0x000B32, 0x000B33 },                                       /* 0B32-0B33 */
+  { 0x000B36, 0x000B39 },                                       /* 0B36-0B39 */
+  { 0x000B3D, 0x000B3E },                                       /* 0B3D-0B3E */
+  { 0x000B40           },                                            /* 0B40 */
+  { 0x000B47, 0x000B48 },                                       /* 0B47-0B48 */
+  { 0x000B4B, 0x000B4C },                                       /* 0B4B-0B4C */
+  { 0x000B57           },                                            /* 0B57 */
+  { 0x000B5C, 0x000B5D },                                       /* 0B5C-0B5D */
+  { 0x000B5F, 0x000B61 },                                       /* 0B5F-0B61 */
+  { 0x000B66, 0x000B70 },                                       /* 0B66-0B70 */
+  { 0x000B83           },                                            /* 0B83 */
+  { 0x000B85, 0x000B8A },                                       /* 0B85-0B8A */
+  { 0x000B8E, 0x000B90 },                                       /* 0B8E-0B90 */
+  { 0x000B92, 0x000B95 },                                       /* 0B92-0B95 */
+  { 0x000B99, 0x000B9A },                                       /* 0B99-0B9A */
+  { 0x000B9C           },                                            /* 0B9C */
+  { 0x000B9E, 0x000B9F },                                       /* 0B9E-0B9F */
+  { 0x000BA3, 0x000BA4 },                                       /* 0BA3-0BA4 */
+  { 0x000BA8, 0x000BAA },                                       /* 0BA8-0BAA */
+  { 0x000BAE, 0x000BB5 },                                       /* 0BAE-0BB5 */
+  { 0x000BB7, 0x000BB9 },                                       /* 0BB7-0BB9 */
+  { 0x000BBE, 0x000BBF },                                       /* 0BBE-0BBF */
+  { 0x000BC1, 0x000BC2 },                                       /* 0BC1-0BC2 */
+  { 0x000BC6, 0x000BC8 },                                       /* 0BC6-0BC8 */
+  { 0x000BCA, 0x000BCC },                                       /* 0BCA-0BCC */
+  { 0x000BD7           },                                            /* 0BD7 */
+  { 0x000BE7, 0x000BF2 },                                       /* 0BE7-0BF2 */
+  { 0x000C01, 0x000C03 },                                       /* 0C01-0C03 */
+  { 0x000C05, 0x000C0C },                                       /* 0C05-0C0C */
+  { 0x000C0E, 0x000C10 },                                       /* 0C0E-0C10 */
+  { 0x000C12, 0x000C28 },                                       /* 0C12-0C28 */
+  { 0x000C2A, 0x000C33 },                                       /* 0C2A-0C33 */
+  { 0x000C35, 0x000C39 },                                       /* 0C35-0C39 */
+  { 0x000C41, 0x000C44 },                                       /* 0C41-0C44 */
+  { 0x000C60, 0x000C61 },                                       /* 0C60-0C61 */
+  { 0x000C66, 0x000C6F },                                       /* 0C66-0C6F */
+  { 0x000C82, 0x000C83 },                                       /* 0C82-0C83 */
+  { 0x000C85, 0x000C8C },                                       /* 0C85-0C8C */
+  { 0x000C8E, 0x000C90 },                                       /* 0C8E-0C90 */
+  { 0x000C92, 0x000CA8 },                                       /* 0C92-0CA8 */
+  { 0x000CAA, 0x000CB3 },                                       /* 0CAA-0CB3 */
+  { 0x000CB5, 0x000CB9 },                                       /* 0CB5-0CB9 */
+  { 0x000CBE           },                                            /* 0CBE */
+  { 0x000CC0, 0x000CC4 },                                       /* 0CC0-0CC4 */
+  { 0x000CC7, 0x000CC8 },                                       /* 0CC7-0CC8 */
+  { 0x000CCA, 0x000CCB },                                       /* 0CCA-0CCB */
+  { 0x000CD5, 0x000CD6 },                                       /* 0CD5-0CD6 */
+  { 0x000CDE           },                                            /* 0CDE */
+  { 0x000CE0, 0x000CE1 },                                       /* 0CE0-0CE1 */
+  { 0x000CE6, 0x000CEF },                                       /* 0CE6-0CEF */
+  { 0x000D02, 0x000D03 },                                       /* 0D02-0D03 */
+  { 0x000D05, 0x000D0C },                                       /* 0D05-0D0C */
+  { 0x000D0E, 0x000D10 },                                       /* 0D0E-0D10 */
+  { 0x000D12, 0x000D28 },                                       /* 0D12-0D28 */
+  { 0x000D2A, 0x000D39 },                                       /* 0D2A-0D39 */
+  { 0x000D3E, 0x000D40 },                                       /* 0D3E-0D40 */
+  { 0x000D46, 0x000D48 },                                       /* 0D46-0D48 */
+  { 0x000D4A, 0x000D4C },                                       /* 0D4A-0D4C */
+  { 0x000D57           },                                            /* 0D57 */
+  { 0x000D60, 0x000D61 },                                       /* 0D60-0D61 */
+  { 0x000D66, 0x000D6F },                                       /* 0D66-0D6F */
+  { 0x000D82, 0x000D83 },                                       /* 0D82-0D83 */
+  { 0x000D85, 0x000D96 },                                       /* 0D85-0D96 */
+  { 0x000D9A, 0x000DB1 },                                       /* 0D9A-0DB1 */
+  { 0x000DB3, 0x000DBB },                                       /* 0DB3-0DBB */
+  { 0x000DBD           },                                            /* 0DBD */
+  { 0x000DC0, 0x000DC6 },                                       /* 0DC0-0DC6 */
+  { 0x000DCF, 0x000DD1 },                                       /* 0DCF-0DD1 */
+  { 0x000DD8, 0x000DDF },                                       /* 0DD8-0DDF */
+  { 0x000DF2, 0x000DF4 },                                       /* 0DF2-0DF4 */
+  { 0x000E01, 0x000E30 },                                       /* 0E01-0E30 */
+  { 0x000E32, 0x000E33 },                                       /* 0E32-0E33 */
+  { 0x000E40, 0x000E46 },                                       /* 0E40-0E46 */
+  { 0x000E4F, 0x000E5B },                                       /* 0E4F-0E5B */
+  { 0x000E81, 0x000E82 },                                       /* 0E81-0E82 */
+  { 0x000E84           },                                            /* 0E84 */
+  { 0x000E87, 0x000E88 },                                       /* 0E87-0E88 */
+  { 0x000E8A           },                                            /* 0E8A */
+  { 0x000E8D           },                                            /* 0E8D */
+  { 0x000E94, 0x000E97 },                                       /* 0E94-0E97 */
+  { 0x000E99, 0x000E9F },                                       /* 0E99-0E9F */
+  { 0x000EA1, 0x000EA3 },                                       /* 0EA1-0EA3 */
+  { 0x000EA5           },                                            /* 0EA5 */
+  { 0x000EA7           },                                            /* 0EA7 */
+  { 0x000EAA, 0x000EAB },                                       /* 0EAA-0EAB */
+  { 0x000EAD, 0x000EB0 },                                       /* 0EAD-0EB0 */
+  { 0x000EB2, 0x000EB3 },                                       /* 0EB2-0EB3 */
+  { 0x000EBD           },                                            /* 0EBD */
+  { 0x000EC0, 0x000EC4 },                                       /* 0EC0-0EC4 */
+  { 0x000EC6           },                                            /* 0EC6 */
+  { 0x000ED0, 0x000ED9 },                                       /* 0ED0-0ED9 */
+  { 0x000EDC, 0x000EDD },                                       /* 0EDC-0EDD */
+  { 0x000F00, 0x000F17 },                                       /* 0F00-0F17 */
+  { 0x000F1A, 0x000F34 },                                       /* 0F1A-0F34 */
+  { 0x000F36           },                                            /* 0F36 */
+  { 0x000F38           },                                            /* 0F38 */
+  { 0x000F3E, 0x000F47 },                                       /* 0F3E-0F47 */
+  { 0x000F49, 0x000F6A },                                       /* 0F49-0F6A */
+  { 0x000F7F           },                                            /* 0F7F */
+  { 0x000F85           },                                            /* 0F85 */
+  { 0x000F88, 0x000F8B },                                       /* 0F88-0F8B */
+  { 0x000FBE, 0x000FC5 },                                       /* 0FBE-0FC5 */
+  { 0x000FC7, 0x000FCC },                                       /* 0FC7-0FCC */
+  { 0x000FCF           },                                            /* 0FCF */
+  { 0x001000, 0x001021 },                                       /* 1000-1021 */
+  { 0x001023, 0x001027 },                                       /* 1023-1027 */
+  { 0x001029, 0x00102A },                                       /* 1029-102A */
+  { 0x00102C           },                                            /* 102C */
+  { 0x001031           },                                            /* 1031 */
+  { 0x001038           },                                            /* 1038 */
+  { 0x001040, 0x001057 },                                       /* 1040-1057 */
+  { 0x0010A0, 0x0010C5 },                                       /* 10A0-10C5 */
+  { 0x0010D0, 0x0010F8 },                                       /* 10D0-10F8 */
+  { 0x0010FB           },                                            /* 10FB */
+  { 0x001100, 0x001159 },                                       /* 1100-1159 */
+  { 0x00115F, 0x0011A2 },                                       /* 115F-11A2 */
+  { 0x0011A8, 0x0011F9 },                                       /* 11A8-11F9 */
+  { 0x001200, 0x001206 },                                       /* 1200-1206 */
+  { 0x001208, 0x001246 },                                       /* 1208-1246 */
+  { 0x001248           },                                            /* 1248 */
+  { 0x00124A, 0x00124D },                                       /* 124A-124D */
+  { 0x001250, 0x001256 },                                       /* 1250-1256 */
+  { 0x001258           },                                            /* 1258 */
+  { 0x00125A, 0x00125D },                                       /* 125A-125D */
+  { 0x001260, 0x001286 },                                       /* 1260-1286 */
+  { 0x001288           },                                            /* 1288 */
+  { 0x00128A, 0x00128D },                                       /* 128A-128D */
+  { 0x001290, 0x0012AE },                                       /* 1290-12AE */
+  { 0x0012B0           },                                            /* 12B0 */
+  { 0x0012B2, 0x0012B5 },                                       /* 12B2-12B5 */
+  { 0x0012B8, 0x0012BE },                                       /* 12B8-12BE */
+  { 0x0012C0           },                                            /* 12C0 */
+  { 0x0012C2, 0x0012C5 },                                       /* 12C2-12C5 */
+  { 0x0012C8, 0x0012CE },                                       /* 12C8-12CE */
+  { 0x0012D0, 0x0012D6 },                                       /* 12D0-12D6 */
+  { 0x0012D8, 0x0012EE },                                       /* 12D8-12EE */
+  { 0x0012F0, 0x00130E },                                       /* 12F0-130E */
+  { 0x001310           },                                            /* 1310 */
+  { 0x001312, 0x001315 },                                       /* 1312-1315 */
+  { 0x001318, 0x00131E },                                       /* 1318-131E */
+  { 0x001320, 0x001346 },                                       /* 1320-1346 */
+  { 0x001348, 0x00135A },                                       /* 1348-135A */
+  { 0x001361, 0x00137C },                                       /* 1361-137C */
+  { 0x0013A0, 0x0013F4 },                                       /* 13A0-13F4 */
+  { 0x001401, 0x001676 },                                       /* 1401-1676 */
+  { 0x001681, 0x00169A },                                       /* 1681-169A */
+  { 0x0016A0, 0x0016F0 },                                       /* 16A0-16F0 */
+  { 0x001700, 0x00170C },                                       /* 1700-170C */
+  { 0x00170E, 0x001711 },                                       /* 170E-1711 */
+  { 0x001720, 0x001731 },                                       /* 1720-1731 */
+  { 0x001735, 0x001736 },                                       /* 1735-1736 */
+  { 0x001740, 0x001751 },                                       /* 1740-1751 */
+  { 0x001760, 0x00176C },                                       /* 1760-176C */
+  { 0x00176E, 0x001770 },                                       /* 176E-1770 */
+  { 0x001780, 0x0017B6 },                                       /* 1780-17B6 */
+  { 0x0017BE, 0x0017C5 },                                       /* 17BE-17C5 */
+  { 0x0017C7, 0x0017C8 },                                       /* 17C7-17C8 */
+  { 0x0017D4, 0x0017DA },                                       /* 17D4-17DA */
+  { 0x0017DC           },                                            /* 17DC */
+  { 0x0017E0, 0x0017E9 },                                       /* 17E0-17E9 */
+  { 0x001810, 0x001819 },                                       /* 1810-1819 */
+  { 0x001820, 0x001877 },                                       /* 1820-1877 */
+  { 0x001880, 0x0018A8 },                                       /* 1880-18A8 */
+  { 0x001E00, 0x001E9B },                                       /* 1E00-1E9B */
+  { 0x001EA0, 0x001EF9 },                                       /* 1EA0-1EF9 */
+  { 0x001F00, 0x001F15 },                                       /* 1F00-1F15 */
+  { 0x001F18, 0x001F1D },                                       /* 1F18-1F1D */
+  { 0x001F20, 0x001F45 },                                       /* 1F20-1F45 */
+  { 0x001F48, 0x001F4D },                                       /* 1F48-1F4D */
+  { 0x001F50, 0x001F57 },                                       /* 1F50-1F57 */
+  { 0x001F59           },                                            /* 1F59 */
+  { 0x001F5B           },                                            /* 1F5B */
+  { 0x001F5D           },                                            /* 1F5D */
+  { 0x001F5F, 0x001F7D },                                       /* 1F5F-1F7D */
+  { 0x001F80, 0x001FB4 },                                       /* 1F80-1FB4 */
+  { 0x001FB6, 0x001FBC },                                       /* 1FB6-1FBC */
+  { 0x001FBE           },                                            /* 1FBE */
+  { 0x001FC2, 0x001FC4 },                                       /* 1FC2-1FC4 */
+  { 0x001FC6, 0x001FCC },                                       /* 1FC6-1FCC */
+  { 0x001FD0, 0x001FD3 },                                       /* 1FD0-1FD3 */
+  { 0x001FD6, 0x001FDB },                                       /* 1FD6-1FDB */
+  { 0x001FE0, 0x001FEC },                                       /* 1FE0-1FEC */
+  { 0x001FF2, 0x001FF4 },                                       /* 1FF2-1FF4 */
+  { 0x001FF6, 0x001FFC },                                       /* 1FF6-1FFC */
+  { 0x00200E           },                                            /* 200E */
+  { 0x002071           },                                            /* 2071 */
+  { 0x00207F           },                                            /* 207F */
+  { 0x002102           },                                            /* 2102 */
+  { 0x002107           },                                            /* 2107 */
+  { 0x00210A, 0x002113 },                                       /* 210A-2113 */
+  { 0x002115           },                                            /* 2115 */
+  { 0x002119, 0x00211D },                                       /* 2119-211D */
+  { 0x002124           },                                            /* 2124 */
+  { 0x002126           },                                            /* 2126 */
+  { 0x002128           },                                            /* 2128 */
+  { 0x00212A, 0x00212D },                                       /* 212A-212D */
+  { 0x00212F, 0x002131 },                                       /* 212F-2131 */
+  { 0x002133, 0x002139 },                                       /* 2133-2139 */
+  { 0x00213D, 0x00213F },                                       /* 213D-213F */
+  { 0x002145, 0x002149 },                                       /* 2145-2149 */
+  { 0x002160, 0x002183 },                                       /* 2160-2183 */
+  { 0x002336, 0x00237A },                                       /* 2336-237A */
+  { 0x002395           },                                            /* 2395 */
+  { 0x00249C, 0x0024E9 },                                       /* 249C-24E9 */
+  { 0x003005, 0x003007 },                                       /* 3005-3007 */
+  { 0x003021, 0x003029 },                                       /* 3021-3029 */
+  { 0x003031, 0x003035 },                                       /* 3031-3035 */
+  { 0x003038, 0x00303C },                                       /* 3038-303C */
+  { 0x003041, 0x003096 },                                       /* 3041-3096 */
+  { 0x00309D, 0x00309F },                                       /* 309D-309F */
+  { 0x0030A1, 0x0030FA },                                       /* 30A1-30FA */
+  { 0x0030FC, 0x0030FF },                                       /* 30FC-30FF */
+  { 0x003105, 0x00312C },                                       /* 3105-312C */
+  { 0x003131, 0x00318E },                                       /* 3131-318E */
+  { 0x003190, 0x0031B7 },                                       /* 3190-31B7 */
+  { 0x0031F0, 0x00321C },                                       /* 31F0-321C */
+  { 0x003220, 0x003243 },                                       /* 3220-3243 */
+  { 0x003260, 0x00327B },                                       /* 3260-327B */
+  { 0x00327F, 0x0032B0 },                                       /* 327F-32B0 */
+  { 0x0032C0, 0x0032CB },                                       /* 32C0-32CB */
+  { 0x0032D0, 0x0032FE },                                       /* 32D0-32FE */
+  { 0x003300, 0x003376 },                                       /* 3300-3376 */
+  { 0x00337B, 0x0033DD },                                       /* 337B-33DD */
+  { 0x0033E0, 0x0033FE },                                       /* 33E0-33FE */
+  { 0x003400, 0x004DB5 },                                       /* 3400-4DB5 */
+  { 0x004E00, 0x009FA5 },                                       /* 4E00-9FA5 */
+  { 0x00A000, 0x00A48C },                                       /* A000-A48C */
+  { 0x00AC00, 0x00D7A3 },                                       /* AC00-D7A3 */
+  { 0x00D800, 0x00FA2D },                                       /* D800-FA2D */
+  { 0x00FA30, 0x00FA6A },                                       /* FA30-FA6A */
+  { 0x00FB00, 0x00FB06 },                                       /* FB00-FB06 */
+  { 0x00FB13, 0x00FB17 },                                       /* FB13-FB17 */
+  { 0x00FF21, 0x00FF3A },                                       /* FF21-FF3A */
+  { 0x00FF41, 0x00FF5A },                                       /* FF41-FF5A */
+  { 0x00FF66, 0x00FFBE },                                       /* FF66-FFBE */
+  { 0x00FFC2, 0x00FFC7 },                                       /* FFC2-FFC7 */
+  { 0x00FFCA, 0x00FFCF },                                       /* FFCA-FFCF */
+  { 0x00FFD2, 0x00FFD7 },                                       /* FFD2-FFD7 */
+  { 0x00FFDA, 0x00FFDC },                                       /* FFDA-FFDC */
+  { 0x010300, 0x01031E },                                     /* 10300-1031E */
+  { 0x010320, 0x010323 },                                     /* 10320-10323 */
+  { 0x010330, 0x01034A },                                     /* 10330-1034A */
+  { 0x010400, 0x010425 },                                     /* 10400-10425 */
+  { 0x010428, 0x01044D },                                     /* 10428-1044D */
+  { 0x01D000, 0x01D0F5 },                                     /* 1D000-1D0F5 */
+  { 0x01D100, 0x01D126 },                                     /* 1D100-1D126 */
+  { 0x01D12A, 0x01D166 },                                     /* 1D12A-1D166 */
+  { 0x01D16A, 0x01D172 },                                     /* 1D16A-1D172 */
+  { 0x01D183, 0x01D184 },                                     /* 1D183-1D184 */
+  { 0x01D18C, 0x01D1A9 },                                     /* 1D18C-1D1A9 */
+  { 0x01D1AE, 0x01D1DD },                                     /* 1D1AE-1D1DD */
+  { 0x01D400, 0x01D454 },                                     /* 1D400-1D454 */
+  { 0x01D456, 0x01D49C },                                     /* 1D456-1D49C */
+  { 0x01D49E, 0x01D49F },                                     /* 1D49E-1D49F */
+  { 0x01D4A2           },                                           /* 1D4A2 */
+  { 0x01D4A5, 0x01D4A6 },                                     /* 1D4A5-1D4A6 */
+  { 0x01D4A9, 0x01D4AC },                                     /* 1D4A9-1D4AC */
+  { 0x01D4AE, 0x01D4B9 },                                     /* 1D4AE-1D4B9 */
+  { 0x01D4BB           },                                           /* 1D4BB */
+  { 0x01D4BD, 0x01D4C0 },                                     /* 1D4BD-1D4C0 */
+  { 0x01D4C2, 0x01D4C3 },                                     /* 1D4C2-1D4C3 */
+  { 0x01D4C5, 0x01D505 },                                     /* 1D4C5-1D505 */
+  { 0x01D507, 0x01D50A },                                     /* 1D507-1D50A */
+  { 0x01D50D, 0x01D514 },                                     /* 1D50D-1D514 */
+  { 0x01D516, 0x01D51C },                                     /* 1D516-1D51C */
+  { 0x01D51E, 0x01D539 },                                     /* 1D51E-1D539 */
+  { 0x01D53B, 0x01D53E },                                     /* 1D53B-1D53E */
+  { 0x01D540, 0x01D544 },                                     /* 1D540-1D544 */
+  { 0x01D546           },                                           /* 1D546 */
+  { 0x01D54A, 0x01D550 },                                     /* 1D54A-1D550 */
+  { 0x01D552, 0x01D6A3 },                                     /* 1D552-1D6A3 */
+  { 0x01D6A8, 0x01D7C9 },                                     /* 1D6A8-1D7C9 */
+  { 0x020000, 0x02A6D6 },                                     /* 20000-2A6D6 */
+  { 0x02F800, 0x02FA1D },                                     /* 2F800-2FA1D */
+  { 0x0F0000, 0x0FFFFD },                                     /* F0000-FFFFD */
+  { 0x100000, 0x10FFFD },                                   /* 100000-10FFFD */
+  { 0 },
+};
+
diff --git a/lib/strerror-idna.c b/lib/strerror-idna.c
new file mode 100644 (file)
index 0000000..a54b41f
--- /dev/null
@@ -0,0 +1,127 @@
+/* strerror-idna.c --- Convert IDNA errors into text.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "idna.h"
+
+#include "gettext.h"
+#define _(String) dgettext (PACKAGE, String)
+
+/**
+ * idna_strerror - return string describing idna error code
+ * @rc: an #Idna_rc return code.
+ *
+ * Convert a return code integer to a text string.  This string can be
+ * used to output a diagnostic message to the user.
+ *
+ * IDNA_SUCCESS: Successful operation.  This value is guaranteed to
+ *   always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * IDNA_STRINGPREP_ERROR:  Error during string preparation.
+ * IDNA_PUNYCODE_ERROR: Error during punycode operation.
+ * IDNA_CONTAINS_NON_LDH: For IDNA_USE_STD3_ASCII_RULES, indicate that
+ *   the string contains non-LDH ASCII characters.
+ * IDNA_CONTAINS_MINUS: For IDNA_USE_STD3_ASCII_RULES, indicate that
+ *   the string contains a leading or trailing hyphen-minus (U+002D).
+ * IDNA_INVALID_LENGTH: The final output string is not within the
+ *   (inclusive) range 1 to 63 characters.
+ * IDNA_NO_ACE_PREFIX: The string does not contain the ACE prefix
+ *   (for ToUnicode).
+ * IDNA_ROUNDTRIP_VERIFY_ERROR: The ToASCII operation on output
+ *   string does not equal the input.
+ * IDNA_CONTAINS_ACE_PREFIX: The input contains the ACE prefix (for
+ *   ToASCII).
+ * IDNA_ICONV_ERROR: Could not convert string in locale encoding.
+ * IDNA_MALLOC_ERROR: Could not allocate buffer (this is typically a
+ *   fatal error).
+ * IDNA_DLOPEN_ERROR: Could not dlopen the libcidn DSO (only used
+ *   internally in libc).
+ *
+ * Return value: Returns a pointer to a statically allocated string
+ * containing a description of the error with the return code @rc.
+ **/
+const char *
+idna_strerror (Idna_rc rc)
+{
+  const char *p;
+
+  bindtextdomain (PACKAGE, LOCALEDIR);
+
+  switch (rc)
+    {
+    case IDNA_SUCCESS:
+      p = _("Success");
+      break;
+
+    case IDNA_STRINGPREP_ERROR:
+      p = _("String preparation failed");
+      break;
+
+    case IDNA_PUNYCODE_ERROR:
+      p = _("Punycode failed");
+      break;
+
+    case IDNA_CONTAINS_NON_LDH:
+      p = _("Non-digit/letter/hyphen in input");
+      break;
+
+    case IDNA_CONTAINS_MINUS:
+      p = _("Forbidden leading or trailing minus sign (`-')");
+      break;
+
+    case IDNA_INVALID_LENGTH:
+      p = _("Output would be too large or too small");
+      break;
+
+    case IDNA_NO_ACE_PREFIX:
+      p = _("Input does not start with ACE prefix (`xn--')");
+      break;
+
+    case IDNA_ROUNDTRIP_VERIFY_ERROR:
+      p = _("String not idempotent under ToASCII");
+      break;
+
+    case IDNA_CONTAINS_ACE_PREFIX:
+      p = _("Input already contain ACE prefix (`xn--')");
+      break;
+
+    case IDNA_ICONV_ERROR:
+      p = _("System iconv failed");
+      break;
+
+    case IDNA_MALLOC_ERROR:
+      p = _("Cannot allocate memory");
+      break;
+
+    case IDNA_DLOPEN_ERROR:
+      p = _("System dlopen failed");
+      break;
+
+    default:
+      p = _("Unknown error");
+      break;
+    }
+
+  return p;
+}
diff --git a/lib/strerror-pr29.c b/lib/strerror-pr29.c
new file mode 100644 (file)
index 0000000..d977572
--- /dev/null
@@ -0,0 +1,75 @@
+/* strerror-pr29.c --- Convert PR29 errors into text.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "pr29.h"
+
+#include "gettext.h"
+#define _(String) dgettext (PACKAGE, String)
+
+/**
+ * pr29_strerror - return string describing pr29 error code
+ * @rc: an #Pr29_rc return code.
+ *
+ * Convert a return code integer to a text string.  This string can be
+ * used to output a diagnostic message to the user.
+ *
+ * PR29_SUCCESS: Successful operation.  This value is guaranteed to
+ *   always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * PR29_PROBLEM: A problem sequence was encountered.
+ * PR29_STRINGPREP_ERROR: The character set conversion failed (only
+ *   for pr29_8() and pr29_8z()).
+ *
+ * Return value: Returns a pointer to a statically allocated string
+ *   containing a description of the error with the return code @rc.
+ **/
+const char *
+pr29_strerror (Pr29_rc rc)
+{
+  const char *p;
+
+  bindtextdomain (PACKAGE, LOCALEDIR);
+
+  switch (rc)
+    {
+    case PR29_SUCCESS:
+      p = _("Success");
+      break;
+
+    case PR29_PROBLEM:
+      p = _("String not idempotent under Unicode NFKC normalization");
+      break;
+
+    case PR29_STRINGPREP_ERROR:
+      p = _("String preparation failed");
+      break;
+
+    default:
+      p = _("Unknown error");
+      break;
+    }
+
+  return p;
+}
diff --git a/lib/strerror-punycode.c b/lib/strerror-punycode.c
new file mode 100644 (file)
index 0000000..df5d25f
--- /dev/null
@@ -0,0 +1,79 @@
+/* strerror-punycode.c --- Convert punycode errors into text.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "punycode.h"
+
+#include "gettext.h"
+#define _(String) dgettext (PACKAGE, String)
+
+/**
+ * punycode_strerror - return string describing punycode error code
+ * @rc: an #Punycode_status return code.
+ *
+ * Convert a return code integer to a text string.  This string can be
+ * used to output a diagnostic message to the user.
+ *
+ * PUNYCODE_SUCCESS: Successful operation.  This value is guaranteed
+ *   to always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * PUNYCODE_BAD_INPUT: Input is invalid.
+ * PUNYCODE_BIG_OUTPUT: Output would exceed the space provided.
+ * PUNYCODE_OVERFLOW: Input needs wider integers to process.
+ *
+ * Return value: Returns a pointer to a statically allocated string
+ * containing a description of the error with the return code @rc.
+ **/
+const char *
+punycode_strerror (Punycode_status rc)
+{
+  const char *p;
+
+  bindtextdomain (PACKAGE, LOCALEDIR);
+
+  switch (rc)
+    {
+    case PUNYCODE_SUCCESS:
+      p = _("Success");
+      break;
+
+    case PUNYCODE_BAD_INPUT:
+      p = _("Invalid input");
+      break;
+
+    case PUNYCODE_BIG_OUTPUT:
+      p = _("Output would exceed the buffer space provided");
+      break;
+
+    case PUNYCODE_OVERFLOW:
+      p = _("String size limit exceeded");
+      break;
+
+    default:
+      p = _("Unknown error");
+      break;
+    }
+
+  return p;
+}
diff --git a/lib/strerror-stringprep.c b/lib/strerror-stringprep.c
new file mode 100644 (file)
index 0000000..d0b3a58
--- /dev/null
@@ -0,0 +1,131 @@
+/* strerror-stringprep.c --- Convert stringprep errors into text.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "stringprep.h"
+
+#include "gettext.h"
+#define _(String) dgettext (PACKAGE, String)
+
+/**
+ * stringprep_strerror - return string describing stringprep error code
+ * @rc: a #Stringprep_rc return code.
+ *
+ * Convert a return code integer to a text string.  This string can be
+ * used to output a diagnostic message to the user.
+ *
+ * STRINGPREP_OK: Successful operation.  This value is guaranteed to
+ *   always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * STRINGPREP_CONTAINS_UNASSIGNED: String contain unassigned Unicode
+ *   code points, which is forbidden by the profile.
+ * STRINGPREP_CONTAINS_PROHIBITED: String contain code points
+ *   prohibited by the profile.
+ * STRINGPREP_BIDI_BOTH_L_AND_RAL: String contain code points with
+ *   conflicting bidirection category.
+ * STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: Leading and trailing character
+ *   in string not of proper bidirectional category.
+ * STRINGPREP_BIDI_CONTAINS_PROHIBITED: Contains prohibited code
+ *   points detected by bidirectional code.
+ * STRINGPREP_TOO_SMALL_BUFFER: Buffer handed to function was too
+ *   small.  This usually indicate a problem in the calling
+ *   application.
+ * STRINGPREP_PROFILE_ERROR: The stringprep profile was inconsistent.
+ *   This usually indicate an internal error in the library.
+ * STRINGPREP_FLAG_ERROR: The supplied flag conflicted with profile.
+ *   This usually indicate a problem in the calling application.
+ * STRINGPREP_UNKNOWN_PROFILE: The supplied profile name was not
+ *   known to the library.
+ * STRINGPREP_NFKC_FAILED: The Unicode NFKC operation failed.  This
+ *   usually indicate an internal error in the library.
+ * STRINGPREP_MALLOC_ERROR: The malloc() was out of memory.  This is
+ *   usually a fatal error.
+ *
+ * Return value: Returns a pointer to a statically allocated string
+ *   containing a description of the error with the return code @rc.
+ **/
+const char *
+stringprep_strerror (Stringprep_rc rc)
+{
+  const char *p;
+
+  bindtextdomain (PACKAGE, LOCALEDIR);
+
+  switch (rc)
+    {
+    case STRINGPREP_OK:
+      p = _("Success");
+      break;
+
+    case STRINGPREP_CONTAINS_UNASSIGNED:
+      p = _("Forbidden unassigned code points in input");
+      break;
+
+    case STRINGPREP_CONTAINS_PROHIBITED:
+      p = _("Prohibited code points in input");
+      break;
+
+    case STRINGPREP_BIDI_BOTH_L_AND_RAL:
+      p = _("Conflicting bidirectional properties in input");
+      break;
+
+    case STRINGPREP_BIDI_LEADTRAIL_NOT_RAL:
+      p = _("Malformed bidirectional string");
+      break;
+
+    case STRINGPREP_BIDI_CONTAINS_PROHIBITED:
+      p = _("Prohibited bidirectional code points in input");
+      break;
+
+    case STRINGPREP_TOO_SMALL_BUFFER:
+      p = _("Output would exceed the buffer space provided");
+      break;
+
+    case STRINGPREP_PROFILE_ERROR:
+      p = _("Error in stringprep profile definition");
+      break;
+
+    case STRINGPREP_FLAG_ERROR:
+      p = _("Flag conflict with profile");
+      break;
+
+    case STRINGPREP_UNKNOWN_PROFILE:
+      p = _("Unknown profile");
+      break;
+
+    case STRINGPREP_NFKC_FAILED:
+      p = _("Unicode normalization failed (internal error)");
+      break;
+
+    case STRINGPREP_MALLOC_ERROR:
+      p = _("Cannot allocate memory");
+      break;
+
+    default:
+      p = _("Unknown error");
+      break;
+    }
+
+  return p;
+}
diff --git a/lib/strerror-tld.c b/lib/strerror-tld.c
new file mode 100644 (file)
index 0000000..b74c0ae
--- /dev/null
@@ -0,0 +1,89 @@
+/* strerror-tld.c --- Convert TLD errors into text.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "tld.h"
+
+#include "gettext.h"
+#define _(String) dgettext (PACKAGE, String)
+
+/**
+ * tld_strerror - return string describing tld error code
+ * @rc: tld return code
+ *
+ * Convert a return code integer to a text string.  This string can be
+ * used to output a diagnostic message to the user.
+ *
+ * TLD_SUCCESS: Successful operation.  This value is guaranteed to
+ *   always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * TLD_INVALID: Invalid character found.
+ * TLD_NODATA: No input data was provided.
+ * TLD_MALLOC_ERROR: Error during memory allocation.
+ * TLD_ICONV_ERROR: Error during iconv string conversion.
+ * TLD_NO_TLD: No top-level domain found in domain string.
+ *
+ * Return value: Returns a pointer to a statically allocated string
+ * containing a description of the error with the return code @rc.
+ **/
+const char *
+tld_strerror (Tld_rc rc)
+{
+  const char *p;
+
+  bindtextdomain (PACKAGE, LOCALEDIR);
+
+  switch (rc)
+    {
+    case TLD_SUCCESS:
+      p = _("Success");
+      break;
+
+    case TLD_INVALID:
+      p = _("Code points prohibited by top-level domain");
+      break;
+
+    case TLD_NODATA:
+      p = _("Missing input");
+      break;
+
+    case TLD_MALLOC_ERROR:
+      p = _("Cannot allocate memory");
+      break;
+
+    case TLD_ICONV_ERROR:
+      p = _("System iconv failed");
+      break;
+
+    case TLD_NO_TLD:
+      p = _("No top-level domain found in input");
+      break;
+
+    default:
+      p = _("Unknown error");
+      break;
+    }
+
+  return p;
+}
diff --git a/lib/stringprep.c b/lib/stringprep.c
new file mode 100644 (file)
index 0000000..c57f630
--- /dev/null
@@ -0,0 +1,673 @@
+/* stringprep.c --- Core stringprep implementation.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "stringprep.h"
+
+static ssize_t
+stringprep_find_character_in_table (uint32_t ucs4,
+                                   const Stringprep_table_element * table)
+{
+  ssize_t i;
+
+  /* This is where typical uses of Libidn spends very close to all CPU
+     time and causes most cache misses.  One could easily do a binary
+     search instead.  Before rewriting this, I want hard evidence this
+     slowness is at all relevant in typical applications.  (I don't
+     dispute optimization may improve matters significantly, I'm
+     mostly interested in having someone give real-world benchmark on
+     the impact of libidn.) */
+
+  for (i = 0; table[i].start || table[i].end; i++)
+    if (ucs4 >= table[i].start &&
+       ucs4 <= (table[i].end ? table[i].end : table[i].start))
+      return i;
+
+  return -1;
+}
+
+static ssize_t
+stringprep_find_string_in_table (uint32_t * ucs4,
+                                size_t ucs4len,
+                                size_t * tablepos,
+                                const Stringprep_table_element * table)
+{
+  size_t j;
+  ssize_t pos;
+
+  for (j = 0; j < ucs4len; j++)
+    if ((pos = stringprep_find_character_in_table (ucs4[j], table)) != -1)
+      {
+       if (tablepos)
+         *tablepos = pos;
+       return j;
+      }
+
+  return -1;
+}
+
+static int
+stringprep_apply_table_to_string (uint32_t * ucs4,
+                                 size_t * ucs4len,
+                                 size_t maxucs4len,
+                                 const Stringprep_table_element * table)
+{
+  ssize_t pos;
+  size_t i, maplen;
+
+  while ((pos = stringprep_find_string_in_table (ucs4, *ucs4len,
+                                                &i, table)) != -1)
+    {
+      for (maplen = STRINGPREP_MAX_MAP_CHARS;
+          maplen > 0 && table[i].map[maplen - 1] == 0; maplen--)
+       ;
+
+      if (*ucs4len - 1 + maplen >= maxucs4len)
+       return STRINGPREP_TOO_SMALL_BUFFER;
+
+      memmove (&ucs4[pos + maplen], &ucs4[pos + 1],
+              sizeof (uint32_t) * (*ucs4len - pos - 1));
+      memcpy (&ucs4[pos], table[i].map, sizeof (uint32_t) * maplen);
+      *ucs4len = *ucs4len - 1 + maplen;
+    }
+
+  return STRINGPREP_OK;
+}
+
+#define INVERTED(x) ((x) & ((~0UL) >> 1))
+#define UNAPPLICAPLEFLAGS(flags, profileflags) \
+  ((!INVERTED(profileflags) && !(profileflags & flags) && profileflags) || \
+   ( INVERTED(profileflags) && (profileflags & flags)))
+
+/**
+ * stringprep_4i - prepare internationalized string
+ * @ucs4: input/output array with string to prepare.
+ * @len: on input, length of input array with Unicode code points,
+ *   on exit, length of output array with Unicode code points.
+ * @maxucs4len: maximum length of input/output array.
+ * @flags: a #Stringprep_profile_flags value, or 0.
+ * @profile: pointer to #Stringprep_profile to use.
+ *
+ * Prepare the input UCS-4 string according to the stringprep profile,
+ * and write back the result to the input string.
+ *
+ * The input is not required to be zero terminated (@ucs4[@len] = 0).
+ * The output will not be zero terminated unless @ucs4[@len] = 0.
+ * Instead, see stringprep_4zi() if your input is zero terminated or
+ * if you want the output to be.
+ *
+ * Since the stringprep operation can expand the string, @maxucs4len
+ * indicate how large the buffer holding the string is.  This function
+ * will not read or write to code points outside that size.
+ *
+ * The @flags are one of #Stringprep_profile_flags values, or 0.
+ *
+ * The @profile contain the #Stringprep_profile instructions to
+ * perform.  Your application can define new profiles, possibly
+ * re-using the generic stringprep tables that always will be part of
+ * the library, or use one of the currently supported profiles.
+ *
+ * Return value: Returns %STRINGPREP_OK iff successful, or an
+ *   #Stringprep_rc error code.
+ **/
+int
+stringprep_4i (uint32_t * ucs4, size_t * len, size_t maxucs4len,
+              Stringprep_profile_flags flags,
+              const Stringprep_profile * profile)
+{
+  size_t i, j;
+  ssize_t k;
+  size_t ucs4len = *len;
+  int rc;
+
+  for (i = 0; profile[i].operation; i++)
+    {
+      switch (profile[i].operation)
+       {
+       case STRINGPREP_NFKC:
+         {
+           uint32_t *q = 0;
+
+           if (UNAPPLICAPLEFLAGS (flags, profile[i].flags))
+             break;
+
+           if (flags & STRINGPREP_NO_NFKC && !profile[i].flags)
+             /* Profile requires NFKC, but callee asked for no NFKC. */
+             return STRINGPREP_FLAG_ERROR;
+
+           q = stringprep_ucs4_nfkc_normalize (ucs4, ucs4len);
+           if (!q)
+             return STRINGPREP_NFKC_FAILED;
+
+           for (ucs4len = 0; q[ucs4len]; ucs4len++)
+             ;
+
+           if (ucs4len >= maxucs4len)
+             {
+               free (q);
+               return STRINGPREP_TOO_SMALL_BUFFER;
+             }
+
+           memcpy (ucs4, q, ucs4len * sizeof (ucs4[0]));
+
+           free (q);
+         }
+         break;
+
+       case STRINGPREP_PROHIBIT_TABLE:
+         k = stringprep_find_string_in_table (ucs4, ucs4len,
+                                              NULL, profile[i].table);
+         if (k != -1)
+           return STRINGPREP_CONTAINS_PROHIBITED;
+         break;
+
+       case STRINGPREP_UNASSIGNED_TABLE:
+         if (UNAPPLICAPLEFLAGS (flags, profile[i].flags))
+           break;
+         if (flags & STRINGPREP_NO_UNASSIGNED)
+           {
+             k = stringprep_find_string_in_table
+               (ucs4, ucs4len, NULL, profile[i].table);
+             if (k != -1)
+               return STRINGPREP_CONTAINS_UNASSIGNED;
+           }
+         break;
+
+       case STRINGPREP_MAP_TABLE:
+         if (UNAPPLICAPLEFLAGS (flags, profile[i].flags))
+           break;
+         rc = stringprep_apply_table_to_string
+           (ucs4, &ucs4len, maxucs4len, profile[i].table);
+         if (rc != STRINGPREP_OK)
+           return rc;
+         break;
+
+       case STRINGPREP_BIDI_PROHIBIT_TABLE:
+       case STRINGPREP_BIDI_RAL_TABLE:
+       case STRINGPREP_BIDI_L_TABLE:
+         break;
+
+       case STRINGPREP_BIDI:
+         {
+           int done_prohibited = 0;
+           int done_ral = 0;
+           int done_l = 0;
+           size_t contains_ral = SIZE_MAX;
+           size_t contains_l = SIZE_MAX;
+
+           for (j = 0; profile[j].operation; j++)
+             if (profile[j].operation == STRINGPREP_BIDI_PROHIBIT_TABLE)
+               {
+                 done_prohibited = 1;
+                 k = stringprep_find_string_in_table (ucs4, ucs4len,
+                                                      NULL,
+                                                      profile[j].table);
+                 if (k != -1)
+                   return STRINGPREP_BIDI_CONTAINS_PROHIBITED;
+               }
+             else if (profile[j].operation == STRINGPREP_BIDI_RAL_TABLE)
+               {
+                 done_ral = 1;
+                 if (stringprep_find_string_in_table
+                     (ucs4, ucs4len, NULL, profile[j].table) != -1)
+                   contains_ral = j;
+               }
+             else if (profile[j].operation == STRINGPREP_BIDI_L_TABLE)
+               {
+                 done_l = 1;
+                 if (stringprep_find_string_in_table
+                     (ucs4, ucs4len, NULL, profile[j].table) != -1)
+                   contains_l = j;
+               }
+
+           if (!done_prohibited || !done_ral || !done_l)
+             return STRINGPREP_PROFILE_ERROR;
+
+           if (contains_ral != SIZE_MAX && contains_l != SIZE_MAX)
+             return STRINGPREP_BIDI_BOTH_L_AND_RAL;
+
+           if (contains_ral != SIZE_MAX)
+             {
+               if (!(stringprep_find_character_in_table
+                     (ucs4[0], profile[contains_ral].table) != -1 &&
+                     stringprep_find_character_in_table
+                     (ucs4[ucs4len - 1], profile[contains_ral].table) != -1))
+                 return STRINGPREP_BIDI_LEADTRAIL_NOT_RAL;
+             }
+         }
+         break;
+
+       default:
+         return STRINGPREP_PROFILE_ERROR;
+         break;
+       }
+    }
+
+  *len = ucs4len;
+
+  return STRINGPREP_OK;
+}
+
+static int
+stringprep_4zi_1 (uint32_t * ucs4, size_t ucs4len, size_t maxucs4len,
+                 Stringprep_profile_flags flags,
+                 const Stringprep_profile * profile)
+{
+  int rc;
+
+  rc = stringprep_4i (ucs4, &ucs4len, maxucs4len, flags, profile);
+  if (rc != STRINGPREP_OK)
+    return rc;
+
+  if (ucs4len >= maxucs4len)
+    return STRINGPREP_TOO_SMALL_BUFFER;
+
+  ucs4[ucs4len] = 0;
+
+  return STRINGPREP_OK;
+}
+
+/**
+ * stringprep_4zi - prepare internationalized string
+ * @ucs4: input/output array with zero terminated string to prepare.
+ * @maxucs4len: maximum length of input/output array.
+ * @flags: a #Stringprep_profile_flags value, or 0.
+ * @profile: pointer to #Stringprep_profile to use.
+ *
+ * Prepare the input zero terminated UCS-4 string according to the
+ * stringprep profile, and write back the result to the input string.
+ *
+ * Since the stringprep operation can expand the string, @maxucs4len
+ * indicate how large the buffer holding the string is.  This function
+ * will not read or write to code points outside that size.
+ *
+ * The @flags are one of #Stringprep_profile_flags values, or 0.
+ *
+ * The @profile contain the #Stringprep_profile instructions to
+ * perform.  Your application can define new profiles, possibly
+ * re-using the generic stringprep tables that always will be part of
+ * the library, or use one of the currently supported profiles.
+ *
+ * Return value: Returns %STRINGPREP_OK iff successful, or an
+ *   #Stringprep_rc error code.
+ **/
+int
+stringprep_4zi (uint32_t * ucs4, size_t maxucs4len,
+               Stringprep_profile_flags flags,
+               const Stringprep_profile * profile)
+{
+  size_t ucs4len;
+
+  for (ucs4len = 0; ucs4len < maxucs4len && ucs4[ucs4len] != 0; ucs4len++)
+    ;
+
+  return stringprep_4zi_1 (ucs4, ucs4len, maxucs4len, flags, profile);
+}
+
+/**
+ * stringprep - prepare internationalized string
+ * @in: input/ouput array with string to prepare.
+ * @maxlen: maximum length of input/output array.
+ * @flags: a #Stringprep_profile_flags value, or 0.
+ * @profile: pointer to #Stringprep_profile to use.
+ *
+ * Prepare the input zero terminated UTF-8 string according to the
+ * stringprep profile, and write back the result to the input string.
+ *
+ * Note that you must convert strings entered in the systems locale
+ * into UTF-8 before using this function, see
+ * stringprep_locale_to_utf8().
+ *
+ * Since the stringprep operation can expand the string, @maxlen
+ * indicate how large the buffer holding the string is.  This function
+ * will not read or write to characters outside that size.
+ *
+ * The @flags are one of #Stringprep_profile_flags values, or 0.
+ *
+ * The @profile contain the #Stringprep_profile instructions to
+ * perform.  Your application can define new profiles, possibly
+ * re-using the generic stringprep tables that always will be part of
+ * the library, or use one of the currently supported profiles.
+ *
+ * Return value: Returns %STRINGPREP_OK iff successful, or an error code.
+ **/
+int
+stringprep (char *in,
+           size_t maxlen,
+           Stringprep_profile_flags flags,
+           const Stringprep_profile * profile)
+{
+  int rc;
+  char *utf8 = NULL;
+  uint32_t *ucs4 = NULL;
+  size_t ucs4len, maxucs4len, adducs4len = 50;
+
+  do
+    {
+      uint32_t *newp;
+
+      free (ucs4);
+      ucs4 = stringprep_utf8_to_ucs4 (in, -1, &ucs4len);
+      maxucs4len = ucs4len + adducs4len;
+      newp = realloc (ucs4, maxucs4len * sizeof (uint32_t));
+      if (!newp)
+       {
+         free (ucs4);
+         return STRINGPREP_MALLOC_ERROR;
+       }
+      ucs4 = newp;
+
+      rc = stringprep_4i (ucs4, &ucs4len, maxucs4len, flags, profile);
+      adducs4len += 50;
+    }
+  while (rc == STRINGPREP_TOO_SMALL_BUFFER);
+  if (rc != STRINGPREP_OK)
+    {
+      free (ucs4);
+      return rc;
+    }
+
+  utf8 = stringprep_ucs4_to_utf8 (ucs4, ucs4len, 0, 0);
+  free (ucs4);
+  if (!utf8)
+    return STRINGPREP_MALLOC_ERROR;
+
+  if (strlen (utf8) >= maxlen)
+    {
+      free (utf8);
+      return STRINGPREP_TOO_SMALL_BUFFER;
+    }
+
+  strcpy (in, utf8);           /* flawfinder: ignore */
+
+  free (utf8);
+
+  return STRINGPREP_OK;
+}
+
+/**
+ * stringprep_profile - prepare internationalized string
+ * @in: input array with UTF-8 string to prepare.
+ * @out: output variable with pointer to newly allocate string.
+ * @profile: name of stringprep profile to use.
+ * @flags: a #Stringprep_profile_flags value, or 0.
+ *
+ * Prepare the input zero terminated UTF-8 string according to the
+ * stringprep profile, and return the result in a newly allocated
+ * variable.
+ *
+ * Note that you must convert strings entered in the systems locale
+ * into UTF-8 before using this function, see
+ * stringprep_locale_to_utf8().
+ *
+ * The output @out variable must be deallocated by the caller.
+ *
+ * The @flags are one of #Stringprep_profile_flags values, or 0.
+ *
+ * The @profile specifies the name of the stringprep profile to use.
+ * It must be one of the internally supported stringprep profiles.
+ *
+ * Return value: Returns %STRINGPREP_OK iff successful, or an error code.
+ **/
+int
+stringprep_profile (const char *in,
+                   char **out,
+                   const char *profile, Stringprep_profile_flags flags)
+{
+  const Stringprep_profiles *p;
+  char *str = NULL;
+  size_t len = strlen (in) + 1;
+  int rc;
+
+  for (p = &stringprep_profiles[0]; p->name; p++)
+    if (strcmp (p->name, profile) == 0)
+      break;
+
+  if (!p || !p->name || !p->tables)
+    return STRINGPREP_UNKNOWN_PROFILE;
+
+  do
+    {
+      free (str);
+      str = (char *) malloc (len);
+      if (str == NULL)
+       return STRINGPREP_MALLOC_ERROR;
+
+      strcpy (str, in);
+
+      rc = stringprep (str, len, flags, p->tables);
+      len += 50;
+    }
+  while (rc == STRINGPREP_TOO_SMALL_BUFFER);
+
+  if (rc == STRINGPREP_OK)
+    *out = str;
+  else
+    free (str);
+
+  return rc;
+}
+
+/*! \mainpage GNU Internationalized Domain Name Library
+ *
+ * \section intro Introduction
+ *
+ * GNU Libidn is an implementation of the Stringprep, Punycode and IDNA
+ * specifications defined by the IETF Internationalized Domain Names
+ * (IDN) working group, used for internationalized domain names.  The
+ * package is available under the GNU Lesser General Public License.
+ *
+ * The library contains a generic Stringprep implementation that does
+ * Unicode 3.2 NFKC normalization, mapping and prohibitation of
+ * characters, and bidirectional character handling.  Profiles for
+ * Nameprep, iSCSI, SASL and XMPP are included.  Punycode and ASCII
+ * Compatible Encoding (ACE) via IDNA are supported.  A mechanism to
+ * define Top-Level Domain (TLD) specific validation tables, and to
+ * compare strings against those tables, is included.  Default tables
+ * for some TLDs are also included.
+ *
+ * The Stringprep API consists of two main functions, one for
+ * converting data from the system's native representation into UTF-8,
+ * and one function to perform the Stringprep processing.  Adding a
+ * new Stringprep profile for your application within the API is
+ * straightforward.  The Punycode API consists of one encoding
+ * function and one decoding function.  The IDNA API consists of the
+ * ToASCII and ToUnicode functions, as well as an high-level interface
+ * for converting entire domain names to and from the ACE encoded
+ * form.  The TLD API consists of one set of functions to extract the
+ * TLD name from a domain string, one set of functions to locate the
+ * proper TLD table to use based on the TLD name, and core functions
+ * to validate a string against a TLD table, and some utility wrappers
+ * to perform all the steps in one call.
+ *
+ * The library is used by, e.g., GNU SASL and Shishi to process user
+ * names and passwords.  Libidn can be built into GNU Libc to enable a
+ * new system-wide getaddrinfo() flag for IDN processing.
+ *
+ * Libidn is developed for the GNU/Linux system, but runs on over 20 Unix
+ * platforms (including Solaris, IRIX, AIX, and Tru64) and Windows.
+ * Libidn is written in C and (parts of) the API is accessible from C,
+ * C++, Emacs Lisp, Python and Java.
+ *
+ * The project web page:\n
+ * http://www.gnu.org/software/libidn/
+ *
+ * The software archive:\n
+ * ftp://alpha.gnu.org/pub/gnu/libidn/
+ *
+ * For more information see:\n
+ * http://www.ietf.org/html.charters/idn-charter.html\n
+ * http://www.ietf.org/rfc/rfc3454.txt (stringprep specification)\n
+ * http://www.ietf.org/rfc/rfc3490.txt (idna specification)\n
+ * http://www.ietf.org/rfc/rfc3491.txt (nameprep specification)\n
+ * http://www.ietf.org/rfc/rfc3492.txt (punycode specification)\n
+ * http://www.ietf.org/internet-drafts/draft-ietf-ips-iscsi-string-prep-04.txt\n
+ * http://www.ietf.org/internet-drafts/draft-ietf-krb-wg-utf8-profile-01.txt\n
+ * http://www.ietf.org/internet-drafts/draft-ietf-sasl-anon-00.txt\n
+ * http://www.ietf.org/internet-drafts/draft-ietf-sasl-saslprep-00.txt\n
+ * http://www.ietf.org/internet-drafts/draft-ietf-xmpp-nodeprep-01.txt\n
+ * http://www.ietf.org/internet-drafts/draft-ietf-xmpp-resourceprep-01.txt\n
+ *
+ * Further information and paid contract development:\n
+ * Simon Josefsson <simon@josefsson.org>
+ *
+ * \section examples Examples
+ *
+ * \include example.c
+ * \include example3.c
+ * \include example4.c
+ * \include example5.c
+ */
+
+/**
+ * STRINGPREP_VERSION
+ *
+ * String defined via CPP denoting the header file version number.
+ * Used together with stringprep_check_version() to verify header file
+ * and run-time library consistency.
+ */
+
+/**
+ * STRINGPREP_MAX_MAP_CHARS
+ *
+ * Maximum number of code points that can replace a single code point,
+ * during stringprep mapping.
+ */
+
+/**
+ * Stringprep_rc:
+ * @STRINGPREP_OK: Successful operation.  This value is guaranteed to
+ *   always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * @STRINGPREP_CONTAINS_UNASSIGNED: String contain unassigned Unicode
+ *   code points, which is forbidden by the profile.
+ * @STRINGPREP_CONTAINS_PROHIBITED: String contain code points
+ *   prohibited by the profile.
+ * @STRINGPREP_BIDI_BOTH_L_AND_RAL: String contain code points with
+ *   conflicting bidirection category.
+ * @STRINGPREP_BIDI_LEADTRAIL_NOT_RAL: Leading and trailing character
+ *   in string not of proper bidirectional category.
+ * @STRINGPREP_BIDI_CONTAINS_PROHIBITED: Contains prohibited code
+ *   points detected by bidirectional code.
+ * @STRINGPREP_TOO_SMALL_BUFFER: Buffer handed to function was too
+ *   small.  This usually indicate a problem in the calling
+ *   application.
+ * @STRINGPREP_PROFILE_ERROR: The stringprep profile was inconsistent.
+ *   This usually indicate an internal error in the library.
+ * @STRINGPREP_FLAG_ERROR: The supplied flag conflicted with profile.
+ *   This usually indicate a problem in the calling application.
+ * @STRINGPREP_UNKNOWN_PROFILE: The supplied profile name was not
+ *   known to the library.
+ * @STRINGPREP_NFKC_FAILED: The Unicode NFKC operation failed.  This
+ *   usually indicate an internal error in the library.
+ * @STRINGPREP_MALLOC_ERROR: The malloc() was out of memory.  This is
+ *   usually a fatal error.
+ *
+ * Enumerated return codes of stringprep(), stringprep_profile()
+ * functions (and macros using those functions).  The value 0 is
+ * guaranteed to always correspond to success.
+ */
+
+/**
+ * Stringprep_profile_flags:
+ * @STRINGPREP_NO_NFKC: Disable the NFKC normalization, as well as
+ *   selecting the non-NFKC case folding tables.  Usually the profile
+ *   specifies BIDI and NFKC settings, and applications should not
+ *   override it unless in special situations.
+ * @STRINGPREP_NO_BIDI: Disable the BIDI step.  Usually the profile
+ *   specifies BIDI and NFKC settings, and applications should not
+ *   override it unless in special situations.
+ * @STRINGPREP_NO_UNASSIGNED: Make the library return with an error if
+ *   string contains unassigned characters according to profile.
+ *
+ * Stringprep profile flags.
+ */
+
+/**
+ * Stringprep_profile_steps:
+ *
+ * Various steps in the stringprep algorithm.  You really want to
+ * study the source code to understand this one.  Only useful if you
+ * want to add another profile.
+ */
+
+/**
+ * stringprep_nameprep:
+ * @in: input/ouput array with string to prepare.
+ * @maxlen: maximum length of input/output array.
+ *
+ * Prepare the input UTF-8 string according to the nameprep profile.
+ * The AllowUnassigned flag is true, use
+ * stringprep_nameprep_no_unassigned() if you want a false
+ * AllowUnassigned.  Returns 0 iff successful, or an error code.
+ **/
+
+/**
+ * stringprep_nameprep_no_unassigned:
+ * @in: input/ouput array with string to prepare.
+ * @maxlen: maximum length of input/output array.
+ *
+ * Prepare the input UTF-8 string according to the nameprep profile.
+ * The AllowUnassigned flag is false, use stringprep_nameprep() for
+ * true AllowUnassigned.  Returns 0 iff successful, or an error code.
+ **/
+
+/**
+ * stringprep_iscsi:
+ * @in: input/ouput array with string to prepare.
+ * @maxlen: maximum length of input/output array.
+ *
+ * Prepare the input UTF-8 string according to the draft iSCSI
+ * stringprep profile.  Returns 0 iff successful, or an error code.
+ **/
+
+/**
+ * stringprep_plain:
+ * @in: input/ouput array with string to prepare.
+ * @maxlen: maximum length of input/output array.
+ *
+ * Prepare the input UTF-8 string according to the draft SASL
+ * ANONYMOUS profile.  Returns 0 iff successful, or an error code.
+ **/
+
+/**
+ * stringprep_xmpp_nodeprep:
+ * @in: input/ouput array with string to prepare.
+ * @maxlen: maximum length of input/output array.
+ *
+ * Prepare the input UTF-8 string according to the draft XMPP node
+ * identifier profile.  Returns 0 iff successful, or an error code.
+ **/
+
+/**
+ * stringprep_xmpp_resourceprep:
+ * @in: input/ouput array with string to prepare.
+ * @maxlen: maximum length of input/output array.
+ *
+ * Prepare the input UTF-8 string according to the draft XMPP resource
+ * identifier profile.  Returns 0 iff successful, or an error code.
+ **/
diff --git a/lib/stringprep.h b/lib/stringprep.h
new file mode 100644 (file)
index 0000000..bb3c71f
--- /dev/null
@@ -0,0 +1,231 @@
+/* stringprep.h --- Header file for stringprep functions.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef STRINGPREP_H
+# define STRINGPREP_H
+
+# ifndef IDNAPI
+#  if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY
+#   define IDNAPI __attribute__((__visibility__("default")))
+#  elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllexport)
+#  elif defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllimport)
+#  else
+#   define IDNAPI
+#  endif
+# endif
+
+# include <stddef.h>           /* size_t */
+# include <unistd.h>           /* ssize_t */
+# include <idn-int.h>          /* uint32_t */
+
+# ifdef __cplusplus
+extern "C"
+{
+# endif
+
+# define STRINGPREP_VERSION "1.15"
+
+/* Error codes. */
+  typedef enum
+  {
+    STRINGPREP_OK = 0,
+    /* Stringprep errors. */
+    STRINGPREP_CONTAINS_UNASSIGNED = 1,
+    STRINGPREP_CONTAINS_PROHIBITED = 2,
+    STRINGPREP_BIDI_BOTH_L_AND_RAL = 3,
+    STRINGPREP_BIDI_LEADTRAIL_NOT_RAL = 4,
+    STRINGPREP_BIDI_CONTAINS_PROHIBITED = 5,
+    /* Error in calling application. */
+    STRINGPREP_TOO_SMALL_BUFFER = 100,
+    STRINGPREP_PROFILE_ERROR = 101,
+    STRINGPREP_FLAG_ERROR = 102,
+    STRINGPREP_UNKNOWN_PROFILE = 103,
+    /* Internal errors. */
+    STRINGPREP_NFKC_FAILED = 200,
+    STRINGPREP_MALLOC_ERROR = 201
+  } Stringprep_rc;
+
+/* Flags used when calling stringprep(). */
+  typedef enum
+  {
+    STRINGPREP_NO_NFKC = 1,
+    STRINGPREP_NO_BIDI = 2,
+    STRINGPREP_NO_UNASSIGNED = 4
+  } Stringprep_profile_flags;
+
+/* Steps in a stringprep profile. */
+  typedef enum
+  {
+    STRINGPREP_NFKC = 1,
+    STRINGPREP_BIDI = 2,
+    STRINGPREP_MAP_TABLE = 3,
+    STRINGPREP_UNASSIGNED_TABLE = 4,
+    STRINGPREP_PROHIBIT_TABLE = 5,
+    STRINGPREP_BIDI_PROHIBIT_TABLE = 6,
+    STRINGPREP_BIDI_RAL_TABLE = 7,
+    STRINGPREP_BIDI_L_TABLE = 8
+  } Stringprep_profile_steps;
+
+# define STRINGPREP_MAX_MAP_CHARS 4
+
+  struct Stringprep_table_element
+  {
+    uint32_t start;
+    uint32_t end;              /* 0 if only one character */
+    uint32_t map[STRINGPREP_MAX_MAP_CHARS];    /* NULL if end is not 0 */
+  };
+  typedef struct Stringprep_table_element Stringprep_table_element;
+
+  struct Stringprep_table
+  {
+    Stringprep_profile_steps operation;
+    Stringprep_profile_flags flags;
+    const Stringprep_table_element *table;
+  };
+  typedef struct Stringprep_table Stringprep_profile;
+
+  struct Stringprep_profiles
+  {
+    const char *name;
+    const Stringprep_profile *tables;
+  };
+  typedef struct Stringprep_profiles Stringprep_profiles;
+
+  extern IDNAPI const Stringprep_profiles stringprep_profiles[];
+
+/* Profiles */
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_A_1[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_B_1[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_B_2[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_B_3[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_1_1[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_1_2[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_2_1[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_2_2[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_3[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_4[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_5[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_6[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_7[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_8[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_C_9[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_D_1[];
+  extern IDNAPI const Stringprep_table_element stringprep_rfc3454_D_2[];
+
+  /* Nameprep */
+
+  extern IDNAPI const Stringprep_profile stringprep_nameprep[];
+
+# define stringprep_nameprep(in, maxlen)                       \
+  stringprep(in, maxlen, 0, stringprep_nameprep)
+
+# define stringprep_nameprep_no_unassigned(in, maxlen)                 \
+  stringprep(in, maxlen, STRINGPREP_NO_UNASSIGNED, stringprep_nameprep)
+
+  /* SASL */
+
+  extern IDNAPI const Stringprep_profile stringprep_saslprep[];
+  extern IDNAPI const Stringprep_profile stringprep_plain[];
+  extern IDNAPI const Stringprep_profile stringprep_trace[];
+
+# define stringprep_plain(in, maxlen)          \
+  stringprep(in, maxlen, 0, stringprep_plain)
+
+  /* Kerberos */
+
+  extern IDNAPI const Stringprep_profile stringprep_kerberos5[];
+
+# define stringprep_kerberos5(in, maxlen)              \
+  stringprep(in, maxlen, 0, stringprep_kerberos5)
+
+  /* XMPP */
+
+  extern IDNAPI const Stringprep_profile stringprep_xmpp_nodeprep[];
+  extern IDNAPI const Stringprep_profile stringprep_xmpp_resourceprep[];
+  extern IDNAPI const Stringprep_table_element stringprep_xmpp_nodeprep_prohibit[];
+
+# define stringprep_xmpp_nodeprep(in, maxlen)          \
+  stringprep(in, maxlen, 0, stringprep_xmpp_nodeprep)
+# define stringprep_xmpp_resourceprep(in, maxlen)              \
+  stringprep(in, maxlen, 0, stringprep_xmpp_resourceprep)
+
+  /* iSCSI */
+
+  extern IDNAPI const Stringprep_profile stringprep_iscsi[];
+
+# define stringprep_iscsi(in, maxlen)          \
+  stringprep(in, maxlen, 0, stringprep_iscsi)
+
+  /* API */
+
+  extern IDNAPI int stringprep_4i (uint32_t * ucs4, size_t * len,
+                                  size_t maxucs4len,
+                                  Stringprep_profile_flags flags,
+                                  const Stringprep_profile * profile);
+  extern IDNAPI int stringprep_4zi (uint32_t * ucs4, size_t maxucs4len,
+                                   Stringprep_profile_flags flags,
+                                   const Stringprep_profile * profile);
+  extern IDNAPI int stringprep (char *in, size_t maxlen,
+                               Stringprep_profile_flags flags,
+                               const Stringprep_profile * profile);
+
+  extern IDNAPI int stringprep_profile (const char *in,
+                                       char **out,
+                                       const char *profile,
+                                       Stringprep_profile_flags flags);
+
+  extern IDNAPI const char *stringprep_strerror (Stringprep_rc rc);
+
+  extern IDNAPI const char *stringprep_check_version (const char
+                                                     *req_version);
+
+/* Utility */
+
+  extern IDNAPI int stringprep_unichar_to_utf8 (uint32_t c, char *outbuf);
+  extern IDNAPI uint32_t stringprep_utf8_to_unichar (const char *p);
+
+  extern IDNAPI uint32_t *stringprep_utf8_to_ucs4 (const char *str,
+                                                  ssize_t len,
+                                                  size_t * items_written);
+  extern IDNAPI char *stringprep_ucs4_to_utf8 (const uint32_t * str,
+                                              ssize_t len,
+                                              size_t * items_read,
+                                              size_t * items_written);
+
+  extern IDNAPI char *stringprep_utf8_nfkc_normalize (const char *str,
+                                                     ssize_t len);
+  extern IDNAPI uint32_t *stringprep_ucs4_nfkc_normalize (uint32_t * str,
+                                                         ssize_t len);
+
+  extern IDNAPI const char *stringprep_locale_charset (void);
+  extern IDNAPI char *stringprep_convert (const char *str,
+                                         const char *to_codeset,
+                                         const char *from_codeset);
+  extern IDNAPI char *stringprep_locale_to_utf8 (const char *str);
+  extern IDNAPI char *stringprep_utf8_to_locale (const char *str);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif                         /* STRINGPREP_H */
diff --git a/lib/tld.c b/lib/tld.c
new file mode 100644 (file)
index 0000000..d10a28e
--- /dev/null
+++ b/lib/tld.c
@@ -0,0 +1,516 @@
+/* tld.c --- Handle TLD restriction checking.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson.
+ * Copyright (C) 2003, 2004  Free Software Foundation, Inc.
+ *
+ * Author: Thomas Jacob, Internet24.de
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#include <config.h>
+
+/* Get stringprep_utf8_to_ucs4, stringprep_locale_to_utf8. */
+#include <stringprep.h>
+
+/* Get strcmp(). */
+#include <string.h>
+
+/* Get specifications. */
+#include <tld.h>
+
+/* Array of built-in domain restriction structures.  See tlds.c.  */
+extern const Tld_table *_tld_tables[];
+
+/**
+ * tld_get_table - get table for a TLD name in table
+ * @tld: TLD name (e.g. "com") as zero terminated ASCII byte string.
+ * @tables: Zero terminated array of #Tld_table info-structures for
+ *   TLDs.
+ *
+ * Get the TLD table for a named TLD by searching through the given
+ * TLD table array.
+ *
+ * Return value: Return structure corresponding to TLD @tld by going
+ *   thru @tables, or return %NULL if no such structure is found.
+ */
+const Tld_table *
+tld_get_table (const char *tld, const Tld_table ** tables)
+{
+  const Tld_table **tldtable = NULL;
+
+  if (!tld || !tables)
+    return NULL;
+
+  for (tldtable = tables; *tldtable; tldtable++)
+    if (!strcmp ((*tldtable)->name, tld))
+      return *tldtable;
+
+  return NULL;
+}
+
+/**
+ * tld_default_table - get table for a TLD name
+ * @tld: TLD name (e.g. "com") as zero terminated ASCII byte string.
+ * @overrides: Additional zero terminated array of #Tld_table
+ *   info-structures for TLDs, or %NULL to only use library deault
+ *   tables.
+ *
+ * Get the TLD table for a named TLD, using the internal defaults,
+ * possibly overrided by the (optional) supplied tables.
+ *
+ * Return value: Return structure corresponding to TLD @tld_str, first
+ *   looking through @overrides then thru built-in list, or %NULL if
+ *   no such structure found.
+ */
+const Tld_table *
+tld_default_table (const char *tld, const Tld_table ** overrides)
+{
+  const Tld_table *tldtable = NULL;
+
+  if (!tld)
+    return NULL;
+
+  if (overrides)
+    tldtable = tld_get_table (tld, overrides);
+
+  if (!tldtable)
+    tldtable = tld_get_table (tld, _tld_tables);
+
+  return tldtable;
+}
+
+#define DOTP(c) ((c) == 0x002E || (c) == 0x3002 ||     \
+                (c) == 0xFF0E || (c) == 0xFF61)
+
+/**
+ * tld_get_4 - extract top level domain part in input Unicode string
+ * @in: Array of unicode code points to process. Does not need to be
+ *   zero terminated.
+ * @inlen: Number of unicode code points.
+ * @out: Zero terminated ascii result string pointer.
+ *
+ * Isolate the top-level domain of @in and return it as an ASCII
+ * string in @out.
+ *
+ * Return value: Return %TLD_SUCCESS on success, or the corresponding
+ *   #Tld_rc error code otherwise.
+ */
+int
+tld_get_4 (const uint32_t * in, size_t inlen, char **out)
+{
+  const uint32_t *ipos;
+  size_t olen;
+
+  *out = NULL;
+  if (!in || inlen == 0)
+    return TLD_NODATA;
+
+  ipos = &in[inlen - 1];
+  olen = 0;
+  /* Scan backwards for non(latin)letters. */
+  while (ipos >= in && ((*ipos >= 0x41 && *ipos <= 0x5A) ||
+                       (*ipos >= 0x61 && *ipos <= 0x7A)))
+    ipos--, olen++;
+
+  if (olen > 0 && DOTP (*ipos))        /* Found something that appears a TLD. */
+    {
+      char *out_s = malloc (sizeof (char) * (olen + 1));
+      char *opos = out_s;
+
+      if (!opos)
+       return TLD_MALLOC_ERROR;
+
+      ipos++;
+      /* Transcribe to lowercase ascii string. */
+      for (; ipos < &in[inlen]; ipos++, opos++)
+       *opos = *ipos > 0x5A ? *ipos : *ipos + 0x20;
+      *opos = 0;
+      *out = out_s;
+      return TLD_SUCCESS;
+    }
+
+  return TLD_NO_TLD;
+}
+
+/**
+ * tld_get_4z - extract top level domain part in input Unicode string
+ * @in: Zero terminated array of unicode code points to process.
+ * @out: Zero terminated ascii result string pointer.
+ *
+ * Isolate the top-level domain of @in and return it as an ASCII
+ * string in @out.
+ *
+ * Return value: Return %TLD_SUCCESS on success, or the corresponding
+ *   #Tld_rc error code otherwise.
+ */
+int
+tld_get_4z (const uint32_t * in, char **out)
+{
+  const uint32_t *ipos = in;
+
+  if (!in)
+    return TLD_NODATA;
+
+  while (*ipos)
+    ipos++;
+
+  return tld_get_4 (in, ipos - in, out);
+}
+
+/**
+ * tld_get_z - extract top level domain part in input string
+ * @in: Zero terminated character array to process.
+ * @out: Zero terminated ascii result string pointer.
+ *
+ * Isolate the top-level domain of @in and return it as an ASCII
+ * string in @out.  The input string @in may be UTF-8, ISO-8859-1 or
+ * any ASCII compatible character encoding.
+ *
+ * Return value: Return %TLD_SUCCESS on success, or the corresponding
+ *   #Tld_rc error code otherwise.
+ */
+int
+tld_get_z (const char *in, char **out)
+{
+  uint32_t *iucs;
+  size_t i, ilen;
+  int rc;
+
+  ilen = strlen (in);
+  iucs = calloc (ilen, sizeof (*iucs));
+
+  if (!iucs)
+    return TLD_MALLOC_ERROR;
+
+  for (i = 0; i < ilen; i++)
+    iucs[i] = in[i];
+
+  rc = tld_get_4 (iucs, ilen, out);
+
+  free (iucs);
+
+  return rc;
+}
+
+/*
+ * tld_checkchar - verify that character is permitted
+ * @ch: 32 bit unicode character to check.
+ * @tld: A #Tld_table data structure to check @ch against.
+ *
+ * Verify if @ch is either in [a-z0-9-.] or mentioned as a valid
+ * character in @tld.
+ *
+ * Return value: Return the #Tld_rc value %TLD_SUCCESS if @ch is a
+ *   valid character for the TLD @tld or if @tld is %NULL,
+ *   %TLD_INVALID if @ch is invalid as defined by @tld.
+ */
+static int
+_tld_checkchar (uint32_t ch, const Tld_table * tld)
+{
+  const Tld_table_element *s, *e, *m;
+
+  if (!tld)
+    return TLD_SUCCESS;
+
+  /* Check for [-a-z0-9.]. */
+  if ((ch >= 0x61 && ch <= 0x7A) ||
+      (ch >= 0x30 && ch <= 0x39) || ch == 0x2D || DOTP (ch))
+    return TLD_SUCCESS;
+
+  s = tld->valid;
+  e = s + tld->nvalid;
+  while (s < e)
+    {
+      m = s + ((e - s) >> 1);
+      if (ch < m->start)
+       e = m;
+      else if (ch > m->end)
+       s = m + 1;
+      else
+       return TLD_SUCCESS;
+    }
+
+  return TLD_INVALID;
+}
+
+/**
+ * tld_check_4t - verify that characters are permitted
+ * @in: Array of unicode code points to process. Does not need to be
+ *   zero terminated.
+ * @inlen: Number of unicode code points.
+ * @errpos: Position of offending character is returned here.
+ * @tld: A #Tld_table data structure representing the restrictions for
+ *   which the input should be tested.
+ *
+ * Test each of the code points in @in for whether or not
+ * they are allowed by the data structure in @tld, return
+ * the position of the first character for which this is not
+ * the case in @errpos.
+ *
+ * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all code
+ *   points are valid or when @tld is null, %TLD_INVALID if a
+ *   character is not allowed, or additional error codes on general
+ *   failure conditions.
+ */
+int
+tld_check_4t (const uint32_t * in, size_t inlen, size_t * errpos,
+             const Tld_table * tld)
+{
+  const uint32_t *ipos;
+  int rc;
+
+  if (!tld)                    /* No data for TLD so everything is valid. */
+    return TLD_SUCCESS;
+
+  ipos = in;
+  while (ipos < &in[inlen])
+    {
+      rc = _tld_checkchar (*ipos, tld);
+      if (rc != TLD_SUCCESS)
+       {
+         if (errpos)
+           *errpos = ipos - in;
+         return rc;
+       }
+      ipos++;
+    }
+  return TLD_SUCCESS;
+}
+
+/**
+ * tld_check_4tz - verify that characters are permitted
+ * @in: Zero terminated array of unicode code points to process.
+ * @errpos: Position of offending character is returned here.
+ * @tld: A #Tld_table data structure representing the restrictions for
+ *   which the input should be tested.
+ *
+ * Test each of the code points in @in for whether or not
+ * they are allowed by the data structure in @tld, return
+ * the position of the first character for which this is not
+ * the case in @errpos.
+ *
+ * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all code
+ *   points are valid or when @tld is null, %TLD_INVALID if a
+ *   character is not allowed, or additional error codes on general
+ *   failure conditions.
+ */
+int
+tld_check_4tz (const uint32_t * in, size_t * errpos, const Tld_table * tld)
+{
+  const uint32_t *ipos = in;
+
+  if (!ipos)
+    return TLD_NODATA;
+
+  while (*ipos)
+    ipos++;
+
+  return tld_check_4t (in, ipos - in, errpos, tld);
+}
+
+/**
+ * tld_check_4 - verify that characters are permitted
+ * @in: Array of unicode code points to process. Does not need to be
+ *   zero terminated.
+ * @inlen: Number of unicode code points.
+ * @errpos: Position of offending character is returned here.
+ * @overrides: A #Tld_table array of additional domain restriction
+ *  structures that complement and supersede the built-in information.
+ *
+ * Test each of the code points in @in for whether or not they are
+ * allowed by the information in @overrides or by the built-in TLD
+ * restriction data. When data for the same TLD is available both
+ * internally and in @overrides, the information in @overrides takes
+ * precedence. If several entries for a specific TLD are found, the
+ * first one is used.  If @overrides is %NULL, only the built-in
+ * information is used.  The position of the first offending character
+ * is returned in @errpos.
+ *
+ * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all code
+ *   points are valid or when @tld is null, %TLD_INVALID if a
+ *   character is not allowed, or additional error codes on general
+ *   failure conditions.
+ */
+int
+tld_check_4 (const uint32_t * in, size_t inlen, size_t * errpos,
+            const Tld_table ** overrides)
+{
+  const Tld_table *tld;
+  char *domain;
+  int rc;
+
+  if (errpos)
+    *errpos = 0;
+
+  /* Get TLD name. */
+  rc = tld_get_4 (in, inlen, &domain);
+
+  if (rc != TLD_SUCCESS)
+    {
+      if (rc == TLD_NO_TLD)    /* No TLD, say OK */
+       return TLD_SUCCESS;
+      else
+       return rc;
+    }
+
+  /* Retrieve appropriate data structure. */
+  tld = tld_default_table (domain, overrides);
+  free (domain);
+
+  return tld_check_4t (in, inlen, errpos, tld);
+}
+
+/**
+ * tld_check_4z - verify that characters are permitted
+ * @in: Zero-terminated array of unicode code points to process.
+ * @errpos: Position of offending character is returned here.
+ * @overrides: A #Tld_table array of additional domain restriction
+ *   structures that complement and supersede the built-in information.
+ *
+ * Test each of the code points in @in for whether or not they are
+ * allowed by the information in @overrides or by the built-in TLD
+ * restriction data. When data for the same TLD is available both
+ * internally and in @overrides, the information in @overrides takes
+ * precedence. If several entries for a specific TLD are found, the
+ * first one is used.  If @overrides is %NULL, only the built-in
+ * information is used.  The position of the first offending character
+ * is returned in @errpos.
+ *
+ * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all code
+ *   points are valid or when @tld is null, %TLD_INVALID if a
+ *   character is not allowed, or additional error codes on general
+ *   failure conditions.
+ */
+int
+tld_check_4z (const uint32_t * in, size_t * errpos,
+             const Tld_table ** overrides)
+{
+  const uint32_t *ipos = in;
+
+  if (!ipos)
+    return TLD_NODATA;
+
+  while (*ipos)
+    ipos++;
+
+  return tld_check_4 (in, ipos - in, errpos, overrides);
+}
+
+/**
+ * tld_check_8z - verify that characters are permitted
+ * @in: Zero-terminated UTF8 string to process.
+ * @errpos: Position of offending character is returned here.
+ * @overrides: A #Tld_table array of additional domain restriction
+ *   structures that complement and supersede the built-in information.
+ *
+ * Test each of the characters in @in for whether or not they are
+ * allowed by the information in @overrides or by the built-in TLD
+ * restriction data. When data for the same TLD is available both
+ * internally and in @overrides, the information in @overrides takes
+ * precedence. If several entries for a specific TLD are found, the
+ * first one is used.  If @overrides is %NULL, only the built-in
+ * information is used.  The position of the first offending character
+ * is returned in @errpos.  Note that the error position refers to the
+ * decoded character offset rather than the byte position in the
+ * string.
+ *
+ * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all
+ *   characters are valid or when @tld is null, %TLD_INVALID if a
+ *   character is not allowed, or additional error codes on general
+ *   failure conditions.
+ */
+int
+tld_check_8z (const char *in, size_t * errpos, const Tld_table ** overrides)
+{
+  uint32_t *iucs;
+  size_t ilen;
+  int rc;
+
+  if (!in)
+    return TLD_NODATA;
+
+  iucs = stringprep_utf8_to_ucs4 (in, -1, &ilen);
+
+  if (!iucs)
+    return TLD_MALLOC_ERROR;
+
+  rc = tld_check_4 (iucs, ilen, errpos, overrides);
+
+  free (iucs);
+
+  return rc;
+}
+
+/**
+ * tld_check_lz - verify that characters are permitted
+ * @in: Zero-terminated string in the current locales encoding to process.
+ * @errpos: Position of offending character is returned here.
+ * @overrides: A #Tld_table array of additional domain restriction
+ *   structures that complement and supersede the built-in information.
+ *
+ * Test each of the characters in @in for whether or not they are
+ * allowed by the information in @overrides or by the built-in TLD
+ * restriction data. When data for the same TLD is available both
+ * internally and in @overrides, the information in @overrides takes
+ * precedence. If several entries for a specific TLD are found, the
+ * first one is used.  If @overrides is %NULL, only the built-in
+ * information is used.  The position of the first offending character
+ * is returned in @errpos.  Note that the error position refers to the
+ * decoded character offset rather than the byte position in the
+ * string.
+ *
+ * Return value: Returns the #Tld_rc value %TLD_SUCCESS if all
+ *   characters are valid or when @tld is null, %TLD_INVALID if a
+ *   character is not allowed, or additional error codes on general
+ *   failure conditions.
+ */
+int
+tld_check_lz (const char *in, size_t * errpos, const Tld_table ** overrides)
+{
+  char *utf8;
+  int rc;
+
+  if (!in)
+    return TLD_NODATA;
+
+  utf8 = stringprep_locale_to_utf8 (in);
+  if (!utf8)
+    return TLD_ICONV_ERROR;
+
+
+  rc = tld_check_8z (utf8, errpos, overrides);
+
+  free (utf8);
+
+  return rc;
+}
+
+/**
+ * Tld_rc:
+ * @TLD_SUCCESS: Successful operation.  This value is guaranteed to
+ *   always be zero, the remaining ones are only guaranteed to hold
+ *   non-zero values, for logical comparison purposes.
+ * @TLD_INVALID: Invalid character found.
+ * @TLD_NODATA: No input data was provided.
+ * @TLD_MALLOC_ERROR: Error during memory allocation.
+ * @TLD_ICONV_ERROR: Error during iconv string conversion.
+ * @TLD_NO_TLD: No top-level domain found in domain string.
+ *
+ * Enumerated return codes of the TLD checking functions.
+ * The value 0 is guaranteed to always correspond to success.
+ */
diff --git a/lib/tld.h b/lib/tld.h
new file mode 100644 (file)
index 0000000..beaad8f
--- /dev/null
+++ b/lib/tld.h
@@ -0,0 +1,127 @@
+/* tld.h --- Declarations for TLD restriction checking.
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson.
+ * Copyright (C) 2003, 2004  Free Software Foundation, Inc.
+ *
+ * Author: Thomas Jacob, Internet24.de
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifndef TLD_H
+# define TLD_H
+
+# ifndef IDNAPI
+#  if defined LIBIDN_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY
+#   define IDNAPI __attribute__((__visibility__("default")))
+#  elif defined LIBIDN_BUILDING && defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllexport)
+#  elif defined _MSC_VER && ! defined LIBIDN_STATIC
+#   define IDNAPI __declspec(dllimport)
+#  else
+#   define IDNAPI
+#  endif
+# endif
+
+# ifdef __cplusplus
+extern "C"
+{
+# endif
+
+  /* Get size_t. */
+# include <stdlib.h>
+
+  /* Get uint32_t. */
+# include <idn-int.h>
+
+  /* Interval of valid code points in the TLD. */
+  struct Tld_table_element
+  {
+    uint32_t start;            /* Start of range. */
+    uint32_t end;              /* End of range, end == start if single. */
+  };
+  typedef struct Tld_table_element Tld_table_element;
+
+  /* List valid code points in a TLD. */
+  struct Tld_table
+  {
+    const char *name;          /* TLD name, e.g., "no". */
+    const char *version;       /* Version string from TLD file. */
+    size_t nvalid;             /* Number of entries in data. */
+    const Tld_table_element *valid;    /* Sorted array of valid code points. */
+  };
+  typedef struct Tld_table Tld_table;
+
+  /* Error codes. */
+  typedef enum
+  {
+    TLD_SUCCESS = 0,
+    TLD_INVALID = 1,           /* Invalid character found. */
+    TLD_NODATA = 2,            /* Char, domain or inlen = 0. */
+    TLD_MALLOC_ERROR = 3,
+    TLD_ICONV_ERROR = 4,
+    TLD_NO_TLD = 5,
+    /* Workaround typo in earlier versions. */
+    TLD_NOTLD = TLD_NO_TLD
+  } Tld_rc;
+
+  extern IDNAPI const char *tld_strerror (Tld_rc rc);
+
+  /* Extract TLD, as ASCII string, of UCS4 domain name into "out". */
+  extern IDNAPI int tld_get_4 (const uint32_t * in, size_t inlen,
+                              char **out);
+  extern IDNAPI int tld_get_4z (const uint32_t * in, char **out);
+  extern IDNAPI int tld_get_z (const char *in, char **out);
+
+  /* Return structure corresponding to the named TLD from specified
+   * list of TLD tables, or return NULL if no matching TLD can be
+   * found. */
+  extern IDNAPI const Tld_table *tld_get_table (const char *tld,
+                                               const Tld_table ** tables);
+
+  /* Return structure corresponding to the named TLD, first looking
+   * thru overrides then thru built-in list, or return NULL if no
+   * matching TLD can be found. */
+  extern IDNAPI const Tld_table * tld_default_table (const char *tld,
+                                                const Tld_table ** overrides);
+
+  /* Check NAMEPREPPED domain name for valid characters as defined by
+   * the relevant registering body (plus [a-z0-9.-]).  If error is
+   * TLD_INVALID, set errpos to position of offending character. */
+  extern IDNAPI int tld_check_4t (const uint32_t * in, size_t inlen,
+                                 size_t * errpos, const Tld_table * tld);
+  extern IDNAPI int tld_check_4tz (const uint32_t * in, size_t * errpos,
+                                  const Tld_table * tld);
+
+  /* Utility interfaces that uses tld_get_4* to find TLD of string,
+     then tld_default_table (with overrides) to find proper TLD table
+     for the string, and then hands over to tld_check_4t*. */
+  extern IDNAPI int tld_check_4 (const uint32_t * in, size_t inlen,
+                                size_t * errpos,
+                                const Tld_table ** overrides);
+  extern IDNAPI int tld_check_4z (const uint32_t * in, size_t * errpos,
+                                 const Tld_table ** overrides);
+  extern IDNAPI int tld_check_8z (const char *in, size_t * errpos,
+                                 const Tld_table ** overrides);
+  extern IDNAPI int tld_check_lz (const char *in, size_t * errpos,
+                                 const Tld_table ** overrides);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif /* TLD_H */
diff --git a/lib/tlds.c b/lib/tlds.c
new file mode 100644 (file)
index 0000000..14263a4
--- /dev/null
@@ -0,0 +1,63 @@
+/* This file is automatically generated.  DO NOT EDIT!
+   Instead, edit gen-tld-tables.pl and re-run.  */
+
+#include "tld.h"
+
+/* TLD fr */
+static const Tld_table_element _tld_fr_valid[] =
+{
+  { 0x2d,  0x2d },
+  { 0x30,  0x39 },
+  { 0x61,  0x7a },
+  { 0xe0,  0xe0 },
+  { 0xe2,  0xe2 },
+  { 0xe6,  0xeb },
+  { 0xee,  0xef },
+  { 0xf4,  0xf4 },
+  { 0xf9,  0xf9 },
+  { 0xfb,  0xfc },
+  { 0xff,  0xff },
+  { 0x153,  0x153 }
+};
+
+static const Tld_table _tld_fr =
+{
+  "fr",
+  "1.0",
+  12,
+  &_tld_fr_valid[0]
+};
+
+/* TLD no */
+static const Tld_table_element _tld_no_valid[] =
+{
+  { 0xe0,  0xe1 },
+  { 0xe4,  0xea },
+  { 0xf1,  0xf4 },
+  { 0xf6,  0xf6 },
+  { 0xf8,  0xf8 },
+  { 0xfc,  0xfc },
+  { 0x10d,  0x10d },
+  { 0x111,  0x111 },
+  { 0x144,  0x144 },
+  { 0x14b,  0x14b },
+  { 0x161,  0x161 },
+  { 0x167,  0x167 },
+  { 0x17e,  0x17e }
+};
+
+static const Tld_table _tld_no =
+{
+  "no",
+  "1.0",
+  13,
+  &_tld_no_valid[0]
+};
+
+/* Main array */
+const Tld_table * _tld_tables[] =
+{
+  &_tld_fr,
+  &_tld_no,
+  NULL
+};
diff --git a/lib/toutf8.c b/lib/toutf8.c
new file mode 100644 (file)
index 0000000..ee47005
--- /dev/null
@@ -0,0 +1,154 @@
+/* toutf8.c --- Convert strings from system locale into UTF-8.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+/* Get prototypes. */
+#include "stringprep.h"
+
+/* Get fprintf. */
+#include <stdio.h>
+
+/* Get getenv. */
+#include <stdlib.h>
+
+/* Get strlen. */
+#include <string.h>
+
+/* Get iconv_string. */
+#include "striconv.h"
+
+#ifdef _LIBC
+# define HAVE_ICONV 1
+# define HAVE_LOCALE_H 1
+# define HAVE_LANGINFO_CODESET 1
+#endif
+
+#include <locale.h>
+
+#ifdef HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+
+#ifdef _LIBC
+# define stringprep_locale_charset() nl_langinfo (CODESET)
+#else
+/**
+ * stringprep_locale_charset - return charset used in current locale
+ *
+ * Find out current locale charset.  The function respect the CHARSET
+ * environment variable, but typically uses nl_langinfo(CODESET) when
+ * it is supported.  It fall back on "ASCII" if CHARSET isn't set and
+ * nl_langinfo isn't supported or return anything.
+ *
+ * Note that this function return the application's locale's preferred
+ * charset (or thread's locale's preffered charset, if your system
+ * support thread-specific locales).  It does not return what the
+ * system may be using.  Thus, if you receive data from external
+ * sources you cannot in general use this function to guess what
+ * charset it is encoded in.  Use stringprep_convert from the external
+ * representation into the charset returned by this function, to have
+ * data in the locale encoding.
+ *
+ * Return value: Return the character set used by the current locale.
+ *   It will never return NULL, but use "ASCII" as a fallback.
+ **/
+const char *
+stringprep_locale_charset (void)
+{
+  const char *charset = getenv ("CHARSET");    /* flawfinder: ignore */
+
+  if (charset && *charset)
+    return charset;
+
+# ifdef HAVE_LANGINFO_CODESET
+  charset = nl_langinfo (CODESET);
+
+  if (charset && *charset)
+    return charset;
+# endif
+
+  return "ASCII";
+}
+#endif
+
+/**
+ * stringprep_convert - encode string using new character set
+ * @str: input zero-terminated string.
+ * @to_codeset: name of destination character set.
+ * @from_codeset: name of origin character set, as used by @str.
+ *
+ * Convert the string from one character set to another using the
+ * system's iconv() function.
+ *
+ * Return value: Returns newly allocated zero-terminated string which
+ *   is @str transcoded into to_codeset.
+ **/
+char *
+stringprep_convert (const char *str,
+                   const char *to_codeset, const char *from_codeset)
+{
+#if HAVE_ICONV
+  return str_iconv (str, from_codeset, to_codeset);
+#else
+  char *p;
+  fprintf (stderr, "libidn: warning: libiconv not installed, cannot "
+          "convert data to UTF-8\n");
+  p = malloc (strlen (str) + 1);
+  if (!p)
+    return NULL;
+  return strcpy (p, str);
+#endif
+}
+
+/**
+ * stringprep_locale_to_utf8 - convert locale encoded string to UTF-8
+ * @str: input zero terminated string.
+ *
+ * Convert string encoded in the locale's character set into UTF-8 by
+ * using stringprep_convert().
+ *
+ * Return value: Returns newly allocated zero-terminated string which
+ *   is @str transcoded into UTF-8.
+ **/
+char *
+stringprep_locale_to_utf8 (const char *str)
+{
+  return stringprep_convert (str, "UTF-8", stringprep_locale_charset ());
+}
+
+/**
+ * stringprep_utf8_to_locale - encode UTF-8 string to locale encoding
+ * @str: input zero terminated string.
+ *
+ * Convert string encoded in UTF-8 into the locale's character set by
+ * using stringprep_convert().
+ *
+ * Return value: Returns newly allocated zero-terminated string which
+ *   is @str transcoded into the locale's character set.
+ **/
+char *
+stringprep_utf8_to_locale (const char *str)
+{
+  return stringprep_convert (str, stringprep_locale_charset (), "UTF-8");
+}
diff --git a/lib/version.c b/lib/version.c
new file mode 100644 (file)
index 0000000..999d7d0
--- /dev/null
@@ -0,0 +1,49 @@
+/* version.c --- Version handling.
+ * Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "stringprep.h"
+
+#include <string.h> /* for strverscmp */
+
+/**
+ * stringprep_check_version - check for library version
+ * @req_version: Required version number, or NULL.
+ *
+ * Check that the version of the library is at minimum the requested one
+ * and return the version string; return NULL if the condition is not
+ * satisfied.  If a NULL is passed to this function, no check is done,
+ * but the version string is simply returned.
+ *
+ * See %STRINGPREP_VERSION for a suitable @req_version string.
+ *
+ * Return value: Version string of run-time library, or NULL if the
+ * run-time library does not meet the required version number.
+ */
+const char *
+stringprep_check_version (const char *req_version)
+{
+  if (!req_version || strverscmp (req_version, STRINGPREP_VERSION) <= 0)
+    return STRINGPREP_VERSION;
+
+  return NULL;
+}
diff --git a/libc/README b/libc/README
new file mode 100644 (file)
index 0000000..d57412e
--- /dev/null
@@ -0,0 +1,31 @@
+Libidn libc/README -- Instructions for building as a GNU Libc add-on.
+Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+See the end for copying conditions.
+
+GNU Libidn is now part of GNU Libc, so the stand-alone patch and
+instructions that were distributed here before has been removed.
+
+See getaddrinfo-idn.txt for the write-up of the API that is used in
+Libc.
+
+Simply build Libc as you would normally, but specify "libidn" as an
+add-on, as in --enable-add-ons=libidn to configure.
+
+Once installed, you may build and run the sample still distributed in
+this directory, perhaps as follows:
+
+$ gcc -o example example.c -L/usr/local/glibc/lib -Wl,-rpath,/usr/local/glibc/lib -nostdinc -I/usr/local/glibc/include -I/usr/include -I/usr/lib/gcc-lib/i386-linux/2.95.4/include
+$ CHARSET=iso-8859-1 ./example
+locale charset `iso-8859-1'
+gettaddrinfo(räksmörgås.josefsson.org):
+address `217.13.230.178'
+canonical name `178.230.13.217.in-addr.dgcsystems.net'
+$
+
+Internally the domain name xn--rksmrgs-5wao1o.josefsson.org is looked
+up in DNS.
+
+----------------------------------------------------------------------
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/libc/example.c b/libc/example.c
new file mode 100644 (file)
index 0000000..02c9bcb
--- /dev/null
@@ -0,0 +1,75 @@
+/* example.c --- Example code showing how to use IDN enabled getaddrinfo().
+ * Copyright (C) 2003, 2004  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * GNU Libidn is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * GNU Libidn is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GNU Libidn; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#define _GNU_SOURCE 1
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <locale.h>            /* setlocale() */
+
+/*
+ * Compiling against IDN enabled Libc:
+ *
+ * $ gcc -o example example.c -L/usr/local/glibc/lib -Wl,-rpath,/usr/local/glibc/lib -nostdinc -I/usr/local/glibc/include -I/usr/include -I/usr/lib/gcc-lib/i486-linux/3.3.3/include
+ * $ CHARSET=iso-8859-1 ./example
+ * locale charset `iso-8859-1'
+ * gettaddrinfo(räksmörgås.josefsson.org):
+ * address `217.13.230.178'
+ * canonical name `178.230.13.217.in-addr.dgcsystems.net'
+ * $
+ *
+ * Internally the name iesg--rksmrgsa-0zap8p.josefsson.org is looked
+ * up in DNS.
+ */
+
+int
+main(int argc, char *argv[])
+{
+  char *in = argc > 1 ? argv[1] : "räksmörgås.josefsson.org";
+  struct addrinfo hints;
+  struct addrinfo *res = NULL;
+  int rc;
+
+  setlocale (LC_ALL, "");
+
+  //printf("locale charset `%s'\n", stringprep_locale_charset());
+
+  memset(&hints, 0, sizeof(hints));
+  hints.ai_flags = AI_CANONNAME|AI_IDN;
+
+  printf("gettaddrinfo(%s):\n", in);
+  rc = getaddrinfo(in, NULL, &hints, &res);
+  if (rc)
+    printf("gai err %d: %s\n", rc, gai_strerror(rc));
+  else if (res)
+    printf("address `%s'\ncanonical name `%s'\n",
+          res->ai_addr ?
+          /* FIXME: Use inet_ntop, so it works for IPv6 too. */
+          inet_ntoa(((struct sockaddr_in*)res->ai_addr)->sin_addr) : "ERROR",
+          res->ai_canonname ? res->ai_canonname : "ERROR");
+  else
+    printf("Bad magic\n");
+
+  return 0;
+}
diff --git a/libc/getaddrinfo-idn.txt b/libc/getaddrinfo-idn.txt
new file mode 100644 (file)
index 0000000..73705d6
--- /dev/null
@@ -0,0 +1,117 @@
+Libidn getaddrinfo-idn.txt -- Proposal for IDN support in POSIX getaddrinfo.
+Copyright (C) 2003, 2004 Simon Josefsson
+See the end for copying conditions.
+
+Background
+----------
+
+Libidn is a package for internationalized string handling based on the
+Stringprep, Punycode and Internationalized Domain Names in
+Applications (IDNA) specifications.  It can be used by applications
+directly by linking to it, as is done by, e.g., Gnus, KDE, and Mutt.
+
+Having each and every application link with and perform its own IDN
+handling is not a good idea.  It bloats the code and makes things
+unnecessarily complex.  Only few applications, such as web browsers
+and mail clients, will need to do this in the future, to provide good
+user interfaces for internationalization.
+
+See http://josefsson.org/libidn/ for more information.
+
+Alternative Approaches
+----------------------
+
+There are implementation that modify gethostbyname() to accept UTF-8
+strings and perform the IDNA ToASCII operation within gethostbyname().
+
+There are even implementations that assume gethostbyname (on the
+client host) perform no validation of the string and will send UTF-8
+strings out to the DNS server, and perform the IDN-conversion on the
+DNS server.
+
+Some doubts can be raised whether this is an approach that is likely
+to be standardized.  It also lack in functionality: it only provide
+black-box ToASCII functionality.  The application cannot extract the
+output from the ToASCII operation.  More important, there is no way to
+perform a ToUnicode operation that applications may want to use for
+display purposes.  Furthermore, while the first can support locale
+specific character sets (e.g., ISO-8859-1), the second approach is
+bound to either guess the character set, or always use UTF-8.
+
+See also the thread rooted in <iluel7n6bmu.fsf@latte.josefsson.org>
+posted to libc-alpha@sources.redhat.com on 08 Jan 2003.
+
+What I propose
+--------------
+
+The getaddrinfo() API should have two new flags, AI_IDN and
+AI_CANONIDN.  Roughly they correspond to IDNA ToASCII and IDNA
+ToUnicode, but there are several details.  Note that strings are still
+'char*', i.e. it does not use the "wide" character type, and that the
+encoding of non-ASCII strings are the current locale's character set
+(i.e., nl_langinfo(CODESET)).
+
+An application that uses AI_IDN signal to the getaddrinfo()
+implementation that the input host name may be non-ASCII and that the
+appropriate IDNA ToASCII steps should be carried out on the input, and
+the output from the ToASCII operation (if any) should be used in the
+lookup using the current resolver processing.
+
+An application that uses AI_CANONIDN signal to the getaddrinfo()
+implementation that the input host name should be put through the IDNA
+ToUnicode steps, and the output of that placed in the 'ai_canonname'
+field of the resulting structure.  Normal resolver processing applies
+to the input string, of course.
+
+Consequently, an application that uses AI_IDN|AI_CANONIDN signal to
+the getaddrinfo() implementation that the input host name may be
+non-ASCII and should be put through the IDNA ToASCII steps before run
+through the resolver, and that the input string should also be run
+through the IDNA ToUnicode steps and the output of that placed in the
+'ai_canonname' field.
+
+The semantics of AI_CANONNAME|AI_CANONIDN is that instead of running
+the ToUnicode IDNA steps on the input string, the canonical host name
+as returned by the resolver for the input string should be used in the
+ToUnicode IDNA step.
+
+Details
+-------
+
+Four new flags has been proposed; AI_IDN_ALLOW_UNASSIGNED,
+AI_IDN_USE_STD3_ASCII_RULES for getaddrinfo, and
+NI_IDN_ALLOW_UNASSIGNED, NI_IDN_USE_STD3_ASCII_RULES for getnameinfo.
+The implementation is simple, if specified those flag will set the
+appropriate flag in the call to the IDNA functions.  See the RFC for
+the meaning of those flags.
+
+Status
+------
+
+The AI_IDN flag has been implemented and shipped as a proof-of-concept
+patch for GNU Libc with GNU Libidn since January 2003.  Binary libc
+packages with the patch exists for (at least) two GNU/Linux
+distributions.  The AI_CANONIDN flag is not yet implemented.
+
+As of March 2004, Libidn has been integrated as an add-on in the GNU
+Libc CVS repository.  The AI_CANONIDN flag has been implemented.  The
+AllowUnassigned and UseSTD3ASCIIRules flags were added.
+
+Future
+------
+
+Allow non-ASCII in gethostname (and similar functions), if
+administrator has supplied, e.g., 'option idn' in /etc/resolv.conf?
+
+Feedback
+--------
+
+This document is a work-in-progress and the details may change.
+Contact me at simon@josefsson.org to discuss changes.
+
+----------------------------------------------------------------------
+Permission is granted to anyone to make or distribute verbatim copies
+of this document, in any medium, provided that the copyright notice
+and permission notice are preserved, and that the distributor grants
+the recipient permission for further redistribution as permitted by
+this notice.  Modified versions may not be made.
diff --git a/libidn.pc.in b/libidn.pc.in
new file mode 100644 (file)
index 0000000..7cf0022
--- /dev/null
@@ -0,0 +1,22 @@
+# Process this file with autoconf to produce a pkg-config metadata file.
+# Copyright 2002, 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+# 
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+# 
+# This file is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Libidn
+Description: IETF stringprep, nameprep, punycode, IDNA text processing.
+URL: http://www.gnu.org/software/libidn/
+Version: @VERSION@
+Libs: -L${libdir} -lidn
+Cflags: -I${includedir}
diff --git a/m4/ac_prog_jar.m4 b/m4/ac_prog_jar.m4
new file mode 100644 (file)
index 0000000..7d5df71
--- /dev/null
@@ -0,0 +1,13 @@
+dnl Available from the GNU Autoconf Macro Archive at:
+dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_prog_jar.html
+dnl
+AC_DEFUN([AC_PROG_JAR],[
+AC_REQUIRE([AC_EXEEXT])dnl
+if test "x$JAVAPREFIX" = x; then
+        test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar$EXEEXT)
+else
+        test "x$JAR" = x && AC_CHECK_PROGS(JAR, jar, $JAVAPREFIX)
+fi
+test "x$JAR" = x && AC_MSG_ERROR([no acceptable jar program found in \$PATH])
+AC_PROVIDE([$0])dnl
+])
diff --git a/m4/codeset.m4 b/m4/codeset.m4
new file mode 100644 (file)
index 0000000..223955b
--- /dev/null
@@ -0,0 +1,21 @@
+# codeset.m4 serial 2 (gettext-0.16)
+dnl Copyright (C) 2000-2002, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_LANGINFO_CODESET],
+[
+  AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
+    [AC_TRY_LINK([#include <langinfo.h>],
+      [char* cs = nl_langinfo(CODESET); return !cs;],
+      am_cv_langinfo_codeset=yes,
+      am_cv_langinfo_codeset=no)
+    ])
+  if test $am_cv_langinfo_codeset = yes; then
+    AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
+      [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+  fi
+])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
new file mode 100644 (file)
index 0000000..c9ae1f7
--- /dev/null
@@ -0,0 +1,381 @@
+# gettext.m4 serial 60 (gettext-0.17)
+dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
+dnl    default (if it is not specified or empty) is 'no-libtool'.
+dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
+dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
+dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl    depending on --{enable,disable}-{shared,static} and on the presence of
+dnl    AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
+dnl    $(top_builddir)/intl/libintl.a will be created.
+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
+dnl    implementations (in libc or libintl) without the ngettext() function
+dnl    will be ignored.  If NEEDSYMBOL is specified and is
+dnl    'need-formatstring-macros', then GNU gettext implementations that don't
+dnl    support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
+dnl INTLDIR is used to find the intl libraries.  If empty,
+dnl    the value `$(top_builddir)/intl/' is used.
+dnl
+dnl The result of the configuration is one of three cases:
+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
+dnl    and used.
+dnl    Catalog format: GNU --> install in $(datadir)
+dnl    Catalog extension: .mo after installation, .gmo in source tree
+dnl 2) GNU gettext has been found in the system's C library.
+dnl    Catalog format: GNU --> install in $(datadir)
+dnl    Catalog extension: .mo after installation, .gmo in source tree
+dnl 3) No internationalization, always use English msgid.
+dnl    Catalog format: none
+dnl    Catalog extension: none
+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
+dnl The use of .gmo is historical (it was needed to avoid overwriting the
+dnl GNU format catalogs when building on a platform with an X/Open gettext),
+dnl but we keep it in order not to force irrelevant filename changes on the
+dnl maintainers.
+dnl
+AC_DEFUN([AM_GNU_GETTEXT],
+[
+  dnl Argument checking.
+  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])])
+  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+  define([gt_included_intl],
+    ifelse([$1], [external],
+      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
+      [yes]))
+  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+  gt_NEEDS_INIT
+  AM_GNU_GETTEXT_NEED([$2])
+
+  AC_REQUIRE([AM_PO_SUBDIRS])dnl
+  ifelse(gt_included_intl, yes, [
+    AC_REQUIRE([AM_INTL_SUBDIR])dnl
+  ])
+
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Sometimes libintl requires libiconv, so first search for libiconv.
+  dnl Ideally we would do this search only after the
+  dnl      if test "$USE_NLS" = "yes"; then
+  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+  dnl the configure script would need to contain the same shell code
+  dnl again, outside any 'if'. There are two solutions:
+  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
+  dnl documented, we avoid it.
+  ifelse(gt_included_intl, yes, , [
+    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+  ])
+
+  dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
+  gt_INTL_MACOSX
+
+  dnl Set USE_NLS.
+  AC_REQUIRE([AM_NLS])
+
+  ifelse(gt_included_intl, yes, [
+    BUILD_INCLUDED_LIBINTL=no
+    USE_INCLUDED_LIBINTL=no
+  ])
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+  dnl Add a version number to the cache macros.
+  case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+  dnl If we use NLS figure out what method
+  if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+    ifelse(gt_included_intl, yes, [
+      AC_MSG_CHECKING([whether included gettext is requested])
+      AC_ARG_WITH(included-gettext,
+        [  --with-included-gettext use the GNU gettext library included here],
+        nls_cv_force_use_gnu_gettext=$withval,
+        nls_cv_force_use_gnu_gettext=no)
+      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+
+      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+    ])
+        dnl User does not insist on using GNU NLS library.  Figure out what
+        dnl to use.  If GNU gettext is available we use this.  Else we have
+        dnl to fall back to GNU NLS library.
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+         [AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;],
+            [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+            [eval "$gt_func_gnugettext_libc=yes"],
+            [eval "$gt_func_gnugettext_libc=no"])])
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+          dnl Sometimes libintl requires libiconv, so first search for libiconv.
+          ifelse(gt_included_intl, yes, , [
+            AM_ICONV_LINK
+          ])
+          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+          dnl even if libiconv doesn't exist.
+          AC_LIB_LINKFLAGS_BODY([intl])
+          AC_CACHE_CHECK([for GNU gettext in libintl],
+            [$gt_func_gnugettext_libintl],
+           [gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+            dnl Now see whether libintl exists and does not depend on libiconv.
+            AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+              [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+              [eval "$gt_func_gnugettext_libintl=yes"],
+              [eval "$gt_func_gnugettext_libintl=no"])
+            dnl Now see whether libintl exists and depends on libiconv.
+            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+                [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+               [LIBINTL="$LIBINTL $LIBICONV"
+                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                eval "$gt_func_gnugettext_libintl=yes"
+               ])
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"])
+        fi
+
+        dnl If an already present or preinstalled GNU gettext() is found,
+        dnl use it.  But if this macro is used in GNU gettext, and GNU
+        dnl gettext is already preinstalled in libintl, we update this
+        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+          dnl Reset the values set by searching for libintl.
+          LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
+
+    ifelse(gt_included_intl, yes, [
+        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+          dnl GNU gettext is not found in the C library.
+          dnl Fall back on included GNU gettext library.
+          nls_cv_use_gnu_gettext=yes
+        fi
+      fi
+
+      if test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions used to generate GNU NLS library.
+        BUILD_INCLUDED_LIBINTL=yes
+        USE_INCLUDED_LIBINTL=yes
+        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
+        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
+        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+      fi
+
+      CATOBJEXT=
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions to use GNU gettext tools.
+        CATOBJEXT=.gmo
+      fi
+    ])
+
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Some extra flags are needed during linking.
+        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+      AC_DEFINE(ENABLE_NLS, 1,
+        [Define to 1 if translation of program messages to the user's native language
+   is requested.])
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  AC_MSG_CHECKING([whether to use NLS])
+  AC_MSG_RESULT([$USE_NLS])
+  if test "$USE_NLS" = "yes"; then
+    AC_MSG_CHECKING([where the gettext function comes from])
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    AC_MSG_RESULT([$gt_source])
+  fi
+
+  if test "$USE_NLS" = "yes"; then
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        AC_MSG_CHECKING([how to link with libintl])
+        AC_MSG_RESULT([$LIBINTL])
+        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+      fi
+
+      dnl For backward compatibility. Some packages may be using this.
+      AC_DEFINE(HAVE_GETTEXT, 1,
+       [Define if the GNU gettext() function is already present or preinstalled.])
+      AC_DEFINE(HAVE_DCGETTEXT, 1,
+       [Define if the GNU dcgettext() function is already present or preinstalled.])
+    fi
+
+    dnl We need to process the po/ directory.
+    POSUB=po
+  fi
+
+  ifelse(gt_included_intl, yes, [
+    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
+    dnl to 'yes' because some of the testsuite requires it.
+    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
+      BUILD_INCLUDED_LIBINTL=yes
+    fi
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(BUILD_INCLUDED_LIBINTL)
+    AC_SUBST(USE_INCLUDED_LIBINTL)
+    AC_SUBST(CATOBJEXT)
+
+    dnl For backward compatibility. Some configure.ins may be using this.
+    nls_cv_header_intl=
+    nls_cv_header_libgt=
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    DATADIRNAME=share
+    AC_SUBST(DATADIRNAME)
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INSTOBJEXT=.mo
+    AC_SUBST(INSTOBJEXT)
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    GENCAT=gencat
+    AC_SUBST(GENCAT)
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INTLOBJS=
+    if test "$USE_INCLUDED_LIBINTL" = yes; then
+      INTLOBJS="\$(GETTOBJS)"
+    fi
+    AC_SUBST(INTLOBJS)
+
+    dnl Enable libtool support if the surrounding package wishes it.
+    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
+    AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
+  ])
+
+  dnl For backward compatibility. Some Makefiles may be using this.
+  INTLLIBS="$LIBINTL"
+  AC_SUBST(INTLLIBS)
+
+  dnl Make all documented variables known to autoconf.
+  AC_SUBST(LIBINTL)
+  AC_SUBST(LTLIBINTL)
+  AC_SUBST(POSUB)
+])
+
+
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
+[
+  m4_divert_text([DEFAULTS], [gt_needs=])
+  m4_define([gt_NEEDS_INIT], [])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
+[
+  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
diff --git a/m4/gtk-doc.m4 b/m4/gtk-doc.m4
new file mode 100644 (file)
index 0000000..ef01a82
--- /dev/null
@@ -0,0 +1,61 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+  AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+  AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+
+  dnl check for tools we added during development
+  AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
+  AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
+  AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
+
+  dnl for overriding the documentation installation directory
+  AC_ARG_WITH([html-dir],
+    AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+    [with_html_dir='${datadir}/gtk-doc/html'])
+  HTML_DIR="$with_html_dir"
+  AC_SUBST([HTML_DIR])
+
+  dnl enable/disable documentation building
+  AC_ARG_ENABLE([gtk-doc],
+    AS_HELP_STRING([--enable-gtk-doc],
+                   [use gtk-doc to build documentation [[default=no]]]),,
+    [enable_gtk_doc=no])
+
+  if test x$enable_gtk_doc = xyes; then
+    ifelse([$1],[],
+      [PKG_CHECK_EXISTS([gtk-doc],,
+                        AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
+      [PKG_CHECK_EXISTS([gtk-doc >= $1],,
+                        AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
+  fi
+
+  AC_MSG_CHECKING([whether to build gtk-doc documentation])
+  AC_MSG_RESULT($enable_gtk_doc)
+
+  dnl enable/disable output formats
+  AC_ARG_ENABLE([gtk-doc-html],
+    AS_HELP_STRING([--enable-gtk-doc-html],
+                   [build documentation in html format [[default=yes]]]),,
+    [enable_gtk_doc_html=yes])
+    AC_ARG_ENABLE([gtk-doc-pdf],
+      AS_HELP_STRING([--enable-gtk-doc-pdf],
+                     [build documentation in pdf format [[default=no]]]),,
+      [enable_gtk_doc_pdf=no])
+
+  if test -n "$GTKDOC_MKPDF"; then
+    enable_gtk_doc_pdf=no
+  fi
+
+
+  AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
+  AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
+  AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])
+  AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
+  AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
+])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
new file mode 100644 (file)
index 0000000..66bc76f
--- /dev/null
@@ -0,0 +1,180 @@
+# iconv.m4 serial AM6 (gettext-0.17)
+dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+  dnl those with the standalone portable GNU libiconv installed).
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed libiconv and not disabled its use
+  dnl via --without-libiconv-prefix, he wants to use it. The first
+  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+  am_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+  AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+      [iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);],
+      am_cv_func_iconv=yes)
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+        [iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);],
+        am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes)
+      LIBS="$am_save_LIBS"
+    fi
+  ])
+  if test "$am_cv_func_iconv" = yes; then
+    AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [
+      dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
+      am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      AC_TRY_RUN([
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
+        [case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac])
+      LIBS="$am_save_LIBS"
+    ])
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+    AC_DEFINE(HAVE_ICONV, 1,
+      [Define if you have the iconv() function and it works.])
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    AC_MSG_CHECKING([how to link with libiconv])
+    AC_MSG_RESULT([$LIBICONV])
+  else
+    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+    dnl either.
+    CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+  AC_SUBST(LIBICONV)
+  AC_SUBST(LTLIBICONV)
+])
+
+AC_DEFUN([AM_ICONV],
+[
+  AM_ICONV_LINK
+  if test "$am_cv_func_iconv" = yes; then
+    AC_MSG_CHECKING([for iconv declaration])
+    AC_CACHE_VAL(am_cv_proto_iconv, [
+      AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    AC_MSG_RESULT([$]{ac_t:-
+         }[$]am_cv_proto_iconv)
+    AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
+      [Define as const if the declaration of iconv() needs const.])
+  fi
+])
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
new file mode 100644 (file)
index 0000000..d3f0d90
--- /dev/null
@@ -0,0 +1,51 @@
+# intlmacosx.m4 serial 1 (gettext-0.17)
+dnl Copyright (C) 2004-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on MacOS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+  dnl Check for API introduced in MacOS X 10.2.
+  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+    gt_cv_func_CFPreferencesCopyAppValue,
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
+       [CFPreferencesCopyAppValue(NULL, NULL)],
+       [gt_cv_func_CFPreferencesCopyAppValue=yes],
+       [gt_cv_func_CFPreferencesCopyAppValue=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
+      [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+  fi
+  dnl Check for API introduced in MacOS X 10.3.
+  AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
+       [gt_cv_func_CFLocaleCopyCurrent=yes],
+       [gt_cv_func_CFLocaleCopyCurrent=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
+      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+  AC_SUBST([INTL_MACOSX_LIBS])
+])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
new file mode 100644 (file)
index 0000000..96c4e2c
--- /dev/null
@@ -0,0 +1,110 @@
+# lib-ld.m4 serial 3 (gettext-0.13)
+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by GCC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]* | [A-Za-z]:[\\/]*)]
+      [re_direlt='/[^/][^/]*/\.\./']
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(acl_cv_path_LD,
+[if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      acl_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break ;;
+      *)
+       test "$with_gnu_ld" != yes && break ;;
+      esac
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
new file mode 100644 (file)
index 0000000..e3d26fc
--- /dev/null
@@ -0,0 +1,709 @@
+# lib-link.m4 serial 13 (gettext-0.17)
+dnl Copyright (C) 2001-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ(2.54)
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  define([Name],[translit([$1],[./-], [___])])
+  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+    AC_LIB_LINKFLAGS_BODY([$1], [$2])
+    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+  ])
+  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+  dnl results of this search when this library appears as a dependency.
+  HAVE_LIB[]NAME=yes
+  undefine([Name])
+  undefine([NAME])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. If found, it
+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  define([Name],[translit([$1],[./-], [___])])
+  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed lib[]Name and not disabled its use
+  dnl via --without-lib[]Name-prefix, he wants to use it.
+  ac_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+    ac_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIB[]NAME"
+    AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+    LIBS="$ac_save_LIBS"
+  ])
+  if test "$ac_cv_lib[]Name" = yes; then
+    HAVE_LIB[]NAME=yes
+    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
+    AC_MSG_CHECKING([how to link with lib[]$1])
+    AC_MSG_RESULT([$LIB[]NAME])
+  else
+    HAVE_LIB[]NAME=no
+    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+    dnl $INC[]NAME either.
+    CPPFLAGS="$ac_save_CPPFLAGS"
+    LIB[]NAME=
+    LTLIB[]NAME=
+    LIB[]NAME[]_PREFIX=
+  fi
+  AC_SUBST([HAVE_LIB]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  undefine([Name])
+  undefine([NAME])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl   acl_libext,
+dnl   acl_shlibext,
+dnl   acl_hardcode_libdir_flag_spec,
+dnl   acl_hardcode_libdir_separator,
+dnl   acl_hardcode_direct,
+dnl   acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
+  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
+  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
+  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+  AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+  ])
+  wl="$acl_cv_wl"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+  dnl Determine whether the user wants rpath handling at all.
+  AC_ARG_ENABLE(rpath,
+    [  --disable-rpath         do not hardcode runtime library paths],
+    :, enable_rpath=yes)
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  dnl Autoconf >= 2.61 supports dots in --with options.
+  define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
+[  --with-lib]N_A_M_E[-prefix[=DIR]  search for lib$1 in DIR/include and DIR/lib
+  --without-lib]N_A_M_E[-prefix     don't search for lib$1 in includedir and libdir],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+])
+  dnl Search the library and its dependencies in $additional_libdir and
+  dnl $LDFLAGS. Using breadth-first-seach.
+  LIB[]NAME=
+  LTLIB[]NAME=
+  INC[]NAME=
+  LIB[]NAME[]_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='$1 $2'
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+        dnl or AC_LIB_HAVE_LINKFLAGS call.
+        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+          else
+            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+            dnl that this library doesn't exist. So just drop it.
+            :
+          fi
+        else
+          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+          dnl and the already constructed $LIBNAME/$LTLIBNAME.
+          found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+            dnl The same code as in the loop below:
+            dnl First look for a shared library.
+            if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+            dnl Then look for a static library.
+            if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIB[]NAME; do
+              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                  dnl First look for a shared library.
+                  if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                  dnl Then look for a static library.
+                  if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+            dnl Found the library.
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+              dnl Linking with a shared library. We attempt to hardcode its
+              dnl directory into the executable's runpath, unless it's the
+              dnl standard /usr/lib.
+              if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                dnl No hardcoding is needed.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+              else
+                dnl Use an explicit option to hardcode DIR into the resulting
+                dnl binary.
+                dnl Potentially add DIR to ltrpathdirs.
+                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                dnl The hardcoding into $LIBNAME is system dependent.
+                if test "$acl_hardcode_direct" = yes; then
+                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+                  dnl resulting binary.
+                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                    dnl Use an explicit option to hardcode DIR into the resulting
+                    dnl binary.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    dnl Potentially add DIR to rpathdirs.
+                    dnl The rpathdirs will be appended to $LIBNAME at the end.
+                    haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                    dnl Rely on "-L$found_dir".
+                    dnl But don't add it if it's already contained in the LDFLAGS
+                    dnl or the already constructed $LIBNAME
+                    haveit=
+                    for x in $LDFLAGS $LIB[]NAME; do
+                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    else
+                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+                      dnl here, because this doesn't fit in flags passed to the
+                      dnl compiler. So give up. No hardcoding. This affects only
+                      dnl very old systems.
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                dnl Linking with a static library.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+              else
+                dnl We shouldn't come here, but anyway it's good to have a
+                dnl fallback.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+              fi
+            fi
+            dnl Assume the include files are nearby.
+            additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIB[]NAME[]_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+              dnl Potentially add $additional_includedir to $INCNAME.
+              dnl But don't add it
+              dnl   1. if it's the standard /usr/include,
+              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
+              dnl   3. if it's already present in $CPPFLAGS or the already
+              dnl      constructed $INCNAME,
+              dnl   4. if it doesn't exist as a directory.
+              if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INC[]NAME; do
+                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                      dnl Really add $additional_includedir to $INCNAME.
+                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+            dnl Look for dependencies.
+            if test -n "$found_la"; then
+              dnl Read the .la file. It defines the variables
+              dnl dlname, library_names, old_library, dependency_libs, current,
+              dnl age, revision, installed, dlopen, dlpreopen, libdir.
+              save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+              dnl We use only dependency_libs.
+              for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+                    dnl But don't add it
+                    dnl   1. if it's the standard /usr/lib,
+                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
+                    dnl   3. if it's already present in $LDFLAGS or the already
+                    dnl      constructed $LIBNAME,
+                    dnl   4. if it doesn't exist as a directory.
+                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LIBNAME.
+                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LTLIBNAME.
+                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                      dnl Potentially add DIR to rpathdirs.
+                      dnl The rpathdirs will be appended to $LIBNAME at the end.
+                      haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                      dnl Potentially add DIR to ltrpathdirs.
+                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                      haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                    dnl Handle this in the next round.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                    dnl Handle this in the next round. Throw away the .la's
+                    dnl directory; it is already contained in a preceding -L
+                    dnl option.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                    dnl Most likely an immediate library name.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+            dnl Didn't find the library; assume it is in the system directories
+            dnl known to the linker and runtime loader. (All the system
+            dnl directories known to the linker should also be known to the
+            dnl runtime loader, otherwise the system is severely misconfigured.)
+            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+      dnl Weird platform: only the last -rpath option counts, the user must
+      dnl pass all path elements in one option. We can arrange that for a
+      dnl single library, but not when more than one $LIBNAMEs are used.
+      alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+      acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+    else
+      dnl The -rpath options are cumulative.
+      for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+    dnl When using libtool, the option that works for both libraries and
+    dnl executables is -R. The -R options are cumulative.
+    for found_dir in $ltrpathdirs; do
+      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+    done
+  fi
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+  for element in [$2]; do
+    haveit=
+    for x in $[$1]; do
+      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      [$1]="${[$1]}${[$1]:+ }$element"
+    fi
+  done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+  AC_REQUIRE([AC_LIB_RPATH])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  $1=
+  if test "$enable_rpath" != no; then
+    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+      dnl Use an explicit option to hardcode directories into the resulting
+      dnl binary.
+      rpathdirs=
+      next=
+      for opt in $2; do
+        if test -n "$next"; then
+          dir="$next"
+          dnl No need to hardcode the standard /usr/lib.
+          if test "X$dir" != "X/usr/$acl_libdirstem"; then
+            rpathdirs="$rpathdirs $dir"
+          fi
+          next=
+        else
+          case $opt in
+            -L) next=yes ;;
+            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+                 dnl No need to hardcode the standard /usr/lib.
+                 if test "X$dir" != "X/usr/$acl_libdirstem"; then
+                   rpathdirs="$rpathdirs $dir"
+                 fi
+                 next= ;;
+            *) next= ;;
+          esac
+        fi
+      done
+      if test "X$rpathdirs" != "X"; then
+        if test -n ""$3""; then
+          dnl libtool is used for linking. Use -R options.
+          for dir in $rpathdirs; do
+            $1="${$1}${$1:+ }-R$dir"
+          done
+        else
+          dnl The linker is used for linking directly.
+          if test -n "$acl_hardcode_libdir_separator"; then
+            dnl Weird platform: only the last -rpath option counts, the user
+            dnl must pass all path elements in one option.
+            alldirs=
+            for dir in $rpathdirs; do
+              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+            done
+            acl_save_libdir="$libdir"
+            libdir="$alldirs"
+            eval flag=\"$acl_hardcode_libdir_flag_spec\"
+            libdir="$acl_save_libdir"
+            $1="$flag"
+          else
+            dnl The -rpath options are cumulative.
+            for dir in $rpathdirs; do
+              acl_save_libdir="$libdir"
+              libdir="$dir"
+              eval flag=\"$acl_hardcode_libdir_flag_spec\"
+              libdir="$acl_save_libdir"
+              $1="${$1}${$1:+ }$flag"
+            done
+          fi
+        fi
+      fi
+    fi
+  fi
+  AC_SUBST([$1])
+])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
new file mode 100644 (file)
index 0000000..a8684e1
--- /dev/null
@@ -0,0 +1,185 @@
+# lib-prefix.m4 serial 5 (gettext-0.15)
+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_LIB_ARG_WITH([lib-prefix],
+[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+  --without-lib-prefix    don't search for libraries in includedir and libdir],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+])
+  if test $use_additional = yes; then
+    dnl Potentially add $additional_includedir to $CPPFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/include,
+    dnl   2. if it's already present in $CPPFLAGS,
+    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_includedir" != "X/usr/include"; then
+      haveit=
+      for x in $CPPFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-I$additional_includedir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_includedir" = "X/usr/local/include"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_includedir"; then
+            dnl Really add $additional_includedir to $CPPFLAGS.
+            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+          fi
+        fi
+      fi
+    fi
+    dnl Potentially add $additional_libdir to $LDFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/lib,
+    dnl   2. if it's already present in $LDFLAGS,
+    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+      haveit=
+      for x in $LDFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-L$additional_libdir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux*) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_libdir"; then
+            dnl Really add $additional_libdir to $LDFLAGS.
+            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+          fi
+        fi
+      fi
+    fi
+  fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+  dnl Unfortunately, prefix and exec_prefix get only finally determined
+  dnl at the end of configure.
+  if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  $1
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing
+dnl the basename of the libdir, either "lib" or "lib64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+  dnl There is no formal standard regarding lib and lib64. The current
+  dnl practice is that on a system supporting 32-bit and 64-bit instruction
+  dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
+  dnl libraries go under $prefix/lib. We determine the compiler's default
+  dnl mode by looking at the compiler's library search path. If at least
+  dnl of its elements ends in /lib64 or points to a directory whose absolute
+  dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
+  dnl default, namely "lib".
+  acl_libdirstem=lib
+  searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+  if test -n "$searchpath"; then
+    acl_save_IFS="${IFS=       }"; IFS=":"
+    for searchdir in $searchpath; do
+      if test -d "$searchdir"; then
+        case "$searchdir" in
+          */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+          *) searchdir=`cd "$searchdir" && pwd`
+             case "$searchdir" in
+               */lib64 ) acl_libdirstem=lib64 ;;
+             esac ;;
+        esac
+      fi
+    done
+    IFS="$acl_save_IFS"
+  fi
+])
diff --git a/m4/libtool.m4 b/m4/libtool.m4
new file mode 100644 (file)
index 0000000..39ba996
--- /dev/null
@@ -0,0 +1,7357 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 56 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+                  [m4_fatal([Libtool version $1 or higher is required],
+                            63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\    *)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+_LT_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+       [m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+       [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+       [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+          m4_quote(lt_decl_varnames),
+       m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+                       lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+                                          [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+       dnl If the libtool generation code has been placed in $CONFIG_LT,
+       dnl instead of duplicating it all over again into config.status,
+       dnl then we will have config.status run $CONFIG_LT later, so it
+       dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\[$]0 --fallback-echo"')dnl "
+  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
+  ;;
+esac
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+cat >"$CONFIG_LT" <<_LTEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+
+lt_cl_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AS_SHELL_SANITIZE
+_AS_PREPARE
+
+exec AS_MESSAGE_FD>&1
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+if test "$no_create" != yes; then
+  lt_cl_success=:
+  test "$silent" = yes &&
+    lt_config_lt_args="$lt_config_lt_args --quiet"
+  exec AS_MESSAGE_LOG_FD>/dev/null
+  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+  exec AS_MESSAGE_LOG_FD>>config.log
+  $lt_cl_success || AS_EXIT(1)
+fi
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  _LT_PROG_XSI_SHELLFNS
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],                 [_LT_LANG(C)],
+  [C++],               [_LT_LANG(CXX)],
+  [Java],              [_LT_LANG(GCJ)],
+  [Fortran 77],                [_LT_LANG(F77)],
+  [Fortran],           [_LT_LANG(FC)],
+  [Windows Resource],  [_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+       [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+       [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+       [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&AS_MESSAGE_LOG_FD
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi])
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+       [lt_cv_ld_exported_symbols_list=yes],
+       [lt_cv_ld_exported_symbols_list=no])
+       LDFLAGS="$save_LDFLAGS"
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[[012]]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=echo
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    m4_if([$1], [CXX],
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX
+# -----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+            [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+        [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_SHELL_INIT
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[_LT_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $ECHO works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<_LT_EOF
+[$]*
+_LT_EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+  if test "X${echo_test_string+set}" != Xset; then
+    # find a string as large as possible, as long as the shell can cope with it
+    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+        { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+      then
+        break
+      fi
+    done
+  fi
+
+  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+     test "X$echo_testing_string" = "X$echo_test_string"; then
+    :
+  else
+    # The Solaris, AIX, and Digital Unix default echo programs unquote
+    # backslashes.  This makes it impossible to quote backslashes using
+    #   echo "$something" | sed 's/\\/\\\\/g'
+    #
+    # So, first we look for a working echo in the user's PATH.
+
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for dir in $PATH /usr/ucb; do
+      IFS="$lt_save_ifs"
+      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        ECHO="$dir/echo"
+        break
+      fi
+    done
+    IFS="$lt_save_ifs"
+
+    if test "X$ECHO" = Xecho; then
+      # We didn't find a better echo, so look for alternatives.
+      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        # This shell has a builtin print -r that does the trick.
+        ECHO='print -r'
+      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+          test "X$CONFIG_SHELL" != X/bin/ksh; then
+        # If we have ksh, try running configure again with it.
+        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+        export ORIGINAL_CONFIG_SHELL
+        CONFIG_SHELL=/bin/ksh
+        export CONFIG_SHELL
+        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+      else
+        # Try using printf.
+        ECHO='printf %s\n'
+        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+          echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+         # Cool, printf works
+         :
+        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+            test "X$echo_testing_string" = 'X\t' &&
+            echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+            test "X$echo_testing_string" = "X$echo_test_string"; then
+         CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+         export CONFIG_SHELL
+         SHELL="$CONFIG_SHELL"
+         export SHELL
+         ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+            test "X$echo_testing_string" = 'X\t' &&
+            echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+            test "X$echo_testing_string" = "X$echo_test_string"; then
+         ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+        else
+         # maybe with a smaller string...
+         prev=:
+
+         for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+           if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+           then
+             break
+           fi
+           prev="$cmd"
+         done
+
+         if test "$prev" != 'sed 50q "[$]0"'; then
+           echo_test_string=`eval $prev`
+           export echo_test_string
+           exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+         else
+           # Oops.  We lost completely, so just stick with echo.
+           ECHO=echo
+         fi
+        fi
+      fi
+    fi
+  fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(lt_ECHO)
+])
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1],
+    [An echo program that does not interpret backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_HELP_STRING([--disable-libtool-lock],
+    [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+       HPUX_IA64_MODE="32"
+       ;;
+      *ELF-64*)
+       HPUX_IA64_MODE="64"
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -melf32bsmip"
+         ;;
+       *N32*)
+         LD="${LD-ld} -melf32bmipn32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -melf64bmip"
+       ;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -32"
+         ;;
+       *N32*)
+         LD="${LD-ld} -n32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -64"
+         ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_i386"
+           ;;
+         ppc64-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf32ppclinux"
+           ;;
+         s390x-*linux*)
+           LD="${LD-ld} -m elf_s390"
+           ;;
+         sparc64-*linux*)
+           LD="${LD-ld} -m elf32_sparc"
+           ;;
+       esac
+       ;;
+      *64-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+         ppc*-*linux*|powerpc*-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
+           LD="${LD-ld} -m elf64_s390"
+           ;;
+         sparc*-*linux*)
+           LD="${LD-ld} -m elf64_sparc"
+           ;;
+       esac
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[AC_CHECK_TOOL(AR, ar, false)
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1])
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#              [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[        ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+                = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+         [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+       [AC_CHECK_FUNC([dlopen],
+             [lt_cv_dlopen="dlopen"],
+         [AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+           [AC_CHECK_LIB([svld], [dlopen],
+                 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+             [AC_CHECK_LIB([dld], [dld_link],
+                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+             ])
+           ])
+         ])
+       ])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+         lt_cv_dlopen_self, [dnl
+         _LT_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+           lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+         lt_cv_dlopen_self_static, [dnl
+         _LT_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+           lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+        [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+        [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+        [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+       [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+       [], [
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # Some binutils ld are patched to set DT_RUNPATH
+  save_LDFLAGS=$LDFLAGS
+  save_libdir=$libdir
+  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+       [shlibpath_overrides_runpath=yes])])
+  LDFLAGS=$save_LDFLAGS
+  libdir=$save_libdir
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+    [Variables whose values should be saved in libtool wrapper scripts and
+    restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+    [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+    [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+    [[List of archive names.  First name is the real one, the rest are links.
+    The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+    [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [postinstall_cmds], [2],
+    [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+    [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+    [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+    [[As "finish_cmds", except a single script fragment to be evaled but
+    not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+    [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+    [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+    [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+        [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+       [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_DECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+    [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+    [Command to use when deplibs_check_method == "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       # Tru64's nm complains that /dev/null is an invalid object file
+       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+       */dev/null* | *'Invalid file or object type'*)
+         lt_cv_path_NM="$tmp_nm -B"
+         break
+         ;;
+       *)
+         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         */dev/null*)
+           lt_cv_path_NM="$tmp_nm -p"
+           break
+           ;;
+         *)
+           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+           continue # so that we can try to find one that supports BSD flags
+           ;;
+         esac
+         ;;
+       esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+       [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK ['"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx]"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[    ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+         cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+const struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+         cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_save_LIBS="$LIBS"
+         lt_save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+         if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS="$lt_save_LIBS"
+         CFLAGS="$lt_save_CFLAGS"
+       else
+         echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+    [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+    [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+    [lt_cv_sys_global_symbol_to_c_name_address], [1],
+    [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+       # All AIX code is PIC.
+       if test "$host_cpu" = ia64; then
+         # AIX 5 now supports IA64 processor
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+       else
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+       fi
+       ;;
+      chorus*)
+       case $cc_basename in
+       cxch68*)
+         # Green Hills C++ Compiler
+         # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+         ;;
+       esac
+       ;;
+      dgux*)
+       case $cc_basename in
+         ec++*)
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         ghcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      freebsd* | dragonfly*)
+       # FreeBSD uses GNU C++
+       ;;
+      hpux9* | hpux10* | hpux11*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+           if test "$host_cpu" != ia64; then
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+           fi
+           ;;
+         aCC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+           case $host_cpu in
+           hppa*64*|ia64*)
+             # +Z the default
+             ;;
+           *)
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+             ;;
+           esac
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      interix*)
+       # This is c89, which is MS Visual C++ (no shared libs)
+       # Anyone wants to do a port?
+       ;;
+      irix5* | irix6* | nonstopux*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           # CC pic flag -KPIC is the default.
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      linux* | k*bsd*-gnu)
+       case $cc_basename in
+         KCC*)
+           # KAI C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           ;;
+         ecpc* )
+           # old Intel C++ for x86_64 which still supported -KPIC.
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;;
+         icpc* )
+           # Intel C++, used to be incompatible with GCC.
+           # ICC 10 doesn't accept -KPIC any more.
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;;
+         pgCC* | pgcpp*)
+           # Portland Group C++ compiler
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+         cxx*)
+           # Compaq C++
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         xlc* | xlC*)
+           # IBM XL 8.0 on PPC
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+             _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+             _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+      lynxos*)
+       ;;
+      m88k*)
+       ;;
+      mvs*)
+       case $cc_basename in
+         cxx*)
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      netbsd*)
+       ;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+       case $cc_basename in
+         KCC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           ;;
+         RCC*)
+           # Rational C++ 2.4.1
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         cxx*)
+           # Digital/Compaq C++
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      psos*)
+       ;;
+      solaris*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+           ;;
+         gcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sunos4*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.x
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+         lcc*)
+           # Lucid
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+       esac
+       ;;
+      tandem*)
+       case $cc_basename in
+         NCC*)
+           # NonStop-UX NCC 3.20
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      vxworks*)
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+       ;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       # +Z the default
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      xl*)
+       # IBM XL C 8.0/Fortran 10.1 on PPC
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C 5.9
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+       *Sun\ F*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+         ;;
+       esac
+       ;;
+      esac
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+       [How to pass a linker flag through the compiler])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+       [Additional compiler flags for building library objects])
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+       [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix[[4-9]]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw* | cegcc*)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _LT_TAGVAR(always_export_symbols, $1)=no
+  _LT_TAGVAR(archive_cmds, $1)=
+  _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
+  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(hardcode_automatic, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(inherit_rpath, $1)=no
+  _LT_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_TAGVAR(module_cmds, $1)=
+  _LT_TAGVAR(module_expsym_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  _LT_TAGVAR(ld_shlibs, $1)=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    interix[[3-9]]*)
+      _LT_TAGVAR(hardcode_direct, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95*)       # Portland Group f77 and f90 compilers
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         _LT_TAGVAR(whole_archive_flag_spec, $1)=
+         tmp_sharedflag='--shared' ;;
+       xl[[cC]]*)                      # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         _LT_TAGVAR(compiler_needs_object, $1)=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+       case $cc_basename in
+       xlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+         _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+         _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           _LT_TAGVAR(ld_shlibs, $1)=no
+         fi
+       ;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       _LT_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix[[4-9]]*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       else
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+         ;;
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_TAGVAR(archive_cmds, $1)=''
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[[012]]|aix4.[[012]].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         :
+         else
+         # We have old collect2
+         _LT_TAGVAR(hardcode_direct, $1)=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         _LT_TAGVAR(hardcode_minus_L, $1)=yes
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
+
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+         _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+         _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+         # Exported symbols can be pulled into shared objects from archives
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+         _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[[45]]*)
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
+      ;;
+
+    dgux*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+       _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       # hardcode_minus_L: Not really in the search PATH,
+       # but as the default location of the library.
+       _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+       case $host_cpu in
+       hppa*64*|ia64*)
+         _LT_TAGVAR(hardcode_direct, $1)=no
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+         ;;
+       *)
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         _LT_TAGVAR(hardcode_minus_L, $1)=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+        AC_LINK_IFELSE(int foo(void) {},
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+        )
+        LDFLAGS="$save_LDFLAGS"
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(inherit_rpath, $1)=yes
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       else
+         case $host_os in
+          openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+            _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+            ;;
+          *)
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         ;;
+       *)
+         wlarc='${wl}'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+         _LT_TAGVAR(hardcode_direct, $1)=no
+        ;;
+       motorola)
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       _LT_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+    [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+      $RM conftest*
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+       pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+        _LT_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+        then
+         _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+         _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $RM conftest*
+      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+    [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+    [enable_shared_with_static_runtimes], [0],
+    [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+    [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+    [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+    [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+    [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+    [Commands used to build a loadable module if different from building
+    a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+    [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+    [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+    [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+    [Flag to hardcode $libdir into a binary during linking.
+    This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+    [[If ld is used when linking, flag to hardcode $libdir into a binary
+    during linking.  This must work even if $libdir does not exist]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+    [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+    [Set to "yes" if building a shared library automatically hardcodes DIR
+    into the library and all subsequent libraries and executables linked
+    against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+    [Set to yes if linker adds runtime paths of dependent libraries
+    to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+    [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [fix_srcfile_path], [1],
+    [Fix the shell variable $srcfile for the compiler])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+    [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+    [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+    [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [file_list_spec], [1],
+    [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl    [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_SYS_DYNAMIC_LINKER($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+  LT_SYS_DLOPEN_SELF
+  _LT_CMD_STRIPLIB
+
+  # Report which library types will actually be built
+  AC_MSG_CHECKING([if libtool supports shared libraries])
+  AC_MSG_RESULT([$can_build_shared])
+
+  AC_MSG_CHECKING([whether to build shared libraries])
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[[4-9]]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  AC_MSG_RESULT([$enable_shared])
+
+  AC_MSG_CHECKING([whether to build static libraries])
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  AC_MSG_RESULT([$enable_static])
+
+  _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_PROG_CXX
+# ------------
+# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
+# compiler, we have our own version here.
+m4_defun([_LT_PROG_CXX],
+[
+pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
+AC_PROG_CXX
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_CXX
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_CXX], [])
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[AC_REQUIRE([_LT_PROG_CXX])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+    else
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+      LT_PATH_LD
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+         $GREP 'no-whole-archive' > /dev/null; then
+          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+    _LT_TAGVAR(ld_shlibs, $1)=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+      aix[[4-9]]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+           for ld_flag in $LDFLAGS; do
+             case $ld_flag in
+             *-brtl*)
+               aix_use_runtimelinking=yes
+               break
+               ;;
+             esac
+           done
+           ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        _LT_TAGVAR(archive_cmds, $1)=''
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[[012]]|aix4.[[012]].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+            strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+           # We have reworked collect2
+           :
+         else
+           # We have old collect2
+           _LT_TAGVAR(hardcode_direct, $1)=unsupported
+           # It fails to find uninstalled libraries when the uninstalled
+           # path is not listed in the libpath.  Setting hardcode_minus_L
+           # to unsupported forces relinking
+           _LT_TAGVAR(hardcode_minus_L, $1)=yes
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
+          esac
+          shared_flag='-shared'
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag="$shared_flag "'${wl}-G'
+         fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+         # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+          else
+           if test "$aix_use_runtimelinking" = yes; then
+             shared_flag='${wl}-G'
+           else
+             shared_flag='${wl}-bM:SRE'
+           fi
+          fi
+        fi
+
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+       # export.
+        _LT_TAGVAR(always_export_symbols, $1)=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          _LT_SYS_MODULE_PATH_AIX
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+           _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+           # Determine the default libpath from the value encoded in an
+           # empty executable.
+           _LT_SYS_MODULE_PATH_AIX
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+           # Warning - without using the other run time loading flags,
+           # -berok will link without error, but may produce a broken library.
+           _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+           _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+           # Exported symbols can be pulled into shared objects from archives
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+           _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+           # This is similar to how AIX traditionally builds its shared
+           # libraries.
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+         # support --undefined.  This deserves some investigation.  FIXME
+         _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       else
+         _LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+         # FIXME: insert proper C++ library support
+         _LT_TAGVAR(ld_shlibs, $1)=no
+         ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+        # as there is no search path for DLLs.
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+        _LT_TAGVAR(always_export_symbols, $1)=no
+        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+          # If the export-symbols file already is a .def file (1st line
+          # is EXPORTS), use it as is; otherwise, prepend...
+          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+           cp $export_symbols $output_objdir/$soname.def;
+          else
+           echo EXPORTS > $output_objdir/$soname.def;
+           cat $export_symbols >> $output_objdir/$soname.def;
+          fi~
+          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        else
+          _LT_TAGVAR(ld_shlibs, $1)=no
+        fi
+        ;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
+       ;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          ghcx*)
+           # Green Hills C++ Compiler
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      freebsd[[12]]*)
+        # C++ shared libraries reported to be fairly broken before
+       # switch to ELF
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      freebsd-elf*)
+        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      hpux9*)
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+                                            # but as the default
+                                            # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            _LT_TAGVAR(ld_shlibs, $1)=no
+            ;;
+          aCC*)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              _LT_TAGVAR(ld_shlibs, $1)=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+             _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            _LT_TAGVAR(hardcode_direct, $1)=no
+            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+            ;;
+          *)
+            _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+                                                # but as the default
+                                                # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          aCC*)
+           case $host_cpu in
+             hppa*64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             ia64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             *)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+           esac
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test $with_gnu_ld = no; then
+               case $host_cpu in
+                 hppa*64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 ia64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 *)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+               esac
+             fi
+           else
+             # FIXME: insert proper C++ library support
+             _LT_TAGVAR(ld_shlibs, $1)=no
+           fi
+           ;;
+        esac
+        ;;
+
+      interix[[3-9]]*)
+       _LT_TAGVAR(hardcode_direct, $1)=no
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+       # Instead, shared libraries are loaded at an image base (0x10000000 by
+       # default) and relocated if they conflict, which is a slow very memory
+       # consuming and fragmenting process.  To avoid this, we pick a random,
+       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       ;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+           # SGI C++
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+
+           # Archives containing C++ object files must be created using
+           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test "$with_gnu_ld" = no; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+             else
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
+             fi
+           fi
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+           ;;
+        esac
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(inherit_rpath, $1)=yes
+        ;;
+
+      linux* | k*bsd*-gnu)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+           # Archives containing C++ object files must be created using
+           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+           ;;
+         icpc* | ecpc* )
+           # Intel C++
+           with_gnu_ld=yes
+           # version 8.0 and above of icpc choke on multiply defined symbols
+           # if we add $predep_objects and $postdep_objects, however 7.1 and
+           # earlier do not add the objects themselves.
+           case `$CC -V 2>&1` in
+             *"Version 7."*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+             *)  # Version 8.0 or newer
+               tmp_idyn=
+               case $host_cpu in
+                 ia64*) tmp_idyn=' -i_dynamic';;
+               esac
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+           esac
+           _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+           case `$CC -V` in
+           *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
+             _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
+             _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
+               $RANLIB $oldlib'
+             _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           *) # Version 6 will use weak symbols
+             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           esac
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+         cxx*)
+           # Compaq C++
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+           runpath_var=LD_RUN_PATH
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+           ;;
+         xl*)
+           # IBM XL 8.0 on PPC, with GNU ld
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           if test "x$supports_anon_versioning" = xyes; then
+             _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+               cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+               echo "local: *; };" >> $output_objdir/$libname.ver~
+               $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+           fi
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+             _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+             _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+             # Not sure whether something based on
+             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+             # would be better.
+             output_verbose_link_cmd='echo'
+
+             # Archives containing C++ object files must be created using
+             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+             # necessary to make sure instantiated templates are included
+             # in the archive.
+             _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+         *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+       esac
+       ;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+         _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+         wlarc=
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       fi
+       # Workaround some broken pre-1.5 toolchains
+       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+       ;;
+
+      *nto* | *qnx*)
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+       ;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      openbsd*)
+       if test -f /usr/libexec/ld.so; then
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+         fi
+         output_verbose_link_cmd=echo
+       else
+         _LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Archives containing C++ object files must be created using
+           # the KAI C++ compiler.
+           case $host in
+             osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+             *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+           esac
+           ;;
+          RCC*)
+           # Rational C++ 2.4.1
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          cxx*)
+           case $host in
+             osf3*)
+               _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+               ;;
+             *)
+               _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+                 echo "-hidden">> $lib.exp~
+                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+                 $RM $lib.exp'
+               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+               ;;
+           esac
+
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+           ;;
+         *)
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+             case $host in
+               osf3*)
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+               *)
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+             esac
+
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+             _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+             # Commands to make compiler produce verbose output that lists
+             # what "hidden" libraries, object files and flags are used when
+             # linking a shared library.
+             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+
+           else
+             # FIXME: insert proper C++ library support
+             _LT_TAGVAR(ld_shlibs, $1)=no
+           fi
+           ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+           # Sun C++ 4.x
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          lcc*)
+           # Lucid
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+           _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+           _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+           case $host_os in
+             solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+             *)
+               # The compiler driver will combine and reorder linker options,
+               # but understands `-z linker_flag'.
+               # Supported since Solaris 2.6 (maybe 2.5.1?)
+               _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+               ;;
+           esac
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+           output_verbose_link_cmd='echo'
+
+           # Archives containing C++ object files must be created using
+           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+           ;;
+          gcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+           # The C++ compiler must be used to create the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+           ;;
+          *)
+           # GNU C++ compiler with Solaris linker
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+             else
+               # g++ 2.7 appears to require `-G' NOT `-shared' on this
+               # platform.
+               _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+             fi
+
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+             case $host_os in
+               solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+               *)
+                 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+                 ;;
+             esac
+           fi
+           ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+       # Note: We can NOT use -z defs as we might desire, because we do not
+       # link with -lc, and that would cause any symbols used from libc to
+       # always be unresolved, which means just about no library would
+       # ever link correctly.  If we're not using GNU ld we use -z text
+       # though, which does catch some bad symbols but isn't as heavy-handed
+       # as -z defs.
+       _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+       _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+       _LT_TAGVAR(link_all_deplibs, $1)=yes
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+       runpath_var='LD_RUN_PATH'
+
+       case $cc_basename in
+          CC*)
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           ;;
+         *)
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           ;;
+       esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+           # NonStop-UX NCC 3.20
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+    esac
+
+    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+    _LT_TAGVAR(GCC, $1)="$GXX"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+_LT_EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+        prev=$p
+        continue
+       else
+        prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        case $p in
+        -L* | -R*)
+          # Internal compiler library paths should come after those
+          # provided the user.  The postdeps already come after the
+          # user supplied libs so there is no need to process them.
+          if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+          else
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+          fi
+          ;;
+        # The "-l" case would never come before the object being
+        # linked, so don't bother handling this case.
+        esac
+       else
+        if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+          _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+        else
+          _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+        fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+        pre_test_object_deps_done=yes
+        continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+          _LT_TAGVAR(predep_objects, $1)="$p"
+        else
+          _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+        fi
+       else
+        if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+          _LT_TAGVAR(postdep_objects, $1)="$p"
+        else
+          _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+        fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_TAGVAR(predep_objects,$1)=
+  _LT_TAGVAR(postdep_objects,$1)=
+  _LT_TAGVAR(postdeps,$1)=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+    [Dependencies to place before and after the objects being linked to
+    create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+    [The library search path used internally by the compiler when linking
+    a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_PROG_F77
+# ------------
+# Since AC_PROG_F77 is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_F77],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
+AC_PROG_F77
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_F77
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_F77], [])
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_REQUIRE([_LT_PROG_F77])dnl
+AC_LANG_PUSH(Fortran 77)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  CC=${F77-"f77"}
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+  GCC=$G77
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=no
+       fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$G77"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_PROG_FC
+# -----------
+# Since AC_PROG_FC is broken, in that it returns the empty string
+# if there is no fortran compiler, we have our own version here.
+m4_defun([_LT_PROG_FC],
+[
+pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
+AC_PROG_FC
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
+popdef([AC_MSG_ERROR])
+])# _LT_PROG_FC
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([_LT_PROG_FC], [])
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_REQUIRE([_LT_PROG_FC])dnl
+AC_LANG_PUSH(Fortran)
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  CC=${FC-"f95"}
+  compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=no
+       fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC="$lt_save_CC"
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+  :
+  _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_XSI_SHELLFNS
+# ---------------------
+# Bourne and XSI compatible variants of some useful shell functions.
+m4_defun([_LT_PROG_XSI_SHELLFNS],
+[case $xsi_shell in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+  func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+  # positional parameters, so assign one to ordinary parameter first.
+  func_stripname_result=${3}
+  func_stripname_result=${func_stripname_result#"${1}"}
+  func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=${1%%=*}
+  func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  case ${1} in
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+    *)    func_lo2o_result=${1} ;;
+  esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=$(( $[*] ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=${#1}
+}
+
+_LT_EOF
+    ;;
+  *) # Bourne compatible functions.
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
+}
+
+dnl func_dirname_and_basename
+dnl A portable version of this function is already defined in general.m4sh
+dnl so there is no need for it here.
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+  case ${2} in
+    .*) func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
+    *)  func_stripname_result=`$ECHO "X${3}" \
+           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
+  esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[[^=]]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
+  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=`expr "$[@]"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$[1]+=\$[2]"
+}
+_LT_EOF
+    ;;
+  *)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$[1]=\$$[1]\$[2]"
+}
+
+_LT_EOF
+    ;;
+  esac
+])
diff --git a/m4/longlong.m4 b/m4/longlong.m4
new file mode 100644 (file)
index 0000000..a72e53b
--- /dev/null
@@ -0,0 +1,109 @@
+# longlong.m4 serial 13
+dnl Copyright (C) 1999-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_LONG_LONG_INT if 'long long int' works.
+# This fixes a bug in Autoconf 2.61, but can be removed once we
+# assume 2.62 everywhere.
+
+# Note: If the type 'long long int' exists but is only 32 bits large
+# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
+# defined. In this case you can treat 'long long int' like 'long int'.
+
+AC_DEFUN([AC_TYPE_LONG_LONG_INT],
+[
+  AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
+    [AC_LINK_IFELSE(
+       [_AC_TYPE_LONG_LONG_SNIPPET],
+       [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
+       dnl If cross compiling, assume the bug isn't important, since
+       dnl nobody cross compiles for this platform as far as we know.
+       AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[@%:@include <limits.h>
+              @%:@ifndef LLONG_MAX
+              @%:@ define HALF \
+                       (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+              @%:@ define LLONG_MAX (HALF - 1 + HALF)
+              @%:@endif]],
+            [[long long int n = 1;
+              int i;
+              for (i = 0; ; i++)
+                {
+                  long long int m = n << i;
+                  if (m >> i != n)
+                    return 1;
+                  if (LLONG_MAX / 2 < m)
+                    break;
+                }
+              return 0;]])],
+         [ac_cv_type_long_long_int=yes],
+         [ac_cv_type_long_long_int=no],
+         [ac_cv_type_long_long_int=yes])],
+       [ac_cv_type_long_long_int=no])])
+  if test $ac_cv_type_long_long_int = yes; then
+    AC_DEFINE([HAVE_LONG_LONG_INT], 1,
+      [Define to 1 if the system has the type `long long int'.])
+  fi
+])
+
+# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
+# This fixes a bug in Autoconf 2.61, but can be removed once we
+# assume 2.62 everywhere.
+
+# Note: If the type 'unsigned long long int' exists but is only 32 bits
+# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
+# will not be defined. In this case you can treat 'unsigned long long int'
+# like 'unsigned long int'.
+
+AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
+[
+  AC_CACHE_CHECK([for unsigned long long int],
+    [ac_cv_type_unsigned_long_long_int],
+    [AC_LINK_IFELSE(
+       [_AC_TYPE_LONG_LONG_SNIPPET],
+       [ac_cv_type_unsigned_long_long_int=yes],
+       [ac_cv_type_unsigned_long_long_int=no])])
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+    AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], 1,
+      [Define to 1 if the system has the type `unsigned long long int'.])
+  fi
+])
+
+# Expands to a C program that can be used to test for simultaneous support
+# of 'long long' and 'unsigned long long'. We don't want to say that
+# 'long long' is available if 'unsigned long long' is not, or vice versa,
+# because too many programs rely on the symmetry between signed and unsigned
+# integer types (excluding 'bool').
+AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
+[
+  AC_LANG_PROGRAM(
+    [[/* Test preprocessor.  */
+      #if ! (-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+        error in preprocessor;
+      #endif
+      #if ! (18446744073709551615ULL <= -1ull)
+        error in preprocessor;
+      #endif
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+                    ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+                    ? 1 : -1)];
+      int i = 63;]],
+    [[/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+             | (llmax / ll) | (llmax % ll)
+             | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+             | (ullmax / ull) | (ullmax % ull));]])
+])
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
new file mode 100644 (file)
index 0000000..34151a3
--- /dev/null
@@ -0,0 +1,368 @@
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+           [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+                     [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+                  [_LT_ENABLE_FAST_INSTALL])
+  ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS],      [0], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+       [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+    _LT_DECL([build_libtool_libs], [enable_shared], [0],
+       [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+       [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+    _LT_DECL([build_old_libs], [enable_static], [0],
+       [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+        [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+    [AS_HELP_STRING([--with-pic],
+       [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+                [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+                [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+                [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+                [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+                [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
new file mode 100644 (file)
index 0000000..9000a05
--- /dev/null
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+          m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+            [m4_foreach([_Lt_suffix],
+               ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+       [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+         [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+                [lt_append([$1], [$2], [$3])$4],
+                [$5])],
+         [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+       m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+       [$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+                     [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
new file mode 100644 (file)
index 0000000..b8e154f
--- /dev/null
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers                      -*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# Generated from ltversion.in.
+
+# serial 3012 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.2.6])
+m4_define([LT_PACKAGE_REVISION], [1.3012])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.2.6'
+macro_revision='1.3012'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
new file mode 100644 (file)
index 0000000..637bb20
--- /dev/null
@@ -0,0 +1,92 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],  [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],             [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],        [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],         [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],    [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],           [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],             [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],    [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],           [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],       [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],               [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],        [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],    [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],    [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],         [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],            [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],  [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],             [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],            [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],    [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],   [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],          [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],            [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],           [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],  [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],    [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],          [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],          [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],                [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],     [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],          [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],   [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],           [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],           [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],           [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_RC],             [AC_DEFUN([AC_LIBTOOL_RC])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],  [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],      [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],    [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],    [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],    [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],     [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],         [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],       [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
diff --git a/m4/nls.m4 b/m4/nls.m4
new file mode 100644 (file)
index 0000000..7967cc2
--- /dev/null
+++ b/m4/nls.m4
@@ -0,0 +1,31 @@
+# nls.m4 serial 3 (gettext-0.15)
+dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+AC_DEFUN([AM_NLS],
+[
+  AC_MSG_CHECKING([whether NLS is requested])
+  dnl Default is enabled NLS
+  AC_ARG_ENABLE(nls,
+    [  --disable-nls           do not use Native Language Support],
+    USE_NLS=$enableval, USE_NLS=yes)
+  AC_MSG_RESULT($USE_NLS)
+  AC_SUBST(USE_NLS)
+])
diff --git a/m4/pkg.m4 b/m4/pkg.m4
new file mode 100644 (file)
index 0000000..0048a3f
--- /dev/null
+++ b/m4/pkg.m4
@@ -0,0 +1,157 @@
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# 
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+               
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+    if test -n "$$1"; then
+        pkg_cv_[]$1="$$1"
+    else
+        PKG_CHECK_EXISTS([$3],
+                         [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+                        [pkg_failed=yes])
+    fi
+else
+       pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+               [AC_MSG_RESULT([no])
+                $4])
+elif test $pkg_failed = untried; then
+       ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+               [$4])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
diff --git a/m4/po.m4 b/m4/po.m4
new file mode 100644 (file)
index 0000000..0734762
--- /dev/null
+++ b/m4/po.m4
@@ -0,0 +1,449 @@
+# po.m4 serial 15 (gettext-0.17)
+dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+  AC_REQUIRE([AC_PROG_INSTALL])dnl
+  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+  AC_REQUIRE([AM_NLS])dnl
+
+  dnl Release version of the gettext macros. This is used to ensure that
+  dnl the gettext macros and po/Makefile.in.in are in sync.
+  AC_SUBST([GETTEXT_MACRO_VERSION], [0.17])
+
+  dnl Perform the following tests also if --disable-nls has been given,
+  dnl because they are needed for "make dist" to work.
+
+  dnl Search for GNU msgfmt in the PATH.
+  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+  dnl The second test excludes FreeBSD msgfmt.
+  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+  dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([GMSGFMT_015])
+
+  dnl Search for GNU xgettext 0.12 or newer in the PATH.
+  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+  dnl The second test excludes FreeBSD xgettext.
+  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  dnl Remove leftover from FreeBSD xgettext call.
+  rm -f messages.po
+
+  dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([XGETTEXT_015])
+
+  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+  dnl Installation directories.
+  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+  dnl have to define it here, so that it can be used in po/Makefile.
+  test -n "$localedir" || localedir='${datadir}/locale'
+  AC_SUBST([localedir])
+
+  dnl Support for AM_XGETTEXT_OPTION.
+  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+
+  AC_CONFIG_COMMANDS([po-directories], [[
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      case "$ac_file" in */Makefile.in)
+        # Adjust a relative srcdir.
+        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+        # In autoconf-2.13 it is called $ac_given_srcdir.
+        # In autoconf-2.50 it is called $srcdir.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+          rm -f "$ac_dir/POTFILES"
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[  ]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+          POMAKEFILEDEPS="POTFILES.in"
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+          # on $ac_dir but don't depend on user-specified configuration
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+            fi
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done]],
+   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="${LINGUAS-%UNSET%}"
+   ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+  # When this code is run, in config.status, two variables have already been
+  # set:
+  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+  # - LINGUAS is the value of the environment variable LINGUAS at configure
+  #   time.
+
+changequote(,)dnl
+  # Adjust a relative srcdir.
+  ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+  ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+  ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+  # In autoconf-2.13 it is called $ac_given_srcdir.
+  # In autoconf-2.50 it is called $srcdir.
+  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+  case "$ac_given_srcdir" in
+    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+    /*) top_srcdir="$ac_given_srcdir" ;;
+    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  # Find a way to echo strings without interpreting backslash.
+  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+    gt_echo='echo'
+  else
+    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+      gt_echo='printf %s\n'
+    else
+      echo_func () {
+        cat <<EOT
+$*
+EOT
+      }
+      gt_echo='echo_func'
+    fi
+  fi
+
+  # A sed script that extracts the value of VARIABLE from a Makefile.
+  sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^[     ]*VARIABLE[     ]*=/{
+  # Seen the first line of the variable definition.
+  s/^[  ]*VARIABLE[     ]*=//
+  ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+  # Set POTFILES to the value of the Makefile variable POTFILES.
+  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+  # Compute POTFILES_DEPS as
+  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+  POTFILES_DEPS=
+  for file in $POTFILES; do
+    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+  done
+  POMAKEFILEDEPS=""
+
+  if test -n "$OBSOLETE_ALL_LINGUAS"; then
+    test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+  fi
+  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+    # The LINGUAS file contains the set of available languages.
+    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+  else
+    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+    ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+  fi
+  # Hide the ALL_LINGUAS assigment from automake < 1.5.
+  eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+  # Compute POFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+  # Compute UPDATEPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+  # Compute DUMMYPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+  # Compute GMOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+  # Compute PROPERTIESFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+  # Compute CLASSFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+  # Compute QMFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+  # Compute MSGFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+  # Compute RESOURCESDLLFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+  case "$ac_given_srcdir" in
+    .) srcdirpre= ;;
+    *) srcdirpre='$(srcdir)/' ;;
+  esac
+  POFILES=
+  UPDATEPOFILES=
+  DUMMYPOFILES=
+  GMOFILES=
+  PROPERTIESFILES=
+  CLASSFILES=
+  QMFILES=
+  MSGFILES=
+  RESOURCESDLLFILES=
+  for lang in $ALL_LINGUAS; do
+    POFILES="$POFILES $srcdirpre$lang.po"
+    UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+    DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+    PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+    QMFILES="$QMFILES $srcdirpre$lang.qm"
+    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+  done
+  # CATALOGS depends on both $ac_dir and the user's LINGUAS
+  # environment variable.
+  INST_LINGUAS=
+  if test -n "$ALL_LINGUAS"; then
+    for presentlang in $ALL_LINGUAS; do
+      useit=no
+      if test "%UNSET%" != "$LINGUAS"; then
+        desiredlanguages="$LINGUAS"
+      else
+        desiredlanguages="$ALL_LINGUAS"
+      fi
+      for desiredlang in $desiredlanguages; do
+        # Use the presentlang catalog if desiredlang is
+        #   a. equal to presentlang, or
+        #   b. a variant of presentlang (because in this case,
+        #      presentlang can be used as a fallback for messages
+        #      which are not translated in the desiredlang catalog).
+        case "$desiredlang" in
+          "$presentlang"*) useit=yes;;
+        esac
+      done
+      if test $useit = yes; then
+        INST_LINGUAS="$INST_LINGUAS $presentlang"
+      fi
+    done
+  fi
+  CATALOGS=
+  JAVACATALOGS=
+  QTCATALOGS=
+  TCLCATALOGS=
+  CSHARPCATALOGS=
+  if test -n "$INST_LINGUAS"; then
+    for lang in $INST_LINGUAS; do
+      CATALOGS="$CATALOGS $lang.gmo"
+      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+      QTCATALOGS="$QTCATALOGS $lang.qm"
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+    done
+  fi
+
+  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+  if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+       @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+       \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+       @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+       \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if test -n "$POMAKEFILEDEPS"; then
+    cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+  fi
+  mv "$ac_file.tmp" "$ac_file"
+])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+  XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
diff --git a/m4/progtest.m4 b/m4/progtest.m4
new file mode 100644 (file)
index 0000000..a56365c
--- /dev/null
@@ -0,0 +1,92 @@
+# progtest.m4 serial 4 (gettext-0.14.2)
+dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+AC_PREREQ(2.50)
+
+# Search path for a program which passes the given test.
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
+[
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  [[\\/]]* | ?:[[\\/]]*)
+    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in ifelse([$5], , $PATH, [$5]); do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
+          if [$3]; then
+            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+    ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$]$1)
+else
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
diff --git a/m4/update-header-version.m4 b/m4/update-header-version.m4
new file mode 100644 (file)
index 0000000..5a370dd
--- /dev/null
@@ -0,0 +1,24 @@
+# update-header-version.m4 serial 1
+dnl Copyright (C) 2008 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# sj_UPDATE_HEADER_VERSION(HEADER-FILE)
+# -------------
+# Update version number in HEADER-FILE.  It searches for '_VERSION ".*"'
+# and replaces the .* part with the $PACKAGE_VERSION.
+AC_DEFUN([sj_UPDATE_HEADER_VERSION],
+[
+  # Update version number in lib/libtasn1.h.
+  if ! sed 's/_VERSION ".*"/_VERSION "'$PACKAGE_VERSION'"/' $1 > fixhdr.tmp; then
+    AC_MSG_ERROR([[*** Failed to update version number in $1...]])
+  fi
+  if cmp -s $1 fixhdr.tmp 2>/dev/null; then
+    rm -f fixhdr.tmp
+  elif ! mv fixhdr.tmp $1; then
+    AC_MSG_ERROR([[*** Failed to move fixhdr.tmp to $1...]])
+  fi
+])
diff --git a/m4/valgrind.m4 b/m4/valgrind.m4
new file mode 100644 (file)
index 0000000..5a8006a
--- /dev/null
@@ -0,0 +1,30 @@
+# valgrind.m4 serial 1
+dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# sj_VALGRIND()
+# -------------
+# Check if valgrind is available, and set VALGRIND to it if available.
+AC_DEFUN([sj_VALGRIND],
+[
+  # Run self-tests under valgrind?
+  if test "$cross_compiling" = no; then
+    AC_CHECK_PROGS(VALGRIND, valgrind)
+  fi
+  if test -n "$VALGRIND" && $VALGRIND true > /dev/null 2>&1; then
+    opt_valgrind_tests=yes
+  else
+    opt_valgrind_tests=no
+    VALGRIND=
+  fi
+  AC_MSG_CHECKING([whether self tests are run under valgrind])
+  AC_ARG_ENABLE(valgrind-tests,
+    AS_HELP_STRING([--enable-valgrind-tests],
+                   [run self tests under valgrind]),
+    opt_valgrind_tests=$enableval)
+  AC_MSG_RESULT($opt_valgrind_tests)
+])
diff --git a/m4/visibility.m4 b/m4/visibility.m4
new file mode 100644 (file)
index 0000000..2ff6330
--- /dev/null
@@ -0,0 +1,52 @@
+# visibility.m4 serial 1 (gettext-0.15)
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Tests whether the compiler supports the command-line option
+dnl -fvisibility=hidden and the function and variable attributes
+dnl __attribute__((__visibility__("hidden"))) and
+dnl __attribute__((__visibility__("default"))).
+dnl Does *not* test for __visibility__("protected") - which has tricky
+dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
+dnl MacOS X.
+dnl Does *not* test for __visibility__("internal") - which has processor
+dnl dependent semantics.
+dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
+dnl "really only recommended for legacy code".
+dnl Set the variable CFLAG_VISIBILITY.
+dnl Defines and sets the variable HAVE_VISIBILITY.
+
+AC_DEFUN([gl_VISIBILITY],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  CFLAG_VISIBILITY=
+  HAVE_VISIBILITY=0
+  if test -n "$GCC"; then
+    AC_MSG_CHECKING([for simple visibility declarations])
+    AC_CACHE_VAL(gl_cv_cc_visibility, [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -fvisibility=hidden"
+      AC_TRY_COMPILE(
+        [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+         extern __attribute__((__visibility__("default"))) int exportedvar;
+         extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+         extern __attribute__((__visibility__("default"))) int exportedfunc (void);],
+        [],
+        gl_cv_cc_visibility=yes,
+        gl_cv_cc_visibility=no)
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_visibility])
+    if test $gl_cv_cc_visibility = yes; then
+      CFLAG_VISIBILITY="-fvisibility=hidden"
+      HAVE_VISIBILITY=1
+    fi
+  fi
+  AC_SUBST([CFLAG_VISIBILITY])
+  AC_SUBST([HAVE_VISIBILITY])
+  AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
+    [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
+])
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
new file mode 100644 (file)
index 0000000..cde2129
--- /dev/null
@@ -0,0 +1,20 @@
+# wchar_t.m4 serial 1 (gettext-0.12)
+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <stddef.h> has the 'wchar_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WCHAR_T],
+[
+  AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t,
+    [AC_TRY_COMPILE([#include <stddef.h>
+       wchar_t foo = (wchar_t)'\0';], ,
+       gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)])
+  if test $gt_cv_c_wchar_t = yes; then
+    AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.])
+  fi
+])
diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
new file mode 100644 (file)
index 0000000..af5ed93
--- /dev/null
@@ -0,0 +1,28 @@
+# wint_t.m4 serial 2 (gettext-0.17)
+dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <wchar.h> has the 'wint_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WINT_T],
+[
+  AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t,
+    [AC_TRY_COMPILE([
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+   before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+       wint_t foo = (wchar_t)'\0';], ,
+       gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)])
+  if test $gt_cv_c_wint_t = yes; then
+    AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.])
+  fi
+])
diff --git a/maint.mk b/maint.mk
new file mode 100644 (file)
index 0000000..ed9c1aa
--- /dev/null
+++ b/maint.mk
@@ -0,0 +1,767 @@
+# -*-Makefile-*-
+# This Makefile fragment tries to be general-purpose enough to be
+# used by many projects via the gnulib maintainer-makefile module.
+
+## Copyright (C) 2001-2009 Free Software Foundation, Inc.
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This is reported not to work with make-3.79.1
+# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+ME := maint.mk
+
+# Override this in cfg.mk if you use a non-standard build-aux directory.
+build_aux ?= $(srcdir)/build-aux
+
+# Do not save the original name or timestamp in the .tar.gz file.
+# Use --rsyncable if available.
+gzip_rsyncable := \
+  $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
+GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
+
+# cfg.mk must define the gpg_key_ID used by this package.
+GIT = git
+VC = $(GIT)
+VC-tag = git tag -s -m '$(VERSION)' -u '$(gpg_key_ID)'
+
+VC_LIST = $(build_aux)/vc-list-files -C $(srcdir)
+
+VC_LIST_EXCEPT = \
+  $(VC_LIST) | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; else grep -v ChangeLog; fi
+
+ifeq ($(origin prev_version_file), undefined)
+  prev_version_file = $(srcdir)/.prev-version
+endif
+
+PREV_VERSION := $(shell cat $(prev_version_file))
+VERSION_REGEXP = $(subst .,\.,$(VERSION))
+PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION))
+
+ifeq ($(VC),$(GIT))
+this-vc-tag = v$(VERSION)
+this-vc-tag-regexp = v$(VERSION_REGEXP)
+else
+tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
+tag-this-version = $(subst .,_,$(VERSION))
+this-vc-tag = $(tag-package)-$(tag-this-version)
+this-vc-tag-regexp = $(this-vc-tag)
+endif
+my_distdir = $(PACKAGE)-$(VERSION)
+
+# Old releases are stored here.
+release_archive_dir ?= ../release
+
+# Prevent programs like 'sort' from considering distinct strings to be equal.
+# Doing it here saves us from having to set LC_ALL elsewhere in this file.
+export LC_ALL = C
+
+## --------------- ##
+## Sanity checks.  ##
+## --------------- ##
+
+# Collect the names of rules starting with `sc_'.
+syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
+                       $(srcdir)/$(ME) $(srcdir)/cfg.mk)
+.PHONY: $(syntax-check-rules)
+
+local-checks-available = \
+  $(syntax-check-rules)
+.PHONY: $(local-checks-available)
+
+# Arrange to print the name of each syntax-checking rule just before running it.
+$(syntax-check-rules): %: %.m
+$(patsubst %, %.m, $(syntax-check-rules)):
+       @echo $(patsubst sc_%.m, %, $@)
+
+local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available))
+
+syntax-check: $(local-check)
+#      @grep -nE '#  *include <(limits|std(def|arg|bool))\.h>'         \
+#          $$(find -type f -name '*.[chly]') &&                        \
+#        { echo '$(ME): found conditional include' 1>&2;               \
+#          exit 1; } || :
+
+#      grep -nE '^#  *include <(string|stdlib)\.h>'                    \
+#          $(srcdir)/{lib,src}/*.[chy] &&                              \
+#        { echo '$(ME): FIXME' 1>&2;                                   \
+#          exit 1; } || :
+# FIXME: don't allow `#include .strings\.h' anywhere
+
+# By default, _prohibit_regexp does not ignore case.
+export ignore_case =
+_ignore_case = $$(test -n "$$ignore_case" && echo -i || :)
+
+# There are many rules below that prohibit constructs in this package.
+# If the offending construct can be matched with a grep-E-style regexp,
+# use this macro.  The shell variables "re" and "msg" must be defined.
+define _prohibit_regexp
+  dummy=; : so we do not need a semicolon before each use;             \
+  test "x$$re" != x || { echo '$(ME): re not defined' 1>&2; exit 1; }; \
+  test "x$$msg" != x || { echo '$(ME): msg not defined' 1>&2; exit 1; };\
+  grep $(_ignore_case) -nE "$$re" $$($(VC_LIST_EXCEPT)) &&             \
+    { echo '$(ME): '"$$msg" 1>&2; exit 1; } || :
+endef
+
+sc_avoid_if_before_free:
+       @$(build_aux)/useless-if-before-free                            \
+               $(useless_free_options)                                 \
+           $$($(VC_LIST_EXCEPT) | grep -v useless-if-before-free) &&   \
+         { echo '$(ME): found useless "if" before "free" above' 1>&2;  \
+           exit 1; } || :
+
+sc_cast_of_argument_to_free:
+       @re='\<free *\( *\(' msg='don'\''t cast free argument'          \
+         $(_prohibit_regexp)
+
+sc_cast_of_x_alloc_return_value:
+       @re='\*\) *x(m|c|re)alloc\>'                                    \
+       msg='don'\''t cast x*alloc return value'                        \
+         $(_prohibit_regexp)
+
+sc_cast_of_alloca_return_value:
+       @re='\*\) *alloca\>' msg='don'\''t cast alloca return value'    \
+         $(_prohibit_regexp)
+
+sc_space_tab:
+       @re='[ ]        ' msg='found SPACE-TAB sequence; remove the SPACE' \
+         $(_prohibit_regexp)
+
+# Don't use *scanf or the old ato* functions in `real' code.
+# They provide no error checking mechanism.
+# Instead, use strto* functions.
+sc_prohibit_atoi_atof:
+       @re='\<([fs]?scanf|ato([filq]|ll)) *\('                         \
+       msg='do not use *scan''f, ato''f, ato''i, ato''l, ato''ll or ato''q' \
+         $(_prohibit_regexp)
+
+# Use STREQ rather than comparing strcmp == 0, or != 0.
+sc_prohibit_strcmp:
+       @grep -nE '! *str''cmp *\(|\<str''cmp *\([^)]+\) *=='           \
+           $$($(VC_LIST_EXCEPT))                                       \
+         | grep -vE ':# *define STREQ\(' &&                            \
+         { echo '$(ME): use STREQ in place of the above uses of str''cmp' \
+               1>&2; exit 1; } || :
+
+# Using EXIT_SUCCESS as the first argument to error is misleading,
+# since when that parameter is 0, error does not exit.  Use `0' instead.
+sc_error_exit_success:
+       @grep -nE 'error \(EXIT_SUCCESS,'                               \
+           $$($(VC_LIST_EXCEPT) | grep -E '\.[chly]$$') &&             \
+         { echo '$(ME): found error (EXIT_SUCCESS' 1>&2; exit 1; } || :
+
+# `FATAL:' should be fully upper-cased in error messages
+# `WARNING:' should be fully upper-cased, or fully lower-cased
+sc_error_message_warn_fatal:
+       @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT))               \
+           | grep -E '"Warning|"Fatal|"fatal' &&                       \
+         { echo '$(ME): use FATAL, WARNING or warning' 1>&2;           \
+           exit 1; } || :
+
+# Error messages should not start with a capital letter
+sc_error_message_uppercase:
+       @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT))               \
+           | grep -E '"[A-Z]'                                          \
+           | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' &&           \
+         { echo '$(ME): found capitalized error message' 1>&2;         \
+           exit 1; } || :
+
+# Error messages should not end with a period
+sc_error_message_period:
+       @grep -nEA2 '[^rp]error \(' $$($(VC_LIST_EXCEPT))               \
+           | grep -E '[^."]\."' &&                                     \
+         { echo '$(ME): found error message ending in period' 1>&2;    \
+           exit 1; } || :
+
+sc_file_system:
+       @re=file''system ignore_case=1                                  \
+       msg='found use of "file''system"; spell it "file system"'       \
+         $(_prohibit_regexp)
+
+# Don't use cpp tests of this symbol.  All code assumes config.h is included.
+sc_prohibit_have_config_h:
+       @grep -n '^# *if.*HAVE''_CONFIG_H' $$($(VC_LIST_EXCEPT)) &&     \
+         { echo '$(ME): found use of HAVE''_CONFIG_H; remove'          \
+               1>&2; exit 1; } || :
+
+# Nearly all .c files must include <config.h>.  However, we also permit this
+# via inclusion of a package-specific header, if cfg.mk specified one.
+# config_h_header must be suitable for grep -E.
+config_h_header ?= <config\.h>
+sc_require_config_h:
+       @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then       \
+         grep -EL '^# *include $(config_h_header)'                     \
+               $$($(VC_LIST_EXCEPT) | grep '\.c$$')                    \
+             | grep . &&                                               \
+         { echo '$(ME): the above files do not include <config.h>'     \
+               1>&2; exit 1; } || :;                                   \
+       else :;                                                         \
+       fi
+
+# You must include <config.h> before including any other header file.
+# This can possibly be via a package-specific header, if given by cfg.mk.
+sc_require_config_h_first:
+       @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then       \
+         fail=0;                                                       \
+         for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do             \
+           grep '^# *include\>' $$i | sed 1q                           \
+               | grep -E '^# *include $(config_h_header)' > /dev/null  \
+             || { echo $$i; fail=1; };                                 \
+         done;                                                         \
+         test $$fail = 1 &&                                            \
+           { echo '$(ME): the above files include some other header'   \
+               'before <config.h>' 1>&2; exit 1; } || :;               \
+       else :;                                                         \
+       fi
+
+sc_prohibit_HAVE_MBRTOWC:
+       @re='\bHAVE_MBRTOWC\b' msg="do not use $$re; it is always defined" \
+         $(_prohibit_regexp)
+
+# To use this "command" macro, you must first define two shell variables:
+# h: the header, enclosed in <> or ""
+# re: a regular expression that matches IFF something provided by $h is used.
+define _header_without_use
+  h_esc=`echo "$$h"|sed 's/\./\\./g'`;                                 \
+  if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then             \
+    files=$$(grep -l '^# *include '"$$h_esc"                           \
+            $$($(VC_LIST_EXCEPT) | grep '\.c$$')) &&                   \
+    grep -LE "$$re" $$files | grep . &&                                        \
+      { echo "$(ME): the above files include $$h but don't use it"     \
+       1>&2; exit 1; } || :;                                           \
+  else :;                                                              \
+  fi
+endef
+
+# Prohibit the inclusion of assert.h without an actual use of assert.
+sc_prohibit_assert_without_use:
+       @h='<assert.h>' re='\<assert *\(' $(_header_without_use)
+
+# Prohibit the inclusion of getopt.h without an actual use.
+sc_prohibit_getopt_without_use:
+       @h='<getopt.h>' re='\<getopt(_long)? *\(' $(_header_without_use)
+
+# Don't include quotearg.h unless you use one of its functions.
+sc_prohibit_quotearg_without_use:
+       @h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_header_without_use)
+
+# Don't include quote.h unless you use one of its functions.
+sc_prohibit_quote_without_use:
+       @h='"quote.h"' re='\<quote(_n)? *\(' $(_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_long_options_without_use:
+       @h='"long-options.h"' re='\<parse_long_options *\(' \
+         $(_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_inttostr_without_use:
+       @h='"inttostr.h"' re='\<(off|[iu]max|uint)tostr *\(' \
+         $(_header_without_use)
+
+# Don't include this header unless you use one of its functions.
+sc_prohibit_error_without_use:
+       @h='"error.h"' \
+       re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? *\('\
+         $(_header_without_use)
+
+sc_prohibit_safe_read_without_use:
+       @h='"safe-read.h"' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
+         $(_header_without_use)
+
+sc_prohibit_argmatch_without_use:
+       @h='"argmatch.h"' \
+       re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<argmatch(_exit_fn|_(in)?valid) *\()' \
+         $(_header_without_use)
+
+sc_prohibit_root_dev_ino_without_use:
+       @h='"root-dev-ino.h"' \
+       re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \
+         $(_header_without_use)
+
+# Prohibit the inclusion of c-ctype.h without an actual use.
+ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
+|isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
+sc_prohibit_c_ctype_without_use:
+       @h='[<"]c-ctype.h[">]' re='\<c_($(ctype_re)) *\(' $(_header_without_use)
+
+_empty =
+_sp = $(_empty) $(_empty)
+# The following list was generated by running:
+# man signal.h|col -b|perl -ne '/bsd_signal.*;/.../sigwaitinfo.*;/ and print' \
+#   | perl -lne '/^\s+(?:int|void).*?(\w+).*/ and print $1' | fmt
+_sig_functions = \
+  bsd_signal kill killpg pthread_kill pthread_sigmask raise sigaction \
+  sigaddset sigaltstack sigdelset sigemptyset sigfillset sighold sigignore \
+  siginterrupt sigismember signal sigpause sigpending sigprocmask sigqueue \
+  sigrelse sigset sigsuspend sigtimedwait sigwait sigwaitinfo
+_sig_function_re = $(subst $(_sp),|,$(strip $(_sig_functions)))
+# The following were extracted from "man signal.h" manually.
+_sig_types_and_consts =                                                        \
+  MINSIGSTKSZ SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK          \
+  SA_RESETHAND SA_RESTART SA_SIGINFO SIGEV_NONE SIGEV_SIGNAL           \
+  SIGEV_THREAD SIGSTKSZ SIG_BLOCK SIG_SETMASK SIG_UNBLOCK SS_DISABLE   \
+  SS_ONSTACK mcontext_t pid_t sig_atomic_t sigevent siginfo_t sigset_t \
+  sigstack sigval stack_t ucontext_t
+# generated via this:
+# perl -lne '/^#ifdef (SIG\w+)/ and print $1' lib/sig2str.c|sort -u|fmt -70
+_sig_names =                                                           \
+  SIGABRT SIGALRM SIGALRM1 SIGBUS SIGCANCEL SIGCHLD SIGCLD SIGCONT     \
+  SIGDANGER SIGDIL SIGEMT SIGFPE SIGFREEZE SIGGRANT SIGHUP SIGILL      \
+  SIGINFO SIGINT SIGIO SIGIOT SIGKAP SIGKILL SIGKILLTHR SIGLOST SIGLWP \
+  SIGMIGRATE SIGMSG SIGPHONE SIGPIPE SIGPOLL SIGPRE SIGPROF SIGPWR     \
+  SIGQUIT SIGRETRACT SIGSAK SIGSEGV SIGSOUND SIGSTKFLT SIGSTOP SIGSYS  \
+  SIGTERM SIGTHAW SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGURG SIGUSR1       \
+  SIGUSR2 SIGVIRT SIGVTALRM SIGWAITING SIGWINCH SIGWIND SIGWINDOW      \
+  SIGXCPU SIGXFSZ
+_sig_syms_re = $(subst $(_sp),|,$(strip $(_sig_names) $(_sig_types_and_consts)))
+
+# Prohibit the inclusion of signal.h without an actual use.
+sc_prohibit_signal_without_use:
+       @h='<signal.h>'                                                 \
+       re='\<($(_sig_function_re)) *\(|\<($(_sig_syms_re))\>'          \
+         $(_header_without_use)
+
+sc_obsolete_symbols:
+       @re='\<(HAVE''_FCNTL_H|O''_NDELAY)\>'                           \
+       msg='do not use HAVE''_FCNTL_H or O'_NDELAY                     \
+         $(_prohibit_regexp)
+
+# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
+
+# Each nonempty ChangeLog line must start with a year number, or a TAB.
+sc_changelog:
+       @if $(VC_LIST_EXCEPT) | grep -l '^ChangeLog$$' >/dev/null; then \
+         grep -n '^[^12        ]'                                      \
+           $$($(VC_LIST_EXCEPT) | grep '^ChangeLog$$') &&              \
+         { echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2;  \
+           exit 1; } || :;                                             \
+       fi
+
+# Ensure that each .c file containing a "main" function also
+# calls set_program_name.
+sc_program_name:
+       @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then       \
+         files=$$(grep -l '^main *(' $$($(VC_LIST_EXCEPT) | grep '\.c$$')); \
+         grep -LE 'set_program_name *\(m?argv\[0\]\);' $$files         \
+             | grep . &&                                               \
+         { echo '$(ME): the above files do not call set_program_name'  \
+               1>&2; exit 1; } || :;                                   \
+       else :;                                                         \
+       fi
+
+# Require that the final line of each test-lib.sh-using test be this one:
+# Exit $fail
+# Note: this test requires GNU grep's --label= option.
+sc_require_test_exit_idiom:
+       @if test -f $(srcdir)/tests/test-lib.sh; then                   \
+         die=0;                                                        \
+         for i in $$(grep -l -F /../test-lib.sh $$($(VC_LIST) tests)); do \
+           tail -n1 $$i | grep '^Exit \$$fail$$' > /dev/null           \
+             && : || { die=1; echo $$i; }                              \
+         done;                                                         \
+         test $$die = 1 &&                                             \
+           { echo 1>&2 '$(ME): the final line in each of the above is not:'; \
+             echo 1>&2 'Exit $$fail';                                  \
+             exit 1; } || :;                                           \
+       fi
+
+sc_the_the:
+       @re='\<the ''the\>'                                             \
+       ignore_case=1 msg='found use of "the ''the";'                   \
+         $(_prohibit_regexp)
+
+sc_trailing_blank:
+       @re='[   ]$$'                                                   \
+       msg='found trailing blank(s)'                                   \
+         $(_prohibit_regexp)
+
+# Match lines like the following, but where there is only one space
+# between the options and the description:
+#   -D, --all-repeated[=delimit-method]  print all duplicate lines\n
+longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
+sc_two_space_separator_in_usage:
+       @grep -nE '^   *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$'         \
+           $$($(VC_LIST_EXCEPT)) &&                                    \
+         { echo "$(ME): help2man requires at least two spaces between"; \
+           echo "$(ME): an option and its description";                \
+               1>&2; exit 1; } || :
+
+# Look for diagnostics that aren't marked for translation.
+# This won't find any for which error's format string is on a separate line.
+sc_unmarked_diagnostics:
+       @grep -nE                                                       \
+           '\<error \([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT))       \
+         | grep -v '_''(' &&                                           \
+         { echo '$(ME): found unmarked diagnostic(s)' 1>&2;            \
+           exit 1; } || :
+
+# Avoid useless parentheses like those in this example:
+# #if defined (SYMBOL) || defined (SYM2)
+sc_useless_cpp_parens:
+       @grep -n '^# *if .*defined *(' $$($(VC_LIST_EXCEPT)) &&         \
+         { echo '$(ME): found useless parentheses in cpp directive'    \
+               1>&2; exit 1; } || :
+
+# Require the latest GPL.
+sc_GPL_version:
+       @re='either ''version [^3]' msg='GPL vN, N!=3'                  \
+         $(_prohibit_regexp)
+
+cvs_keywords = \
+  Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State
+
+sc_prohibit_cvs_keyword:
+       @re='\$$($(cvs_keywords))\$$'                                   \
+           msg='do not use CVS keyword expansion'                      \
+         $(_prohibit_regexp)
+
+# Make sure we don't use st_blocks.  Use ST_NBLOCKS instead.
+# This is a bit of a kludge, since it prevents use of the string
+# even in comments, but for now it does the job with no false positives.
+sc_prohibit_stat_st_blocks:
+       @re='[.>]st_blocks' msg='do not use st_blocks; use ST_NBLOCKS'  \
+         $(_prohibit_regexp)
+
+# Make sure we don't define any S_IS* macros in src/*.c files.
+# They're already defined via gnulib's sys/stat.h replacement.
+sc_prohibit_S_IS_definition:
+       @re='^ *# *define  *S_IS'                                       \
+       msg='do not define S_IS* macros; include <sys/stat.h>'          \
+         $(_prohibit_regexp)
+
+# Each program that uses proper_name_utf8 must link with
+# one of the ICONV libraries.
+sc_proper_name_utf8_requires_ICONV:
+       @progs=$$(grep -l 'proper_name_utf8 ''("' $$($(VC_LIST_EXCEPT)));\
+       if test "x$$progs" != x; then                                   \
+         fail=0;                                                       \
+         for p in $$progs; do                                          \
+           dir=$$(dirname "$$p");                                      \
+           base=$$(basename "$$p" .c);                                 \
+           grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
+             || { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \
+         done;                                                         \
+         test $$fail = 1 &&                                            \
+           { echo 1>&2 '$(ME): the above do not link with any ICONV library'; \
+             exit 1; } || :;                                           \
+       fi
+
+# Warn about "c0nst struct Foo const foo[]",
+# but not about "char const *const foo" or "#define const const".
+sc_redundant_const:
+       @re='\bconst\b[[:space:][:alnum:]]{2,}\bconst\b'                \
+       msg='redundant "const" in declarations'                         \
+         $(_prohibit_regexp)
+
+sc_const_long_option:
+       @grep '^ *static.*struct option ' $$($(VC_LIST_EXCEPT))         \
+         | grep -Ev 'const struct option|struct option const' && {     \
+             echo 1>&2 '$(ME): add "const" to the above declarations'; \
+             exit 1; } || :
+
+NEWS_hash =                                                            \
+  $$(sed -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p'             \
+       $(srcdir)/NEWS                                                  \
+     | grep -v '^Copyright .*Free Software'                            \
+     | md5sum -                                                                \
+     | sed 's/ .*//')
+
+# Ensure that we don't accidentally insert an entry into an old NEWS block.
+sc_immutable_NEWS:
+       @if test -f $(srcdir)/NEWS; then                                \
+         test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : ||              \
+           { echo '$(ME): you have modified old NEWS' 1>&2; exit 1; }; \
+       fi
+
+# Update the hash stored above.  Do this after each release and
+# for any corrections to old entries.
+update-NEWS-hash: NEWS
+       perl -pi -e 's/^(old_NEWS_hash = ).*/$${1}'"$(NEWS_hash)/" \
+         $(srcdir)/cfg.mk
+
+# Ensure that we use only the standard $(VAR) notation,
+# not @...@ in Makefile.am, now that we can rely on automake
+# to emit a definition for each substituted variable.
+# We use perl rather than "grep -nE ..." to exempt a single
+# use of an @...@-delimited variable name in src/Makefile.am.
+sc_makefile_check:
+       @perl -ne '/\@[A-Z_0-9]+\@/ && !/^cu_install_program =/'        \
+         -e 'and (print "$$ARGV:$$.: $$_"), $$m=1; END {exit !$$m}'    \
+           $$($(VC_LIST_EXCEPT) | grep -E '(^|/)Makefile\.am$$')       \
+         && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
+
+news-date-check: NEWS
+       today=`date +%Y-%m-%d`;                                         \
+       if head $(srcdir)/NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \
+           >/dev/null; then                                            \
+         :;                                                            \
+       else                                                            \
+         echo "version or today's date is not in NEWS" 1>&2;           \
+         exit 1;                                                       \
+       fi
+
+sc_makefile_TAB_only_indentation:
+       @grep -nE '^    [ ]{8}'                                         \
+           $$($(VC_LIST_EXCEPT) | grep -E 'akefile|\.mk$$')            \
+         && { echo '$(ME): found TAB-8-space indentation' 1>&2;        \
+              exit 1; } || :
+
+sc_m4_quote_check:
+       @grep -nE '(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]'              \
+           $$($(VC_LIST_EXCEPT) | grep -E '(^configure\.ac|\.m4)$$')   \
+         && { echo '$(ME): quote the first arg to AC_DEF*' 1>&2;       \
+              exit 1; } || :
+
+fix_po_file_diag = \
+'you have changed the set of files with translatable diagnostics;\n\
+apply the above patch\n'
+
+# Verify that all source files using _() are listed in po/POTFILES.in.
+po_file = po/POTFILES.in
+sc_po_check:
+       @if test -f $(po_file); then                                    \
+         grep -E -v '^(#|$$)' $(po_file)                               \
+           | grep -v '^src/false\.c$$' | sort > $@-1;                  \
+         files=;                                                       \
+         for file in $$($(VC_LIST_EXCEPT)) lib/*.[ch]; do              \
+           test -r $$file || continue;                                 \
+           case $$file in                                              \
+             *.?|*.??) ;;                                              \
+             *) continue;;                                             \
+           esac;                                                       \
+           case $$file in                                              \
+           *.[ch])                                                     \
+             base=`expr " $$file" : ' \(.*\)\..'`;                     \
+             { test -f $$base.l || test -f $$base.y; } && continue;;   \
+           esac;                                                       \
+           files="$$files $$file";                                     \
+         done;                                                         \
+         grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files          \
+           | sort -u > $@-2;                                           \
+         diff -u -L $(po_file) -L $(po_file) $@-1 $@-2                 \
+           || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; };   \
+         rm -f $@-1 $@-2;                                              \
+       fi
+
+# Sometimes it is useful to change the PATH environment variable
+# in Makefiles.  When doing so, it's better not to use the Unix-centric
+# path separator of `:', but rather the automake-provided `$(PATH_SEPARATOR)'.
+msg = '$(ME): Do not use `:'\'' above; use $$(PATH_SEPARATOR) instead'
+sc_makefile_path_separator_check:
+       @grep -nE 'PATH[=].*:'                                          \
+           $$($(VC_LIST_EXCEPT) | grep -E 'akefile|\.mk$$')            \
+         && { echo $(msg) 1>&2; exit 1; } || :
+
+# Check that `make alpha' will not fail at the end of the process.
+writable-files:
+       if test -d $(release_archive_dir); then :; else                 \
+         for file in $(distdir).tar.gz                                 \
+                     $(release_archive_dir)/$(distdir).tar.gz; do      \
+           test -e $$file || continue;                                 \
+           test -w $$file                                              \
+             || { echo ERROR: $$file is not writable; fail=1; };       \
+         done;                                                         \
+         test "$$fail" && exit 1 || : ;                                \
+       fi
+
+v_etc_file = lib/version-etc.c
+sample-test = tests/sample-test
+texi = doc/$(PACKAGE).texi
+# Make sure that the copyright date in $(v_etc_file) is up to date.
+# Do the same for the $(sample-test) and the main doc/.texi file.
+sc_copyright_check:
+       @if test -f $(v_etc_file); then                                 \
+         grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \
+           >/dev/null                                                  \
+         || { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \
+              exit 1; };                                               \
+       fi
+       @if test -f $(sample-test); then                                \
+         grep '# Copyright (C) '$$(date +%Y)' Free' $(sample-test)     \
+           >/dev/null                                                  \
+         || { echo 'out of date copyright in $(sample-test); update it' 1>&2; \
+              exit 1; };                                               \
+       fi
+       @if test -f $(texi); then                                       \
+         grep 'Copyright @copyright{} .*'$$(date +%Y)' Free' $(texi)   \
+           >/dev/null                                                  \
+         || { echo 'out of date copyright in $(texi); update it' 1>&2; \
+              exit 1; };                                               \
+       fi
+
+vc-diff-check:
+       (unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || :
+       if test -s vc-diffs; then                               \
+         cat vc-diffs;                                         \
+         echo "Some files are locally modified:" 1>&2;         \
+         exit 1;                                               \
+       else                                                    \
+         rm vc-diffs;                                          \
+       fi
+
+cvs-check: vc-diff-check
+
+ALL_RECURSIVE_TARGETS += maintainer-distcheck
+maintainer-distcheck:
+       $(MAKE) distcheck
+       $(MAKE) taint-distcheck
+       $(MAKE) my-distcheck
+
+
+# Don't make a distribution if checks fail.
+# Also, make sure the NEWS file is up-to-date.
+ALL_RECURSIVE_TARGETS += vc-dist
+vc-dist: $(local-check) cvs-check maintainer-distcheck
+       XZ_OPT=-9ev $(MAKE) dist
+
+# Use this to make sure we don't run these programs when building
+# from a virgin tgz file, below.
+null_AM_MAKEFLAGS = \
+  ACLOCAL=false \
+  AUTOCONF=false \
+  AUTOMAKE=false \
+  AUTOHEADER=false \
+  MAKEINFO=false
+
+built_programs = $$(cd src && MAKEFLAGS= $(MAKE) -s built_programs.list)
+
+rel-files = $(DIST_ARCHIVES)
+
+gnulib_dir ?= $(srcdir)/gnulib
+gnulib-version = $$(cd $(gnulib_dir) && git describe)
+bootstrap-tools ?= autoconf,automake,gnulib
+
+announcement: NEWS ChangeLog $(rel-files)
+       @$(build_aux)/announce-gen                                      \
+           --release-type=$(RELEASE_TYPE)                              \
+           --package=$(PACKAGE)                                        \
+           --prev=$(PREV_VERSION)                                      \
+           --curr=$(VERSION)                                           \
+           --gpg-key-id=$(gpg_key_ID)                                  \
+           --news=NEWS                                                 \
+           --bootstrap-tools=$(bootstrap-tools)                        \
+           --gnulib-version=$(gnulib-version)                          \
+           --no-print-checksums                                        \
+           $(addprefix --url-dir=, $(url_dir_list))
+
+## ---------------- ##
+## Updating files.  ##
+## ---------------- ##
+
+ftp-gnu = ftp://ftp.gnu.org/gnu
+www-gnu = http://www.gnu.org
+
+emit_upload_commands:
+       @echo =====================================
+       @echo =====================================
+       @echo "$(build_aux)/gnupload $(GNUPLOADFLAGS) \\"
+       @echo "    --to $(gnu_rel_host):$(PACKAGE) \\"
+       @echo "  $(rel-files)"
+       @echo '# send the /tmp/announcement e-mail'
+       @echo =====================================
+       @echo =====================================
+
+noteworthy = * Noteworthy changes in release ?.? (????-??-??) [?]
+define emit-commit-log
+  printf '%s\n' 'post-release administrivia' '' \
+    '* NEWS: Add header line for next release.' \
+    '* .prev-version: Record previous version.' \
+    '* cfg.mk (old_NEWS_hash): Auto-update.'
+endef
+
+.PHONY: no-submodule-changes
+no-submodule-changes:
+       if test -d $(srcdir)/.git; then                                 \
+         diff=$$(cd $(srcdir) && git submodule -q foreach              \
+                 git diff-index --name-only HEAD)                      \
+           || exit 1;                                                  \
+         case $$diff in '') ;;                                         \
+           *) echo '$(ME): submodule files are locally modified:';     \
+               echo "$$diff"; exit 1;; esac;                           \
+       else                                                            \
+         : ;                                                           \
+       fi
+
+.PHONY: alpha beta major
+ALL_RECURSIVE_TARGETS += alpha beta major
+alpha beta major: $(local-check) writable-files no-submodule-changes
+       test $@ = major                                         \
+         && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
+              || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
+         || :
+       $(MAKE) vc-dist
+       $(MAKE) news-date-check
+       $(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
+       if test -d $(release_archive_dir); then                 \
+         ln $(rel-files) $(release_archive_dir);               \
+         chmod a-w $(rel-files);                               \
+       fi
+       $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
+       echo $(VERSION) > $(prev_version_file)
+       $(MAKE) update-NEWS-hash
+       perl -pi -e '$$. == 3 and print "$(noteworthy)\n\n\n"' NEWS
+       $(emit-commit-log) > .ci-msg
+       $(VC) commit -F .ci-msg -a
+
+.PHONY: web-manual
+web-manual:
+       @test -z "$(manual_title)" \
+         && { echo define manual_title in cfg.mk 1>&2; exit 1; } || :
+       @cd '$(srcdir)/doc'; \
+         $(SHELL) ../build-aux/gendocs.sh -o '$(abs_builddir)/doc/manual' \
+            --email $(PACKAGE_BUGREPORT) $(PACKAGE) \
+           "$(PACKAGE_NAME) - $(manual_title)"
+       @echo " *** Upload the doc/manual directory to web-cvs."
+
+# Code Coverage
+
+init-coverage:
+       $(MAKE) $(AM_MAKEFLAGS) clean
+       lcov --directory . --zerocounters
+
+COVERAGE_CCOPTS ?= "-g --coverage"
+COVERAGE_OUT ?= doc/coverage
+
+build-coverage:
+       $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS)
+       $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) check
+       mkdir -p $(COVERAGE_OUT)
+       lcov --directory . --output-file $(COVERAGE_OUT)/$(PACKAGE).info \
+               --capture
+
+gen-coverage:
+       genhtml --output-directory $(COVERAGE_OUT) \
+               $(COVERAGE_OUT)/$(PACKAGE).info \
+               --highlight --frames --legend \
+               --title "$(PACKAGE_NAME)"
+
+coverage: init-coverage build-coverage gen-coverage
+
+# Update gettext files.
+PACKAGE ?= $(shell basename $(PWD))
+PO_DOMAIN ?= $(PACKAGE)
+POURL = http://translationproject.org/latest/$(PO_DOMAIN)/
+PODIR ?= po
+refresh-po:
+       rm -f $(PODIR)/*.po && \
+       echo "$(ME): getting translations into po (please ignore the robots.txt ERROR 404)..." && \
+       wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \
+       echo 'en@boldquot' > $(PODIR)/LINGUAS && \
+       echo 'en@quot' >> $(PODIR)/LINGUAS && \
+       ls $(PODIR)/*.po | sed 's/\.po//' | sed 's,$(PODIR)/,,' | sort >> $(PODIR)/LINGUAS
+
+INDENT_SOURCES ?= $(C_SOURCES)
+.PHONY: indent
+indent:
+       indent $(INDENT_SOURCES)
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644 (file)
index 0000000..7d6b991
--- /dev/null
@@ -0,0 +1,17 @@
+en@boldquot
+en@quot
+cs
+da
+de
+eo
+fi
+fr
+id
+it
+ja
+nl
+pl
+ro
+sr
+vi
+zh_CN
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644 (file)
index 0000000..fecf500
--- /dev/null
@@ -0,0 +1,429 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.17
+GETTEXT_MACRO_VERSION = 0.17
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @localedir@
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+       @echo "$(MSGFMT) -c -o $@ $<"; \
+       $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+       @lang=`echo $* | sed -e 's,.*/,,'`; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
+       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+       sed -e '/^#/d' $< > t-$@
+       mv t-$@ $@
+
+
+all: check-macro-version all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# Ensure that the gettext macros and this Makefile.in.in are in sync.
+check-macro-version:
+       @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+         || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
+              exit 1; \
+            }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+       test ! -f $(srcdir)/$(DOMAIN).pot || \
+         test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+       @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+         echo "touch stamp-po" && \
+         echo timestamp > stamp-poT && \
+         mv stamp-poT stamp-po; \
+       }
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+       if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
+         package_gnu='GNU '; \
+       else \
+         package_gnu=''; \
+       fi; \
+       if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+         msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+       else \
+         msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+       fi; \
+       case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+         '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+         *) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --package-name="$${package_gnu}@PACKAGE@" \
+             --package-version='@VERSION@' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+       esac
+       test ! -f $(DOMAIN).po || { \
+         if test -f $(srcdir)/$(DOMAIN).pot; then \
+           sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+           sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+           if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+           else \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+             mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+           fi; \
+         else \
+           mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+         fi; \
+       }
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+       $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+       @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+       if test -f "$(srcdir)/$${lang}.po"; then \
+         test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+         echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+         cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+       else \
+         $(MAKE) $${lang}.po-create; \
+       fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           $(INSTALL_DATA) $(srcdir)/$$file \
+                           $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+         for file in Makevars; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+install-data-no: all
+install-data-yes: all
+       $(mkdir_p) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+         $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+         echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+             rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+           fi; \
+         done; \
+       done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+       else \
+         : ; \
+       fi
+installdirs-data-no:
+installdirs-data-yes:
+       $(mkdir_p) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+           fi; \
+         done; \
+       done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+uninstall-data-no:
+uninstall-data-yes:
+       catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+           rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+         done; \
+       done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+       rm -f remove-potcdate.sed
+       rm -f stamp-poT
+       rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+       rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+       rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+       @echo "This command is intended for maintainers to use;"
+       @echo "it deletes files that may require special tools to rebuild."
+       rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+       $(MAKE) update-po
+       @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+       dists="$(DISTFILES)"; \
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         dists="$$dists Makevars.template"; \
+       fi; \
+       if test -f $(srcdir)/$(DOMAIN).pot; then \
+         dists="$$dists $(DOMAIN).pot stamp-po"; \
+       fi; \
+       if test -f $(srcdir)/ChangeLog; then \
+         dists="$$dists ChangeLog"; \
+       fi; \
+       for i in 0 1 2 3 4 5 6 7 8 9; do \
+         if test -f $(srcdir)/ChangeLog.$$i; then \
+           dists="$$dists ChangeLog.$$i"; \
+         fi; \
+       done; \
+       if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+       for file in $$dists; do \
+         if test -f $$file; then \
+           cp -p $$file $(distdir) || exit 1; \
+         else \
+           cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+         fi; \
+       done
+
+update-po: Makefile
+       $(MAKE) $(DOMAIN).pot-update
+       test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+       $(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+       @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+       echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+       exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+       @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+       if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+       cd $(srcdir); \
+       if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "msgmerge for $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+       @:
+
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+       cd $(top_builddir) \
+         && $(SHELL) ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
new file mode 100644 (file)
index 0000000..7bd29b2
--- /dev/null
@@ -0,0 +1,41 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Simon Josefsson
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = bug-libidn@gnu.org
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..8328bf6
--- /dev/null
@@ -0,0 +1,8 @@
+# List of source files containing translatable strings for GNU Libidn.
+# Copyright (C) 2004, 2005, 2006, 2007 by Simon Josefsson
+lib/strerror-idna.c
+lib/strerror-pr29.c
+lib/strerror-punycode.c
+lib/strerror-stringprep.c
+lib/strerror-tld.c
+src/idn.c
diff --git a/po/Rules-quot b/po/Rules-quot
new file mode 100644 (file)
index 0000000..9c2a995
--- /dev/null
@@ -0,0 +1,47 @@
+# Special Makefile rules for English message catalogs with quotation marks.
+
+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+
+.SUFFIXES: .insert-header .po-update-en
+
+en@quot.po-create:
+       $(MAKE) en@quot.po-update
+en@boldquot.po-create:
+       $(MAKE) en@boldquot.po-update
+
+en@quot.po-update: en@quot.po-update-en
+en@boldquot.po-update: en@boldquot.po-update-en
+
+.insert-header.po-update-en:
+       @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+       if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       ll=`echo $$lang | sed -e 's/@.*//'`; \
+       LC_ALL=C; export LC_ALL; \
+       cd $(srcdir); \
+       if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "creation of $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+en@quot.insert-header: insert-header.sin
+       sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
+
+en@boldquot.insert-header: insert-header.sin
+       sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
+
+mostlyclean: mostlyclean-quot
+mostlyclean-quot:
+       rm -f *.insert-header
diff --git a/po/boldquot.sed b/po/boldquot.sed
new file mode 100644 (file)
index 0000000..4b937aa
--- /dev/null
@@ -0,0 +1,10 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
+s/“/“\e[1m/g
+s/”/\e[0m”/g
+s/‘/‘\e[1m/g
+s/’/\e[0m’/g
diff --git a/po/cs.gmo b/po/cs.gmo
new file mode 100644 (file)
index 0000000..e289676
Binary files /dev/null and b/po/cs.gmo differ
diff --git a/po/cs.po b/po/cs.po
new file mode 100644 (file)
index 0000000..d4e45cc
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,360 @@
+# Czech translation for libidn.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+# Petr Pisar <petr.pisar@atlas.cz>, 2007, 2008
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.9\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-07-03 08:28+0200\n"
+"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Úspěch"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Příprava řetězce selhala"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode selhal"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Znak jiný než číslice/písmeno/spojovník na vstupu"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Zakázaný úvodní nebo závěrečný spojovník („-“)"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Výstup by byl příliš dlouhý nebo příliš krátký"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Vstup nezačíná předponou ACE („xn--“)"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "Řetězec není po ToASCII idempotentní"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Vstup již obsahuje předponu ACE („xn--“)"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "Selhal systémový iconv"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Nelze vyhradit paměť"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "Selhalo volání systému dlopen"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Neznámá chyba"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "Řetězec není po unicodové NFKC normalizaci idempotentní"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Neplatný vstup"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Výstup by se nevešel do poskytnuté vyrovnávací paměti"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Omezení délky řetězce bylo překonáno"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Na vstupu zakázaná nepřiřazená ordinární čísla"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Na vstupu zakázaná ordinární čísla"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Na vstupu rozporné příkazy pro směr textu"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Chybně utvořený obousměrný řetězec"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Na vstupu zakázaná ordinární čísla pro obousměrný text"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Chyba v definici profilu pro stringprep"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Příznak neslučitelný s profilem"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Neznámý profil"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Unicodová normalizace selhala (vnitřní chyba)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Ordinární čísla zakázaná vrcholovou doménou"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Postrádám vstup"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Ve vstupu chybí vrcholová doména"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Další informace získáte příkazem „%s --help“.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Použití: %s [PŘEPÍNAČ]… [ŘETĚZEC]…\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"IDN (internacionalizovaná doménová jména) převádí ŘETĚZCE nebo standardní "
+"vstup.\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Rozhraní ke knihovně internacionalizovaných (s národními znaky) doménových\n"
+"jmen pro prostředí příkazového řádku.\n"
+"\n"
+"Všechny řetězce jsou očekávány ve znakové sadě upřednostňované vaším\n"
+"národním prostředím. Která sada to je, zjistíte přepínačem „--debug“. Jinou\n"
+"znakovou sadu můžete vnutit nastavením proměnné prostředí CHARSET.\n"
+"\n"
+"Je-li třeba pracovat s řetězcem začínající znakem „-“ (např. „-foo“), "
+"použijte\n"
+"„--“ pro označení konce všech parametrů (např. „idn --quiet -a -- -foo“).\n"
+"\n"
+"Povinné argumenty dlouhých přepínačů jsou rovněž povinné u odpovídajících\n"
+"krátkých přepínačů.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               Vypíše nápovědu a skončí\n"
+"  -V, --version            Vypíše verzi a skončí\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Připraví řetězec podle nameprep profilu\n"
+"  -d, --punycode-decode    Dekóduje Punycode\n"
+"  -e, --punycode-encode    Kóduje do Punycode\n"
+"  -a, --idna-to-ascii      Převede do ACE podle IDNA (implicitní režim)\n"
+"  -u, --idna-to-unicode    Převede z ACE podle IDNA\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   Přepne příznak IDNA AllowUnassigned\n"
+"      --usestd3asciirules  Přepne příznak IDNA UseSTD3ASCIIRules\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                Zkontroluje řetězec podle pravidel pro TLD.\n"
+"                           Jen u --idna-to-ascii a --idna-to-unicode\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+"  -n, --nfkc               Normalizuje řetězec podle Unicode v3.2 NFKC\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=ŘETĚZEC    Použije zadaný stringprep profil.\n"
+"                           Platné stringprep profily jsou: „Nameprep“,\n"
+"                           „iSCSI“, „Nodeprep“, „Resourceprep“, „trace“ a \n"
+"                           „SASLprep“\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              Vypíše ladicí informace\n"
+"      --quiet              Pracuje potichu\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "Pouze jeden přepínač z -s, -e, -d, -a, -u nebo -n smí být zadán."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Znaková sada „%s“.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Pište po jednom vstupním řetězci na jednom řádku zakončeným znakem nového "
+"řádku.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Chyba na vstupu"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Nelze převést z %s do UTF-8."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Nelze převést z UTF-8 do UCS-4."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile (profil pro přípravu řetězce): %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Z UTF-8 do %s nelze převést."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode (zakódování do Punycodu): %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode (dekódování Punycodu): %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Nelze převést z UCS-4 do UTF-8."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (pozice %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Normalizaci do NFKC nebylo možné provézt"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Chyby programu hlaste na <%s> (pouze anglicky),\n"
+#~ "chyby překladu na <translation-team-cs@lists.sourceforge.net> (česky).\n"
+
+#~ msgid "input[%lu] = U+%04x\n"
+#~ msgstr "vstup[%lu] = U+%04x\n"
+
+#~ msgid "output[%lu] = U+%04x\n"
+#~ msgstr "výstup[%lu] = U+%04x\n"
+
+#~ msgid "tld[%lu] = U+%04x\n"
+#~ msgstr "vrcholová_doména[%lu] = U+%04x\n"
+
+#~ msgid "nfkc: %s"
+#~ msgstr "nfkc: %s"
diff --git a/po/da.gmo b/po/da.gmo
new file mode 100644 (file)
index 0000000..ee3c5f4
Binary files /dev/null and b/po/da.gmo differ
diff --git a/po/da.po b/po/da.po
new file mode 100644 (file)
index 0000000..d9b2607
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,310 @@
+# Danish translation of the libidn gettext message catalogue
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Morten Bo Johansen <mojo@mbjnet.dk>, 2004, 2005
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 0.5.16\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2005-10-25 18:08+0200\n"
+"Last-Translator: Morten Bo Johansen <mojo@mbjnet.dk>\n"
+"Language-Team: Danish <dansk@klid.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Lykkedes"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Dannelse af tekststreng mislykkedes"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode mislykkedes"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Ikke-ciffer/bogstav/bindestreg i inddata"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Må ikke begynde eller slutte med minustegn ('-')"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Mængden af uddata ville blive for stor eller lille"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Inddata begynder ikke med et ACE-præfiks ('xn--')"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "Tekststreng er ikke beskyttet mod gentagelse under ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Inddata indeholder allerede et ACE-præfiks ('xn--')"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "Systemkald til iconv mislykkedes"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Kan ikke tildele hukommelse"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "Systemkald til dlopen mislykkedes"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Ukendt fejl"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "Tekststreng er ikke beskyttet mod gentagelse under NFKC-normalisering"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Ugyldige inddata"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Størrelse på uddata ville overstige tildelt plads i buffer"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Grænse for størrelse på tekststreng overskredet"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Ikke-tildelte kodepunkter i inddata ikke tilladt"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Kodepunkter i inddata ikke tilladt"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Konflikter mellem tovejs egenskaber i inddata"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Misdannet tovejs tekststreng"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Tovejs kodepunkter i inddata ikke tilladt"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Fejl i definition af stringprep-profil"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Konflikt mellem flag og profil"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Ukendt profil"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Normalisering af unicode mislykkedes (intern fejl)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Kodepunkter ikke tilladt af top-domæne"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Manglende inddata"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Fandt ikke et top-domæne i inddata"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr ""
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+
+#: src/idn.c:100
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+
+#: src/idn.c:104
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "Kun et af argumenterne -s, -e, -d, -a eller -u kan angives."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Tegnsæt `%s'.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr "Indtast hver streng på en særskilt linje, afsluttet med en ny linje.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Fejl i inddata"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Kunne ikke omdanne fra %s til UTF-8."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Kunne ikke omdanne fra UTF-8 til UCS-4."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Kunne ikke omdanne fra UTF-8 til %s."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Kunne ikke omdanne fra UCS-4 til UTF-8."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, fuzzy, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (position %d): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Tekststreng er ikke beskyttet mod gentagelse under NFKC-normalisering"
+
+#~ msgid "input[%d] = U+%04x\n"
+#~ msgstr "inddata[%d] = U+%04x\n"
+
+#~ msgid "output[%d] = U+%04x\n"
+#~ msgstr "uddata[%d] = U+%04x\n"
+
+#~ msgid "tld[%d] = U+%04x\n"
+#~ msgstr "tld[%d] = U+%04x\n"
diff --git a/po/de.gmo b/po/de.gmo
new file mode 100644 (file)
index 0000000..943aa21
Binary files /dev/null and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..7a52ab6
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,341 @@
+# German translation of libidn.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+# Roland Illig <roland.illig@gmx.de>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 0.4.1\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2004-03-28 20:30+0100\n"
+"Last-Translator: Roland Illig <roland.illig@gmx.de>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr ""
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr ""
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr ""
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr ""
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr ""
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr ""
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr ""
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr ""
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr ""
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr ""
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr ""
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr ""
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr ""
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr ""
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr ""
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr ""
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr ""
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr ""
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr ""
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr ""
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr ""
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr ""
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr ""
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr ""
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr ""
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr ""
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+
+#: src/idn.c:100
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+
+#: src/idn.c:104
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "%s: Nur eins von »-s«, »-e«, »-d«, »-a« oder »-u« kann angegeben werden.\n"
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Zeichensatz »%s«.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Geben Sie jede Eingabezeichenkette in einer eigenen Zeile ein, durch einen "
+"Zeilenumbruch abgeschlossen.\n"
+
+#: src/idn.c:199
+#, c-format
+msgid "input error"
+msgstr ""
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "%s: Konnte nicht von %s nach UTF-8 konvertieren.\n"
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "%s: Konnte nicht von UTF-8 nach UCS-4 konvertieren.\n"
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr ""
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "%s: Konnte nicht von UTF-8 nach %s konvertieren.\n"
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr ""
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr ""
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr ""
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "%s: Konnte nicht von UCS-4 nach UTF-8 konvertieren.\n"
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr ""
+
+#: src/idn.c:392
+#, fuzzy, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "%s: idna_to_unicode_8z4z() mit Fehler %d fehlgeschlagen.\n"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr ""
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr ""
+
+#: src/idn.c:458
+#, fuzzy, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "%s: idna_to_unicode_8z4z() mit Fehler %d fehlgeschlagen.\n"
+
+#: src/idn.c:537
+#, c-format
+msgid "could not do NFKC normalization"
+msgstr ""
+
+#~ msgid "%s: fgets() failed: "
+#~ msgstr "%s: fgets() fehlgeschlagen: "
+
+#~ msgid "input[%d] = U+%04x\n"
+#~ msgstr "input[%d] = U+%04x\n"
+
+#~ msgid "%s: stringprep_profile() failed with error %d.\n"
+#~ msgstr "%s: stringprep_profile() mit Fehler %d fehlgeschlagen.\n"
+
+#~ msgid "output[%d] = U+%04x\n"
+#~ msgstr "output[%d] = U+%04x\n"
+
+#~ msgid "%s: punycode_encode() failed with error %d.\n"
+#~ msgstr "%s: punycode_encode() mit Fehler %d fehlgeschlagen.\n"
+
+#~ msgid "%s: malloc() failed: "
+#~ msgstr "%s: malloc() fehlgeschlagen: "
+
+#~ msgid "%s: punycode_decode() failed with error %d.\n"
+#~ msgstr "%s: punycode_decode() mit Fehler %d fehlgeschlagen.\n"
+
+#~ msgid "%s: idna_to_ascii_4z() failed with error %d.\n"
+#~ msgstr "%s: idna_to_ascii_4z() mit Fehler %d fehlgeschlagen.\n"
+
+#~ msgid "%s: TLD idna_to_unicode_8z8z() failed with error %d.\n"
+#~ msgstr "%s: TLD idna_to_unicode_8z8z() mit Fehler %d fehlgeschlagen.\n"
+
+#~ msgid "tld[%d] = U+%04x\n"
+#~ msgstr "tld[%d] = U+%04x\n"
+
+#~ msgid "%s: string rejected by TLD test (Unicode position %d)\n"
+#~ msgstr ""
+#~ "%s: Zeichenkette beim TLD-Test zurückgewiesen (Unicode position %d)\n"
+
+#~ msgid "%s: tld_check_4z failed with error %d.\n"
+#~ msgstr "%s: tld_check_4z mit Fehler %d fehlgeschlagen.\n"
diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo
new file mode 100644 (file)
index 0000000..13d0fb0
Binary files /dev/null and b/po/en@boldquot.gmo differ
diff --git a/po/en@boldquot.header b/po/en@boldquot.header
new file mode 100644 (file)
index 0000000..fedb6a0
--- /dev/null
@@ -0,0 +1,25 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
diff --git a/po/en@boldquot.po b/po/en@boldquot.po
new file mode 100644 (file)
index 0000000..64214b7
--- /dev/null
@@ -0,0 +1,362 @@
+# English translations for GNU Libidn package.
+# Copyright (C) 2009 Simon Josefsson
+# This file is distributed under the same license as the GNU Libidn package.
+# Automatically generated, 2009.
+#
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.15\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2009-06-08 12:39+0200\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Success"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "String preparation failed"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode failed"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Non-digit/letter/hyphen in input"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Forbidden leading or trailing minus sign (‘\e[1m-\e[0m’)"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Output would be too large or too small"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Input does not start with ACE prefix (‘\e[1mxn--\e[0m’)"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "String not idempotent under ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Input already contain ACE prefix (‘\e[1mxn--\e[0m’)"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "System iconv failed"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Cannot allocate memory"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "System dlopen failed"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Unknown error"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "String not idempotent under Unicode NFKC normalization"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Invalid input"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Output would exceed the buffer space provided"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "String size limit exceeded"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Forbidden unassigned code points in input"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Prohibited code points in input"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Conflicting bidirectional properties in input"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Malformed bidirectional string"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Prohibited bidirectional code points in input"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Error in stringprep profile definition"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Flag conflict with profile"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Unknown profile"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Unicode normalization failed (internal error)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Code points prohibited by top-level domain"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Missing input"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "No top-level domain found in input"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Try ‘\e[1m%s --help\e[0m’ for more information.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Usage: %s [OPTION]... [STRINGS]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use ‘\e[1m--debug\e[0m’ to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with ‘\e[1m-\e[0m’, for example ‘\e[1m-foo\e[0m’, "
+"use ‘\e[1m--\e[0m’\n"
+"to signal the end of parameters, as in ‘\e[1midn --quiet -a -- -foo\e[0m’.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+
+#: src/idn.c:100
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+
+#: src/idn.c:104
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: ‘\e[1mNameprep\e[0m’,\n"
+"                             ‘\e[1miSCSI\e[0m’, ‘\e[1mNodeprep\e[0m’, "
+"‘\e[1mResourceprep\e[0m’, \n"
+"                             ‘\e[1mtrace\e[0m’, ‘\e[1mSASLprep\e[0m’\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+
+#: src/idn.c:173
+#, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "only one of -s, -e, -d, -a, -u or -n can be specified"
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Charset ‘\e[1m%s\e[0m’.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+
+#: src/idn.c:199
+#, c-format
+msgid "input error"
+msgstr "input error"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "could not convert from %s to UTF-8"
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "could not convert from UTF-8 to UCS-4"
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "could not convert from UTF-8 to %s"
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "could not convert from UCS-4 to UTF-8"
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (position %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, c-format
+msgid "could not do NFKC normalization"
+msgstr "could not do NFKC normalization"
diff --git a/po/en@quot.gmo b/po/en@quot.gmo
new file mode 100644 (file)
index 0000000..c212463
Binary files /dev/null and b/po/en@quot.gmo differ
diff --git a/po/en@quot.header b/po/en@quot.header
new file mode 100644 (file)
index 0000000..a9647fc
--- /dev/null
@@ -0,0 +1,22 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
diff --git a/po/en@quot.po b/po/en@quot.po
new file mode 100644 (file)
index 0000000..4b428f3
--- /dev/null
@@ -0,0 +1,357 @@
+# English translations for GNU Libidn package.
+# Copyright (C) 2009 Simon Josefsson
+# This file is distributed under the same license as the GNU Libidn package.
+# Automatically generated, 2009.
+#
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.15\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2009-06-08 12:39+0200\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Success"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "String preparation failed"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode failed"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Non-digit/letter/hyphen in input"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Forbidden leading or trailing minus sign (‘-’)"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Output would be too large or too small"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Input does not start with ACE prefix (‘xn--’)"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "String not idempotent under ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Input already contain ACE prefix (‘xn--’)"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "System iconv failed"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Cannot allocate memory"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "System dlopen failed"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Unknown error"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "String not idempotent under Unicode NFKC normalization"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Invalid input"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Output would exceed the buffer space provided"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "String size limit exceeded"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Forbidden unassigned code points in input"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Prohibited code points in input"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Conflicting bidirectional properties in input"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Malformed bidirectional string"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Prohibited bidirectional code points in input"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Error in stringprep profile definition"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Flag conflict with profile"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Unknown profile"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Unicode normalization failed (internal error)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Code points prohibited by top-level domain"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Missing input"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "No top-level domain found in input"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Try ‘%s --help’ for more information.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Usage: %s [OPTION]... [STRINGS]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use ‘--debug’ to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with ‘-’, for example ‘-foo’, use ‘--’\n"
+"to signal the end of parameters, as in ‘idn --quiet -a -- -foo’.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+
+#: src/idn.c:100
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+
+#: src/idn.c:104
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: ‘Nameprep’,\n"
+"                             ‘iSCSI’, ‘Nodeprep’, ‘Resourceprep’, \n"
+"                             ‘trace’, ‘SASLprep’\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+
+#: src/idn.c:173
+#, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "only one of -s, -e, -d, -a, -u or -n can be specified"
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Charset ‘%s’.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+
+#: src/idn.c:199
+#, c-format
+msgid "input error"
+msgstr "input error"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "could not convert from %s to UTF-8"
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "could not convert from UTF-8 to UCS-4"
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "could not convert from UTF-8 to %s"
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "could not convert from UCS-4 to UTF-8"
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (position %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, c-format
+msgid "could not do NFKC normalization"
+msgstr "could not do NFKC normalization"
diff --git a/po/eo.gmo b/po/eo.gmo
new file mode 100644 (file)
index 0000000..d3d4812
Binary files /dev/null and b/po/eo.gmo differ
diff --git a/po/eo.po b/po/eo.po
new file mode 100644 (file)
index 0000000..093835a
--- /dev/null
+++ b/po/eo.po
@@ -0,0 +1,354 @@
+# Translation of 'libidn' messages to Esperanto.
+# Esperantaj mesaĝoj por libidn.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+# Edmund GRIMLEY EVANS <edmundo@rano.org>, 2004-2005, 2007-2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.9\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-09-01 09:40+0100\n"
+"Last-Translator: Edmund GRIMLEY EVANS <edmundo@rano.org>\n"
+"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Sukceso"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Pretigo de signoĉeno malsukcesis"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode malsukcesis"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Signo ne-cifero/litero/dividstreko en enigo"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Malpermesita minuso ('-') ĉe komenco aŭ fino"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Eligo estus tro granda aŭ tro malgranda"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Enigo ne komenciĝas per ACE-prefikso ('xn--')"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "Ĉeno ŝanĝiĝas ĉe dua apliko de ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Enigo jam havas ACE-prefikson ('xn--')"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "Sistema iconv malsukcesis"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Ne povas akiri memoron"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "Sistema dlopen malsukcesis"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Nekonata eraro"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "Ĉeno ŝanĝiĝas ĉe dua apliko de unikoda NFKC-normigo"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Nevalida enigo"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Eligo estus tro granda por donita bufro"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Signoĉena grandolimo superita"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Malpermesita neatribuita kodero en enigo"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Malpermesita kodero en enigo"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Malkongruaj dudirektaj trajtoj en enigo"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Misformita dudirekta ĉeno"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Malpermesita dudirekta kodero en enigo"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Eraro en difino de stringprep-profilo"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Flaga malkongruo kun profilo"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Nekonata profilo"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Unikoda normigo malsukcesis (interna eraro)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Koderoj malpermesitaj de supera retregiono"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Mankanta enigo"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Nenia supera retregiono trovita en enigo"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Provu '%s --help' por pliaj informoj.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Uzado: %s [OPCIO]... [ĈENOJ]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"Internaciigitaj retnomoj (IDN) konverti ĈENOJn, aŭ la normalan enigon.\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Komandlinia interfaco al la biblioteko por internaciigitaj retnomoj.\n"
+"\n"
+"Ĉiuj ĉenoj estu koditaj per la preferata signaro de via\n"
+"lokaĵaro. Uzu '--debug' por eltrovi, kiu ĝi estas. Vi\n"
+"povas specifi alian signaron per la media variablo CHARSET.\n"
+"\n"
+"Por trakti ĉenon, kiu komenciĝas per '-', ekzemple '-foo', uzu '--'\n"
+"por indiki la finon de la parametroj, kiel en 'idn --quiet -a -- -foo'.\n"
+"Devigaj argumentoj por longaj opcioj estas devigaj ankaŭ por mallongaj\n"
+"opcioj.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               Montri helpon kaj eliri\n"
+"  -V, --version            Montri version kaj eliri\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Pretigi ĉenon laŭ la profilo nameprop\n"
+"  -d, --punycode-decode    Malkodi Punycode\n"
+"  -e, --punycode-encode    Kodi Punycode\n"
+"  -a, --idna-to-ascii      Konverti al ACE laŭ IDNA (implicita reĝimo)\n"
+"  -u, --idna-to-unicode    Konverti de ACE laŭ IDNA\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   Ŝanĝi la flagon IDNA AllowUnassigned\n"
+"      --usestd3asciirules  Ŝanĝi la flagon IDNA UseSTD3ASCIIRules\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                Kontroli ĉeno pri TLD-specifaj reguloj\n"
+"                             Nur por --idna-to-ascii kaj --idna-to-unicode\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr "  -n, --nfkc               Normigi signoĉenon laŭ Unikodo v3.2 NFKC\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=ĈENO       Uzi specifitan stringprep-profilon anstataŭe\n"
+"                             Validaj stringprep-profiloj: 'Nameprep',\n"
+"                             'iSCSI', 'Nodeprep', 'Resourceprep',\n"
+"                             'trace', 'SASLprep'\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              Montri informojn por erarspurado\n"
+"      --quiet              Silenta funkciado\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "Nur unu el -s, -e, -d, -a, -u aŭ -n povas esti donita."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Signaro '%s'.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Tajpu ĉiun enigan ĉenon en propra linio, kun linifina signo ĉe la\n"
+"fino.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Enig-eraro"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Ne povis konverti de %s al UTF-8."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Ne povis konverti de UTF-8 al UCS-4."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Ne povis konverti de UTF-8 al %s."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Ne povis konverti de UCS-4 al UTF-8."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (loko %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Ne povis fari NFKC-normigon."
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Raportu cimojn al <%s>.\n"
+#~ "Raportu erarojn en la traduko al <translation-team-eo@lists.sourceforge."
+#~ "net>.\n"
+
+#~ msgid "input[%lu] = U+%04x\n"
+#~ msgstr "enigo[%lu] = U+%04x\n"
+
+#~ msgid "output[%lu] = U+%04x\n"
+#~ msgstr "eligo[%lu] = U+%04x\n"
+
+#~ msgid "tld[%lu] = U+%04x\n"
+#~ msgstr "tld[%lu] = U+%04x\n"
diff --git a/po/fi.gmo b/po/fi.gmo
new file mode 100644 (file)
index 0000000..75a2edb
Binary files /dev/null and b/po/fi.gmo differ
diff --git a/po/fi.po b/po/fi.po
new file mode 100644 (file)
index 0000000..3ba3ad9
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,366 @@
+# translation of libidn-1.4.pot to Finnish
+# Copyright © 2008 Free Software Foundation, Inc.
+# Copyright © 2007 Simon Josefsson
+# This file is distributed under the same license as the libidn package.
+#
+# Jorma Karvonen <karvjorm@users.sf.net>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.4\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-01-15 18:22+0200\n"
+"Last-Translator: Jorma Karvonen <karvjorm@users.sf.net>\n"
+"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Onnistui"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Merkkijonon valmistelu ei onnistunut"
+
+#  Wikipedia: Punycode is a computer programming encoding syntax by which a Unicode string of characters can be translated into the more-limited character set permitted in network host names.
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode-koodaus ei onnistunut"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Syötteessä on merkki, joka ei ole numero/kirjain/tavuviiva"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Ei saa alkaa tai loppua miinusmerkillä (”-”)"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Tuloste olisi liian suuri tai liian pieni"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Syöte ei ala ACE-prefiksillä (”xn--”)"
+
+#  Yksinkertaisesti selitettynä idempotentti on matemaattinen termi, joka tarkoittaa, että jonkun toiminnon tulos on aina sama kun toiminto toistetaan kahdesti (tai useammin).
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "Merkkijono ei ole idempotentti ToASCII-toiminnon aikana"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Syöte jo sisältää ACE-prefiksin (”xn--”)"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "Järjestelmän iconv-käsky ei onnistunut"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Ei voida varata muistia"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "Järjestelmän dlopen-käsky ei onnistunut"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Tuntematon virhe"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "Merkkijono ei ole idempotentti Unicode NFKC-normeerauksen aikana"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Virheellinen syöte"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Tuloste ylittäisi varatun puskurin tilan"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Merkkijonon koko ylitettiin"
+
+#  Code point is any value in the Unicode codespace; that is, the range of integers from 0 to hexadecimal 10FFFF.
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Kiellettyjä määräämättömiä code points-skalaariarvoja syötteessä"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Kiellettyjä code points-skalaariarvoja syötteessä"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Ristiriitaisia kaksisuuntaisia ominaisuuksia syötteessä"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Väärän muotoinen kaksisuuntainen merkkijono"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Kiellettyjä kaksisuuntaisia code points-skalaariarvoja syötteessä"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Virhe strngprep-profiilimäärittelyssä"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Lippu ristiriidassa profiilin kanssa"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Tuntematon profiili"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Unicode-normeeraus ei onnistunut (sisäinen virhe)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Code points-skalaariarvot kiellettyjä ylätason toimialueessa"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Syöte puuttuu"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Syötteestä ei löytynyt ylätason toimialuetta"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Lisätietoja käskyllä ”%s --help”.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Käyttö: %s [VALITSIN]... [MERKKIJONOT]...\n"
+
+#  convert -> converts ?
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"Kansainvälistetty verkkotunnus (IDN) muuntaa MERKKIJONOT tai vakiosyötteen.\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Komentorivirajapinta kansainvälistettyyn verkkotunnuskirjastoon.\n"
+"\n"
+"Kaikki merkkijonot on otaksuttu koodatun parhaimpana pidetyllä merkistöllä,\n"
+"jota locale-asetuksesi käyttää. Käyttämällä valitsinta ”--debug” saat\n"
+"selville, mikä merkistö se on. Voit korvata käytetyn merkistön asettamalla\n"
+"ympäristömuuttujan CHARSET.\n"
+"\n"
+"Merkillä ”-” alkava merkkijono, esimerkiksi ”-foo”, prosessoidaan "
+"käyttämällä\n"
+"”--”-merkkejä signaloimaan parametrien loppumista, kuten käskyssä\n"
+"”idn --quiet -a -- -foo”.\n"
+"\n"
+"Pakolliset argumentit pitkille valitsimille ovat pakollisia myös lyhyille\n"
+"valitsimille.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               Tulosta ohje ja poistu\n"
+"  -V, --version            Tulosta versio ja poistu\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Valmistele merkkijono ”nameprep”-profiilin "
+"mukaisesti\n"
+"  -d, --punycode-decode    Pura Punycode-koodaus\n"
+"  -e, --punycode-encode    Koodaa Punycode-koodauksella\n"
+"  -a, --idna-to-ascii      Muunna ACE-koodiksi IDNA-koodista (oletustila)\n"
+"  -u, --idna-to-unicode    Muunna ACE-koodista IDNA-koodiksi\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   Vaihda ”IDNA AllowUnassigned”-lipun tilaa\n"
+"      --usestd3asciirules  Vaihda ”IDNA UseSTD3ASCIIRules”-lipun tilaa\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                Etsi merkkijonosta TLD-kohtaisia sääntöjä\n"
+"                             Vain valitsimille ”--idna-to-ascii” ja ”--idna-"
+"to-unicode”\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=MERKKIJONO Käytä määritellyn ”stringprep”-profiilin sijasta\n"
+"                             Voimassa olevat ”stringprep”-profiilit: "
+"”Nameprep”,\n"
+"                             ”iSCSI”, ”Nodeprep”, ”Resourceprep”, \n"
+"                             ”trace”, ”SASLprep”\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              Tulosta virheenjäljitystiedot\n"
+"      --quiet              Hiljainen toiminta\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "Vain yksi valitsimista -s, -e, -d, -a or -u voidaan määritellä"
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Merkistö ”%s”\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Kirjoita jokainen merkkijono omalle rivilleen ja lopeta rivi "
+"rivinvaihdolla.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Syötevirhe"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Ei voitu muuntaa %s-merkistöstä UTF-8-merkistöön"
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Ei voitu muuntaa UTF-8-merkistöstä UCS-4-merkistöön"
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Ei voitu muuntaa UTF-8-merkistöstä %s-merkistöön."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc-käsky"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Ei voitu muuntaa UCS-4-merkistöstä UTF-8-merkistöön."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (sijainti %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Merkkijono ei ole idempotentti Unicode NFKC-normeerauksen aikana"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ilmoita virheistä osoitteeseen <%s>.\n"
+#~ "Ilmoita käännösvirheistä osoitteeseen <translation-team-fi@lists."
+#~ "sourceforge.net>.\n"
+
+#~ msgid "input[%lu] = U+%04x\n"
+#~ msgstr "syöte[%lu] = U+%04x\n"
+
+#~ msgid "output[%lu] = U+%04x\n"
+#~ msgstr "tuloste[%lu] = U+%04x\n"
+
+#~ msgid "tld[%lu] = U+%04x\n"
+#~ msgstr "tld[%lu] = U+%04x\n"
diff --git a/po/fr.gmo b/po/fr.gmo
new file mode 100644 (file)
index 0000000..3cb6b49
Binary files /dev/null and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
new file mode 100644 (file)
index 0000000..f7dcf1d
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,392 @@
+# Messages français pour GNU concernant libidn.
+# Copyright © 1996 Free Software Foundation, Inc.
+# This file is distributed under the same licence as the libidn package.
+# Marc Veillet <scouigne@gmail.com>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU libidn-1.9\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-09-15 09:32-0500\n"
+"Last-Translator: Marc Veillet <scouigne@gmail.com>\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Succès"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "La préparation de la chaîne a échoué"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode a échoué"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Pas de chiffre/lettre/tirait fourni dans l'entrée"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Signe de négation (`-') en préfixe ou en suffixe interdit"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "La sortie serait trop grande ou trop petite"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "L'entrée ne débute pas par un préfixe ACE (`xn--')"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "La chaîne n'est pas idempotente sous ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "L'entrée contient déjà un préfixe ACE (`xn--')"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "La fonction système icon() a échoué"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Ne peut allouer de la mémoire"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "La fonction système dlopen() a échoué"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Erreur inconnue"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "La chaîne n'est pas idempotente sous la normalisation Unicode NFKC"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Entrée invalide"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "La sortie excèderait l'espace tampon fourni"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "La limite de  la taille de la chaîne est dépassée"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Interdiction de codes points non affectées dans l'entrée"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Codes points prohibés dans l'entrée"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Propriétés bidirectionnelles conflictuelles dans l'entrée"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Chaîne bidirectionnelle mal composée"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Codes points bidirectionnels prohibés dans l'entrée"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Erreur dans la définition de profil de stringprep"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Conflit de fanions avec le profil"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Profil inconnu"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "La normalisation Unicode a échoué (erreur interne)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Codes points prohibés par le domaine de haut niveau"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Entrée manquante"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Aucun domaine de haut niveau n'a été repéré dans l'entrée"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Essayer `%s --help' pour plus d'information.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Usage : %s [OPTION]... [STRINGS]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"Nom de domaine internationalisé (IDN) convertit les STRINGS, ou les entrées "
+"standards.\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Interface de ligne de commande pour la bibliothèque de nom de domaine "
+"internationalisé.\n"
+"\n"
+"Toutes les chaînes doivent être encodées dans le format préféré de table de "
+"caractères\n"
+"défini sur le système local.  Utilisez `--debug' pour déterminer de quelle "
+"table de caractère il s'agit.  Vous\n"
+"pourvez outrepasser cette table de caractères en utilisant une variable "
+"d'environnement CHARSET.\n"
+"\n"
+"Pour traiter une chaîne qui commence par `-', par exemple `-foo', utilisez "
+"`--'\n"
+"afin de signaler la fin des paramètres, comme dans `idn --quiet -a -- -"
+"foo'.\n"
+"\n"
+"Les arguments obligatoires des options longues sont également obligatoires "
+"pour les options courtes.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               Imprime l'aide et quitte\n"
+"  -V, --version            Imprime la version et quitte\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Traite la chaîne en fonction du profil nameprep\n"
+"  -d, --punycode-decode    Décode le Punycode\n"
+"  -e, --punycode-encode    Encode le Punycode\n"
+"  -a, --idna-to-ascii      Convertit vers ACE selon le mode IDNA (mode par "
+"défaut)\n"
+"  -u, --idna-to-unicode    Convertit depuis ACE selon IDNA\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   Permute le fanion IDNA AllowUnassigned\n"
+"      --usestd3asciirules  Permute le fanion IDNA UseSTD3ASCIIRules\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                Vérifie la chaîne pour des règles TLD "
+"spéficiques\n"
+"                             Seulement pour --idna-to-ascii et --idna-to-"
+"unicode\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+"  -n, --nfkc               Uniformise la chaîne en fonction de Unicode v3.2 "
+"NFKC\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=STRING     Utilise un profil stringprep à la place\n"
+"                             Profils stringprep valides : `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              Imprime les données de débogage\n"
+"      --quiet              Mode silencieux\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "Seulement une option parmi -s, -e, -d, -a ou -u peut être spécifiée."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Jeu de caractères `%s'.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Tapez chaque chaque chaîne sur une seule ligne terminée par un retour de "
+"chariot.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Erreur de saisie"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Ne peut effectuer la conversion à partir de %s vers UTF-8."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Ne peut effectuer la conversion à partir de UTF-8 vers UCS-4."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile : %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Ne peut effectuer la conversion à partir de UTF-8 vers %s."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode : %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode : %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Ne peut effectuer la conversion à partir de UCS-4 vers UTF-8."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z : %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD) : %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (position %lu) : %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z : %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z : %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Ne peut compléter l'uniformisation NFKC"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Rapporter les anomalies à <%s>.\n"
+
+#~ msgid "input[%d] = U+%04x\n"
+#~ msgstr "entrée[%d] = U+%04x\n"
+
+#~ msgid "output[%d] = U+%04x\n"
+#~ msgstr "sortie[%d] = U+%04x\n"
+
+#~ msgid "tld[%d] = U+%04x\n"
+#~ msgstr "tld[%d] = U+%04x\n"
+
+#~ msgid "%s: fgets() failed: "
+#~ msgstr "%s: fgets() a échoué: "
+
+#~ msgid "%s: stringprep_profile() failed with error %d.\n"
+#~ msgstr "%s: stringprep_profile() a échoué avec l'erreur %d.\n"
+
+#~ msgid "%s: punycode_encode() failed with error %d.\n"
+#~ msgstr "%s: punycode_encode() a échoué avec l'erreur %d.\n"
+
+#~ msgid "%s: malloc() failed: "
+#~ msgstr "%s: malloc() a échoué: "
+
+#~ msgid "%s: punycode_decode() failed with error %d.\n"
+#~ msgstr "%s: punycode_decode() a échoué avec l'erreur %d.\n"
+
+#~ msgid "%s: idna_to_ascii_4z() failed with error %d.\n"
+#~ msgstr "%s: idna_to_ascii_4z() a échoué avec l'erreur %d.\n"
+
+#~ msgid "%s: TLD idna_to_unicode_8z8z() failed with error %d.\n"
+#~ msgstr "%s: TLD idna_to_unicode_8z8z() a échoué avec l'erreur %d.\n"
+
+#~ msgid "%s: string rejected by TLD test (Unicode position %d)\n"
+#~ msgstr "%s: chaîne rejeté par TLD test (Unicode position %d)\n"
+
+#~ msgid "%s: tld_check_4z failed with error %d.\n"
+#~ msgstr "%s: tld_check_4z a échoué avec l'erreur %d.\n"
diff --git a/po/id.gmo b/po/id.gmo
new file mode 100644 (file)
index 0000000..1c96e99
Binary files /dev/null and b/po/id.gmo differ
diff --git a/po/id.po b/po/id.po
new file mode 100644 (file)
index 0000000..7e1670c
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,348 @@
+# Indonesian translations for libidn package.
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+# Andhika Padmawan <andhika.padmawan@gmail.com>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.9\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-08-16 21:05+0700\n"
+"Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Sukses"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Penyiapan benang gagal"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode gagal"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Non-digit/huruf/sambung di masukan"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Tanda minus awalan atau akhiran terlarang (`-')"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Keluaran akan terlalu besar atau terlalu kecil"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Masukan tidak diawali dengan prefiks ACE (`xn--')"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "Benar tidak idempoten di bawah ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Masukan telah berisi prefiks ACE (`xn--')"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "Sistem iconv gagal"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Tak dapat alokasi memori"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "Sistem dlopen gagal"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Galat tak dikenal"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "Benang tak idempoten di bawah normalisasi Unicode NFKC"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Masukan tidak sah"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Keluaran akan melebihi ruang penyangga yang disediakan"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Batas ruang benang tercapai"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Titik kode tak ditugaskan terlarang di masukan"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Titik kode terlarang di masukan"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Properti dwiarah konflik di masukan"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Benang dwiarah salah bentuk"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Titik kode dwiarah terlarang di masukan"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Galat di definisi profil stringprep"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Bendera konflik dengan profil"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Profil tak diketahui"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Normalisasi unicode gagal (galat internal)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Titik kode dilarang oleh ranah level atas"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Masukan hilang"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Tak ada ranah level atas yang ditemukan di masukan"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Coba `'%s -- help' untuk informasi lebih lanjut.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Penggunaan: %s [OPSI]... [BENANG]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"BENANG konversi Internationalized Domain Name (IDN), atau masukan standar.\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Antarmuka baris perintah ke pustaka nama ranah internasionalisasi.\n"
+"\n"
+"Semua benang diharapkan tersandi dalam set karakter kesukaan yang dipakai\n"
+"oleh lokal anda. Gunakan `--debug' untuk mencari tahu apakah set karakter "
+"ini.\n"
+"Anda dapat menimpa set karakter yang digunakan oleh pengaturan variabel "
+"lingkungan CHARSET.\n"
+"\n"
+"Untuk memproses benang yang dimulai dengan `-', misalnya `-foo', gunakan\n"
+"`--' untuk menandai akhir parameter, seperti dalam `idn --quiet -a -- -"
+"foo'.\n"
+"\n"
+"Argumen mandatori untuk opsi panjang merupakan mandatori untuk opsi pendek "
+"juga.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               Cetak bantuan lalu keluar\n"
+"  -V, --version            Cetak versi lalu keluar\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Siapkan benang berdasarkan profil nameprep\n"
+"  -d, --punycode-decode    Awasandi Punycode\n"
+"  -e, --punycode-encode    Sandi Punycode\n"
+"  -a, --idna-to-ascii      Konversi ke ACE menurut IDNA (mode standar)\n"
+"  -u, --idna-to-unicode    Konversi dari ACE menurut IDNA\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   Ubah bendera AllowUnassigned IDNA\n"
+"      --usestd3asciirules  Ubah bendera UseSTD3ASCIIRules IDNA\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                Cek benang untuk peraturan spesifik TLD\n"
+"                             Hanya untuk --idna-to-ascii dan --idna-to-"
+"unicode\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+"  -n, --nfkc               Normalisasi benang berdasarkan Unicode v3.2 NFKC\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=BENANG     Gunakan profil stringprep ketimbang\n"
+"                             Profil stringprep yang sah: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              Cetak informasi awakutu\n"
+"      --quiet              Operasi diam\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr ""
+"Hanya salah satu dari -s, -e, -d, -a, -u, atau -n yang dapat ditentukan."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Set karakter `%s'.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Ketik tiap benang masukan pada baris itu sendiri, diakhiri oleh karakter "
+"newline.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Galat masukan"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Tak dapat konversi dari %s ke UTF-8."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Tak dapat konversi dari UTF-8 ke UCS-4"
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Tak dapat konversi dari UTF-8 ke %s."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr ""
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Tak dapat konversi dari UCS-4 ke UTF-8."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (posisi %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Tak dapat melakukan normalisasi NFKC."
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Laporkan kutu ke <%s>.\n"
diff --git a/po/insert-header.sin b/po/insert-header.sin
new file mode 100644 (file)
index 0000000..b26de01
--- /dev/null
@@ -0,0 +1,23 @@
+# Sed script that inserts the file called HEADER before the header entry.
+#
+# At each occurrence of a line starting with "msgid ", we execute the following
+# commands. At the first occurrence, insert the file. At the following
+# occurrences, do nothing. The distinction between the first and the following
+# occurrences is achieved by looking at the hold space.
+/^msgid /{
+x
+# Test if the hold space is empty.
+s/m/m/
+ta
+# Yes it was empty. First occurrence. Read the file.
+r HEADER
+# Output the file's contents by reading the next line. But don't lose the
+# current line while doing this.
+g
+N
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/it.gmo b/po/it.gmo
new file mode 100644 (file)
index 0000000..9b15716
Binary files /dev/null and b/po/it.gmo differ
diff --git a/po/it.po b/po/it.po
new file mode 100644 (file)
index 0000000..cd447be
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,350 @@
+# Italian messages for libidn.
+# Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+# Marco Colombo <m.colombo@ed.ac.uk>, 2004, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.9\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-07-07 10:57+0100\n"
+"Last-Translator: Marco Colombo <m.colombo@ed.ac.uk>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Successo"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Preparazione della stringa non riuscita"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode non riuscito"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Non-numero/lettera/trattino nell'input"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Segno meno (\"-\") iniziale o finale proibito"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "L'output sarebbe troppo grande o troppo piccolo"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "L'input non comincia con il prefisso ACE (\"xn--\")"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "La stringa non è idempotente per ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "L'input contiene già il prefisso ACE (\"xn--\")"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "Chiamata di sistema iconv non riuscita"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Impossibile allocare memoria"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "Chiamata di sistema dlopen non riuscita"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Errore sconosciuto"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "La stringa non è idempotente per la normalizzazione Unicode NFKC"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Input non valido"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "L'output eccederebbe il buffer fornito"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Limite di grandezza della stringa superato"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Codepoints non assegnati proibiti nell'input"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Codepoints proibiti nell'input"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Proprietà bidirezionali in conflitto nell'input"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Stringa bidirezionale malformata"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Codepoints bidirezionali proibiti nell'input"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Errore nella definizione del profilo stringprep"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Flag in conflitto con il profilo"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Profilo sconosciuto"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Normalizzazione Unicode non riuscita (errore interno)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Codepoints proibiti dal dominio di primo livello"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Input mancante"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Nessun dominio di primo livello trovato nell'input"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Usare \"%s --help\" per maggiori informazioni.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Uso: %s [OPZIONI]... [STRINGHE]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"Converte STRINGHE (o lo standard input) in nomi di dominio "
+"internazionalizzato (IDN).\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Interfaccia per la libreria di nomi di dominio internazionalizzati.\n"
+"\n"
+"Si assume che tutte le stringhe siano codificate nel set di caratteri\n"
+"della localizzazione in uso. Usare \"--debug\" per scoprire quale sia tale "
+"set.\n"
+"Il set di caratteri in uso può essere cambiato impostando la variabile\n"
+"d'ambiente CHARSET.\n"
+"\n"
+"Per elaborare una stringa cha comincia con \"-\", per esempio \"-foo\", "
+"usare \"--\"\n"
+"per segnalare la fine dei parametri, come in \"idn --quiet -a -- -foo\".\n"
+"\n"
+"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle "
+"corte.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               Stampa questo aiuto ed esce\n"
+"  -V, --version            Stampa la versione ed esce\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Prepara la stringa secondo il profilo nameprep\n"
+"  -d, --punycode-decode    Decodifica Punycode\n"
+"  -e, --punycode-encode    Codifica Punycode\n"
+"  -a, --idna-to-ascii      Converti in ACE secondo IDNA (modalità "
+"predefinita)\n"
+"  -u, --idna-to-unicode    Converti da ACE secondo IDNA\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   Attiva l'opzione IDNA AllowUnassigned\n"
+"      --usestd3asciirules  Attiva l'opzione IDNA UseSTD3ASCIIRules\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                Controlla le stringhe per regole specifiche su "
+"TLD\n"
+"                             Solo per --idna-to-ascii e --idna-to-unicode\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+"  -n, --nfkc               Normalizza la stringa come Unicode v3.2 NFKC\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=STRINGA    Usa il profilo stringprep indicato\n"
+"                             Validi profili stringprep sono: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              Stampa le informazioni di debug\n"
+"      --quiet              Opera silenziosamente\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "Può essere indicato solo uno tra -s, -e, -d, -a, -u e -n."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Set di caratteri \"%s\".\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Scrivere ogni stringa di input in una riga a sé, terminata da un carattere "
+"di newline.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Errore di input"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Impossibile convertire da %s a UTF-8."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Impossibile convertire da UTF-8 a UCS-4."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Impossibile convertire da UTF-8 a %s."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr ""
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Impossibile convertire da UCS-4 a UTF-8."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (posizione %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Impossibile effettuare la normalizzazione Unicode NFKC."
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Segnalare i bug a <%s>.\n"
+#~ "Segnalare i bug nella traduzione a <tp@lists.linux.it>.\n"
diff --git a/po/ja.gmo b/po/ja.gmo
new file mode 100644 (file)
index 0000000..56511c8
Binary files /dev/null and b/po/ja.gmo differ
diff --git a/po/ja.po b/po/ja.po
new file mode 100644 (file)
index 0000000..3e8cf74
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,311 @@
+# Japanese messages for libidn.
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+# GOTO Masanori <gotom@debian.or.jp>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 0.5.16\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2006-03-21 11:20+0900\n"
+"Last-Translator: GOTO Masanori <gotom@debian.or.jp>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=EUC-JP\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "À®¸ù"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "ʸ»úÎó½àÈ÷Ãæ¤Ç¼ºÇÔ"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "PunycodeÁàºîÃæ¤Ç¼ºÇÔ"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "ÆþÎÏÃæ¤Ë¿ôÃÍ/ʸ»ú/¥Ï¥¤¥Õ¥ó°Ê³°¤¬Â¸ºß"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "ÀèÆ¬¤Þ¤¿¤ÏËöÈø¤Ë¤¢¤ë¥Þ¥¤¥Ê¥¹µ­¹æ(`-')¤Ïµö¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "½ÐÎϤÏÂ礭¤¹¤®¤ë¤«¾®¤µ¤¹¤®¤ë"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "ÆþÎϤÏACEÀÜÆ¬¼­(`xn--')¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤Þ¤»¤ó"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "ToASCIIÁàºî¤Ë¤è¤ë½ÐÎÏʸ»úÎó¤ÏÅù¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "ÆþÎϤϴû¤ËACEÀÜÆ¬¼­(`xn--')¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "¥·¥¹¥Æ¥à´Ø¿ôiconv¤Ç¼ºÇÔ"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "¥á¥â¥ê³ÎÊݤ˼ºÇÔ"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "¥·¥¹¥Æ¥à´Ø¿ôdlopen¤Ç¼ºÇÔ"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "̤ÃΤΥ¨¥é¡¼"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "Unicode¤ÎNFKCÀµµ¬²½¤Ë¤è¤ë½ÐÎÏʸ»úÎó¤ÏÅù¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "ÉÔÀµ¤ÊÆþÎÏ"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "½ÐÎϤÏÍ¿¤¨¤é¤ì¤¿¥Ð¥Ã¥Õ¥¡¶õ´Ö¤Ë¼ý¤Þ¤ê¤Þ¤»¤ó"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "ʸ»úÎóĹ¤Î¸Â³¦¤ò±Û¤¨¤Þ¤·¤¿"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "µö¤µ¤ì¤Æ¤¤¤Ê¤¤Ì¤³äÅö¤Æ¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È¤¬ÆþÎϤˤ¢¤ê¤Þ¤¹"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "¶Ø»ß¥³¡¼¥É¥Ý¥¤¥ó¥È¤¬ÆþÎϤˤ¢¤ê¤Þ¤¹"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "ÁÐÊý¸þ(bidirectional)À­¤¬ÆþÎÏÃæ¤Ç¾×ÆÍ¤·¤Æ¤¤¤Þ¤¹"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "ÉÔÀµ¤ÊÁÐÊý¸þ(bidirectional)ʸ»úÎó"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "¶Ø»ßÁÐÊý¸þ(bidirectional)¥³¡¼¥É¥Ý¥¤¥ó¥È¤¬ÆþÎϤˤ¢¤ê¤Þ¤¹"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "stringprep¥×¥í¥Õ¥¡¥¤¥ëÄêµÁ¤Ç¥¨¥é¡¼"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "¥Õ¥é¥°¤¬¥×¥í¥Õ¥¡¥¤¥ë¤È¾×ÆÍ¤·¤Æ¤¤¤Þ¤¹"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "̤ÃΤΥץí¥Õ¥¡¥¤¥ë"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "UnicodeÀµµ¬²½¤Ë¼ºÇÔ(ÆâÉô¥¨¥é¡¼)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "¥È¥Ã¥×¥ì¥Ù¥ë¥É¥á¥¤¥ó¤Ë¤è¤Ã¤Æ¶Ø»ß¤µ¤ì¤¿¥³¡¼¥É¥Ý¥¤¥ó¥È"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "ÆþÎϤ¬¤¢¤ê¤Þ¤»¤ó"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "¥È¥Ã¥×¥ì¥Ù¥ë¥É¥á¥¤¥ó¤¬ÆþÎÏÃæ¤Ëȯ¸«¤Ç¤­¤Þ¤»¤ó"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr ""
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+
+#: src/idn.c:100
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+
+#: src/idn.c:104
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "-s, -e, -d, -a, -u¤Î¤¤¤º¤ì¤«1¤Ä¤À¤±¤¬»ØÄê¤Ç¤­¤Þ¤¹."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "ʸ»ú¥»¥Ã¥È`%s'.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr "²þ¹Ôʸ»ú¤Ç½ªÃ¼¤µ¤ì¤¿ÆþÎÏʸ»úÎó¤ò1¹Ô¤º¤Ä¥¿¥¤¥×¤·¤Æ¤¯¤À¤µ¤¤.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "ÆþÎÏ¥¨¥é¡¼"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "%s¤«¤éUTF-8¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "UTF-8¤«¤éUCS-4¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "UTF-8¤«¤é%s¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "UCS-4¤«¤éUTF-8¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, fuzzy, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (°ÌÃÖ %d): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Unicode¤ÎNFKCÀµµ¬²½¤Ë¤è¤ë½ÐÎÏʸ»úÎó¤ÏÅù¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#~ msgid "input[%d] = U+%04x\n"
+#~ msgstr "ÆþÎÏ[%d] = U+%04x\n"
+
+#~ msgid "output[%d] = U+%04x\n"
+#~ msgstr "½ÐÎÏ[%d] = U+%04x\n"
+
+#~ msgid "tld[%d] = U+%04x\n"
+#~ msgstr "tld[%d] = U+%04x\n"
diff --git a/po/libidn.pot b/po/libidn.pot
new file mode 100644 (file)
index 0000000..3805c6f
--- /dev/null
@@ -0,0 +1,303 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Simon Josefsson
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.15\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr ""
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr ""
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr ""
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr ""
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr ""
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr ""
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr ""
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr ""
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr ""
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr ""
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr ""
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr ""
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr ""
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr ""
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr ""
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr ""
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr ""
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr ""
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr ""
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr ""
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr ""
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr ""
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr ""
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr ""
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr ""
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr ""
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+
+#: src/idn.c:100
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+
+#: src/idn.c:104
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+
+#: src/idn.c:173
+#, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr ""
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr ""
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+
+#: src/idn.c:199
+#, c-format
+msgid "input error"
+msgstr ""
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr ""
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr ""
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr ""
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr ""
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr ""
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr ""
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr ""
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr ""
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr ""
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr ""
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr ""
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr ""
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr ""
+
+#: src/idn.c:537
+#, c-format
+msgid "could not do NFKC normalization"
+msgstr ""
diff --git a/po/nl.gmo b/po/nl.gmo
new file mode 100644 (file)
index 0000000..3fcb963
Binary files /dev/null and b/po/nl.gmo differ
diff --git a/po/nl.po b/po/nl.po
new file mode 100644 (file)
index 0000000..9f1c19a
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,356 @@
+# Dutch translations for libidn.
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+#
+# Elros Cyriatan <cyriatan@fastmail.fm>, 2004.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn-1.9\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-07-02 22:58+0200\n"
+"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Gelukt"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Voorbewerken van tekenreeks is mislukt"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycodering is mislukt"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Iets anders dan cijfer/letter/verbindingsstreepje in invoer"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Ongeoorloofd minteken ('-') aan begin of eind"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Uitvoer zou te groot of te klein worden"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Invoer begint niet met een ACE-voorvoegsel ('xn--')"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr ""
+"Tekenreeks is niet hetzelfde na retourconversie (van ASCII naar Unicode en "
+"terug)"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Invoer bevat al een ACE-voorvoegsel ('xn--')"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "De iconv()-systeemfunctie is mislukt"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Onvoldoende geheugen beschikbaar"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "De dlopen()-systeemfunctie is mislukt"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Onbekende fout"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr ""
+"Tekenreeks is problematisch bij normalisering volgens Unicode-NFKC:\n"
+"er zijn verschillende mogelijkheden"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Ongeldige invoer"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Uitvoer zou niet in toegewezen bufferruimte passen"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Tekenreeks is te lang"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Ongeoorloofde niet-toegewezen tekencodes in invoer"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Ongeoorloofde tekencodes in invoer"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Tegenstrijdige eigenschappen voor tweerichtingentekst in invoer"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Ongeldige tekenreeks voor tweerichtingentekst"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Ongeoorloofde tekencodes (bij tweerichtingentekst) in invoer"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Fout in profieldefinitie voor 'stringprep'"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Vlag botst met profiel"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Onbekend profiel"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Normalisatie van Unicode is mislukt (*interne fout*)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Ongeoorloofde tekencodes voor gegeven topdomein"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Ontbrekende invoer"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Geen topdomein gevonden in de invoer"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Typ '%s --help' voor meer informatie.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Gebruik:  %s [OPTIE]... [TEKENREEKS]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"  \n"
+"De gegeven TEKENREEKS (of standaardinvoer) omzetten volgens de regels\n"
+"die gelden voor geïnternationaliseerde domeinnamen.\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Alle tekenreeksen worden verwacht in de voorkeurstekenset van uw taalregio;\n"
+"gebruik '--debug' om te zien welke tekenset dit is.  U kunt een andere\n"
+"tekenset afdwingen door de omgevingsvariabele CHARSET in te stellen.\n"
+"\n"
+"Om een tekenreeks die begint met '-' om te zetten, gebruikt u '--' om het\n"
+"einde van de opties aan te geven.  Bijvoorbeeld: 'idn --quiet -a -- -foo'.\n"
+"\n"
+"(Een verplicht argument bij een lange optie geldt ook voor de korte vorm.)\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               deze hulptekst tonen en stoppen\n"
+"  -V, --version            programmaversie tonen en stoppen\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         tekenreeks volgens 'Nameprep'-profiel "
+"voorbewerken\n"
+"  -d, --punycode-decode    uit 'Punycode' decoderen\n"
+"  -e, --punycode-encode    naar 'Punycode' coderen\n"
+"  -a, --idna-to-ascii      naar ACE omzetten volgens IDNA (standaardmodus)\n"
+"  -u, --idna-to-unicode    uit ACE omzetten volgens IDNA\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   de IDNA-vlag 'AllowUnassigned' omschakelen\n"
+"      --usestd3asciirules  de IDNA-vlag 'UseSTD3ASCIIRules' omschakelen\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                tekst aan topleveldomein-specifieke regels "
+"toetsen;\n"
+"                             alleen bij --idna-to-ascii en --idna-to-"
+"unicode\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+"  -n, --nfkc               tekenreeks normaliseren volgens Unicode-NFKC "
+"ver3.2\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=NAAM       dit tekenreeks-voorbewerkingsprofiel gebruiken;\n"
+"                             geldige profielnamen zijn: 'Nameprep', "
+"'iSCSI',\n"
+"                             'Nodeprep', 'Resourceprep', 'trace', "
+"'SASLprep'\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              debuginformatie weergeven\n"
+"      --quiet              geen meldingen produceren\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr ""
+"Slechts één van de opties '-s', '-e', '-d', '-a', '-u' of '-n' is mogelijk."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Tekenset '%s'.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Typ elke invoertekenreeks op een afzonderlijke regel, afgesloten met Enter.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Invoerfout"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Conversie van %s naar UTF-8 is mislukt."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Conversie van UTF-8 naar UCS-4 is mislukt."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "## stringprep_profile(): %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Conversie van UTF-8 naar %s is mislukt."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "## punycode_encode(): %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr ""
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "## punycode_decode(): %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Conversie van UCS-4 naar UTF-8 is mislukt."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "## idna_to_ascii_4z(): %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "## idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "## tld_check_4z (positie %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "## tld_check_4z(): %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "## idna_to_unicode_8z4z(): %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Kan NFKC-normalisering niet uitvoeren."
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Rapporteer gebreken in het programma aan <%s>;\n"
+#~ "meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
diff --git a/po/pl.gmo b/po/pl.gmo
new file mode 100644 (file)
index 0000000..82318f2
Binary files /dev/null and b/po/pl.gmo differ
diff --git a/po/pl.po b/po/pl.po
new file mode 100644 (file)
index 0000000..584865a
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,353 @@
+# Polish translation for libidn.
+# Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2004-2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.9\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-07-02 22:10+0200\n"
+"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Sukces"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Przygotowanie ³añcucha nie powiod³o siê"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode zawiod³o"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Znak nie bêd±cy cyfr±, liter± ani kresk± na wej¶ciu"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Zabroniony wiod±cy lub koñcz±cy znak minus (`-')"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Wyj¶cie mo¿e byæ zbyt du¿e lub zbyt ma³e"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Wej¶cie nie zaczyna siê przedrostkiem ACE (`xn--')"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "£añcuch nie idempotentny wzglêdem ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Wej¶cie ju¿ zawiera przedrostek ACE (`xn--')"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "Systemowa funkcja iconv nie powiod³a siê"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Nie mo¿na przydzieliæ pamiêci"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "Systemowa funkcja dlopen nie powiod³a siê"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Nieznany b³±d"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "£añcuch nie idempotentny wzglêdem normalizacji Unikodu NFKC"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "B³êdne wej¶cie"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Wyj¶cie przekroczy³oby dostarczone miejsce w buforze"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Przekroczony limit rozmiaru ³añcucha"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Zabronione nieprzypisane znaki na wej¶ciu"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Zabronione znaki na wej¶ciu"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Konfliktowe w³asno¶ci dwukierunkowego pisma na wej¶ciu"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "¬le sformu³owany ³añcuch dwukierunkowy"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Zabronione znaki dwukierunkowe na wej¶ciu"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "B³±d w definicji profilu stringprep"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Konflikt flag z profilem"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Nieznany profil"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Normalizacja Unikodu nie powiod³a siê (b³±d wewnêtrzny)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Znaki zabronione przez domenê najwy¿szego poziomu"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Brak wej¶cia"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Nie znaleziono domeny najwy¿szego poziomu na wej¶ciu"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Polecenie `%s --help' pozwoli uzyskaæ wiêcej informacji.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Sk³adnia: %s [OPCJA]... [£AÑCUCHY]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"Program konwertuje £AÑCUCHY lub standardowe wyj¶cie z kodowania w³a¶ciwego\n"
+"dla umiêdzynarodowionych nazw domen (IDN - Internationalized Domain Name).\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Jest to interfejs linii poleceñ do biblioteki umiêdzynarodowionych nazw "
+"domen.\n"
+"\n"
+"Wszystkie ³añcuchy powinny byæ zakodowane w zestawie znaków w³a¶ciwym dla\n"
+"u¿ywanej lokalizacji. Opcja `--debug' pozwoli okre¶liæ, jaki to jest zestaw\n"
+"znaków. Mo¿na wymusiæ u¿ywany zestaw znaków zmienn± ¶rodowiskow± CHARSET.\n"
+"\n"
+"Aby przetworzyæ ³añcuchy zaczynaj±ce siê od `-', np. `-foo', nale¿y u¿yæ\n"
+"`--', aby zasygnalizowaæ koniec parametrów, np. `idn --quiet -a -- -foo'.\n"
+"\n"
+"Argumenty obowi±zkowe dla d³ugich opcji s± równie¿ obowi±zkowe dla "
+"odpowiednich\n"
+"krótkich opcji.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               Wypisanie opisu i zakoñczenie\n"
+"  -V, --version            Wypisanie wersji i zakoñczenie\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Przygotowanie ³añcucha zgodnie z profilem "
+"nameprep\n"
+"  -d, --punycode-decode    Dekodowanie Punycode\n"
+"  -e, --punycode-encode    Kodowanie Punycode\n"
+"  -a, --idna-to-ascii      Konwersja do ACE zgodnie z IDNA (tryb domy¶lny)\n"
+"  -u, --idna-to-unicode    Konwersja z ACE zgodnie z IDNA\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   W³±czenie flagi IDNA AllowUnassigned\n"
+"      --usestd3asciirules  W³±czenie flagi IDNA UseSTD3ASCIIRules\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                Sprawdzenie ³añcucha pod k±tem regu³ "
+"specyficznych\n"
+"                             dla TLD;\n"
+"                             tylko dla --idna-to-ascii and --idna-to-"
+"unicode\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+"  -n, --nfkc               Normalizacja ³añcucha zgodnie z Unicode v3.2 "
+"NFKC\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=£AÑCUCH    U¿ycie okre¶lonego profilu stringprep\n"
+"                             Poprawne profile stringprep: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep',\n"
+"                             `trace', `SASLprep'\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              Wypisywanie informacji diagnostycznych\n"
+"      --quiet              Dzia³enie po cichu\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "Mo¿na podaæ tylko jedno z -s, -e, -d, -a, -u lub -n."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Zestaw znaków `%s'.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Nale¿y podaæ ka¿dy ³añcuch w osobnej linii, zakoñczony znakiem nowej linii.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "B³±d wej¶cia"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Nie mo¿na przekonwertowaæ z %s na UTF-8."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Nie mo¿na przekonwertowaæ z UTF-8 na UCS-4."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Nie mo¿na przekonwertowaæ z UTF-8 na %s."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr ""
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Nie mo¿na przekonwertowaæ z UCS-4 na UTF-8."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (pozycja %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Normalizacja NFKC nie powiod³a siê."
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Prosimy zg³aszaæ b³êdy na adres <%s>.\n"
+#~ "B³êdy w t³umaczeniu prosimy zg³aszaæ na adres <translation-team-pl@lists."
+#~ "sourceforge.net>.\n"
diff --git a/po/quot.sed b/po/quot.sed
new file mode 100644 (file)
index 0000000..0122c46
--- /dev/null
@@ -0,0 +1,6 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
new file mode 100644 (file)
index 0000000..2436c49
--- /dev/null
@@ -0,0 +1,19 @@
+# Sed script that remove the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/ro.gmo b/po/ro.gmo
new file mode 100644 (file)
index 0000000..c4d7172
Binary files /dev/null and b/po/ro.gmo differ
diff --git a/po/ro.po b/po/ro.po
new file mode 100644 (file)
index 0000000..23c7779
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,344 @@
+# Mesajele în limba românã pentru libidn.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Acest fiºier este distribuit sub aceeaºi licenþã ca ºi pachetul libidn.
+# Laurentiu Buzdugan <lbuz@rolix.org>, 2003.
+#
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 0.4.1\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2004-04-23 12:00-0500\n"
+"Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr ""
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr ""
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr ""
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr ""
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr ""
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr ""
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr ""
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr ""
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr ""
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr ""
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr ""
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr ""
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr ""
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr ""
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr ""
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr ""
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr ""
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr ""
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr ""
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr ""
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr ""
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr ""
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr ""
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr ""
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr ""
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr ""
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr ""
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+
+#: src/idn.c:100
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+
+#: src/idn.c:104
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr ""
+"%s: Numai una din opþiunile -s, -e, -d, -a sau -u poate fi specificatã.\n"
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Charset `%s'.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Scrieþi fiecare ºir de intrare pe o singurã linie, terminatã cu un caracter "
+"linie-nouã.\n"
+
+#: src/idn.c:199
+#, c-format
+msgid "input error"
+msgstr ""
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "%s: nu am putut transforma din %s în UTF-8.\n"
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "%s: nu am putut transforma din UTF-8 în UCS-4.\n"
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr ""
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "%s: nu am putut transforma din UTF-8 în %s.\n"
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr ""
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr ""
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr ""
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "%s: nu am putut transforma din UCS-4 în UTF-8.\n"
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr ""
+
+#: src/idn.c:392
+#, fuzzy, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "%s: idna_to_unicode_8z4z() a eºuat cu eroarea %d.\n"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr ""
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr ""
+
+#: src/idn.c:458
+#, fuzzy, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "%s: idna_to_unicode_8z4z() a eºuat cu eroarea %d.\n"
+
+#: src/idn.c:537
+#, c-format
+msgid "could not do NFKC normalization"
+msgstr ""
+
+#~ msgid "%s: fgets() failed: "
+#~ msgstr "%s: fgets() a eºuat: "
+
+#~ msgid "input[%d] = U+%04x\n"
+#~ msgstr "intrare[%d] = U+%04x\n"
+
+#~ msgid "%s: stringprep_profile() failed with error %d.\n"
+#~ msgstr "%s: stringprep_profile() a eºuat cu eroarea %d.\n"
+
+#~ msgid "output[%d] = U+%04x\n"
+#~ msgstr "ieºire[%d] = U+%04x\n"
+
+#~ msgid "%s: punycode_encode() failed with error %d.\n"
+#~ msgstr "%s: punycode_encode() a eºuat cu eroarea %d.\n"
+
+#~ msgid "%s: malloc() failed: "
+#~ msgstr "%s: malloc() a eºuat: "
+
+#~ msgid "%s: punycode_decode() failed with error %d.\n"
+#~ msgstr "%s: punycode_decode() a eºuat cu eroarea %d.\n"
+
+#~ msgid "%s: idna_to_ascii_4z() failed with error %d.\n"
+#~ msgstr "%s: idna_to_ascii_4z() a eºuat cu eroarea %d.\n"
+
+#~ msgid "%s: TLD idna_to_unicode_8z8z() failed with error %d.\n"
+#~ msgstr "%s: TLD idna_to_unicode_8z8z() a eºuat cu eroarea %d.\n"
+
+#~ msgid "tld[%d] = U+%04x\n"
+#~ msgstr "tld[%d] = U+%04x\n"
+
+#~ msgid "%s: string rejected by TLD test (Unicode position %d)\n"
+#~ msgstr "%s: ºir refuzat de testul TLD (poziþia Unicode %d)\n"
+
+#~ msgid "%s: tld_check_4z failed with error %d.\n"
+#~ msgstr "%s: tld_check_4z a eºuat cu eroarea %d.\n"
diff --git a/po/sr.gmo b/po/sr.gmo
new file mode 100644 (file)
index 0000000..db77f84
Binary files /dev/null and b/po/sr.gmo differ
diff --git a/po/sr.po b/po/sr.po
new file mode 100644 (file)
index 0000000..dd3c52e
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,311 @@
+# Serbian translation of `libidn'.
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the `libidn' package.
+# Aleksandar Jelenak <jelenak@verizon.net>, 2004, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 0.5.16\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2005-09-04 15:02-0400\n"
+"Last-Translator: Aleksandar Jelenak <jelenak@verizon.net>\n"
+"Language-Team: Serbian <gnu@prevod.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Успех"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Неуспешна припрема ниске"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode није успео"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Нецифра/слово/цртица у улазу"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Забрањен водећи или пратећи знак минус („-“)"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Излаз би био превелик или премали"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Улаз не почиње са ACE префиксом („xn--“)"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "Ниска није идемпотентна под ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Улаз већ садржи ACE префикс („xn--“)"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "Системски iconv није успео"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Не може обезбедити меморију"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "Неуспешан системски dlopen"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Непозната грешка"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "Ниска није идемпотентна под Unicode NFKC нормализацијом"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Неважећи улаз"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Излаз би премашио предвиђену величину бафера"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Ограничење величине ниске премашено"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Забрањене недодељене кодне тачке у улазу"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Ускраћене кодне тачке у улазу"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Супротстављена двосмерна својства у улазу"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Наказна двосмерна ниска"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Ускраћене двосмерне кодне тачке у улазу"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Грешка у дефиницији stringprep профила"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Сукоб заставица са профилом"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Непознат профил"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Уникод нормализације није успела (унутрашња грешка)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Кодне тачке забрањене највишим доменом"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Недостаје улаз"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Највиши домен није нађен у улазу"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr ""
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+
+#: src/idn.c:100
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+
+#: src/idn.c:104
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "Може бити задато само једно од: -s, -e, -d, -a или -u."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Скуп знакова „%s“.\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Куцајте улазну ниску на засебној линији, завршавајући знаком за нови ред.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Улазна грешка"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Није могао да претвори из %s у UTF-8."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Није могао да претвори из UTF-8 у UCS-4."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Није могао да претвори из UTF-8 у %s."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Није могао да претвори из UCS-4 у UTF-8."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, fuzzy, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (положај %d): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Ниска није идемпотентна под Unicode NFKC нормализацијом"
+
+#~ msgid "input[%d] = U+%04x\n"
+#~ msgstr "улаз[%d] = U+%04x\n"
+
+#~ msgid "output[%d] = U+%04x\n"
+#~ msgstr "излаз[%d] = U+%04x\n"
+
+#~ msgid "tld[%d] = U+%04x\n"
+#~ msgstr "tld[%d] = U+%04x\n"
diff --git a/po/stamp-po b/po/stamp-po
new file mode 100644 (file)
index 0000000..9788f70
--- /dev/null
@@ -0,0 +1 @@
+timestamp
diff --git a/po/vi.gmo b/po/vi.gmo
new file mode 100644 (file)
index 0000000..7681c64
Binary files /dev/null and b/po/vi.gmo differ
diff --git a/po/vi.po b/po/vi.po
new file mode 100644 (file)
index 0000000..1b5de04
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,349 @@
+# Vietnamese Translation for LibIDN
+# Copyright © 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+# Clytie Siddall <clytie@riverland.net.au>, 2005-2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.9\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-07-03 22:18+0930\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com> \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.7b3\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "Thành công"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "Lỗi chuẩn bị chuỗi"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Lỗi punycode (mã yếu đuối)"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "Dữ liệu nhập chứa ký tự khác chữ số/chữ/dấu gạch nối"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "Không cho phép dấu gạch nối (`-') đi trước hay theo sau"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "Dữ liệu xuất sẽ quá lớn hay quá nhỏ"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "Dữ liệu nhập không bắt đầu bằng tiền tố ACE (`xn--')"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "Chuỗi không tránh nhân lên dưới ToASCII"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "Dữ liệu nhập đã chứa tiền tố ACE (`xn--')"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "Lỗi iconv hệ thống"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "Không thể cấp phát bộ nhớ"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "Lỗi dlopen hệ thống"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "Lỗi không rõ"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "Chuỗi không phải tránh nhân lên dưới sự tiêu chuẩn hoá NFKC Unicode"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "Dữ liệu nhập không hợp lệ"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "Dữ liệu xuất sẽ vượt quá sức chứa đệm đã cung cấp"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "Giới hạn kích cỡ chuỗi bị vượt quá"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "Dữ liệu nhập chứa mã điểm không được gán cấm"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "Dữ liệu nhập chứa điểm mã cấm"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "Dữ liệu nhập chứa tài sản hai hướng xung đột"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "Chuỗi hai hướng dạng sai"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "Dữ liệu nhập chứa điểm mã hai hướng cấm"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Lỗi trong lời định nghĩa hồ sơ stringprep (chuẩn bị chuỗi)"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "Cờ xung dột với hồ sơ"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "Hồ sơ lạ"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Lỗi tiêu chuẩn hoá Unicode (lỗi nội bộ)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "Điểm mã bị cấm bởi miền cấp đầu"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "Thiếu dữ liệu nhập"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "Không tìm thấy miền cấp đầu trong dữ liệu nhập"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Thử lệnh « %s --help » để xem thêm thông tin.\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "Sử dụng: %s [TÙY_CHỌN]... [CHUỖI]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"Chuyển đổi các chuỗi sang IDN (tên miền đã quốc tế hoá), hoặc đầu vào tiêu "
+"chuẩn.\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Giao diện dòng lệnh với thư viện tên miền đã quốc tế hoá.\n"
+"\n"
+"Mọi chuỗi nên được mã hoá theo bộ ký tự đã thích trong miền địa phương\n"
+"của bạn. Hãy dùng tùy chọn « --debug » (gỡ lỗi) để tìm biết bộ ký tự nào.\n"
+"Bạn cũng có thể ghi đè lên bộ ký tự này bằng cách đặt biến môi trường\n"
+"CHARSET.\n"
+"\n"
+"Để xử lý một chuỗi bắt đầu với « - », v.d. « -foo », dùng « -- » để ngụ ý kết "
+"thúc các tham số, như trong « idn --quiet -a -- -foo ».\n"
+"\n"
+"Mọi đối số bắt buộc phải sử dụng với tùy chọn dài cũng bắt buộc với tùy chọn "
+"ngắn.\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               In ra trợ giúp, rồi thoát\n"
+"  -V, --version            In ra số thứ tự phiên bản, rồi thoát\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         Chuẩn bị chuỗi tùy theo hồ sơ nameprep\n"
+"  -d, --punycode-decode    Giải mã Punycode\n"
+"  -e, --punycode-encode    Mã hoá Punycode\n"
+"  -a, --idna-to-ascii      Chuyển đổi sang ACE tùy theo IDNA (chế độ mặc "
+"định)\n"
+"  -u, --idna-to-unicode    Chuyển đổi từ ACE tùy theo IDNA\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   Bật/tắt cờ IDNA AllowUnassigned\n"
+"      --usestd3asciirules  Bật/tắt cờ IDNA UseSTD3ASCIIRules\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                Kiểm tra chuỗi có quy tắc đặc trưng cho TLD "
+"không\n"
+"                             Chỉ cho « --idna-to-ascii » và « --idna-to-"
+"unicode »\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr ""
+"  -n, --nfkc               Tiêu chuẩn hoá chuỗi tùy theo Unicode v3.2 NFKC\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=CHUỖI     Dùng hồ sơ stringprep đã ghi rõ thay vào đó\n"
+"                             Các hồ sơ stringprep hợp lệ: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              In ra thông tin gỡ lỗi\n"
+"      --quiet              Không xuất thông điệp\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "Chỉ có thể ghi rõ một của những đối số -s, -e, -d, -a, -u hay -n."
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "Bộ ký tự « %s ».\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr ""
+"Gõ mỗi chuỗi nhập trên một đường riêng, kết thúc bằng ký tự dòng mới.\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "Lỗi gõ"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "Không thể chuyển đổi từ %s sang UTF-8."
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "Không thể chuyển đổi từ UTF-8 sang UCS-4."
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile: %s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "Không thể chuyển đổi từ UTF-8 sang %s."
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode: %s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr ""
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "Không thể chuyển đổi từ UCS-4 sang UTF-8."
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z: %s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD): %s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (vị trí %lu): %s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z: %s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z: %s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "Không thể tiêu chuẩn hoá kiểu NFKC"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Thông báo lỗi cho <%s>.\n"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
new file mode 100644 (file)
index 0000000..4f6ab38
Binary files /dev/null and b/po/zh_CN.gmo differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644 (file)
index 0000000..e7b0b0d
--- /dev/null
@@ -0,0 +1,352 @@
+# Simplified Chinese translation for libidn
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the libidn package.
+# Meng Jie <zuxyhere@eastday.com>, 2005.
+# Ji ZhengYu <zhengyuji@gmail.com>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libidn 1.9\n"
+"Report-Msgid-Bugs-To: bug-libidn@gnu.org\n"
+"POT-Creation-Date: 2009-06-08 12:39+0200\n"
+"PO-Revision-Date: 2008-07-06 09:28中国标准时间\n"
+"Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
+"Language-Team: Chinese (simplified) <translation-team-zh-cn@lists."
+"sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/strerror-idna.c:74 lib/strerror-pr29.c:58 lib/strerror-punycode.c:58
+#: lib/strerror-stringprep.c:78 lib/strerror-tld.c:60
+msgid "Success"
+msgstr "成功"
+
+#: lib/strerror-idna.c:78 lib/strerror-pr29.c:66
+msgid "String preparation failed"
+msgstr "预备字符串失败"
+
+#: lib/strerror-idna.c:82
+msgid "Punycode failed"
+msgstr "Punycode 失败"
+
+#: lib/strerror-idna.c:86
+msgid "Non-digit/letter/hyphen in input"
+msgstr "输入中出现非数字/字母/连字符"
+
+#: lib/strerror-idna.c:90
+msgid "Forbidden leading or trailing minus sign (`-')"
+msgstr "不能使用‘-’作为起始或终止符"
+
+#: lib/strerror-idna.c:94
+msgid "Output would be too large or too small"
+msgstr "输出太大或太小"
+
+#: lib/strerror-idna.c:98
+msgid "Input does not start with ACE prefix (`xn--')"
+msgstr "输入未以 ACE 前缀(‘xn--’)开头"
+
+#: lib/strerror-idna.c:102
+msgid "String not idempotent under ToASCII"
+msgstr "ToASCII 中字符串不是幂等的"
+
+#: lib/strerror-idna.c:106
+msgid "Input already contain ACE prefix (`xn--')"
+msgstr "输入已经包含 ACE前缀(‘xn--’)"
+
+#: lib/strerror-idna.c:110 lib/strerror-tld.c:76
+msgid "System iconv failed"
+msgstr "系统 iconv 失败"
+
+#: lib/strerror-idna.c:114 lib/strerror-stringprep.c:122 lib/strerror-tld.c:72
+msgid "Cannot allocate memory"
+msgstr "无法分配内存"
+
+#: lib/strerror-idna.c:118
+msgid "System dlopen failed"
+msgstr "系统 dlopen 失败"
+
+#: lib/strerror-idna.c:122 lib/strerror-pr29.c:70 lib/strerror-punycode.c:74
+#: lib/strerror-stringprep.c:126 lib/strerror-tld.c:84
+msgid "Unknown error"
+msgstr "未知错误"
+
+#: lib/strerror-pr29.c:62
+msgid "String not idempotent under Unicode NFKC normalization"
+msgstr "Unicode NFKC 正规化过程中字符串不是幂等的"
+
+#: lib/strerror-punycode.c:62
+msgid "Invalid input"
+msgstr "无效输入"
+
+#: lib/strerror-punycode.c:66 lib/strerror-stringprep.c:102
+msgid "Output would exceed the buffer space provided"
+msgstr "输入将溢出所提供的缓冲区"
+
+#: lib/strerror-punycode.c:70
+msgid "String size limit exceeded"
+msgstr "字符串大小越界"
+
+#: lib/strerror-stringprep.c:82
+msgid "Forbidden unassigned code points in input"
+msgstr "输入中不能出现未赋值的代码点"
+
+#: lib/strerror-stringprep.c:86
+msgid "Prohibited code points in input"
+msgstr "输入中不能出现代码点"
+
+#: lib/strerror-stringprep.c:90
+msgid "Conflicting bidirectional properties in input"
+msgstr "输入中出现相互冲突的双向属性"
+
+#: lib/strerror-stringprep.c:94
+msgid "Malformed bidirectional string"
+msgstr "双向字符串格式错误"
+
+#: lib/strerror-stringprep.c:98
+msgid "Prohibited bidirectional code points in input"
+msgstr "输入中不能出现双向的代码点"
+
+#: lib/strerror-stringprep.c:106
+msgid "Error in stringprep profile definition"
+msgstr "Stringpref 配置文件定义出错"
+
+#: lib/strerror-stringprep.c:110
+msgid "Flag conflict with profile"
+msgstr "标识与配置文件冲突"
+
+#: lib/strerror-stringprep.c:114
+msgid "Unknown profile"
+msgstr "未知的配置文件"
+
+#: lib/strerror-stringprep.c:118
+msgid "Unicode normalization failed (internal error)"
+msgstr "Unicode 正规化失败(内部错误)"
+
+#: lib/strerror-tld.c:64
+msgid "Code points prohibited by top-level domain"
+msgstr "顶级域不接受代码点"
+
+#: lib/strerror-tld.c:68
+msgid "Missing input"
+msgstr "输入缺失"
+
+#: lib/strerror-tld.c:80
+msgid "No top-level domain found in input"
+msgstr "输入中未发现顶级域"
+
+#: src/idn.c:66
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "尝试用‘%s --help’获取更多信息。\n"
+
+#: src/idn.c:70
+#, c-format
+msgid "Usage: %s [OPTION]... [STRINGS]...\n"
+msgstr "用法: %s [选项]... [字符串]...\n"
+
+#: src/idn.c:73
+msgid ""
+"Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n"
+"\n"
+msgstr ""
+"字符串或是标准输入的国际化域名(IDN)转化。\n"
+"\n"
+
+#: src/idn.c:77
+msgid ""
+"Command line interface to the internationalized domain name library.\n"
+"\n"
+"All strings are expected to be encoded in the preferred charset used\n"
+"by your locale.  Use `--debug' to find out what this charset is.  You\n"
+"can override the charset used by setting environment variable CHARSET.\n"
+"\n"
+"To process a string that starts with `-', for example `-foo', use `--'\n"
+"to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n"
+"\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"国际化域名库的命令行界面。.\n"
+"\n"
+"所有的字符串都将以您所在区域的最合适的字符集进行编码。\n"
+"使用‘--debug’可以找出这个字符集。\n"
+"您可通过设置环境变量 CHARSET 来重设这一字符集。\n"
+"\n"
+"要想处理以‘-’开始的字符串,如‘-foo’,请使用‘--’来标识\n"
+"参数结束,例如‘idn --quiet -a -- -foo’。\n"
+"\n"
+"长选项所必需的参数对于短选项来说也是必需的。\n"
+
+#: src/idn.c:89
+msgid ""
+"  -h, --help               Print help and exit\n"
+"  -V, --version            Print version and exit\n"
+msgstr ""
+"  -h, --help               打印此帮助并退出\n"
+"  -V, --version            打印程序版本并退出\n"
+
+#: src/idn.c:93
+msgid ""
+"  -s, --stringprep         Prepare string according to nameprep profile\n"
+"  -d, --punycode-decode    Decode Punycode\n"
+"  -e, --punycode-encode    Encode Punycode\n"
+"  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n"
+"  -u, --idna-to-unicode    Convert from ACE according to IDNA\n"
+msgstr ""
+"  -s, --stringprep         按 nameprep 配置文件 准备字符串\n"
+"  -d, --punycode-decode    解码 Punycode\n"
+"  -e, --punycode-encode    编码 Punycode\n"
+"  -a, --idna-to-ascii      按 IDNA 转换为 ACE (默认方式)\n"
+"  -u, --idna-to-unicode    按 IDNA 从 ACE 转换\n"
+
+#: src/idn.c:100
+#, fuzzy
+msgid ""
+"      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n"
+"      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n"
+msgstr ""
+"      --allow-unassigned   切换 IDNA AllowUnassigned 标识\n"
+"      --usestd3asciirules  切换 IDNA UseSTD3ASCIIRules 标识\n"
+
+#: src/idn.c:104
+#, fuzzy
+msgid ""
+"      --no-tld             Don't check string for TLD specific rules\n"
+"                             Only for --idna-to-ascii and --idna-to-unicode\n"
+msgstr ""
+"  -t, --tld                按 TLD 指定的规则检查字符串\n"
+"                             仅对 --idna-to-ascii 和 --idna-to-unicode 有效\n"
+
+#: src/idn.c:108
+msgid ""
+"  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n"
+msgstr "  -n, --nfkc               按 Unicode v3.2 NFKC 正规化字符串\n"
+
+#: src/idn.c:111
+msgid ""
+"  -p, --profile=STRING     Use specified stringprep profile instead\n"
+"                             Valid stringprep profiles: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+msgstr ""
+"  -p, --profile=STRING     使用指定的 stringprep 配置文件 代替\n"
+"                             有效的 stringprep 配置文件: `Nameprep',\n"
+"                             `iSCSI', `Nodeprep', `Resourceprep', \n"
+"                             `trace', `SASLprep'\n"
+
+#: src/idn.c:117
+msgid ""
+"      --debug              Print debugging information\n"
+"      --quiet              Silent operation\n"
+msgstr ""
+"      --debug              打印调试信息\n"
+"      --quiet              处理时不显示信息\n"
+
+#: src/idn.c:173
+#, fuzzy, c-format
+msgid "only one of -s, -e, -d, -a, -u or -n can be specified"
+msgstr "只能指定 -s,-e,-d,-a,-u 或 -n 中的一个。"
+
+#: src/idn.c:181
+#, c-format
+msgid "Charset `%s'.\n"
+msgstr "字符集‘%s’。\n"
+
+#: src/idn.c:184
+#, c-format
+msgid ""
+"Type each input string on a line by itself, terminated by a newline "
+"character.\n"
+msgstr "输入时,每个字符串单占一行。\n"
+
+#: src/idn.c:199
+#, fuzzy, c-format
+msgid "input error"
+msgstr "输入错误"
+
+#: src/idn.c:209 src/idn.c:271 src/idn.c:354 src/idn.c:431 src/idn.c:512
+#, fuzzy, c-format
+msgid "could not convert from %s to UTF-8"
+msgstr "无法将 %s 转为 UTF-8"
+
+#: src/idn.c:217 src/idn.c:242 src/idn.c:278 src/idn.c:495 src/idn.c:524
+#: src/idn.c:548
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to UCS-4"
+msgstr "无法将 UTF-8 转为 UCS-4。"
+
+#: src/idn.c:234
+#, c-format
+msgid "stringprep_profile: %s"
+msgstr "stringprep_profile:%s"
+
+#: src/idn.c:257 src/idn.c:299 src/idn.c:342 src/idn.c:500 src/idn.c:561
+#, fuzzy, c-format
+msgid "could not convert from UTF-8 to %s"
+msgstr "无法将 UTF-8 转为 %s。"
+
+#: src/idn.c:292
+#, c-format
+msgid "punycode_encode: %s"
+msgstr "punycode_encode:%s"
+
+#: src/idn.c:314
+msgid "malloc"
+msgstr "malloc"
+
+#: src/idn.c:320
+#, c-format
+msgid "punycode_decode: %s"
+msgstr "punycode_decode: %s"
+
+#: src/idn.c:337 src/idn.c:361 src/idn.c:439
+#, fuzzy, c-format
+msgid "could not convert from UCS-4 to UTF-8"
+msgstr "无法将 UCS-4 转为 UTF-8。"
+
+#: src/idn.c:378
+#, c-format
+msgid "idna_to_ascii_4z: %s"
+msgstr "idna_to_ascii_4z:%s"
+
+#: src/idn.c:392
+#, c-format
+msgid "idna_to_unicode_8z4z (TLD): %s"
+msgstr "idna_to_unicode_8z4z (TLD):%s"
+
+#: src/idn.c:406 src/idn.c:479
+#, c-format
+msgid "tld_check_4z (position %lu): %s"
+msgstr "tld_check_4z (位置 %lu):%s"
+
+#: src/idn.c:409 src/idn.c:485
+#, c-format
+msgid "tld_check_4z: %s"
+msgstr "tld_check_4z:%s"
+
+#: src/idn.c:458
+#, c-format
+msgid "idna_to_unicode_8z4z: %s"
+msgstr "idna_to_unicode_8z4z:%s"
+
+#: src/idn.c:537
+#, fuzzy, c-format
+msgid "could not do NFKC normalization"
+msgstr "不能进行 NFKC 正规化过程。"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <%s>.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "发送错误报告至 <%s>。发送翻译错误至 Chinese (simplified) <translation-"
+#~ "team-zh-cn@lists.sourceforge.net>\n"
+
+#~ msgid "input[%lu] = U+%04x\n"
+#~ msgstr "输入[%lu] = U+%04x\n"
+
+#~ msgid "output[%lu] = U+%04x\n"
+#~ msgstr "输出[%lu] = U+%04x\n"
+
+#~ msgid "tld[%lu] = U+%04x\n"
+#~ msgstr "tld[%lu] = U+%04x\n"
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644 (file)
index 0000000..9a05565
--- /dev/null
@@ -0,0 +1,47 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib -I$(top_srcdir)/gl -I../gl
+
+dist_lisp_DATA = punycode.el idna.el
+
+bin_PROGRAMS = idn
+idn_SOURCES = idn.c
+idn_LDADD = libidn_cmd.la ../lib/libidn.la ../gl/libgnu.la $(LTLIBINTL)
+
+localedir = $(datadir)/locale
+DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
+
+idn.c: $(BUILT_SOURCES)
+
+noinst_LTLIBRARIES = libidn_cmd.la
+libidn_cmd_la_SOURCES =  idn.ggo idn_cmd.c idn_cmd.h
+libidn_cmd_la_CFLAGS =
+
+idn_cmd.c idn_cmd.h: idn.ggo Makefile.am
+       gengetopt --unamed-opts --no-handle-version --no-handle-help \
+               --set-package="idn" \
+               --input $^ --file-name idn_cmd || \
+               test -f idn_cmd.h -a -f idn_cmd.c || \
+               cp $(srcdir)/idn_cmd.h $(srcdir)/idn_cmd.h .
+       perl -pi -e 's/\[OPTIONS\]/\[OPTION\]/g' idn_cmd.c
+       perl -pi -e 's/\[FILES\]/\[STRING\]/g' idn_cmd.c
+
+BUILT_SOURCES = idn_cmd.c idn_cmd.h
+MAINTAINERCLEANFILES = $(BUILT_SOURCES)
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644 (file)
index 0000000..92d7ec6
--- /dev/null
@@ -0,0 +1,920 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = idn$(EXEEXT)
+subdir = src
+DIST_COMMON = $(dist_lisp_DATA) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libidn_cmd_la_LIBADD =
+am_libidn_cmd_la_OBJECTS = libidn_cmd_la-idn_cmd.lo
+libidn_cmd_la_OBJECTS = $(am_libidn_cmd_la_OBJECTS)
+libidn_cmd_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libidn_cmd_la_CFLAGS) \
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(lispdir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_idn_OBJECTS = idn.$(OBJEXT)
+idn_OBJECTS = $(am_idn_OBJECTS)
+am__DEPENDENCIES_1 =
+idn_DEPENDENCIES = libidn_cmd.la ../lib/libidn.la ../gl/libgnu.la \
+       $(am__DEPENDENCIES_1)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = $(libidn_cmd_la_SOURCES) $(idn_SOURCES)
+DIST_SOURCES = $(libidn_cmd_la_SOURCES) $(idn_SOURCES)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+DATA = $(dist_lisp_DATA)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = $(datadir)/locale
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib -I$(top_srcdir)/gl -I../gl
+dist_lisp_DATA = punycode.el idna.el
+idn_SOURCES = idn.c
+idn_LDADD = libidn_cmd.la ../lib/libidn.la ../gl/libgnu.la $(LTLIBINTL)
+noinst_LTLIBRARIES = libidn_cmd.la
+libidn_cmd_la_SOURCES = idn.ggo idn_cmd.c idn_cmd.h
+libidn_cmd_la_CFLAGS = 
+BUILT_SOURCES = idn_cmd.c idn_cmd.h
+MAINTAINERCLEANFILES = $(BUILT_SOURCES)
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+libidn_cmd.la: $(libidn_cmd_la_OBJECTS) $(libidn_cmd_la_DEPENDENCIES) 
+       $(libidn_cmd_la_LINK)  $(libidn_cmd_la_OBJECTS) $(libidn_cmd_la_LIBADD) $(LIBS)
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p || test -f $$p1; \
+         then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+           echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+           $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+       @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+idn$(EXEEXT): $(idn_OBJECTS) $(idn_DEPENDENCIES) 
+       @rm -f idn$(EXEEXT)
+       $(LINK) $(idn_OBJECTS) $(idn_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libidn_cmd_la-idn_cmd.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+libidn_cmd_la-idn_cmd.lo: idn_cmd.c
+@am__fastdepCC_TRUE@   $(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libidn_cmd_la_CFLAGS) $(CFLAGS) -MT libidn_cmd_la-idn_cmd.lo -MD -MP -MF $(DEPDIR)/libidn_cmd_la-idn_cmd.Tpo -c -o libidn_cmd_la-idn_cmd.lo `test -f 'idn_cmd.c' || echo '$(srcdir)/'`idn_cmd.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/libidn_cmd_la-idn_cmd.Tpo $(DEPDIR)/libidn_cmd_la-idn_cmd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='idn_cmd.c' object='libidn_cmd_la-idn_cmd.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL)  --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libidn_cmd_la_CFLAGS) $(CFLAGS) -c -o libidn_cmd_la-idn_cmd.lo `test -f 'idn_cmd.c' || echo '$(srcdir)/'`idn_cmd.c
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-dist_lispDATA: $(dist_lisp_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(lispdir)" || $(MKDIR_P) "$(DESTDIR)$(lispdir)"
+       @list='$(dist_lisp_DATA)'; test -n "$(lispdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(lispdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(lispdir)" || exit $$?; \
+       done
+
+uninstall-dist_lispDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_lisp_DATA)'; test -n "$(lispdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(lispdir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(lispdir)" && rm -f $$files
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA)
+installdirs:
+       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(lispdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool \
+       clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_lispDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-dist_lispDATA
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+       clean-generic clean-libtool clean-noinstLTLIBRARIES ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-binPROGRAMS \
+       install-data install-data-am install-dist_lispDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+       pdf pdf-am ps ps-am tags uninstall uninstall-am \
+       uninstall-binPROGRAMS uninstall-dist_lispDATA
+
+
+idn.c: $(BUILT_SOURCES)
+
+idn_cmd.c idn_cmd.h: idn.ggo Makefile.am
+       gengetopt --unamed-opts --no-handle-version --no-handle-help \
+               --set-package="idn" \
+               --input $^ --file-name idn_cmd || \
+               test -f idn_cmd.h -a -f idn_cmd.c || \
+               cp $(srcdir)/idn_cmd.h $(srcdir)/idn_cmd.h .
+       perl -pi -e 's/\[OPTIONS\]/\[OPTION\]/g' idn_cmd.c
+       perl -pi -e 's/\[FILES\]/\[STRING\]/g' idn_cmd.c
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/idn.c b/src/idn.c
new file mode 100644 (file)
index 0000000..f9873c6
--- /dev/null
+++ b/src/idn.c
@@ -0,0 +1,573 @@
+/* idn.c --- Command line interface to libidn.
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <locale.h>
+
+/* Gnulib headers. */
+#include "error.h"
+#include "gettext.h"
+#define _(String) dgettext (PACKAGE, String)
+#define N_(String) gettext_noop (String)
+#include "progname.h"
+#include "version-etc.h"
+
+/* Libidn headers. */
+#include <stringprep.h>
+#include <punycode.h>
+#include <idna.h>
+#ifdef WITH_TLD
+# include <tld.h>
+#endif
+
+#include "idn_cmd.h"
+
+#define GREETING \
+  "Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.\n" \
+  "GNU Libidn comes with NO WARRANTY, to the extent permitted by law.\n" \
+  "You may redistribute copies of GNU Libidn under the terms of\n"     \
+  "the GNU Lesser General Public License.  For more information\n"     \
+  "about these matters, see the file named COPYING.LIB.\n"
+
+const char version_etc_copyright[] =
+  /* Do *not* mark this string for translation.  %s is a copyright
+     symbol suitable for this locale, and %d is the copyright
+     year.  */
+  "Copyright %s %d Simon Josefsson.";
+
+static void
+usage (int status)
+{
+  if (status != EXIT_SUCCESS)
+    fprintf (stderr, _("Try `%s --help' for more information.\n"),
+            program_name);
+  else
+    {
+      printf (_("\
+Usage: %s [OPTION]... [STRINGS]...\n\
+"), program_name);
+      fputs (_("\
+Internationalized Domain Name (IDN) convert STRINGS, or standard input.\n\
+\n\
+"), stdout);
+      fputs (_("\
+Command line interface to the internationalized domain name library.\n\
+\n\
+All strings are expected to be encoded in the preferred charset used\n\
+by your locale.  Use `--debug' to find out what this charset is.  You\n\
+can override the charset used by setting environment variable CHARSET.\n\
+\n\
+To process a string that starts with `-', for example `-foo', use `--'\n\
+to signal the end of parameters, as in `idn --quiet -a -- -foo'.\n\
+\n\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+      fputs (_("\
+  -h, --help               Print help and exit\n\
+  -V, --version            Print version and exit\n\
+"), stdout);
+      fputs (_("\
+  -s, --stringprep         Prepare string according to nameprep profile\n\
+  -d, --punycode-decode    Decode Punycode\n\
+  -e, --punycode-encode    Encode Punycode\n\
+  -a, --idna-to-ascii      Convert to ACE according to IDNA (default mode)\n\
+  -u, --idna-to-unicode    Convert from ACE according to IDNA\n\
+"), stdout);
+      fputs (_("\
+      --allow-unassigned   Toggle IDNA AllowUnassigned flag (default off)\n\
+      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag (default off)\n\
+"), stdout);
+      fputs (_("\
+      --no-tld             Don't check string for TLD specific rules\n\
+                             Only for --idna-to-ascii and --idna-to-unicode\n\
+"), stdout);
+      fputs (_("\
+  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC\n\
+"), stdout);
+      fputs (_("\
+  -p, --profile=STRING     Use specified stringprep profile instead\n\
+                             Valid stringprep profiles: `Nameprep',\n\
+                             `iSCSI', `Nodeprep', `Resourceprep', \n\
+                             `trace', `SASLprep'\n\
+"), stdout);
+      fputs (_("\
+      --debug              Print debugging information\n\
+      --quiet              Silent operation\n\
+"), stdout);
+      emit_bug_reporting_address ();
+    }
+  exit (status);
+}
+
+int
+main (int argc, char *argv[])
+{
+  struct gengetopt_args_info args_info;
+  char readbuf[BUFSIZ];
+  char *p, *r;
+  uint32_t *q;
+  unsigned cmdn = 0;
+  int rc;
+
+  setlocale (LC_ALL, "");
+  set_program_name (argv[0]);
+  bindtextdomain (PACKAGE, LOCALEDIR);
+  textdomain (PACKAGE);
+
+  if (cmdline_parser (argc, argv, &args_info) != 0)
+    return EXIT_FAILURE;
+
+  if (args_info.version_given)
+    {
+      version_etc (stdout, "idn", PACKAGE_NAME, VERSION,
+                  "Simon Josefsson", (char *) NULL);
+      return EXIT_SUCCESS;
+    }
+
+  if (args_info.help_given)
+    usage (EXIT_SUCCESS);
+
+  /* Backwards compatibility: -n has always been the documented short
+     form for --nfkc but, before v1.10, -k was the implemented short
+     form.  We now accept both to avoid documentation changes.  */
+  if (args_info.hidden_nfkc_given)
+    args_info.nfkc_given = 1;
+
+  if (!args_info.stringprep_given &&
+      !args_info.punycode_encode_given && !args_info.punycode_decode_given &&
+      !args_info.idna_to_ascii_given && !args_info.idna_to_unicode_given &&
+      !args_info.nfkc_given)
+    args_info.idna_to_ascii_given = 1;
+
+  if ((args_info.stringprep_given ? 1 : 0) +
+      (args_info.punycode_encode_given ? 1 : 0) +
+      (args_info.punycode_decode_given ? 1 : 0) +
+      (args_info.idna_to_ascii_given ? 1 : 0) +
+      (args_info.idna_to_unicode_given ? 1 : 0) +
+      (args_info.nfkc_given ? 1 : 0) != 1)
+    {
+      error (0, 0, _("only one of -s, -e, -d, -a, -u or -n can be specified"));
+      usage (EXIT_FAILURE);
+    }
+
+  if (!args_info.quiet_given)
+    fprintf (stderr, "%s %s\n" GREETING, PACKAGE, VERSION);
+
+  if (args_info.debug_given)
+    fprintf (stderr, _("Charset `%s'.\n"), stringprep_locale_charset ());
+
+  if (!args_info.quiet_given && args_info.inputs_num == 0)
+    fprintf (stderr, _("Type each input string on a line by itself, "
+                      "terminated by a newline character.\n"));
+
+  do
+    {
+      if (cmdn < args_info.inputs_num)
+       {
+         strncpy (readbuf, args_info.inputs[cmdn++], BUFSIZ - 1);
+         readbuf[BUFSIZ - 1] = '\0';
+       }
+      else if (fgets (readbuf, BUFSIZ, stdin) == NULL)
+       {
+         if (feof (stdin))
+           break;
+
+         error (EXIT_FAILURE, errno, _("input error"));
+       }
+
+      if (readbuf[strlen (readbuf) - 1] == '\n')
+       readbuf[strlen (readbuf) - 1] = '\0';
+
+      if (args_info.stringprep_given)
+       {
+         p = stringprep_locale_to_utf8 (readbuf);
+         if (!p)
+           error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"),
+                  stringprep_locale_charset ());
+
+         q = stringprep_utf8_to_ucs4 (p, -1, NULL);
+         if (!q)
+           {
+             free (p);
+             error (EXIT_FAILURE, 0,
+                    _("could not convert from UTF-8 to UCS-4"));
+           }
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+             for (i = 0; q[i]; i++)
+               fprintf (stderr, "input[%lu] = U+%04x\n",
+                        (unsigned long) i, q[i]);
+           }
+         free (q);
+
+         rc = stringprep_profile (p, &r,
+                                  args_info.profile_given ?
+                                  args_info.profile_arg : "Nameprep", 0);
+         free (p);
+         if (rc != STRINGPREP_OK)
+           error (EXIT_FAILURE, 0, _("stringprep_profile: %s"),
+                  stringprep_strerror (rc));
+
+         q = stringprep_utf8_to_ucs4 (r, -1, NULL);
+         if (!q)
+           {
+             free (r);
+             error (EXIT_FAILURE, 0,
+                    _("could not convert from UTF-8 to UCS-4"));
+           }
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+             for (i = 0; q[i]; i++)
+               fprintf (stderr, "output[%lu] = U+%04x\n",
+                        (unsigned long) i, q[i]);
+           }
+         free (q);
+
+         p = stringprep_utf8_to_locale (r);
+         free (r);
+         if (!p)
+           error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"),
+                  stringprep_locale_charset ());
+
+         fprintf (stdout, "%s\n", p);
+
+         free (p);
+       }
+
+      if (args_info.punycode_encode_given)
+       {
+         size_t len, len2;
+
+         p = stringprep_locale_to_utf8 (readbuf);
+         if (!p)
+           error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"),
+                  stringprep_locale_charset ());
+
+         q = stringprep_utf8_to_ucs4 (p, -1, &len);
+         free (p);
+         if (!q)
+           error (EXIT_FAILURE, 0,
+                  _("could not convert from UTF-8 to UCS-4"));
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+             for (i = 0; i < len; i++)
+               fprintf (stderr, "input[%lu] = U+%04x\n",
+                        (unsigned long) i, q[i]);
+           }
+
+         len2 = BUFSIZ - 1;
+         rc = punycode_encode (len, q, NULL, &len2, readbuf);
+         free (q);
+         if (rc != PUNYCODE_SUCCESS)
+           error (EXIT_FAILURE, 0, _("punycode_encode: %s"),
+                  punycode_strerror (rc));
+
+         readbuf[len2] = '\0';
+
+         p = stringprep_utf8_to_locale (readbuf);
+         if (!p)
+           error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"),
+                  stringprep_locale_charset ());
+
+         fprintf (stdout, "%s\n", p);
+
+         free (p);
+       }
+
+      if (args_info.punycode_decode_given)
+       {
+         size_t len;
+
+         len = BUFSIZ;
+         q = (uint32_t *) malloc (len * sizeof (q[0]));
+         if (!q)
+           error (EXIT_FAILURE, ENOMEM, N_("malloc"));
+
+         rc = punycode_decode (strlen (readbuf), readbuf, &len, q, NULL);
+         if (rc != PUNYCODE_SUCCESS)
+           {
+             free (q);
+             error (EXIT_FAILURE, 0, _("punycode_decode: %s"),
+                    punycode_strerror (rc));
+           }
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+             for (i = 0; i < len; i++)
+               fprintf (stderr, "output[%lu] = U+%04x\n",
+                        (unsigned long) i, q[i]);
+           }
+
+         q[len] = 0;
+         r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL);
+         free (q);
+         if (!r)
+           error (EXIT_FAILURE, 0,
+                  _("could not convert from UCS-4 to UTF-8"));
+
+         p = stringprep_utf8_to_locale (r);
+         free (r);
+         if (!r)
+           error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"),
+                  stringprep_locale_charset ());
+
+         fprintf (stdout, "%s\n", p);
+
+         free (p);
+       }
+
+      if (args_info.idna_to_ascii_given)
+       {
+         p = stringprep_locale_to_utf8 (readbuf);
+         if (!p)
+           error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"),
+                  stringprep_locale_charset ());
+
+         q = stringprep_utf8_to_ucs4 (p, -1, NULL);
+         free (p);
+         if (!q)
+           error (EXIT_FAILURE, 0,
+                  _("could not convert from UCS-4 to UTF-8"));
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+             for (i = 0; q[i]; i++)
+               fprintf (stderr, "input[%lu] = U+%04x\n",
+                        (unsigned long) i, q[i]);
+           }
+
+         rc = idna_to_ascii_4z (q, &p,
+                                (args_info.allow_unassigned_given ?
+                                 IDNA_ALLOW_UNASSIGNED : 0) |
+                                (args_info.usestd3asciirules_given ?
+                                 IDNA_USE_STD3_ASCII_RULES : 0));
+         free (q);
+         if (rc != IDNA_SUCCESS)
+           error (EXIT_FAILURE, 0, _("idna_to_ascii_4z: %s"),
+                  idna_strerror (rc));
+
+#ifdef WITH_TLD
+         if (args_info.tld_flag && !args_info.no_tld_flag)
+           {
+             size_t errpos;
+
+             rc = idna_to_unicode_8z4z (p, &q,
+                                        (args_info.allow_unassigned_given ?
+                                         IDNA_ALLOW_UNASSIGNED : 0) |
+                                        (args_info.usestd3asciirules_given ?
+                                         IDNA_USE_STD3_ASCII_RULES : 0));
+             if (rc != IDNA_SUCCESS)
+               error (EXIT_FAILURE, 0, _("idna_to_unicode_8z4z (TLD): %s"),
+                      idna_strerror (rc));
+
+             if (args_info.debug_given)
+               {
+                 size_t i;
+                 for (i = 0; q[i]; i++)
+                   fprintf (stderr, "tld[%lu] = U+%04x\n",
+                            (unsigned long) i, q[i]);
+               }
+
+             rc = tld_check_4z (q, &errpos, NULL);
+             free (q);
+             if (rc == TLD_INVALID)
+               error (EXIT_FAILURE, 0, _("tld_check_4z (position %lu): %s"),
+                      (unsigned long) errpos, tld_strerror (rc));
+             if (rc != TLD_SUCCESS)
+               error (EXIT_FAILURE, 0, _("tld_check_4z: %s"),
+                      tld_strerror (rc));
+           }
+#endif
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+             for (i = 0; p[i]; i++)
+               fprintf (stderr, "output[%lu] = U+%04x\n",
+                        (unsigned long) i, p[i]);
+           }
+
+         fprintf (stdout, "%s\n", p);
+
+         free (p);
+       }
+
+      if (args_info.idna_to_unicode_given)
+       {
+         p = stringprep_locale_to_utf8 (readbuf);
+         if (!p)
+           error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"),
+                  stringprep_locale_charset ());
+
+         q = stringprep_utf8_to_ucs4 (p, -1, NULL);
+         if (!q)
+           {
+             free (p);
+             error (EXIT_FAILURE, 0,
+                    _("could not convert from UCS-4 to UTF-8"));
+           }
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+             for (i = 0; q[i]; i++)
+               fprintf (stderr, "input[%lu] = U+%04x\n",
+                        (unsigned long) i, q[i]);
+           }
+         free (q);
+
+         rc = idna_to_unicode_8z4z (p, &q,
+                                    (args_info.allow_unassigned_given ?
+                                     IDNA_ALLOW_UNASSIGNED : 0) |
+                                    (args_info.usestd3asciirules_given ?
+                                     IDNA_USE_STD3_ASCII_RULES : 0));
+         free (p);
+         if (rc != IDNA_SUCCESS)
+           error (EXIT_FAILURE, 0, _("idna_to_unicode_8z4z: %s"),
+                  idna_strerror (rc));
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+             for (i = 0; q[i]; i++)
+               fprintf (stderr, "output[%lu] = U+%04x\n",
+                        (unsigned long) i, q[i]);
+           }
+
+#ifdef WITH_TLD
+         if (args_info.tld_flag)
+           {
+             size_t errpos;
+
+             rc = tld_check_4z (q, &errpos, NULL);
+             if (rc == TLD_INVALID)
+               {
+                 free (q);
+                 error (EXIT_FAILURE, 0,
+                        _("tld_check_4z (position %lu): %s"),
+                        (unsigned long) errpos, tld_strerror (rc));
+               }
+             if (rc != TLD_SUCCESS)
+               {
+                 free (q);
+                 error (EXIT_FAILURE, 0, _("tld_check_4z: %s"),
+                        tld_strerror (rc));
+               }
+           }
+#endif
+
+         r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL);
+         free (q);
+         if (!r)
+           error (EXIT_FAILURE, 0,
+                  _("could not convert from UTF-8 to UCS-4"));
+
+         p = stringprep_utf8_to_locale (r);
+         free (r);
+         if (!r)
+           error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"),
+                  stringprep_locale_charset ());
+
+         fprintf (stdout, "%s\n", p);
+
+         free (p);
+       }
+
+      if (args_info.nfkc_given)
+       {
+         p = stringprep_locale_to_utf8 (readbuf);
+         if (!p)
+           error (EXIT_FAILURE, 0, _("could not convert from %s to UTF-8"),
+                  stringprep_locale_charset ());
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+
+             q = stringprep_utf8_to_ucs4 (p, -1, NULL);
+             if (!q)
+               {
+                 free (p);
+                 error (EXIT_FAILURE, 0,
+                        _("could not convert from UTF-8 to UCS-4"));
+               }
+
+             for (i = 0; q[i]; i++)
+               fprintf (stderr, "input[%lu] = U+%04x\n",
+                        (unsigned long) i, q[i]);
+
+             free (q);
+           }
+
+         r = stringprep_utf8_nfkc_normalize (p, -1);
+         free (p);
+         if (!r)
+           error (EXIT_FAILURE, 0, _("could not do NFKC normalization"));
+
+         if (args_info.debug_given)
+           {
+             size_t i;
+
+             q = stringprep_utf8_to_ucs4 (r, -1, NULL);
+             if (!q)
+               {
+                 free (r);
+                 error (EXIT_FAILURE, 0,
+                        _("could not convert from UTF-8 to UCS-4"));
+               }
+
+             for (i = 0; q[i]; i++)
+               fprintf (stderr, "output[%lu] = U+%04x\n",
+                        (unsigned long) i, q[i]);
+
+             free (q);
+           }
+
+         p = stringprep_utf8_to_locale (r);
+         free (r);
+         if (!p)
+           error (EXIT_FAILURE, 0, _("could not convert from UTF-8 to %s"),
+                  stringprep_locale_charset ());
+
+         fprintf (stdout, "%s\n", p);
+
+         free (p);
+       }
+    }
+  while (!feof (stdin) && !ferror (stdin) && (args_info.inputs_num == 0 ||
+                                             cmdn < args_info.inputs_num));
+
+  return EXIT_SUCCESS;
+}
diff --git a/src/idn.ggo b/src/idn.ggo
new file mode 100644 (file)
index 0000000..d473070
--- /dev/null
@@ -0,0 +1,31 @@
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson.
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+option "stringprep" s "Prepare string according to nameprep profile" no
+option "punycode-decode" d "Decode Punycode" no
+option "punycode-encode" e "Encode Punycode" no
+option "idna-to-ascii"   a "Convert to ACE according to IDNA (default)" no
+option "idna-to-unicode" u "Convert from ACE according to IDNA" no
+option "allow-unassigned" - "Toggle IDNA AllowUnassigned flag" flag off
+option "usestd3asciirules" - "Toggle IDNA UseSTD3ASCIIRules flag" flag off
+option "tld" t "Check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode" flag on
+option "no-tld" - "Don't check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode" flag off
+option "nfkc" n "Normalize string according to Unicode v3.2 NFKC" no
+option "hidden-nfkc" k "Hidden parameter for backwards compatibility" no hidden
+option "profile" p "Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'." string no
+option "debug" - "Print debugging information" flag off
+option "quiet" - "Silent operation" flag off
diff --git a/src/idn_cmd.c b/src/idn_cmd.c
new file mode 100644 (file)
index 0000000..86dcb48
--- /dev/null
@@ -0,0 +1,834 @@
+/*
+  File autogenerated by gengetopt version 2.22.1
+  generated with the following command:
+  gengetopt --unamed-opts --no-handle-version --no-handle-help --set-package=idn --input idn.ggo --file-name idn_cmd Makefile.am 
+
+  The developers of gengetopt consider the fixed text that goes in all
+  gengetopt output files to be in the public domain:
+  we make no copyright claims on it.
+*/
+
+/* If we use autoconf.  */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "getopt.h"
+
+#include "idn_cmd.h"
+
+const char *gengetopt_args_info_purpose = "";
+
+const char *gengetopt_args_info_usage = "Usage: idn [OPTION]... [STRING]...";
+
+const char *gengetopt_args_info_description = "";
+
+const char *gengetopt_args_info_full_help[] = {
+  "  -h, --help               Print help and exit",
+  "      --full-help          Print help, including hidden options, and exit",
+  "  -V, --version            Print version and exit",
+  "  -s, --stringprep         Prepare string according to nameprep profile",
+  "  -d, --punycode-decode    Decode Punycode",
+  "  -e, --punycode-encode    Encode Punycode",
+  "  -a, --idna-to-ascii      Convert to ACE according to IDNA (default)",
+  "  -u, --idna-to-unicode    Convert from ACE according to IDNA",
+  "      --allow-unassigned   Toggle IDNA AllowUnassigned flag  (default=off)",
+  "      --usestd3asciirules  Toggle IDNA UseSTD3ASCIIRules flag  (default=off)",
+  "  -t, --tld                Check string for TLD specific rules\n                             Only for --idna-to-ascii and --idna-to-unicode  \n                             (default=on)",
+  "      --no-tld             Don't check string for TLD specific rules\n                             Only for --idna-to-ascii and --idna-to-unicode  \n                             (default=off)",
+  "  -n, --nfkc               Normalize string according to Unicode v3.2 NFKC",
+  "  -k, --hidden-nfkc        Hidden parameter for backwards compatibility",
+  "  -p, --profile=STRING     Use specified stringprep profile instead\n                             Valid stringprep profiles are `Nameprep', `iSCSI', \n                             `Nodeprep', `Resourceprep', `trace', and \n                             `SASLprep'.",
+  "      --debug              Print debugging information  (default=off)",
+  "      --quiet              Silent operation  (default=off)",
+    0
+};
+
+static void
+init_help_array(void)
+{
+  gengetopt_args_info_help[0] = gengetopt_args_info_full_help[0];
+  gengetopt_args_info_help[1] = gengetopt_args_info_full_help[1];
+  gengetopt_args_info_help[2] = gengetopt_args_info_full_help[2];
+  gengetopt_args_info_help[3] = gengetopt_args_info_full_help[3];
+  gengetopt_args_info_help[4] = gengetopt_args_info_full_help[4];
+  gengetopt_args_info_help[5] = gengetopt_args_info_full_help[5];
+  gengetopt_args_info_help[6] = gengetopt_args_info_full_help[6];
+  gengetopt_args_info_help[7] = gengetopt_args_info_full_help[7];
+  gengetopt_args_info_help[8] = gengetopt_args_info_full_help[8];
+  gengetopt_args_info_help[9] = gengetopt_args_info_full_help[9];
+  gengetopt_args_info_help[10] = gengetopt_args_info_full_help[10];
+  gengetopt_args_info_help[11] = gengetopt_args_info_full_help[11];
+  gengetopt_args_info_help[12] = gengetopt_args_info_full_help[12];
+  gengetopt_args_info_help[13] = gengetopt_args_info_full_help[14];
+  gengetopt_args_info_help[14] = gengetopt_args_info_full_help[15];
+  gengetopt_args_info_help[15] = gengetopt_args_info_full_help[16];
+  gengetopt_args_info_help[16] = 0; 
+  
+}
+
+const char *gengetopt_args_info_help[17];
+
+typedef enum {ARG_NO
+  , ARG_FLAG
+  , ARG_STRING
+} cmdline_parser_arg_type;
+
+static
+void clear_given (struct gengetopt_args_info *args_info);
+static
+void clear_args (struct gengetopt_args_info *args_info);
+
+static int
+cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info,
+                        struct cmdline_parser_params *params, const char *additional_error);
+
+
+static char *
+gengetopt_strdup (const char *s);
+
+static
+void clear_given (struct gengetopt_args_info *args_info)
+{
+  args_info->help_given = 0 ;
+  args_info->full_help_given = 0 ;
+  args_info->version_given = 0 ;
+  args_info->stringprep_given = 0 ;
+  args_info->punycode_decode_given = 0 ;
+  args_info->punycode_encode_given = 0 ;
+  args_info->idna_to_ascii_given = 0 ;
+  args_info->idna_to_unicode_given = 0 ;
+  args_info->allow_unassigned_given = 0 ;
+  args_info->usestd3asciirules_given = 0 ;
+  args_info->tld_given = 0 ;
+  args_info->no_tld_given = 0 ;
+  args_info->nfkc_given = 0 ;
+  args_info->hidden_nfkc_given = 0 ;
+  args_info->profile_given = 0 ;
+  args_info->debug_given = 0 ;
+  args_info->quiet_given = 0 ;
+}
+
+static
+void clear_args (struct gengetopt_args_info *args_info)
+{
+  args_info->allow_unassigned_flag = 0;
+  args_info->usestd3asciirules_flag = 0;
+  args_info->tld_flag = 1;
+  args_info->no_tld_flag = 0;
+  args_info->profile_arg = NULL;
+  args_info->profile_orig = NULL;
+  args_info->debug_flag = 0;
+  args_info->quiet_flag = 0;
+  
+}
+
+static
+void init_args_info(struct gengetopt_args_info *args_info)
+{
+
+  init_help_array(); 
+  args_info->help_help = gengetopt_args_info_full_help[0] ;
+  args_info->full_help_help = gengetopt_args_info_full_help[1] ;
+  args_info->version_help = gengetopt_args_info_full_help[2] ;
+  args_info->stringprep_help = gengetopt_args_info_full_help[3] ;
+  args_info->punycode_decode_help = gengetopt_args_info_full_help[4] ;
+  args_info->punycode_encode_help = gengetopt_args_info_full_help[5] ;
+  args_info->idna_to_ascii_help = gengetopt_args_info_full_help[6] ;
+  args_info->idna_to_unicode_help = gengetopt_args_info_full_help[7] ;
+  args_info->allow_unassigned_help = gengetopt_args_info_full_help[8] ;
+  args_info->usestd3asciirules_help = gengetopt_args_info_full_help[9] ;
+  args_info->tld_help = gengetopt_args_info_full_help[10] ;
+  args_info->no_tld_help = gengetopt_args_info_full_help[11] ;
+  args_info->nfkc_help = gengetopt_args_info_full_help[12] ;
+  args_info->hidden_nfkc_help = gengetopt_args_info_full_help[13] ;
+  args_info->profile_help = gengetopt_args_info_full_help[14] ;
+  args_info->debug_help = gengetopt_args_info_full_help[15] ;
+  args_info->quiet_help = gengetopt_args_info_full_help[16] ;
+  
+}
+
+void
+cmdline_parser_print_version (void)
+{
+  printf ("%s %s\n", CMDLINE_PARSER_PACKAGE, CMDLINE_PARSER_VERSION);
+}
+
+static void print_help_common(void) {
+  cmdline_parser_print_version ();
+
+  if (strlen(gengetopt_args_info_purpose) > 0)
+    printf("\n%s\n", gengetopt_args_info_purpose);
+
+  if (strlen(gengetopt_args_info_usage) > 0)
+    printf("\n%s\n", gengetopt_args_info_usage);
+
+  printf("\n");
+
+  if (strlen(gengetopt_args_info_description) > 0)
+    printf("%s\n\n", gengetopt_args_info_description);
+}
+
+void
+cmdline_parser_print_help (void)
+{
+  int i = 0;
+  print_help_common();
+  while (gengetopt_args_info_help[i])
+    printf("%s\n", gengetopt_args_info_help[i++]);
+}
+
+void
+cmdline_parser_print_full_help (void)
+{
+  int i = 0;
+  print_help_common();
+  while (gengetopt_args_info_full_help[i])
+    printf("%s\n", gengetopt_args_info_full_help[i++]);
+}
+
+void
+cmdline_parser_init (struct gengetopt_args_info *args_info)
+{
+  clear_given (args_info);
+  clear_args (args_info);
+  init_args_info (args_info);
+
+  args_info->inputs = NULL;
+  args_info->inputs_num = 0;
+}
+
+void
+cmdline_parser_params_init(struct cmdline_parser_params *params)
+{
+  if (params)
+    { 
+      params->override = 0;
+      params->initialize = 1;
+      params->check_required = 1;
+      params->check_ambiguity = 0;
+      params->print_errors = 1;
+    }
+}
+
+struct cmdline_parser_params *
+cmdline_parser_params_create(void)
+{
+  struct cmdline_parser_params *params = 
+    (struct cmdline_parser_params *)malloc(sizeof(struct cmdline_parser_params));
+  cmdline_parser_params_init(params);  
+  return params;
+}
+
+static void
+free_string_field (char **s)
+{
+  if (*s)
+    {
+      free (*s);
+      *s = 0;
+    }
+}
+
+
+static void
+cmdline_parser_release (struct gengetopt_args_info *args_info)
+{
+  unsigned int i;
+  free_string_field (&(args_info->profile_arg));
+  free_string_field (&(args_info->profile_orig));
+  
+  
+  for (i = 0; i < args_info->inputs_num; ++i)
+    free (args_info->inputs [i]);
+
+  if (args_info->inputs_num)
+    free (args_info->inputs);
+
+  clear_given (args_info);
+}
+
+
+static void
+write_into_file(FILE *outfile, const char *opt, const char *arg, char *values[])
+{
+  if (arg) {
+    fprintf(outfile, "%s=\"%s\"\n", opt, arg);
+  } else {
+    fprintf(outfile, "%s\n", opt);
+  }
+}
+
+
+int
+cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info)
+{
+  int i = 0;
+
+  if (!outfile)
+    {
+      fprintf (stderr, "%s: cannot dump options to stream\n", CMDLINE_PARSER_PACKAGE);
+      return EXIT_FAILURE;
+    }
+
+  if (args_info->help_given)
+    write_into_file(outfile, "help", 0, 0 );
+  if (args_info->full_help_given)
+    write_into_file(outfile, "full-help", 0, 0 );
+  if (args_info->version_given)
+    write_into_file(outfile, "version", 0, 0 );
+  if (args_info->stringprep_given)
+    write_into_file(outfile, "stringprep", 0, 0 );
+  if (args_info->punycode_decode_given)
+    write_into_file(outfile, "punycode-decode", 0, 0 );
+  if (args_info->punycode_encode_given)
+    write_into_file(outfile, "punycode-encode", 0, 0 );
+  if (args_info->idna_to_ascii_given)
+    write_into_file(outfile, "idna-to-ascii", 0, 0 );
+  if (args_info->idna_to_unicode_given)
+    write_into_file(outfile, "idna-to-unicode", 0, 0 );
+  if (args_info->allow_unassigned_given)
+    write_into_file(outfile, "allow-unassigned", 0, 0 );
+  if (args_info->usestd3asciirules_given)
+    write_into_file(outfile, "usestd3asciirules", 0, 0 );
+  if (args_info->tld_given)
+    write_into_file(outfile, "tld", 0, 0 );
+  if (args_info->no_tld_given)
+    write_into_file(outfile, "no-tld", 0, 0 );
+  if (args_info->nfkc_given)
+    write_into_file(outfile, "nfkc", 0, 0 );
+  if (args_info->hidden_nfkc_given)
+    write_into_file(outfile, "hidden-nfkc", 0, 0 );
+  if (args_info->profile_given)
+    write_into_file(outfile, "profile", args_info->profile_orig, 0);
+  if (args_info->debug_given)
+    write_into_file(outfile, "debug", 0, 0 );
+  if (args_info->quiet_given)
+    write_into_file(outfile, "quiet", 0, 0 );
+  
+
+  i = EXIT_SUCCESS;
+  return i;
+}
+
+int
+cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
+{
+  FILE *outfile;
+  int i = 0;
+
+  outfile = fopen(filename, "w");
+
+  if (!outfile)
+    {
+      fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename);
+      return EXIT_FAILURE;
+    }
+
+  i = cmdline_parser_dump(outfile, args_info);
+  fclose (outfile);
+
+  return i;
+}
+
+void
+cmdline_parser_free (struct gengetopt_args_info *args_info)
+{
+  cmdline_parser_release (args_info);
+}
+
+/** @brief replacement of strdup, which is not standard */
+char *
+gengetopt_strdup (const char *s)
+{
+  char *result = NULL;
+  if (!s)
+    return result;
+
+  result = (char*)malloc(strlen(s) + 1);
+  if (result == (char*)0)
+    return (char*)0;
+  strcpy(result, s);
+  return result;
+}
+
+int
+cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info)
+{
+  return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
+}
+
+int
+cmdline_parser_ext (int argc, char * const *argv, struct gengetopt_args_info *args_info,
+                   struct cmdline_parser_params *params)
+{
+  int result;
+  result = cmdline_parser_internal (argc, argv, args_info, params, NULL);
+
+  if (result == EXIT_FAILURE)
+    {
+      cmdline_parser_free (args_info);
+      exit (EXIT_FAILURE);
+    }
+  
+  return result;
+}
+
+int
+cmdline_parser2 (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
+{
+  int result;
+  struct cmdline_parser_params params;
+  
+  params.override = override;
+  params.initialize = initialize;
+  params.check_required = check_required;
+  params.check_ambiguity = 0;
+  params.print_errors = 1;
+
+  result = cmdline_parser_internal (argc, argv, args_info, &params, NULL);
+
+  if (result == EXIT_FAILURE)
+    {
+      cmdline_parser_free (args_info);
+      exit (EXIT_FAILURE);
+    }
+  
+  return result;
+}
+
+int
+cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
+{
+  return EXIT_SUCCESS;
+}
+
+
+static char *package_name = 0;
+
+/**
+ * @brief updates an option
+ * @param field the generic pointer to the field to update
+ * @param orig_field the pointer to the orig field
+ * @param field_given the pointer to the number of occurrence of this option
+ * @param prev_given the pointer to the number of occurrence already seen
+ * @param value the argument for this option (if null no arg was specified)
+ * @param possible_values the possible values for this option (if specified)
+ * @param default_value the default value (in case the option only accepts fixed values)
+ * @param arg_type the type of this option
+ * @param check_ambiguity @see cmdline_parser_params.check_ambiguity
+ * @param override @see cmdline_parser_params.override
+ * @param no_free whether to free a possible previous value
+ * @param multiple_option whether this is a multiple option
+ * @param long_opt the corresponding long option
+ * @param short_opt the corresponding short option (or '-' if none)
+ * @param additional_error possible further error specification
+ */
+static
+int update_arg(void *field, char **orig_field,
+               unsigned int *field_given, unsigned int *prev_given, 
+               char *value, char *possible_values[], const char *default_value,
+               cmdline_parser_arg_type arg_type,
+               int check_ambiguity, int override,
+               int no_free, int multiple_option,
+               const char *long_opt, char short_opt,
+               const char *additional_error)
+{
+  char *stop_char = 0;
+  const char *val = value;
+  int found;
+  char **string_field;
+
+  stop_char = 0;
+  found = 0;
+
+  if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_given)))
+    {
+      if (short_opt != '-')
+        fprintf (stderr, "%s: `--%s' (`-%c') option given more than once%s\n", 
+               package_name, long_opt, short_opt,
+               (additional_error ? additional_error : ""));
+      else
+        fprintf (stderr, "%s: `--%s' option given more than once%s\n", 
+               package_name, long_opt,
+               (additional_error ? additional_error : ""));
+      return 1; /* failure */
+    }
+
+    
+  if (field_given && *field_given && ! override)
+    return 0;
+  if (prev_given)
+    (*prev_given)++;
+  if (field_given)
+    (*field_given)++;
+  if (possible_values)
+    val = possible_values[found];
+
+  switch(arg_type) {
+  case ARG_FLAG:
+    *((int *)field) = !*((int *)field);
+    break;
+  case ARG_STRING:
+    if (val) {
+      string_field = (char **)field;
+      if (!no_free && *string_field)
+        free (*string_field); /* free previous string */
+      *string_field = gengetopt_strdup (val);
+    }
+    break;
+  default:
+    break;
+  };
+
+
+  /* store the original value */
+  switch(arg_type) {
+  case ARG_NO:
+  case ARG_FLAG:
+    break;
+  default:
+    if (value && orig_field) {
+      if (no_free) {
+        *orig_field = value;
+      } else {
+        if (*orig_field)
+          free (*orig_field); /* free previous string */
+        *orig_field = gengetopt_strdup (value);
+      }
+    }
+  };
+
+  return 0; /* OK */
+}
+
+
+int
+cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info,
+                        struct cmdline_parser_params *params, const char *additional_error)
+{
+  int c;       /* Character of the parsed option.  */
+
+  int error = 0;
+  struct gengetopt_args_info local_args_info;
+  
+  int override;
+  int initialize;
+  int check_required;
+  int check_ambiguity;
+  
+  package_name = argv[0];
+  
+  override = params->override;
+  initialize = params->initialize;
+  check_required = params->check_required;
+  check_ambiguity = params->check_ambiguity;
+
+  if (initialize)
+    cmdline_parser_init (args_info);
+
+  cmdline_parser_init (&local_args_info);
+
+  optarg = 0;
+  optind = 0;
+  opterr = params->print_errors;
+  optopt = '?';
+
+  while (1)
+    {
+      int option_index = 0;
+
+      static struct option long_options[] = {
+        { "help",      0, NULL, 'h' },
+        { "full-help", 0, NULL, 0 },
+        { "version",   0, NULL, 'V' },
+        { "stringprep",        0, NULL, 's' },
+        { "punycode-decode",   0, NULL, 'd' },
+        { "punycode-encode",   0, NULL, 'e' },
+        { "idna-to-ascii",     0, NULL, 'a' },
+        { "idna-to-unicode",   0, NULL, 'u' },
+        { "allow-unassigned",  0, NULL, 0 },
+        { "usestd3asciirules", 0, NULL, 0 },
+        { "tld",       0, NULL, 't' },
+        { "no-tld",    0, NULL, 0 },
+        { "nfkc",      0, NULL, 'n' },
+        { "hidden-nfkc",       0, NULL, 'k' },
+        { "profile",   1, NULL, 'p' },
+        { "debug",     0, NULL, 0 },
+        { "quiet",     0, NULL, 0 },
+        { NULL,        0, NULL, 0 }
+      };
+
+      c = getopt_long (argc, argv, "hVsdeautnkp:", long_options, &option_index);
+
+      if (c == -1) break;      /* Exit from `while (1)' loop.  */
+
+      switch (c)
+        {
+        case 'h':      /* Print help and exit.  */
+        
+        
+          if (update_arg( 0 , 
+               0 , &(args_info->help_given),
+              &(local_args_info.help_given), optarg, 0, 0, ARG_NO,
+              check_ambiguity, override, 0, 0,
+              "help", 'h',
+              additional_error))
+            goto failure;
+          cmdline_parser_free (&local_args_info);
+          return 0;
+        
+          break;
+        case 'V':      /* Print version and exit.  */
+        
+        
+          if (update_arg( 0 , 
+               0 , &(args_info->version_given),
+              &(local_args_info.version_given), optarg, 0, 0, ARG_NO,
+              check_ambiguity, override, 0, 0,
+              "version", 'V',
+              additional_error))
+            goto failure;
+          cmdline_parser_free (&local_args_info);
+          return 0;
+        
+          break;
+        case 's':      /* Prepare string according to nameprep profile.  */
+        
+        
+          if (update_arg( 0 , 
+               0 , &(args_info->stringprep_given),
+              &(local_args_info.stringprep_given), optarg, 0, 0, ARG_NO,
+              check_ambiguity, override, 0, 0,
+              "stringprep", 's',
+              additional_error))
+            goto failure;
+        
+          break;
+        case 'd':      /* Decode Punycode.  */
+        
+        
+          if (update_arg( 0 , 
+               0 , &(args_info->punycode_decode_given),
+              &(local_args_info.punycode_decode_given), optarg, 0, 0, ARG_NO,
+              check_ambiguity, override, 0, 0,
+              "punycode-decode", 'd',
+              additional_error))
+            goto failure;
+        
+          break;
+        case 'e':      /* Encode Punycode.  */
+        
+        
+          if (update_arg( 0 , 
+               0 , &(args_info->punycode_encode_given),
+              &(local_args_info.punycode_encode_given), optarg, 0, 0, ARG_NO,
+              check_ambiguity, override, 0, 0,
+              "punycode-encode", 'e',
+              additional_error))
+            goto failure;
+        
+          break;
+        case 'a':      /* Convert to ACE according to IDNA (default).  */
+        
+        
+          if (update_arg( 0 , 
+               0 , &(args_info->idna_to_ascii_given),
+              &(local_args_info.idna_to_ascii_given), optarg, 0, 0, ARG_NO,
+              check_ambiguity, override, 0, 0,
+              "idna-to-ascii", 'a',
+              additional_error))
+            goto failure;
+        
+          break;
+        case 'u':      /* Convert from ACE according to IDNA.  */
+        
+        
+          if (update_arg( 0 , 
+               0 , &(args_info->idna_to_unicode_given),
+              &(local_args_info.idna_to_unicode_given), optarg, 0, 0, ARG_NO,
+              check_ambiguity, override, 0, 0,
+              "idna-to-unicode", 'u',
+              additional_error))
+            goto failure;
+        
+          break;
+        case 't':      /* Check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode.  */
+        
+        
+          if (update_arg((void *)&(args_info->tld_flag), 0, &(args_info->tld_given),
+              &(local_args_info.tld_given), optarg, 0, 0, ARG_FLAG,
+              check_ambiguity, override, 1, 0, "tld", 't',
+              additional_error))
+            goto failure;
+        
+          break;
+        case 'n':      /* Normalize string according to Unicode v3.2 NFKC.  */
+        
+        
+          if (update_arg( 0 , 
+               0 , &(args_info->nfkc_given),
+              &(local_args_info.nfkc_given), optarg, 0, 0, ARG_NO,
+              check_ambiguity, override, 0, 0,
+              "nfkc", 'n',
+              additional_error))
+            goto failure;
+        
+          break;
+        case 'k':      /* Hidden parameter for backwards compatibility.  */
+        
+        
+          if (update_arg( 0 , 
+               0 , &(args_info->hidden_nfkc_given),
+              &(local_args_info.hidden_nfkc_given), optarg, 0, 0, ARG_NO,
+              check_ambiguity, override, 0, 0,
+              "hidden-nfkc", 'k',
+              additional_error))
+            goto failure;
+        
+          break;
+        case 'p':      /* Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'..  */
+        
+        
+          if (update_arg( (void *)&(args_info->profile_arg), 
+               &(args_info->profile_orig), &(args_info->profile_given),
+              &(local_args_info.profile_given), optarg, 0, 0, ARG_STRING,
+              check_ambiguity, override, 0, 0,
+              "profile", 'p',
+              additional_error))
+            goto failure;
+        
+          break;
+
+        case 0:        /* Long option with no short option */
+          /* Print help, including hidden options, and exit.  */
+          if (strcmp (long_options[option_index].name, "full-help") == 0)
+          {
+          
+          
+            if (update_arg( 0 , 
+                 0 , &(args_info->full_help_given),
+                &(local_args_info.full_help_given), optarg, 0, 0, ARG_NO,
+                check_ambiguity, override, 0, 0,
+                "full-help", '-',
+                additional_error))
+              goto failure;
+            cmdline_parser_free (&local_args_info);
+            return 0;
+          
+          }
+          /* Toggle IDNA AllowUnassigned flag.  */
+          else if (strcmp (long_options[option_index].name, "allow-unassigned") == 0)
+          {
+          
+          
+            if (update_arg((void *)&(args_info->allow_unassigned_flag), 0, &(args_info->allow_unassigned_given),
+                &(local_args_info.allow_unassigned_given), optarg, 0, 0, ARG_FLAG,
+                check_ambiguity, override, 1, 0, "allow-unassigned", '-',
+                additional_error))
+              goto failure;
+          
+          }
+          /* Toggle IDNA UseSTD3ASCIIRules flag.  */
+          else if (strcmp (long_options[option_index].name, "usestd3asciirules") == 0)
+          {
+          
+          
+            if (update_arg((void *)&(args_info->usestd3asciirules_flag), 0, &(args_info->usestd3asciirules_given),
+                &(local_args_info.usestd3asciirules_given), optarg, 0, 0, ARG_FLAG,
+                check_ambiguity, override, 1, 0, "usestd3asciirules", '-',
+                additional_error))
+              goto failure;
+          
+          }
+          /* Don't check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode.  */
+          else if (strcmp (long_options[option_index].name, "no-tld") == 0)
+          {
+          
+          
+            if (update_arg((void *)&(args_info->no_tld_flag), 0, &(args_info->no_tld_given),
+                &(local_args_info.no_tld_given), optarg, 0, 0, ARG_FLAG,
+                check_ambiguity, override, 1, 0, "no-tld", '-',
+                additional_error))
+              goto failure;
+          
+          }
+          /* Print debugging information.  */
+          else if (strcmp (long_options[option_index].name, "debug") == 0)
+          {
+          
+          
+            if (update_arg((void *)&(args_info->debug_flag), 0, &(args_info->debug_given),
+                &(local_args_info.debug_given), optarg, 0, 0, ARG_FLAG,
+                check_ambiguity, override, 1, 0, "debug", '-',
+                additional_error))
+              goto failure;
+          
+          }
+          /* Silent operation.  */
+          else if (strcmp (long_options[option_index].name, "quiet") == 0)
+          {
+          
+          
+            if (update_arg((void *)&(args_info->quiet_flag), 0, &(args_info->quiet_given),
+                &(local_args_info.quiet_given), optarg, 0, 0, ARG_FLAG,
+                check_ambiguity, override, 1, 0, "quiet", '-',
+                additional_error))
+              goto failure;
+          
+          }
+          
+          break;
+        case '?':      /* Invalid option.  */
+          /* `getopt_long' already printed an error message.  */
+          goto failure;
+
+        default:       /* bug: option not considered.  */
+          fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
+          abort ();
+        } /* switch */
+    } /* while */
+
+
+
+
+  cmdline_parser_release (&local_args_info);
+
+  if ( error )
+    return (EXIT_FAILURE);
+
+  if (optind < argc)
+    {
+      int i = 0 ;
+      int found_prog_name = 0;
+      /* whether program name, i.e., argv[0], is in the remaining args
+         (this may happen with some implementations of getopt,
+          but surely not with the one included by gengetopt) */
+
+      i = optind;
+      while (i < argc)
+        if (argv[i++] == argv[0]) {
+          found_prog_name = 1;
+          break;
+        }
+      i = 0;
+
+      args_info->inputs_num = argc - optind - found_prog_name;
+      args_info->inputs =
+        (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;
+      while (optind < argc)
+        if (argv[optind++] != argv[0])
+          args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind-1]) ;
+    }
+
+  return 0;
+
+failure:
+  
+  cmdline_parser_release (&local_args_info);
+  return (EXIT_FAILURE);
+}
diff --git a/src/idn_cmd.h b/src/idn_cmd.h
new file mode 100644 (file)
index 0000000..9e93bfb
--- /dev/null
@@ -0,0 +1,212 @@
+/** @file idn_cmd.h
+ *  @brief The header file for the command line option parser
+ *  generated by GNU Gengetopt version 2.22.1
+ *  http://www.gnu.org/software/gengetopt.
+ *  DO NOT modify this file, since it can be overwritten
+ *  @author GNU Gengetopt by Lorenzo Bettini */
+
+#ifndef IDN_CMD_H
+#define IDN_CMD_H
+
+/* If we use autoconf.  */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h> /* for FILE */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#ifndef CMDLINE_PARSER_PACKAGE
+/** @brief the program name */
+#define CMDLINE_PARSER_PACKAGE "idn"
+#endif
+
+#ifndef CMDLINE_PARSER_VERSION
+/** @brief the program version */
+#define CMDLINE_PARSER_VERSION VERSION
+#endif
+
+/** @brief Where the command line options are stored */
+struct gengetopt_args_info
+{
+  const char *help_help; /**< @brief Print help and exit help description.  */
+  const char *full_help_help; /**< @brief Print help, including hidden options, and exit help description.  */
+  const char *version_help; /**< @brief Print version and exit help description.  */
+  const char *stringprep_help; /**< @brief Prepare string according to nameprep profile help description.  */
+  const char *punycode_decode_help; /**< @brief Decode Punycode help description.  */
+  const char *punycode_encode_help; /**< @brief Encode Punycode help description.  */
+  const char *idna_to_ascii_help; /**< @brief Convert to ACE according to IDNA (default) help description.  */
+  const char *idna_to_unicode_help; /**< @brief Convert from ACE according to IDNA help description.  */
+  int allow_unassigned_flag;   /**< @brief Toggle IDNA AllowUnassigned flag (default=off).  */
+  const char *allow_unassigned_help; /**< @brief Toggle IDNA AllowUnassigned flag help description.  */
+  int usestd3asciirules_flag;  /**< @brief Toggle IDNA UseSTD3ASCIIRules flag (default=off).  */
+  const char *usestd3asciirules_help; /**< @brief Toggle IDNA UseSTD3ASCIIRules flag help description.  */
+  int tld_flag;        /**< @brief Check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode (default=on).  */
+  const char *tld_help; /**< @brief Check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode help description.  */
+  int no_tld_flag;     /**< @brief Don't check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode (default=off).  */
+  const char *no_tld_help; /**< @brief Don't check string for TLD specific rules\nOnly for --idna-to-ascii and --idna-to-unicode help description.  */
+  const char *nfkc_help; /**< @brief Normalize string according to Unicode v3.2 NFKC help description.  */
+  const char *hidden_nfkc_help; /**< @brief Hidden parameter for backwards compatibility help description.  */
+  char * profile_arg;  /**< @brief Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'..  */
+  char * profile_orig; /**< @brief Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'. original value given at command line.  */
+  const char *profile_help; /**< @brief Use specified stringprep profile instead\nValid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'. help description.  */
+  int debug_flag;      /**< @brief Print debugging information (default=off).  */
+  const char *debug_help; /**< @brief Print debugging information help description.  */
+  int quiet_flag;      /**< @brief Silent operation (default=off).  */
+  const char *quiet_help; /**< @brief Silent operation help description.  */
+  
+  unsigned int help_given ;    /**< @brief Whether help was given.  */
+  unsigned int full_help_given ;       /**< @brief Whether full-help was given.  */
+  unsigned int version_given ; /**< @brief Whether version was given.  */
+  unsigned int stringprep_given ;      /**< @brief Whether stringprep was given.  */
+  unsigned int punycode_decode_given ; /**< @brief Whether punycode-decode was given.  */
+  unsigned int punycode_encode_given ; /**< @brief Whether punycode-encode was given.  */
+  unsigned int idna_to_ascii_given ;   /**< @brief Whether idna-to-ascii was given.  */
+  unsigned int idna_to_unicode_given ; /**< @brief Whether idna-to-unicode was given.  */
+  unsigned int allow_unassigned_given ;        /**< @brief Whether allow-unassigned was given.  */
+  unsigned int usestd3asciirules_given ;       /**< @brief Whether usestd3asciirules was given.  */
+  unsigned int tld_given ;     /**< @brief Whether tld was given.  */
+  unsigned int no_tld_given ;  /**< @brief Whether no-tld was given.  */
+  unsigned int nfkc_given ;    /**< @brief Whether nfkc was given.  */
+  unsigned int hidden_nfkc_given ;     /**< @brief Whether hidden-nfkc was given.  */
+  unsigned int profile_given ; /**< @brief Whether profile was given.  */
+  unsigned int debug_given ;   /**< @brief Whether debug was given.  */
+  unsigned int quiet_given ;   /**< @brief Whether quiet was given.  */
+
+  char **inputs ; /**< @brief unamed options (options without names) */
+  unsigned inputs_num ; /**< @brief unamed options number */
+} ;
+
+/** @brief The additional parameters to pass to parser functions */
+struct cmdline_parser_params
+{
+  int override; /**< @brief whether to override possibly already present options (default 0) */
+  int initialize; /**< @brief whether to initialize the option structure gengetopt_args_info (default 1) */
+  int check_required; /**< @brief whether to check that all required options were provided (default 1) */
+  int check_ambiguity; /**< @brief whether to check for options already specified in the option structure gengetopt_args_info (default 0) */
+  int print_errors; /**< @brief whether getopt_long should print an error message for a bad option (default 1) */
+} ;
+
+/** @brief the purpose string of the program */
+extern const char *gengetopt_args_info_purpose;
+/** @brief the usage string of the program */
+extern const char *gengetopt_args_info_usage;
+/** @brief all the lines making the help output */
+extern const char *gengetopt_args_info_help[];
+/** @brief all the lines making the full help output (including hidden options) */
+extern const char *gengetopt_args_info_full_help[];
+
+/**
+ * The command line parser
+ * @param argc the number of command line options
+ * @param argv the command line options
+ * @param args_info the structure where option information will be stored
+ * @return 0 if everything went fine, NON 0 if an error took place
+ */
+int cmdline_parser (int argc, char * const *argv,
+  struct gengetopt_args_info *args_info);
+
+/**
+ * The command line parser (version with additional parameters - deprecated)
+ * @param argc the number of command line options
+ * @param argv the command line options
+ * @param args_info the structure where option information will be stored
+ * @param override whether to override possibly already present options
+ * @param initialize whether to initialize the option structure my_args_info
+ * @param check_required whether to check that all required options were provided
+ * @return 0 if everything went fine, NON 0 if an error took place
+ * @deprecated use cmdline_parser_ext() instead
+ */
+int cmdline_parser2 (int argc, char * const *argv,
+  struct gengetopt_args_info *args_info,
+  int override, int initialize, int check_required);
+
+/**
+ * The command line parser (version with additional parameters)
+ * @param argc the number of command line options
+ * @param argv the command line options
+ * @param args_info the structure where option information will be stored
+ * @param params additional parameters for the parser
+ * @return 0 if everything went fine, NON 0 if an error took place
+ */
+int cmdline_parser_ext (int argc, char * const *argv,
+  struct gengetopt_args_info *args_info,
+  struct cmdline_parser_params *params);
+
+/**
+ * Save the contents of the option struct into an already open FILE stream.
+ * @param outfile the stream where to dump options
+ * @param args_info the option struct to dump
+ * @return 0 if everything went fine, NON 0 if an error took place
+ */
+int cmdline_parser_dump(FILE *outfile,
+  struct gengetopt_args_info *args_info);
+
+/**
+ * Save the contents of the option struct into a (text) file.
+ * This file can be read by the config file parser (if generated by gengetopt)
+ * @param filename the file where to save
+ * @param args_info the option struct to save
+ * @return 0 if everything went fine, NON 0 if an error took place
+ */
+int cmdline_parser_file_save(const char *filename,
+  struct gengetopt_args_info *args_info);
+
+/**
+ * Print the help
+ */
+void cmdline_parser_print_help(void);
+/**
+ * Print the full help (including hidden options)
+ */
+void cmdline_parser_print_full_help(void);
+/**
+ * Print the version
+ */
+void cmdline_parser_print_version(void);
+
+/**
+ * Initializes all the fields a cmdline_parser_params structure 
+ * to their default values
+ * @param params the structure to initialize
+ */
+void cmdline_parser_params_init(struct cmdline_parser_params *params);
+
+/**
+ * Allocates dynamically a cmdline_parser_params structure and initializes
+ * all its fields to their default values
+ * @return the created and initialized cmdline_parser_params structure
+ */
+struct cmdline_parser_params *cmdline_parser_params_create(void);
+
+/**
+ * Initializes the passed gengetopt_args_info structure's fields
+ * (also set default values for options that have a default)
+ * @param args_info the structure to initialize
+ */
+void cmdline_parser_init (struct gengetopt_args_info *args_info);
+/**
+ * Deallocates the string fields of the gengetopt_args_info structure
+ * (but does not deallocate the structure itself)
+ * @param args_info the structure to deallocate
+ */
+void cmdline_parser_free (struct gengetopt_args_info *args_info);
+
+/**
+ * Checks that all the required options were specified
+ * @param args_info the structure to check
+ * @param prog_name the name of the program that will be used to print
+ *   possible errors
+ * @return
+ */
+int cmdline_parser_required (struct gengetopt_args_info *args_info,
+  const char *prog_name);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* IDN_CMD_H */
diff --git a/src/idna.el b/src/idna.el
new file mode 100644 (file)
index 0000000..96d1597
--- /dev/null
@@ -0,0 +1,192 @@
+;;; idna.el --- Internationalizing Domain Names in Applications.
+
+;; Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+;; Keywords: idna, idn, domain name, internationalization
+
+;; This file is part of GNU Libidn.
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; A simple wrapper around the command line "idn" utility in GNU
+;; Libidn to make IDNA ToASCII and ToUnicode operations available in
+;; Emacs.
+
+;; Example:
+;;
+;; (idna-to-ascii "räksmörgås.gnu.org")
+;; => "xn--rksmrgs-5wao1o.gnu.org"
+;;
+;; (idna-to-ascii "www.gnu.org")
+;; => "www.gnu.org"
+;;
+;; (idna-to-unicode "xn--rksmrgs-5wao1o.gnu.org")
+;; => "räksmörgås.gnu.org"
+;;
+;; (idna-to-unicode "www.gnu.org")
+;; => "www.gnu.org"
+
+;; Todo: Support AllowUnassigned and UseSTD3ASCIIRules somehow?
+
+;; This package is useless unless your emacs has at least partial
+;; support for the UTF-8 coding system.
+
+;; Report bugs to bug-libidn@gnu.org.
+
+;;; Code:
+
+(defgroup idna nil
+  "Internationalizing Domain Names in Applications.")
+
+(defcustom idna-program "idn"
+  "Name of the GNU Libidn \"idn\" application."
+  :type 'string
+  :group 'idna)
+
+(defcustom idna-environment '("CHARSET=UTF-8")
+  "List of environment variable definitions prepended to `process-environment'."
+  :type '(repeat string)
+  :group 'idna)
+
+(defcustom idna-to-ascii-parameters '("--quiet"
+                                     "--idna-to-ascii"
+                                     "--usestd3asciirules")
+  "Parameters passed to `idna-program' to invoke IDNA ToASCII mode."
+  :type '(repeat string)
+  :group 'idna)
+
+(defcustom idna-to-unicode-parameters '("--quiet"
+                                       "--idna-to-unicode"
+                                       "--usestd3asciirules")
+  "Parameters passed `idna-program' to invoke IDNA ToUnicode mode."
+  :type '(repeat string)
+  :group 'idna)
+
+;; Internal process handling:
+
+(defvar idna-to-ascii-process nil
+  "Internal variable holding process for ToASCII.")
+(defvar idna-to-ascii-response nil
+  "Internal variable holding response data received from ToASCII process.")
+
+(defun idna-to-ascii-response-clear ()
+  (setq idna-to-ascii-response nil))
+
+(defun idna-to-ascii-response ()
+  (while (and (eq (process-status idna-to-ascii-process) 'run)
+             (null idna-to-ascii-response))
+    (accept-process-output idna-to-ascii-process 1))
+  idna-to-ascii-response)
+
+(defun idna-to-ascii-filter (process string)
+  (setq idna-to-ascii-response (concat idna-to-ascii-response string)))
+
+(defun idna-to-ascii-process ()
+  (if (and idna-to-ascii-process
+          (eq (process-status idna-to-ascii-process) 'run))
+      idna-to-ascii-process
+    (if idna-to-ascii-process
+       (condition-case ()
+           (kill-process idna-to-ascii-process)
+         (error)))
+    (when (setq idna-to-ascii-process
+               (let ((process-environment (append idna-environment
+                                                  process-environment)))
+                 (apply 'start-process "idna" nil idna-program
+                        idna-to-ascii-parameters)))
+      (set-process-filter idna-to-ascii-process 'idna-to-ascii-filter)
+      (set-process-coding-system idna-to-ascii-process 'utf-8 'utf-8)
+      (process-kill-without-query idna-to-ascii-process))
+    idna-to-ascii-process))
+
+(defvar idna-to-unicode-process nil
+  "Internal variable holding process for ToASCII.")
+(defvar idna-to-unicode-response nil
+  "Internal variable holding response data received from ToASCII process.")
+
+(defun idna-to-unicode-response-clear ()
+  (setq idna-to-unicode-response nil))
+
+(defun idna-to-unicode-response ()
+  (while (and (eq (process-status idna-to-unicode-process) 'run)
+             (null idna-to-unicode-response))
+    (accept-process-output idna-to-unicode-process 1))
+  idna-to-unicode-response)
+
+(defun idna-to-unicode-filter (process string)
+  (setq idna-to-unicode-response (concat idna-to-unicode-response string)))
+
+(defun idna-to-unicode-process ()
+  (if (and idna-to-unicode-process
+          (eq (process-status idna-to-unicode-process) 'run))
+      idna-to-unicode-process
+    (if idna-to-unicode-process
+       (condition-case ()
+           (kill-process idna-to-unicode-process)
+         (error)))
+    (when (setq idna-to-unicode-process
+               (let ((process-environment (append idna-environment
+                                                  process-environment)))
+                 (apply 'start-process "idna" nil idna-program
+                        idna-to-unicode-parameters)))
+      (set-process-filter idna-to-unicode-process 'idna-to-unicode-filter)
+      (set-process-coding-system idna-to-unicode-process 'utf-8 'utf-8)
+      (process-kill-without-query idna-to-unicode-process))
+    idna-to-unicode-process))
+
+;; IDNA Elisp API:
+
+(defun idna-to-ascii (str)
+  "Returns an ASCII Compatible Encoding (ACE) of STR.
+It is computed by the IDNA ToASCII operation, after converting the
+input to UTF-8."
+  (let ((proc (idna-to-ascii-process))
+       string)
+    (if (null proc)
+       (error "Cannot start idn application (to-ascii)")
+      (idna-to-ascii-response-clear)
+      (process-send-string proc (concat str "\n"))
+      (setq string (idna-to-ascii-response))
+      (if (and string (string= (substring string (1- (length string))) "\n"))
+         (substring string 0 (1- (length string)))
+       string))))
+
+(defun idna-to-unicode (str)
+  "Returns a possibly multibyte string after decoding STR.
+It is computed by the IDNA ToUnicode operation."
+  (let ((proc (idna-to-unicode-process))
+       string)
+    (if (null proc)
+       (error "Cannot start idn application (to-unicode)")
+      (idna-to-unicode-response-clear)
+      (process-send-string proc (concat str "\n"))
+      (setq string (idna-to-unicode-response))
+      (if (and string (string= (substring string (1- (length string))) "\n"))
+         (substring string 0 (1- (length string)))
+       string))))
+
+(defun idna-shutdown ()
+  "Kill the IDNA related processes."
+  (interactive)
+  (if (and idna-to-ascii-process
+          (eq (process-status idna-to-ascii-process) 'run))
+      (kill-process idna-to-ascii-process))
+  (if (and idna-to-unicode-process
+          (eq (process-status idna-to-unicode-process) 'run))
+      (kill-process idna-to-unicode-process)))
+
+(provide 'idna)
+
+;;; idna.el ends here
diff --git a/src/punycode.el b/src/punycode.el
new file mode 100644 (file)
index 0000000..d68becc
--- /dev/null
@@ -0,0 +1,182 @@
+;;; punycode.el --- An ASCII compatible Unicode encoding format.
+
+;; Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+;; Keywords: punycode, idna, idn, unicode, encoding
+
+;; This file is part of GNU Libidn.
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; A simple wrapper around the command line "idn" utility in GNU
+;; Libidn to make punycode operations available in Emacs.
+
+;; Example:
+;;
+;; (punycode-encode "räksmörgås")
+;; => "rksmrgs-5wao1o"
+;;
+;; (punycode-encode "foo")
+;; => "foo-"
+;;
+;; (punycode-decode "rksmrgs-5wao1o")
+;; => "räksmörgås"
+;;
+;; (punycode-decode "foo-")
+;; => "foo"
+
+;; This package is useless unless your emacs has at least partial
+;; support for the UTF-8 coding system.
+
+;; Report bugs to bug-libidn@gnu.org.
+
+;;; Code:
+
+(defgroup punycode nil
+  "Punycode: An ASCII compatible Unicode encoding format.")
+
+(defcustom punycode-program "idn"
+  "Name of the GNU Libidn \"idn\" application."
+  :type 'string
+  :group 'punycode)
+
+(defcustom punycode-environment '("CHARSET=UTF-8")
+  "List of environment variable definitions prepended to `process-environment'."
+  :type '(repeat string)
+  :group 'punycode)
+
+(defcustom punycode-encode-parameters '("--quiet" "--punycode-encode")
+  "Parameters passed to `punycode-program' to invoke punycode encoding mode."
+  :type '(repeat string)
+  :group 'punycode)
+
+(defcustom punycode-decode-parameters '("--quiet" "--punycode-decode")
+  "Parameters passed to `punycode-program' to invoke punycode decoding mode."
+  :type '(repeat string)
+  :group 'punycode)
+
+;; Internal process handling:
+
+(defvar punycode-encode-process nil
+  "Internal variable holding process for punycode encoding.")
+(defvar punycode-encode-response nil
+  "Internal variable holding response data received from punycode process.")
+
+(defun punycode-encode-response-clear ()
+  (setq punycode-encode-response nil))
+
+(defun punycode-encode-response ()
+  (while (and (eq (process-status punycode-encode-process) 'run)
+             (null punycode-encode-response))
+    (accept-process-output punycode-encode-process 1))
+  punycode-encode-response)
+
+(defun punycode-encode-filter (process string)
+  (setq punycode-encode-response (concat punycode-encode-response string)))
+
+(defun punycode-encode-process ()
+  (if (and punycode-encode-process
+          (eq (process-status punycode-encode-process) 'run))
+      punycode-encode-process
+    (if punycode-encode-process
+       (condition-case ()
+           (kill-process punycode-encode-process)
+         (error)))
+    (when (setq punycode-encode-process
+               (let ((process-environment (append punycode-environment
+                                                  process-environment)))
+                 (apply 'start-process "punycode" nil punycode-program
+                        punycode-encode-parameters)))
+      (set-process-filter punycode-encode-process 'punycode-encode-filter)
+      (set-process-coding-system punycode-encode-process 'utf-8 'utf-8)
+      (process-kill-without-query punycode-encode-process))
+    punycode-encode-process))
+
+(defvar punycode-decode-process nil
+  "Internal variable holding process for punycode encoding.")
+(defvar punycode-decode-response nil
+  "Internal variable holding response data received from punycode process.")
+
+(defun punycode-decode-response-clear ()
+  (setq punycode-decode-response nil))
+
+(defun punycode-decode-response ()
+  (while (and (eq (process-status punycode-decode-process) 'run)
+             (null punycode-decode-response))
+    (accept-process-output punycode-decode-process 1))
+  punycode-decode-response)
+
+(defun punycode-decode-filter (process string)
+  (setq punycode-decode-response (concat punycode-decode-response string)))
+
+(defun punycode-decode-process ()
+  (if (and punycode-decode-process
+          (eq (process-status punycode-decode-process) 'run))
+      punycode-decode-process
+    (if punycode-decode-process
+       (condition-case ()
+           (kill-process punycode-decode-process)
+         (error)))
+    (when (setq punycode-decode-process
+               (let ((process-environment (append punycode-environment
+                                                  process-environment)))
+                 (apply 'start-process "punycode" nil punycode-program
+                        punycode-decode-parameters)))
+      (set-process-filter punycode-decode-process 'punycode-decode-filter)
+      (set-process-coding-system punycode-decode-process 'utf-8 'utf-8)
+      (process-kill-without-query punycode-decode-process))
+    punycode-decode-process))
+
+;; Punycode Elisp API:
+
+(defun punycode-encode (str)
+  "Returns a Punycode encoding of STR."
+  (let ((proc (punycode-encode-process))
+       string)
+    (if (null proc)
+       (error "Cannot start idn application")
+      (punycode-encode-response-clear)
+      (process-send-string proc (concat str "\n"))
+      (setq string (punycode-encode-response))
+      (if (and string (string= (substring string (1- (length string))) "\n"))
+         (substring string 0 (1- (length string)))
+       string))))
+
+(defun punycode-decode (str)
+  "Returns a possibly multibyte string which is the punycode decoding of STR."
+  (let ((proc (punycode-decode-process))
+       string)
+    (if (null proc)
+       (error "Cannot start idn application")
+      (punycode-decode-response-clear)
+      (process-send-string proc (concat str "\n"))
+      (setq string (punycode-decode-response))
+      (if (and string (string= (substring string (1- (length string))) "\n"))
+         (substring string 0 (1- (length string)))
+       string))))
+
+(defun punycode-shutdown ()
+  "Kill the punycode related process."
+  (interactive)
+  (if (and punycode-decode-process
+          (eq (process-status punycode-decode-process) 'run))
+      (kill-process punycode-decode-process))
+  (if (and punycode-encode-process
+          (eq (process-status punycode-encode-process) 'run))
+      (kill-process punycode-encode-process)))
+
+(provide 'punycode)
+
+;;; punycode.el ends here
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644 (file)
index 0000000..345034f
--- /dev/null
@@ -0,0 +1,38 @@
+## Process this file with automake to produce Makefile.in
+# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib -I$(top_srcdir)/gl -I../gl
+AM_LDFLAGS = -no-install
+
+LDADD = ../lib/libidn.la libutils.la
+
+noinst_LTLIBRARIES = libutils.la
+libutils_la_SOURCES = utils.h utils.c
+
+ctests = tst_stringprep$(EXEEXT) tst_punycode$(EXEEXT)                 \
+       tst_idna$(EXEEXT) tst_idna2$(EXEEXT) tst_nfkc$(EXEEXT)          \
+       tst_pr29$(EXEEXT) tst_strerror$(EXEEXT) tst_toutf8$(EXEEXT)
+if TLD
+ctests += tst_tld$(EXEEXT)
+endif
+
+TESTS = $(ctests)      
+check_PROGRAMS = $(ctests)
+
+TESTS_ENVIRONMENT = $(VALGRIND)
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644 (file)
index 0000000..a5a8610
--- /dev/null
@@ -0,0 +1,975 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009 Simon Josefsson
+#
+# This file is part of GNU Libidn.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@TLD_TRUE@am__append_1 = tst_tld$(EXEEXT)
+subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/lib/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_h.m4 \
+       $(top_srcdir)/lib/gl/m4/iconv_open.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-output-def.m4 \
+       $(top_srcdir)/lib/gl/m4/ld-version-script.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-fr.m4 \
+       $(top_srcdir)/lib/gl/m4/locale-tr.m4 \
+       $(top_srcdir)/lib/gl/m4/multiarch.m4 \
+       $(top_srcdir)/lib/gl/m4/stdbool.m4 \
+       $(top_srcdir)/lib/gl/m4/stdint.m4 \
+       $(top_srcdir)/lib/gl/m4/strverscmp.m4 \
+       $(top_srcdir)/lib/gl/m4/wchar.m4 \
+       $(top_srcdir)/gl/m4/00gnulib.m4 \
+       $(top_srcdir)/gl/m4/autobuild.m4 $(top_srcdir)/gl/m4/csharp.m4 \
+       $(top_srcdir)/gl/m4/csharpcomp.m4 \
+       $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \
+       $(top_srcdir)/gl/m4/extensions.m4 \
+       $(top_srcdir)/gl/m4/getopt.m4 \
+       $(top_srcdir)/gl/m4/gnulib-common.m4 \
+       $(top_srcdir)/gl/m4/gnulib-comp.m4 \
+       $(top_srcdir)/gl/m4/include_next.m4 \
+       $(top_srcdir)/gl/m4/manywarnings.m4 \
+       $(top_srcdir)/gl/m4/pmccabe2html.m4 \
+       $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/strerror.m4 \
+       $(top_srcdir)/gl/m4/string_h.m4 \
+       $(top_srcdir)/gl/m4/unistd_h.m4 \
+       $(top_srcdir)/gl/m4/version-etc.m4 \
+       $(top_srcdir)/gl/m4/warnings.m4 \
+       $(top_srcdir)/m4/ac_prog_jar.m4 $(top_srcdir)/m4/codeset.m4 \
+       $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
+       $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
+       $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+       $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
+       $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+       $(top_srcdir)/m4/progtest.m4 \
+       $(top_srcdir)/m4/update-header-version.m4 \
+       $(top_srcdir)/m4/valgrind.m4 $(top_srcdir)/m4/visibility.m4 \
+       $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libutils_la_LIBADD =
+am_libutils_la_OBJECTS = utils.lo
+libutils_la_OBJECTS = $(am_libutils_la_OBJECTS)
+tst_idna_SOURCES = tst_idna.c
+tst_idna_OBJECTS = tst_idna.$(OBJEXT)
+tst_idna_LDADD = $(LDADD)
+tst_idna_DEPENDENCIES = ../lib/libidn.la libutils.la
+tst_idna2_SOURCES = tst_idna2.c
+tst_idna2_OBJECTS = tst_idna2.$(OBJEXT)
+tst_idna2_LDADD = $(LDADD)
+tst_idna2_DEPENDENCIES = ../lib/libidn.la libutils.la
+tst_nfkc_SOURCES = tst_nfkc.c
+tst_nfkc_OBJECTS = tst_nfkc.$(OBJEXT)
+tst_nfkc_LDADD = $(LDADD)
+tst_nfkc_DEPENDENCIES = ../lib/libidn.la libutils.la
+tst_pr29_SOURCES = tst_pr29.c
+tst_pr29_OBJECTS = tst_pr29.$(OBJEXT)
+tst_pr29_LDADD = $(LDADD)
+tst_pr29_DEPENDENCIES = ../lib/libidn.la libutils.la
+tst_punycode_SOURCES = tst_punycode.c
+tst_punycode_OBJECTS = tst_punycode.$(OBJEXT)
+tst_punycode_LDADD = $(LDADD)
+tst_punycode_DEPENDENCIES = ../lib/libidn.la libutils.la
+tst_strerror_SOURCES = tst_strerror.c
+tst_strerror_OBJECTS = tst_strerror.$(OBJEXT)
+tst_strerror_LDADD = $(LDADD)
+tst_strerror_DEPENDENCIES = ../lib/libidn.la libutils.la
+tst_stringprep_SOURCES = tst_stringprep.c
+tst_stringprep_OBJECTS = tst_stringprep.$(OBJEXT)
+tst_stringprep_LDADD = $(LDADD)
+tst_stringprep_DEPENDENCIES = ../lib/libidn.la libutils.la
+tst_tld_SOURCES = tst_tld.c
+tst_tld_OBJECTS = tst_tld.$(OBJEXT)
+tst_tld_LDADD = $(LDADD)
+tst_tld_DEPENDENCIES = ../lib/libidn.la libutils.la
+tst_toutf8_SOURCES = tst_toutf8.c
+tst_toutf8_OBJECTS = tst_toutf8.$(OBJEXT)
+tst_toutf8_LDADD = $(LDADD)
+tst_toutf8_DEPENDENCIES = ../lib/libidn.la libutils.la
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
+SOURCES = $(libutils_la_SOURCES) tst_idna.c tst_idna2.c tst_nfkc.c \
+       tst_pr29.c tst_punycode.c tst_strerror.c tst_stringprep.c \
+       tst_tld.c tst_toutf8.c
+DIST_SOURCES = $(libutils_la_SOURCES) tst_idna.c tst_idna2.c \
+       tst_nfkc.c tst_pr29.c tst_punycode.c tst_strerror.c \
+       tst_stringprep.c tst_tld.c tst_toutf8.c
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSHARPCOMPFLAGS = @CSHARPCOMPFLAGS@
+CSHARP_CHOICE = @CSHARP_CHOICE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DLL_VERSION = @DLL_VERSION@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMACS = @EMACS@
+EMACSLOADPATH = @EMACSLOADPATH@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GETOPT_H = @GETOPT_H@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GJDOC = @GJDOC@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MBRLEN = @GNULIB_MBRLEN@
+GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSINIT = @GNULIB_MBSINIT@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WRITE = @GNULIB_WRITE@
+GREP = @GREP@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_CSC = @HAVE_CSC@
+HAVE_CSCC = @HAVE_CSCC@
+HAVE_CSCC_IN_PATH = @HAVE_CSCC_IN_PATH@
+HAVE_CSC_IN_PATH = @HAVE_CSC_IN_PATH@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR = @HAVE_DECL_STRERROR@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
+HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETUSERSHELL = @HAVE_GETUSERSHELL@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MBRLEN = @HAVE_MBRLEN@
+HAVE_MBRTOWC = @HAVE_MBRTOWC@
+HAVE_MBSINIT = @HAVE_MBSINIT@
+HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
+HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
+HAVE_MCS = @HAVE_MCS@
+HAVE_MCS_IN_PATH = @HAVE_MCS_IN_PATH@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_VISIBILITY = @HAVE_VISIBILITY@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+HTML_DIR = @HTML_DIR@
+ICONV_H = @ICONV_H@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALE_FR = @LOCALE_FR@
+LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
+NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_ICONV_H = @NEXT_ICONV_H@
+NEXT_STDARG_H = @NEXT_STDARG_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+NEXT_WCHAR_H = @NEXT_WCHAR_H@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PMCCABE = @PMCCABE@
+POSUB = @POSUB@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_BTOWC = @REPLACE_BTOWC@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_ICONV = @REPLACE_ICONV@
+REPLACE_ICONV_OPEN = @REPLACE_ICONV_OPEN@
+REPLACE_ICONV_UTF = @REPLACE_ICONV_UTF@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MBRLEN = @REPLACE_MBRLEN@
+REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
+REPLACE_MBSINIT = @REPLACE_MBSINIT@
+REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
+REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
+REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
+REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
+REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCTOB = @REPLACE_WCTOB@
+REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDARG_H = @STDARG_H@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+USE_NLS = @USE_NLS@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+WSTACK_CFLAGS = @WSTACK_CFLAGS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_aux_dir = @abs_aux_dir@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lgl_LIBOBJS = @lgl_LIBOBJS@
+lgl_LTLIBOBJS = @lgl_LTLIBOBJS@
+lgltests_LIBOBJS = @lgltests_LIBOBJS@
+lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@
+libdir = @libdir@
+libexecdir = @libexecdir@
+lispdir = @lispdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib -I$(top_srcdir)/gl -I../gl
+AM_LDFLAGS = -no-install
+LDADD = ../lib/libidn.la libutils.la
+noinst_LTLIBRARIES = libutils.la
+libutils_la_SOURCES = utils.h utils.c
+ctests = tst_stringprep$(EXEEXT) tst_punycode$(EXEEXT) \
+       tst_idna$(EXEEXT) tst_idna2$(EXEEXT) tst_nfkc$(EXEEXT) \
+       tst_pr29$(EXEEXT) tst_strerror$(EXEEXT) tst_toutf8$(EXEEXT) \
+       $(am__append_1)
+TESTS = $(ctests)      
+check_PROGRAMS = $(ctests)
+TESTS_ENVIRONMENT = $(VALGRIND)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+libutils.la: $(libutils_la_OBJECTS) $(libutils_la_DEPENDENCIES) 
+       $(LINK)  $(libutils_la_OBJECTS) $(libutils_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+tst_idna$(EXEEXT): $(tst_idna_OBJECTS) $(tst_idna_DEPENDENCIES) 
+       @rm -f tst_idna$(EXEEXT)
+       $(LINK) $(tst_idna_OBJECTS) $(tst_idna_LDADD) $(LIBS)
+tst_idna2$(EXEEXT): $(tst_idna2_OBJECTS) $(tst_idna2_DEPENDENCIES) 
+       @rm -f tst_idna2$(EXEEXT)
+       $(LINK) $(tst_idna2_OBJECTS) $(tst_idna2_LDADD) $(LIBS)
+tst_nfkc$(EXEEXT): $(tst_nfkc_OBJECTS) $(tst_nfkc_DEPENDENCIES) 
+       @rm -f tst_nfkc$(EXEEXT)
+       $(LINK) $(tst_nfkc_OBJECTS) $(tst_nfkc_LDADD) $(LIBS)
+tst_pr29$(EXEEXT): $(tst_pr29_OBJECTS) $(tst_pr29_DEPENDENCIES) 
+       @rm -f tst_pr29$(EXEEXT)
+       $(LINK) $(tst_pr29_OBJECTS) $(tst_pr29_LDADD) $(LIBS)
+tst_punycode$(EXEEXT): $(tst_punycode_OBJECTS) $(tst_punycode_DEPENDENCIES) 
+       @rm -f tst_punycode$(EXEEXT)
+       $(LINK) $(tst_punycode_OBJECTS) $(tst_punycode_LDADD) $(LIBS)
+tst_strerror$(EXEEXT): $(tst_strerror_OBJECTS) $(tst_strerror_DEPENDENCIES) 
+       @rm -f tst_strerror$(EXEEXT)
+       $(LINK) $(tst_strerror_OBJECTS) $(tst_strerror_LDADD) $(LIBS)
+tst_stringprep$(EXEEXT): $(tst_stringprep_OBJECTS) $(tst_stringprep_DEPENDENCIES) 
+       @rm -f tst_stringprep$(EXEEXT)
+       $(LINK) $(tst_stringprep_OBJECTS) $(tst_stringprep_LDADD) $(LIBS)
+tst_tld$(EXEEXT): $(tst_tld_OBJECTS) $(tst_tld_DEPENDENCIES) 
+       @rm -f tst_tld$(EXEEXT)
+       $(LINK) $(tst_tld_OBJECTS) $(tst_tld_LDADD) $(LIBS)
+tst_toutf8$(EXEEXT): $(tst_toutf8_OBJECTS) $(tst_toutf8_DEPENDENCIES) 
+       @rm -f tst_toutf8$(EXEEXT)
+       $(LINK) $(tst_toutf8_OBJECTS) $(tst_toutf8_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_idna.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_idna2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_nfkc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_pr29.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_punycode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_strerror.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_stringprep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_tld.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst_toutf8.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list=' $(TESTS) '; \
+       $(am__tty_colors); \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=XPASS; \
+             ;; \
+             *) \
+               col=$$grn; res=PASS; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xfail=`expr $$xfail + 1`; \
+               col=$$lgn; res=XFAIL; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=FAIL; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             col=$$blu; res=SKIP; \
+           fi; \
+           echo "$${col}$$res$${std}: $$tst"; \
+         done; \
+         if test "$$all" -eq 1; then \
+           tests="test"; \
+           All=""; \
+         else \
+           tests="tests"; \
+           All="All "; \
+         fi; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="$$All$$all $$tests passed"; \
+           else \
+             if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+             banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all $$tests failed"; \
+           else \
+             if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+             banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           if test "$$skip" -eq 1; then \
+             skipped="($$skip test was not run)"; \
+           else \
+             skipped="($$skip tests were not run)"; \
+           fi; \
+           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         if test "$$failed" -eq 0; then \
+           echo "$$grn$$dashes"; \
+         else \
+           echo "$$red$$dashes"; \
+         fi; \
+         echo "$$banner"; \
+         test -z "$$skipped" || echo "$$skipped"; \
+         test -z "$$report" || echo "$$report"; \
+         echo "$$dashes$$std"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+       clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+       clean-checkPROGRAMS clean-generic clean-libtool \
+       clean-noinstLTLIBRARIES ctags distclean distclean-compile \
+       distclean-generic distclean-libtool distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/tst_idna.c b/tests/tst_idna.c
new file mode 100644 (file)
index 0000000..a4c43b2
--- /dev/null
@@ -0,0 +1,326 @@
+/* tst_idna.c --- Self tests for idna_to_ascii().
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include <stringprep.h>
+#include <idna.h>
+#include <idn-free.h>
+
+#include "utils.h"
+
+struct idna
+{
+  const char *name;
+  size_t inlen;
+  uint32_t in[100];
+  const char *out;
+  int flags;
+  int toasciirc;
+  int tounicoderc;
+};
+
+static const struct idna idna[] = {
+  {
+   "Arabic (Egyptian)", 17,
+   {
+    0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643,
+    0x0644, 0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A,
+    0x061F},
+   IDNA_ACE_PREFIX "egbpdaj6bu4bxfgehfvwxn", 0, IDNA_SUCCESS, IDNA_SUCCESS},
+  {
+   "Chinese (simplified)", 9,
+   {
+    0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D, 0x6587},
+   IDNA_ACE_PREFIX "ihqwcrb4cv8a8dqg056pqjye", 0, IDNA_SUCCESS, IDNA_SUCCESS},
+  {
+   "Chinese (traditional)", 9,
+   {
+    0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D, 0x6587},
+   IDNA_ACE_PREFIX "ihqwctvzc91f659drss3x8bo0yb", 0, IDNA_SUCCESS,
+   IDNA_SUCCESS},
+  {
+   "Czech: Pro[CCARON]prost[ECARON]nemluv[IACUTE][CCARON]esky", 22,
+   {
+    0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073,
+    0x0074, 0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076,
+    0x00ED, 0x010D, 0x0065, 0x0073, 0x006B, 0x0079},
+   IDNA_ACE_PREFIX "Proprostnemluvesky-uyb24dma41a", 0, IDNA_SUCCESS,
+   IDNA_SUCCESS},
+  {
+   "Hebrew", 22,
+   {
+    0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5,
+    0x05D8, 0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9,
+    0x05DD, 0x05E2, 0x05D1, 0x05E8, 0x05D9, 0x05EA},
+   IDNA_ACE_PREFIX "4dbcagdahymbxekheh6e0a7fei0b", 0, IDNA_SUCCESS,
+   IDNA_SUCCESS},
+  {
+   "Hindi (Devanagari)", 30,
+   {
+    0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928,
+    0x094D, 0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902,
+    0x0928, 0x0939, 0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938,
+    0x0915, 0x0924, 0x0947, 0x0939, 0x0948, 0x0902},
+   IDNA_ACE_PREFIX "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd", 0,
+   IDNA_SUCCESS},
+  {
+   "Japanese (kanji and hiragana)", 18,
+   {
+    0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E,
+    0x3092, 0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044,
+    0x306E, 0x304B},
+   IDNA_ACE_PREFIX "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa", 0, IDNA_SUCCESS},
+  {
+   "Korean (Hangul syllables)", 24,
+   {
+    0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4,
+    0xC774, 0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C,
+    0xB2E4, 0xBA74, 0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C},
+   IDNA_ACE_PREFIX "989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt"
+   "30a5jpsd879ccm6fea98c", 0, IDNA_PUNYCODE_ERROR, IDNA_PUNYCODE_ERROR},
+  /* too long output */
+  {
+   "Russian (Cyrillic)", 28,
+   {
+    0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435,
+    0x043E, 0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432,
+    0x043E, 0x0440, 0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443,
+    0x0441, 0x0441, 0x043A, 0x0438},
+   IDNA_ACE_PREFIX "b1abfaaepdrnnbgefbadotcwatmq2g4l", 0,
+   IDNA_SUCCESS, IDNA_SUCCESS},
+  {
+   "Spanish: Porqu[EACUTE]nopuedensimplementehablarenEspa[NTILDE]ol", 40,
+   {
+    0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F,
+    0x0070, 0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069,
+    0x006D, 0x0070, 0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074,
+    0x0065, 0x0068, 0x0061, 0x0062, 0x006C, 0x0061, 0x0072, 0x0065,
+    0x006E, 0x0045, 0x0073, 0x0070, 0x0061, 0x00F1, 0x006F, 0x006C},
+   IDNA_ACE_PREFIX "PorqunopuedensimplementehablarenEspaol-fmd56a", 0,
+   IDNA_SUCCESS},
+  {
+   "Vietnamese", 31,
+   {
+    0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD,
+    0x006B, 0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3,
+    0x0063, 0x0068, 0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069,
+    0x1EBF, 0x006E, 0x0067, 0x0056, 0x0069, 0x1EC7, 0x0074},
+   IDNA_ACE_PREFIX "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g", 0,
+   IDNA_SUCCESS},
+  {
+   "Japanese 3[NEN]B[GUMI][KINPACHI][SENSEI]", 8,
+   {
+    0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F},
+   IDNA_ACE_PREFIX "3B-ww4c5e180e575a65lsy2b", 0, IDNA_SUCCESS,
+   IDNA_SUCCESS},
+  {
+   "Japanese [AMURO][NAMIE]-with-SUPER-MONKEYS", 24,
+   {
+    0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069,
+    0x0074, 0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052,
+    0x002D, 0x004D, 0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053},
+   IDNA_ACE_PREFIX "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n", 0,
+   IDNA_SUCCESS},
+  {
+   "Japanese Hello-Another-Way-[SOREZORE][NO][BASHO]", 25,
+   {
+    0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E,
+    0x006F, 0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061,
+    0x0079, 0x002D, 0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834,
+    0x6240},
+   IDNA_ACE_PREFIX "Hello-Another-Way--fc4qua05auwb3674vfr0b", 0,
+   IDNA_SUCCESS},
+  {
+   "Japanese [HITOTSU][YANE][NO][SHITA]2", 8,
+   {
+    0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032},
+   IDNA_ACE_PREFIX "2-u9tlzr9756bt3uc0v", 0, IDNA_SUCCESS, IDNA_SUCCESS},
+  {
+   "Japanese Maji[DE]Koi[SURU]5[BYOU][MAE]", 13,
+   {
+    0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069,
+    0x3059, 0x308B, 0x0035, 0x79D2, 0x524D},
+   IDNA_ACE_PREFIX "MajiKoi5-783gue6qz075azm5e", 0, IDNA_SUCCESS,
+   IDNA_SUCCESS},
+  {
+   "Japanese [PAFII]de[RUNBA]", 9,
+   {
+    0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0},
+   IDNA_ACE_PREFIX "de-jg4avhby1noc0d", 0, IDNA_SUCCESS, IDNA_SUCCESS},
+  {
+   "Japanese [SONO][SUPIIDO][DE]", 7,
+   {
+    0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067},
+   IDNA_ACE_PREFIX "d9juau41awczczp", 0, IDNA_SUCCESS, IDNA_SUCCESS},
+  {
+   "Greek", 8,
+   {
+    0x03b5, 0x03bb, 0x03bb, 0x03b7, 0x03bd, 0x03b9, 0x03ba, 0x03ac},
+   IDNA_ACE_PREFIX "hxargifdar", 0, IDNA_SUCCESS, IDNA_SUCCESS},
+  {
+   "Maltese (Malti)", 10,
+   {
+    0x0062, 0x006f, 0x006e, 0x0121, 0x0075, 0x0073, 0x0061, 0x0127,
+    0x0127, 0x0061},
+   IDNA_ACE_PREFIX "bonusaa-5bb1da", 0, IDNA_SUCCESS, IDNA_SUCCESS},
+  {
+   "Russian (Cyrillic)", 28,
+   {
+    0x043f, 0x043e, 0x0447, 0x0435, 0x043c, 0x0443, 0x0436, 0x0435,
+    0x043e, 0x043d, 0x0438, 0x043d, 0x0435, 0x0433, 0x043e, 0x0432,
+    0x043e, 0x0440, 0x044f, 0x0442, 0x043f, 0x043e, 0x0440, 0x0443,
+    0x0441, 0x0441, 0x043a, 0x0438},
+   IDNA_ACE_PREFIX "b1abfaaepdrnnbgefbadotcwatmq2g4l", 0,
+   IDNA_SUCCESS, IDNA_SUCCESS},
+#if 0
+  {
+   "(S) -> $1.00 <-", 11,
+   {
+    0x002D, 0x003E, 0x0020, 0x0024, 0x0031, 0x002E, 0x0030, 0x0030,
+    0x0020, 0x003C, 0x002D},
+   IDNA_ACE_PREFIX "-> $1.00 <--", 0, IDNA_SUCCESS, IDNA_SUCCESS},
+#endif
+  {                            /* XXX depends on IDNA_ACE_PREFIX */
+   "ToASCII() with ACE prefix", 4 + 3,
+   {
+    'x', 'n', '-', '-', 'f', 'o', 0x3067},
+   IDNA_ACE_PREFIX "too long too long too long too long too long too "
+   "long too long too long too long too long ", 0,
+   IDNA_CONTAINS_ACE_PREFIX, IDNA_PUNYCODE_ERROR}
+};
+
+void
+doit (void)
+{
+  char label[100];
+  uint32_t *ucs4label = NULL;
+  uint32_t tmp[100];
+  size_t len, len2, i;
+  int rc;
+
+  for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++)
+    {
+      if (debug)
+       printf ("IDNA entry %d: %s\n", i, idna[i].name);
+
+      if (debug)
+       {
+         printf ("in:\n");
+         ucs4print (idna[i].in, idna[i].inlen);
+       }
+
+      rc = idna_to_ascii_4i (idna[i].in, idna[i].inlen, label, idna[i].flags);
+      if (rc != idna[i].toasciirc)
+       {
+         fail ("IDNA entry %d failed: %d\n", i, rc);
+         if (debug)
+           printf ("FATAL\n");
+         continue;
+       }
+
+      if (debug && rc == IDNA_SUCCESS)
+       {
+         printf ("computed out: %s\n", label);
+         printf ("expected out: %s\n", idna[i].out);
+       }
+      else if (debug)
+       printf ("returned %d expected %d\n", rc, idna[i].toasciirc);
+
+      if (rc == IDNA_SUCCESS)
+       {
+         if (strlen (idna[i].out) != strlen (label) ||
+             strcasecmp (idna[i].out, label) != 0)
+           {
+             fail ("IDNA entry %d failed\n", i);
+             if (debug)
+               printf ("ERROR\n");
+           }
+         else if (debug)
+           printf ("OK\n");
+       }
+      else if (debug)
+       printf ("OK\n");
+
+      if (ucs4label)
+       idn_free (ucs4label);
+
+      ucs4label = stringprep_utf8_to_ucs4 (idna[i].out, -1, &len);
+
+      if (debug)
+       {
+         printf ("in: %s (%d==%d)\n", idna[i].out, strlen (idna[i].out),
+                 len);
+         ucs4print (ucs4label, len);
+       }
+
+      len2 = sizeof (tmp) / sizeof (tmp[0]);
+      rc = idna_to_unicode_44i (ucs4label, len, tmp, &len2, idna[i].flags);
+      if (debug)
+       {
+         printf ("expected out (%d):\n",
+                 rc == IDNA_SUCCESS ? idna[i].inlen : len);
+         if (rc == IDNA_SUCCESS)
+           ucs4print (idna[i].in, idna[i].inlen);
+         else
+           ucs4print (ucs4label, len);
+
+         printf ("computed out (%d):\n", len2);
+         ucs4print (tmp, len2);
+       }
+
+      if (rc != idna[i].tounicoderc)
+       {
+         fail ("IDNA entry %d failed: %d\n", i, rc);
+         if (debug)
+           printf ("FATAL\n");
+         continue;
+       }
+
+      if ((rc == IDNA_SUCCESS && (len2 != idna[i].inlen ||
+                                 memcmp (idna[i].in, tmp, len2) != 0)) ||
+         (rc != IDNA_SUCCESS && (len2 != len ||
+                                 memcmp (ucs4label, tmp, len) != 0)))
+       {
+         if (debug)
+           {
+             if (rc == IDNA_SUCCESS)
+               printf ("len=%d len2=%d\n", len2, idna[i].inlen);
+             else
+               printf ("len=%d len2=%d\n", len, len2);
+           }
+         fail ("IDNA entry %d failed\n", i);
+         if (debug)
+           printf ("ERROR\n");
+       }
+      else if (debug)
+       printf ("OK\n\n");
+    }
+
+  if (ucs4label)
+    idn_free (ucs4label);
+}
diff --git a/tests/tst_idna2.c b/tests/tst_idna2.c
new file mode 100644 (file)
index 0000000..fc254d9
--- /dev/null
@@ -0,0 +1,522 @@
+/* tst_idna2.c --- Self tests for idna_to_ascii_8z().
+ * Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include <idna.h>
+
+#include "utils.h"
+
+struct idna
+{
+  const char *in;
+  const char *out;
+};
+
+static const struct idna idna[] = {
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc3\xad\x64\x6e", "example.xn--dn-mja"
+   /* 1-1-1 Has an IDN in just the TLD */
+   },
+  {"\xc3\xab\x78\x2e\xc3\xad\x64\x6e", "xn--x-ega.xn--dn-mja"
+   /* 1-1-2 Has an IDN in the TLD and SLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc3\xa5\xc3\xbe\xc3\xa7",
+   "example.xn--5cae2e"
+   /* 1-2-1 Latin-1 TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc4\x83\x62\xc4\x89",
+   "example.xn--b-rhat"
+   /* 1-2-2 Latin Extended A TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc8\xa7\xc6\x80\xc6\x88",
+   "example.xn--lhaq98b"
+   /* 1-2-3 Latin Extended B TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\xb8\x81\xe1\xb8\x83\xe1\xb8\x89",
+   "example.xn--2fges"
+   /* 1-2-4 Latin Extended Additional TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe4\xb8\xbf\xe4\xba\xba\xe5\xb0\xb8",
+   "example.xn--xiqplj17a"
+   /* 1-3-1 Han TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe3\x81\x8b\xe3\x81\x8c\xe3\x81\x8d",
+   "example.xn--u8jcd"
+   /* 1-3-2 Hiragana TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe3\x82\xab\xe3\x82\xac\xe3\x82\xad",
+   "example.xn--lckcd"
+   /* 1-3-3 Katakana TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x84\x80\xe1\x85\xa1\xe1\x86\xa8",
+   "example.xn--p39a"
+   /* 1-3-4 Hangul Jamo TLD */
+   /* Don't resolve as example.xn--ypd8qrh */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xea\xb1\xa9\xeb\x93\x86\xec\x80\xba",
+   "example.xn--o69aq2nl0j"
+   /* 1-3-5 Hangul TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xea\x80\x8a\xea\x80\xa0\xea\x8a\xb8",
+   "example.xn--6l7arby7j"
+   /* 1-3-6 Yi TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xce\xb1\xce\xb2\xce\xb3",
+   "example.xn--mxacd"
+   /* 1-3-7 Greek TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\xbc\x82\xe1\xbc\xa6\xe1\xbd\x95",
+   "example.xn--fng7dpg"
+   /* 1-3-8 Greek Extended TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xd0\xb0\xd0\xb1\xd0\xb2",
+   "example.xn--80acd"
+   /* 1-3-9 Cyrillic TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xd5\xa1\xd5\xa2\xd5\xa3",
+   "example.xn--y9acd"
+   /* 1-3-10 Armeian TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x83\x90\xe1\x83\x91\xe1\x83\x92",
+   "example.xn--lodcd"
+   /* 1-3-11 Georgian TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe2\x88\xa1\xe2\x86\xba\xe2\x8a\x82",
+   "example.xn--b7gxomk"
+   /* 1-4-1 Symbols TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xa4\x95\xe0\xa4\x96\xe0\xa4\x97",
+   "example.xn--11bcd"
+   /* 1-5-1 Devanagari TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xa6\x95\xe0\xa6\x96\xe0\xa6\x97",
+   "example.xn--p5bcd"
+   /* 1-5-2 Bengali TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xa8\x95\xe0\xa8\x96\xe0\xa8\x97",
+   "example.xn--d9bcd"
+   /* 1-5-3 Gurmukhi TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xaa\x95\xe0\xaa\x96\xe0\xaa\x97",
+   "example.xn--0dccd"
+   /* 1-5-4 Gujarati TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xac\x95\xe0\xac\x96\xe0\xac\x97",
+   "example.xn--ohccd"
+   /* 1-5-5 Oriya TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xae\x95\xe0\xae\x99\xe0\xae\x9a",
+   "example.xn--clcid"
+   /* 1-5-6 Tamil TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb0\x95\xe0\xb0\x96\xe0\xb0\x97",
+   "example.xn--zoccd"
+   /* 1-5-7 Telugu TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb2\x95\xe0\xb2\x96\xe0\xb2\x97",
+   "example.xn--nsccd"
+   /* 1-5-8 Kannada TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb4\x95\xe0\xb4\x96\xe0\xb4\x97",
+   "example.xn--bwccd"
+   /* 1-5-9 Malayalam TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb6\x9a\xe0\xb6\x9b\xe0\xb6\x9c",
+   "example.xn--3zccd"
+   /* 1-5-10 Sinhala TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xb8\x81\xe0\xb8\x82\xe0\xb8\x83",
+   "example.xn--12ccd"
+   /* 1-5-11 Thai TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xba\x81\xe0\xba\x82\xe0\xba\x84",
+   "example.xn--p6ccg"
+   /* 1-5-12 Lao TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe0\xbd\x80\xe0\xbd\x81\xe0\xbd\x82",
+   "example.xn--5cdcd"
+   /* 1-5-13 Tibetan TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x80\x80\xe1\x80\x81\xe1\x80\x82",
+   "example.xn--nidcd"
+   /* 1-5-14 Myanmar TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x9e\x80\xe1\x9e\x81\xe1\x9e\x82",
+   "example.xn--i2ecd"
+   /* 1-5-15 Khmer TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\xa0\xa0\xe1\xa0\xa1\xe1\xa0\xa2",
+   "example.xn--26ecd"
+   /* 1-5-16 Mongolian TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xd8\xa7\xd8\xa8\xd8\xa9",
+   "example.xn--mgbcd"
+   /* 1-6-1 Arabic TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xd7\x90\xd7\x91\xd7\x92",
+   "example.xn--4dbcd"
+   /* 1-6-2 Hebrew TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xdc\x90\xdc\x91\xdc\x92",
+   "example.xn--9mbcd"
+   /* 1-6-3 Syriac TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\x61\x62\x63\xe3\x82\xab\xe3\x82\xac\xe3\x82\xad",
+   "example.xn--abc-mj4bfg"
+   /* 1-7-1 ASCII and non-Latin TLD */
+   },
+  {"\x65\x78\x61\x6d\x70\x6c\x65\x2e\xc3\xa5\xc3\xbe\xc3\xa7\xe3\x82\xab\xe3\x82\xac\xe3\x82\xad",
+   "example.xn--5cae2e328wfag"
+   /* 1-7-2 Latin (non-ASCII) and non-Latin TLD */
+   },
+  {"\xc3\xad\x21\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-3-1-1 Includes ! before Nameprep */
+   /* Don't resolve as xn--!dn-qma.example */
+   },
+  {"\xc3\xad\x24\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-3-1-2 Includes $ before Nameprep */
+   /* Don't resolve as xn--$dn-qma.example */
+   },
+  {"\xc3\xad\x2b\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-3-1-3 Includes + before Nameprep */
+   /* Don't resolve as xn--+dn-qma.example */
+   },
+  {"\x2d\xc3\xad\x31\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-3-2-1 Leading hyphen before Nameprep */
+   /* Don't resolve as xn---1dn-vpa.example */
+   },
+  {"\xc3\xad\x31\x64\x6e\x2d\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-3-2-2 Trailing hyphen before Nameprep */
+   /* Don't resolve as xn--1dn--upa.example */
+   },
+  {"\xc3\xad\xef\xbc\x8b\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-3-3-1 Gets a + after Nameprep */
+   /* Don't resolve as xn--dn-mja0331x.example */
+   },
+  {"\xc3\xad\xe2\x81\xbc\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-3-3-2 Gets a = after Nameprep */
+   /* Don't resolve as xn--dn-mja0343a.example */
+   },
+  {"\xef\xb9\xa3\xc3\xad\x32\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-3-4-1 Leading hyphen after Nameprep */
+   /* Don't resolve as xn--2dn-qma32863a.example */
+   /* Don't resolve as xn---2dn-vpa.example */
+   },
+  {"\xc3\xad\x32\x64\x6e\xef\xbc\x8d\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-3-4-2 Trailing hyphen after Nameprep */
+   /* Don't resolve as xn--2dn-qma79363a.example */
+   /* Don't resolve as xn--2dn--upa.example */
+   },
+  {"\xc2\xb9\x31\x2e\x65\x78\x61\x6d\x70\x6c\x65", "11.example"
+   /* 2-4-1 All-ASCII check, Latin */
+   },
+  {"\xe2\x85\xa5\x76\x69\x2e\x65\x78\x61\x6d\x70\x6c\x65", "vivi.example"
+   /* 2-4-2 All-ASCII check, symbol */
+   },
+  {"\xc3\x9f\x73\x73\x2e\x65\x78\x61\x6d\x70\x6c\x65", "ssss.example"
+   /* 2-4-3 All-ASCII check, sharp S */
+   },
+  {"\x78\x6e\x2d\x2d\xc3\xaf\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 2-5-1 ACE prefix before Nameprep, body */
+   /* Don't resolve as xn--xn--dn-sja.example */
+   /* Don't resolve as xn--dn-sja.example */
+   },
+  {"\xe2\x85\xb9\x6e\x2d\x2d\xc3\xa4\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   ""
+   /* 2-5-2 ACE prefix before Nameprep, prefix */
+   /* Don't resolve as xn--xn--dn-uia.example */
+   /* Don't resolve as xn--dn-uia.example */
+   },
+  {"", ""
+   /* 2-8-1 Zero-length label after Nameprep */
+   /* Don't resolve as xn--kba.example */
+   /* Don't resolve as xn--.example */
+   },
+  {"\x33\x30\x30\x32\x2d\x74\x65\x73\x74\xe3\x80\x82\xc3\xad\x64\x6e",
+   "3002-test.xn--dn-mja"
+   /* 2-9-1 U+3002 acts as a label separator */
+   /* Don't resolve as xn--3002-testdn-wcb2087m.example */
+   },
+  {"\x66\x66\x30\x65\x2d\x74\x65\x73\x74\xef\xbc\x8e\xc3\xad\x64\x6e",
+   "ff0e-test.xn--dn-mja"
+   /* 2-9-2 U+FF0E acts as a label separator */
+   /* Don't resolve as xn--ff0e-testdn-wcb45865f.example */
+   },
+  {"\x66\x66\x36\x31\x2d\x74\x65\x73\x74\xef\xbd\xa1\xc3\xad\x64\x6e",
+   "ff61-test.xn--dn-mja"
+   /* 2-9-3 U+FF61 acts as a label separator */
+   /* Don't resolve as xn--ff61-testdn-wcb33975f.example */
+   },
+  {"\x30\x30\x61\x64\x6f\x75\x74\xc2\xad\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--00adoutdn-m5a.example"
+   /* 4-1-1-1 00adout<00AD><00ED>dn.example -> 00adout<00ED>dn.example */
+   /* Don't resolve as xn--00adoutdn-cna81e.example */
+   },
+  {"\x32\x30\x30\x64\x6f\x75\x74\xe2\x80\x8d\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--200doutdn-m5a.example"
+   /* 4-1-1-2 200dout<200D><00ED>dn.example -> 200dout<00ED>dn.example */
+   /* Don't resolve as xn--200doutdn-m5a1678f.example */
+   },
+  {"\x73\x69\x6d\x70\x6c\x65\x63\x61\x70\x44\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--simplecapddn-1fb.example"
+   /* 4-1-2-1 simplecap<0044><00ED>dn.example -> simplecap<0064><00ED>dn.example */
+   },
+  {"\x6c\x61\x74\x69\x6e\x74\x6f\x67\x72\x65\x65\x6b\xc2\xb5\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--latintogreekdn-cmb716i.example"
+   /* 4-1-2-2 latintogreek<00B5><00ED>dn.example -> latintogreek<03BC><00ED>dn.example */
+   /* Don't resolve as xn--latintogreekdn-cxa01g.example */
+   },
+  {"\x6c\x61\x74\x69\x6e\x65\x78\x74\xc3\x87\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--latinextdn-v6a6e.example"
+   /* 4-1-2-3 latinext<00C7><00ED>dn.example -> latinext<00E7><00ED>dn.example */
+   /* Don't resolve as xn--latinextdn-twa07b.example */
+   },
+  {"\x73\x68\x61\x72\x70\x73\xc3\x9f\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--sharpsssdn-r8a.example"
+   /* 4-1-2-4 sharps<00DF><00ED>dn.example -> sharpsss<00ED>dn.example */
+   /* Don't resolve as xn--sharpsdn-vya4l.example */
+   },
+  {"\x74\x75\x72\x6b\x69\x73\x68\x69\xc4\xb0\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--turkishiidn-wcb701e.example"
+   /* 4-1-2-5 turkishi<0130><00ED>dn.example -> turkishi<0069><0307><00ED>dn.example */
+   /* Don't resolve as xn--turkishidn-r8a71f.example */
+   },
+  {"\x65\x78\x70\x74\x77\x6f\xc5\x89\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--exptwondn-m5a502c.example"
+   /* 4-1-2-6 exptwo<0149><00ED>dn.example -> exptwo<02BC><006E><00ED>dn.example */
+   /* Don't resolve as xn--exptwodn-h2a33g.example */
+   },
+  {"\x61\x64\x64\x66\x6f\x6c\x64\xcf\x92\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--addfolddn-m5a121f.example"
+   /* 4-1-2-7 addfold<03D2><00ED>dn.example -> addfold<03C5><00ED>dn.example */
+   /* Don't resolve as xn--addfolddn-m5a462f.example */
+   },
+  {"\x65\x78\x70\x74\x68\x72\x65\x65\xe1\xbd\x92\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--expthreedn-r8a5844g.example"
+   /* 4-1-2-8 expthree<1F52><00ED>dn.example -> expthree<03C5><0313><0300><00ED>dn.example */
+   },
+  {"\x6e\x6f\x6e\x62\x6d\x70\xf0\x90\x90\x80\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--nonbmpdn-h2a34747d.example"
+   /* 4-1-2-9 nonbmp<10400><00ED>dn.example -> nonbmp<10428><00ED>dn.example */
+   /* Don't resolve as xn--nonbmpdn-h2a37046d.example */
+   },
+  {"\x6e\x6f\x6e\x62\x6d\x70\x74\x6f\x61\x73\x63\x69\x69\xf0\x9d\x90\x80\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--nonbmptoasciiadn-msb.example"
+   /* 4-1-2-10 nonbmptoascii<1D400><00ED>dn.example -> nonbmptoasciia<00ED>dn.example */
+   /* Don't resolve as xn--nonbmptoasciidn-hpb54112i.example */
+   },
+  {"\x72\x65\x67\x63\x6f\x6d\x62\x65\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--regcombdn-h4a8b.example"
+   /* 4-2-1-1 regcomb<0065><0301><00ED>dn.example -> regcomb<00E9><00ED>dn.example */
+   /* Don't resolve as xn--regcombedn-r8a794d.example */
+   },
+  {"\x63\x6f\x6d\x62\x61\x6e\x64\x63\x61\x73\x65\x45\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--combandcasedn-lhb4d.example"
+   /* 4-2-1-2 combandcase<0045><0301><00ED>dn.example -> combandcase<00E9><00ED>dn.example */
+   /* Don't resolve as xn--combandcaseedn-cmb526f.example */
+   },
+  {"\x61\x64\x6a\x63\x6f\x6d\x62\xc2\xba\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--adjcombdn-m5a9d.example"
+   /* 4-2-1-3 adjcomb<00BA><0301><00ED>dn.example -> adjcomb<00F3><00ED>dn.example */
+   /* Don't resolve as xn--adjcombdn-1qa57cp3r.example */
+   },
+  {"\x65\x78\x74\x63\x6f\x6d\x62\x6f\x63\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--extcombodn-r8a52a.example"
+   /* 4-2-1-4 extcombo<0063><0301><00ED>dn.example -> extcombo<0107><00ED>dn.example */
+   /* Don't resolve as xn--extcombocdn-wcb920e.example */
+   },
+  {"\x64\x6f\x75\x62\x6c\x65\x64\x69\x61\x63\x31\x75\xcc\x88\xcc\x81\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--doublediac1dn-6ib836a.example"
+   /* 4-2-1-5 doublediac1<0075><0308><0301><00ED>dn.example -> doublediac2<01D8><00ED>dn.example */
+   /* Don't resolve as xn--doublediac1udn-cmb526fnd.example */
+   },
+  {"\x64\x6f\x75\x62\x6c\x65\x64\x69\x61\x63\x32\x75\xcc\x81\xcc\x88\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--doublediac2dn-6ib8qs73a.example"
+   /* 4-2-1-6 doublediac2<0075><0301><0308><00ED>dn.example -> doublediac2<01D8><00ED>dn.example */
+   /* Don't resolve as xn--doublediac2udn-cmb526fod.example */
+   },
+  {"\x6e\x65\x77\x6e\x6f\x72\x6d\xf0\xaf\xa1\xb4\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--newnormdn-m5a7856x.example"
+   /* 4-2-2-1 newnorm<2F874><00ED>dn.example -> newnorm<5F33><00ED>dn.example should not become <5F53> */
+   /* Don't resolve as xn--newnormdn-m5a9396x.example */
+   /* Don't resolve as xn--newnormdn-m5a9968x.example */
+   },
+  {"\xe2\x80\x80\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-1 Spacing */
+   /* Don't resolve as xn--dn-mja3392a.example */
+   },
+  {"\xdb\x9d\xc3\xad\x64\x6e\x2d\x32\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-2 Control */
+   /* Don't resolve as xn--dn-2-upa332g.example */
+   },
+  {"\xee\x80\x85\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-3 Private use */
+   /* Don't resolve as xn--dn-mja1659t.example */
+   },
+  {"\xf3\xb0\x80\x85\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-4 Private use, non-BMP */
+   /* Don't resolve as xn--dn-mja7922x.example */
+   },
+  {"\xef\xb7\x9d\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-5 Non-character */
+   /* Don't resolve as xn--dn-mja1210x.example */
+   },
+  {"\xf0\x9f\xbf\xbe\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-6 Non-character, non-BMP */
+   /* Don't resolve as xn--dn-mja7922x.example */
+   },
+  {"\xef\xbf\xbd\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-7 Surrogate points */
+   /* Don't resolve as xn--dn-mja7922x.example */
+   },
+  {"\xef\xbf\xba\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-8 Inappropriate for plain */
+   /* Don't resolve as xn--dn-mja5822x.example */
+   },
+  {"\xe2\xbf\xb5\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-9 Inappropriate for canonical */
+   /* Don't resolve as xn--dn-mja3729b.example */
+   },
+  {"\xe2\x81\xaa\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-10 Change display simple */
+   /* Don't resolve as xn--dn-mja7533a.example */
+   },
+  {"\xe2\x80\x8f\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-3-11 Change display RTL */
+   /* Don't resolve as xn--dn-mja3992a.example */
+   },
+  {"\xf3\xa0\x80\x81\xf3\xa0\x81\x85\xf3\xa0\x81\x8e\x68\x69\x69\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   ""
+   /* 4-3-12 Language tags */
+   /* Don't resolve as xn--hiidn-km43aaa.example */
+   },
+  {"\xd8\xa8\x6f\xd8\xb8\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-4-1 Arabic RandALCat-LCat-RandALCat */
+   /* Don't resolve as xn--o-0mc3c.example */
+   },
+  {"\xd8\xa8\xd8\xb8\x6f\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-4-2 Arabic RandALCat-RandALCat-other */
+   /* Don't resolve as xn--o-0mc2c.example */
+   },
+  {"\x6f\xd8\xa8\xd8\xb8\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-4-3 Arabic other-RandALCat-RandALCat */
+   /* Don't resolve as xn--o-1mc2c.example */
+   },
+  {"\xd7\x91\x6f\xd7\xa1\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-4-4 Hebrew RandALCat-LCat-RandALCat */
+   /* Don't resolve as xn--o-1hc3c.example */
+   },
+  {"\xd7\x91\xd7\xa1\x6f\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-4-5 Hebrew RandALCat-RandALCat-other */
+   /* Don't resolve as xn--o-1hc2c.example */
+   },
+  {"\x6f\xd7\x91\xd7\xa1\x2e\x65\x78\x61\x6d\x70\x6c\x65", ""
+   /* 4-4-6 Hebrew other-RandALCat-RandALCat */
+   /* Don't resolve as xn--o-2hc2c.example */
+   },
+  {"\xc8\xb7\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--dn-mja33k.example"
+   /* 5-1-1 Unassigned in BMP; zone editors should reject */
+   },
+  {"\xf0\x90\x88\x85\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--dn-mja7734x.example"
+   /* 5-1-2 Unassinged outside BMP; zone editors should reject */
+   /* Don't resolve as xn--dn-mja7922x.example */
+   },
+  {"\xc8\xb4\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--dn-mja12k.example"
+   /* 5-2-1 Newly assigned in BMP; zone editors should reject */
+   },
+  {"\xf0\x90\x80\x85\xc3\xad\x64\x6e\x2e\x65\x78\x61\x6d\x70\x6c\x65",
+   "xn--dn-mja9232x.example"
+   /* 5-2-2 Newly assigned outside of BMP; zone editors should reject */
+   /* Don't resolve as xn--dn-mja7922x.example */
+   }
+};
+
+void
+doit (void)
+{
+  size_t i;
+  char *out;
+  int rc;
+
+  for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++)
+    {
+      if (debug)
+       printf ("IDNA2 entry %d\n", i);
+
+      if (debug)
+       {
+         uint32_t *p;
+         size_t len;
+         printf ("in: %s\n", idna[i].in);
+         hexprint (idna[i].in, strlen (idna[i].in));
+         escapeprint (idna[i].in, strlen (idna[i].in));
+         p = stringprep_utf8_to_ucs4 (idna[i].in, -1, &len);
+         ucs4print (p, len);
+         free (p);
+       }
+
+      rc = idna_to_ascii_8z (idna[i].in, &out,
+                            IDNA_ALLOW_UNASSIGNED |
+                            IDNA_USE_STD3_ASCII_RULES);
+      if (rc != IDNA_SUCCESS && strlen (idna[i].out) > 0)
+       {
+         fail ("IDNA2 entry %d failed: %d\n", i, rc);
+         continue;
+       }
+
+      if (debug && rc == IDNA_SUCCESS)
+       {
+         printf ("computed out: %s\n", out);
+         printf ("expected out: %s\n", idna[i].out);
+       }
+      else if (debug)
+       printf ("returned %d\n", rc);
+
+      if (rc == IDNA_SUCCESS)
+       {
+         if (strlen (idna[i].out) != strlen (out) ||
+             strcasecmp (idna[i].out, out) != 0)
+           {
+             fail ("IDNA2 entry %d failed\n", i);
+             if (debug)
+               printf ("ERROR\n");
+           }
+         else if (debug)
+           printf ("OK\n");
+
+         free (out);
+         out = NULL;
+       }
+      else if (rc != IDNA_SUCCESS && strlen (idna[i].out) == 0 && debug)
+       printf ("OK (fail)\n");
+      else if (debug)
+       printf ("OK\n");
+    }
+}
diff --git a/tests/tst_nfkc.c b/tests/tst_nfkc.c
new file mode 100644 (file)
index 0000000..a10a630
--- /dev/null
@@ -0,0 +1,126 @@
+/* tst_nfkc.c --- Self tests for stringprep_utf8_nfkc_normalize().
+ * Copyright (C) 2002, 2003, 2004, 2006, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include <stringprep.h>
+
+#include "utils.h"
+
+struct nfkc
+{
+  const char *in;
+  const char *out;
+};
+
+static struct nfkc nfkc[] = {
+  {"\xC2\xB5", "\xCE\xBC"},
+  {"\xC2\xAA", "\x61"},
+  /* From <http://www.unicode.org/review/pr-29.html>. Note that we
+   * compute the output according to Unicode 3.2 without the proposed
+   * update.
+   *
+   *   1.
+   *
+   *   U+1100 (ᄀ) HANGUL CHOSEONG KIYEOK +
+   *   U+0300 (◌̀) COMBINING GRAVE ACCENT +
+   *   U+1161 (ᅡ) HANGUL JUNGSEONG A
+   *
+   *   According to the old language, the NFC form of this would be B:
+   *
+   *   2.
+   *
+   *   U+AC00 (가) HANGUL SYLLABLE GA +
+   *   U+0300 (◌̀) COMBINING GRAVE ACCENT
+   */
+  {"\xE1\x84\x80\xCC\x80\xE1\x85\xA1", "\xEA\xB0\x80\xCC\x80"},
+  /* Second test case from page.  Again, we do not implement the
+   * updated proposal.  <U+0B47; U+0300; U+0B3E> -> U+0B4B U+0300
+   */
+  {"\xE0\xAD\x87\xCC\x80\xE0\xAC\xBE", "\xE0\xAD\x8b\xCC\x80"}
+};
+
+void
+doit (void)
+{
+  char *out;
+  size_t i;
+
+  for (i = 0; i < sizeof (nfkc) / sizeof (nfkc[0]); i++)
+    {
+      if (debug)
+       printf ("NFKC entry %d\n", i);
+
+      out = stringprep_utf8_nfkc_normalize (nfkc[i].in,
+                                           (ssize_t) strlen (nfkc[i].in));
+      if (out == NULL)
+       {
+         fail ("NFKC entry %d failed fatally\n", i);
+         continue;
+       }
+
+      if (debug)
+       {
+         uint32_t *t;
+         size_t len;
+
+         printf ("in:\n");
+         escapeprint (nfkc[i].in, strlen (nfkc[i].in));
+         hexprint (nfkc[i].in, strlen (nfkc[i].in));
+         binprint (nfkc[i].in, strlen (nfkc[i].in));
+
+
+         printf ("out:\n");
+         escapeprint (out, strlen (out));
+         hexprint (out, strlen (out));
+         binprint (out, strlen (out));
+         t = stringprep_utf8_to_ucs4 (out, -1, &len);
+         if (t)
+           {
+             ucs4print (t, len);
+             free (t);
+           }
+
+         printf ("expected out:\n");
+         escapeprint (nfkc[i].out, strlen (nfkc[i].out));
+         hexprint (nfkc[i].out, strlen (nfkc[i].out));
+         binprint (nfkc[i].out, strlen (nfkc[i].out));
+       }
+
+      if (strlen (nfkc[i].out) != strlen (out) ||
+         memcmp (nfkc[i].out, out, strlen (out)) != 0)
+       {
+         fail ("NFKC entry %d failed\n", i);
+         if (debug)
+           printf ("ERROR\n");
+       }
+      else if (debug)
+       printf ("OK\n");
+
+      free (out);
+    }
+}
diff --git a/tests/tst_pr29.c b/tests/tst_pr29.c
new file mode 100644 (file)
index 0000000..e01441b
--- /dev/null
@@ -0,0 +1,145 @@
+/* tst_pr29.c --- Self tests for pr29_*().
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include <pr29.h>
+
+#include "utils.h"
+
+struct tv
+{
+  const char *name;
+  size_t inlen;
+  uint32_t in[100];
+  int rc;
+};
+
+static const struct tv tv[] = {
+  {
+   "Problem Sequence A",
+   3,
+   {0x1100, 0x0300, 0x1161, 0},
+   PR29_PROBLEM},
+  {
+   "Test Case",
+   3,
+   {0x0B47, 0x0300, 0x0B3E, 0},
+   PR29_PROBLEM},
+  {
+   "Instability Example",
+   3,
+   {0x1100, 0x0300, 0x1161, 0x0323, 0},
+   PR29_PROBLEM},
+  {
+   "Not a problem sequence 1",
+   3,
+   {0x1100, 0x1161, 0x0300, 0},
+   PR29_SUCCESS},
+  {
+   "Not a problem sequence 2",
+   3,
+   {0x0300, 0x1100, 0x1161, 0},
+   PR29_SUCCESS},
+  {
+   "Not a problem sequence 3",
+   3,
+   {0x1161, 0x1100, 0x0300, 0},
+   PR29_SUCCESS},
+  {
+   "Not a problem sequence 4",
+   3,
+   {0x1161, 0x0300, 0x1100, 0},
+   PR29_SUCCESS},
+  {
+   "Not a problem sequence 5",
+   3,
+   {0x1100, 0x00AA, 0x1161, 0},
+   PR29_SUCCESS}
+};
+
+void
+doit (void)
+{
+  size_t i;
+  int rc;
+
+  for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++)
+    {
+      if (debug)
+       printf ("PR29 entry %d: %s\n", i, tv[i].name);
+
+      if (debug)
+       {
+         printf ("in:\n");
+         ucs4print (tv[i].in, tv[i].inlen);
+       }
+
+      rc = pr29_4 (tv[i].in, tv[i].inlen);
+      if (rc != tv[i].rc)
+       {
+         fail ("PR29 entry %d failed (expected %d): %d\n", i, tv[i].rc, rc);
+         if (debug)
+           printf ("FATAL\n");
+         continue;
+       }
+
+      rc = pr29_4z (tv[i].in);
+      if (rc != tv[i].rc)
+       {
+         fail ("PR29 entry %d failed (expected %d): %d\n", i, tv[i].rc, rc);
+         if (debug)
+           printf ("FATAL\n");
+         continue;
+       }
+
+      {
+       char *p;
+       size_t items_read, items_written;
+
+       p = stringprep_ucs4_to_utf8 (tv[i].in, (ssize_t) tv[i].inlen,
+                                    &items_read, &items_written);
+       if (p == NULL)
+         fail ("FAIL: stringprep_ucs4_to_utf8(tv[%d]) == NULL\n", i);
+       if (debug)
+         hexprint (p, strlen (p));
+
+       rc = pr29_8z (p);
+       free (p);
+       if (rc != tv[i].rc)
+         {
+           fail ("PR29 entry %d failed (expected %d): %d\n", i, tv[i].rc, rc);
+           if (debug)
+             printf ("FATAL\n");
+           continue;
+         }
+      }
+
+      if (debug)
+       printf ("OK\n");
+    }
+}
diff --git a/tests/tst_punycode.c b/tests/tst_punycode.c
new file mode 100644 (file)
index 0000000..8d0c7ac
--- /dev/null
@@ -0,0 +1,278 @@
+/* tst_punycode.c --- Self tests for punycode.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include <punycode.h>
+
+#include "utils.h"
+
+struct punycode
+{
+  const char *name;
+  size_t inlen;
+  uint32_t in[100];
+  const char *out;
+  int rc;
+};
+
+const struct punycode punycode[] = {
+  {
+   "(A) Arabic (Egyptian)", 17,
+   {
+    0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643,
+    0x0644, 0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A,
+    0x061F}, "egbpdaj6bu4bxfgehfvwxn", PUNYCODE_SUCCESS},
+  {
+   "(B) Chinese (simplified)", 9,
+   {
+    0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D,
+    0x6587}, "ihqwcrb4cv8a8dqg056pqjye", PUNYCODE_SUCCESS},
+  {
+   "(C) Chinese (traditional)", 9,
+   {
+    0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D,
+    0x6587}, "ihqwctvzc91f659drss3x8bo0yb", PUNYCODE_SUCCESS},
+  {
+   "(D) Czech: Pro<ccaron>prost<ecaron>nemluv<iacute><ccaron>esky", 22,
+   {
+    0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073,
+    0x0074, 0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076,
+    0x00ED, 0x010D, 0x0065, 0x0073, 0x006B, 0x0079},
+   "Proprostnemluvesky-uyb24dma41a", PUNYCODE_SUCCESS},
+  {
+   "(E) Hebrew:", 22,
+   {
+    0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5,
+    0x05D8, 0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9,
+    0x05DD, 0x05E2, 0x05D1, 0x05E8, 0x05D9, 0x05EA},
+   "4dbcagdahymbxekheh6e0a7fei0b", PUNYCODE_SUCCESS},
+  {
+   "(F) Hindi (Devanagari):", 30,
+   {
+    0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928,
+    0x094D, 0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902,
+    0x0928, 0x0939, 0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938,
+    0x0915, 0x0924, 0x0947, 0x0939, 0x0948, 0x0902},
+   "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd", PUNYCODE_SUCCESS},
+  {
+   "(G) Japanese (kanji and hiragana):", 18,
+   {
+    0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E,
+    0x3092, 0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044,
+    0x306E, 0x304B},
+   "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa", PUNYCODE_SUCCESS},
+  {
+   "(H) Korean (Hangul syllables):", 24,
+   {
+    0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4,
+    0xC774, 0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C,
+    0xB2E4, 0xBA74, 0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C},
+   "989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c",
+   PUNYCODE_SUCCESS},
+  {
+   "(I) Russian (Cyrillic):", 28,
+   {
+    0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435,
+    0x043E, 0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432,
+    0x043E, 0x0440, 0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443,
+    0x0441, 0x0441, 0x043A, 0x0438},
+   "b1abfaaepdrnnbgefbadotcwatmq2g4l", PUNYCODE_SUCCESS},
+  {
+   "(J) Spanish: Porqu<eacute>nopuedensimplementehablarenEspa<ntilde>ol", 40,
+   {
+    0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F,
+    0x0070, 0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069,
+    0x006D, 0x0070, 0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074,
+    0x0065, 0x0068, 0x0061, 0x0062, 0x006C, 0x0061, 0x0072, 0x0065,
+    0x006E, 0x0045, 0x0073, 0x0070, 0x0061, 0x00F1, 0x006F, 0x006C},
+   "PorqunopuedensimplementehablarenEspaol-fmd56a", PUNYCODE_SUCCESS},
+  {
+   "(K) Vietnamese:", 31,
+   {
+    0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD,
+    0x006B, 0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3,
+    0x0063, 0x0068, 0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069,
+    0x1EBF, 0x006E, 0x0067, 0x0056, 0x0069, 0x1EC7, 0x0074},
+   "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g", PUNYCODE_SUCCESS},
+  {
+   "(L) 3<nen>B<gumi><kinpachi><sensei>", 8,
+   {
+    0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F},
+   "3B-ww4c5e180e575a65lsy2b", PUNYCODE_SUCCESS},
+  {
+   "(M) <amuro><namie>-with-SUPER-MONKEYS", 24,
+   {
+    0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069,
+    0x0074, 0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052,
+    0x002D, 0x004D, 0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053},
+   "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n", PUNYCODE_SUCCESS},
+  {
+   "(N) Hello-Another-Way-<sorezore><no><basho>", 25,
+   {
+    0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E,
+    0x006F, 0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061,
+    0x0079, 0x002D, 0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834,
+    0x6240},
+   "Hello-Another-Way--fc4qua05auwb3674vfr0b", PUNYCODE_SUCCESS},
+  {
+   "(O) <hitotsu><yane><no><shita>2", 8,
+   {
+    0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032},
+   "2-u9tlzr9756bt3uc0v", PUNYCODE_SUCCESS},
+  {
+   "(P) Maji<de>Koi<suru>5<byou><mae>", 13,
+   {
+    0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069,
+    0x3059, 0x308B, 0x0035, 0x79D2, 0x524D},
+   "MajiKoi5-783gue6qz075azm5e", PUNYCODE_SUCCESS},
+  {
+   "(Q) <pafii>de<runba>", 9,
+   {
+    0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0},
+   "de-jg4avhby1noc0d", PUNYCODE_SUCCESS},
+  {
+   "(R) <sono><supiido><de>", 7,
+   {
+    0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067},
+   "d9juau41awczczp", PUNYCODE_SUCCESS},
+  {
+   "(S) -> $1.00 <-", 11,
+   {
+    0x002D, 0x003E, 0x0020, 0x0024, 0x0031, 0x002E, 0x0030, 0x0030,
+    0x0020, 0x003C, 0x002D}, "-> $1.00 <--", PUNYCODE_SUCCESS}
+};
+
+void
+doit (void)
+{
+  char *p;
+  uint32_t *q;
+  int rc;
+  size_t i, outlen;
+
+  p = malloc (sizeof (*p) * BUFSIZ);
+  if (p == NULL)
+    fail ("malloc() returned NULL\n");
+
+  q = malloc (sizeof (*q) * BUFSIZ);
+  if (q == NULL)
+    fail ("malloc() returned NULL\n");
+
+  for (i = 0; i < sizeof (punycode) / sizeof (punycode[0]); i++)
+    {
+      if (debug)
+       printf ("PUNYCODE entry %d: %s\n", i, punycode[i].name);
+
+      if (debug)
+       {
+         printf ("in:\n");
+         ucs4print (punycode[i].in, punycode[i].inlen);
+       }
+
+      outlen = BUFSIZ;
+      rc = punycode_encode (punycode[i].inlen, punycode[i].in,
+                           NULL, &outlen, p);
+      if (rc != punycode[i].rc)
+       {
+         fail ("punycode_encode() entry %d failed: %d\n", i, rc);
+         if (debug)
+           printf ("FATAL\n");
+         continue;
+       }
+
+      if (rc == PUNYCODE_SUCCESS)
+       p[outlen] = '\0';
+
+      if (debug && rc == PUNYCODE_SUCCESS)
+       {
+         printf ("computed out: %s\n", p);
+         printf ("expected out: %s\n", punycode[i].out);
+       }
+      else if (debug)
+       printf ("returned %d expected %d\n", rc, punycode[i].rc);
+
+      if (rc == PUNYCODE_SUCCESS)
+       {
+         if (strlen (punycode[i].out) != strlen (p) ||
+             memcmp (punycode[i].out, p, strlen (p)) != 0)
+           {
+             fail ("punycode() entry %d failed\n", i);
+             if (debug)
+               printf ("ERROR\n");
+           }
+         else if (debug)
+           printf ("OK\n\n");
+       }
+      else if (debug)
+       printf ("OK\n\n");
+
+      if (debug)
+       {
+         printf ("in: %s\n", punycode[i].out);
+       }
+
+      outlen = BUFSIZ;
+      rc = punycode_decode (strlen (punycode[i].out), punycode[i].out,
+                           &outlen, q, NULL);
+      if (rc != punycode[i].rc)
+       {
+         fail ("punycode() entry %d failed: %d\n", i, rc);
+         if (debug)
+           printf ("FATAL\n");
+         continue;
+       }
+
+      if (debug && rc == PUNYCODE_SUCCESS)
+       {
+         printf ("computed out:\n");
+         ucs4print (q, outlen);
+         printf ("expected out:\n");
+         ucs4print (punycode[i].in, punycode[i].inlen);
+       }
+      else if (debug)
+       printf ("returned %d expected %d\n", rc, punycode[i].rc);
+
+      if (rc == PUNYCODE_SUCCESS)
+       {
+         if (punycode[i].inlen != outlen ||
+             memcmp (punycode[i].in, q, outlen) != 0)
+           {
+             fail ("punycode_decode() entry %d failed\n", i);
+             if (debug)
+               printf ("ERROR\n");
+           }
+         else if (debug)
+           printf ("OK\n\n");
+       }
+      else if (debug)
+       printf ("OK\n\n");
+    }
+
+  free (q);
+  free (p);
+}
diff --git a/tests/tst_strerror.c b/tests/tst_strerror.c
new file mode 100644 (file)
index 0000000..846340e
--- /dev/null
@@ -0,0 +1,205 @@
+/* tst_strerror.c --- Self tests for *_strerror().
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009  Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include <idna.h>
+#include <pr29.h>
+#include <punycode.h>
+#include <stringprep.h>
+#include <tld.h>
+
+#include "utils.h"
+
+#define SUCCESS "Success"
+#define UNKNOWN "Unknown error"
+
+void
+doit (void)
+{
+  const char *p;
+
+  /* Test success. */
+
+  p = idna_strerror (0);
+  if (strcmp (p, SUCCESS) != 0)
+    fail ("idna_strerror (0) failed: %s\n", p);
+  if (debug)
+    printf ("idna_strerror (0) OK\n");
+
+  p = pr29_strerror (0);
+  if (strcmp (p, SUCCESS) != 0)
+    fail ("pr29_strerror (0) failed: %s\n", p);
+  if (debug)
+    printf ("pr29_strerror (0) OK\n");
+
+  p = punycode_strerror (0);
+  if (strcmp (p, SUCCESS) != 0)
+    fail ("punycode_strerror (0) failed: %s\n", p);
+  if (debug)
+    printf ("punycode_strerror (0) OK\n");
+
+  p = stringprep_strerror (0);
+  if (strcmp (p, SUCCESS) != 0)
+    fail ("stringprep_strerror (0) failed: %s\n", p);
+  if (debug)
+    printf ("stringprep_strerror (0) OK\n");
+
+  p = tld_strerror (0);
+  if (strcmp (p, SUCCESS) != 0)
+    fail ("tld_strerror (0) failed: %s\n", p);
+  if (debug)
+    printf ("tld_strerror (0) OK\n");
+
+  /* Test unknown error. */
+
+  p = idna_strerror (42);
+  if (strcmp (p, UNKNOWN) != 0)
+    fail ("idna_strerror (42) failed: %s\n", p);
+  if (debug)
+    printf ("idna_strerror (42) OK\n");
+
+  p = pr29_strerror (42);
+  if (strcmp (p, UNKNOWN) != 0)
+    fail ("pr29_strerror (42) failed: %s\n", p);
+  if (debug)
+    printf ("pr29_strerror (42) OK\n");
+
+  p = punycode_strerror (42);
+  if (strcmp (p, UNKNOWN) != 0)
+    fail ("punycode_strerror (42) failed: %s\n", p);
+  if (debug)
+    printf ("punycode_strerror (42) OK\n");
+
+  p = stringprep_strerror (42);
+  if (strcmp (p, UNKNOWN) != 0)
+    fail ("stringprep_strerror (42) failed: %s\n", p);
+  if (debug)
+    printf ("stringprep_strerror (42) OK\n");
+
+  p = tld_strerror (42);
+  if (strcmp (p, UNKNOWN) != 0)
+    fail ("tld_strerror (42) failed: %s\n", p);
+  if (debug)
+    printf ("tld_strerror (42) OK\n");
+
+  /* Iterate through all error codes. */
+
+  {
+    size_t i;
+    const char *last_p = NULL;
+
+    for (i = 0;; i++)
+      {
+       p = idna_strerror (i);
+       if (p == last_p)
+         {
+           if (i == 11)
+             {
+               i = 200;
+               continue;
+             }
+           break;
+         }
+       if (debug)
+         printf ("idna %d: %s\n", i, p);
+       last_p = p;
+      }
+  }
+
+  {
+    size_t i;
+    const char *last_p = NULL;
+
+    for (i = 0;; i++)
+      {
+       p = pr29_strerror (i);
+       if (p == last_p)
+         break;
+       if (debug)
+         printf ("pr29 %d: %s\n", i, p);
+       last_p = p;
+      }
+  }
+
+  {
+    size_t i;
+    const char *last_p = NULL;
+
+    for (i = 0;; i++)
+      {
+       p = punycode_strerror (i);
+       if (p == last_p)
+         break;
+       if (debug)
+         printf ("punycode %d: %s\n", i, p);
+       last_p = p;
+      }
+  }
+
+  {
+    size_t i;
+    const char *last_p = NULL;
+
+    for (i = 0;; i++)
+      {
+       p = stringprep_strerror (i);
+       if (p == last_p)
+         {
+           if (i == 7)
+             {
+               i = 99;
+               continue;
+             }
+           else if (i == 105)
+             {
+               i = 199;
+               continue;
+             }
+           break;
+         }
+       if (debug)
+         printf ("stringprep %d: %s\n", i, p);
+       last_p = p;
+      }
+  }
+
+  {
+    size_t i;
+    const char *last_p = NULL;
+
+    for (i = 0;; i++)
+      {
+       p = tld_strerror (i);
+       if (p == last_p)
+         break;
+       if (debug)
+         printf ("tld %d: %s\n", i, p);
+       last_p = p;
+      }
+  }
+}
diff --git a/tests/tst_stringprep.c b/tests/tst_stringprep.c
new file mode 100644 (file)
index 0000000..0c247f5
--- /dev/null
@@ -0,0 +1,312 @@
+/* tst_stringprep.c --- Self tests for stringprep().
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include <stringprep.h>
+
+#include "utils.h"
+
+struct stringprep
+{
+  const char *comment;
+  const char *in;
+  const char *out;
+  const char *profile;
+  int flags;
+  int rc;
+};
+
+const struct stringprep strprep[] = {
+  {"Map to nothing",
+   "foo\xC2\xAD\xCD\x8F\xE1\xA0\x86\xE1\xA0\x8B"
+   "bar" "\xE2\x80\x8B\xE2\x81\xA0" "baz\xEF\xB8\x80\xEF\xB8\x88"
+   "\xEF\xB8\x8F\xEF\xBB\xBF", "foobarbaz"},
+  {"Case folding ASCII U+0043 U+0041 U+0046 U+0045", "CAFE", "cafe"},
+  {"Case folding 8bit U+00DF (german sharp s)", "\xC3\x9F", "ss"},
+  {"Case folding U+0130 (turkish capital I with dot)",
+   "\xC4\xB0", "i\xcc\x87"},
+  {"Case folding multibyte U+0143 U+037A",
+   "\xC5\x83\xCD\xBA", "\xC5\x84 \xCE\xB9"},
+  {"Case folding U+2121 U+33C6 U+1D7BB",
+   "\xE2\x84\xA1\xE3\x8F\x86\xF0\x9D\x9E\xBB",
+   "telc\xE2\x88\x95" "kg\xCF\x83"},
+  {"Normalization of U+006a U+030c U+00A0 U+00AA",
+   "\x6A\xCC\x8C\xC2\xA0\xC2\xAA", "\xC7\xB0 a"},
+  {"Case folding U+1FB7 and normalization",
+   "\xE1\xBE\xB7", "\xE1\xBE\xB6\xCE\xB9"},
+  {"Self-reverting case folding U+01F0 and normalization",
+   "\xC7\xB0", "\xC7\xB0"},
+  {"Self-reverting case folding U+0390 and normalization",
+   "\xCE\x90", "\xCE\x90"},
+  {"Self-reverting case folding U+03B0 and normalization",
+   "\xCE\xB0", "\xCE\xB0"},
+  {"Self-reverting case folding U+1E96 and normalization",
+   "\xE1\xBA\x96", "\xE1\xBA\x96"},
+  {"Self-reverting case folding U+1F56 and normalization",
+   "\xE1\xBD\x96", "\xE1\xBD\x96"},
+  {"ASCII space character U+0020", "\x20", "\x20"},
+  {"Non-ASCII 8bit space character U+00A0", "\xC2\xA0", "\x20"},
+  {"Non-ASCII multibyte space character U+1680",
+   "\xE1\x9A\x80", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"Non-ASCII multibyte space character U+2000", "\xE2\x80\x80", "\x20"},
+  {"Zero Width Space U+200b", "\xE2\x80\x8b", ""},
+  {"Non-ASCII multibyte space character U+3000", "\xE3\x80\x80", "\x20"},
+  {"ASCII control characters U+0010 U+007F", "\x10\x7F", "\x10\x7F"},
+  {"Non-ASCII 8bit control character U+0085",
+   "\xC2\x85", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"Non-ASCII multibyte control character U+180E",
+   "\xE1\xA0\x8E", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"Zero Width No-Break Space U+FEFF", "\xEF\xBB\xBF", ""},
+  {"Non-ASCII control character U+1D175",
+   "\xF0\x9D\x85\xB5", NULL, "Nameprep", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"Plane 0 private use character U+F123",
+   "\xEF\x84\xA3", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"Plane 15 private use character U+F1234",
+   "\xF3\xB1\x88\xB4", NULL, "Nameprep", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"Plane 16 private use character U+10F234",
+   "\xF4\x8F\x88\xB4", NULL, "Nameprep", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"Non-character code point U+8FFFE",
+   "\xF2\x8F\xBF\xBE", NULL, "Nameprep", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"Non-character code point U+10FFFF",
+   "\xF4\x8F\xBF\xBF", NULL, "Nameprep", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"Surrogate code U+DF42",
+   "\xED\xBD\x82", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"Non-plain text character U+FFFD",
+   "\xEF\xBF\xBD", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"Ideographic description character U+2FF5",
+   "\xE2\xBF\xB5", NULL, "Nameprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"Display property character U+0341", "\xCD\x81", "\xCC\x81"},
+  {"Left-to-right mark U+200E",
+   "\xE2\x80\x8E", "\xCC\x81", "Nameprep", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"Deprecated U+202A", "\xE2\x80\xAA", "\xCC\x81", "Nameprep", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"Language tagging character U+E0001",
+   "\xF3\xA0\x80\x81", "\xCC\x81", "Nameprep", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"Language tagging character U+E0042",
+   "\xF3\xA0\x81\x82", NULL, "Nameprep", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"Bidi: RandALCat character U+05BE and LCat characters",
+   "foo\xD6\xBE" "bar", NULL, "Nameprep", 0,
+   STRINGPREP_BIDI_BOTH_L_AND_RAL},
+  {"Bidi: RandALCat character U+FD50 and LCat characters",
+   "foo\xEF\xB5\x90" "bar", NULL, "Nameprep", 0,
+   STRINGPREP_BIDI_BOTH_L_AND_RAL},
+  {"Bidi: RandALCat character U+FB38 and LCat characters",
+   "foo\xEF\xB9\xB6" "bar", "foo \xd9\x8e" "bar"},
+  {"Bidi: RandALCat without trailing RandALCat U+0627 U+0031",
+   "\xD8\xA7\x31", NULL, "Nameprep", 0, STRINGPREP_BIDI_LEADTRAIL_NOT_RAL},
+  {"Bidi: RandALCat character U+0627 U+0031 U+0628",
+   "\xD8\xA7\x31\xD8\xA8", "\xD8\xA7\x31\xD8\xA8"},
+  {"Unassigned code point U+E0002",
+   "\xF3\xA0\x80\x82", NULL, "Nameprep", STRINGPREP_NO_UNASSIGNED,
+   STRINGPREP_CONTAINS_UNASSIGNED},
+  {"Larger test (shrinking)",
+   "X\xC2\xAD\xC3\x9F\xC4\xB0\xE2\x84\xA1\x6a\xcc\x8c\xc2\xa0\xc2"
+   "\xaa\xce\xb0\xe2\x80\x80", "xssi\xcc\x87" "tel\xc7\xb0 a\xce\xb0 ",
+   "Nameprep"},
+  {"Larger test (expanding)",
+   "X\xC3\x9F\xe3\x8c\x96\xC4\xB0\xE2\x84\xA1\xE2\x92\x9F\xE3\x8c\x80",
+   "xss\xe3\x82\xad\xe3\x83\xad\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88"
+   "\xe3\x83\xab" "i\xcc\x87" "tel\x28" "d\x29\xe3\x82\xa2\xe3\x83\x91"
+   "\xe3\x83\xbc\xe3\x83\x88"},
+  {"Test of prohibited ASCII character U+0020",
+   "\x20", NULL, "Nodeprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"Test of NFKC U+00A0 and prohibited character U+0020",
+   "\xC2\xA0", NULL, "Nodeprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"Case map + normalization", "\xC2\xB5", "\xCE\xBC", "Nameprep"},
+  /* The rest are rather non-interesting, but no point in removing
+     working test cases... */
+  {"case_nonfkc", "\xC2\xB5", "\xCE\xBC", "Nameprep", STRINGPREP_NO_NFKC,
+   STRINGPREP_FLAG_ERROR},
+  {"NFKC test", "\xC2\xAA", "\x61", "Nameprep"},
+  {"nameprep, exposed a bug in libstringprep 0.0.5",
+   "\xC2\xAA\x0A", "\x61\x0A"},
+  {"unassigned code point U+0221", "\xC8\xA1", "\xC8\xA1", "Nameprep"},
+  {"Unassigned code point U+0221",
+   "\xC8\xA1", NULL, "Nameprep", STRINGPREP_NO_UNASSIGNED,
+   STRINGPREP_CONTAINS_UNASSIGNED},
+  {"Unassigned code point U+0236", "\xC8\xB6", "\xC8\xB6", "Nameprep"},
+  {"unassigned code point U+0236",
+   "\xC8\xB6", NULL, "Nameprep", STRINGPREP_NO_UNASSIGNED,
+   STRINGPREP_CONTAINS_UNASSIGNED},
+  {"bidi both RandALCat and LCat  U+0627 U+00AA U+0628",
+   "\xD8\xA7\xC2\xAA\xD8\xA8", NULL, "Nameprep", 0,
+   STRINGPREP_BIDI_BOTH_L_AND_RAL},
+  /* XMPP */
+  {"XMPP node profile prohibited output",
+   "foo@bar", NULL, "Nodeprep", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"XMPP resource profile on same string should work though",
+   "foo@bar", "foo@bar", "Resourceprep"},
+  /* iSCSI */
+  {"iSCSI 1", "Example-Name", "example-name", "iSCSI"},
+  {"iSCSI 2", "O+o", NULL, "iSCSI", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"iSCSI 3", "\x01", NULL, "iSCSI", 0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"iSCSI 4", "\xE3\x80\x82", NULL, "iSCSI", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"iSCSI 5", "\xE2\xBF\xB5", NULL, "iSCSI", 0,
+   STRINGPREP_CONTAINS_PROHIBITED},
+  {"SASL profile", "Example\xC2\xA0" "Name", "Example Name", "SASLprep"},
+  /* SASL trace */
+  {"SASL ANONYMOUS plain mechanism", "simon@josefsson.org",
+   "simon@josefsson.org", "plain"},
+  {"SASLprep 1 old", "x\xC2\xADy", "xy", "SASLprep"},
+  {"SASLprep 4 old", "\xE2\x85\xA3", "IV", "SASLprep"},
+  /* SASLprep test vectors. */
+  {"SASLprep 1 SOFT HYPHEN mapped to nothing", "I\xC2\xADX", "IX",
+   "SASLprep"},
+  {"SASLprep 2 no transformation", "user", "user", "SASLprep"},
+  {"SASLprep 3 case preserved, will not match #2", "USER", "USER",
+   "SASLprep"},
+  {"SASLprep 4 output is NFKC, input in ISO 8859-1", "\xC2\xAA", "a",
+   "SASLprep"},
+  {"SASLprep 5 output is NFKC, will match #1", "\xE2\x85\xA8", "IX",
+   "SASLprep"},
+  {"SASLprep 6 Error - prohibited character", "\x07", NULL, "SASLprep",
+   0, STRINGPREP_CONTAINS_PROHIBITED},
+  {"SASLprep 7 Error - bidirectional check", "\xD8\xA7" "1", NULL, "SASLprep",
+   0, STRINGPREP_BIDI_LEADTRAIL_NOT_RAL}
+};
+
+void
+doit (void)
+{
+  char *p;
+  int rc;
+  size_t i;
+
+  if (!stringprep_check_version (STRINGPREP_VERSION))
+    fail ("stringprep_check_version(%s) failed\n", STRINGPREP_VERSION);
+
+  if (!stringprep_check_version (NULL))
+    fail ("stringprep_check_version(NULL) failed\n");
+
+  if (stringprep_check_version ("100.100"))
+    fail ("stringprep_check_version(\"100.100\") failed\n");
+
+  for (i = 0; i < sizeof (strprep) / sizeof (strprep[0]); i++)
+    {
+      if (debug)
+       printf ("STRINGPREP entry %d\n", i);
+
+      if (debug)
+       {
+         printf ("flags: %d\n", strprep[i].flags);
+
+         printf ("in: ");
+         escapeprint (strprep[i].in, strlen (strprep[i].in));
+         hexprint (strprep[i].in, strlen (strprep[i].in));
+         binprint (strprep[i].in, strlen (strprep[i].in));
+       }
+
+      {
+       uint32_t *l;
+       char *x;
+       l = stringprep_utf8_to_ucs4 (strprep[i].in, -1, NULL);
+       x = stringprep_ucs4_to_utf8 (l, -1, NULL, NULL);
+       free (l);
+
+       if (strcmp (strprep[i].in, x) != 0)
+         {
+           fail ("bad UTF-8 in entry %d\n", i);
+           if (debug)
+             {
+               puts ("expected:");
+               escapeprint (strprep[i].in, strlen (strprep[i].in));
+               hexprint (strprep[i].in, strlen (strprep[i].in));
+               puts ("computed:");
+               escapeprint (x, strlen (x));
+               hexprint (x, strlen (x));
+             }
+         }
+
+       free (x);
+      }
+      rc = stringprep_profile (strprep[i].in, &p,
+                              strprep[i].profile ?
+                              strprep[i].profile :
+                              "Nameprep", strprep[i].flags);
+      if (rc != strprep[i].rc)
+       {
+         fail ("stringprep() entry %d failed: %d\n", i, rc);
+         if (debug)
+           printf ("FATAL\n");
+         if (rc == STRINGPREP_OK)
+           free (p);
+         continue;
+       }
+
+      if (debug && rc == STRINGPREP_OK)
+       {
+         printf ("out: ");
+         escapeprint (p, strlen (p));
+         hexprint (p, strlen (p));
+         binprint (p, strlen (p));
+
+         printf ("expected out: ");
+         escapeprint (strprep[i].out, strlen (strprep[i].out));
+         hexprint (strprep[i].out, strlen (strprep[i].out));
+         binprint (strprep[i].out, strlen (strprep[i].out));
+       }
+      else if (debug)
+       printf ("returned %d expected %d\n", rc, strprep[i].rc);
+
+      if (rc == STRINGPREP_OK)
+       {
+         if (strlen (strprep[i].out) != strlen (p) ||
+             memcmp (strprep[i].out, p, strlen (p)) != 0)
+           {
+             fail ("stringprep() entry %d failed\n", i);
+             if (debug)
+               printf ("ERROR\n");
+           }
+         else if (debug)
+           printf ("OK\n\n");
+
+         free (p);
+       }
+      else if (debug)
+       printf ("OK\n\n");
+    }
+
+#if 0
+  {
+    char p[20];
+    memset (p, 0, 10);
+    stringprep_unichar_to_utf8 (0x00DF, p);
+    hexprint (p, strlen (p));
+    puts ("");
+  }
+#endif
+}
diff --git a/tests/tst_tld.c b/tests/tst_tld.c
new file mode 100644 (file)
index 0000000..544e746
--- /dev/null
@@ -0,0 +1,151 @@
+/* tst_tld.c --- Self tests for tld_*().
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include <stringprep.h>
+#include <tld.h>
+
+#include "utils.h"
+
+struct tld
+{
+  const char *name;
+  const char *tld;
+  const char *example;
+  size_t inlen;
+  uint32_t in[100];
+  int rc;
+  size_t errpos;
+};
+
+static const struct tld tld[] = {
+  {
+   "Simple valid French domain",
+   "fr",
+   "example.fr",
+   3,
+   {0x00E0, 0x00E2, 0x00E6},
+   TLD_SUCCESS},
+  {
+   "Simple invalid French domain",
+   "fr",
+   "ªexample.fr",
+   5,
+   {0x00E0, 0x00E2, 0x00E6, 0x4711, 0x0042},
+   TLD_INVALID,
+   3}
+};
+
+void
+doit (void)
+{
+  size_t i;
+  const Tld_table *tldtable;
+  size_t errpos;
+  int rc;
+
+  tldtable = tld_get_table (NULL, NULL);
+  if (tldtable != NULL)
+    fail ("FAIL: tld_get_table (NULL, NULL) != NULL\n");
+
+  tldtable = tld_get_table ("nonexisting", NULL);
+  if (tldtable != NULL)
+    fail ("FAIL: tld_get_table (\"nonexisting\", NULL) != NULL\n");
+
+  tldtable = tld_default_table (NULL, NULL);
+  if (tldtable != NULL)
+    fail ("FAIL: tld_default_table (NULL, NULL) != NULL\n");
+
+  for (i = 0; i < sizeof (tld) / sizeof (tld[0]); i++)
+    {
+      if (debug)
+       printf ("TLD entry %d: %s\n", i, tld[i].name);
+
+      if (debug)
+       {
+         printf ("in:\n");
+         ucs4print (tld[i].in, tld[i].inlen);
+       }
+
+      tldtable = tld_default_table (tld[i].tld, NULL);
+      if (tldtable == NULL)
+       {
+         fail ("TLD entry %d tld_get_table (%s)\n", i, tld[i].tld);
+         if (debug)
+           printf ("FATAL\n");
+         continue;
+       }
+
+      rc = tld_check_4t (tld[i].in, tld[i].inlen, &errpos, tldtable);
+      if (rc != tld[i].rc)
+       {
+         fail ("TLD entry %d failed: %d\n", i, rc);
+         if (debug)
+           printf ("FATAL\n");
+         continue;
+       }
+
+      if (debug)
+       printf ("returned %d expected %d\n", rc, tld[i].rc);
+
+      if (rc != tld[i].rc)
+       {
+         fail ("TLD entry %d failed\n", i);
+         if (debug)
+           printf ("ERROR\n");
+       }
+      else if (rc == TLD_INVALID)
+       {
+         if (debug)
+           printf ("returned errpos %d expected errpos %d\n",
+                   errpos, tld[i].errpos);
+
+         if (tld[i].errpos != errpos)
+           {
+             fail ("TLD entry %d failed because errpos %d != %d\n", i,
+                   tld[i].errpos, errpos);
+             if (debug)
+               printf ("ERROR\n");
+           }
+       }
+      else if (debug)
+       printf ("OK\n");
+
+      {
+       rc = tld_check_8z (tld[i].example, &errpos, NULL);
+       if (rc != tld[i].rc)
+         {
+           fail ("TLD entry %d failed\n", i);
+           if (debug)
+             printf ("ERROR\n");
+         }
+       if (debug)
+         printf ("TLD entry %d tld_check_8z (%s)\n", i, tld[i].example);
+      }
+    }
+}
diff --git a/tests/tst_toutf8.c b/tests/tst_toutf8.c
new file mode 100644 (file)
index 0000000..5092a2a
--- /dev/null
@@ -0,0 +1,59 @@
+/* tst_toutf8.c --- Self tests for UTF-8 conversion functions.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include <stringprep.h>
+
+#include "utils.h"
+
+void
+doit (void)
+{
+  char *p;
+  const char *q;
+
+  q = stringprep_locale_charset ();
+  if (q == NULL)
+    fail ("FAIL: stringprep_locale_charset == NULL\n");
+  if (debug)
+    printf ("PASS: stringprep_locale_charset == %s\n", q);
+
+  p = stringprep_locale_to_utf8 ("foo");
+  if (!p || memcmp (p, "foo", 4) != 0)
+    fail ("FAIL: stringprep_locale_to_utf8(\"foo\") == %s\n", p);
+  if (debug)
+    printf ("PASS: stringprep_locale_to_utf8(\"foo\") == %s\n", p);
+  free (p);
+
+  p = stringprep_utf8_to_locale ("foo");
+  if (!p || memcmp (p, "foo", 4) != 0)
+    fail ("FAIL: stringprep_utf8_to_locale(\"foo\") == %s\n", p);
+  if (debug)
+    printf ("PASS: stringprep_utf8_to_locale(\"foo\") == %s\n", p);
+  free (p);
+}
diff --git a/tests/utils.c b/tests/utils.c
new file mode 100644 (file)
index 0000000..78a009b
--- /dev/null
@@ -0,0 +1,152 @@
+/* utils.c --- Self test utilities.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "utils.h"
+
+int debug = 0;
+int error_count = 0;
+int break_on_error = 0;
+
+void
+fail (const char *format, ...)
+{
+  va_list arg_ptr;
+
+  va_start (arg_ptr, format);
+  vfprintf (stderr, format, arg_ptr);
+  va_end (arg_ptr);
+  error_count++;
+  if (break_on_error)
+    exit (1);
+}
+
+void
+escapeprint (const char *str, size_t len)
+{
+  size_t i;
+
+  printf (" (length %d bytes):\n\t", len);
+  for (i = 0; i < len; i++)
+    {
+      if (((str[i] & 0xFF) >= 'A' && (str[i] & 0xFF) <= 'Z') ||
+         ((str[i] & 0xFF) >= 'a' && (str[i] & 0xFF) <= 'z') ||
+         ((str[i] & 0xFF) >= '0' && (str[i] & 0xFF) <= '9')
+         || (str[i] & 0xFF) == ' ' || (str[i] & 0xFF) == '.')
+       printf ("%c", (str[i] & 0xFF));
+      else
+       printf ("\\x%02X", (str[i] & 0xFF));
+      if ((i + 1) % 16 == 0 && (i + 1) < len)
+       printf ("'\n\t'");
+    }
+  printf ("\n");
+}
+
+void
+hexprint (const char *str, size_t len)
+{
+  size_t i;
+
+  printf ("\t;; ");
+  for (i = 0; i < len; i++)
+    {
+      printf ("%02x ", (str[i] & 0xFF));
+      if ((i + 1) % 8 == 0)
+       printf (" ");
+      if ((i + 1) % 16 == 0 && i + 1 < len)
+       printf ("\n\t;; ");
+    }
+  printf ("\n");
+}
+
+void
+binprint (const char *str, size_t len)
+{
+  size_t i;
+
+  printf ("\t;; ");
+  for (i = 0; i < len; i++)
+    {
+      printf ("%d%d%d%d%d%d%d%d ",
+             (str[i] & 0xFF) & 0x80 ? 1 : 0,
+             (str[i] & 0xFF) & 0x40 ? 1 : 0,
+             (str[i] & 0xFF) & 0x20 ? 1 : 0,
+             (str[i] & 0xFF) & 0x10 ? 1 : 0,
+             (str[i] & 0xFF) & 0x08 ? 1 : 0,
+             (str[i] & 0xFF) & 0x04 ? 1 : 0,
+             (str[i] & 0xFF) & 0x02 ? 1 : 0, (str[i] & 0xFF) & 0x01 ? 1 : 0);
+      if ((i + 1) % 3 == 0)
+       printf (" ");
+      if ((i + 1) % 6 == 0 && i + 1 < len)
+       printf ("\n\t;; ");
+    }
+  printf ("\n");
+}
+
+void
+ucs4print (const uint32_t * str, size_t len)
+{
+  size_t i;
+
+  printf ("\t;; ");
+  for (i = 0; i < len; i++)
+    {
+      printf ("U+%04x ", str[i]);
+      if ((i + 1) % 4 == 0)
+       printf (" ");
+      if ((i + 1) % 8 == 0 && i + 1 < len)
+       printf ("\n\t;; ");
+    }
+  puts ("");
+}
+
+int
+main (int argc, char *argv[])
+{
+  do
+    if (strcmp (argv[argc - 1], "-v") == 0 ||
+       strcmp (argv[argc - 1], "--verbose") == 0)
+      debug = 1;
+    else if (strcmp (argv[argc - 1], "-b") == 0 ||
+            strcmp (argv[argc - 1], "--break-on-error") == 0)
+      break_on_error = 1;
+    else if (strcmp (argv[argc - 1], "-h") == 0 ||
+            strcmp (argv[argc - 1], "-?") == 0 ||
+            strcmp (argv[argc - 1], "--help") == 0)
+      {
+       printf ("Usage: %s [-vbh?] [--verbose] [--break-on-error] [--help]\n",
+               argv[0]);
+       return 1;
+      }
+  while (argc-- > 1);
+
+  doit ();
+
+  if (debug)
+    printf ("Self tests done with %d errors\n", error_count);
+
+  return error_count ? 1 : 0;
+}
diff --git a/tests/utils.h b/tests/utils.h
new file mode 100644 (file)
index 0000000..0910677
--- /dev/null
@@ -0,0 +1,48 @@
+/* utils.h --- Prototypes for self test utilities.
+ * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson
+ *
+ * This file is part of GNU Libidn.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef UTILS_H
+# define UTILS_H
+
+# include <string.h>
+# include <stdarg.h>
+# include <stringprep.h>
+
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+#  define __attribute__(Spec)  /* empty */
+# endif
+#endif
+
+extern int debug;
+extern int error_count;
+extern int break_on_error;
+
+extern void fail (const char *format, ...)
+  __attribute__ ((format (printf, 1, 2)));
+extern void escapeprint (const char *str, size_t len);
+extern void hexprint (const char *str, size_t len);
+extern void binprint (const char *str, size_t len);
+extern void ucs4print (const uint32_t * str, size_t len);
+
+/* This must be implemented elsewhere. */
+extern void doit (void);
+
+#endif /* UTILS_H */
diff --git a/win32/include/ac-stdint.h b/win32/include/ac-stdint.h
new file mode 100644 (file)
index 0000000..6a57ff9
--- /dev/null
@@ -0,0 +1,40 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   Written by Adam Strzelecki <ono@java.pl>
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License
+   as published by the Free Software Foundation; either version 2.1,
+   or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+#ifndef _AC_STDINT_H
+#define _AC_STDINT_H 1
+#ifndef _GENERATED_STDINT_H
+#define _GENERATED_STDINT_H
+
+#define uint8_t                unsigned char
+#define uint16_t       unsigned short
+#define uint32_t       unsigned int
+#define int8_t         signed char
+#define int16_t                signed short
+#define int32_t                signed int
+
+#define gint16         int16_t
+
+#ifdef  _WIN64
+typedef __int64                ssize_t;
+#else
+typedef _W64 int       ssize_t;
+#endif
+
+#endif
+#endif
diff --git a/win32/include/config.h b/win32/include/config.h
new file mode 100644 (file)
index 0000000..f341833
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef _CONFIG_H
+#define _CONFIG_H
+
+#define PACKAGE "libidn"
+
+#define strcasecmp stricmp
+#define strncasecmp strnicmp
+
+extern int strverscmp (const char *, const char *);
+
+#define LOCALEDIR "."
+
+#if _MSC_VER && !__cplusplus
+# define inline __inline
+#endif
+
+#endif /* _CONFIG_H */
diff --git a/win32/include/idn-int.h b/win32/include/idn-int.h
new file mode 100644 (file)
index 0000000..3339e2d
--- /dev/null
@@ -0,0 +1,19 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   Written by Adam Strzelecki <ono@java.pl>
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License
+   as published by the Free Software Foundation; either version 2.1,
+   or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+#include "ac-stdint.h"
diff --git a/win32/include/stdbool.h b/win32/include/stdbool.h
new file mode 100644 (file)
index 0000000..a4302b9
--- /dev/null
@@ -0,0 +1,29 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   Written by Adam Strzelecki <ono@java.pl>
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public License
+   as published by the Free Software Foundation; either version 2.1,
+   or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.  */
+
+#ifndef _STDBOOL_H
+#define _STDBOOL_H
+
+#define _Bool signed char
+enum { false = 0, true = 1 };
+#define bool _Bool
+#define false 0
+#define true 1
+#define __bool_true_false_are_defined 1
+
+#endif /* _STDBOOL_H */
diff --git a/win32/include/unistd.h b/win32/include/unistd.h
new file mode 100644 (file)
index 0000000..0d2bb16
--- /dev/null
@@ -0,0 +1 @@
+/* Dummy file to satisfy source file dependencies on Windows platform */
diff --git a/win32/libidn.sln b/win32/libidn.sln
new file mode 100644 (file)
index 0000000..936dc1c
--- /dev/null
@@ -0,0 +1,20 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 9.00\r
+# Visual Studio 2005\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libidn", "libidn.vcproj", "{0B883079-812A-405E-AC8F-59F47CE9A3FF}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Win32 = Debug|Win32\r
+               Release|Win32 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {0B883079-812A-405E-AC8F-59F47CE9A3FF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {0B883079-812A-405E-AC8F-59F47CE9A3FF}.Debug|Win32.Build.0 = Debug|Win32\r
+               {0B883079-812A-405E-AC8F-59F47CE9A3FF}.Release|Win32.ActiveCfg = Release|Win32\r
+               {0B883079-812A-405E-AC8F-59F47CE9A3FF}.Release|Win32.Build.0 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/win32/libidn.vcproj b/win32/libidn.vcproj
new file mode 100644 (file)
index 0000000..b1e00bf
--- /dev/null
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="windows-1250"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="8,00"\r
+       Name="libidn"\r
+       ProjectGUID="{0B883079-812A-405E-AC8F-59F47CE9A3FF}"\r
+       RootNamespace="libidn"\r
+       Keyword="Win32Proj"\r
+       >\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"\r
+               />\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="Debug|Win32"\r
+                       OutputDirectory="$(SolutionDir)$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="2"\r
+                       CharacterSet="2"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                               Description="Generating tables &amp; includes..."\r
+                               CommandLine=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="include;../lib;../lib/gl"\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_USRDLL;IDNA_EXPORTS;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"\r
+                               MinimalRebuild="true"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="3"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="true"\r
+                               DebugInformationFormat="4"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               OutputFile="lib/debug/$(ProjectName).dll"\r
+                               GenerateDebugInformation="true"\r
+                               ImportLibrary="lib/debug/$(TargetName).lib"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="Release|Win32"\r
+                       OutputDirectory="$(SolutionDir)$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="2"\r
+                       CharacterSet="2"\r
+                       WholeProgramOptimization="1"\r
+                       >\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"\r
+                               Description="Generating tables &amp; includes..."\r
+                               CommandLine=""\r
+                       />\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCMIDLTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalIncludeDirectories="include;../lib;../lib/gl"\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_USRDLL;IDNA_EXPORTS;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"\r
+                               RuntimeLibrary="2"\r
+                               UsePrecompiledHeader="0"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="true"\r
+                               DebugInformationFormat="3"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManagedResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               OutputFile="lib/$(ProjectName).dll"\r
+                               ImportLibrary="lib/$(TargetName).lib"\r
+                       />\r
+                       <Tool\r
+                               Name="VCALinkTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCManifestTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCXDCMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCBscMakeTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCFxCopTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCAppVerifierTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"\r
+                       />\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"\r
+                       />\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="Source Files"\r
+                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+                       >\r
+                       <File\r
+                               RelativePath="..\lib\gl\c-ctype.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\gl\c-strcasecmp.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\gl\c-strncasecmp.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\idn-free.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\idna.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\nfkc.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\pr29.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\profiles.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\punycode.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\rfc3454.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\strerror-idna.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\strerror-pr29.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\strerror-punycode.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\strerror-stringprep.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\strerror-tld.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\gl\striconv.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\stringprep.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\gl\strverscmp.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\tld.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\tlds.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\toutf8.c"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\version.c"\r
+                               >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Header Files"\r
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+                       >\r
+                       <File\r
+                               RelativePath=".\include\ac-stdint.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\include\config.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\include\idn-int.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\include\stdbool.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\lib\stringprep.h"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath=".\include\unistd.h"\r
+                               >\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="Resource Files"\r
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"\r
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+                       >\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r